diff options
274 files changed, 29902 insertions, 19947 deletions
diff --git a/contrib/bind9/CHANGES b/contrib/bind9/CHANGES index bd064e5..e8383c6 100644 --- a/contrib/bind9/CHANGES +++ b/contrib/bind9/CHANGES @@ -1,20 +1,392 @@ - --- 9.8.4-P2 released --- + --- 9.8.5-P2 released --- -3516. [security] Removed the check for regex.h in configure in order - to disable regex syntax checking, as it exposes - BIND to a critical flaw in libregex on some - platforms. [RT #32688] +3621. [security] Incorrect bounds checking on private type 'keydata' + can lead to a remotely triggerable REQUIRE failure + (CVE-2013-4854). [RT #34238] - --- 9.8.4-P1 released --- + --- 9.8.5-P1 released --- -3407. [security] Named could die on specific queries with dns64 enabled. - [Addressed in change #3388 for BIND 9.8.5 and 9.9.3.] +3584. [security] Caching data from an incompletely signed zone could + trigger an assertion failure in resolver.c [RT #33690] - --- 9.8.4 released --- + --- 9.8.5 released --- + +3568. [cleanup] Add a product description line to the version file, + to be reported by named -v/-V. [RT #33366] + +3567. [bug] Silence clang static analyzer warnings. [RT #33365] + +3563. [contrib] zone2sqlite failed with some table names. [RT #33375] + +3561. [bug] dig: issue a warning if an EDNS query returns FORMERR + or NOTIMP. Adjust usage message. [RT #33363] + + --- 9.8.5rc1 released --- + +3560. [bug] isc-config.sh did not honor includedir and libdir + when set via configure. [RT #33345] + +3559. [func] Check that both forms of Sender Policy Framework + records exist or do not exist. [RT #33355] + +3558. [bug] IXFR of a DLZ stored zone was broken. [RT #33331] + +3556. [maint] Added AAAA for D.ROOT-SERVERS.NET. + +3555. [bug] Address theoretical race conditions in acache.c + (change #3553 was incomplete). [RT #33252] + +3553. [bug] Address suspected double free in acache. [RT #33252] + +3552. [bug] Wrong getopt option string for 'nsupdate -r'. + [RT #33280] + +3549. [doc] Documentation for "request-nsid" was missing. + [RT #33153] + +3548. [bug] The NSID request code in resolver.c was broken + resulting in invalid EDNS options being sent. + [RT #33153] + +3547. [bug] Some malformed unknown rdata records were not properly + detected and rejected. [RT #33129] + +3056. [func] Added support for URI resource record. [RT #23386] + + --- 9.8.5rc1 released --- + +3546. [func] Add EUI48 and EUI64 types. [RT #33082] + +3544. [contrib] check5011.pl: Script to report the status of + managed keys as recorded in managed-keys.bind. + Contributed by Tony Finch <dot@dotat.at> + +3543. [bug] Update socket structure before attaching to socket + manager after accept. [RT #33084] + +3542. [bug] masterformat system test was broken. [RT #33086] + +3541. [bug] Parts of libdns were not properly initialized when + built in libexport mode. [RT #33028] + +3540. [test] libt_api: t_info and t_assert were not thread safe. + +3539. [port] win32: timestamp format didn't match other platforms. + +3538. [test] Running "make test" now requires loopback interfaces + to be set up. [RT #32452] + +3537. [tuning] Slave zones, when updated, now send NOTIFY messages + to peers before being dumped to disk rather than + after. [RT #27242] + +3535. [bug] Minor win32 cleanups. [RT #32962] + +3534. [bug] Extra text after an embedded NULL was ignored when + parsing zone files. [RT #32699] + +3533. [contrib] query-loc-0.4.0: memory leaks. [RT #32960] + +3532. [contrib] zkt: fixed buffer overrun, resource leaks. [RT #32960] + +3531. [bug] win32: A uninitialized value could be returned on out + of memory. [RT #32960] + +3530. [contrib] Better RTT tracking in queryperf. [RT #30128] + +3526. [cleanup] Set up dependencies for unit tests correctly during + build. [RT #32803] + +3521. [bug] Address memory leak in opensslecdsa_link.c. [RT #32249] + +3520. [bug] 'mctx' was not being referenced counted in some places + where it should have been. [RT #32794] + + --- 9.8.5b2 released --- + +3517. [bug] Reorder destruction to avoid shutdown race. [RT #32777] + +3515. [port] '%T' is not portable in strftime(). [RT #32763] + +3514. [bug] The ranges for valid key sizes in ddns-confgen and + rndc-confgen were too constrained. Keys up to 512 + bits are now allowed for most algorithms, and up + to 1024 bits for hmac-sha384 and hmac-sha512. + [RT #32753] + +3509. [cleanup] Added a product line to version file to allow for + easy naming of different products (BIND + vs BIND ESV, for example). [RT #32755] + +3508. [contrib] queryperf was incorrectly rejecting the -T option. + [RT #32338] + +3503. [doc] Clarify size_spec syntax. [RT #32449] + +3500. [security] Support NAPTR regular expression validation on + all platforms without using libregex, which + can be vulnerable to memory exhaustion attack + (CVE-2013-2266). [RT #32688] + +3499. [doc] Corrected ARM documentation of built-in zones. + [RT #32694] + +3498. [bug] zone statistics for zones which matched a potential + empty zone could have their zone-statistics setting + overridden. + +3496. [func] Improvements to RPZ performance. The "response-policy" + syntax now includes a "min-ns-dots" clause, with + default 1, to exclude top-level domains from + NSIP and NSDNAME checking. --enable-rpz-nsip and + --enable-rpz-nsdname are now the default. [RT #32251] + +3489. [bug] --enable-developer now turns on ISC_LIST_CHECKINIT. + When cloning a rdataset do not copy the link contents. + [RT #32651] + +3488. [bug] Use after free error with DH generated keys. [RT #32649] + +3487. [bug] Change 3444 was not complete. There was a additional + place where the NOQNAME proof needed to be saved. + [RT #32629] + +3486. [bug] named could crash when using TKEY-negotiated keys + that had been deleted and then recreated. [RT #32506] + +3485. [cleanup] Only compile openssl_gostlink.c if we support GOST. + +3481. [cleanup] Removed use of const const in atf. + +3479. [bug] Address potential memory leaks in gssapi support + code. [RT #32405] + +3478. [port] Fix a build failure in strict C99 environments + [RT #32475] + +3474. [bug] nsupdate could assert when the local and remote + address families didn't match. [RT #22897] + +3470. [bug] Slave zones could fail to dump when successfully + refreshing after an initial failure. [RT #31276] + + --- 9.8.5b1 released --- + +3468. [security] RPZ rules to generate A records (but not AAAA records) + could trigger an assertion failure when used in + conjunction with DNS64 (CVE-2012-5689). [RT #32141] + +3467. [bug] Added checks in dnssec-keygen and dnssec-settime + to check for delete date < inactive date. [RT #31719] + +3465. [bug] Handle isolated reserved ports. [RT #31778] + +3464. [maint] Updates to PKCS#11 openssl patches, supporting + versions 0.9.8x, 1.0.0j, 1.0.1c [RT #29749] + +3463. [doc] Clarify managed-keys syntax in ARM. [RT #32232] + +3462. [doc] Clarify server selection behavior of dig when using + -4 or -6 options. [RT #32181] + +3461. [bug] Negative responses could incorrectly have AD=1 + set. [RT #32237] + +3458. [bug] Return FORMERR when presented with a overly long + domain named in a request. [RT #29682] + +3457. [protocol] Add ILNP records (NID, LP, L32, L64). [RT #31836] + +3456. [port] g++47: ATF failed to compile. [RT #32012] + +3455. [contrib] queryperf: fix getopt option list. [RT #32338] + +3454. [port] sparc64: improve atomic support. [RT #25182] + +3452. [bug] Accept duplicate singleton records. [RT #32329] + +3451. [port] Increase per thread stack size from 64K to 1M. + [RT #32230] + +3450. [bug] Stop logfileconfig system test spam system logs. + [RT #32315] + +3449. [bug] gen.c: use the pre-processor to construct format + strings so that compiler can perform sanity checks; + check the snprintf results. [RT #17576] + +3448. [bug] The allow-query-on ACL was not processed correctly. + [RT #29486] + +3447. [port] Add support for libxml2-2.9.x [RT #32231] + +3446. [port] win32: Add source ID (see change #3400) to build. + [RT #31683] + +3445. [bug] Warn about zone files with blank owner names + immediately after $ORIGIN directives. [RT #31848] + +3444. [bug] The NOQNAME proof was not being returned from cached + insecure responses. [RT #21409] + +3443. [bug] ddns-confgen: Some TSIG algorithms were incorrectly + rejected when generating keys. [RT #31927] + +3442. [port] Net::DNS 0.69 introduced a non backwards compatible + change. [RT #32216] + +3441. [maint] D.ROOT-SERVERS.NET is now 199.7.91.13. + +3440. [bug] Reorder get_key_struct to not trigger a assertion when + cleaning up due to out of memory error. [RT #32131] + +3439. [bug] contrib/dlz error checking fixes. [RT #32102] + +3438. [bug] Don't accept unknown data escape in quotes. [RT #32031] + +3437. [bug] isc_buffer_init -> isc_buffer_constinit to initialize + buffers with constant data. [RT #32064] + +3436. [bug] Check malloc/calloc return values. [RT #32088] + +3435. [bug] Cross compilation support in configure was broken. + [RT #32078] + +3431. [bug] ddns-confgen: Some valid key algorithms were + not accepted. [RT #31927] + +3430. [bug] win32: isc_time_formatISO8601 was missing the + 'T' between the date and time. [RT #32044] + +3429. [bug] dns_zone_getserial2 could a return success without + returning a valid serial. [RT #32007] + +3428. [cleanup] dig: Add timezone to date output. [RT #2269] + +3427. [bug] dig +trace incorrectly displayed name server + addresses instead of names. [RT #31641] + +3425. [bug] "acacheentry" reference counting was broken resulting + in use after free. [RT #31908] + +3422. [bug] Added a clear error message for when the SOA does not + match the referral. [RT #31281] + +3421. [bug] Named loops when re-signing if all keys are offline. + [RT #31916] + +3420. [bug] Address VPATH compilation issues. [RT #31879] + +3419. [bug] Memory leak on validation cancel. [RT #31869] + +3415. [bug] named could die with a REQUIRE failure if a validation + was canceled. [RT #31804] + +3412. [bug] Copy timeval structure from control message data. + [RT #31548] + +3411. [tuning] Use IPV6_USE_MIN_MTU or equivalent with TCP in addition + to UDP. [RT #31690] + +3410. [bug] Addressed Coverity warnings. [RT #31626] + +3409. [contrib] contrib/dane/mkdane.sh: Tool to generate TLSA RR's + from X.509 certificates, for use with DANE + (DNS-based Authentication of Named Entities). + [RT #30513] + +3406. [bug] mem.c: Fix compilation errors when building with + ISC_MEM_TRACKLINES or ISC_MEMPOOL_NAMES disabled. + Also, ISC_MEM_DEBUG is no longer optional. [RT #31559] + +3405. [bug] Handle time going backwards in acache. [RT #31253] + +3404. [bug] dnssec-signzone: When re-signing a zone, remove + RRSIG and NSEC records from nodes that used to be + in-zone but are now below a zone cut. [RT #31556] + +3403. [bug] Silence noisy OpenSSL logging. [RT #31497] + +3402. [test] The IPv6 interface numbers used for system + tests were incorrect on some platforms. [RT #25085] + +3401. [bug] Addressed Coverity warnings. [RT #31484] + +3400. [cleanup] "named -V" can now report a source ID string, defined + in the "srcid" file in the build tree and normally set + to the most recent git hash. [RT #31494] + +3397. [bug] dig crashed when using +nssearch with +tcp. [RT #25298] + +3396. [bug] OPT records were incorrectly removed from signed, + truncated responses. [RT #31439] + +3395. [protocol] Add RFC 6598 reverse zones to built in empty zones + list, 64.100.IN-ADDR.ARPA ... 127.100.IN-ADDR.ARPA. + [RT #31336] + +3394. [bug] Adjust 'successfully validated after lower casing + signer' log level and category. [RT #31414] + +3393. [bug] 'host -C' could core dump if REFUSED was received. + [RT #31381] + +3391. [bug] A DNSKEY lookup that encountered a CNAME failed. + [RT #31262] + +3390. [bug] Silence clang compiler warnings. [RT #30417] + +3389. [bug] Always return NOERROR (not 0) in TSIG. [RT #31275] + +3388. [bug] Fixed several Coverity warnings. + Note: This change includes a fix for a bug that + was subsequently determined to be an exploitable + security vulnerability, CVE-2012-5688: named could + die on specific queries with dns64 enabled. + [RT #30996] + +3386. [bug] Address locking violation when generating new NSEC / + NSEC3 chains. [RT #31224] + +3384. [bug] Improved logging of crypto errors. [RT #30963] 3383. [security] A certain combination of records in the RBT could - cause named to hang while populating the additional - section of a response. [RT #31090] + cause named to hang while populating the additional + section of a response. [RT #31090] + +3382. [bug] SOA query from slave used use-v6-udp-ports range, + if set, regardless of the address family in use. + [RT #24173] + +3381. [contrib] Update queryperf to support more RR types. + [RT #30762] + +3380. [bug] named could die if a nonexistent master list was + referenced in a also-notify. [RT #31004] + +3379. [bug] isc_interval_zero and isc_time_epoch should be + "const (type)* const". [RT #31069] + +3378. [bug] Handle missing 'managed-keys-directory' better. + [RT #30625] + +3376. [bug] Lack of EDNS support was being recorded without a + successful response. [RT #30811] + +3375. [func] Check that 'rndc dumpdb' works on a empty cache. + [RT #30808] + +3374. [bug] isc_parse_uint32 failed to return a range error on + systems with 64 bit longs. [RT #30232] + +3372. [bug] Silence spurious "deleted from unreachable cache" + messages. [RT #30501] + +3371. [bug] AD=1 should behave like DO=1 when deciding whether to + add NS RRsets to the additional section or not. + [RT #30479] + + --- 9.8.4 released --- 3373. [bug] win32: open raw files in binary mode. [RT #30944] @@ -135,11 +507,11 @@ --- 9.8.3 released --- 3318. [tuning] Reduce the amount of work performed while holding a - bucket lock when finshed with a fetch context. + bucket lock when finished with a fetch context. [RT #29239] -3314. [bug] The masters list could be updated while refesh_callback - and stub_callback were using it. [RT #26732] +3314. [bug] The masters list could be updated while stub_callback + or refresh_callback were using it. [RT #26732] 3313. [protocol] Add TLSA record type. [RT #28989] @@ -151,7 +523,7 @@ 3310. [test] Increase table size for mutex profiling. [RT #28809] -3309. [bug] resolver.c:fctx_finddone() was not threadsafe. +3309. [bug] resolver.c:fctx_finddone() was not thread safe. [RT #27995] 3307. [bug] Add missing ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS. @@ -328,7 +700,7 @@ 3234. [bug] 'make depend' produced invalid makefiles. [RT #26830] -3231. [bug] named could fail to send a uncompressable zone. +3231. [bug] named could fail to send a incompressible zone. [RT #26796] 3230. [bug] 'dig axfr' failed to properly handle a multi-message @@ -345,7 +717,7 @@ 3226. [bug] Address minor resource leakages. [RT #26624] -3221. [bug] Fixed a potential coredump on shutdown due to +3221. [bug] Fixed a potential core dump on shutdown due to referencing fetch context after it's been freed. [RT #26720] @@ -369,7 +741,7 @@ 3209. [func] Add "dnssec-lookaside 'no'". [RT #24858] -3208. [bug] 'dig -y' handle unknown tsig alorithm better. +3208. [bug] 'dig -y' handle unknown tsig algorithm better. [RT #25522] 3207. [contrib] Fixed build error in Berkeley DB DLZ module. [RT #26444] @@ -672,7 +1044,7 @@ 3077. [bug] zone.c:zone_refreshkeys() incorrectly called dns_zone_attach(), use zone->irefs instead. [RT #23303] -3075. [bug] dns_dnssec_findzonekeys{2} used a inconsistant +3075. [bug] dns_dnssec_findzonekeys{2} used a inconsistent timestamp when determining which keys are active. [RT #23642] @@ -686,7 +1058,7 @@ 3072. [bug] dns_dns64_aaaaok() potential NULL pointer dereference. [RT #20256] -3071. [bug] has_nsec could be used unintialised in +3071. [bug] has_nsec could be used uninitialized in update.c:next_active. [RT #20256] 3070. [bug] dnssec-signzone potential NULL pointer dereference. @@ -732,7 +1104,7 @@ 3052. [test] Fixed last autosign test report. [RT #23256] -3051. [bug] NS records obsure DNAME records at the bottom of the +3051. [bug] NS records obscure DNAME records at the bottom of the zone if both are present. [RT #23035] 3050. [bug] The autosign system test was timing dependent. @@ -742,7 +1114,7 @@ 3049. [bug] Save and restore the gid when creating creating named.pid at startup. [RT #23290] -3048. [bug] Fully separate view key mangement. [RT #23419] +3048. [bug] Fully separate view key management. [RT #23419] 3047. [bug] DNSKEY NODATA responses not cached fixed in validator.c. Tests added to dnssec system test. @@ -1079,7 +1451,7 @@ no data response. [RT #21744] 2952. [port] win32: named-checkzone and named-checkconf failed - to initialise winsock. [RT #21932] + to initialize winsock. [RT #21932] 2951. [bug] named failed to generate a correct signed response in a optout, delegation only zone with no secure @@ -1125,7 +1497,7 @@ in use. [RT# 21868] 2938. [bug] When generating signed responses, from a signed zone - that uses NSEC3, named would use a uninitialised + that uses NSEC3, named would use a uninitialized pointer if it needed to skip a NSEC3 record because it didn't match the selected NSEC3PARAM record for zone. [RT# 21868] @@ -1179,7 +1551,7 @@ revisit the issue and complete the fix later. [RT #21710] -2930. [experimental] New "rndc addzone" and "rndc delzone" commads +2930. [experimental] New "rndc addzone" and "rndc delzone" commands allow dynamic addition and deletion of zones. To enable this feature, specify a "new-zone-file" option at the view or options level in named.conf. @@ -1355,7 +1727,7 @@ successfully responds to the query using plain DNS. [RT #20930] -2873. [bug] Cancelling a dynamic update via the dns/client module +2873. [bug] Canceling a dynamic update via the dns/client module could trigger an assertion failure. [RT #21133] 2872. [bug] Modify dns/client.c:dns_client_createx() to only @@ -1397,7 +1769,7 @@ 2860. [bug] named-checkconf's usage was out of date. [RT #21039] -2859. [bug] When cancelling validation it was possible to leak +2859. [bug] When canceling validation it was possible to leak memory. [RT #20800] 2858. [bug] RTT estimates were not being adjusted on ICMP errors. @@ -1950,7 +2322,7 @@ 2695. [func] DHCP/DDNS - update fdwatch code for use by DHCP. Modify the api to isc_sockfdwatch_t (the - callback functon for isc_socket_fdwatchcreate) + callback function for isc_socket_fdwatchcreate) to include information about the direction (read or write) and add isc_socket_fdwatchpoke. [RT #20253] @@ -2015,7 +2387,7 @@ sets the time when a key is no longer used for signing but is still published. - The "unpublished" date (-U) is deprecated in - favour of "deleted" (-D). + favor of "deleted" (-D). [RT #20247] 2676. [bug] --with-export-installdir should have been @@ -2461,7 +2833,7 @@ 2553. [bug] Reference leak on DNSSEC validation errors. [RT #19291] -2552. [bug] zero-no-soa-ttl-cache was not being honoured. +2552. [bug] zero-no-soa-ttl-cache was not being honored. [RT #19340] 2551. [bug] Potential Reference leak on return. [RT #19341] @@ -2514,7 +2886,7 @@ 2534. [func] Check NAPTR records regular expressions and replacement strings to ensure they are syntactically - valid and consistant. [RT #18168] + valid and consistent. [RT #18168] 2533. [doc] ARM: document @ (at-sign). [RT #17144] diff --git a/contrib/bind9/COPYRIGHT b/contrib/bind9/COPYRIGHT index 6f2c8e5..cc19db4 100644 --- a/contrib/bind9/COPYRIGHT +++ b/contrib/bind9/COPYRIGHT @@ -1,4 +1,4 @@ -Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") Copyright (C) 1996-2003 Internet Software Consortium. Permission to use, copy, modify, and/or distribute this software for any diff --git a/contrib/bind9/FAQ b/contrib/bind9/FAQ index 9e3469c..5e86a08 100644 --- a/contrib/bind9/FAQ +++ b/contrib/bind9/FAQ @@ -1,6 +1,6 @@ Frequently Asked Questions about BIND 9 -Copyright © 2004-2010 Internet Systems Consortium, Inc. ("ISC") +Copyright © 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") Copyright © 2000-2003 Internet Software Consortium. @@ -869,7 +869,7 @@ A: If you run Tiger(Mac OS 10.4) or later then this is all you need to do: Copy the key statement from /etc/rndc.conf into /etc/rndc.key, e.g.: key "rndc-key" { - algorithm hmac-md5; + algorithm hmac-sha256; secret "uvceheVuqf17ZwIcTydddw=="; }; diff --git a/contrib/bind9/FAQ.xml b/contrib/bind9/FAQ.xml index 7b21689..d0f903b 100644 --- a/contrib/bind9/FAQ.xml +++ b/contrib/bind9/FAQ.xml @@ -1,7 +1,7 @@ <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" []> <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -30,6 +30,7 @@ <year>2008</year> <year>2009</year> <year>2010</year> + <year>2013</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> <copyright> @@ -1564,7 +1565,7 @@ rand_irqs="3 14 15"</programlisting> <informalexample> <programlisting> key "rndc-key" { - algorithm hmac-md5; + algorithm hmac-sha256; secret "uvceheVuqf17ZwIcTydddw=="; };</programlisting> </informalexample> diff --git a/contrib/bind9/Makefile.in b/contrib/bind9/Makefile.in index 05d9c43..4e41fe5 100644 --- a/contrib/bind9/Makefile.in +++ b/contrib/bind9/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2002 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -61,9 +61,21 @@ tags: rm -f TAGS find lib bin -name "*.[ch]" -print | @ETAGS@ - -check: test - -test: +test check: + @if test -n "`${PERL} ${top_srcdir}/bin/tests/system/testsock.pl 2>&- || echo fail`"; then \ + echo I: NOTE: The tests were not run because they require that; \ + echo I: the IP addresses 10.53.0.1 through 10.53.0.8 are configured; \ + echo I: as alias addresses on the loopback interface. Please run; \ + echo I: \'bin/tests/system/ifconfig.sh up\' as root to configure; \ + echo I: them, then rerun the tests. Run make force-test to run the; \ + echo I: tests anyway.; \ + exit 1; \ + fi + ${MAKE} test-force + +force-test: test-force + +test-force: status=0; \ (cd bin/tests && ${MAKE} ${MAKEDEFS} test) || status=1; \ (test -f unit/unittest.sh && $(SHELL) unit/unittest.sh) || status=1; \ diff --git a/contrib/bind9/README b/contrib/bind9/README index f797639..9d839b4 100644 --- a/contrib/bind9/README +++ b/contrib/bind9/README @@ -51,6 +51,11 @@ BIND 9 For up-to-date release notes and errata, see http://www.isc.org/software/bind9/releasenotes +BIND 9.8.5 + + BIND 9.8.5 includes several bug fixes and patches security + flaws described in CVE-2012-5688, CVE-2012-5689 and CVE-2013-2266. + BIND 9.8.4 BIND 9.8.4 includes several bug fixes and patches security diff --git a/contrib/bind9/aclocal.m4 b/contrib/bind9/aclocal.m4 index c1a594c..3f017c9 100644 --- a/contrib/bind9/aclocal.m4 +++ b/contrib/bind9/aclocal.m4 @@ -1,2 +1,5 @@ -sinclude(./libtool.m4)dnl - +sinclude(libtool.m4/libtool.m4)dnl +sinclude(libtool.m4/ltoptions.m4)dnl +sinclude(libtool.m4/ltsugar.m4)dnl +sinclude(libtool.m4/ltversion.m4)dnl +sinclude(libtool.m4/lt~obsolete.m4)dnl diff --git a/contrib/bind9/bin/Makefile.in b/contrib/bind9/bin/Makefile.in index 89b4673..897c0f3 100644 --- a/contrib/bind9/bin/Makefile.in +++ b/contrib/bind9/bin/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004, 2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -19,7 +19,7 @@ srcdir = @srcdir@ VPATH = @srcdir@ top_srcdir = @top_srcdir@ -SUBDIRS = named rndc dig dnssec tests tools nsupdate \ +SUBDIRS = named rndc dig dnssec tools tests nsupdate \ check confgen @PKCS11_TOOLS@ TARGETS = diff --git a/contrib/bind9/bin/check/check-tool.c b/contrib/bind9/bin/check/check-tool.c index 2bf16a6..46cf2bf 100644 --- a/contrib/bind9/bin/check/check-tool.c +++ b/contrib/bind9/bin/check/check-tool.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -196,6 +196,10 @@ checkns(dns_zone_t *zone, dns_name_t *name, dns_name_t *owner, a->type == dns_rdatatype_a); REQUIRE(aaaa == NULL || !dns_rdataset_isassociated(aaaa) || aaaa->type == dns_rdatatype_aaaa); + + if (a == NULL || aaaa == NULL) + return (answer); + memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_CANONNAME; hints.ai_family = PF_UNSPEC; @@ -258,8 +262,7 @@ checkns(dns_zone_t *zone, dns_name_t *name, dns_name_t *owner, } return (ISC_TRUE); } - if (a == NULL || aaaa == NULL) - return (answer); + /* * Check that all glue records really exist. */ @@ -597,7 +600,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename, dns_zone_settype(zone, dns_zone_master); - isc_buffer_init(&buffer, zonename, strlen(zonename)); + isc_buffer_constinit(&buffer, zonename, strlen(zonename)); isc_buffer_add(&buffer, strlen(zonename)); dns_fixedname_init(&fixorigin); origin = dns_fixedname_name(&fixorigin); diff --git a/contrib/bind9/bin/check/named-checkconf.c b/contrib/bind9/bin/check/named-checkconf.c index a342dd9..ef754ff 100644 --- a/contrib/bind9/bin/check/named-checkconf.c +++ b/contrib/bind9/bin/check/named-checkconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -295,6 +295,18 @@ configure_zone(const char *vclass, const char *view, } obj = NULL; + if (get_maps(maps, "check-spf", &obj)) { + if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { + zone_options |= DNS_ZONEOPT_CHECKSPF; + } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { + zone_options &= ~DNS_ZONEOPT_CHECKSPF; + } else + INSIST(0); + } else { + zone_options |= DNS_ZONEOPT_CHECKSPF; + } + + obj = NULL; if (get_checknames(maps, &obj)) { if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { zone_options |= DNS_ZONEOPT_CHECKNAMES; @@ -471,6 +483,7 @@ main(int argc, char **argv) { if (isc_commandline_option != '?') fprintf(stderr, "%s: invalid argument -%c\n", program, isc_commandline_option); + /* FALLTHROUGH */ case 'h': usage(); diff --git a/contrib/bind9/bin/check/named-checkzone.8 b/contrib/bind9/bin/check/named-checkzone.8 index 92c8bdc..b7b8a4c 100644 --- a/contrib/bind9/bin/check/named-checkzone.8 +++ b/contrib/bind9/bin/check/named-checkzone.8 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2004-2007, 2009, 2010, 2013 Internet Systems Consortium, Inc. ("ISC") .\" Copyright (C) 2000-2002 Internet Software Consortium. .\" .\" Permission to use, copy, modify, and/or distribute this software for any @@ -33,9 +33,9 @@ named\-checkzone, named\-compilezone \- zone file validity checking or converting tool .SH "SYNOPSIS" .HP 16 -\fBnamed\-checkzone\fR [\fB\-d\fR] [\fB\-h\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-M\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-o\ \fR\fB\fIfilename\fR\fR] [\fB\-r\ \fR\fB\fImode\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-S\ \fR\fB\fImode\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {zonename} {filename} +\fBnamed\-checkzone\fR [\fB\-d\fR] [\fB\-h\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-M\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-o\ \fR\fB\fIfilename\fR\fR] [\fB\-r\ \fR\fB\fImode\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-S\ \fR\fB\fImode\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-T\ \fR\fB\fImode\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {zonename} {filename} .HP 18 -\fBnamed\-compilezone\fR [\fB\-d\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-C\ \fR\fB\fImode\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-r\ \fR\fB\fImode\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {\fB\-o\ \fR\fB\fIfilename\fR\fR} {zonename} {filename} +\fBnamed\-compilezone\fR [\fB\-d\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-C\ \fR\fB\fImode\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-r\ \fR\fB\fImode\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-T\ \fR\fB\fImode\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {\fB\-o\ \fR\fB\fIfilename\fR\fR} {zonename} {filename} .SH "DESCRIPTION" .PP \fBnamed\-checkzone\fR @@ -236,6 +236,14 @@ Chroot to so that include directives in the configuration file are processed as if run by a similarly chrooted named. .RE .PP +\-T \fImode\fR +.RS 4 +Check if Sender Policy Framework records (TXT and SPF) both exist or both don't exist. A warning is issued if they don't match. Possible modes are +\fB"warn"\fR +(default), +\fB"ignore"\fR. +.RE +.PP \-w \fIdirectory\fR .RS 4 chdir to @@ -281,7 +289,7 @@ BIND 9 Administrator Reference Manual. .PP Internet Systems Consortium .SH "COPYRIGHT" -Copyright \(co 2004\-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2004\-2007, 2009, 2010, 2013 Internet Systems Consortium, Inc. ("ISC") .br Copyright \(co 2000\-2002 Internet Software Consortium. .br diff --git a/contrib/bind9/bin/check/named-checkzone.c b/contrib/bind9/bin/check/named-checkzone.c index 11491b5..fdc3ddc 100644 --- a/contrib/bind9/bin/check/named-checkzone.c +++ b/contrib/bind9/bin/check/named-checkzone.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -145,19 +145,21 @@ main(int argc, char **argv) { if (progmode == progmode_compile) { zone_options |= (DNS_ZONEOPT_CHECKNS | DNS_ZONEOPT_FATALNS | + DNS_ZONEOPT_CHECKSPF | DNS_ZONEOPT_CHECKDUPRR | DNS_ZONEOPT_CHECKNAMES | DNS_ZONEOPT_CHECKNAMESFAIL | DNS_ZONEOPT_CHECKWILDCARD); } else - zone_options |= DNS_ZONEOPT_CHECKDUPRR; + zone_options |= (DNS_ZONEOPT_CHECKDUPRR | + DNS_ZONEOPT_CHECKSPF); #define ARGCMP(X) (strcmp(isc_commandline_argument, X) == 0) isc_commandline_errprint = ISC_FALSE; while ((c = isc_commandline_parse(argc, argv, - "c:df:hi:jk:m:n:qr:s:t:o:vw:DF:M:S:W:")) + "c:df:hi:jk:m:n:qr:s:t:o:vw:DF:M:S:T:W:")) != EOF) { switch (c) { case 'c': @@ -363,6 +365,18 @@ main(int argc, char **argv) { } break; + case 'T': + if (ARGCMP("warn")) { + zone_options |= DNS_ZONEOPT_CHECKSPF; + } else if (ARGCMP("ignore")) { + zone_options &= ~DNS_ZONEOPT_CHECKSPF; + } else { + fprintf(stderr, "invalid argument to -T: %s\n", + isc_commandline_argument); + exit(1); + } + break; + case 'W': if (ARGCMP("warn")) zone_options |= DNS_ZONEOPT_CHECKWILDCARD; @@ -374,6 +388,7 @@ main(int argc, char **argv) { if (isc_commandline_option != '?') fprintf(stderr, "%s: invalid argument -%c\n", prog_name, isc_commandline_option); + /* FALLTHROUGH */ case 'h': usage(); diff --git a/contrib/bind9/bin/check/named-checkzone.docbook b/contrib/bind9/bin/check/named-checkzone.docbook index 33dc15e..c25dd1e 100644 --- a/contrib/bind9/bin/check/named-checkzone.docbook +++ b/contrib/bind9/bin/check/named-checkzone.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2007, 2009, 2010, 2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2002 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -38,6 +38,7 @@ <year>2007</year> <year>2009</year> <year>2010</year> + <year>2013</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> <copyright> @@ -75,6 +76,7 @@ <arg><option>-s <replaceable class="parameter">style</replaceable></option></arg> <arg><option>-S <replaceable class="parameter">mode</replaceable></option></arg> <arg><option>-t <replaceable class="parameter">directory</replaceable></option></arg> + <arg><option>-T <replaceable class="parameter">mode</replaceable></option></arg> <arg><option>-w <replaceable class="parameter">directory</replaceable></option></arg> <arg><option>-D</option></arg> <arg><option>-W <replaceable class="parameter">mode</replaceable></option></arg> @@ -98,6 +100,7 @@ <arg><option>-r <replaceable class="parameter">mode</replaceable></option></arg> <arg><option>-s <replaceable class="parameter">style</replaceable></option></arg> <arg><option>-t <replaceable class="parameter">directory</replaceable></option></arg> + <arg><option>-T <replaceable class="parameter">mode</replaceable></option></arg> <arg><option>-w <replaceable class="parameter">directory</replaceable></option></arg> <arg><option>-D</option></arg> <arg><option>-W <replaceable class="parameter">mode</replaceable></option></arg> @@ -380,6 +383,18 @@ </varlistentry> <varlistentry> + <term>-T <replaceable class="parameter">mode</replaceable></term> + <listitem> + <para> + Check if Sender Policy Framework records (TXT and SPF) + both exist or both don't exist. A warning is issued + if they don't match. Possible modes are + <command>"warn"</command> (default), <command>"ignore"</command>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term>-w <replaceable class="parameter">directory</replaceable></term> <listitem> <para> diff --git a/contrib/bind9/bin/check/named-checkzone.html b/contrib/bind9/bin/check/named-checkzone.html index 2be53a7..ab9c8ef 100644 --- a/contrib/bind9/bin/check/named-checkzone.html +++ b/contrib/bind9/bin/check/named-checkzone.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2007, 2009, 2010, 2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2002 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -29,11 +29,11 @@ </div> <div class="refsynopsisdiv"> <h2>Synopsis</h2> -<div class="cmdsynopsis"><p><code class="command">named-checkzone</code> [<code class="option">-d</code>] [<code class="option">-h</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-M <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-S <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div> -<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div> +<div class="cmdsynopsis"><p><code class="command">named-checkzone</code> [<code class="option">-d</code>] [<code class="option">-h</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-M <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-S <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-T <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div> +<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-T <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543696"></a><h2>DESCRIPTION</h2> +<a name="id2543716"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named-checkzone</strong></span> checks the syntax and integrity of a zone file. It performs the same checks as <span><strong class="command">named</strong></span> does when loading a @@ -53,7 +53,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543731"></a><h2>OPTIONS</h2> +<a name="id2543751"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-d</span></dt> <dd><p> @@ -214,6 +214,13 @@ directives in the configuration file are processed as if run by a similarly chrooted named. </p></dd> +<dt><span class="term">-T <em class="replaceable"><code>mode</code></em></span></dt> +<dd><p> + Check if Sender Policy Framework records (TXT and SPF) + both exist or both don't exist. A warning is issued + if they don't match. Possible modes are + <span><strong class="command">"warn"</strong></span> (default), <span><strong class="command">"ignore"</strong></span>. + </p></dd> <dt><span class="term">-w <em class="replaceable"><code>directory</code></em></span></dt> <dd><p> chdir to <code class="filename">directory</code> so that @@ -247,14 +254,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2544446"></a><h2>RETURN VALUES</h2> +<a name="id2544422"></a><h2>RETURN VALUES</h2> <p><span><strong class="command">named-checkzone</strong></span> returns an exit status of 1 if errors were detected and 0 otherwise. </p> </div> <div class="refsect1" lang="en"> -<a name="id2544458"></a><h2>SEE ALSO</h2> +<a name="id2544434"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>, <em class="citetitle">RFC 1035</em>, @@ -262,7 +269,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2544491"></a><h2>AUTHOR</h2> +<a name="id2544603"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/bin/confgen/keygen.c b/contrib/bind9/bin/confgen/keygen.c index a5db317..d0cdafe 100644 --- a/contrib/bind9/bin/confgen/keygen.c +++ b/contrib/bind9/bin/confgen/keygen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -126,13 +126,17 @@ generate_key(isc_mem_t *mctx, const char *randomfile, dns_secalg_t alg, switch (alg) { case DST_ALG_HMACMD5: + case DST_ALG_HMACSHA1: + case DST_ALG_HMACSHA224: + case DST_ALG_HMACSHA256: if (keysize < 1 || keysize > 512) fatal("keysize %d out of range (must be 1-512)\n", keysize); break; - case DST_ALG_HMACSHA256: - if (keysize < 1 || keysize > 256) - fatal("keysize %d out of range (must be 1-256)\n", + case DST_ALG_HMACSHA384: + case DST_ALG_HMACSHA512: + if (keysize < 1 || keysize > 1024) + fatal("keysize %d out of range (must be 1-1024)\n", keysize); break; default: diff --git a/contrib/bind9/bin/confgen/rndc-confgen.c b/contrib/bind9/bin/confgen/rndc-confgen.c index 1ad14a9..49119ce 100644 --- a/contrib/bind9/bin/confgen/rndc-confgen.c +++ b/contrib/bind9/bin/confgen/rndc-confgen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -140,8 +140,6 @@ main(int argc, char **argv) { keysize = strtol(isc_commandline_argument, &p, 10); if (*p != '\0' || keysize < 0) fatal("-b requires a non-negative number"); - if (keysize < 1 || keysize > 512) - fatal("-b must be in the range 1 through 512"); break; case 'c': keyfile = isc_commandline_argument; diff --git a/contrib/bind9/bin/dig/dig.1 b/contrib/bind9/bin/dig/dig.1 index 6e3bfb6..6d8688e 100644 --- a/contrib/bind9/bin/dig/dig.1 +++ b/contrib/bind9/bin/dig/dig.1 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") .\" Copyright (C) 2000-2003 Internet Software Consortium. .\" .\" Permission to use, copy, modify, and/or distribute this software for any @@ -57,7 +57,9 @@ allows multiple lookups to be issued from the command line. Unless it is told to query a specific name server, \fBdig\fR will try each of the servers listed in -\fI/etc/resolv.conf\fR. +\fI/etc/resolv.conf\fR. If no usable server addreses are found, +\fBdig\fR +will send the query to the local host. .PP When no command line arguments or options are given, \fBdig\fR @@ -95,13 +97,20 @@ is the name or IP address of the name server to query. This can be an IPv4 addre \fIserver\fR argument is a hostname, \fBdig\fR -resolves that name before querying that name server. If no +resolves that name before querying that name server. +.sp +If no \fIserver\fR argument is provided, \fBdig\fR consults -\fI/etc/resolv.conf\fR -and queries the name servers listed there. The reply from the name server that responds is displayed. +\fI/etc/resolv.conf\fR; if an address is found there, it queries the name server at that address. If either of the +\fB\-4\fR +or +\fB\-6\fR +options are in use, then only addresses for the corresponding transport will be tried. If no usable addresses are found, +\fBdig\fR +will send the query to the local host. The reply from the name server that responds is displayed. .RE .PP \fBname\fR @@ -567,7 +576,7 @@ RFC1035. .PP There are probably too many query options. .SH "COPYRIGHT" -Copyright \(co 2004\-2010 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2004\-2010, 2013 Internet Systems Consortium, Inc. ("ISC") .br Copyright \(co 2000\-2003 Internet Software Consortium. .br diff --git a/contrib/bind9/bin/dig/dig.c b/contrib/bind9/bin/dig/dig.c index 5e5ec0f..ce9ccde 100644 --- a/contrib/bind9/bin/dig/dig.c +++ b/contrib/bind9/bin/dig/dig.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -186,7 +186,7 @@ help(void) { " +domain=### (Set default domainname)\n" " +bufsize=### (Set EDNS0 Max UDP packet size)\n" " +ndots=### (Set NDOTS value)\n" -" +edns=### (Set EDNS version)\n" +" +[no]edns[=###] (Set EDNS version) [0]\n" " +[no]search (Set whether to use searchlist)\n" " +[no]showsearch (Search with intermediate results)\n" " +[no]defname (Ditto)\n" @@ -240,6 +240,8 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) { isc_uint64_t diff; isc_time_t now; time_t tnow; + struct tm tmnow; + char time_str[100]; char fromtext[ISC_SOCKADDR_FORMATSIZE]; isc_sockaddr_format(from, fromtext, sizeof(fromtext)); @@ -251,7 +253,10 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) { printf(";; Query time: %ld msec\n", (long int)diff/1000); printf(";; SERVER: %s(%s)\n", fromtext, query->servname); time(&tnow); - printf(";; WHEN: %s", ctime(&tnow)); + tmnow = *localtime(&tnow); + if (strftime(time_str, sizeof(time_str), + "%a %b %d %H:%M:%S %Z %Y", &tmnow) > 0U) + printf(";; WHEN: %s\n", time_str); if (query->lookup->doing_xfr) { printf(";; XFR size: %u records (messages %u, " "bytes %" ISC_PRINT_QUADFORMAT "u)\n", @@ -259,7 +264,6 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) { query->byte_count); } else { printf(";; MSG SIZE rcvd: %u\n", bytes); - } if (key != NULL) { if (!validated) @@ -276,7 +280,7 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) { "from %s(%s) in %d ms\n\n", query->lookup->doing_xfr ? query->byte_count : (isc_uint64_t)bytes, - fromtext, query->servname, + fromtext, query->userarg, (int)diff/1000); } } @@ -525,6 +529,13 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) { printf(";; WARNING: recursion requested " "but not available\n"); } + if (msg != query->lookup->sendmsg && + query->lookup->edns != -1 && msg->opt == NULL && + (msg->rcode == dns_rcode_formerr || + msg->rcode == dns_rcode_notimp)) + printf("\n;; WARNING: EDNS query returned status " + "%s - retry with '+noedns'\n", + rcode_totext(msg->rcode)); if (msg != query->lookup->sendmsg && extrabytes != 0U) printf(";; WARNING: Messages has %u extra byte%s at " "end\n", extrabytes, extrabytes != 0 ? "s" : ""); @@ -855,8 +866,10 @@ plus_option(char *option, isc_boolean_t is_batchfile, lookup->edns = -1; break; } - if (value == NULL) - goto need_value; + if (value == NULL) { + lookup->edns = 0; + break; + } result = parse_uint(&num, value, 255, "edns"); if (result != ISC_R_SUCCESS) fatal("Couldn't parse edns"); diff --git a/contrib/bind9/bin/dig/dig.docbook b/contrib/bind9/bin/dig/dig.docbook index d64d038..1285c43 100644 --- a/contrib/bind9/bin/dig/dig.docbook +++ b/contrib/bind9/bin/dig/dig.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -45,6 +45,7 @@ <year>2008</year> <year>2009</year> <year>2010</year> + <year>2013</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> <copyright> @@ -116,9 +117,10 @@ <para> Unless it is told to query a specific name server, - <command>dig</command> will try each of the servers listed - in - <filename>/etc/resolv.conf</filename>. + <command>dig</command> will try each of the servers listed in + <filename>/etc/resolv.conf</filename>. If no usable server addreses + are found, <command>dig</command> will send the query to the local + host. </para> <para> @@ -157,20 +159,25 @@ <term><constant>server</constant></term> <listitem> <para> - is the name or IP address of the name server to query. This can - be an IPv4 - address in dotted-decimal notation or an IPv6 + is the name or IP address of the name server to query. This + can be an IPv4 address in dotted-decimal notation or an IPv6 address in colon-delimited notation. When the supplied - <parameter>server</parameter> argument is a - hostname, - <command>dig</command> resolves that name before - querying that name - server. If no <parameter>server</parameter> - argument is provided, - <command>dig</command> consults <filename>/etc/resolv.conf</filename> - and queries the name servers listed there. The reply from the - name - server that responds is displayed. + <parameter>server</parameter> argument is a hostname, + <command>dig</command> resolves that name before querying + that name server. + </para> + <para> + If no <parameter>server</parameter> argument is + provided, <command>dig</command> consults + <filename>/etc/resolv.conf</filename>; if an + address is found there, it queries the name server at + that address. If either of the <option>-4</option> or + <option>-6</option> options are in use, then + only addresses for the corresponding transport + will be tried. If no usable addresses are found, + <command>dig</command> will send the query to the + local host. The reply from the name server that + responds is displayed. </para> </listitem> </varlistentry> diff --git a/contrib/bind9/bin/dig/dig.html b/contrib/bind9/bin/dig/dig.html index ceef3fa..a1cd5cf 100644 --- a/contrib/bind9/bin/dig/dig.html +++ b/contrib/bind9/bin/dig/dig.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -34,7 +34,7 @@ <div class="cmdsynopsis"><p><code class="command">dig</code> [global-queryopt...] [query...]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543524"></a><h2>DESCRIPTION</h2> +<a name="id2543527"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dig</strong></span> (domain information groper) is a flexible tool for interrogating DNS name servers. It performs DNS lookups and @@ -57,9 +57,10 @@ </p> <p> Unless it is told to query a specific name server, - <span><strong class="command">dig</strong></span> will try each of the servers listed - in - <code class="filename">/etc/resolv.conf</code>. + <span><strong class="command">dig</strong></span> will try each of the servers listed in + <code class="filename">/etc/resolv.conf</code>. If no usable server addreses + are found, <span><strong class="command">dig</strong></span> will send the query to the local + host. </p> <p> When no command line arguments or options are given, @@ -80,7 +81,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543597"></a><h2>SIMPLE USAGE</h2> +<a name="id2543606"></a><h2>SIMPLE USAGE</h2> <p> A typical invocation of <span><strong class="command">dig</strong></span> looks like: </p> @@ -91,22 +92,29 @@ </p> <div class="variablelist"><dl> <dt><span class="term"><code class="constant">server</code></span></dt> -<dd><p> - is the name or IP address of the name server to query. This can - be an IPv4 - address in dotted-decimal notation or an IPv6 +<dd> +<p> + is the name or IP address of the name server to query. This + can be an IPv4 address in dotted-decimal notation or an IPv6 address in colon-delimited notation. When the supplied - <em class="parameter"><code>server</code></em> argument is a - hostname, - <span><strong class="command">dig</strong></span> resolves that name before - querying that name - server. If no <em class="parameter"><code>server</code></em> - argument is provided, - <span><strong class="command">dig</strong></span> consults <code class="filename">/etc/resolv.conf</code> - and queries the name servers listed there. The reply from the - name - server that responds is displayed. - </p></dd> + <em class="parameter"><code>server</code></em> argument is a hostname, + <span><strong class="command">dig</strong></span> resolves that name before querying + that name server. + </p> +<p> + If no <em class="parameter"><code>server</code></em> argument is + provided, <span><strong class="command">dig</strong></span> consults + <code class="filename">/etc/resolv.conf</code>; if an + address is found there, it queries the name server at + that address. If either of the <code class="option">-4</code> or + <code class="option">-6</code> options are in use, then + only addresses for the corresponding transport + will be tried. If no usable addresses are found, + <span><strong class="command">dig</strong></span> will send the query to the + local host. The reply from the name server that + responds is displayed. + </p> +</dd> <dt><span class="term"><code class="constant">name</code></span></dt> <dd><p> is the name of the resource record that is to be looked up. @@ -126,7 +134,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543688"></a><h2>OPTIONS</h2> +<a name="id2543709"></a><h2>OPTIONS</h2> <p> The <code class="option">-b</code> option sets the source IP address of the query to <em class="parameter"><code>address</code></em>. This must be a valid @@ -230,7 +238,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2544037"></a><h2>QUERY OPTIONS</h2> +<a name="id2544058"></a><h2>QUERY OPTIONS</h2> <p><span><strong class="command">dig</strong></span> provides a number of query options which affect the way in which lookups are made and the results displayed. Some of @@ -561,7 +569,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2545186"></a><h2>MULTIPLE QUERIES</h2> +<a name="id2545207"></a><h2>MULTIPLE QUERIES</h2> <p> The BIND 9 implementation of <span><strong class="command">dig </strong></span> supports @@ -607,7 +615,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2545248"></a><h2>IDN SUPPORT</h2> +<a name="id2545337"></a><h2>IDN SUPPORT</h2> <p> If <span><strong class="command">dig</strong></span> has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. @@ -621,14 +629,14 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2545338"></a><h2>FILES</h2> +<a name="id2545360"></a><h2>FILES</h2> <p><code class="filename">/etc/resolv.conf</code> </p> <p><code class="filename">${HOME}/.digrc</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2545355"></a><h2>SEE ALSO</h2> +<a name="id2545377"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, @@ -636,7 +644,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2545393"></a><h2>BUGS</h2> +<a name="id2545414"></a><h2>BUGS</h2> <p> There are probably too many query options. </p> diff --git a/contrib/bind9/bin/dig/dighost.c b/contrib/bind9/bin/dig/dighost.c index 9695de0..8ea7d8e 100644 --- a/contrib/bind9/bin/dig/dighost.c +++ b/contrib/bind9/bin/dig/dighost.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -794,6 +794,7 @@ make_empty_lookup(void) { dns_fixedname_init(&looknew->fdomain); ISC_LINK_INIT(looknew, link); ISC_LIST_INIT(looknew->q); + ISC_LIST_INIT(looknew->connecting); ISC_LIST_INIT(looknew->my_server_list); return (looknew); } @@ -815,11 +816,11 @@ clone_lookup(dig_lookup_t *lookold, isc_boolean_t servers) { looknew = make_empty_lookup(); INSIST(looknew != NULL); - strncpy(looknew->textname, lookold->textname, MXNAME); + strlcpy(looknew->textname, lookold->textname, MXNAME); #if DIG_SIGCHASE_TD - strncpy(looknew->textnamesigchase, lookold->textnamesigchase, MXNAME); + strlcpy(looknew->textnamesigchase, lookold->textnamesigchase, MXNAME); #endif - strncpy(looknew->cmdline, lookold->cmdline, MXNAME); + strlcpy(looknew->cmdline, lookold->cmdline, MXNAME); looknew->textname[MXNAME-1] = 0; looknew->rdtype = lookold->rdtype; looknew->qrdtype = lookold->qrdtype; @@ -998,7 +999,7 @@ parse_hmac(const char *hmac) { len = strlen(hmac); if (len >= (int) sizeof(buf)) fatal("unknown key type '%.*s'", len, hmac); - strncpy(buf, hmac, sizeof(buf)); + strlcpy(buf, hmac, sizeof(buf)); digestbits = 0; @@ -1080,8 +1081,8 @@ read_confkey(void) { secretstr = cfg_obj_asstring(secretobj); algorithm = cfg_obj_asstring(algorithmobj); - strncpy(keynametext, keyname, sizeof(keynametext)); - strncpy(keysecret, secretstr, sizeof(keysecret)); + strlcpy(keynametext, keyname, sizeof(keynametext)); + strlcpy(keysecret, secretstr, sizeof(keysecret)); parse_hmac(algorithm); setup_text_key(); @@ -1164,7 +1165,7 @@ make_searchlist_entry(char *domain) { if (search == NULL) fatal("memory allocation failure in %s:%d", __FILE__, __LINE__); - strncpy(search->origin, domain, MXNAME); + strlcpy(search->origin, domain, MXNAME); search->origin[MXNAME-1] = 0; ISC_LINK_INIT(search, link); return (search); @@ -1473,7 +1474,10 @@ clear_query(dig_query_t *query) { if (lookup->current_query == query) lookup->current_query = NULL; - ISC_LIST_UNLINK(lookup->q, query, link); + if (ISC_LINK_LINKED(query, link)) + ISC_LIST_UNLINK(lookup->q, query, link); + if (ISC_LINK_LINKED(query, clink)) + ISC_LIST_UNLINK(lookup->connecting, query, clink); if (ISC_LINK_LINKED(&query->recvbuf, link)) ISC_LIST_DEQUEUE(query->recvlist, &query->recvbuf, link); @@ -1481,6 +1485,7 @@ clear_query(dig_query_t *query) { ISC_LIST_DEQUEUE(query->lengthlist, &query->lengthbuf, link); INSIST(query->recvspace != NULL); + if (query->sock != NULL) { isc_socket_detach(&query->sock); sockcount--; @@ -1508,13 +1513,22 @@ try_clear_lookup(dig_lookup_t *lookup) { debug("try_clear_lookup(%p)", lookup); - if (ISC_LIST_HEAD(lookup->q) != NULL) { + if (ISC_LIST_HEAD(lookup->q) != NULL || + ISC_LIST_HEAD(lookup->connecting) != NULL) + { if (debugging) { q = ISC_LIST_HEAD(lookup->q); while (q != NULL) { debug("query to %s still pending", q->servname); q = ISC_LIST_NEXT(q, link); } + + q = ISC_LIST_HEAD(lookup->connecting); + while (q != NULL) { + debug("query to %s still connecting", + q->servname); + q = ISC_LIST_NEXT(q, clink); + } } return (ISC_FALSE); } @@ -1642,7 +1656,7 @@ start_lookup(void) { = current_lookup->rdclassset; current_lookup->rdclass = dns_rdataclass_in; - strncpy(current_lookup->textnamesigchase, + strlcpy(current_lookup->textnamesigchase, current_lookup->textname, MXNAME); current_lookup->trace_root_sigchase = ISC_TRUE; @@ -1654,7 +1668,7 @@ start_lookup(void) { check_result(result, "dns_name_totext"); isc_buffer_usedregion(b, &r); r.base[r.length] = '\0'; - strncpy(current_lookup->textname, (char*)r.base, + strlcpy(current_lookup->textname, (char*)r.base, MXNAME); isc_buffer_free(&b); @@ -2290,7 +2304,6 @@ setup_lookup(dig_lookup_t *lookup) { query->rr_count = 0; query->msg_count = 0; query->byte_count = 0; - ISC_LINK_INIT(query, link); ISC_LIST_INIT(query->recvlist); ISC_LIST_INIT(query->lengthlist); query->sock = NULL; @@ -2303,6 +2316,7 @@ setup_lookup(dig_lookup_t *lookup) { isc_buffer_init(&query->slbuf, query->slspace, 2); query->sendbuf = lookup->renderbuf; + ISC_LINK_INIT(query, clink); ISC_LINK_INIT(query, link); ISC_LIST_ENQUEUE(lookup->q, query, link); } @@ -2424,6 +2438,7 @@ static void force_timeout(dig_lookup_t *l, dig_query_t *query) { isc_event_t *event; + debug("force_timeout ()"); event = isc_event_allocate(mctx, query, ISC_TIMEREVENT_IDLE, connect_timeout, l, sizeof(isc_event_t)); @@ -2491,6 +2506,7 @@ send_tcp_connect(dig_query_t *query) { send_tcp_connect(next); return; } + INSIST(query->sock == NULL); result = isc_socket_create(socketmgr, isc_sockaddr_pf(&query->sockaddr), @@ -2521,6 +2537,9 @@ send_tcp_connect(dig_query_t *query) { if (l->ns_search_only && !l->trace_root) { debug("sending next, since searching"); next = ISC_LIST_NEXT(query, link); + if (ISC_LINK_LINKED(query, link)) + ISC_LIST_DEQUEUE(l->q, query, link); + ISC_LIST_ENQUEUE(l->connecting, query, clink); if (next != NULL) send_tcp_connect(next); } @@ -2601,7 +2620,7 @@ send_udp(dig_query_t *query) { static void connect_timeout(isc_task_t *task, isc_event_t *event) { dig_lookup_t *l = NULL; - dig_query_t *query = NULL, *cq; + dig_query_t *query = NULL, *next, *cq; UNUSED(task); REQUIRE(event->ev_type == ISC_TIMEREVENT_IDLE); @@ -2625,7 +2644,9 @@ connect_timeout(isc_task_t *task, isc_event_t *event) { if (query->sock != NULL) isc_socket_cancel(query->sock, NULL, ISC_SOCKCANCEL_ALL); - send_tcp_connect(ISC_LIST_NEXT(cq, link)); + next = ISC_LIST_NEXT(cq, link); + if (next != NULL) + send_tcp_connect(next); } UNLOCK_LOOKUP; return; @@ -2868,9 +2889,8 @@ connect_done(isc_task_t *task, isc_event_t *event) { if (next != NULL) { bringup_timer(next, TCP_TIMEOUT); send_tcp_connect(next); - } else { + } else check_next_lookup(l); - } UNLOCK_LOOKUP; return; } @@ -3427,6 +3447,7 @@ recv_done(isc_task_t *task, isc_event_t *event) { if (n == 0) docancel = ISC_TRUE; l->trace_root = ISC_FALSE; + usesearch = ISC_FALSE; } else #ifdef DIG_SIGCHASE if (!do_sigchase) @@ -3603,15 +3624,19 @@ getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp) { */ void do_lookup(dig_lookup_t *lookup) { + dig_query_t *query; REQUIRE(lookup != NULL); debug("do_lookup()"); lookup->pending = ISC_TRUE; - if (lookup->tcp_mode) - send_tcp_connect(ISC_LIST_HEAD(lookup->q)); - else - send_udp(ISC_LIST_HEAD(lookup->q)); + query = ISC_LIST_HEAD(lookup->q); + if (query != NULL) { + if (lookup->tcp_mode) + send_tcp_connect(query); + else + send_udp(query); + } } /*% @@ -4083,7 +4108,7 @@ sigchase_scanname(dns_rdatatype_t type, dns_rdatatype_t covers, check_result(result, "dns_name_totext"); isc_buffer_usedregion(b, &r); r.base[r.length] = '\0'; - strcpy(lookup->textname, (char*)r.base); + strlcpy(lookup->textname, (char*)r.base, sizeof(lookup->textname)); isc_buffer_free(&b); if (type == dns_rdatatype_rrsig) @@ -4208,7 +4233,7 @@ opentmpkey(isc_mem_t *mctx, const char *file, char **tempp, FILE **fp) { return (ISC_R_NOMEMORY); memset(tempnamekey, 0, tempnamekeylen); - strncpy(tempnamekey, tempname, tempnamelen); + strlcpy(tempnamekey, tempname, tempnamelen); strcat(tempnamekey ,".key"); @@ -4342,7 +4367,7 @@ prepare_lookup(dns_name_t *name) lookup->new_search = ISC_TRUE; lookup->trace_root_sigchase = ISC_FALSE; - strncpy(lookup->textname, lookup->textnamesigchase, MXNAME); + strlcpy(lookup->textname, lookup->textnamesigchase, MXNAME); lookup->rdtype = lookup->rdtype_sigchase; lookup->rdtypeset = ISC_TRUE; @@ -4401,7 +4426,7 @@ prepare_lookup(dns_name_t *name) dns_rdata_totext(&aaaa, &ns.name, b); isc_buffer_usedregion(b, &r); r.base[r.length] = '\0'; - strncpy(namestr, (char*)r.base, + strlcpy(namestr, (char*)r.base, DNS_NAME_FORMATSIZE); isc_buffer_free(&b); dns_rdata_reset(&aaaa); @@ -4430,7 +4455,7 @@ prepare_lookup(dns_name_t *name) dns_rdata_totext(&a, &ns.name, b); isc_buffer_usedregion(b, &r); r.base[r.length] = '\0'; - strncpy(namestr, (char*)r.base, + strlcpy(namestr, (char*)r.base, DNS_NAME_FORMATSIZE); isc_buffer_free(&b); dns_rdata_reset(&a); @@ -4609,7 +4634,6 @@ contains_trusted_key(dns_name_t *name, dns_rdataset_t *rdataset, { isc_result_t result; dns_rdata_t rdata = DNS_RDATA_INIT; - dst_key_t *trustedKey = NULL; dst_key_t *dnsseckey = NULL; int i; @@ -4653,10 +4677,6 @@ contains_trusted_key(dns_name_t *name, dns_rdataset_t *rdataset, dst_key_free(&dnsseckey); } while (dns_rdataset_next(rdataset) == ISC_R_SUCCESS); - if (trustedKey != NULL) - dst_key_free(&trustedKey); - trustedKey = NULL; - return (ISC_R_NOTFOUND); } diff --git a/contrib/bind9/bin/dig/host.c b/contrib/bind9/bin/dig/host.c index 82eea05..6b37f5f 100644 --- a/contrib/bind9/bin/dig/host.c +++ b/contrib/bind9/bin/dig/host.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -446,10 +446,18 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) { if (msg->rcode != 0) { char namestr[DNS_NAME_FORMATSIZE]; dns_name_format(query->lookup->name, namestr, sizeof(namestr)); - printf("Host %s not found: %d(%s)\n", - (msg->rcode != dns_rcode_nxdomain) ? namestr : - query->lookup->textname, msg->rcode, - rcode_totext(msg->rcode)); + + if (query->lookup->identify_previous_line) + printf("Nameserver %s:\n\t%s not found: %d(%s)\n", + query->servname, + (msg->rcode != dns_rcode_nxdomain) ? namestr : + query->lookup->textname, msg->rcode, + rcode_totext(msg->rcode)); + else + printf("Host %s not found: %d(%s)\n", + (msg->rcode != dns_rcode_nxdomain) ? namestr : + query->lookup->textname, msg->rcode, + rcode_totext(msg->rcode)); return (ISC_R_SUCCESS); } diff --git a/contrib/bind9/bin/dig/include/dig/dig.h b/contrib/bind9/bin/dig/include/dig/dig.h index 6c186de..e039745 100644 --- a/contrib/bind9/bin/dig/include/dig/dig.h +++ b/contrib/bind9/bin/dig/include/dig/dig.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -168,6 +168,7 @@ isc_boolean_t sigchase; dns_name_t *oname; ISC_LINK(dig_lookup_t) link; ISC_LIST(dig_query_t) q; + ISC_LIST(dig_query_t) connecting; dig_query_t *current_query; dig_serverlist_t my_server_list; dig_searchlist_t *origin; @@ -214,6 +215,7 @@ struct dig_query { slspace[4]; isc_socket_t *sock; ISC_LINK(dig_query_t) link; + ISC_LINK(dig_query_t) clink; isc_sockaddr_t sockaddr; isc_time_t time_sent; isc_uint64_t byte_count; diff --git a/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.c b/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.c index e91e02d..6572d4c 100644 --- a/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.c +++ b/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.c @@ -356,6 +356,8 @@ main(int argc, char **argv) { fprintf(stderr, "The use of RSA (RSAMD5) is not recommended.\n" "If you still wish to use RSA (RSAMD5) please " "specify \"-a RSAMD5\"\n"); + if (freeit != NULL) + free(freeit); return (1); } else { r.base = algname; diff --git a/contrib/bind9/bin/dnssec/dnssec-keygen.c b/contrib/bind9/bin/dnssec/dnssec-keygen.c index 8af100c..3d22f99 100644 --- a/contrib/bind9/bin/dnssec/dnssec-keygen.c +++ b/contrib/bind9/bin/dnssec/dnssec-keygen.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -526,6 +526,7 @@ main(int argc, char **argv) { "recommended.\nIf you still wish to " "use RSA (RSAMD5) please specify " "\"-a RSAMD5\"\n"); + INSIST(freeit == NULL); return (1); } else if (strcasecmp(algname, "HMAC-MD5") == 0) alg = DST_ALG_HMACMD5; @@ -960,8 +961,15 @@ main(int argc, char **argv) { dst_key_settime(key, DST_TIME_INACTIVE, inactive); - if (setdel) + if (setdel) { + if (setinact && delete < inactive) + fprintf(stderr, "%s: warning: Key is " + "scheduled to be deleted " + "before it is scheduled to be " + "made inactive.\n", + program); dst_key_settime(key, DST_TIME_DELETE, delete); + } } else { if (setpub || setact || setrev || setinact || setdel || unsetpub || unsetact || diff --git a/contrib/bind9/bin/dnssec/dnssec-revoke.c b/contrib/bind9/bin/dnssec/dnssec-revoke.c index 8346f1c..fb116e6 100644 --- a/contrib/bind9/bin/dnssec/dnssec-revoke.c +++ b/contrib/bind9/bin/dnssec/dnssec-revoke.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -20,7 +20,6 @@ #include <config.h> -#include <libgen.h> #include <stdlib.h> #include <unistd.h> diff --git a/contrib/bind9/bin/dnssec/dnssec-settime.c b/contrib/bind9/bin/dnssec/dnssec-settime.c index f7f4486..a7fbed3 100644 --- a/contrib/bind9/bin/dnssec/dnssec-settime.c +++ b/contrib/bind9/bin/dnssec/dnssec-settime.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -20,7 +20,6 @@ #include <config.h> -#include <libgen.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> @@ -140,6 +139,7 @@ main(int argc, char **argv) { int prepub = -1; isc_stdtime_t now; isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0; + isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0; isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE; isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE; isc_boolean_t setdel = ISC_FALSE; @@ -344,7 +344,6 @@ main(int argc, char **argv) { if (predecessor != NULL) { char keystr[DST_KEY_FORMATSIZE]; - isc_stdtime_t when; int major, minor; if (prepub == -1) @@ -376,19 +375,20 @@ main(int argc, char **argv) { fatal("Predecessor has incompatible format " "version %d.%d\n\t", major, minor); - result = dst_key_gettime(prevkey, DST_TIME_ACTIVATE, &when); + result = dst_key_gettime(prevkey, DST_TIME_ACTIVATE, &prevact); if (result != ISC_R_SUCCESS) fatal("Predecessor has no activation date. " "You must set one before\n\t" "generating a successor."); - result = dst_key_gettime(prevkey, DST_TIME_INACTIVE, &act); + result = dst_key_gettime(prevkey, DST_TIME_INACTIVE, + &previnact); if (result != ISC_R_SUCCESS) fatal("Predecessor has no inactivation date. " "You must set one before\n\t" "generating a successor."); - pub = act - prepub; + pub = prevact - prepub; if (pub < now && prepub != 0) fatal("Predecessor will become inactive before the\n\t" "prepublication period ends. Either change " @@ -396,13 +396,18 @@ main(int argc, char **argv) { "or use the -i option to set a shorter " "prepublication interval."); - result = dst_key_gettime(prevkey, DST_TIME_DELETE, &when); + result = dst_key_gettime(prevkey, DST_TIME_DELETE, &prevdel); if (result != ISC_R_SUCCESS) - fprintf(stderr, "%s: WARNING: Predecessor has no " + fprintf(stderr, "%s: warning: Predecessor has no " "removal date;\n\t" "it will remain in the zone " "indefinitely after rollover.\n", program); + else if (prevdel < previnact) + fprintf(stderr, "%s: warning: Predecessor is " + "scheduled to be deleted\n\t" + "before it is scheduled to be " + "inactive.\n", program); changed = setpub = setact = ISC_TRUE; dst_key_free(&prevkey); @@ -464,6 +469,20 @@ main(int argc, char **argv) { fatal("Key flags mismatch"); } + prevdel = previnact = 0; + if ((setdel && setinact && del < inact) || + (dst_key_gettime(key, DST_TIME_INACTIVE, + &previnact) == ISC_R_SUCCESS && + setdel && !setinact && del < previnact) || + (dst_key_gettime(key, DST_TIME_DELETE, + &prevdel) == ISC_R_SUCCESS && + setinact && !setdel && prevdel < inact) || + (!setdel && !setinact && prevdel < previnact)) + fprintf(stderr, "%s: warning: Key is scheduled to " + "be deleted before it is\n\t" + "scheduled to be inactive.\n", + program); + if (force) set_keyversion(key); else diff --git a/contrib/bind9/bin/dnssec/dnssec-signzone.c b/contrib/bind9/bin/dnssec/dnssec-signzone.c index 2376249..86c3aee 100644 --- a/contrib/bind9/bin/dnssec/dnssec-signzone.c +++ b/contrib/bind9/bin/dnssec/dnssec-signzone.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -646,6 +646,8 @@ hashlist_add(hashlist_t *l, const unsigned char *hash, size_t len) if (l->entries == l->size) { l->size = l->size * 2 + 100; l->hashbuf = realloc(l->hashbuf, l->size * l->length); + if (l->hashbuf == NULL) + fatal("unable to grow hashlist: out of memory"); } memset(l->hashbuf + l->entries * l->length, 0, l->length); memcpy(l->hashbuf + l->entries * l->length, hash, len); @@ -2027,7 +2029,9 @@ add_ds(dns_name_t *name, dns_dbnode_t *node, isc_uint32_t nsttl) { * Remove records of the given type and their signatures. */ static void -remove_records(dns_dbnode_t *node, dns_rdatatype_t which) { +remove_records(dns_dbnode_t *node, dns_rdatatype_t which, + isc_boolean_t checknsec) +{ isc_result_t result; dns_rdatatype_t type, covers; dns_rdatasetiter_t *rdsiter = NULL; @@ -2048,10 +2052,12 @@ remove_records(dns_dbnode_t *node, dns_rdatatype_t which) { covers = rdataset.covers; dns_rdataset_disassociate(&rdataset); if (type == which || covers == which) { - if (which == dns_rdatatype_nsec && !update_chain) + if (which == dns_rdatatype_nsec && + checknsec && !update_chain) fatal("Zone contains NSEC records. Use -u " "to update to NSEC3."); - if (which == dns_rdatatype_nsec3param && !update_chain) + if (which == dns_rdatatype_nsec3param && + checknsec && !update_chain) fatal("Zone contains NSEC3 chains. Use -u " "to update to NSEC."); result = dns_db_deleterdataset(gdb, node, gversion, @@ -2063,6 +2069,39 @@ remove_records(dns_dbnode_t *node, dns_rdatatype_t which) { dns_rdatasetiter_destroy(&rdsiter); } +/* + * Remove signatures covering the given type (0 == all signatures). + */ +static void +remove_sigs(dns_dbnode_t *node, dns_rdatatype_t which) { + isc_result_t result; + dns_rdatatype_t type, covers; + dns_rdatasetiter_t *rdsiter = NULL; + dns_rdataset_t rdataset; + + dns_rdataset_init(&rdataset); + result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter); + check_result(result, "dns_db_allrdatasets()"); + for (result = dns_rdatasetiter_first(rdsiter); + result == ISC_R_SUCCESS; + result = dns_rdatasetiter_next(rdsiter)) { + dns_rdatasetiter_current(rdsiter, &rdataset); + type = rdataset.type; + covers = rdataset.covers; + dns_rdataset_disassociate(&rdataset); + + if (type == dns_rdatatype_rrsig && + (covers == which || which == 0)) + { + result = dns_db_deleterdataset(gdb, node, gversion, + type, covers); + check_result(result, "dns_db_deleterdataset()"); + continue; + } + } + dns_rdatasetiter_destroy(&rdsiter); +} + /*% * Generate NSEC records for the zone and remove NSEC3/NSEC3PARAM records. */ @@ -2139,14 +2178,17 @@ nsecify(void) { } if (dns_name_equal(name, gorigin)) - remove_records(node, dns_rdatatype_nsec3param); + remove_records(node, dns_rdatatype_nsec3param, + ISC_TRUE); if (delegation(name, node, &nsttl)) { zonecut = dns_fixedname_name(&fzonecut); dns_name_copy(name, zonecut, NULL); + remove_sigs(node, 0); if (generateds) add_ds(name, node, nsttl); } + result = dns_dbiterator_next(dbiter); nextnode = NULL; while (result == ISC_R_SUCCESS) { @@ -2164,6 +2206,9 @@ nsecify(void) { (zonecut != NULL && dns_name_issubdomain(nextname, zonecut))) { + remove_sigs(nextnode, 0); + remove_records(nextnode, dns_rdatatype_nsec, + ISC_FALSE); dns_db_detachnode(gdb, &nextnode); result = dns_dbiterator_next(dbiter); continue; @@ -2555,7 +2600,7 @@ nsec3ify(unsigned int hashalg, unsigned int iterations, } if (dns_name_equal(name, gorigin)) - remove_records(node, dns_rdatatype_nsec); + remove_records(node, dns_rdatatype_nsec, ISC_TRUE); result = dns_dbiterator_next(dbiter); nextnode = NULL; @@ -2572,6 +2617,7 @@ nsec3ify(unsigned int hashalg, unsigned int iterations, if (!dns_name_issubdomain(nextname, gorigin) || (zonecut != NULL && dns_name_issubdomain(nextname, zonecut))) { + remove_sigs(nextnode, 0); dns_db_detachnode(gdb, &nextnode); result = dns_dbiterator_next(dbiter); continue; @@ -2579,6 +2625,7 @@ nsec3ify(unsigned int hashalg, unsigned int iterations, if (delegation(nextname, nextnode, &nsttl)) { zonecut = dns_fixedname_name(&fzonecut); dns_name_copy(nextname, zonecut, NULL); + remove_sigs(nextnode, 0); if (generateds) add_ds(nextname, nextnode, nsttl); if (OPTOUT(nsec3flags) && @@ -3011,7 +3058,7 @@ set_nsec3params(isc_boolean_t update_chain, isc_boolean_t set_salt, dns_rdata_nsec3_t nsec3; dns_fixedname_t fname; dns_name_t *hashname; - unsigned char orig_salt[256]; + unsigned char orig_salt[255]; size_t orig_saltlen; dns_hash_t orig_hash; isc_uint16_t orig_iter; diff --git a/contrib/bind9/bin/named/Makefile.in b/contrib/bind9/bin/named/Makefile.in index ea919ae..e3ce3bd 100644 --- a/contrib/bind9/bin/named/Makefile.in +++ b/contrib/bind9/bin/named/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2002 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -21,6 +21,12 @@ top_srcdir = @top_srcdir@ @BIND9_VERSION@ +@BIND9_PRODUCT@ + +@BIND9_DESCRIPTION@ + +@BIND9_SRCID@ + @BIND9_CONFIGARGS@ @BIND9_MAKE_INCLUDES@ @@ -114,6 +120,9 @@ MANOBJS = ${MANPAGES} ${HTMLPAGES} main.@O@: main.c ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \ -DVERSION=\"${VERSION}\" \ + -DPRODUCT=\"${PRODUCT}\" \ + -DDESCRIPTION=\"${DESCRIPTION}\" \ + -DSRCID=\"${SRCID}\" \ -DCONFIGARGS="\"${CONFIGARGS}\"" \ -DNS_LOCALSTATEDIR=\"${localstatedir}\" \ -DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main.c @@ -124,6 +133,7 @@ bind.keys.h: ${top_srcdir}/bind.keys ${srcdir}/bindkeys.pl config.@O@: config.c bind.keys.h ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \ -DVERSION=\"${VERSION}\" \ + -DSRCID=\"${SRCID}\" \ -DNS_LOCALSTATEDIR=\"${localstatedir}\" \ -DNS_SYSCONFDIR=\"${sysconfdir}\" \ -c ${srcdir}/config.c @@ -167,3 +177,6 @@ install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs ${INSTALL_DATA} ${srcdir}/named.conf.5 ${DESTDIR}${mandir}/man5 @DLZ_DRIVER_RULES@ + +named-symtbl.@O@: named-symtbl.c + ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c named-symtbl.c diff --git a/contrib/bind9/bin/named/client.c b/contrib/bind9/bin/named/client.c index 606cc2d..ff4ab69 100644 --- a/contrib/bind9/bin/named/client.c +++ b/contrib/bind9/bin/named/client.c @@ -1394,10 +1394,9 @@ client_request(isc_task_t *task, isc_event_t *event) { INSIST(client->recursionquota == NULL); - INSIST(client->state == - TCP_CLIENT(client) ? - NS_CLIENTSTATE_READING : - NS_CLIENTSTATE_READY); + INSIST(client->state == (TCP_CLIENT(client) ? + NS_CLIENTSTATE_READING : + NS_CLIENTSTATE_READY)); ns_client_requests++; @@ -2408,6 +2407,9 @@ ns_client_replace(ns_client_t *client) { CTRACE("replace"); + REQUIRE(client != NULL); + REQUIRE(client->manager != NULL); + result = ns_clientmgr_createclients(client->manager, 1, client->interface, (TCP_CLIENT(client) ? diff --git a/contrib/bind9/bin/named/config.c b/contrib/bind9/bin/named/config.c index 9e453ad..25ebac4 100644 --- a/contrib/bind9/bin/named/config.c +++ b/contrib/bind9/bin/named/config.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -150,6 +150,7 @@ options {\n\ check-names response ignore;\n\ check-dup-records warn;\n\ check-mx warn;\n\ + check-spf warn;\n\ acache-enable no;\n\ acache-cleaning-interval 60;\n\ max-acache-size 16M;\n\ @@ -639,17 +640,16 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (isc_sockaddr_getport(&addrs[i]) == 0) isc_sockaddr_setport(&addrs[i], port); keys[i] = NULL; - if (!cfg_obj_isstring(key)) { - i++; + i++; /* Increment here so that cleanup on error works. */ + if (!cfg_obj_isstring(key)) continue; - } - keys[i] = isc_mem_get(mctx, sizeof(dns_name_t)); - if (keys[i] == NULL) + keys[i - 1] = isc_mem_get(mctx, sizeof(dns_name_t)); + if (keys[i - 1] == NULL) goto cleanup; - dns_name_init(keys[i], NULL); + dns_name_init(keys[i - 1], NULL); keystr = cfg_obj_asstring(key); - isc_buffer_init(&b, keystr, strlen(keystr)); + isc_buffer_constinit(&b, keystr, strlen(keystr)); isc_buffer_add(&b, strlen(keystr)); dns_fixedname_init(&fname); result = dns_name_fromtext(dns_fixedname_name(&fname), &b, @@ -657,10 +657,9 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (result != ISC_R_SUCCESS) goto cleanup; result = dns_name_dup(dns_fixedname_name(&fname), mctx, - keys[i]); + keys[i - 1]); if (result != ISC_R_SUCCESS) goto cleanup; - i++; } if (pushed != 0) { pushed--; @@ -716,7 +715,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (addrs != NULL) isc_mem_put(mctx, addrs, addrcount * sizeof(isc_sockaddr_t)); if (keys != NULL) { - for (j = 0; j <= i; j++) { + for (j = 0; j < i; j++) { if (keys[j] == NULL) continue; if (dns_name_dynamic(keys[j])) diff --git a/contrib/bind9/bin/named/control.c b/contrib/bind9/bin/named/control.c index ff084fc..2a1a5a8 100644 --- a/contrib/bind9/bin/named/control.c +++ b/contrib/bind9/bin/named/control.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -61,7 +61,7 @@ command_compare(const char *text, const char *command) { isc_result_t ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text) { isccc_sexpr_t *data; - char *command; + char *command = NULL; isc_result_t result; int log_level; #ifdef HAVE_LIBSCF diff --git a/contrib/bind9/bin/named/controlconf.c b/contrib/bind9/bin/named/controlconf.c index daf00d0..73c0f37 100644 --- a/contrib/bind9/bin/named/controlconf.c +++ b/contrib/bind9/bin/named/controlconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -149,7 +149,7 @@ free_listener(controllistener_t *listener) { if (listener->acl != NULL) dns_acl_detach(&listener->acl); - isc_mem_put(listener->mctx, listener, sizeof(*listener)); + isc_mem_putanddetach(&listener->mctx, listener, sizeof(*listener)); } static void @@ -1066,8 +1066,9 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp, result = ISC_R_NOMEMORY; if (result == ISC_R_SUCCESS) { + listener->mctx = NULL; + isc_mem_attach(mctx, &listener->mctx); listener->controls = cp; - listener->mctx = mctx; listener->task = cp->server->task; listener->address = *addr; listener->sock = NULL; diff --git a/contrib/bind9/bin/named/include/named/client.h b/contrib/bind9/bin/named/include/named/client.h index 109d160..e6414d2 100644 --- a/contrib/bind9/bin/named/include/named/client.h +++ b/contrib/bind9/bin/named/include/named/client.h @@ -165,16 +165,17 @@ struct ns_client { #define NS_CLIENT_MAGIC ISC_MAGIC('N','S','C','c') #define NS_CLIENT_VALID(c) ISC_MAGIC_VALID(c, NS_CLIENT_MAGIC) -#define NS_CLIENTATTR_TCP 0x01 -#define NS_CLIENTATTR_RA 0x02 /*%< Client gets recursive service */ -#define NS_CLIENTATTR_PKTINFO 0x04 /*%< pktinfo is valid */ -#define NS_CLIENTATTR_MULTICAST 0x08 /*%< recv'd from multicast */ -#define NS_CLIENTATTR_WANTDNSSEC 0x10 /*%< include dnssec records */ -#define NS_CLIENTATTR_WANTNSID 0x20 /*%< include nameserver ID */ +#define NS_CLIENTATTR_TCP 0x001 +#define NS_CLIENTATTR_RA 0x002 /*%< Client gets recursive service */ +#define NS_CLIENTATTR_PKTINFO 0x004 /*%< pktinfo is valid */ +#define NS_CLIENTATTR_MULTICAST 0x008 /*%< recv'd from multicast */ +#define NS_CLIENTATTR_WANTDNSSEC 0x010 /*%< include dnssec records */ +#define NS_CLIENTATTR_WANTNSID 0x020 /*%< include nameserver ID */ #ifdef ALLOW_FILTER_AAAA_ON_V4 -#define NS_CLIENTATTR_FILTER_AAAA 0x40 /*%< suppress AAAAs */ -#define NS_CLIENTATTR_FILTER_AAAA_RC 0x80 /*%< recursing for A against AAAA */ +#define NS_CLIENTATTR_FILTER_AAAA 0x040 /*%< suppress AAAAs */ +#define NS_CLIENTATTR_FILTER_AAAA_RC 0x080 /*%< recursing for A against AAAA */ #endif +#define NS_CLIENTATTR_WANTAD 0x100 /*%< want AD in response if possible */ extern unsigned int ns_client_requests; diff --git a/contrib/bind9/bin/named/include/named/globals.h b/contrib/bind9/bin/named/include/named/globals.h index 8429316..39307f3 100644 --- a/contrib/bind9/bin/named/include/named/globals.h +++ b/contrib/bind9/bin/named/include/named/globals.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -66,6 +66,9 @@ EXTERN isc_timermgr_t * ns_g_timermgr INIT(NULL); EXTERN isc_socketmgr_t * ns_g_socketmgr INIT(NULL); EXTERN cfg_parser_t * ns_g_parser INIT(NULL); EXTERN const char * ns_g_version INIT(VERSION); +EXTERN const char * ns_g_product INIT(PRODUCT); +EXTERN const char * ns_g_description INIT(DESCRIPTION); +EXTERN const char * ns_g_srcid INIT(SRCID); EXTERN const char * ns_g_configargs INIT(CONFIGARGS); EXTERN in_port_t ns_g_port INIT(0); EXTERN in_port_t lwresd_g_listenport INIT(0); @@ -120,6 +123,7 @@ EXTERN isc_boolean_t ns_g_coreok INIT(ISC_TRUE); EXTERN const char * ns_g_chrootdir INIT(NULL); EXTERN isc_boolean_t ns_g_foreground INIT(ISC_FALSE); EXTERN isc_boolean_t ns_g_logstderr INIT(ISC_FALSE); +EXTERN isc_boolean_t ns_g_nosyslog INIT(ISC_FALSE); EXTERN const char * ns_g_defaultsessionkeyfile INIT(NS_LOCALSTATEDIR "/run/named/" @@ -153,6 +157,7 @@ EXTERN isc_boolean_t ns_g_memstatistics INIT(ISC_FALSE); EXTERN isc_boolean_t ns_g_clienttest INIT(ISC_FALSE); EXTERN isc_boolean_t ns_g_nosoa INIT(ISC_FALSE); EXTERN isc_boolean_t ns_g_noaa INIT(ISC_FALSE); +EXTERN isc_boolean_t ns_g_nonearest INIT(ISC_FALSE); #undef EXTERN #undef INIT diff --git a/contrib/bind9/bin/named/include/named/server.h b/contrib/bind9/bin/named/include/named/server.h index 25aa641..9982e88 100644 --- a/contrib/bind9/bin/named/include/named/server.h +++ b/contrib/bind9/bin/named/include/named/server.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -165,7 +165,9 @@ enum { dns_nsstatscounter_updatefail = 34, dns_nsstatscounter_updatebadprereq = 35, - dns_nsstatscounter_max = 36 + dns_nsstatscounter_rpz_rewrites = 36, + + dns_nsstatscounter_max = 37 }; void diff --git a/contrib/bind9/bin/named/interfacemgr.c b/contrib/bind9/bin/named/interfacemgr.c index d194d2b..15ffe00 100644 --- a/contrib/bind9/bin/named/interfacemgr.c +++ b/contrib/bind9/bin/named/interfacemgr.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -79,11 +79,13 @@ ns_interfacemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr, if (mgr == NULL) return (ISC_R_NOMEMORY); + mgr->mctx = NULL; + isc_mem_attach(mctx, &mgr->mctx); + result = isc_mutex_init(&mgr->lock); if (result != ISC_R_SUCCESS) goto cleanup_mem; - mgr->mctx = mctx; mgr->taskmgr = taskmgr; mgr->socketmgr = socketmgr; mgr->dispatchmgr = dispatchmgr; @@ -115,7 +117,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr, ns_listenlist_detach(&mgr->listenon4); ns_listenlist_detach(&mgr->listenon6); cleanup_mem: - isc_mem_put(mctx, mgr, sizeof(*mgr)); + isc_mem_putanddetach(&mgr->mctx, mgr, sizeof(*mgr)); return (result); } @@ -128,7 +130,7 @@ ns_interfacemgr_destroy(ns_interfacemgr_t *mgr) { clearlistenon(mgr); DESTROYLOCK(&mgr->lock); mgr->magic = 0; - isc_mem_put(mgr->mctx, mgr, sizeof(*mgr)); + isc_mem_putanddetach(&mgr->mctx, mgr, sizeof(*mgr)); } dns_aclenv_t * diff --git a/contrib/bind9/bin/named/log.c b/contrib/bind9/bin/named/log.c index 5d19dcb..a34dea4 100644 --- a/contrib/bind9/bin/named/log.c +++ b/contrib/bind9/bin/named/log.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -201,7 +201,7 @@ isc_result_t ns_log_setdefaultcategory(isc_logconfig_t *lcfg) { isc_result_t result; - if (! ns_g_logstderr) { + if (! ns_g_logstderr && ! ns_g_nosyslog) { result = isc_log_usechannel(lcfg, "default_syslog", ISC_LOGCATEGORY_DEFAULT, NULL); if (result != ISC_R_SUCCESS) diff --git a/contrib/bind9/bin/named/logconf.c b/contrib/bind9/bin/named/logconf.c index 5d17ab0..f02b97f 100644 --- a/contrib/bind9/bin/named/logconf.c +++ b/contrib/bind9/bin/named/logconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -246,14 +246,16 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *lctx) { isc_result_totext(result)); } else (void)isc_stdio_close(fp); - } else { - syslog(LOG_ERR, "isc_file_isplainfile '%s' failed: %s", - dest.file.name, isc_result_totext(result)); - fprintf(stderr, "isc_file_isplainfile '%s' failed: %s", - dest.file.name, isc_result_totext(result)); + goto done; } + if (!ns_g_nosyslog) + syslog(LOG_ERR, "isc_file_isplainfile '%s' failed: %s", + dest.file.name, isc_result_totext(result)); + fprintf(stderr, "isc_file_isplainfile '%s' failed: %s", + dest.file.name, isc_result_totext(result)); } + done: return (result); } diff --git a/contrib/bind9/bin/named/lwresd.c b/contrib/bind9/bin/named/lwresd.c index 11198a4..7ee2196 100644 --- a/contrib/bind9/bin/named/lwresd.c +++ b/contrib/bind9/bin/named/lwresd.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -368,7 +368,7 @@ ns_lwdmanager_create(isc_mem_t *mctx, const cfg_obj_t *lwres, dns_fixedname_init(&fname); name = dns_fixedname_name(&fname); - isc_buffer_init(&namebuf, searchstr, + isc_buffer_constinit(&namebuf, searchstr, strlen(searchstr)); isc_buffer_add(&namebuf, strlen(searchstr)); result = dns_name_fromtext(name, &namebuf, diff --git a/contrib/bind9/bin/named/main.c b/contrib/bind9/bin/named/main.c index 30c6ef9..f6c929e 100644 --- a/contrib/bind9/bin/named/main.c +++ b/contrib/bind9/bin/named/main.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -523,6 +523,10 @@ parse_command_line(int argc, char *argv[]) { maxudp = 512; else if (!strcmp(isc_commandline_argument, "maxudp1460")) maxudp = 1460; + else if (!strcmp(isc_commandline_argument, "nosyslog")) + ns_g_nosyslog = ISC_TRUE; + else if (!strcmp(isc_commandline_argument, "nonearest")) + ns_g_nonearest = ISC_TRUE; else fprintf(stderr, "unknown -T flag '%s\n", isc_commandline_argument); @@ -531,10 +535,16 @@ parse_command_line(int argc, char *argv[]) { ns_g_username = isc_commandline_argument; break; case 'v': - printf("BIND %s\n", ns_g_version); + printf("%s %s", ns_g_product, ns_g_version); + if (*ns_g_description != 0) + printf(" %s", ns_g_description); + printf("\n"); exit(0); case 'V': - printf("BIND %s built with %s\n", ns_g_version, + printf("%s %s", ns_g_product, ns_g_version); + if (*ns_g_description != 0) + printf(" %s", ns_g_description); + printf(" <id:%s> built with %s\n", ns_g_srcid, ns_g_configargs); #ifdef OPENSSL printf("using OpenSSL version: %s\n", @@ -787,8 +797,8 @@ setup(void) { isc_result_totext(result)); isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN, - ISC_LOG_NOTICE, "starting BIND %s%s", ns_g_version, - saved_command_line); + ISC_LOG_NOTICE, "starting %s %s%s", ns_g_product, + ns_g_version, saved_command_line); isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN, ISC_LOG_NOTICE, "built with %s", ns_g_configargs); @@ -1029,9 +1039,9 @@ main(int argc, char *argv[]) { */ strlcat(version, #if defined(NO_VERSION_DATE) || !defined(__DATE__) - "named version: BIND " VERSION, + "named version: BIND " VERSION " <" SRCID ">", #else - "named version: BIND " VERSION " (" __DATE__ ")", + "named version: BIND " VERSION " <" SRCID "> (" __DATE__ ")", #endif sizeof(version)); result = isc_file_progname(*argv, program_name, sizeof(program_name)); diff --git a/contrib/bind9/bin/named/named.conf.5 b/contrib/bind9/bin/named/named.conf.5 index 4356c19..09b147e 100644 --- a/contrib/bind9/bin/named/named.conf.5 +++ b/contrib/bind9/bin/named/named.conf.5 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2004-2011, 2013 Internet Systems Consortium, Inc. ("ISC") .\" .\" Permission to use, copy, modify, and/or distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -187,7 +187,7 @@ options { random\-device \fIquoted_string\fR; recursive\-clients \fIinteger\fR; serial\-query\-rate \fIinteger\fR; - server\-id ( \fIquoted_string\fR | none |; + server\-id ( \fIquoted_string\fR | none ); stacksize \fIsize\fR; statistics\-file \fIquoted_string\fR; statistics\-interval \fIinteger\fR; // not yet implemented @@ -592,5 +592,5 @@ zone \fIstring\fR \fIoptional_class\fR { \fBrndc\fR(8), BIND 9 Administrator Reference Manual. .SH "COPYRIGHT" -Copyright \(co 2004\-2011 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2004\-2011, 2013 Internet Systems Consortium, Inc. ("ISC") .br diff --git a/contrib/bind9/bin/named/named.conf.docbook b/contrib/bind9/bin/named/named.conf.docbook index c6ee1db..2527ac3 100644 --- a/contrib/bind9/bin/named/named.conf.docbook +++ b/contrib/bind9/bin/named/named.conf.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011, 2013 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -44,6 +44,7 @@ <year>2009</year> <year>2010</year> <year>2011</year> + <year>2013</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> </docinfo> @@ -218,7 +219,7 @@ options { random-device <replaceable>quoted_string</replaceable>; recursive-clients <replaceable>integer</replaceable>; serial-query-rate <replaceable>integer</replaceable>; - server-id ( <replaceable>quoted_string</replaceable> | none |; + server-id ( <replaceable>quoted_string</replaceable> | none ); stacksize <replaceable>size</replaceable>; statistics-file <replaceable>quoted_string</replaceable>; statistics-interval <replaceable>integer</replaceable>; // not yet implemented diff --git a/contrib/bind9/bin/named/named.conf.html b/contrib/bind9/bin/named/named.conf.html index 71bd946..a8b35ed 100644 --- a/contrib/bind9/bin/named/named.conf.html +++ b/contrib/bind9/bin/named/named.conf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011, 2013 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -31,7 +31,7 @@ <div class="cmdsynopsis"><p><code class="command">named.conf</code> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543353"></a><h2>DESCRIPTION</h2> +<a name="id2543356"></a><h2>DESCRIPTION</h2> <p><code class="filename">named.conf</code> is the configuration file for <span><strong class="command">named</strong></span>. Statements are enclosed @@ -50,14 +50,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543381"></a><h2>ACL</h2> +<a name="id2543384"></a><h2>ACL</h2> <div class="literallayout"><p><br> acl <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>address_match_element</code></em>; ... };<br> <br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543397"></a><h2>KEY</h2> +<a name="id2543400"></a><h2>KEY</h2> <div class="literallayout"><p><br> key <em class="replaceable"><code>domain_name</code></em> {<br> algorithm <em class="replaceable"><code>string</code></em>;<br> @@ -66,7 +66,7 @@ key <em class="replaceable"><code>domain_name</code></em> {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543416"></a><h2>MASTERS</h2> +<a name="id2543419"></a><h2>MASTERS</h2> <div class="literallayout"><p><br> masters <em class="replaceable"><code>string</code></em> [<span class="optional"> port <em class="replaceable"><code>integer</code></em> </span>] {<br> ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<span class="optional">port <em class="replaceable"><code>integer</code></em></span>] |<br> @@ -75,7 +75,7 @@ masters <em class="replaceable"><code>string</code></em> [<span class="optional" </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543462"></a><h2>SERVER</h2> +<a name="id2543465"></a><h2>SERVER</h2> <div class="literallayout"><p><br> server ( <em class="replaceable"><code>ipv4_address[<span class="optional">/prefixlen</span>]</code></em> | <em class="replaceable"><code>ipv6_address[<span class="optional">/prefixlen</span>]</code></em> ) {<br> bogus <em class="replaceable"><code>boolean</code></em>;<br> @@ -97,7 +97,7 @@ server ( <em class="replaceable"><code>ipv4_address[<span class="optional">/pref </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543530"></a><h2>TRUSTED-KEYS</h2> +<a name="id2543533"></a><h2>TRUSTED-KEYS</h2> <div class="literallayout"><p><br> trusted-keys {<br> <em class="replaceable"><code>domain_name</code></em> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key</code></em>; ... <br> @@ -105,7 +105,7 @@ trusted-keys {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543556"></a><h2>MANAGED-KEYS</h2> +<a name="id2543559"></a><h2>MANAGED-KEYS</h2> <div class="literallayout"><p><br> managed-keys {<br> <em class="replaceable"><code>domain_name</code></em> <code class="constant">initial-key</code> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key</code></em>; ... <br> @@ -113,7 +113,7 @@ managed-keys {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543585"></a><h2>CONTROLS</h2> +<a name="id2543588"></a><h2>CONTROLS</h2> <div class="literallayout"><p><br> controls {<br> inet ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> | * )<br> @@ -125,7 +125,7 @@ controls {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543620"></a><h2>LOGGING</h2> +<a name="id2543623"></a><h2>LOGGING</h2> <div class="literallayout"><p><br> logging {<br> channel <em class="replaceable"><code>string</code></em> {<br> @@ -143,7 +143,7 @@ logging {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543658"></a><h2>LWRES</h2> +<a name="id2543661"></a><h2>LWRES</h2> <div class="literallayout"><p><br> lwres {<br> listen-on [<span class="optional"> port <em class="replaceable"><code>integer</code></em> </span>] {<br> @@ -156,7 +156,7 @@ lwres {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543700"></a><h2>OPTIONS</h2> +<a name="id2543703"></a><h2>OPTIONS</h2> <div class="literallayout"><p><br> options {<br> avoid-v4-udp-ports { <em class="replaceable"><code>port</code></em>; ... };<br> @@ -184,7 +184,7 @@ options {<br> random-device <em class="replaceable"><code>quoted_string</code></em>;<br> recursive-clients <em class="replaceable"><code>integer</code></em>;<br> serial-query-rate <em class="replaceable"><code>integer</code></em>;<br> - server-id ( <em class="replaceable"><code>quoted_string</code></em> | none |;<br> + server-id ( <em class="replaceable"><code>quoted_string</code></em> | none );<br> stacksize <em class="replaceable"><code>size</code></em>;<br> statistics-file <em class="replaceable"><code>quoted_string</code></em>;<br> statistics-interval <em class="replaceable"><code>integer</code></em>; // not yet implemented<br> @@ -360,7 +360,7 @@ options {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2544574"></a><h2>VIEW</h2> +<a name="id2544578"></a><h2>VIEW</h2> <div class="literallayout"><p><br> view <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br> match-clients { <em class="replaceable"><code>address_match_element</code></em>; ... };<br> @@ -523,7 +523,7 @@ view <em class="replaceable"><code>string</code></em> <em class="replaceable"><c </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2545284"></a><h2>ZONE</h2> +<a name="id2545287"></a><h2>ZONE</h2> <div class="literallayout"><p><br> zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br> type ( master | slave | stub | hint |<br> @@ -618,12 +618,12 @@ zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><c </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2545664"></a><h2>FILES</h2> +<a name="id2545667"></a><h2>FILES</h2> <p><code class="filename">/etc/named.conf</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2545675"></a><h2>SEE ALSO</h2> +<a name="id2545678"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>, diff --git a/contrib/bind9/bin/named/query.c b/contrib/bind9/bin/named/query.c index 9e67f2d..8c58984 100644 --- a/contrib/bind9/bin/named/query.c +++ b/contrib/bind9/bin/named/query.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -94,6 +94,10 @@ /*% Want DNSSEC? */ #define WANTDNSSEC(c) (((c)->attributes & \ NS_CLIENTATTR_WANTDNSSEC) != 0) +/*% Want WANTAD? */ +#define WANTAD(c) (((c)->attributes & \ + NS_CLIENTATTR_WANTAD) != 0) + /*% No authority? */ #define NOAUTHORITY(c) (((c)->query.attributes & \ NS_QUERYATTR_NOAUTHORITY) != 0) @@ -651,7 +655,7 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name, dns_dbversion_t **versionp) { isc_result_t result; - dns_acl_t *queryacl; + dns_acl_t *queryacl, *queryonacl; ns_dbversion_t *dbversion; REQUIRE(zone != NULL); @@ -763,6 +767,21 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name, client->query.attributes |= NS_QUERYATTR_QUERYOKVALID; } + /* If and only if we've gotten this far, check allow-query-on too */ + if (result == ISC_R_SUCCESS) { + queryonacl = dns_zone_getqueryonacl(zone); + if (queryonacl == NULL) + queryonacl = client->view->queryonacl; + + result = ns_client_checkaclsilent(client, NULL, + queryonacl, ISC_TRUE); + if ((options & DNS_GETDB_NOLOG) == 0 && + result != ISC_R_SUCCESS) + ns_client_log(client, DNS_LOGCATEGORY_SECURITY, + NS_LOGMODULE_QUERY, ISC_LOG_INFO, + "query-on denied"); + } + dbversion->acl_checked = ISC_TRUE; if (result != ISC_R_SUCCESS) { dbversion->queryok = ISC_FALSE; @@ -831,12 +850,29 @@ query_getzonedb(ns_client_t *client, dns_name_t *name, dns_rdatatype_t qtype, } static void -rpz_log_rewrite(ns_client_t *client, const char *disabled, +rpz_log_rewrite(ns_client_t *client, isc_boolean_t disabled, dns_rpz_policy_t policy, dns_rpz_type_t type, - dns_name_t *rpz_qname) { + dns_zone_t *zone, dns_name_t *rpz_qname) +{ + isc_stats_t *zonestats; char qname_buf[DNS_NAME_FORMATSIZE]; char rpz_qname_buf[DNS_NAME_FORMATSIZE]; + /* + * Count enabled rewrites in the global counter. + * Count both enabled and disabled rewrites for each zone. + */ + if (!disabled && policy != DNS_RPZ_POLICY_PASSTHRU) { + isc_stats_increment(ns_g_server->nsstats, + dns_nsstatscounter_rpz_rewrites); + } + if (zone != NULL) { + zonestats = dns_zone_getrequeststats(zone); + if (zonestats != NULL) + isc_stats_increment(zonestats, + dns_nsstatscounter_rpz_rewrites); + } + if (!isc_log_wouldlog(ns_g_lctx, DNS_RPZ_INFO_LEVEL)) return; @@ -845,7 +881,7 @@ rpz_log_rewrite(ns_client_t *client, const char *disabled, ns_client_log(client, DNS_LOGCATEGORY_RPZ, NS_LOGMODULE_QUERY, DNS_RPZ_INFO_LEVEL, "%srpz %s %s rewrite %s via %s", - disabled, + disabled ? "disabled " : "", dns_rpz_type2str(type), dns_rpz_policy2str(policy), qname_buf, rpz_qname_buf); } @@ -861,6 +897,9 @@ rpz_log_fail(ns_client_t *client, int level, if (!isc_log_wouldlog(ns_g_lctx, level)) return; + /* + * bin/tests/system/rpz/tests.sh looks for "rpz.*failed". + */ dns_name_format(client->query.qname, namebuf1, sizeof(namebuf1)); dns_name_format(name, namebuf2, sizeof(namebuf2)); ns_client_log(client, NS_LOGCATEGORY_QUERY_EERRORS, @@ -3075,6 +3114,14 @@ query_addbestns(ns_client_t *client) { goto cleanup; /* + * If the answer is secure only add NS records if they are secure * when the client may be looking for AD in the response. + */ + if (SECURE(client) && (WANTDNSSEC(client) || WANTAD(client)) && + ((rdataset->trust != dns_trust_secure) || + (sigrdataset != NULL && sigrdataset->trust != dns_trust_secure))) + goto cleanup; + + /* * If the client doesn't want DNSSEC we can discard the sigrdataset * now. */ @@ -4028,6 +4075,8 @@ rpz_rewrite_rrset(ns_client_t *client, dns_rpz_type_t rpz_type, rdatasetp, resuming); switch (result) { case ISC_R_SUCCESS: + case DNS_R_GLUE: + case DNS_R_ZONECUT: result = rpz_rewrite_ip(client, *rdatasetp, rpz_type); break; case DNS_R_EMPTYNAME: @@ -4121,6 +4170,8 @@ rpz_find(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qnamef, dns_name_t *found; isc_result_t result; + REQUIRE(nodep != NULL); + result = rpz_ready(client, zonep, dbp, nodep, rdatasetp); if (result != ISC_R_SUCCESS) { *policyp = DNS_RPZ_POLICY_ERROR; @@ -4204,26 +4255,32 @@ rpz_find(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qnamef, result = DNS_R_CNAME; } break; + case DNS_R_NXRRSET: + policy = DNS_RPZ_POLICY_NODATA; + break; case DNS_R_DNAME: /* * DNAME policy RRs have very few if any uses that are not * better served with simple wildcards. Making the work would * require complications to get the number of labels matched * in the name or the found name to the main DNS_R_DNAME case - * in query_find(). So fall through to treat them as NODATA. + * in query_find(). + */ + dns_rdataset_disassociate(*rdatasetp); + dns_db_detachnode(*dbp, nodep); + /* + * Fall through to treat it as a miss. */ - case DNS_R_NXRRSET: - policy = DNS_RPZ_POLICY_NODATA; - break; case DNS_R_NXDOMAIN: case DNS_R_EMPTYNAME: /* * If we don't get a qname hit, * see if it is worth looking for other types. */ - dns_db_rpz_enabled(*dbp, client->query.rpz_st); + (void)dns_db_rpz_enabled(*dbp, client->query.rpz_st); dns_db_detach(dbp); dns_zone_detach(zonep); + result = DNS_R_NXDOMAIN; policy = DNS_RPZ_POLICY_MISS; break; default: @@ -4231,9 +4288,7 @@ rpz_find(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qnamef, dns_zone_detach(zonep); rpz_log_fail(client, DNS_RPZ_ERROR_LEVEL, rpz_type, qnamef, "", result); - policy = DNS_RPZ_POLICY_ERROR; - result = DNS_R_SERVFAIL; - break; + return (DNS_R_SERVFAIL); } *policyp = policy; @@ -4299,6 +4354,9 @@ rpz_rewrite_name(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname, if (result == ISC_R_SUCCESS) break; INSIST(result == DNS_R_NAMETOOLONG); + /* + * Trim the name until it is not too long. + */ labels = dns_name_countlabels(prefix); if (labels < 2) { rpz_log_fail(client, DNS_RPZ_ERROR_LEVEL, @@ -4322,7 +4380,6 @@ rpz_rewrite_name(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname, rdatasetp, &policy); switch (result) { case DNS_R_NXDOMAIN: - case DNS_R_EMPTYNAME: break; case DNS_R_SERVFAIL: rpz_clean(&zone, &db, &node, rdatasetp); @@ -4345,13 +4402,45 @@ rpz_rewrite_name(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname, (st->m.type == rpz_type && 0 >= dns_name_compare(rpz_qname, st->qname)))) continue; - +#if 0 + /* + * This code would block a customer reported information + * leak of rpz rules by rewriting requests in the + * rpz-ip, rpz-nsip, rpz-nsdname,and rpz-passthru TLDs. + * Without this code, a bad guy could request + * 24.0.3.2.10.rpz-ip. to find the policy rule for + * 10.2.3.0/14. It is an insignificant leak and this + * code is not worth its cost, because the bad guy + * could publish "evil.com A 10.2.3.4" and request + * evil.com to get the same information. + * Keep code with "#if 0" in case customer demand + * is irresistible. + * + * We have the less frequent case of a triggered + * policy. Check that we have not trigger on one + * of the pretend RPZ TLDs. + * This test would make it impossible to rewrite + * names in TLDs that start with "rpz-" should + * ICANN ever allow such TLDs. + */ + labels = dns_name_countlabels(qname); + if (labels >= 2) { + dns_label_t label; + + dns_name_getlabel(qname, labels-2, &label); + if (label.length >= sizeof(DNS_RPZ_PREFIX)-1 && + strncasecmp((const char *)label.base+1, + DNS_RPZ_PREFIX, + sizeof(DNS_RPZ_PREFIX)-1) == 0) + continue; + } +#endif /* * Merely log DNS_RPZ_POLICY_DISABLED hits. */ if (rpz->policy == DNS_RPZ_POLICY_DISABLED) { - rpz_log_rewrite(client, "disabled ", - policy, rpz_type, rpz_qname); + rpz_log_rewrite(client, ISC_TRUE, policy, + rpz_type, zone, rpz_qname); continue; } @@ -4482,7 +4571,7 @@ rpz_rewrite(ns_client_t *client, dns_rdatatype_t qtype, isc_result_t qresult, rdataset = NULL; if ((st->state & DNS_RPZ_DONE_QNAME) == 0) { /* - * Check rules for the query name if this it the first time + * Check rules for the query name if this is the first time * for the current qname, i.e. we've not been recursing. * There is a first time for each name in a CNAME chain. */ @@ -4524,7 +4613,7 @@ rpz_rewrite(ns_client_t *client, dns_rdatatype_t qtype, isc_result_t qresult, dns_fixedname_init(&nsnamef); dns_name_clone(client->query.qname, dns_fixedname_name(&nsnamef)); - while (st->r.label > 1) { + while (st->r.label > client->view->rpz_min_ns_labels) { /* * Get NS rrset for each domain in the current qname. */ @@ -4655,8 +4744,8 @@ cleanup: st->m.policy == DNS_RPZ_POLICY_ERROR) { if (st->m.policy == DNS_RPZ_POLICY_PASSTHRU && result != DNS_R_DELEGATION) - rpz_log_rewrite(client, "", st->m.policy, st->m.type, - st->qname); + rpz_log_rewrite(client, ISC_FALSE, st->m.policy, + st->m.type, st->m.zone, st->qname); rpz_match_clear(st); } if (st->m.policy == DNS_RPZ_POLICY_ERROR) { @@ -4671,7 +4760,7 @@ cleanup: } /* - * See if response policy zone rewriting is allowed a lack of interest + * See if response policy zone rewriting is allowed by a lack of interest * by the client in DNSSEC or a lack of signatures. */ static isc_boolean_t @@ -4766,7 +4855,8 @@ rpz_add_cname(ns_client_t *client, dns_rpz_st_t *st, fname, dns_trust_authanswer, st->m.ttl); if (result != ISC_R_SUCCESS) return (result); - rpz_log_rewrite(client, "", st->m.policy, st->m.type, st->qname); + rpz_log_rewrite(client, ISC_FALSE, st->m.policy, + st->m.type, st->m.zone, st->qname); ns_client_qnamereplace(client, fname); /* * Turn off DNSSEC because the results of a @@ -5703,9 +5793,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) client->attributes &= ~(NS_CLIENTATTR_WANTDNSSEC | DNS_MESSAGEFLAG_AD); query_putrdataset(client, &sigrdataset); + rpz_st->q.is_zone = is_zone; is_zone = ISC_TRUE; - rpz_log_rewrite(client, "", rpz_st->m.policy, - rpz_st->m.type, rpz_st->qname); + rpz_log_rewrite(client, ISC_FALSE, rpz_st->m.policy, + rpz_st->m.type, zone, rpz_st->qname); } } @@ -6080,6 +6171,15 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) rdataset = NULL; sigrdataset = NULL; type = qtype = dns_rdatatype_a; + rpz_st = client->query.rpz_st; + if (rpz_st != NULL) { + /* + * Arrange for RPZ rewriting of any A records. + */ + if ((rpz_st->state & DNS_RPZ_REWRITTEN) != 0) + is_zone = rpz_st->q.is_zone; + rpz_st_clear(client); + } dns64 = ISC_TRUE; goto db_find; } @@ -6108,7 +6208,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * closest provable encloser. */ if (dns_rdataset_isassociated(rdataset) && - !dns_name_equal(qname, found)) { + !dns_name_equal(qname, found) && + !(ns_g_nonearest && + qtype != dns_rdatatype_ds)) + { unsigned int count; unsigned int skip; @@ -6338,6 +6441,15 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) sigrdataset = NULL; fname = NULL; type = qtype = dns_rdatatype_a; + rpz_st = client->query.rpz_st; + if (rpz_st != NULL) { + /* + * Arrange for RPZ rewriting of any A records. + */ + if ((rpz_st->state & DNS_RPZ_REWRITTEN) != 0) + is_zone = rpz_st->q.is_zone; + rpz_st_clear(client); + } dns64 = ISC_TRUE; goto db_find; } @@ -6838,6 +6950,15 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) rdataset = NULL; sigrdataset = NULL; type = qtype = dns_rdatatype_a; + rpz_st = client->query.rpz_st; + if (rpz_st != NULL) { + /* + * Arrange for RPZ rewriting of any A records. + */ + if ((rpz_st->state & DNS_RPZ_REWRITTEN) != 0) + is_zone = rpz_st->q.is_zone; + rpz_st_clear(client); + } dns64_exclude = dns64 = ISC_TRUE; goto db_find; } @@ -7124,7 +7245,6 @@ ns_query_start(ns_client_t *client) { dns_rdatatype_t qtype; unsigned int saved_extflags = client->extflags; unsigned int saved_flags = client->message->flags; - isc_boolean_t want_ad; CTRACE("ns_query_start"); @@ -7286,13 +7406,11 @@ ns_query_start(ns_client_t *client) { client->query.attributes &= ~NS_QUERYATTR_SECURE; /* - * Set 'want_ad' if the client has set AD in the query. + * Set NS_CLIENTATTR_WANTDNSSEC if the client has set AD in the query. * This allows AD to be returned on queries without DO set. */ if ((message->flags & DNS_MESSAGEFLAG_AD) != 0) - want_ad = ISC_TRUE; - else - want_ad = ISC_FALSE; + client->attributes |= NS_CLIENTATTR_WANTAD; /* * This is an ordinary query. @@ -7317,7 +7435,7 @@ ns_query_start(ns_client_t *client) { * Set AD. We must clear it if we add non-validated data to a * response. */ - if (WANTDNSSEC(client) || want_ad) + if (WANTDNSSEC(client) || WANTAD(client)) message->flags |= DNS_MESSAGEFLAG_AD; qclient = NULL; diff --git a/contrib/bind9/bin/named/server.c b/contrib/bind9/bin/named/server.c index c3eb1ea..05c68b9 100644 --- a/contrib/bind9/bin/named/server.c +++ b/contrib/bind9/bin/named/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -159,7 +159,7 @@ * a cache. Only effective when a finite max-cache-size is specified. * This is currently defined to be 8MB. */ -#define MAX_ADB_SIZE_FOR_CACHESHARE 8388608 +#define MAX_ADB_SIZE_FOR_CACHESHARE 8388608U struct ns_dispatch { isc_sockaddr_t addr; @@ -242,6 +242,72 @@ static const struct { { "31.172.IN-ADDR.ARPA", ISC_TRUE }, { "168.192.IN-ADDR.ARPA", ISC_TRUE }, + /* RFC 6598 */ + { "64.100.IN-ADDR.ARPA", ISC_FALSE }, + { "65.100.IN-ADDR.ARPA", ISC_FALSE }, + { "66.100.IN-ADDR.ARPA", ISC_FALSE }, + { "67.100.IN-ADDR.ARPA", ISC_FALSE }, + { "68.100.IN-ADDR.ARPA", ISC_FALSE }, + { "69.100.IN-ADDR.ARPA", ISC_FALSE }, + { "70.100.IN-ADDR.ARPA", ISC_FALSE }, + { "71.100.IN-ADDR.ARPA", ISC_FALSE }, + { "72.100.IN-ADDR.ARPA", ISC_FALSE }, + { "73.100.IN-ADDR.ARPA", ISC_FALSE }, + { "74.100.IN-ADDR.ARPA", ISC_FALSE }, + { "75.100.IN-ADDR.ARPA", ISC_FALSE }, + { "76.100.IN-ADDR.ARPA", ISC_FALSE }, + { "77.100.IN-ADDR.ARPA", ISC_FALSE }, + { "78.100.IN-ADDR.ARPA", ISC_FALSE }, + { "79.100.IN-ADDR.ARPA", ISC_FALSE }, + { "80.100.IN-ADDR.ARPA", ISC_FALSE }, + { "81.100.IN-ADDR.ARPA", ISC_FALSE }, + { "82.100.IN-ADDR.ARPA", ISC_FALSE }, + { "83.100.IN-ADDR.ARPA", ISC_FALSE }, + { "84.100.IN-ADDR.ARPA", ISC_FALSE }, + { "85.100.IN-ADDR.ARPA", ISC_FALSE }, + { "86.100.IN-ADDR.ARPA", ISC_FALSE }, + { "87.100.IN-ADDR.ARPA", ISC_FALSE }, + { "88.100.IN-ADDR.ARPA", ISC_FALSE }, + { "89.100.IN-ADDR.ARPA", ISC_FALSE }, + { "90.100.IN-ADDR.ARPA", ISC_FALSE }, + { "91.100.IN-ADDR.ARPA", ISC_FALSE }, + { "92.100.IN-ADDR.ARPA", ISC_FALSE }, + { "93.100.IN-ADDR.ARPA", ISC_FALSE }, + { "94.100.IN-ADDR.ARPA", ISC_FALSE }, + { "95.100.IN-ADDR.ARPA", ISC_FALSE }, + { "96.100.IN-ADDR.ARPA", ISC_FALSE }, + { "97.100.IN-ADDR.ARPA", ISC_FALSE }, + { "98.100.IN-ADDR.ARPA", ISC_FALSE }, + { "99.100.IN-ADDR.ARPA", ISC_FALSE }, + { "100.100.IN-ADDR.ARPA", ISC_FALSE }, + { "101.100.IN-ADDR.ARPA", ISC_FALSE }, + { "102.100.IN-ADDR.ARPA", ISC_FALSE }, + { "103.100.IN-ADDR.ARPA", ISC_FALSE }, + { "104.100.IN-ADDR.ARPA", ISC_FALSE }, + { "105.100.IN-ADDR.ARPA", ISC_FALSE }, + { "106.100.IN-ADDR.ARPA", ISC_FALSE }, + { "107.100.IN-ADDR.ARPA", ISC_FALSE }, + { "108.100.IN-ADDR.ARPA", ISC_FALSE }, + { "109.100.IN-ADDR.ARPA", ISC_FALSE }, + { "110.100.IN-ADDR.ARPA", ISC_FALSE }, + { "111.100.IN-ADDR.ARPA", ISC_FALSE }, + { "112.100.IN-ADDR.ARPA", ISC_FALSE }, + { "113.100.IN-ADDR.ARPA", ISC_FALSE }, + { "114.100.IN-ADDR.ARPA", ISC_FALSE }, + { "115.100.IN-ADDR.ARPA", ISC_FALSE }, + { "116.100.IN-ADDR.ARPA", ISC_FALSE }, + { "117.100.IN-ADDR.ARPA", ISC_FALSE }, + { "118.100.IN-ADDR.ARPA", ISC_FALSE }, + { "119.100.IN-ADDR.ARPA", ISC_FALSE }, + { "120.100.IN-ADDR.ARPA", ISC_FALSE }, + { "121.100.IN-ADDR.ARPA", ISC_FALSE }, + { "122.100.IN-ADDR.ARPA", ISC_FALSE }, + { "123.100.IN-ADDR.ARPA", ISC_FALSE }, + { "124.100.IN-ADDR.ARPA", ISC_FALSE }, + { "125.100.IN-ADDR.ARPA", ISC_FALSE }, + { "126.100.IN-ADDR.ARPA", ISC_FALSE }, + { "127.100.IN-ADDR.ARPA", ISC_FALSE }, + /* RFC 5735 and RFC 5737 */ { "0.IN-ADDR.ARPA", ISC_FALSE }, /* THIS NETWORK */ { "127.IN-ADDR.ARPA", ISC_FALSE }, /* LOOPBACK */ @@ -447,7 +513,7 @@ configure_view_nametable(const cfg_obj_t *vconfig, const cfg_obj_t *config, element = cfg_list_next(element)) { nameobj = cfg_listelt_value(element); str = cfg_obj_asstring(nameobj); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); /* @@ -564,7 +630,7 @@ dstkey_fromconfig(const cfg_obj_t *vconfig, const cfg_obj_t *key, keystruct.common.rdtype, &keystruct, &rrdatabuf)); dns_fixedname_init(&fkeyname); - isc_buffer_init(&namebuf, keynamestr, strlen(keynamestr)); + isc_buffer_constinit(&namebuf, keynamestr, strlen(keynamestr)); isc_buffer_add(&namebuf, strlen(keynamestr)); CHECK(dns_name_fromtext(keyname, &namebuf, dns_rootname, 0, NULL)); CHECK(dst_key_fromdns(keyname, viewclass, &rrdatabuf, @@ -798,7 +864,17 @@ configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig, */ obj = NULL; (void)ns_config_get(maps, "managed-keys-directory", &obj); - directory = obj != NULL ? cfg_obj_asstring(obj) : NULL; + directory = (obj != NULL ? cfg_obj_asstring(obj) : NULL); + if (directory != NULL) + result = isc_file_isdirectory(directory); + if (result != ISC_R_SUCCESS) { + isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_SECURITY, + NS_LOGMODULE_SERVER, ISC_LOG_ERROR, + "invalid managed-keys-directory %s: %s", + directory, isc_result_totext(result)); + goto cleanup; + + } CHECK(add_keydata_zone(view, directory, ns_g_mctx)); cleanup: @@ -824,7 +900,7 @@ mustbesecure(const cfg_obj_t *mbs, dns_resolver_t *resolver) { { obj = cfg_listelt_value(element); str = cfg_obj_asstring(cfg_tuple_get(obj, "name")); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); value = cfg_obj_asboolean(cfg_tuple_get(obj, "value")); @@ -977,7 +1053,7 @@ configure_order(dns_order_t *order, const cfg_obj_t *ent) { else str = "*"; addroot = ISC_TF(strcmp(str, "*") == 0); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); dns_fixedname_init(&fixed); result = dns_name_fromtext(dns_fixedname_name(&fixed), &b, @@ -1163,7 +1239,7 @@ disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) { dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); str = cfg_obj_asstring(cfg_tuple_get(disabled, "name")); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); @@ -1215,7 +1291,7 @@ on_disable_list(const cfg_obj_t *disablelist, dns_name_t *zonename) { { value = cfg_listelt_value(element); str = cfg_obj_asstring(value); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); @@ -1399,7 +1475,7 @@ dns64_reverse(dns_view_t *view, isc_mem_t *mctx, isc_netaddr_t *na, dns64_dbtype[3] = contact; dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); - isc_buffer_init(&b, reverse, strlen(reverse)); + isc_buffer_constinit(&b, reverse, strlen(reverse)); isc_buffer_add(&b, strlen(reverse)); CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); CHECK(dns_zone_create(&zone, mctx)); @@ -1430,39 +1506,57 @@ cleanup: } static isc_result_t +configure_rpz_name(dns_view_t *view, const cfg_obj_t *obj, dns_name_t *name, + const char *str, const char *msg) +{ + isc_result_t result; + + result = dns_name_fromstring(name, str, DNS_NAME_DOWNCASE, view->mctx); + if (result != ISC_R_SUCCESS) + cfg_obj_log(obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "invalid %s '%s'", msg, str); + return (result); +} + +static isc_result_t +configure_rpz_name2(dns_view_t *view, const cfg_obj_t *obj, dns_name_t *name, + const char *str, const dns_name_t *origin) +{ + isc_result_t result; + + result = dns_name_fromstring2(name, str, origin, DNS_NAME_DOWNCASE, + view->mctx); + if (result != ISC_R_SUCCESS) + cfg_obj_log(obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "invalid zone '%s'", str); + return (result); +} + +static isc_result_t configure_rpz(dns_view_t *view, const cfg_listelt_t *element, isc_boolean_t recursive_only_def, dns_ttl_t ttl_def) { - const cfg_obj_t *rpz_obj, *policy_obj, *obj; + const cfg_obj_t *rpz_obj, *obj; const char *str; dns_rpz_zone_t *old, *new; - dns_zone_t *zone = NULL; isc_result_t result; + rpz_obj = cfg_listelt_value(element); + new = isc_mem_get(view->mctx, sizeof(*new)); if (new == NULL) { - result = ISC_R_NOMEMORY; - goto cleanup; + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "no memory for response policy zones"); + return (ISC_R_NOMEMORY); } memset(new, 0, sizeof(*new)); dns_name_init(&new->origin, NULL); dns_name_init(&new->nsdname, NULL); - dns_name_init(&new->cname, NULL); dns_name_init(&new->passthru, NULL); + dns_name_init(&new->cname, NULL); ISC_LIST_INITANDAPPEND(view->rpz_zones, new, link); - rpz_obj = cfg_listelt_value(element); - policy_obj = cfg_tuple_get(rpz_obj, "policy"); - if (cfg_obj_isvoid(policy_obj)) { - new->policy = DNS_RPZ_POLICY_GIVEN; - } else { - str = cfg_obj_asstring(cfg_tuple_get(policy_obj, - "policy name")); - new->policy = dns_rpz_str2policy(str); - INSIST(new->policy != DNS_RPZ_POLICY_ERROR); - } - obj = cfg_tuple_get(rpz_obj, "recursive-only"); if (cfg_obj_isvoid(obj)) { new->recursive_only = recursive_only_def; @@ -1480,47 +1574,14 @@ configure_rpz(dns_view_t *view, const cfg_listelt_t *element, } str = cfg_obj_asstring(cfg_tuple_get(rpz_obj, "zone name")); - result = dns_name_fromstring(&new->origin, str, DNS_NAME_DOWNCASE, - view->mctx); - if (result != ISC_R_SUCCESS) { - cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, - "invalid zone '%s'", str); - goto cleanup; - } - - result = dns_name_fromstring2(&new->nsdname, DNS_RPZ_NSDNAME_ZONE, - &new->origin, DNS_NAME_DOWNCASE, - view->mctx); - if (result != ISC_R_SUCCESS) { - cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, - "invalid zone '%s'", str); - goto cleanup; - } - - result = dns_name_fromstring(&new->passthru, DNS_RPZ_PASSTHRU_ZONE, - DNS_NAME_DOWNCASE, view->mctx); - if (result != ISC_R_SUCCESS) { - cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, - "invalid zone '%s'", str); - goto cleanup; - } - - result = dns_view_findzone(view, &new->origin, &zone); - if (result != ISC_R_SUCCESS) { - cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, - "unknown zone '%s'", str); - goto cleanup; - } - if (dns_zone_gettype(zone) != dns_zone_master && - dns_zone_gettype(zone) != dns_zone_slave) { + result = configure_rpz_name(view, rpz_obj, &new->origin, str, "zone"); + if (result != ISC_R_SUCCESS) + return (result); + if (dns_name_equal(&new->origin, dns_rootname)) { cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, - "zone '%s' is neither master nor slave", str); - dns_zone_detach(&zone); - result = DNS_R_NOTMASTER; - goto cleanup; + "invalid zone name '%s'", str); + return (DNS_R_EMPTYLABEL); } - dns_zone_detach(&zone); - for (old = ISC_LIST_HEAD(view->rpz_zones); old != new; old = ISC_LIST_NEXT(old, link)) { @@ -1529,26 +1590,37 @@ configure_rpz(dns_view_t *view, const cfg_listelt_t *element, cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, "duplicate '%s'", str); result = DNS_R_DUPLICATE; - goto cleanup; + return (result); } } - if (new->policy == DNS_RPZ_POLICY_CNAME) { - str = cfg_obj_asstring(cfg_tuple_get(policy_obj, "cname")); - result = dns_name_fromstring(&new->cname, str, - DNS_NAME_DOWNCASE, view->mctx); - if (result != ISC_R_SUCCESS) { - cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, - "invalid cname '%s'", str); - goto cleanup; + result = configure_rpz_name2(view, rpz_obj, &new->nsdname, + DNS_RPZ_NSDNAME_ZONE, &new->origin); + if (result != ISC_R_SUCCESS) + return (result); + + result = configure_rpz_name(view, rpz_obj, &new->passthru, + DNS_RPZ_PASSTHRU_ZONE, "zone"); + if (result != ISC_R_SUCCESS) + return (result); + + obj = cfg_tuple_get(rpz_obj, "policy"); + if (cfg_obj_isvoid(obj)) { + new->policy = DNS_RPZ_POLICY_GIVEN; + } else { + str = cfg_obj_asstring(cfg_tuple_get(obj, "policy name")); + new->policy = dns_rpz_str2policy(str); + INSIST(new->policy != DNS_RPZ_POLICY_ERROR); + if (new->policy == DNS_RPZ_POLICY_CNAME) { + str = cfg_obj_asstring(cfg_tuple_get(obj, "cname")); + result = configure_rpz_name(view, rpz_obj, &new->cname, + str, "cname"); + if (result != ISC_R_SUCCESS) + return (result); } } return (ISC_R_SUCCESS); - - cleanup: - dns_rpz_view_destroy(view); - return (result); } /* @@ -1617,6 +1689,7 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, dns_acl_t *clients = NULL, *mapped = NULL, *excluded = NULL; unsigned int query_timeout; struct cfg_context *nzctx; + dns_rpz_zone_t *rpz; REQUIRE(DNS_VIEW_VALID(view)); @@ -1715,6 +1788,53 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, } /* + * Make the list of response policy zone names for a view that + * is used for real lookups and so cares about hints. + */ + obj = NULL; + if (view->rdclass == dns_rdataclass_in && need_hints && + ns_config_get(maps, "response-policy", &obj) == ISC_R_SUCCESS) { + const cfg_obj_t *rpz_obj; + isc_boolean_t recursive_only_def; + dns_ttl_t ttl_def; + + rpz_obj = cfg_tuple_get(obj, "recursive-only"); + if (!cfg_obj_isvoid(rpz_obj) && + !cfg_obj_asboolean(rpz_obj)) + recursive_only_def = ISC_FALSE; + else + recursive_only_def = ISC_TRUE; + + rpz_obj = cfg_tuple_get(obj, "break-dnssec"); + if (!cfg_obj_isvoid(rpz_obj) && + cfg_obj_asboolean(rpz_obj)) + view->rpz_break_dnssec = ISC_TRUE; + else + view->rpz_break_dnssec = ISC_FALSE; + + rpz_obj = cfg_tuple_get(obj, "max-policy-ttl"); + if (cfg_obj_isuint32(rpz_obj)) + ttl_def = cfg_obj_asuint32(rpz_obj); + else + ttl_def = DNS_RPZ_MAX_TTL_DEFAULT; + + rpz_obj = cfg_tuple_get(obj, "min-ns-dots"); + if (cfg_obj_isuint32(rpz_obj)) + view->rpz_min_ns_labels = cfg_obj_asuint32(rpz_obj) + 1; + else + view->rpz_min_ns_labels = 2; + + element = cfg_list_first(cfg_tuple_get(obj, "zone list")); + while (element != NULL) { + result = configure_rpz(view, element, + recursive_only_def, ttl_def); + if (result != ISC_R_SUCCESS) + goto cleanup; + element = cfg_list_next(element); + } + } + + /* * Configure the zones. */ zonelist = NULL; @@ -1735,6 +1855,22 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, actx, ISC_FALSE)); } + for (rpz = ISC_LIST_HEAD(view->rpz_zones); + rpz != NULL; + rpz = ISC_LIST_NEXT(rpz, link)) + { + if (!rpz->defined) { + char namebuf[DNS_NAME_FORMATSIZE]; + + dns_name_format(&rpz->origin, namebuf, sizeof(namebuf)); + cfg_obj_log(obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "'%s' is not a master or slave zone", + namebuf); + result = ISC_R_NOTFOUND; + goto cleanup; + } + } + /* * If we're allowing added zones, then load zone configuration * from the newzone file for zones that were added during previous @@ -2161,9 +2297,9 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, * MAX_ADB_SIZE_FOR_CACHESHARE when the cache is shared. */ max_adb_size = 0; - if (max_cache_size != 0) { + if (max_cache_size != 0U) { max_adb_size = max_cache_size / 8; - if (max_adb_size == 0) + if (max_adb_size == 0U) max_adb_size = 1; /* Force minimum. */ if (view != nsc->primaryview && max_adb_size > MAX_ADB_SIZE_FOR_CACHESHARE) { @@ -2638,7 +2774,7 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, obj = cfg_listelt_value(element); str = cfg_obj_asstring(cfg_tuple_get(obj, "trust-anchor")); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); dlv = dns_fixedname_name(&view->dlv_fixed); CHECK(dns_name_fromtext(dlv, &b, dns_rootname, @@ -2691,7 +2827,7 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, element = cfg_list_next(element)) { exclude = cfg_listelt_value(element); str = cfg_obj_asstring(exclude); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); @@ -2745,7 +2881,7 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, result = ns_config_get(maps, "empty-server", &obj); if (result == ISC_R_SUCCESS) { str = cfg_obj_asstring(obj); - isc_buffer_init(&buffer, str, strlen(str)); + isc_buffer_constinit(&buffer, str, strlen(str)); isc_buffer_add(&buffer, strlen(str)); CHECK(dns_name_fromtext(name, &buffer, dns_rootname, 0, NULL)); @@ -2760,7 +2896,7 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, result = ns_config_get(maps, "empty-contact", &obj); if (result == ISC_R_SUCCESS) { str = cfg_obj_asstring(obj); - isc_buffer_init(&buffer, str, strlen(str)); + isc_buffer_constinit(&buffer, str, strlen(str)); isc_buffer_add(&buffer, strlen(str)); CHECK(dns_name_fromtext(name, &buffer, dns_rootname, 0, NULL)); @@ -2784,7 +2920,7 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, dns_forwarders_t *forwarders = NULL; dns_view_t *pview = NULL; - isc_buffer_init(&buffer, empty, strlen(empty)); + isc_buffer_constinit(&buffer, empty, strlen(empty)); isc_buffer_add(&buffer, strlen(empty)); /* * Look for zone on drop list. @@ -2800,7 +2936,6 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, */ (void)dns_view_findzone(view, name, &zone); if (zone != NULL) { - CHECK(setquerystats(zone, mctx, zonestats_on)); dns_zone_detach(&zone); continue; } @@ -2886,49 +3021,6 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, } } - /* - * Make the list of response policy zone names for views that - * are used for real lookups and so care about hints. - */ - obj = NULL; - if (view->rdclass == dns_rdataclass_in && need_hints && - ns_config_get(maps, "response-policy", &obj) == ISC_R_SUCCESS) { - const cfg_obj_t *recursive_only_obj; - const cfg_obj_t *break_dnssec_obj, *ttl_obj; - isc_boolean_t recursive_only_def; - dns_ttl_t ttl_def; - - recursive_only_obj = cfg_tuple_get(obj, "recursive-only"); - if (!cfg_obj_isvoid(recursive_only_obj) && - !cfg_obj_asboolean(recursive_only_obj)) - recursive_only_def = ISC_FALSE; - else - recursive_only_def = ISC_TRUE; - - break_dnssec_obj = cfg_tuple_get(obj, "break-dnssec"); - if (!cfg_obj_isvoid(break_dnssec_obj) && - cfg_obj_asboolean(break_dnssec_obj)) - view->rpz_break_dnssec = ISC_TRUE; - else - view->rpz_break_dnssec = ISC_FALSE; - - ttl_obj = cfg_tuple_get(obj, "max-policy-ttl"); - if (cfg_obj_isuint32(ttl_obj)) - ttl_def = cfg_obj_asuint32(ttl_obj); - else - ttl_def = DNS_RPZ_MAX_TTL_DEFAULT; - - for (element = cfg_list_first(cfg_tuple_get(obj, "zone list")); - element != NULL; - element = cfg_list_next(element)) { - result = configure_rpz(view, element, - recursive_only_def, ttl_def); - if (result != ISC_R_SUCCESS) - goto cleanup; - dns_rpz_set_need(ISC_TRUE); - } - } - result = ISC_R_SUCCESS; cleanup: @@ -3028,7 +3120,7 @@ configure_alternates(const cfg_obj_t *config, dns_view_t *view, isc_buffer_t buffer; in_port_t myport = port; - isc_buffer_init(&buffer, str, strlen(str)); + isc_buffer_constinit(&buffer, str, strlen(str)); isc_buffer_add(&buffer, strlen(str)); dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); @@ -3280,6 +3372,8 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, const char *zname; dns_rdataclass_t zclass; const char *ztypestr; + isc_boolean_t is_rpz; + dns_rpz_zone_t *rpz; options = NULL; (void)cfg_map_get(config, "options", &options); @@ -3290,7 +3384,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, * Get the zone origin as a dns_name_t. */ zname = cfg_obj_asstring(cfg_tuple_get(zconfig, "name")); - isc_buffer_init(&buffer, zname, strlen(zname)); + isc_buffer_constinit(&buffer, zname, strlen(zname)); isc_buffer_add(&buffer, strlen(zname)); dns_fixedname_init(&fixorigin); CHECK(dns_name_fromtext(dns_fixedname_name(&fixorigin), @@ -3409,6 +3503,21 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, INSIST(dupzone == NULL); /* + * Note whether this is a response policy zone. + */ + is_rpz = ISC_FALSE; + for (rpz = ISC_LIST_HEAD(view->rpz_zones); + rpz != NULL; + rpz = ISC_LIST_NEXT(rpz, link)) + { + if (dns_name_equal(&rpz->origin, origin)) { + is_rpz = ISC_TRUE; + rpz->defined = ISC_TRUE; + break; + } + } + + /* * See if we can reuse an existing zone. This is * only possible if all of these are true: * - The zone's view exists @@ -3416,6 +3525,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, * - The zone is compatible with the config * options (e.g., an existing master zone cannot * be reused if the options specify a slave zone) + * - The zone was and is or was not and is not a policy zone */ result = dns_viewlist_find(&ns_g_server->viewlist, view->name, view->rdclass, @@ -3429,6 +3539,9 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, if (zone != NULL && !ns_zone_reusable(zone, zconfig)) dns_zone_detach(&zone); + if (zone != NULL && is_rpz != dns_zone_get_rpz(zone)) + dns_zone_detach(&zone); + if (zone != NULL) { /* * We found a reusable zone. Make it use the @@ -3451,6 +3564,19 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig, dns_zone_setstats(zone, ns_g_server->zonestats); } + if (is_rpz) { + result = dns_zone_rpz_enable(zone); + if (result != ISC_R_SUCCESS) { + isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, + NS_LOGMODULE_SERVER, ISC_LOG_ERROR, + "zone '%s': incompatible" + " masterfile-format or database" + " for a response policy zone", + zname); + goto cleanup; + } + } + /* * If the zone contains a 'forwarders' statement, configure * selective forwarding. @@ -4126,7 +4252,7 @@ configure_session_key(const cfg_obj_t **maps, ns_server_t *server, INSIST(result == ISC_R_SUCCESS); keynamestr = cfg_obj_asstring(obj); dns_fixedname_init(&fname); - isc_buffer_init(&buffer, keynamestr, strlen(keynamestr)); + isc_buffer_constinit(&buffer, keynamestr, strlen(keynamestr)); isc_buffer_add(&buffer, strlen(keynamestr)); keyname = dns_fixedname_name(&fname); result = dns_name_fromtext(keyname, &buffer, dns_rootname, 0, NULL); @@ -5858,6 +5984,7 @@ zone_from_args(ns_server_t *server, char *args, dns_zone_t **zonep, dns_rdataclass_t rdclass; REQUIRE(zonep != NULL && *zonep == NULL); + REQUIRE(zonename == NULL || *zonename == NULL); input = args; @@ -5870,7 +5997,7 @@ zone_from_args(ns_server_t *server, char *args, dns_zone_t **zonep, zonetxt = next_token(&input, " \t"); if (zonetxt == NULL) return (ISC_R_SUCCESS); - if (zonename) + if (zonename != NULL) *zonename = zonetxt; /* Look for the optional class name. */ @@ -5880,7 +6007,7 @@ zone_from_args(ns_server_t *server, char *args, dns_zone_t **zonep, viewtxt = next_token(&input, " \t"); } - isc_buffer_init(&buf, zonetxt, strlen(zonetxt)); + isc_buffer_constinit(&buf, zonetxt, strlen(zonetxt)); isc_buffer_add(&buf, strlen(zonetxt)); dns_fixedname_init(&name); result = dns_name_fromtext(dns_fixedname_name(&name), @@ -6788,7 +6915,7 @@ ns_server_flushname(ns_server_t *server, char *args) { if (target == NULL) return (ISC_R_UNEXPECTEDEND); - isc_buffer_init(&b, target, strlen(target)); + isc_buffer_constinit(&b, target, strlen(target)); isc_buffer_add(&b, strlen(target)); dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); @@ -7342,7 +7469,7 @@ ns_server_add_zone(ns_server_t *server, char *args) { CHECK(cfg_map_get(config, "addzone", &parms)); zonename = cfg_obj_asstring(cfg_tuple_get(parms, "name")); - isc_buffer_init(&buf, zonename, strlen(zonename)); + isc_buffer_constinit(&buf, zonename, strlen(zonename)); isc_buffer_add(&buf, strlen(zonename)); dns_name_init(&dnsname, NULL); isc_buffer_allocate(server->mctx, &nbuf, 256); @@ -7406,7 +7533,8 @@ ns_server_add_zone(ns_server_t *server, char *args) { CHECK(isc_stdio_open(view->new_zone_file, "a", &fp)); /* Mark view unfrozen so that zone can be added */ - isc_task_beginexclusive(server->task); + result = isc_task_beginexclusive(server->task); + RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_view_thaw(view); result = configure_zone(cfg->config, parms, vconfig, server->mctx, view, cfg->actx, ISC_FALSE); @@ -7515,8 +7643,7 @@ ns_server_del_zone(ns_server_t *server, char *args) { /* Parse parameters */ CHECK(zone_from_args(server, args, &zone, &zonename)); - if (result != ISC_R_SUCCESS) - return (result); + if (zone == NULL) { result = ISC_R_UNEXPECTEDEND; goto cleanup; @@ -7531,8 +7658,8 @@ ns_server_del_zone(ns_server_t *server, char *args) { goto cleanup; } - if (zonename != NULL) - znamelen = strlen(zonename); + INSIST(zonename != NULL); + znamelen = strlen(zonename); /* Dig out configuration for this zone */ view = dns_zone_getview(zone); diff --git a/contrib/bind9/bin/named/statschannel.c b/contrib/bind9/bin/named/statschannel.c index 6ea0be5..8d30b45 100644 --- a/contrib/bind9/bin/named/statschannel.c +++ b/contrib/bind9/bin/named/statschannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2008-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -202,6 +202,8 @@ init_desc(void) { SET_NSSTATDESC(updatebadprereq, "updates rejected due to prerequisite failure", "UpdateBadPrereq"); + SET_NSSTATDESC(rpz_rewrites, "response policy zone rewrites", + "RPZRewrites"); INSIST(i == dns_nsstatscounter_max); /* Initialize resolver statistics */ @@ -877,11 +879,11 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { TRY0(xmlTextWriterEndElement(writer)); /* views */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "socketmgr")); - isc_socketmgr_renderxml(ns_g_socketmgr, writer); + TRY0(isc_socketmgr_renderxml(ns_g_socketmgr, writer)); TRY0(xmlTextWriterEndElement(writer)); /* socketmgr */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "taskmgr")); - isc_taskmgr_renderxml(ns_g_taskmgr, writer); + TRY0(isc_taskmgr_renderxml(ns_g_taskmgr, writer)); TRY0(xmlTextWriterEndElement(writer)); /* taskmgr */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "server")); @@ -944,7 +946,7 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { TRY0(xmlTextWriterEndElement(writer)); /* server */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "memory")); - isc_mem_renderxml(writer); + TRY0(isc_mem_renderxml(writer)); TRY0(xmlTextWriterEndElement(writer)); /* memory */ TRY0(xmlTextWriterEndElement(writer)); /* statistics */ diff --git a/contrib/bind9/bin/named/tkeyconf.c b/contrib/bind9/bin/named/tkeyconf.c index 6d852a0..e952059 100644 --- a/contrib/bind9/bin/named/tkeyconf.c +++ b/contrib/bind9/bin/named/tkeyconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -73,7 +73,7 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx, if (result == ISC_R_SUCCESS) { s = cfg_obj_asstring(cfg_tuple_get(obj, "name")); n = cfg_obj_asuint32(cfg_tuple_get(obj, "keyid")); - isc_buffer_init(&b, s, strlen(s)); + isc_buffer_constinit(&b, s, strlen(s)); isc_buffer_add(&b, strlen(s)); dns_fixedname_init(&fname); name = dns_fixedname_name(&fname); @@ -87,7 +87,7 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx, result = cfg_map_get(options, "tkey-domain", &obj); if (result == ISC_R_SUCCESS) { s = cfg_obj_asstring(obj); - isc_buffer_init(&b, s, strlen(s)); + isc_buffer_constinit(&b, s, strlen(s)); isc_buffer_add(&b, strlen(s)); dns_fixedname_init(&fname); name = dns_fixedname_name(&fname); @@ -106,7 +106,7 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx, if (result == ISC_R_SUCCESS) { s = cfg_obj_asstring(obj); - isc_buffer_init(&b, s, strlen(s)); + isc_buffer_constinit(&b, s, strlen(s)); isc_buffer_add(&b, strlen(s)); dns_fixedname_init(&fname); name = dns_fixedname_name(&fname); diff --git a/contrib/bind9/bin/named/tsigconf.c b/contrib/bind9/bin/named/tsigconf.c index 776b1b9..eef87e9 100644 --- a/contrib/bind9/bin/named/tsigconf.c +++ b/contrib/bind9/bin/named/tsigconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -78,7 +78,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsig_keyring_t *ring, * Create the key name. */ dns_name_init(&keyname, NULL); - isc_buffer_init(&keynamesrc, keyid, strlen(keyid)); + isc_buffer_constinit(&keynamesrc, keyid, strlen(keyid)); isc_buffer_add(&keynamesrc, strlen(keyid)); isc_buffer_init(&keynamebuf, keynamedata, sizeof(keynamedata)); ret = dns_name_fromtext(&keyname, &keynamesrc, dns_rootname, diff --git a/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c b/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c index edd3946..98dfc5a 100644 --- a/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c +++ b/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -225,7 +225,9 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[], return (ISC_R_FAILURE); } - isc_mem_create(0, 0, &mctx); + result = isc_mem_create(0, 0, &mctx); + if (result != ISC_R_SUCCESS) + return (result); cd = isc_mem_get(mctx, sizeof(*cd)); if (cd == NULL) { @@ -247,7 +249,9 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[], } /* Initialize the lock */ - isc_mutex_init(&cd->lock); + result = isc_mutex_init(&cd->lock); + if (result != ISC_R_SUCCESS) + goto failed; /* Open the library */ dlopen_flags = RTLD_NOW|RTLD_GLOBAL; @@ -351,11 +355,11 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[], failed: dlopen_log(ISC_LOG_ERROR, "dlz_dlopen of '%s' failed", dlzname); - if (cd->dl_path) + if (cd->dl_path != NULL) isc_mem_free(mctx, cd->dl_path); - if (cd->dlzname) + if (cd->dlzname != NULL) isc_mem_free(mctx, cd->dlzname); - if (dlopen_flags) + if (dlopen_flags != 0) (void) isc_mutex_destroy(&cd->lock); #ifdef HAVE_DLCLOSE if (cd->dl_handle) diff --git a/contrib/bind9/bin/named/update.c b/contrib/bind9/bin/named/update.c index 6fb6a85..abf5c08 100644 --- a/contrib/bind9/bin/named/update.c +++ b/contrib/bind9/bin/named/update.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -3500,7 +3500,8 @@ add_signing_records(dns_db_t *db, dns_rdatatype_t privatetype, ISC_LIST_UNLINK(temp_diff.tuples, tuple, link); ISC_LIST_APPEND(diff->tuples, tuple, link); - dns_rdata_tostruct(&tuple->rdata, &dnskey, NULL); + result = dns_rdata_tostruct(&tuple->rdata, &dnskey, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); if ((dnskey.flags & (DNS_KEYFLAG_OWNERMASK|DNS_KEYTYPE_NOAUTH)) != DNS_KEYOWNER_ZONE) diff --git a/contrib/bind9/bin/named/xfrout.c b/contrib/bind9/bin/named/xfrout.c index 6cda658..0363500 100644 --- a/contrib/bind9/bin/named/xfrout.c +++ b/contrib/bind9/bin/named/xfrout.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -833,14 +833,6 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) { FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", question_name, question_class); is_dlz = ISC_TRUE; - /* - * DLZ only support full zone transfer, not incremental - */ - if (reqtype != dns_rdatatype_axfr) { - mnemonic = "AXFR-style IXFR"; - reqtype = dns_rdatatype_axfr; - } - } else { /* * not DLZ and not in normal zone table, we are @@ -852,12 +844,14 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) { } else { /* zone table has a match */ switch(dns_zone_gettype(zone)) { + /* Master and slave zones are OK for transfer. */ case dns_zone_master: case dns_zone_slave: case dns_zone_dlz: - break; /* Master and slave zones are OK for transfer. */ + break; default: - FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", question_name, question_class); + FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", + question_name, question_class); } CHECK(dns_zone_getdb(zone, &db)); dns_db_currentversion(db, &ver); @@ -992,7 +986,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) { is_poll = ISC_TRUE; goto have_stream; } - journalfile = dns_zone_getjournal(zone); + journalfile = is_dlz ? NULL : dns_zone_getjournal(zone); if (journalfile != NULL) result = ixfr_rrstream_create(mctx, journalfile, diff --git a/contrib/bind9/bin/named/zoneconf.c b/contrib/bind9/bin/named/zoneconf.c index 6eef28a..404c238 100644 --- a/contrib/bind9/bin/named/zoneconf.c +++ b/contrib/bind9/bin/named/zoneconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -56,6 +56,7 @@ typedef enum { allow_notify, allow_query, + allow_query_on, allow_transfer, allow_update, allow_update_forwarding @@ -104,6 +105,11 @@ configure_zone_acl(const cfg_obj_t *zconfig, const cfg_obj_t *vconfig, aclp = &view->queryacl; aclname = "allow-query"; break; + case allow_query_on: + if (view != NULL) + aclp = &view->queryonacl; + aclname = "allow-query-on"; + break; case allow_transfer: if (view != NULL) aclp = &view->transferacl; @@ -269,7 +275,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, dns_fixedname_init(&fident); str = cfg_obj_asstring(identity); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(dns_fixedname_name(&fident), &b, dns_rootname, 0, NULL); @@ -292,7 +298,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, } } else { str = cfg_obj_asstring(dname); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(dns_fixedname_name(&fname), &b, dns_rootname, 0, NULL); @@ -525,7 +531,7 @@ configure_staticstub_servernames(const cfg_obj_t *zconfig, dns_zone_t *zone, dns_fixedname_init(&fixed_name); nsname = dns_fixedname_name(&fixed_name); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(nsname, &b, dns_rootname, 0, NULL); if (result != ISC_R_SUCCESS) { @@ -934,6 +940,11 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, dns_zone_setqueryacl, dns_zone_clearqueryacl)); + RETERR(configure_zone_acl(zconfig, vconfig, config, + allow_query_on, ac, zone, + dns_zone_setqueryonacl, + dns_zone_clearqueryonacl)); + obj = NULL; result = ns_config_get(maps, "dialup", &obj); INSIST(result == ISC_R_SUCCESS && obj != NULL); @@ -1112,6 +1123,17 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, cfg_obj_asboolean(obj)); obj = NULL; + result = ns_config_get(maps, "check-spf", &obj); + INSIST(result == ISC_R_SUCCESS && obj != NULL); + if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { + check = ISC_TRUE; + } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { + check = ISC_FALSE; + } else + INSIST(0); + dns_zone_setoption(zone, DNS_ZONEOPT_CHECKSPF, check); + + obj = NULL; result = ns_config_get(maps, "zero-no-soa-ttl", &obj); INSIST(result == ISC_R_SUCCESS && obj != NULL); dns_zone_setzeronosoattl(zone, cfg_obj_asboolean(obj)); diff --git a/contrib/bind9/bin/nsupdate/nsupdate.c b/contrib/bind9/bin/nsupdate/nsupdate.c index 1f5e3e9..e11f080 100644 --- a/contrib/bind9/bin/nsupdate/nsupdate.c +++ b/contrib/bind9/bin/nsupdate/nsupdate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -930,7 +930,7 @@ get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) { INSIST(count == 1); } -#define PARSE_ARGS_FMT "dDML:y:ghlovk:p:rR::t:u:" +#define PARSE_ARGS_FMT "dDML:y:ghlovk:p:r:R::t:u:" static void pre_parse_args(int argc, char **argv) { diff --git a/contrib/bind9/bin/rndc/rndc.c b/contrib/bind9/bin/rndc/rndc.c index 5811cfa..e4ce556 100644 --- a/contrib/bind9/bin/rndc/rndc.c +++ b/contrib/bind9/bin/rndc/rndc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -771,6 +771,7 @@ main(int argc, char **argv) { program, isc_commandline_option); usage(1); } + /* FALLTHROUGH */ case 'h': usage(0); break; diff --git a/contrib/bind9/bin/tools/genrandom.c b/contrib/bind9/bin/tools/genrandom.c index 675e504..0d7eb72 100644 --- a/contrib/bind9/bin/tools/genrandom.c +++ b/contrib/bind9/bin/tools/genrandom.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -93,6 +93,7 @@ main(int argc, char **argv) { if (isc_commandline_option != '?') fprintf(stderr, "%s: invalid argument -%c\n", program, isc_commandline_option); + /* FALLTHROUGH */ case 'h': usage(); diff --git a/contrib/bind9/bin/tools/isc-hmac-fixup.8 b/contrib/bind9/bin/tools/isc-hmac-fixup.8 index c02ed03..6364e54 100644 --- a/contrib/bind9/bin/tools/isc-hmac-fixup.8 +++ b/contrib/bind9/bin/tools/isc-hmac-fixup.8 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2010, 2013 Internet Systems Consortium, Inc. ("ISC") .\" .\" Permission to use, copy, modify, and/or distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -23,7 +23,7 @@ .\" Manual: BIND9 .\" Source: BIND9 .\" -.TH "ISC\-HMAC\-FIXUP" "1" "January 5, 2010" "BIND9" "BIND9" +.TH "ISC\-HMAC\-FIXUP" "8" "January 5, 2010" "BIND9" "BIND9" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) @@ -57,5 +57,5 @@ RFC 2104. .PP Internet Systems Consortium .SH "COPYRIGHT" -Copyright \(co 2010 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2010, 2013 Internet Systems Consortium, Inc. ("ISC") .br diff --git a/contrib/bind9/bin/tools/isc-hmac-fixup.docbook b/contrib/bind9/bin/tools/isc-hmac-fixup.docbook index c298a85..cc72373 100644 --- a/contrib/bind9/bin/tools/isc-hmac-fixup.docbook +++ b/contrib/bind9/bin/tools/isc-hmac-fixup.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2010, 2013 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -25,7 +25,7 @@ <refmeta> <refentrytitle><application>isc-hmac-fixup</application></refentrytitle> - <manvolnum>1</manvolnum> + <manvolnum>8</manvolnum> <refmiscinfo>BIND9</refmiscinfo> </refmeta> @@ -37,6 +37,7 @@ <docinfo> <copyright> <year>2010</year> + <year>2013</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> </docinfo> diff --git a/contrib/bind9/bin/tools/isc-hmac-fixup.html b/contrib/bind9/bin/tools/isc-hmac-fixup.html index d39ebf0..f5ab4b5 100644 --- a/contrib/bind9/bin/tools/isc-hmac-fixup.html +++ b/contrib/bind9/bin/tools/isc-hmac-fixup.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2010, 2013 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -31,7 +31,7 @@ <div class="cmdsynopsis"><p><code class="command">isc-hmac-fixup</code> {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>secret</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543352"></a><h2>DESCRIPTION</h2> +<a name="id2543355"></a><h2>DESCRIPTION</h2> <p> Versions of BIND 9 up to and including BIND 9.6 had a bug causing HMAC-SHA* TSIG keys which were longer than the digest length of the @@ -57,7 +57,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543376"></a><h2>SECURITY CONSIDERATIONS</h2> +<a name="id2543379"></a><h2>SECURITY CONSIDERATIONS</h2> <p> Secrets that have been converted by <span><strong class="command">isc-hmac-fixup</strong></span> are shortened, but as this is how the HMAC protocol works in @@ -68,14 +68,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543389"></a><h2>SEE ALSO</h2> +<a name="id2543393"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 2104</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2543406"></a><h2>AUTHOR</h2> +<a name="id2543410"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/config.h.in b/contrib/bind9/config.h.in index 42d7a21..6cef676 100644 --- a/contrib/bind9/config.h.in +++ b/contrib/bind9/config.h.in @@ -283,9 +283,15 @@ int sigwait(const unsigned int *set, int *sig); /* Define to 1 if you have the <net/if6.h> header file. */ #undef HAVE_NET_IF6_H +/* Define if your OpenSSL version supports ECDSA. */ +#undef HAVE_OPENSSL_ECDSA + /* Define if your OpenSSL version supports GOST. */ #undef HAVE_OPENSSL_GOST +/* Define to 1 if you have the <regex.h> header file. */ +#undef HAVE_REGEX_H + /* Define to 1 if you have the `setegid' function. */ #undef HAVE_SETEGID @@ -367,6 +373,10 @@ int sigwait(const unsigned int *set, int *sig); /* Define to allow building of objects for dlopen(). */ #undef ISC_DLZ_DLOPEN +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + /* Defined if extern char *optarg is not declared. */ #undef NEED_OPTARG diff --git a/contrib/bind9/config.threads.in b/contrib/bind9/config.threads.in index a56ca37..f41d68e 100644 --- a/contrib/bind9/config.threads.in +++ b/contrib/bind9/config.threads.in @@ -60,7 +60,7 @@ case $host in esac AC_ARG_ENABLE(threads, - [ --enable-threads enable multithreading]) + [ --enable-threads enable multithreading]) case "$enable_threads" in yes) use_threads=true diff --git a/contrib/bind9/configure.in b/contrib/bind9/configure.in index 0567add..8db8dde 100644 --- a/contrib/bind9/configure.in +++ b/contrib/bind9/configure.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -24,6 +24,7 @@ AC_INIT(lib/dns/name.c) AC_PREREQ(2.59) AC_CONFIG_HEADER(config.h) +AC_CONFIG_MACRO_DIR([libtool.m4]) AC_CANONICAL_HOST @@ -62,14 +63,13 @@ It is available from http://www.isc.org as a separate download.]) ;; esac -AC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings]) +AC_ARG_ENABLE(developer, [ --enable-developer enable developer build settings]) case "$enable_developer" in yes) + STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1" test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes test "${with_atf+set}" = set || with_atf=yes test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes - test "${enable_rpz_nsip+set}" = set || enable_rpz_nsip=yes - test "${enable_rpz_nsdname+set}" = set || enable_rpz_nsdname=yes test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes case "$host" in *-darwin*) @@ -298,7 +298,7 @@ esac AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,, +AC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h,,, [$ac_includes_default #ifdef HAVE_SYS_PARAM_H # include <sys/param.h> @@ -322,17 +322,15 @@ AC_CHECK_FUNCS(setegid setresgid) # is reported to not support "static inline" (RT #1212). # AC_MSG_CHECKING(for static inline breakage) -AC_TRY_COMPILE(, [ - foo1(); - } - +AC_TRY_COMPILE([ static inline int foo1() { return 0; } static inline int foo2() { return foo1(); - ], + } + ], [foo1();], [AC_MSG_RESULT(no)], [AC_MSG_RESULT(yes) AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])]) @@ -445,6 +443,8 @@ int main() { [AC_MSG_RESULT(yes) ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"], [AC_MSG_RESULT(no) + ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"], + [AC_MSG_RESULT(no) ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"]) ;; yes) @@ -550,12 +550,16 @@ case "$use_openssl" in AC_MSG_RESULT(no) DST_OPENSSL_INC="" USE_OPENSSL="" + OPENSSLGOSTLINKOBJS="" + OPENSSLGOSTLINKSRS="" OPENSSLLINKOBJS="" OPENSSLLINKSRCS="" ;; auto) DST_OPENSSL_INC="" USE_OPENSSL="" + OPENSSLGOSTLINKOBJS="" + OPENSSLGOSTLINKSRS="" OPENSSLLINKOBJS="" OPENSSLLINKSRCS="" AC_MSG_ERROR( @@ -691,20 +695,20 @@ no) ;; esac - AC_MSG_CHECKING(for OpenSSL DSA support) - if test -f $use_openssl/include/openssl/dsa.h - then - AC_DEFINE(HAVE_OPENSSL_DSA) - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi + AC_MSG_CHECKING(for OpenSSL DSA support) + if test -f $use_openssl/include/openssl/dsa.h + then + AC_DEFINE(HAVE_OPENSSL_DSA) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi - AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512) + AC_CHECK_FUNCS(EVP_sha256 EVP_sha384 EVP_sha512) - AC_MSG_CHECKING(for OpenSSL ECDSA support) - have_ecdsa="" - AC_TRY_RUN([ + AC_MSG_CHECKING(for OpenSSL ECDSA support) + have_ecdsa="" + AC_TRY_RUN([ #include <stdio.h> #include <openssl/ecdsa.h> #include <openssl/objects.h> @@ -721,22 +725,42 @@ int main() { return (0); } ], - [AC_MSG_RESULT(yes) - have_ecdsa="yes"], - [AC_MSG_RESULT(no) - have_ecdsa="no"]) - case $have_ecdsa in - yes) - OPENSSL_ECDSA="yes" - AC_DEFINE(HAVE_OPENSSL_ECDSA) - ;; - *) - ;; - esac - - AC_MSG_CHECKING(for OpenSSL GOST support) - have_gost="" - AC_TRY_RUN([ + [AC_MSG_RESULT(yes) + have_ecdsa="yes"], + [AC_MSG_RESULT(no) + have_ecdsa="no"], + [AC_MSG_RESULT(using --with-ecdsa)]) + AC_ARG_WITH(ecdsa, [ --with-ecdsa OpenSSL ECDSA], + with_ecdsa="$withval", with_ecdsa="auto") + case "$with_ecdsa" in + yes) + case "$have_ecdsa" in + no) AC_MSG_ERROR([ecdsa not supported]) ;; + *) have_ecdsa=yes ;; + esac + ;; + no) + have_ecdsa=no ;; + *) + case "$have_ecdsa" in + yes|no) ;; + *) AC_MSG_ERROR([need --with-ecdsa=[[yes or no]]]) ;; + esac + ;; + esac + case $have_ecdsa in + yes) + OPENSSL_ECDSA="yes" + AC_DEFINE(HAVE_OPENSSL_ECDSA, 1, + [Define if your OpenSSL version supports ECDSA.]) + ;; + *) + ;; + esac + + AC_MSG_CHECKING(for OpenSSL GOST support) + have_gost="" + AC_TRY_RUN([ #include <openssl/conf.h> #include <openssl/engine.h> int main() { @@ -758,43 +782,46 @@ int main() { #endif } ], - [AC_MSG_RESULT(yes) - have_gost="yes"], - [AC_MSG_RESULT(no) - have_gost="no"], - [AC_MSG_RESULT(using --with-gost)]) - AC_ARG_WITH(gost, , with_gost="$withval", with_gost="auto") - case "$with_gost" in - yes) - case "$have_gost" in - no) AC_MSG_ERROR([gost not supported]) ;; - *) have_gost=yes ;; - esac - ;; - no) - have_gost=no ;; - *) - case "$have_gost" in - yes|no) ;; - *) AC_MSG_ERROR([need --with-gost=[[yes or no]]]) ;; - esac - ;; - esac - case $have_gost in - yes) - OPENSSL_GOST="yes" - AC_DEFINE(HAVE_OPENSSL_GOST, 1, - [Define if your OpenSSL version supports GOST.]) - ;; - *) - ;; - esac - CFLAGS="$saved_cflags" - LIBS="$saved_libs" - OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' - OPENSSLLINKSRCS='${OPENSSLLINKSRCS}' - - ;; + [AC_MSG_RESULT(yes) + have_gost="yes"], + [AC_MSG_RESULT(no) + have_gost="no"], + [AC_MSG_RESULT(using --with-gost)]) + AC_ARG_WITH(gost, [ --with-gost OpenSSL GOST], + with_gost="$withval", with_gost="auto") + case "$with_gost" in + yes) + case "$have_gost" in + no) AC_MSG_ERROR([gost not supported]) ;; + *) have_gost=yes ;; + esac + ;; + no) + have_gost=no ;; + *) + case "$have_gost" in + yes|no) ;; + *) AC_MSG_ERROR([need --with-gost=[[yes or no]]]) ;; + esac + ;; + esac + case $have_gost in + yes) + OPENSSL_GOST="yes" + OPENSSLGOSTLINKOBJS='${OPENSSLGOSTLINKOBJS}' + OPENSSLGOSTLINKSRCS='${OPENSSLGOSTLINKSRCS}' + AC_DEFINE(HAVE_OPENSSL_GOST, 1, + [Define if your OpenSSL version supports GOST.]) + ;; + *) + ;; + esac + CFLAGS="$saved_cflags" + LIBS="$saved_libs" + OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' + OPENSSLLINKSRCS='${OPENSSLLINKSRCS}' + + ;; esac # @@ -804,6 +831,8 @@ esac AC_SUBST(USE_OPENSSL) AC_SUBST(DST_OPENSSL_INC) +AC_SUBST(OPENSSLGOSTLINKOBJS) +AC_SUBST(OPENSSLGOSTLINKSRCS) AC_SUBST(OPENSSLLINKOBJS) AC_SUBST(OPENSSLLINKSRCS) AC_SUBST(OPENSSL_ECDSA) @@ -1075,6 +1104,11 @@ AC_ARG_WITH(randomdev, case "$use_randomdev" in unspec) + case "$cross_compiling" in + yes) + AC_MSG_RESULT(unspecified) + AC_MSG_ERROR([ need --with-randomdev=PATH or --with-randomdev=no]) + esac case "$host" in *-openbsd*) devrandom=/dev/arandom @@ -1087,6 +1121,7 @@ case "$use_randomdev" in AC_CHECK_FILE($devrandom, AC_DEFINE_UNQUOTED(PATH_RANDOMDEV, "$devrandom"),) + ;; yes) AC_MSG_ERROR([--with-randomdev must specify a path]) @@ -1258,7 +1293,7 @@ case "$use_libxml2" in ;; auto|yes) case X`(xml2-config --version) 2>/dev/null` in - X2.[[678]].*) + X2.[[6789]].*) libxml2_libs=`xml2-config --libs` libxml2_cflags=`xml2-config --cflags` ;; @@ -1595,8 +1630,8 @@ AC_SUBST(LIBTOOL_IN_MAIN) # build exportable DNS library? # AC_ARG_ENABLE(exportlib, - [ --enable-exportlib build exportable library (GNU make required) - [[default=no]]]) + [ --enable-exportlib build exportable library (GNU make required) + [[default=no]]]) case "$enable_exportlib" in yes) gmake= @@ -1621,8 +1656,8 @@ AC_SUBST(BIND9_CO_RULE) AC_ARG_WITH(export-libdir, [ --with-export-libdir[=PATH] - installation directory for the export library - [[EPREFIX/lib/bind9]]], + installation directory for the export library + [[EPREFIX/lib/bind9]]], export_libdir="$withval",) if test -z "$export_libdir"; then export_libdir="\${exec_prefix}/lib/bind9/" @@ -1631,8 +1666,8 @@ AC_SUBST(export_libdir) AC_ARG_WITH(export-includedir, [ --with-export-includedir[=PATH] - installation directory for the header files of the - export library [[PREFIX/include/bind9]]], + installation directory for the header files of the + export library [[PREFIX/include/bind9]]], export_includedir="$withval",) if test -z "$export_includedir"; then export_includedir="\${prefix}/include/bind9/" @@ -2827,9 +2862,9 @@ esac # Enable response policy rewriting using NS IP addresses # AC_ARG_ENABLE(rpz-nsip, - [ --enable-rpz-nsip enable rpz-nsip rules [[default=no]]], + [ --disable-rpz-nsip disable rpz-nsip rules [[default=enabled]]], enable_nsip="$enableval", - enable_nsip="no") + enable_nsip="yes") case "$enable_nsip" in yes) AC_DEFINE(ENABLE_RPZ_NSIP, 1, @@ -2845,9 +2880,9 @@ esac # Enable response policy rewriting using NS name # AC_ARG_ENABLE(rpz-nsdname, - [ --enable-rpz-nsdname enable rpz-nsdname rules [[default=no]]], + [ --disable-rpz-nsdname disable rpz-nsdname rules [[default=enabled]]], enable_nsdname="$enableval", - enable_nsdname="no") + enable_nsdname="yes") case "$enable_nsdname" in yes) AC_DEFINE(ENABLE_RPZ_NSDNAME, 1, @@ -2995,7 +3030,7 @@ AC_ARG_WITH(docbook-xsl, case "$docbook_path" in auto) AC_MSG_RESULT(auto) - docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook" + docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook /usr/share/xsl/docbook /opt/local/share/xsl/docbook-xsl" ;; *) docbook_xsl_trees="$withval" @@ -3131,14 +3166,22 @@ AC_SUBST(IDNLIBS) # Check whether to build Automated Test Framework unit tests # AC_ARG_WITH(atf, - [ --with-atf=ARG Automated Test Framework support], + [ --with-atf=ARG Automated Test Framework support], atf="$withval", atf="no") if test "$atf" = yes; then atf=`pwd`/unit/atf ATFBUILD=atf-src AC_SUBST(ATFBUILD) AC_CONFIG_COMMANDS([atf-config], - [cd unit/atf-src; ${SHELL} ./configure MISSING=: --prefix $atfdir; cd ../..], + [( + mkdir -p unit/atf-src; + cd unit/atf-src; + case "$srcdir" in + /*) ;; + *) srcdir="../../$srcdir";; + esac + ${SHELL} ${srcdir}${srcdir:+/unit/atf-src/}./configure MISSING=: --prefix $atfdir; + ) ], [atfdir=`pwd`/unit/atf]) AC_MSG_RESULT(building ATF from bind9/unit/atf-src) fi @@ -3149,6 +3192,9 @@ if test "$atf" != no; then STD_CINCLUDES="$STD_CINCLUDES -I$atf/include" ATFBIN="$atf/bin" ATFLIBS="-L$atf/lib -latf-c" + if test "$want_openssl_hash" = yes; then + ATFLIBS="-L$atf/lib -latf-c $DNS_CRYPTO_LIBS" + fi UNITTESTS=tests fi AC_SUBST(ATFBIN) @@ -3193,9 +3239,20 @@ AC_SUBST_FILE(BIND9_MAKE_RULES) BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules . $srcdir/version +BIND9_PRODUCT="PRODUCT=\"${PRODUCT}\"" +AC_SUBST(BIND9_PRODUCT) +BIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\"" +AC_SUBST(BIND9_DESCRIPTION) BIND9_VERSION="VERSION=${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}" AC_SUBST(BIND9_VERSION) +BIND9_SRCID="SRCID=unset" +if test -f $srcdir/srcid; then + . $srcdir/srcid + BIND9_SRCID="SRCID=$SRCID" +fi +AC_SUBST(BIND9_SRCID) + if test -z "$ac_configure_args"; then BIND9_CONFIGARGS="defaults" else @@ -3264,6 +3321,11 @@ AC_ARG_WITH(dlopen, [ --with-dlopen=ARG Support dynamically loadable DLZ drivers], dlopen="$withval", dlopen="yes") +case $host in + *-sunos*) dlopen="no" + ;; +esac + if test "$dlopen" = "yes"; then AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no) if test "$have_dl" = "yes"; then @@ -3278,7 +3340,11 @@ if test "$dlopen" = "yes"; then SO_CFLAGS="-fPIC" if test "$have_dl" = "yes" then - SO_LD="${CC} -shared" + if test "$use_libtool" = "yes"; then + SO_LD="${CC} -Xcompiler -shared" + else + SO_LD="${CC} -shared" + fi else SO_LD="ld -shared" fi @@ -3484,6 +3550,21 @@ AC_CONFIG_FILES([ bin/tests/atomic/Makefile bin/tests/db/Makefile bin/tests/dst/Makefile + bin/tests/dst/Kdh.+002+18602.key + bin/tests/dst/Kdh.+002+18602.private + bin/tests/dst/Kdh.+002+48957.key + bin/tests/dst/Kdh.+002+48957.private + bin/tests/dst/Ktest.+001+00002.key + bin/tests/dst/Ktest.+001+54622.key + bin/tests/dst/Ktest.+001+54622.private + bin/tests/dst/Ktest.+003+23616.key + bin/tests/dst/Ktest.+003+23616.private + bin/tests/dst/Ktest.+003+49667.key + bin/tests/dst/dst_2_data + bin/tests/dst/t2_data_1 + bin/tests/dst/t2_data_2 + bin/tests/dst/t2_dsasig + bin/tests/dst/t2_rsasig bin/tests/hashes/Makefile bin/tests/headerdep_test.sh bin/tests/master/Makefile diff --git a/contrib/bind9/doc/arm/Bv9ARM-book.xml b/contrib/bind9/doc/arm/Bv9ARM-book.xml index f3f862a..cec0b24 100644 --- a/contrib/bind9/doc/arm/Bv9ARM-book.xml +++ b/contrib/bind9/doc/arm/Bv9ARM-book.xml @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -33,6 +33,7 @@ <year>2010</year> <year>2011</year> <year>2012</year> + <year>2013</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> <copyright> @@ -1480,7 +1481,7 @@ zone "eng.example.com" { <optional><replaceable>view</replaceable></optional></term> <listitem> <para> - Delete a given TKEY-negotated key from the server. + Delete a given TKEY-negotiated key from the server. (This does not apply to statically configured TSIG keys.) </para> @@ -3274,31 +3275,45 @@ $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. </entry> <entry colname="2"> <para> - A number, the word <userinput>unlimited</userinput>, - or the word <userinput>default</userinput>. + A 64-bit unsigned integer, or the keywords + <userinput>unlimited</userinput> or + <userinput>default</userinput>. </para> - <para> - An <varname>unlimited</varname> <varname>size_spec</varname> requests unlimited - use, or the maximum available amount. A <varname>default size_spec</varname> uses - the limit that was in force when the server was started. + <para> + Integers may take values + 0 <= value <= 18446744073709551615, though + certain parameters may use a more limited range + within these extremes. In most cases, setting a + value to 0 does not literally mean zero; it means + "undefined" or "as big as psosible", depending on + the context. See the expalantions of particular + parameters that use <varname>size_spec</varname> + for details on how they interpret its use. </para> <para> - A <varname>number</varname> can optionally be - followed by a scaling factor: + Numeric values can optionally be followed by a + scaling factor: <userinput>K</userinput> or <userinput>k</userinput> for kilobytes, <userinput>M</userinput> or <userinput>m</userinput> for megabytes, and - <userinput>G</userinput> or <userinput>g</userinput> for gigabytes, - which scale by 1024, 1024*1024, and 1024*1024*1024 - respectively. + <userinput>G</userinput> or <userinput>g</userinput> + for gigabytes, which scale by 1024, 1024*1024, and + 1024*1024*1024 respectively. </para> - <para> - The value must be representable as a 64-bit unsigned integer - (0 to 18446744073709551615, inclusive). - Using <varname>unlimited</varname> is the best - way - to safely set a really large number. + <para> + <varname>unlimited</varname> generally means + "as big as possible", though in certain contexts, + (including <option>max-cache-size</option>), it may + mean the largest possible 32-bit unsigned integer + (0xffffffff); this distinction can be important when + dealing with larger quantities. + <varname>unlimited</varname> is usually the best way + to safely set a very large number. + </para> + <para> + <varname>default</varname> + uses the limit that was in force when the server was started. </para> </entry> </row> @@ -4031,7 +4046,7 @@ $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. [ <command>channel</command> <replaceable>channel_name</replaceable> { ( <command>file</command> <replaceable>path_name</replaceable> [ <command>versions</command> ( <replaceable>number</replaceable> | <command>unlimited</command> ) ] - [ <command>size</command> <replaceable>size spec</replaceable> ] + [ <command>size</command> <replaceable>size_spec</replaceable> ] | <command>syslog</command> <replaceable>syslog_facility</replaceable> | <command>stderr</command> | <command>null</command> ); @@ -5057,6 +5072,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> multiple-cnames <replaceable>yes_or_no</replaceable>; </optional> <optional> notify <replaceable>yes_or_no</replaceable> | <replaceable>explicit</replaceable> | <replaceable>master-only</replaceable>; </optional> <optional> recursion <replaceable>yes_or_no</replaceable>; </optional> + <optional> request-nsid <replaceable>yes_or_no</replaceable>; </optional> <optional> rfc2308-type1 <replaceable>yes_or_no</replaceable>; </optional> <optional> use-id-pool <replaceable>yes_or_no</replaceable>; </optional> <optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable>; </optional> @@ -5083,6 +5099,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> check-mx-cname ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional> <optional> check-srv-cname ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional> <optional> check-sibling <replaceable>yes_or_no</replaceable>; </optional> + <optional> check-spf ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional> <optional> allow-new-zones { <replaceable>yes_or_no</replaceable> }; </optional> <optional> allow-notify { <replaceable>address_match_list</replaceable> }; </optional> <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional> @@ -5216,7 +5233,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> policy given | disabled | passthru | nxdomain | nodata | cname <replaceable>domain</replaceable> </optional> <optional> recursive-only <replaceable>yes_or_no</replaceable> </optional> <optional> max-policy-ttl <replaceable>number</replaceable> </optional> ; } <optional> recursive-only <replaceable>yes_or_no</replaceable> </optional> <optional> max-policy-ttl <replaceable>number</replaceable> </optional> - <optional> break-dnssec <replaceable>yes_or_no</replaceable> </optional> ; </optional> + <optional> break-dnssec <replaceable>yes_or_no</replaceable> </optional> <optional> min-ns-dots <replaceable>number</replaceable> </optional> ; </optional> }; </programlisting> @@ -5374,11 +5391,18 @@ badresp:1,adberr:0,findfail:0,valfail:0] <term><command>managed-keys-directory</command></term> <listitem> <para> - The directory used to hold the files used to track managed keys. - By default it is the working directory. It there are no - views then the file <filename>managed-keys.bind</filename> - otherwise a SHA256 hash of the view name is used with - <filename>.mkeys</filename> extension added. + Specifies the directory in which to store the files that + track managed DNSSEC keys. By default, this is the working + directory. + </para> + <para> + If <command>named</command> is not configured to use views, + then managed keys for the server will be tracked in a single + file called <filename>managed-keys.bind</filename>. + Otherwise, managed keys will be tracked in separate files, + one file per view; each file name will be the SHA256 hash + of the view name, followed by the extension + <filename>.mkeys</filename>. </para> </listitem> </varlistentry> @@ -5760,7 +5784,8 @@ options { installed along with <acronym>BIND</acronym> 9, and is current as of the release date. If the DLV key expires, a new copy of <filename>bind.keys</filename> can be downloaded - from <ulink>https://www.isc.org/solutions/dlv</ulink>. + from <ulink url="https://www.isc.org/solutions/dlv/" + >https://www.isc.org/solutions/dlv/</ulink>. </para> <para> (To prevent problems if <filename>bind.keys</filename> is @@ -6349,6 +6374,22 @@ options { </varlistentry> <varlistentry> + <term><command>request-nsid</command></term> + <listitem> + <para> + If <userinput>yes</userinput>, then an empty EDNS(0) + NSID (Name Server Identifier) option is sent with all + queries to authoritative name servers during iterative + resolution. If the authoritative server returns an NSID + option in its response, then its contents are logged in + the <command>resolver</command> category at level + <command>info</command>. + The default is <userinput>no</userinput>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><command>rfc2308-type1</command></term> <listitem> <para> @@ -6808,6 +6849,13 @@ options { checks use <command>named-checkzone</command>). The default is <command>yes</command>. </para> + <para> + Check that the two forms of Sender Policy Framework + records (TXT records starting with "v=spf1" and SPF) either + both exist or both don't exist. Warnings are + emitted it they don't and be suppressed with + <command>check-spf</command>. + </para> </listitem> </varlistentry> @@ -6844,6 +6892,19 @@ options { </varlistentry> <varlistentry> + <term><command>check-spf</command></term> + <listitem> + <para> + When performing integrity checks, check that the + two forms of Sender Policy Framwork records (TXT + records starting with "v=spf1" and SPF) both exist + or both don't exist and issue a warning if not + met. The default is <command>warn</command>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><command>zero-no-soa-ttl</command></term> <listitem> <para> @@ -7106,6 +7167,12 @@ options { necessarily knowing the internal network's addresses. </para> <para> + Note that <command>allow-query-on</command> is only + checked for queries that are permitted by + <command>allow-query</command>. A query must be + allowed by both ACLs, or it will be refused. + </para> + <para> <command>allow-query-on</command> may also be specified in the <command>zone</command> statement, in which case it overrides the @@ -8819,12 +8886,16 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; built-in view (see <xref linkend="view_statement_grammar"/>) of class <command>CHAOS</command> which is separate from the - default view of - class <command>IN</command>; therefore, any global - server options - such as <command>allow-query</command> do not apply - the these zones. - If you feel the need to disable these zones, use the options + default view of class <command>IN</command>. Most global + configuration options (<command>allow-query</command>, + etc) will apply to this view, but some are locally + overridden: <command>notify</command>, + <command>recursion</command> and + <command>allow-new-zones</command> are + always set to <userinput>no</userinput>. + </para> + <para> + If you need to disable these zones, use the options below, or hide the built-in <command>CHAOS</command> view by defining an explicit view of class <command>CHAOS</command> @@ -8897,7 +8968,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; servers. The official servers which cover these namespaces return NXDOMAIN responses to these queries. In particular, these cover the reverse namespaces for addresses from - RFC 1918, RFC 4193, and RFC 5737. They also include the + RFC 1918, RFC 4193, RFC 5737 and RFC 6598. They also include the reverse namespace for IPv6 local address (locally assigned), IPv6 link local addresses, the IPv6 loopback address and the IPv6 unknown address. @@ -8928,6 +8999,70 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; <listitem>30.172.IN-ADDR.ARPA</listitem> <listitem>31.172.IN-ADDR.ARPA</listitem> <listitem>168.192.IN-ADDR.ARPA</listitem> + <listitem>64.100.IN-ADDR.ARPA</listitem> + <listitem>65.100.IN-ADDR.ARPA</listitem> + <listitem>66.100.IN-ADDR.ARPA</listitem> + <listitem>67.100.IN-ADDR.ARPA</listitem> + <listitem>68.100.IN-ADDR.ARPA</listitem> + <listitem>69.100.IN-ADDR.ARPA</listitem> + <listitem>70.100.IN-ADDR.ARPA</listitem> + <listitem>71.100.IN-ADDR.ARPA</listitem> + <listitem>72.100.IN-ADDR.ARPA</listitem> + <listitem>73.100.IN-ADDR.ARPA</listitem> + <listitem>74.100.IN-ADDR.ARPA</listitem> + <listitem>75.100.IN-ADDR.ARPA</listitem> + <listitem>76.100.IN-ADDR.ARPA</listitem> + <listitem>77.100.IN-ADDR.ARPA</listitem> + <listitem>78.100.IN-ADDR.ARPA</listitem> + <listitem>79.100.IN-ADDR.ARPA</listitem> + <listitem>80.100.IN-ADDR.ARPA</listitem> + <listitem>81.100.IN-ADDR.ARPA</listitem> + <listitem>82.100.IN-ADDR.ARPA</listitem> + <listitem>83.100.IN-ADDR.ARPA</listitem> + <listitem>84.100.IN-ADDR.ARPA</listitem> + <listitem>85.100.IN-ADDR.ARPA</listitem> + <listitem>86.100.IN-ADDR.ARPA</listitem> + <listitem>87.100.IN-ADDR.ARPA</listitem> + <listitem>88.100.IN-ADDR.ARPA</listitem> + <listitem>89.100.IN-ADDR.ARPA</listitem> + <listitem>90.100.IN-ADDR.ARPA</listitem> + <listitem>91.100.IN-ADDR.ARPA</listitem> + <listitem>92.100.IN-ADDR.ARPA</listitem> + <listitem>93.100.IN-ADDR.ARPA</listitem> + <listitem>94.100.IN-ADDR.ARPA</listitem> + <listitem>95.100.IN-ADDR.ARPA</listitem> + <listitem>96.100.IN-ADDR.ARPA</listitem> + <listitem>97.100.IN-ADDR.ARPA</listitem> + <listitem>98.100.IN-ADDR.ARPA</listitem> + <listitem>99.100.IN-ADDR.ARPA</listitem> + <listitem>100.100.IN-ADDR.ARPA</listitem> + <listitem>101.100.IN-ADDR.ARPA</listitem> + <listitem>102.100.IN-ADDR.ARPA</listitem> + <listitem>103.100.IN-ADDR.ARPA</listitem> + <listitem>104.100.IN-ADDR.ARPA</listitem> + <listitem>105.100.IN-ADDR.ARPA</listitem> + <listitem>106.100.IN-ADDR.ARPA</listitem> + <listitem>107.100.IN-ADDR.ARPA</listitem> + <listitem>108.100.IN-ADDR.ARPA</listitem> + <listitem>109.100.IN-ADDR.ARPA</listitem> + <listitem>110.100.IN-ADDR.ARPA</listitem> + <listitem>111.100.IN-ADDR.ARPA</listitem> + <listitem>112.100.IN-ADDR.ARPA</listitem> + <listitem>113.100.IN-ADDR.ARPA</listitem> + <listitem>114.100.IN-ADDR.ARPA</listitem> + <listitem>115.100.IN-ADDR.ARPA</listitem> + <listitem>116.100.IN-ADDR.ARPA</listitem> + <listitem>117.100.IN-ADDR.ARPA</listitem> + <listitem>118.100.IN-ADDR.ARPA</listitem> + <listitem>119.100.IN-ADDR.ARPA</listitem> + <listitem>120.100.IN-ADDR.ARPA</listitem> + <listitem>121.100.IN-ADDR.ARPA</listitem> + <listitem>122.100.IN-ADDR.ARPA</listitem> + <listitem>123.100.IN-ADDR.ARPA</listitem> + <listitem>124.100.IN-ADDR.ARPA</listitem> + <listitem>125.100.IN-ADDR.ARPA</listitem> + <listitem>126.100.IN-ADDR.ARPA</listitem> + <listitem>127.100.IN-ADDR.ARPA</listitem> <listitem>0.IN-ADDR.ARPA</listitem> <listitem>127.IN-ADDR.ARPA</listitem> <listitem>254.169.IN-ADDR.ARPA</listitem> @@ -9188,7 +9323,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; to get access to an internal node of your local network that couldn't be externally accessed otherwise. See the paper available at - <ulink> + <ulink url="http://portal.acm.org/citation.cfm?id=1315245.1315298"> http://portal.acm.org/citation.cfm?id=1315245.1315298 </ulink> for more details about the attacks. @@ -9328,14 +9463,15 @@ deny-answer-aliases { "example.net"; }; They are encoded as subdomains of <userinput>rpz-nsdomain</userinput> relativized to the RPZ origin name. - </para> - - <para> NSIP triggers match IP addresses in A and AAAA RRsets for domains that can be checked against NSDNAME policy records. NSIP triggers are encoded like IP triggers except as subdomains of <userinput>rpz-nsip</userinput>. + NSDNAME and NSIP triggers are checked only for names with at + least <command>min-ns-dots</command> dots. + The default value of <command>min-ns-dots</command> is 1 to + exclude top level domains. </para> <para> @@ -9375,17 +9511,6 @@ deny-answer-aliases { "example.net"; }; </para> <para> - Authority verification issues and variations in authority data - can cause inconsistent results for NSIP and NSDNAME policy records. - Glue NS records often differ from authoritative NS records. - So they are available - only when <acronym>BIND</acronym> is built with the - <userinput>--enable-rpz-nsip</userinput> or - <userinput>--enable-rpz-nsdname</userinput> options - on the "configure" command line. - </para> - - <para> RPZ record sets are sets of any types of DNS record except DNAME or DNSSEC that encode actions or responses to queries. <itemizedlist> @@ -9409,7 +9534,7 @@ deny-answer-aliases { "example.net"; }; walled garden's authority DNS server. </listitem> <listitem>The <command>PASSTHRU</command> policy is specified - by a CNAME whose target is <command>rpz_passthru.</command> + by a CNAME whose target is <command>rpz-passthru.</command> It causes the response to not be rewritten and is most often used to "poke holes" in policies for CIDR blocks. @@ -9523,6 +9648,26 @@ bzone.domain.com CNAME garden.example.com. ns.domain.com.rpz-nsdname CNAME . 48.zz.2.2001.rpz-nsip CNAME . </programlisting> + <para> + RPZ can affect server performance. + Each configured response policy zone requires the server to + perform one to four additional database lookups before a + query can be answered. + For example, a DNS server with four policy zones, each with all + four kinds of response triggers, QNAME, IP, NSIP, and + NSDNAME, requires a total of 17 times as many database + lookups as a similar DNS server with no response policy zones. + A <acronym>BIND9</acronym> server with adequate memory and one + response policy zone with QNAME and IP triggers might achieve a + maximum queries-per-second rate about 20% lower. + A server with four response policy zones with QNAME and IP + triggers might have a maximum QPS rate about 50% lower. + </para> + + <para> + Responses rewritten by RPZ are counted in the + <command>RPZRewrites</command> statistics. + </para> </sect3> </sect2> @@ -9864,8 +10009,8 @@ ns.domain.com.rpz-nsdname CNAME . <title><command>managed-keys</command> Statement Grammar</title> <programlisting><command>managed-keys</command> { - <replaceable>string</replaceable> initial-key <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; - <optional> <replaceable>string</replaceable> initial-key <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; <optional>...</optional></optional> + <replaceable>name</replaceable> <literal>initial-key</literal> <replaceable>flags</replaceable> <replaceable>protocol</replaceable> <replaceable>algorithm</replaceable> <replaceable>key-data</replaceable> ; + <optional> <replaceable>name</replaceable> <literal>initial-key</literal> <replaceable>flags</replaceable> <replaceable>protocol</replaceable> <replaceable>algorithm</replaceable> <replaceable>key-data</replaceable> ; <optional>...</optional></optional> }; </programlisting> @@ -9973,13 +10118,16 @@ ns.domain.com.rpz-nsdname CNAME . <command>named</command>.) </para> <para> - If the <command>dnssec-lookaside</command> option is + If the <command>dnssec-validation</command> option is set to <userinput>auto</userinput>, <command>named</command> will automatically initialize a managed key for the - zone <literal>dlv.isc.org</literal>. The key that is - used to initialize the key maintenance process is built - into <command>named</command>, and can be overridden - from <command>bindkeys-file</command>. + root zone. Similarly, if the <command>dnssec-lookaside</command> + option is set to <userinput>auto</userinput>, + <command>named</command> will automatically initialize + a managed key for the zone <literal>dlv.isc.org</literal>. + In both cases, the key that is used to initialize the key + maintenance process is built into <command>named</command>, + and can be overridden from <command>bindkeys-file</command>. </para> </sect2> @@ -10141,6 +10289,7 @@ view "external" { <optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional> <optional> check-mx (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional> <optional> check-wildcard <replaceable>yes_or_no</replaceable>; </optional> + <optional> check-spf ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional> <optional> check-integrity <replaceable>yes_or_no</replaceable> ; </optional> <optional> dialup <replaceable>dialup_option</replaceable> ; </optional> <optional> file <replaceable>string</replaceable> ; </optional> @@ -10707,6 +10856,16 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea </varlistentry> <varlistentry> + <term><command>check-spf</command></term> + <listitem> + <para> + See the description of + <command>check-spf</command> in <xref linkend="boolean_options"/>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><command>check-wildcard</command></term> <listitem> <para> @@ -14094,6 +14253,19 @@ HOST-127.EXAMPLE. MX 0 . </para> </entry> </row> + <row rowsep="0"> + <entry colname="1"> + <para><command>RPZRewrites</command></para> + </entry> + <entry colname="2"> + <para><command></command></para> + </entry> + <entry colname="3"> + <para> + Response policy zone rewrites. + </para> + </entry> + </row> </tbody> </tgroup> </informaltable> @@ -14915,14 +15087,6 @@ zone "example.com" { This allows recursive queries of the server from the outside unless recursion has been previously disabled. </para> - <para> - For more information on how to use ACLs to protect your server, - see the <emphasis>AUSCERT</emphasis> advisory at: - </para> - <para> - <ulink url="ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos" - >ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos</ulink> - </para> </sect1> <sect1> <title><command>Chroot</command> and <command>Setuid</command></title> diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch01.html b/contrib/bind9/doc/arm/Bv9ARM.ch01.html index 420d7b3..d12d573 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch01.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch01.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -45,17 +45,17 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564375">Scope of Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564398">Organization of This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564538">Conventions Used in This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564720">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564378">Scope of Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564402">Organization of This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564541">Conventions Used in This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564723">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564741">DNS Fundamentals</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564775">Domains and Domain Names</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567180">Zones</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567257">Authoritative Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567430">Caching Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567560">Name Servers in Multiple Roles</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564744">DNS Fundamentals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564846">Domains and Domain Names</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567184">Zones</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567260">Authoritative Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567433">Caching Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567563">Name Servers in Multiple Roles</a></span></dt> </dl></dd> </dl> </div> @@ -71,7 +71,7 @@ </p> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564375"></a>Scope of Document</h2></div></div></div> +<a name="id2564378"></a>Scope of Document</h2></div></div></div> <p> The Berkeley Internet Name Domain (<acronym class="acronym">BIND</acronym>) implements a @@ -87,7 +87,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564398"></a>Organization of This Document</h2></div></div></div> +<a name="id2564402"></a>Organization of This Document</h2></div></div></div> <p> In this document, <span class="emphasis"><em>Chapter 1</em></span> introduces the basic <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym> concepts. <span class="emphasis"><em>Chapter 2</em></span> @@ -116,7 +116,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564538"></a>Conventions Used in This Document</h2></div></div></div> +<a name="id2564541"></a>Conventions Used in This Document</h2></div></div></div> <p> In this document, we use the following general typographic conventions: @@ -243,7 +243,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564720"></a>The Domain Name System (<acronym class="acronym">DNS</acronym>)</h2></div></div></div> +<a name="id2564723"></a>The Domain Name System (<acronym class="acronym">DNS</acronym>)</h2></div></div></div> <p> The purpose of this document is to explain the installation and upkeep of the <acronym class="acronym">BIND</acronym> (Berkeley Internet @@ -253,7 +253,7 @@ </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564741"></a>DNS Fundamentals</h3></div></div></div> +<a name="id2564744"></a>DNS Fundamentals</h3></div></div></div> <p> The Domain Name System (DNS) is a hierarchical, distributed database. It stores information for mapping Internet host names to @@ -275,7 +275,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564775"></a>Domains and Domain Names</h3></div></div></div> +<a name="id2564846"></a>Domains and Domain Names</h3></div></div></div> <p> The data stored in the DNS is identified by <span class="emphasis"><em>domain names</em></span> that are organized as a tree according to organizational or administrative boundaries. Each node of the tree, @@ -321,7 +321,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567180"></a>Zones</h3></div></div></div> +<a name="id2567184"></a>Zones</h3></div></div></div> <p> To properly operate a name server, it is important to understand the difference between a <span class="emphasis"><em>zone</em></span> @@ -374,7 +374,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567257"></a>Authoritative Name Servers</h3></div></div></div> +<a name="id2567260"></a>Authoritative Name Servers</h3></div></div></div> <p> Each zone is served by at least one <span class="emphasis"><em>authoritative name server</em></span>, @@ -391,7 +391,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567281"></a>The Primary Master</h4></div></div></div> +<a name="id2567284"></a>The Primary Master</h4></div></div></div> <p> The authoritative server where the master copy of the zone data is maintained is called the @@ -411,7 +411,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567379"></a>Slave Servers</h4></div></div></div> +<a name="id2567382"></a>Slave Servers</h4></div></div></div> <p> The other authoritative servers, the <span class="emphasis"><em>slave</em></span> servers (also known as <span class="emphasis"><em>secondary</em></span> servers) @@ -427,7 +427,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567400"></a>Stealth Servers</h4></div></div></div> +<a name="id2567403"></a>Stealth Servers</h4></div></div></div> <p> Usually all of the zone's authoritative servers are listed in NS records in the parent zone. These NS records constitute @@ -462,7 +462,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567430"></a>Caching Name Servers</h3></div></div></div> +<a name="id2567433"></a>Caching Name Servers</h3></div></div></div> <p> The resolver libraries provided by most operating systems are <span class="emphasis"><em>stub resolvers</em></span>, meaning that they are not @@ -489,7 +489,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567533"></a>Forwarding</h4></div></div></div> +<a name="id2567537"></a>Forwarding</h4></div></div></div> <p> Even a caching name server does not necessarily perform the complete recursive lookup itself. Instead, it can @@ -516,7 +516,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567560"></a>Name Servers in Multiple Roles</h3></div></div></div> +<a name="id2567563"></a>Name Servers in Multiple Roles</h3></div></div></div> <p> The <acronym class="acronym">BIND</acronym> name server can simultaneously act as diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch02.html b/contrib/bind9/doc/arm/Bv9ARM.ch02.html index 2965781..c62ec1c 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch02.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch02.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -45,16 +45,16 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567594">Hardware requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567621">CPU Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567634">Memory Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567729">Name Server Intensive Environment Issues</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567739">Supported Operating Systems</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567597">Hardware requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567624">CPU Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567637">Memory Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567732">Name Server Intensive Environment Issues</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567742">Supported Operating Systems</a></span></dt> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567594"></a>Hardware requirements</h2></div></div></div> +<a name="id2567597"></a>Hardware requirements</h2></div></div></div> <p> <acronym class="acronym">DNS</acronym> hardware requirements have traditionally been quite modest. @@ -73,7 +73,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567621"></a>CPU Requirements</h2></div></div></div> +<a name="id2567624"></a>CPU Requirements</h2></div></div></div> <p> CPU requirements for <acronym class="acronym">BIND</acronym> 9 range from i486-class machines @@ -84,7 +84,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567634"></a>Memory Requirements</h2></div></div></div> +<a name="id2567637"></a>Memory Requirements</h2></div></div></div> <p> The memory of the server has to be large enough to fit the cache and zones loaded off disk. The <span><strong class="command">max-cache-size</strong></span> @@ -107,7 +107,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567729"></a>Name Server Intensive Environment Issues</h2></div></div></div> +<a name="id2567732"></a>Name Server Intensive Environment Issues</h2></div></div></div> <p> For name server intensive environments, there are two alternative configurations that may be used. The first is where clients and @@ -124,7 +124,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567739"></a>Supported Operating Systems</h2></div></div></div> +<a name="id2567742"></a>Supported Operating Systems</h2></div></div></div> <p> ISC <acronym class="acronym">BIND</acronym> 9 compiles and runs on a large number diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch03.html b/contrib/bind9/doc/arm/Bv9ARM.ch03.html index 32000b1..2aee247 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch03.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch03.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -47,14 +47,14 @@ <dl> <dt><span class="sect1"><a href="Bv9ARM.ch03.html#sample_configuration">Sample Configurations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567771">A Caching-only Name Server</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567992">An Authoritative-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567774">A Caching-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567995">An Authoritative-only Name Server</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568014">Load Balancing</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568369">Name Server Operations</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568018">Load Balancing</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568372">Name Server Operations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568374">Tools for Use With the Name Server Daemon</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570421">Signals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568377">Tools for Use With the Name Server Daemon</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570424">Signals</a></span></dt> </dl></dd> </dl> </div> @@ -68,7 +68,7 @@ <a name="sample_configuration"></a>Sample Configurations</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567771"></a>A Caching-only Name Server</h3></div></div></div> +<a name="id2567774"></a>A Caching-only Name Server</h3></div></div></div> <p> The following sample configuration is appropriate for a caching-only name server for use by clients internal to a corporation. All @@ -98,7 +98,7 @@ zone "0.0.127.in-addr.arpa" { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567992"></a>An Authoritative-only Name Server</h3></div></div></div> +<a name="id2567995"></a>An Authoritative-only Name Server</h3></div></div></div> <p> This sample configuration is for an authoritative-only server that is the master server for "<code class="filename">example.com</code>" @@ -146,7 +146,7 @@ zone "eng.example.com" { </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2568014"></a>Load Balancing</h2></div></div></div> +<a name="id2568018"></a>Load Balancing</h2></div></div></div> <p> A primitive form of load balancing can be achieved in the <acronym class="acronym">DNS</acronym> by using multiple records @@ -289,10 +289,10 @@ zone "eng.example.com" { </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2568369"></a>Name Server Operations</h2></div></div></div> +<a name="id2568372"></a>Name Server Operations</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2568374"></a>Tools for Use With the Name Server Daemon</h3></div></div></div> +<a name="id2568377"></a>Tools for Use With the Name Server Daemon</h3></div></div></div> <p> This section describes several indispensable diagnostic, administrative and monitoring tools available to the system @@ -681,7 +681,7 @@ zone "eng.example.com" { <em class="replaceable"><code>keyname</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span></dt> <dd><p> - Delete a given TKEY-negotated key from the server. + Delete a given TKEY-negotiated key from the server. (This does not apply to statically configured TSIG keys.) </p></dd> @@ -888,7 +888,7 @@ controls { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2570421"></a>Signals</h3></div></div></div> +<a name="id2570424"></a>Signals</h3></div></div></div> <p> Certain UNIX signals cause the name server to take specific actions, as described in the following table. These signals can diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch04.html b/contrib/bind9/doc/arm/Bv9ARM.ch04.html index 8e77a6b..46cb589 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch04.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch04.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -49,59 +49,59 @@ <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570934">Split DNS</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570952">Example split DNS setup</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570937">Split DNS</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570955">Example split DNS setup</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564012">Generate Shared Keys for Each Pair of Hosts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564086">Copying the Shared Secret to Both Machines</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571811">Informing the Servers of the Key's Existence</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571847">Instructing the Server to Use the Key</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571905">TSIG Key Based Access Control</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571954">Errors</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564016">Generate Shared Keys for Each Pair of Hosts</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564089">Copying the Shared Secret to Both Machines</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571814">Informing the Servers of the Key's Existence</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571850">Instructing the Server to Use the Key</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571908">TSIG Key Based Access Control</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571957">Errors</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571968">TKEY</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572153">SIG(0)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571971">TKEY</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572156">SIG(0)</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572221">Generating Keys</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572300">Signing the Zone</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572381">Configuring Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572225">Generating Keys</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572304">Signing the Zone</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572385">Configuring Servers</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571475">Converting from insecure to secure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571512">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563493">Fully automatic zone signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563575">Private-type records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563612">DNSKEY rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563762">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563795">Automatic key rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563821">NSEC3PARAM rollovers via UPDATE</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563899">Converting from NSEC to NSEC3</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563909">Converting from NSEC3 to NSEC</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563922">Converting from secure to insecure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571605">Periodic re-signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571614">NSEC3 and OPTOUT</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608395">Converting from insecure to secure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563581">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563754">Fully automatic zone signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563836">Private-type records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563874">DNSKEY rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563886">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563920">Automatic key rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563946">NSEC3PARAM rollovers via UPDATE</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563956">Converting from NSEC to NSEC3</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571406">Converting from NSEC3 to NSEC</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571419">Converting from secure to insecure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571457">Periodic re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571466">NSEC3 and OPTOUT</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607510">Validating Resolver</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571692">Authoritative Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571658">Validating Resolver</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571681">Authoritative Server</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#pkcs11">PKCS #11 (Cryptoki) support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2610637">Prerequisites</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608477">Building BIND 9 with PKCS#11</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608602">PKCS #11 Tools</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2634916">Using the HSM</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635114">Specifying the engine on the command line</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635160">Running named with automatic zone re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2611650">Prerequisites</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608875">Building BIND 9 with PKCS#11</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609137">PKCS #11 Tools</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635518">Using the HSM</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635785">Specifying the engine on the command line</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635831">Running named with automatic zone re-signing</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572669">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572604">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572868">Address Lookups Using AAAA Records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572889">Address to Name Lookups Using Nibble Format</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572871">Address Lookups Using AAAA Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572892">Address to Name Lookups Using Nibble Format</a></span></dt> </dl></dd> </dl> </div> @@ -258,7 +258,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2570934"></a>Split DNS</h2></div></div></div> +<a name="id2570937"></a>Split DNS</h2></div></div></div> <p> Setting up different views, or visibility, of the DNS space to internal and external resolvers is usually referred to as a @@ -288,7 +288,7 @@ </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2570952"></a>Example split DNS setup</h3></div></div></div> +<a name="id2570955"></a>Example split DNS setup</h3></div></div></div> <p> Let's say a company named <span class="emphasis"><em>Example, Inc.</em></span> (<code class="literal">example.com</code>) @@ -545,7 +545,7 @@ nameserver 172.16.72.4 </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564012"></a>Generate Shared Keys for Each Pair of Hosts</h3></div></div></div> +<a name="id2564016"></a>Generate Shared Keys for Each Pair of Hosts</h3></div></div></div> <p> A shared secret is generated to be shared between <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span>. An arbitrary key name is chosen: "host1-host2.". The key name must @@ -553,7 +553,7 @@ nameserver 172.16.72.4 </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2564029"></a>Automatic Generation</h4></div></div></div> +<a name="id2564033"></a>Automatic Generation</h4></div></div></div> <p> The following command will generate a 128-bit (16 byte) HMAC-SHA256 key as described above. Longer keys are better, but shorter keys @@ -577,7 +577,7 @@ nameserver 172.16.72.4 </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2564068"></a>Manual Generation</h4></div></div></div> +<a name="id2564071"></a>Manual Generation</h4></div></div></div> <p> The shared secret is simply a random sequence of bits, encoded in base-64. Most ASCII strings are valid base-64 strings (assuming @@ -592,7 +592,7 @@ nameserver 172.16.72.4 </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564086"></a>Copying the Shared Secret to Both Machines</h3></div></div></div> +<a name="id2564089"></a>Copying the Shared Secret to Both Machines</h3></div></div></div> <p> This is beyond the scope of DNS. A secure transport mechanism should be used. This could be secure FTP, ssh, telephone, etc. @@ -600,7 +600,7 @@ nameserver 172.16.72.4 </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571811"></a>Informing the Servers of the Key's Existence</h3></div></div></div> +<a name="id2571814"></a>Informing the Servers of the Key's Existence</h3></div></div></div> <p> Imagine <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host 2</em></span> are @@ -627,7 +627,7 @@ key host1-host2. { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571847"></a>Instructing the Server to Use the Key</h3></div></div></div> +<a name="id2571850"></a>Instructing the Server to Use the Key</h3></div></div></div> <p> Since keys are shared between two hosts only, the server must be told when keys are to be used. The following is added to the <code class="filename">named.conf</code> file @@ -659,7 +659,7 @@ server 10.1.2.3 { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571905"></a>TSIG Key Based Access Control</h3></div></div></div> +<a name="id2571908"></a>TSIG Key Based Access Control</h3></div></div></div> <p> <acronym class="acronym">BIND</acronym> allows IP addresses and ranges to be specified in ACL @@ -686,7 +686,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571954"></a>Errors</h3></div></div></div> +<a name="id2571957"></a>Errors</h3></div></div></div> <p> The processing of TSIG signed messages can result in several errors. If a signed message is sent to a non-TSIG aware @@ -712,7 +712,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2571968"></a>TKEY</h2></div></div></div> +<a name="id2571971"></a>TKEY</h2></div></div></div> <p><span><strong class="command">TKEY</strong></span> is a mechanism for automatically generating a shared secret between two hosts. There are several "modes" of @@ -748,7 +748,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2572153"></a>SIG(0)</h2></div></div></div> +<a name="id2572156"></a>SIG(0)</h2></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 partially supports DNSSEC SIG(0) transaction signatures as specified in RFC 2535 and RFC 2931. @@ -809,7 +809,7 @@ allow-update { key host1-host2. ;}; </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572221"></a>Generating Keys</h3></div></div></div> +<a name="id2572225"></a>Generating Keys</h3></div></div></div> <p> The <span><strong class="command">dnssec-keygen</strong></span> program is used to generate keys. @@ -865,7 +865,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572300"></a>Signing the Zone</h3></div></div></div> +<a name="id2572304"></a>Signing the Zone</h3></div></div></div> <p> The <span><strong class="command">dnssec-signzone</strong></span> program is used to sign a zone. @@ -907,7 +907,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572381"></a>Configuring Servers</h3></div></div></div> +<a name="id2572385"></a>Configuring Servers</h3></div></div></div> <p> To enable <span><strong class="command">named</strong></span> to respond appropriately to DNS requests from DNSSEC aware clients, @@ -1067,7 +1067,7 @@ options { from insecure to signed and back again. A secure zone can use either NSEC or NSEC3 chains.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571475"></a>Converting from insecure to secure</h3></div></div></div></div> +<a name="id2608395"></a>Converting from insecure to secure</h3></div></div></div></div> <p>Changing a zone from insecure to secure can be done in two ways: using a dynamic DNS update, or the <span><strong class="command">auto-dnssec</strong></span> zone option.</p> @@ -1093,7 +1093,7 @@ options { well. An NSEC chain will be generated as part of the initial signing process.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571512"></a>Dynamic DNS update method</h3></div></div></div></div> +<a name="id2563581"></a>Dynamic DNS update method</h3></div></div></div></div> <p>To insert the keys via dynamic update:</p> <pre class="screen"> % nsupdate @@ -1129,7 +1129,7 @@ options { <p>While the initial signing and NSEC/NSEC3 chain generation is happening, other updates are possible as well.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563493"></a>Fully automatic zone signing</h3></div></div></div></div> +<a name="id2563754"></a>Fully automatic zone signing</h3></div></div></div></div> <p>To enable automatic signing, add the <span><strong class="command">auto-dnssec</strong></span> option to the zone statement in <code class="filename">named.conf</code>. @@ -1164,7 +1164,7 @@ options { configuration. If this has not been done, the configuration will fail.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563575"></a>Private-type records</h3></div></div></div></div> +<a name="id2563836"></a>Private-type records</h3></div></div></div></div> <p>The state of the signing process is signaled by private-type records (with a default type value of 65534). When signing is complete, these records will have a nonzero value for @@ -1205,12 +1205,12 @@ options { <p> </p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563612"></a>DNSKEY rollovers</h3></div></div></div></div> +<a name="id2563874"></a>DNSKEY rollovers</h3></div></div></div></div> <p>As with insecure-to-secure conversions, rolling DNSSEC keys can be done in two ways: using a dynamic DNS update, or the <span><strong class="command">auto-dnssec</strong></span> zone option.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563762"></a>Dynamic DNS update method</h3></div></div></div></div> +<a name="id2563886"></a>Dynamic DNS update method</h3></div></div></div></div> <p> To perform key rollovers via dynamic update, you need to add the <code class="filename">K*</code> files for the new keys so that <span><strong class="command">named</strong></span> can find them. You can then add the new @@ -1232,7 +1232,7 @@ options { <span><strong class="command">named</strong></span> will clean out any signatures generated by the old key after the update completes.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563795"></a>Automatic key rollovers</h3></div></div></div></div> +<a name="id2563920"></a>Automatic key rollovers</h3></div></div></div></div> <p>When a new key reaches its activation date (as set by <span><strong class="command">dnssec-keygen</strong></span> or <span><strong class="command">dnssec-settime</strong></span>), if the <span><strong class="command">auto-dnssec</strong></span> zone option is set to @@ -1247,27 +1247,27 @@ options { completes in 30 days, after which it will be safe to remove the old key from the DNSKEY RRset.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563821"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div> +<a name="id2563946"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div> <p>Add the new NSEC3PARAM record via dynamic update. When the new NSEC3 chain has been generated, the NSEC3PARAM flag field will be zero. At this point you can remove the old NSEC3PARAM record. The old chain will be removed after the update request completes.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563899"></a>Converting from NSEC to NSEC3</h3></div></div></div></div> +<a name="id2563956"></a>Converting from NSEC to NSEC3</h3></div></div></div></div> <p>To do this, you just need to add an NSEC3PARAM record. When the conversion is complete, the NSEC chain will have been removed and the NSEC3PARAM record will have a zero flag field. The NSEC3 chain will be generated before the NSEC chain is destroyed.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563909"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div> +<a name="id2571406"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div> <p>To do this, use <span><strong class="command">nsupdate</strong></span> to remove all NSEC3PARAM records with a zero flag field. The NSEC chain will be generated before the NSEC3 chain is removed.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563922"></a>Converting from secure to insecure</h3></div></div></div></div> +<a name="id2571419"></a>Converting from secure to insecure</h3></div></div></div></div> <p>To convert a signed zone to unsigned using dynamic DNS, delete all the DNSKEY records from the zone apex using <span><strong class="command">nsupdate</strong></span>. All signatures, NSEC or NSEC3 chains, @@ -1282,14 +1282,14 @@ options { <span><strong class="command">allow</strong></span> instead (or it will re-sign). </p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571605"></a>Periodic re-signing</h3></div></div></div></div> +<a name="id2571457"></a>Periodic re-signing</h3></div></div></div></div> <p>In any secure zone which supports dynamic updates, named will periodically re-sign RRsets which have not been re-signed as a result of some update action. The signature lifetimes will be adjusted so as to spread the re-sign load over time rather than all at once.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571614"></a>NSEC3 and OPTOUT</h3></div></div></div></div> +<a name="id2571466"></a>NSEC3 and OPTOUT</h3></div></div></div></div> <p> <span><strong class="command">named</strong></span> only supports creating new NSEC3 chains where all the NSEC3 records in the zone have the same OPTOUT @@ -1311,7 +1311,7 @@ options { configuration files.</p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607510"></a>Validating Resolver</h3></div></div></div> +<a name="id2571658"></a>Validating Resolver</h3></div></div></div> <p>To configure a validating resolver to use RFC 5011 to maintain a trust anchor, configure the trust anchor using a <span><strong class="command">managed-keys</strong></span> statement. Information about @@ -1322,7 +1322,7 @@ options { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571692"></a>Authoritative Server</h3></div></div></div> +<a name="id2571681"></a>Authoritative Server</h3></div></div></div> <p>To set up an authoritative zone for RFC 5011 trust anchor maintenance, generate two (or more) key signing keys (KSKs) for the zone. Sign the zone with one of them; this is the "active" @@ -1396,7 +1396,7 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code>< Debian Linux, Solaris x86 and Windows Server 2003.</p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2610637"></a>Prerequisites</h3></div></div></div> +<a name="id2611650"></a>Prerequisites</h3></div></div></div> <p>See the HSM vendor documentation for information about installing, initializing, testing and troubleshooting the HSM.</p> @@ -1410,7 +1410,7 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code>< This is a shared library object, providing a low-level PKCS #11 interface to the HSM hardware. It is dynamically loaded by OpenSSL at runtime. The PKCS #11 provider comes from the HSM - vendor, and and is specific to the HSM to be controlled.</p> + vendor, and is specific to the HSM to be controlled.</p> <p>There are two "flavors" of PKCS #11 support provided by the patched OpenSSL, one of which must be chosen at configuration time. The correct choice depends on the HSM @@ -1473,7 +1473,7 @@ $ <strong class="userinput"><code>patch -p1 -d openssl-0.9.8s \ when we configure BIND 9.</p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608071"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div> +<a name="id2608605"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div> <p>The AEP Keyper is a highly secure key storage device, but does not provide hardware cryptographic acceleration. It can carry out cryptographic operations, but it is probably @@ -1505,7 +1505,7 @@ $ <strong class="userinput"><code>./Configure linux-generic32 -m32 -pthread \ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608140"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div> +<a name="id2608675"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div> <p>The SCA-6000 PKCS #11 provider is installed as a system library, libpkcs11. It is a true crypto accelerator, up to 4 times faster than any CPU, so the flavor shall be @@ -1527,7 +1527,7 @@ $ <strong class="userinput"><code>./Configure solaris64-x86_64-cc \ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608189"></a>Building OpenSSL for SoftHSM</h4></div></div></div> +<a name="id2608724"></a>Building OpenSSL for SoftHSM</h4></div></div></div> <p>SoftHSM is a software library provided by the OpenDNSSEC project (http://www.opendnssec.org) which provides a PKCS#11 interface to a virtual HSM, implemented in the form of encrypted @@ -1587,12 +1587,12 @@ $ <strong class="userinput"><code>./Configure linux-x86_64 -pthread \ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608477"></a>Building BIND 9 with PKCS#11</h3></div></div></div> +<a name="id2608875"></a>Building BIND 9 with PKCS#11</h3></div></div></div> <p>When building BIND 9, the location of the custom-built OpenSSL library must be specified via configure.</p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608486"></a>Configuring BIND 9 for Linux with the AEP Keyper</h4></div></div></div> +<a name="id2608952"></a>Configuring BIND 9 for Linux with the AEP Keyper</h4></div></div></div> <p>To link with the PKCS #11 provider, threads must be enabled in the BIND 9 build.</p> <p>The PKCS #11 library for the AEP Keyper is currently @@ -1608,7 +1608,7 @@ $ <strong class="userinput"><code>./configure CC="gcc -m32" --enable-threads \ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608518"></a>Configuring BIND 9 for Solaris with the SCA 6000</h4></div></div></div> +<a name="id2608984"></a>Configuring BIND 9 for Solaris with the SCA 6000</h4></div></div></div> <p>To link with the PKCS #11 provider, threads must be enabled in the BIND 9 build.</p> <pre class="screen"> @@ -1626,7 +1626,7 @@ $ <strong class="userinput"><code>./configure CC="cc -xarch=amd64" --enable-thre </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608554"></a>Configuring BIND 9 for SoftHSM</h4></div></div></div> +<a name="id2609089"></a>Configuring BIND 9 for SoftHSM</h4></div></div></div> <pre class="screen"> $ <strong class="userinput"><code>cd ../bind9</code></strong> $ <strong class="userinput"><code>./configure --enable-threads \ @@ -1643,7 +1643,7 @@ $ <strong class="userinput"><code>./configure --enable-threads \ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608602"></a>PKCS #11 Tools</h3></div></div></div> +<a name="id2609137"></a>PKCS #11 Tools</h3></div></div></div> <p>BIND 9 includes a minimal set of tools to operate the HSM, including <span><strong class="command">pkcs11-keygen</strong></span> to generate a new key pair @@ -1661,7 +1661,7 @@ $ <strong class="userinput"><code>./configure --enable-threads \ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2634916"></a>Using the HSM</h3></div></div></div> +<a name="id2635518"></a>Using the HSM</h3></div></div></div> <p>First, we must set up the runtime environment so the OpenSSL and PKCS #11 libraries can be loaded:</p> <pre class="screen"> @@ -1749,7 +1749,7 @@ example.net.signed </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2635114"></a>Specifying the engine on the command line</h3></div></div></div> +<a name="id2635785"></a>Specifying the engine on the command line</h3></div></div></div> <p>The OpenSSL engine can be specified in <span><strong class="command">named</strong></span> and all of the BIND <span><strong class="command">dnssec-*</strong></span> tools by using the "-E @@ -1770,7 +1770,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2635160"></a>Running named with automatic zone re-signing</h3></div></div></div> +<a name="id2635831"></a>Running named with automatic zone re-signing</h3></div></div></div> <p>If you want <span><strong class="command">named</strong></span> to dynamically re-sign zones using HSM keys, and/or to to sign new records inserted via nsupdate, then @@ -1806,7 +1806,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2572669"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div> +<a name="id2572604"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 fully supports all currently defined forms of IPv6 name to address and address to name @@ -1844,7 +1844,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572868"></a>Address Lookups Using AAAA Records</h3></div></div></div> +<a name="id2572871"></a>Address Lookups Using AAAA Records</h3></div></div></div> <p> The IPv6 AAAA record is a parallel to the IPv4 A record, and, unlike the deprecated A6 record, specifies the entire @@ -1863,7 +1863,7 @@ host 3600 IN AAAA 2001:db8::1 </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572889"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div> +<a name="id2572892"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div> <p> When looking up an address in nibble format, the address components are simply reversed, just as in IPv4, and diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch05.html b/contrib/bind9/doc/arm/Bv9ARM.ch05.html index 0779c97..cd35bbc 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch05.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch05.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -45,13 +45,13 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572922">The Lightweight Resolver Library</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572925">The Lightweight Resolver Library</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch05.html#lwresd">Running a Resolver Daemon</a></span></dt> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2572922"></a>The Lightweight Resolver Library</h2></div></div></div> +<a name="id2572925"></a>The Lightweight Resolver Library</h2></div></div></div> <p> Traditionally applications have been linked with a stub resolver library that sends recursive DNS queries to a local caching name diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch06.html b/contrib/bind9/doc/arm/Bv9ARM.ch06.html index bda489d..e26bf6a 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch06.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch06.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -48,58 +48,58 @@ <dt><span class="sect1"><a href="Bv9ARM.ch06.html#configuration_file_elements">Configuration File Elements</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#address_match_lists">Address Match Lists</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574332">Comment Syntax</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574405">Comment Syntax</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#Configuration_File_Grammar">Configuration File Grammar</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574986"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574990"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#acl"><span><strong class="command">acl</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575176"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575180"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#controls_statement_definition_and_usage"><span><strong class="command">controls</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575467"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575484"><span><strong class="command">include</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575472"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575489"><span><strong class="command">include</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575576"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575600"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575758"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575884"><span><strong class="command">logging</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575649"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575672"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575763"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575889"><span><strong class="command">logging</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577910"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577984"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578116"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578160"><span><strong class="command">masters</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577914"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577988"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578120"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578164"><span><strong class="command">masters</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578174"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578179"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589534"><span><strong class="command">statistics-channels</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590070"><span><strong class="command">statistics-channels</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#trusted-keys"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589742"><span><strong class="command">trusted-keys</strong></span> Statement Definition +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590278"><span><strong class="command">trusted-keys</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589858"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590325"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#managed-keys"><span><strong class="command">managed-keys</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590352"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590766"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591902"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592398"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2595170">Zone File</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2595755">Zone File</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597537">Discussion of MX Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597986">Discussion of MX Records</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598084">Inverse Mapping in IPv4</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598211">Other Zone File Directives</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598552"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598601">Inverse Mapping in IPv4</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598796">Other Zone File Directives</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2599138"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#statistics">BIND9 Statistics</a></span></dt> @@ -409,31 +409,45 @@ </td> <td> <p> - A number, the word <strong class="userinput"><code>unlimited</code></strong>, - or the word <strong class="userinput"><code>default</code></strong>. + A 64-bit unsigned integer, or the keywords + <strong class="userinput"><code>unlimited</code></strong> or + <strong class="userinput"><code>default</code></strong>. </p> <p> - An <code class="varname">unlimited</code> <code class="varname">size_spec</code> requests unlimited - use, or the maximum available amount. A <code class="varname">default size_spec</code> uses - the limit that was in force when the server was started. + Integers may take values + 0 <= value <= 18446744073709551615, though + certain parameters may use a more limited range + within these extremes. In most cases, setting a + value to 0 does not literally mean zero; it means + "undefined" or "as big as psosible", depending on + the context. See the expalantions of particular + parameters that use <code class="varname">size_spec</code> + for details on how they interpret its use. </p> <p> - A <code class="varname">number</code> can optionally be - followed by a scaling factor: + Numeric values can optionally be followed by a + scaling factor: <strong class="userinput"><code>K</code></strong> or <strong class="userinput"><code>k</code></strong> for kilobytes, <strong class="userinput"><code>M</code></strong> or <strong class="userinput"><code>m</code></strong> for megabytes, and - <strong class="userinput"><code>G</code></strong> or <strong class="userinput"><code>g</code></strong> for gigabytes, - which scale by 1024, 1024*1024, and 1024*1024*1024 - respectively. + <strong class="userinput"><code>G</code></strong> or <strong class="userinput"><code>g</code></strong> + for gigabytes, which scale by 1024, 1024*1024, and + 1024*1024*1024 respectively. </p> <p> - The value must be representable as a 64-bit unsigned integer - (0 to 18446744073709551615, inclusive). - Using <code class="varname">unlimited</code> is the best - way - to safely set a really large number. + <code class="varname">unlimited</code> generally means + "as big as possible", though in certain contexts, + (including <code class="option">max-cache-size</code>), it may + mean the largest possible 32-bit unsigned integer + (0xffffffff); this distinction can be important when + dealing with larger quantities. + <code class="varname">unlimited</code> is usually the best way + to safely set a very large number. + </p> + <p> + <code class="varname">default</code> + uses the limit that was in force when the server was started. </p> </td> </tr> @@ -477,7 +491,7 @@ <a name="address_match_lists"></a>Address Match Lists</h3></div></div></div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574099"></a>Syntax</h4></div></div></div> +<a name="id2574103"></a>Syntax</h4></div></div></div> <pre class="programlisting"><code class="varname">address_match_list</code> = address_match_list_element ; [<span class="optional"> address_match_list_element; ... </span>] <code class="varname">address_match_list_element</code> = [<span class="optional"> ! </span>] (ip_address [<span class="optional">/length</span>] | @@ -486,7 +500,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574126"></a>Definition and Usage</h4></div></div></div> +<a name="id2574131"></a>Definition and Usage</h4></div></div></div> <p> Address match lists are primarily used to determine access control for various server operations. They are also used in @@ -570,7 +584,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2574332"></a>Comment Syntax</h3></div></div></div> +<a name="id2574405"></a>Comment Syntax</h3></div></div></div> <p> The <acronym class="acronym">BIND</acronym> 9 comment syntax allows for comments to appear @@ -580,7 +594,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574347"></a>Syntax</h4></div></div></div> +<a name="id2574420"></a>Syntax</h4></div></div></div> <p> </p> <pre class="programlisting">/* This is a <acronym class="acronym">BIND</acronym> comment as in C */</pre> @@ -596,7 +610,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574377"></a>Definition and Usage</h4></div></div></div> +<a name="id2574450"></a>Definition and Usage</h4></div></div></div> <p> Comments may appear anywhere that whitespace may appear in a <acronym class="acronym">BIND</acronym> configuration file. @@ -848,7 +862,7 @@ </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2574986"></a><span><strong class="command">acl</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2574990"></a><span><strong class="command">acl</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">acl</strong></span> acl-name { address_match_list }; @@ -930,7 +944,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575176"></a><span><strong class="command">controls</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575180"></a><span><strong class="command">controls</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">controls</strong></span> { [ inet ( ip_addr | * ) [ port ip_port ] allow { <em class="replaceable"><code> address_match_list </code></em> } @@ -1054,12 +1068,12 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575467"></a><span><strong class="command">include</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575472"></a><span><strong class="command">include</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">include</strong></span> <em class="replaceable"><code>filename</code></em>;</pre> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575484"></a><span><strong class="command">include</strong></span> Statement Definition and +<a name="id2575489"></a><span><strong class="command">include</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">include</strong></span> statement inserts the @@ -1074,7 +1088,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575576"></a><span><strong class="command">key</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575649"></a><span><strong class="command">key</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">key</strong></span> <em class="replaceable"><code>key_id</code></em> { algorithm <em class="replaceable"><code>string</code></em>; secret <em class="replaceable"><code>string</code></em>; @@ -1083,7 +1097,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575600"></a><span><strong class="command">key</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2575672"></a><span><strong class="command">key</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">key</strong></span> statement defines a shared secret key for use with TSIG (see <a href="Bv9ARM.ch04.html#tsig" title="TSIG">the section called “TSIG”</a>) @@ -1130,12 +1144,12 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575758"></a><span><strong class="command">logging</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575763"></a><span><strong class="command">logging</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">logging</strong></span> { [ <span><strong class="command">channel</strong></span> <em class="replaceable"><code>channel_name</code></em> { ( <span><strong class="command">file</strong></span> <em class="replaceable"><code>path_name</code></em> [ <span><strong class="command">versions</strong></span> ( <em class="replaceable"><code>number</code></em> | <span><strong class="command">unlimited</strong></span> ) ] - [ <span><strong class="command">size</strong></span> <em class="replaceable"><code>size spec</code></em> ] + [ <span><strong class="command">size</strong></span> <em class="replaceable"><code>size_spec</code></em> ] | <span><strong class="command">syslog</strong></span> <em class="replaceable"><code>syslog_facility</code></em> | <span><strong class="command">stderr</strong></span> | <span><strong class="command">null</strong></span> ); @@ -1154,7 +1168,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575884"></a><span><strong class="command">logging</strong></span> Statement Definition and +<a name="id2575889"></a><span><strong class="command">logging</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">logging</strong></span> statement configures a @@ -1188,7 +1202,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2576005"></a>The <span><strong class="command">channel</strong></span> Phrase</h4></div></div></div> +<a name="id2576009"></a>The <span><strong class="command">channel</strong></span> Phrase</h4></div></div></div> <p> All log output goes to one or more <span class="emphasis"><em>channels</em></span>; you can make as many of them as you want. @@ -1766,7 +1780,7 @@ category notify { null; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2577322"></a>The <span><strong class="command">query-errors</strong></span> Category</h4></div></div></div> +<a name="id2577326"></a>The <span><strong class="command">query-errors</strong></span> Category</h4></div></div></div> <p> The <span><strong class="command">query-errors</strong></span> category is specifically intended for debugging purposes: To identify @@ -1994,7 +2008,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2577910"></a><span><strong class="command">lwres</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2577914"></a><span><strong class="command">lwres</strong></span> Statement Grammar</h3></div></div></div> <p> This is the grammar of the <span><strong class="command">lwres</strong></span> statement in the <code class="filename">named.conf</code> file: @@ -2010,7 +2024,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2577984"></a><span><strong class="command">lwres</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2577988"></a><span><strong class="command">lwres</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">lwres</strong></span> statement configures the name @@ -2061,7 +2075,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2578116"></a><span><strong class="command">masters</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2578120"></a><span><strong class="command">masters</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"> <span><strong class="command">masters</strong></span> <em class="replaceable"><code>name</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] { ( <em class="replaceable"><code>masters_list</code></em> | <em class="replaceable"><code>ip_addr</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] [<span class="optional">key <em class="replaceable"><code>key</code></em></span>] ) ; [<span class="optional">...</span>] }; @@ -2069,7 +2083,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2578160"></a><span><strong class="command">masters</strong></span> Statement Definition and +<a name="id2578164"></a><span><strong class="command">masters</strong></span> Statement Definition and Usage</h3></div></div></div> <p><span><strong class="command">masters</strong></span> lists allow for a common set of masters to be easily used by @@ -2078,7 +2092,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2578174"></a><span><strong class="command">options</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2578179"></a><span><strong class="command">options</strong></span> Statement Grammar</h3></div></div></div> <p> This is the grammar of the <span><strong class="command">options</strong></span> statement in the <code class="filename">named.conf</code> file: @@ -2122,6 +2136,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> multiple-cnames <em class="replaceable"><code>yes_or_no</code></em>; </span>] [<span class="optional"> notify <em class="replaceable"><code>yes_or_no</code></em> | <em class="replaceable"><code>explicit</code></em> | <em class="replaceable"><code>master-only</code></em>; </span>] [<span class="optional"> recursion <em class="replaceable"><code>yes_or_no</code></em>; </span>] + [<span class="optional"> request-nsid <em class="replaceable"><code>yes_or_no</code></em>; </span>] [<span class="optional"> rfc2308-type1 <em class="replaceable"><code>yes_or_no</code></em>; </span>] [<span class="optional"> use-id-pool <em class="replaceable"><code>yes_or_no</code></em>; </span>] [<span class="optional"> maintain-ixfr-base <em class="replaceable"><code>yes_or_no</code></em>; </span>] @@ -2148,6 +2163,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> check-mx-cname ( <em class="replaceable"><code>warn</code></em> | <em class="replaceable"><code>fail</code></em> | <em class="replaceable"><code>ignore</code></em> ); </span>] [<span class="optional"> check-srv-cname ( <em class="replaceable"><code>warn</code></em> | <em class="replaceable"><code>fail</code></em> | <em class="replaceable"><code>ignore</code></em> ); </span>] [<span class="optional"> check-sibling <em class="replaceable"><code>yes_or_no</code></em>; </span>] + [<span class="optional"> check-spf ( <em class="replaceable"><code>warn</code></em> | <em class="replaceable"><code>fail</code></em> | <em class="replaceable"><code>ignore</code></em> ); </span>] [<span class="optional"> allow-new-zones { <em class="replaceable"><code>yes_or_no</code></em> }; </span>] [<span class="optional"> allow-notify { <em class="replaceable"><code>address_match_list</code></em> }; </span>] [<span class="optional"> allow-query { <em class="replaceable"><code>address_match_list</code></em> }; </span>] @@ -2281,7 +2297,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> policy given | disabled | passthru | nxdomain | nodata | cname <em class="replaceable"><code>domain</code></em> </span>] [<span class="optional"> recursive-only <em class="replaceable"><code>yes_or_no</code></em> </span>] [<span class="optional"> max-policy-ttl <em class="replaceable"><code>number</code></em> </span>] ; } [<span class="optional"> recursive-only <em class="replaceable"><code>yes_or_no</code></em> </span>] [<span class="optional"> max-policy-ttl <em class="replaceable"><code>number</code></em> </span>] - [<span class="optional"> break-dnssec <em class="replaceable"><code>yes_or_no</code></em> </span>] ; </span>] + [<span class="optional"> break-dnssec <em class="replaceable"><code>yes_or_no</code></em> </span>] [<span class="optional"> min-ns-dots <em class="replaceable"><code>number</code></em> </span>] ; </span>] }; </pre> </div> @@ -2411,13 +2427,22 @@ badresp:1,adberr:0,findfail:0,valfail:0] <code class="filename">session.key</code>.) </p></dd> <dt><span class="term"><span><strong class="command">managed-keys-directory</strong></span></span></dt> -<dd><p> - The directory used to hold the files used to track managed keys. - By default it is the working directory. It there are no - views then the file <code class="filename">managed-keys.bind</code> - otherwise a SHA256 hash of the view name is used with - <code class="filename">.mkeys</code> extension added. - </p></dd> +<dd> +<p> + Specifies the directory in which to store the files that + track managed DNSSEC keys. By default, this is the working + directory. + </p> +<p> + If <span><strong class="command">named</strong></span> is not configured to use views, + then managed keys for the server will be tracked in a single + file called <code class="filename">managed-keys.bind</code>. + Otherwise, managed keys will be tracked in separate files, + one file per view; each file name will be the SHA256 hash + of the view name, followed by the extension + <code class="filename">.mkeys</code>. + </p> +</dd> <dt><span class="term"><span><strong class="command">named-xfer</strong></span></span></dt> <dd><p> <span class="emphasis"><em>This option is obsolete.</em></span> It @@ -2691,7 +2716,7 @@ options { installed along with <acronym class="acronym">BIND</acronym> 9, and is current as of the release date. If the DLV key expires, a new copy of <code class="filename">bind.keys</code> can be downloaded - from <a href="" target="_top">https://www.isc.org/solutions/dlv</a>. + from <a href="https://www.isc.org/solutions/dlv/" target="_top">https://www.isc.org/solutions/dlv/</a>. </p> <p> (To prevent problems if <code class="filename">bind.keys</code> is @@ -3188,6 +3213,17 @@ options { operation, such as NOTIFY address lookups. See also <span><strong class="command">fetch-glue</strong></span> above. </p></dd> +<dt><span class="term"><span><strong class="command">request-nsid</strong></span></span></dt> +<dd><p> + If <strong class="userinput"><code>yes</code></strong>, then an empty EDNS(0) + NSID (Name Server Identifier) option is sent with all + queries to authoritative name servers during iterative + resolution. If the authoritative server returns an NSID + option in its response, then its contents are logged in + the <span><strong class="command">resolver</strong></span> category at level + <span><strong class="command">info</strong></span>. + The default is <strong class="userinput"><code>no</code></strong>. + </p></dd> <dt><span class="term"><span><strong class="command">rfc2308-type1</strong></span></span></dt> <dd> <p> @@ -3546,7 +3582,8 @@ options { for non-terminal wildcards and issue a warning. </p></dd> <dt><span class="term"><span><strong class="command">check-integrity</strong></span></span></dt> -<dd><p> +<dd> +<p> Perform post load zone integrity checks on master zones. This checks that MX and SRV records refer to address (A or AAAA) records and that glue @@ -3558,7 +3595,15 @@ options { checked (for out-of-zone names and glue consistency checks use <span><strong class="command">named-checkzone</strong></span>). The default is <span><strong class="command">yes</strong></span>. - </p></dd> + </p> +<p> + Check that the two forms of Sender Policy Framework + records (TXT records starting with "v=spf1" and SPF) either + both exist or both don't exist. Warnings are + emitted it they don't and be suppressed with + <span><strong class="command">check-spf</strong></span>. + </p> +</dd> <dt><span class="term"><span><strong class="command">check-mx-cname</strong></span></span></dt> <dd><p> If <span><strong class="command">check-integrity</strong></span> is set then @@ -3576,6 +3621,14 @@ options { When performing integrity checks, also check that sibling glue exists. The default is <span><strong class="command">yes</strong></span>. </p></dd> +<dt><span class="term"><span><strong class="command">check-spf</strong></span></span></dt> +<dd><p> + When performing integrity checks, check that the + two forms of Sender Policy Framwork records (TXT + records starting with "v=spf1" and SPF) both exist + or both don't exist and issue a warning if not + met. The default is <span><strong class="command">warn</strong></span>. + </p></dd> <dt><span class="term"><span><strong class="command">zero-no-soa-ttl</strong></span></span></dt> <dd><p> When returning authoritative negative responses to @@ -3669,7 +3722,7 @@ options { </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2583675"></a>Forwarding</h4></div></div></div> +<a name="id2583834"></a>Forwarding</h4></div></div></div> <p> The forwarding facility can be used to create a large site-wide cache on a few servers, reducing traffic over links to external @@ -3713,7 +3766,7 @@ options { </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2583734"></a>Dual-stack Servers</h4></div></div></div> +<a name="id2583893"></a>Dual-stack Servers</h4></div></div></div> <p> Dual-stack servers are used as servers of last resort to work around @@ -3788,6 +3841,12 @@ options { necessarily knowing the internal network's addresses. </p> <p> + Note that <span><strong class="command">allow-query-on</strong></span> is only + checked for queries that are permitted by + <span><strong class="command">allow-query</strong></span>. A query must be + allowed by both ACLs, or it will be refused. + </p> +<p> <span><strong class="command">allow-query-on</strong></span> may also be specified in the <span><strong class="command">zone</strong></span> statement, in which case it overrides the @@ -3924,7 +3983,7 @@ options { </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2584422"></a>Interfaces</h4></div></div></div> +<a name="id2584590"></a>Interfaces</h4></div></div></div> <p> The interfaces and ports that the server will answer queries from may be specified using the <span><strong class="command">listen-on</strong></span> option. <span><strong class="command">listen-on</strong></span> takes @@ -4383,7 +4442,7 @@ avoid-v6-udp-ports {}; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2585495"></a>UDP Port Lists</h4></div></div></div> +<a name="id2585664"></a>UDP Port Lists</h4></div></div></div> <p> <span><strong class="command">use-v4-udp-ports</strong></span>, <span><strong class="command">avoid-v4-udp-ports</strong></span>, @@ -4425,7 +4484,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2585555"></a>Operating System Resource Limits</h4></div></div></div> +<a name="id2585723"></a>Operating System Resource Limits</h4></div></div></div> <p> The server's usage of many system resources can be limited. Scaled values are allowed when specifying resource limits. For @@ -4587,7 +4646,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2586114"></a>Periodic Task Intervals</h4></div></div></div> +<a name="id2586350"></a>Periodic Task Intervals</h4></div></div></div> <div class="variablelist"><dl> <dt><span class="term"><span><strong class="command">cleaning-interval</strong></span></span></dt> <dd><p> @@ -5171,12 +5230,16 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; built-in view (see <a href="Bv9ARM.ch06.html#view_statement_grammar" title="view Statement Grammar">the section called “<span><strong class="command">view</strong></span> Statement Grammar”</a>) of class <span><strong class="command">CHAOS</strong></span> which is separate from the - default view of - class <span><strong class="command">IN</strong></span>; therefore, any global - server options - such as <span><strong class="command">allow-query</strong></span> do not apply - the these zones. - If you feel the need to disable these zones, use the options + default view of class <span><strong class="command">IN</strong></span>. Most global + configuration options (<span><strong class="command">allow-query</strong></span>, + etc) will apply to this view, but some are locally + overridden: <span><strong class="command">notify</strong></span>, + <span><strong class="command">recursion</strong></span> and + <span><strong class="command">allow-new-zones</strong></span> are + always set to <strong class="userinput"><code>no</code></strong>. + </p> +<p> + If you need to disable these zones, use the options below, or hide the built-in <span><strong class="command">CHAOS</strong></span> view by defining an explicit view of class <span><strong class="command">CHAOS</strong></span> @@ -5231,7 +5294,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; servers. The official servers which cover these namespaces return NXDOMAIN responses to these queries. In particular, these cover the reverse namespaces for addresses from - RFC 1918, RFC 4193, and RFC 5737. They also include the + RFC 1918, RFC 4193, RFC 5737 and RFC 6598. They also include the reverse namespace for IPv6 local address (locally assigned), IPv6 link local addresses, the IPv6 loopback address and the IPv6 unknown address. @@ -5263,6 +5326,70 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; <li>30.172.IN-ADDR.ARPA</li> <li>31.172.IN-ADDR.ARPA</li> <li>168.192.IN-ADDR.ARPA</li> +<li>64.100.IN-ADDR.ARPA</li> +<li>65.100.IN-ADDR.ARPA</li> +<li>66.100.IN-ADDR.ARPA</li> +<li>67.100.IN-ADDR.ARPA</li> +<li>68.100.IN-ADDR.ARPA</li> +<li>69.100.IN-ADDR.ARPA</li> +<li>70.100.IN-ADDR.ARPA</li> +<li>71.100.IN-ADDR.ARPA</li> +<li>72.100.IN-ADDR.ARPA</li> +<li>73.100.IN-ADDR.ARPA</li> +<li>74.100.IN-ADDR.ARPA</li> +<li>75.100.IN-ADDR.ARPA</li> +<li>76.100.IN-ADDR.ARPA</li> +<li>77.100.IN-ADDR.ARPA</li> +<li>78.100.IN-ADDR.ARPA</li> +<li>79.100.IN-ADDR.ARPA</li> +<li>80.100.IN-ADDR.ARPA</li> +<li>81.100.IN-ADDR.ARPA</li> +<li>82.100.IN-ADDR.ARPA</li> +<li>83.100.IN-ADDR.ARPA</li> +<li>84.100.IN-ADDR.ARPA</li> +<li>85.100.IN-ADDR.ARPA</li> +<li>86.100.IN-ADDR.ARPA</li> +<li>87.100.IN-ADDR.ARPA</li> +<li>88.100.IN-ADDR.ARPA</li> +<li>89.100.IN-ADDR.ARPA</li> +<li>90.100.IN-ADDR.ARPA</li> +<li>91.100.IN-ADDR.ARPA</li> +<li>92.100.IN-ADDR.ARPA</li> +<li>93.100.IN-ADDR.ARPA</li> +<li>94.100.IN-ADDR.ARPA</li> +<li>95.100.IN-ADDR.ARPA</li> +<li>96.100.IN-ADDR.ARPA</li> +<li>97.100.IN-ADDR.ARPA</li> +<li>98.100.IN-ADDR.ARPA</li> +<li>99.100.IN-ADDR.ARPA</li> +<li>100.100.IN-ADDR.ARPA</li> +<li>101.100.IN-ADDR.ARPA</li> +<li>102.100.IN-ADDR.ARPA</li> +<li>103.100.IN-ADDR.ARPA</li> +<li>104.100.IN-ADDR.ARPA</li> +<li>105.100.IN-ADDR.ARPA</li> +<li>106.100.IN-ADDR.ARPA</li> +<li>107.100.IN-ADDR.ARPA</li> +<li>108.100.IN-ADDR.ARPA</li> +<li>109.100.IN-ADDR.ARPA</li> +<li>110.100.IN-ADDR.ARPA</li> +<li>111.100.IN-ADDR.ARPA</li> +<li>112.100.IN-ADDR.ARPA</li> +<li>113.100.IN-ADDR.ARPA</li> +<li>114.100.IN-ADDR.ARPA</li> +<li>115.100.IN-ADDR.ARPA</li> +<li>116.100.IN-ADDR.ARPA</li> +<li>117.100.IN-ADDR.ARPA</li> +<li>118.100.IN-ADDR.ARPA</li> +<li>119.100.IN-ADDR.ARPA</li> +<li>120.100.IN-ADDR.ARPA</li> +<li>121.100.IN-ADDR.ARPA</li> +<li>122.100.IN-ADDR.ARPA</li> +<li>123.100.IN-ADDR.ARPA</li> +<li>124.100.IN-ADDR.ARPA</li> +<li>125.100.IN-ADDR.ARPA</li> +<li>126.100.IN-ADDR.ARPA</li> +<li>127.100.IN-ADDR.ARPA</li> <li>0.IN-ADDR.ARPA</li> <li>127.IN-ADDR.ARPA</li> <li>254.169.IN-ADDR.ARPA</li> @@ -5427,7 +5554,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2588152"></a>Content Filtering</h4></div></div></div> +<a name="id2588612"></a>Content Filtering</h4></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 provides the ability to filter out DNS responses from external DNS servers containing @@ -5480,7 +5607,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; to get access to an internal node of your local network that couldn't be externally accessed otherwise. See the paper available at - <a href="" target="_top"> + <a href="http://portal.acm.org/citation.cfm?id=1315245.1315298" target="_top"> http://portal.acm.org/citation.cfm?id=1315245.1315298 </a> for more details about the attacks. @@ -5550,7 +5677,7 @@ deny-answer-aliases { "example.net"; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2588343"></a>Response Policy Zone (RPZ) Rewriting</h4></div></div></div> +<a name="id2588738"></a>Response Policy Zone (RPZ) Rewriting</h4></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 includes a limited mechanism to modify DNS responses for requests @@ -5606,13 +5733,15 @@ deny-answer-aliases { "example.net"; }; They are encoded as subdomains of <strong class="userinput"><code>rpz-nsdomain</code></strong> relativized to the RPZ origin name. - </p> -<p> NSIP triggers match IP addresses in A and AAAA RRsets for domains that can be checked against NSDNAME policy records. NSIP triggers are encoded like IP triggers except as subdomains of <strong class="userinput"><code>rpz-nsip</code></strong>. + NSDNAME and NSIP triggers are checked only for names with at + least <span><strong class="command">min-ns-dots</strong></span> dots. + The default value of <span><strong class="command">min-ns-dots</strong></span> is 1 to + exclude top level domains. </p> <p> The query response is checked against all RPZs, so @@ -5651,16 +5780,6 @@ deny-answer-aliases { "example.net"; }; and addresses. </p> <p> - Authority verification issues and variations in authority data - can cause inconsistent results for NSIP and NSDNAME policy records. - Glue NS records often differ from authoritative NS records. - So they are available - only when <acronym class="acronym">BIND</acronym> is built with the - <strong class="userinput"><code>--enable-rpz-nsip</code></strong> or - <strong class="userinput"><code>--enable-rpz-nsdname</code></strong> options - on the "configure" command line. - </p> -<p> RPZ record sets are sets of any types of DNS record except DNAME or DNSSEC that encode actions or responses to queries. </p> @@ -5685,7 +5804,7 @@ deny-answer-aliases { "example.net"; }; walled garden's authority DNS server. </li> <li>The <span><strong class="command">PASSTHRU</strong></span> policy is specified - by a CNAME whose target is <span><strong class="command">rpz_passthru.</strong></span> + by a CNAME whose target is <span><strong class="command">rpz-passthru.</strong></span> It causes the response to not be rewritten and is most often used to "poke holes" in policies for CIDR blocks. @@ -5803,6 +5922,25 @@ bzone.domain.com CNAME garden.example.com. ns.domain.com.rpz-nsdname CNAME . 48.zz.2.2001.rpz-nsip CNAME . </pre> +<p> + RPZ can affect server performance. + Each configured response policy zone requires the server to + perform one to four additional database lookups before a + query can be answered. + For example, a DNS server with four policy zones, each with all + four kinds of response triggers, QNAME, IP, NSIP, and + NSDNAME, requires a total of 17 times as many database + lookups as a similar DNS server with no response policy zones. + A <acronym class="acronym">BIND9</acronym> server with adequate memory and one + response policy zone with QNAME and IP triggers might achieve a + maximum queries-per-second rate about 20% lower. + A server with four response policy zones with QNAME and IP + triggers might have a maximum QPS rate about 50% lower. + </p> +<p> + Responses rewritten by RPZ are counted in the + <span><strong class="command">RPZRewrites</strong></span> statistics. + </p> </div> </div> <div class="sect2" lang="en"> @@ -6013,7 +6151,7 @@ ns.domain.com.rpz-nsdname CNAME . </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2589534"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and +<a name="id2590070"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">statistics-channels</strong></span> statement @@ -6073,7 +6211,7 @@ ns.domain.com.rpz-nsdname CNAME . </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2589742"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition +<a name="id2590278"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">trusted-keys</strong></span> statement defines @@ -6113,10 +6251,10 @@ ns.domain.com.rpz-nsdname CNAME . </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2589858"></a><span><strong class="command">managed-keys</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2590325"></a><span><strong class="command">managed-keys</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">managed-keys</strong></span> { - <em class="replaceable"><code>string</code></em> initial-key <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ; - [<span class="optional"> <em class="replaceable"><code>string</code></em> initial-key <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ; [<span class="optional">...</span>]</span>] + <em class="replaceable"><code>name</code></em> <code class="literal">initial-key</code> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key-data</code></em> ; + [<span class="optional"> <em class="replaceable"><code>name</code></em> <code class="literal">initial-key</code> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key-data</code></em> ; [<span class="optional">...</span>]</span>] }; </pre> </div> @@ -6224,13 +6362,16 @@ ns.domain.com.rpz-nsdname CNAME . <span><strong class="command">named</strong></span>.) </p> <p> - If the <span><strong class="command">dnssec-lookaside</strong></span> option is + If the <span><strong class="command">dnssec-validation</strong></span> option is set to <strong class="userinput"><code>auto</code></strong>, <span><strong class="command">named</strong></span> will automatically initialize a managed key for the - zone <code class="literal">dlv.isc.org</code>. The key that is - used to initialize the key maintenance process is built - into <span><strong class="command">named</strong></span>, and can be overridden - from <span><strong class="command">bindkeys-file</strong></span>. + root zone. Similarly, if the <span><strong class="command">dnssec-lookaside</strong></span> + option is set to <strong class="userinput"><code>auto</code></strong>, + <span><strong class="command">named</strong></span> will automatically initialize + a managed key for the zone <code class="literal">dlv.isc.org</code>. + In both cases, the key that is used to initialize the key + maintenance process is built into <span><strong class="command">named</strong></span>, + and can be overridden from <span><strong class="command">bindkeys-file</strong></span>. </p> </div> <div class="sect2" lang="en"> @@ -6248,7 +6389,7 @@ ns.domain.com.rpz-nsdname CNAME . </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2590352"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2590766"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">view</strong></span> statement is a powerful feature @@ -6382,6 +6523,7 @@ view "external" { [<span class="optional"> check-names (<code class="constant">warn</code>|<code class="constant">fail</code>|<code class="constant">ignore</code>) ; </span>] [<span class="optional"> check-mx (<code class="constant">warn</code>|<code class="constant">fail</code>|<code class="constant">ignore</code>) ; </span>] [<span class="optional"> check-wildcard <em class="replaceable"><code>yes_or_no</code></em>; </span>] + [<span class="optional"> check-spf ( <em class="replaceable"><code>warn</code></em> | <em class="replaceable"><code>fail</code></em> | <em class="replaceable"><code>ignore</code></em> ); </span>] [<span class="optional"> check-integrity <em class="replaceable"><code>yes_or_no</code></em> ; </span>] [<span class="optional"> dialup <em class="replaceable"><code>dialup_option</code></em> ; </span>] [<span class="optional"> file <em class="replaceable"><code>string</code></em> ; </span>] @@ -6537,10 +6679,10 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2591902"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2592398"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2591910"></a>Zone Types</h4></div></div></div> +<a name="id2592406"></a>Zone Types</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -6800,7 +6942,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2592455"></a>Class</h4></div></div></div> +<a name="id2593019"></a>Class</h4></div></div></div> <p> The zone's name may optionally be followed by a class. If a class is not specified, class <code class="literal">IN</code> (for <code class="varname">Internet</code>), @@ -6822,7 +6964,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2592488"></a>Zone Options</h4></div></div></div> +<a name="id2593052"></a>Zone Options</h4></div></div></div> <div class="variablelist"><dl> <dt><span class="term"><span><strong class="command">allow-notify</strong></span></span></dt> <dd><p> @@ -6894,6 +7036,11 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" See the description of <span><strong class="command">check-mx</strong></span> in <a href="Bv9ARM.ch06.html#boolean_options" title="Boolean Options">the section called “Boolean Options”</a>. </p></dd> +<dt><span class="term"><span><strong class="command">check-spf</strong></span></span></dt> +<dd><p> + See the description of + <span><strong class="command">check-spf</strong></span> in <a href="Bv9ARM.ch06.html#boolean_options" title="Boolean Options">the section called “Boolean Options”</a>. + </p></dd> <dt><span class="term"><span><strong class="command">check-wildcard</strong></span></span></dt> <dd><p> See the description of @@ -7699,7 +7846,7 @@ example.com. NS ns2.example.net. </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2595170"></a>Zone File</h2></div></div></div> +<a name="id2595755"></a>Zone File</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> <a name="types_of_resource_records_and_when_to_use_them"></a>Types of Resource Records and When to Use Them</h3></div></div></div> @@ -7712,7 +7859,7 @@ example.com. NS ns2.example.net. </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2595188"></a>Resource Records</h4></div></div></div> +<a name="id2595842"></a>Resource Records</h4></div></div></div> <p> A domain name identifies a node. Each node has a set of resource information, which may be empty. The set of resource @@ -8449,7 +8596,7 @@ example.com. NS ns2.example.net. </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2596880"></a>Textual expression of RRs</h4></div></div></div> +<a name="id2597465"></a>Textual expression of RRs</h4></div></div></div> <p> RRs are represented in binary form in the packets of the DNS protocol, and are usually represented in highly encoded form @@ -8652,7 +8799,7 @@ example.com. NS ns2.example.net. </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2597537"></a>Discussion of MX Records</h3></div></div></div> +<a name="id2597986"></a>Discussion of MX Records</h3></div></div></div> <p> As described above, domain servers store information as a series of resource records, each of which contains a particular @@ -8908,7 +9055,7 @@ example.com. NS ns2.example.net. </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2598084"></a>Inverse Mapping in IPv4</h3></div></div></div> +<a name="id2598601"></a>Inverse Mapping in IPv4</h3></div></div></div> <p> Reverse name resolution (that is, translation from IP address to name) is achieved by means of the <span class="emphasis"><em>in-addr.arpa</em></span> domain @@ -8969,7 +9116,7 @@ example.com. NS ns2.example.net. </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2598211"></a>Other Zone File Directives</h3></div></div></div> +<a name="id2598796"></a>Other Zone File Directives</h3></div></div></div> <p> The Master File Format was initially defined in RFC 1035 and has subsequently been extended. While the Master File Format @@ -8984,7 +9131,7 @@ example.com. NS ns2.example.net. </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2598233"></a>The <span><strong class="command">@</strong></span> (at-sign)</h4></div></div></div> +<a name="id2598819"></a>The <span><strong class="command">@</strong></span> (at-sign)</h4></div></div></div> <p> When used in the label (or name) field, the asperand or at-sign (@) symbol represents the current origin. @@ -8995,7 +9142,7 @@ example.com. NS ns2.example.net. </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2598249"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div> +<a name="id2598835"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div> <p> Syntax: <span><strong class="command">$ORIGIN</strong></span> <em class="replaceable"><code>domain-name</code></em> @@ -9024,7 +9171,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM. </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2598446"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div> +<a name="id2598964"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div> <p> Syntax: <span><strong class="command">$INCLUDE</strong></span> <em class="replaceable"><code>filename</code></em> @@ -9060,7 +9207,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM. </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2598516"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div> +<a name="id2599101"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div> <p> Syntax: <span><strong class="command">$TTL</strong></span> <em class="replaceable"><code>default-ttl</code></em> @@ -9079,7 +9226,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM. </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2598552"></a><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div> +<a name="id2599138"></a><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div> <p> Syntax: <span><strong class="command">$GENERATE</strong></span> <em class="replaceable"><code>range</code></em> @@ -9503,7 +9650,7 @@ HOST-127.EXAMPLE. MX 0 . </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2599437"></a>Name Server Statistics Counters</h4></div></div></div> +<a name="id2600091"></a>Name Server Statistics Counters</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -10055,12 +10202,25 @@ HOST-127.EXAMPLE. MX 0 . </p> </td> </tr> +<tr> +<td> + <p><span><strong class="command">RPZRewrites</strong></span></p> + </td> +<td> + <p><span><strong class="command"></strong></span></p> + </td> +<td> + <p> + Response policy zone rewrites. + </p> + </td> +</tr> </tbody> </table></div> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2601047"></a>Zone Maintenance Statistics Counters</h4></div></div></div> +<a name="id2601596"></a>Zone Maintenance Statistics Counters</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -10214,7 +10374,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2601498"></a>Resolver Statistics Counters</h4></div></div></div> +<a name="id2601979"></a>Resolver Statistics Counters</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -10597,7 +10757,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2602588"></a>Socket I/O Statistics Counters</h4></div></div></div> +<a name="id2603138"></a>Socket I/O Statistics Counters</h4></div></div></div> <p> Socket I/O statistics counters are defined per socket types, which are @@ -10752,7 +10912,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2602962"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div> +<a name="id2603579"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div> <p> Most statistics counters that were available in <span><strong class="command">BIND</strong></span> 8 are also supported in diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch07.html b/contrib/bind9/doc/arm/Bv9ARM.ch07.html index 3e0dc22..664b2e3 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch07.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch07.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -46,10 +46,10 @@ <p><b>Table of Contents</b></p> <dl> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2603136"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2603806"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603285">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603345">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603888">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603947">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt> </dl> @@ -111,17 +111,10 @@ zone "example.com" { This allows recursive queries of the server from the outside unless recursion has been previously disabled. </p> -<p> - For more information on how to use ACLs to protect your server, - see the <span class="emphasis"><em>AUSCERT</em></span> advisory at: - </p> -<p> - <a href="ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos" target="_top">ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos</a> - </p> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2603136"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span> +<a name="id2603806"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span> </h2></div></div></div> <p> On UNIX servers, it is possible to run <acronym class="acronym">BIND</acronym> @@ -147,7 +140,7 @@ zone "example.com" { </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2603285"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div> +<a name="id2603888"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div> <p> In order for a <span><strong class="command">chroot</strong></span> environment to @@ -175,7 +168,7 @@ zone "example.com" { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2603345"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div> +<a name="id2603947"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div> <p> Prior to running the <span><strong class="command">named</strong></span> daemon, use diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch08.html b/contrib/bind9/doc/arm/Bv9ARM.ch08.html index 7205d5b..c22a5af 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch08.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch08.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -45,18 +45,18 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2603561">Common Problems</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2603566">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2603578">Incrementing and Changing the Serial Number</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2603595">Where Can I Get Help?</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2604027">Common Problems</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2604101">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2604113">Incrementing and Changing the Serial Number</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2604130">Where Can I Get Help?</a></span></dt> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2603561"></a>Common Problems</h2></div></div></div> +<a name="id2604027"></a>Common Problems</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2603566"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div> +<a name="id2604101"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div> <p> The best solution to solving installation and configuration issues is to take preventative measures by setting @@ -68,7 +68,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2603578"></a>Incrementing and Changing the Serial Number</h2></div></div></div> +<a name="id2604113"></a>Incrementing and Changing the Serial Number</h2></div></div></div> <p> Zone serial numbers are just numbers — they aren't date related. A lot of people set them to a number that @@ -95,7 +95,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2603595"></a>Where Can I Get Help?</h2></div></div></div> +<a name="id2604130"></a>Where Can I Get Help?</h2></div></div></div> <p> The Internet Systems Consortium (<acronym class="acronym">ISC</acronym>) offers a wide range diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch09.html b/contrib/bind9/doc/arm/Bv9ARM.ch09.html index 3a4245f..2d6768e 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch09.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch09.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -45,31 +45,31 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2603657">Acknowledgments</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2604192">Acknowledgments</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2603761">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2604363">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607177">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607712">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bind9.library">BIND 9 DNS Library Support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608265">Prerequisite</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608275">Compilation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608299">Installation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608330">Known Defects/Restrictions</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608680">The dns.conf File</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608707">Sample Applications</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609611">Library References</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609824">Prerequisite</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609833">Compilation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609175">Installation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609206">Known Defects/Restrictions</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609283">The dns.conf File</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609309">Sample Applications</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2610282">Library References</a></span></dt> </dl></dd> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2603657"></a>Acknowledgments</h2></div></div></div> +<a name="id2604192"></a>Acknowledgments</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> <a name="historical_dns_information"></a>A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym> @@ -172,7 +172,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2603761"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div> +<a name="id2604363"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> <a name="ipv6addresses"></a>IPv6 addresses (AAAA)</h3></div></div></div> @@ -260,17 +260,17 @@ </p> <div class="bibliography"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2604017"></a>Bibliography</h4></div></div></div> +<a name="id2604619"></a>Bibliography</h4></div></div></div> <div class="bibliodiv"> <h3 class="title">Standards</h3> <div class="biblioentry"> -<a name="id2604027"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p> +<a name="id2604630"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p> </div> <div class="biblioentry"> -<a name="id2604051"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p> +<a name="id2604653"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p> </div> <div class="biblioentry"> -<a name="id2604074"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Implementation and +<a name="id2604677"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Implementation and Specification</i>. </span><span class="pubdate">November 1987. </span></p> </div> </div> @@ -278,42 +278,42 @@ <h3 class="title"> <a name="proposed_standards"></a>Proposed Standards</h3> <div class="biblioentry"> -<a name="id2604110"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym> +<a name="id2604713"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym> Specification</i>. </span><span class="pubdate">July 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2604137"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym> +<a name="id2604740"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym> Queries</i>. </span><span class="pubdate">March 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2604163"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p> +<a name="id2604765"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2604187"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p> +<a name="id2604858"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2604211"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p> +<a name="id2604882"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2604266"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p> +<a name="id2604937"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2604293"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p> +<a name="id2604964"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2604320"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p> +<a name="id2604990"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604381"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2605052"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604411"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2605082"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604441"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p> +<a name="id2605112"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604468"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret +<a name="id2605139"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret Key Transaction Authentication for DNS (GSS-TSIG)</i>. </span><span class="pubdate">October 2003. </span></p> </div> @@ -322,19 +322,19 @@ <h3 class="title"> <acronym class="acronym">DNS</acronym> Security Proposed Standards</h3> <div class="biblioentry"> -<a name="id2604618"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p> +<a name="id2605221"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2604645"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p> +<a name="id2605248"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p> </div> <div class="biblioentry"> -<a name="id2604681"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p> +<a name="id2605284"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p> </div> <div class="biblioentry"> -<a name="id2604746"></a><p>[<abbr class="abbrev">RFC4034</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p> +<a name="id2605349"></a><p>[<abbr class="abbrev">RFC4034</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p> </div> <div class="biblioentry"> -<a name="id2604811"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS +<a name="id2605414"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p> </div> </div> @@ -342,146 +342,146 @@ <h3 class="title">Other Important RFCs About <acronym class="acronym">DNS</acronym> Implementation</h3> <div class="biblioentry"> -<a name="id2604885"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely +<a name="id2605488"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely Deployed <acronym class="acronym">DNS</acronym> Software.</i>. </span><span class="pubdate">October 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2604910"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation +<a name="id2605513"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation Errors and Suggested Fixes</i>. </span><span class="pubdate">October 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2605047"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p> +<a name="id2605581"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2605082"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym> +<a name="id2605617"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym> Queries for IPv6 Addresses</i>. </span><span class="pubdate">May 2005. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title">Resource Record Types</h3> <div class="biblioentry"> -<a name="id2605128"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p> +<a name="id2605662"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p> </div> <div class="biblioentry"> -<a name="id2605186"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p> +<a name="id2605720"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2605223"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using +<a name="id2605757"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using the Domain Name System</i>. </span><span class="pubdate">June 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2605258"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the +<a name="id2605793"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the Domain Name System</i>. </span><span class="pubdate">January 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2605313"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the +<a name="id2605847"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the Location of Services.</i>. </span><span class="pubdate">October 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2605351"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to +<a name="id2605885"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to Distribute MIXER Conformant Global Address Mapping</i>. </span><span class="pubdate">January 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2605377"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p> +<a name="id2605911"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2605402"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2605937"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605429"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2606032"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605456"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2606058"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605495"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2606098"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605525"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2606128"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605555"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p> +<a name="id2606157"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2605597"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2606200"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2605630"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p> +<a name="id2606233"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2605657"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p> +<a name="id2606260"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2605681"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP +<a name="id2606283"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP version 6</i>. </span><span class="pubdate">October 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2605738"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p> +<a name="id2606341"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title"> <acronym class="acronym">DNS</acronym> and the Internet</h3> <div class="biblioentry"> -<a name="id2605770"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names +<a name="id2606373"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names and Other Types</i>. </span><span class="pubdate">April 1989. </span></p> </div> <div class="biblioentry"> -<a name="id2605796"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and +<a name="id2606398"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and Support</i>. </span><span class="pubdate">October 1989. </span></p> </div> <div class="biblioentry"> -<a name="id2605818"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p> +<a name="id2606421"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2605842"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p> +<a name="id2606444"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2605888"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p> +<a name="id2606490"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2605911"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2606514"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title"> <acronym class="acronym">DNS</acronym> Operations</h3> <div class="biblioentry"> -<a name="id2605969"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p> +<a name="id2606571"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p> </div> <div class="biblioentry"> -<a name="id2605992"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File +<a name="id2606595"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File Configuration Errors</i>. </span><span class="pubdate">October 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2606019"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and +<a name="id2606621"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and Configuration Errors</i>. </span><span class="pubdate">February 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2606045"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p> +<a name="id2606648"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2606082"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for +<a name="id2606684"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for Network Services.</i>. </span><span class="pubdate">October 1997. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title">Internationalized Domain Names</h3> <div class="biblioentry"> -<a name="id2606128"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names, +<a name="id2606730"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names, and the Other Internet protocols</i>. </span><span class="pubdate">May 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2606160"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p> +<a name="id2606762"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2606205"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p> +<a name="id2606808"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2606241"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode +<a name="id2606843"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p> </div> @@ -497,47 +497,47 @@ </p> </div> <div class="biblioentry"> -<a name="id2606354"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String +<a name="id2606888"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String Attributes</i>. </span><span class="pubdate">May 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2606376"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p> +<a name="id2606910"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2606402"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load +<a name="id2606936"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load Balancing</i>. </span><span class="pubdate">April 1995. </span></p> </div> <div class="biblioentry"> -<a name="id2606427"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p> +<a name="id2606962"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2606451"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p> +<a name="id2606985"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2606497"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p> +<a name="id2607031"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2606520"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p> +<a name="id2607054"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2606547"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via +<a name="id2607081"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via Shared Unicast Addresses</i>. </span><span class="pubdate">April 2002. </span></p> </div> <div class="biblioentry"> -<a name="id2606572"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p> +<a name="id2607175"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title">Obsolete and Unimplemented Experimental RFC</h3> <div class="biblioentry"> -<a name="id2606616"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical +<a name="id2607219"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical Location</i>. </span><span class="pubdate">November 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2606674"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p> +<a name="id2607276"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2606700"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation +<a name="id2607303"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation and Renumbering</i>. </span><span class="pubdate">July 2000. </span></p> </div> </div> @@ -551,39 +551,39 @@ </p> </div> <div class="biblioentry"> -<a name="id2606748"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p> +<a name="id2607351"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2606788"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p> +<a name="id2607390"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2606814"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2607417"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2606844"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC) +<a name="id2607447"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC) Signing Authority</i>. </span><span class="pubdate">November 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2606870"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p> +<a name="id2607473"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2606897"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p> +<a name="id2607499"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p> </div> <div class="biblioentry"> -<a name="id2606933"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p> +<a name="id2607536"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2607037"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p> +<a name="id2607572"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2607064"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p> +<a name="id2607598"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p> </div> <div class="biblioentry"> -<a name="id2607091"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record +<a name="id2607625"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) Flag</i>. </span><span class="pubdate">April 2004. </span></p> </div> <div class="biblioentry"> -<a name="id2607136"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p> +<a name="id2607670"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p> </div> </div> </div> @@ -604,14 +604,14 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607177"></a>Other Documents About <acronym class="acronym">BIND</acronym> +<a name="id2607712"></a>Other Documents About <acronym class="acronym">BIND</acronym> </h3></div></div></div> <p></p> <div class="bibliography"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607187"></a>Bibliography</h4></div></div></div> +<a name="id2607721"></a>Bibliography</h4></div></div></div> <div class="biblioentry"> -<a name="id2607189"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright © 1998 Sebastopol, CA: O'Reilly and Associates. </span></p> +<a name="id2607723"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright © 1998 Sebastopol, CA: O'Reilly and Associates. </span></p> </div> </div> </div> @@ -648,7 +648,7 @@ </ul></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608265"></a>Prerequisite</h3></div></div></div> +<a name="id2609824"></a>Prerequisite</h3></div></div></div> <p>GNU make is required to build the export libraries (other part of BIND 9 can still be built with other types of make). In the reminder of this document, "make" means GNU make. Note that @@ -657,7 +657,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608275"></a>Compilation</h3></div></div></div> +<a name="id2609833"></a>Compilation</h3></div></div></div> <pre class="screen"> $ <strong class="userinput"><code>./configure --enable-exportlib <em class="replaceable"><code>[other flags]</code></em></code></strong> $ <strong class="userinput"><code>make</code></strong> @@ -672,7 +672,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608299"></a>Installation</h3></div></div></div> +<a name="id2609175"></a>Installation</h3></div></div></div> <pre class="screen"> $ <strong class="userinput"><code>cd lib/export</code></strong> $ <strong class="userinput"><code>make install</code></strong> @@ -694,7 +694,7 @@ $ <strong class="userinput"><code>make install</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608330"></a>Known Defects/Restrictions</h3></div></div></div> +<a name="id2609206"></a>Known Defects/Restrictions</h3></div></div></div> <div class="itemizedlist"><ul type="disc"> <li><p>Currently, win32 is not supported for the export library. (Normal BIND 9 application can be built as @@ -734,7 +734,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608680"></a>The dns.conf File</h3></div></div></div> +<a name="id2609283"></a>The dns.conf File</h3></div></div></div> <p>The IRS library supports an "advanced" configuration file related to the DNS library for configuration parameters that would be beyond the capability of the @@ -752,14 +752,14 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608707"></a>Sample Applications</h3></div></div></div> +<a name="id2609309"></a>Sample Applications</h3></div></div></div> <p>Some sample application programs using this API are provided for reference. The following is a brief description of these applications. </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608715"></a>sample: a simple stub resolver utility</h4></div></div></div> +<a name="id2609318"></a>sample: a simple stub resolver utility</h4></div></div></div> <p> It sends a query of a given name (of a given optional RR type) to a specified recursive server, and prints the result as a list of @@ -823,7 +823,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608806"></a>sample-async: a simple stub resolver, working asynchronously</h4></div></div></div> +<a name="id2609409"></a>sample-async: a simple stub resolver, working asynchronously</h4></div></div></div> <p> Similar to "sample", but accepts a list of (query) domain names as a separate file and resolves the names @@ -864,7 +864,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608859"></a>sample-request: a simple DNS transaction client</h4></div></div></div> +<a name="id2609462"></a>sample-request: a simple DNS transaction client</h4></div></div></div> <p> It sends a query to a specified server, and prints the response with minimal processing. It doesn't act as a @@ -905,7 +905,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2608992"></a>sample-gai: getaddrinfo() and getnameinfo() test code</h4></div></div></div> +<a name="id2609526"></a>sample-gai: getaddrinfo() and getnameinfo() test code</h4></div></div></div> <p> This is a test program to check getaddrinfo() and getnameinfo() behavior. It takes a @@ -922,7 +922,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2609006"></a>sample-update: a simple dynamic update client program</h4></div></div></div> +<a name="id2609541"></a>sample-update: a simple dynamic update client program</h4></div></div></div> <p> It accepts a single update command as a command-line argument, sends an update request message to the @@ -1017,7 +1017,7 @@ $ <strong class="userinput"><code>sample-update -a sample-update -k Kxxx.+nnn+mm </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2609138"></a>nsprobe: domain/name server checker in terms of RFC 4074</h4></div></div></div> +<a name="id2610218"></a>nsprobe: domain/name server checker in terms of RFC 4074</h4></div></div></div> <p> It checks a set of domains to see the name servers of the domains behave @@ -1074,7 +1074,7 @@ $ <strong class="userinput"><code>sample-update -a sample-update -k Kxxx.+nnn+mm </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2609611"></a>Library References</h3></div></div></div> +<a name="id2610282"></a>Library References</h3></div></div></div> <p>As of this writing, there is no formal "manual" of the libraries, except this document, header files (some of them provide pretty detailed explanations), and sample application diff --git a/contrib/bind9/doc/arm/Bv9ARM.ch10.html b/contrib/bind9/doc/arm/Bv9ARM.ch10.html index 1484ecf..f2fe6b8 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.ch10.html +++ b/contrib/bind9/doc/arm/Bv9ARM.ch10.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any diff --git a/contrib/bind9/doc/arm/Bv9ARM.html b/contrib/bind9/doc/arm/Bv9ARM.html index b66cccc..69a2e55 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.html +++ b/contrib/bind9/doc/arm/Bv9ARM.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -41,7 +41,7 @@ <div> <div><h1 class="title"> <a name="id2563175"></a>BIND 9 Administrator Reference Manual</h1></div> -<div><p class="copyright">Copyright © 2004-2012 Internet Systems Consortium, Inc. ("ISC")</p></div> +<div><p class="copyright">Copyright © 2004-2013 Internet Systems Consortium, Inc. ("ISC")</p></div> <div><p class="copyright">Copyright © 2000-2003 Internet Software Consortium.</p></div> </div> <hr> @@ -51,39 +51,39 @@ <dl> <dt><span class="chapter"><a href="Bv9ARM.ch01.html">1. Introduction</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564375">Scope of Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564398">Organization of This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564538">Conventions Used in This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564720">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564378">Scope of Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564402">Organization of This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564541">Conventions Used in This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564723">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564741">DNS Fundamentals</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564775">Domains and Domain Names</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567180">Zones</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567257">Authoritative Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567430">Caching Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567560">Name Servers in Multiple Roles</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564744">DNS Fundamentals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564846">Domains and Domain Names</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567184">Zones</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567260">Authoritative Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567433">Caching Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567563">Name Servers in Multiple Roles</a></span></dt> </dl></dd> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch02.html">2. <acronym class="acronym">BIND</acronym> Resource Requirements</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567594">Hardware requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567621">CPU Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567634">Memory Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567729">Name Server Intensive Environment Issues</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567739">Supported Operating Systems</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567597">Hardware requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567624">CPU Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567637">Memory Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567732">Name Server Intensive Environment Issues</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567742">Supported Operating Systems</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch03.html">3. Name Server Configuration</a></span></dt> <dd><dl> <dt><span class="sect1"><a href="Bv9ARM.ch03.html#sample_configuration">Sample Configurations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567771">A Caching-only Name Server</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567992">An Authoritative-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567774">A Caching-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567995">An Authoritative-only Name Server</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568014">Load Balancing</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568369">Name Server Operations</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568018">Load Balancing</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568372">Name Server Operations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568374">Tools for Use With the Name Server Daemon</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570421">Signals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568377">Tools for Use With the Name Server Daemon</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570424">Signals</a></span></dt> </dl></dd> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch04.html">4. Advanced DNS Features</a></span></dt> @@ -92,64 +92,64 @@ <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570934">Split DNS</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570952">Example split DNS setup</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570937">Split DNS</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570955">Example split DNS setup</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564012">Generate Shared Keys for Each Pair of Hosts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564086">Copying the Shared Secret to Both Machines</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571811">Informing the Servers of the Key's Existence</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571847">Instructing the Server to Use the Key</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571905">TSIG Key Based Access Control</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571954">Errors</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564016">Generate Shared Keys for Each Pair of Hosts</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564089">Copying the Shared Secret to Both Machines</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571814">Informing the Servers of the Key's Existence</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571850">Instructing the Server to Use the Key</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571908">TSIG Key Based Access Control</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571957">Errors</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571968">TKEY</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572153">SIG(0)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571971">TKEY</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572156">SIG(0)</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572221">Generating Keys</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572300">Signing the Zone</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572381">Configuring Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572225">Generating Keys</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572304">Signing the Zone</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572385">Configuring Servers</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571475">Converting from insecure to secure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571512">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563493">Fully automatic zone signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563575">Private-type records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563612">DNSKEY rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563762">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563795">Automatic key rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563821">NSEC3PARAM rollovers via UPDATE</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563899">Converting from NSEC to NSEC3</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563909">Converting from NSEC3 to NSEC</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563922">Converting from secure to insecure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571605">Periodic re-signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571614">NSEC3 and OPTOUT</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608395">Converting from insecure to secure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563581">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563754">Fully automatic zone signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563836">Private-type records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563874">DNSKEY rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563886">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563920">Automatic key rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563946">NSEC3PARAM rollovers via UPDATE</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563956">Converting from NSEC to NSEC3</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571406">Converting from NSEC3 to NSEC</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571419">Converting from secure to insecure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571457">Periodic re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571466">NSEC3 and OPTOUT</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607510">Validating Resolver</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571692">Authoritative Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571658">Validating Resolver</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571681">Authoritative Server</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#pkcs11">PKCS #11 (Cryptoki) support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2610637">Prerequisites</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608477">Building BIND 9 with PKCS#11</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608602">PKCS #11 Tools</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2634916">Using the HSM</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635114">Specifying the engine on the command line</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635160">Running named with automatic zone re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2611650">Prerequisites</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608875">Building BIND 9 with PKCS#11</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609137">PKCS #11 Tools</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635518">Using the HSM</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635785">Specifying the engine on the command line</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2635831">Running named with automatic zone re-signing</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572669">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572604">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572868">Address Lookups Using AAAA Records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572889">Address to Name Lookups Using Nibble Format</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572871">Address Lookups Using AAAA Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572892">Address to Name Lookups Using Nibble Format</a></span></dt> </dl></dd> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch05.html">5. The <acronym class="acronym">BIND</acronym> 9 Lightweight Resolver</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572922">The Lightweight Resolver Library</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572925">The Lightweight Resolver Library</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch05.html#lwresd">Running a Resolver Daemon</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch06.html">6. <acronym class="acronym">BIND</acronym> 9 Configuration Reference</a></span></dt> @@ -157,58 +157,58 @@ <dt><span class="sect1"><a href="Bv9ARM.ch06.html#configuration_file_elements">Configuration File Elements</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#address_match_lists">Address Match Lists</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574332">Comment Syntax</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574405">Comment Syntax</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#Configuration_File_Grammar">Configuration File Grammar</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574986"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574990"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#acl"><span><strong class="command">acl</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575176"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575180"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#controls_statement_definition_and_usage"><span><strong class="command">controls</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575467"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575484"><span><strong class="command">include</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575472"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575489"><span><strong class="command">include</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575576"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575600"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575758"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575884"><span><strong class="command">logging</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575649"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575672"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575763"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575889"><span><strong class="command">logging</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577910"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577984"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578116"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578160"><span><strong class="command">masters</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577914"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577988"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578120"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578164"><span><strong class="command">masters</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578174"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578179"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589534"><span><strong class="command">statistics-channels</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590070"><span><strong class="command">statistics-channels</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#trusted-keys"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589742"><span><strong class="command">trusted-keys</strong></span> Statement Definition +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590278"><span><strong class="command">trusted-keys</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589858"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590325"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#managed-keys"><span><strong class="command">managed-keys</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590352"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2590766"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591902"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592398"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2595170">Zone File</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2595755">Zone File</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597537">Discussion of MX Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597986">Discussion of MX Records</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598084">Inverse Mapping in IPv4</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598211">Other Zone File Directives</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598552"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598601">Inverse Mapping in IPv4</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2598796">Other Zone File Directives</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2599138"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#statistics">BIND9 Statistics</a></span></dt> @@ -217,41 +217,41 @@ <dt><span class="chapter"><a href="Bv9ARM.ch07.html">7. <acronym class="acronym">BIND</acronym> 9 Security Considerations</a></span></dt> <dd><dl> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2603136"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2603806"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603285">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603345">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603888">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2603947">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch08.html">8. Troubleshooting</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2603561">Common Problems</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2603566">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2603578">Incrementing and Changing the Serial Number</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2603595">Where Can I Get Help?</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2604027">Common Problems</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2604101">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2604113">Incrementing and Changing the Serial Number</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2604130">Where Can I Get Help?</a></span></dt> </dl></dd> <dt><span class="appendix"><a href="Bv9ARM.ch09.html">A. Appendices</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2603657">Acknowledgments</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2604192">Acknowledgments</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2603761">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2604363">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607177">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607712">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bind9.library">BIND 9 DNS Library Support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608265">Prerequisite</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608275">Compilation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608299">Installation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608330">Known Defects/Restrictions</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608680">The dns.conf File</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608707">Sample Applications</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609611">Library References</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609824">Prerequisite</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609833">Compilation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609175">Installation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609206">Known Defects/Restrictions</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609283">The dns.conf File</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2609309">Sample Applications</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2610282">Library References</a></span></dt> </dl></dd> </dl></dd> <dt><span class="reference"><a href="Bv9ARM.ch10.html">I. Manual pages</a></span></dt> diff --git a/contrib/bind9/doc/arm/Bv9ARM.pdf b/contrib/bind9/doc/arm/Bv9ARM.pdf index 98d816b..ad261b5 100644 --- a/contrib/bind9/doc/arm/Bv9ARM.pdf +++ b/contrib/bind9/doc/arm/Bv9ARM.pdf @@ -2476,15 +2476,15 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 957 0 obj << -/Length 1065 +/Length 1075 /Filter /FlateDecode >> stream -xÚÅV]ªH}Ÿ_Á㘌m@Cl\À;ÙìÝFq$™#Ì5óïoA7 j&û¶ñ¡«écÕ©SÕDÃð#šÁTh¦Ð‘‰¡m>°ökó¢0ºÁ¡3“;«c]7‘‰¹ÐÆLGx»DÝ 9EL›†@œQV£Ÿ“‡ÉŒRM Á)×’ÆMd̵•lÿytŠã×)ÛW£“?5CXˆ†ÃX6õÂdFôOcŠL.Lm|û ™Jè (¡ró¬Acýi4¦®M£7yoš½iõ¦èL‚{“ô&•–w¨²Ó!«ä,þ*«ì£”§8”Å©Ê??žZì5i&Î8$D†AUFþI©îÅN=À”Ôè7é¤'¤ç4¥™º®[§=¾„ߊ0¨”nŠÞëÿR©^gÜëŒio²»’»êœžFÄzÌ®uG×úÁ. [š º[„ðoåkÁãKôz†…(¦¤÷Y§³ÊNyYæÅArª -9~–™ÊgòŽ!jþQlóÝàKzØNŠ“´·yYò×ÏJåXísÕeåMþ»öOéáKÇÏÓ±(Õò9¯öÒjqõ—âSé¹Ë4½JeЃVÝg2à« -ðvJ¡([EüØ,¿òm¶mé¦Uk)÷ékñ+ë¥ÖLE•o²Nƒë„WÒàÇc–ª¬rµž¾¿ËD„…æF› ‘M\ó¬”ÛrL±@LgPrb"Á¨Õ@’…«Z-œ%/#AíH}ñb9®¢ð‡7u§rVï^;nõLÚv0m?:Ò˜‚åÛÞRmß—†ŠÙAâ¹jñÅKҊܹM嶄ӚÑaq’ZýPB“EKñùÀñ×S/˜_÷–+ßks¹Ç$œÉqéFÎF¦þh?{¾—üÝ'Z³ãHè–9|æ%Ǩå Ç@ñu¸àO^ôŒZ½žuß³Ÿ}eϨªÂÇ+×ñlÿ©Õ8r†c{7ŸÀEÓ -ܹïÍÝÀq‡‘ÂÆsÍÞÔ"ÃrËfŒFÌ„|Ãu|R9¶#/î¤×ÉIxŘîã~[tûô”µÞø‚‘¡ˆ+7‚ÎYÚ}>³ï¶ÌÍUB GD˜H¼’o¯’<¾@ß^%”DLKt>k¢÷^×]“&¥°Ýê/¬ÀûôŽ”—JžßY¥úž#“˜W -EÙö\êüuòjp99é{Í!OºoPvÓ§¶tÏj÷tHl_UÇ?&“óù\+ŒòrƒŠ†ÔÛäæÖV\f ú ûŸŸ·¿—~endstream +xÚ¥V]ªH}Ÿ_Áã˜hÛÐÀ¾1ˆÊÁ¼“ÍÞ}`G’1Â\3ÿ~«éD'“Ín|èÓtYuêTõÑ0üˆfpÄmjk¦#CÛ¾?`íÖDÙèC†ÎL¾XèF–…1YàíÚêÎÚ°38 +¥Œ @E‰0õ=µøì§K‰boáÄ3¹-áàftXœT¨IÓtÙRü‚|è›™.n‚û«uà·¹|Å$šËqåÅîF¦þè<ùŸþÙ'*Øqdë–9|—$¨å ÇPñõ~xàO^öŒZ½žõÀwž…çQÜFUᓵçúN0n5Ž=·á8ncÞ}MŒøPL7 +ï
°Ê¡³r·Á«ÏKGDI“‹Ûê%› ùÚI?£•J,Jz‘%Œà`¼)ð&ñÚܤû¦ +ÅùîR–êüu‹zp9¹Ù[ͱȺÏQvקŽtÏ„{:$v¨ëÓoÓéår +£¢Ú¢²!õ:½»µÕ[—H¼fÿõK÷ùõŸkendstream endobj 956 0 obj << /Type /Page @@ -2882,7 +2882,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1022 0 obj << -/Length 3273 +/Length 3272 /Filter /FlateDecode >> stream @@ -2903,10 +2903,11 @@ t^Ïnê_oÆ˲:ïéðbÏ¿®,A–³ B†AXEYt”ˆƒ"ˆôÎ…aJrÕS%/ã¨b¨¢È…ñäÙj<¹ŒÌëër6¼lN¤@s ÎÆ¿þ:iöy1_„ÚQmûo^fHE¶ÌÈ’§š’9%óŽwŽ½7_#%¹aBÈš±êþÆ"äbMÜιƒ—ã«÷ËeõïÖ ¡ÎìƒÆý²†qï¼ï:kÝwñà·£²µã5YI‹p(x^/×ëo˜¨¾U$æ«;=ÍË¿.F‹ÛPNÈR‡Ï}$Aú²$dHIXŠ‰D¤w`CøPµw
¢ac£¥¨x>*§ÕôÉ[½_ÿÒ(“™K 6$HÙ‹ %AÊ®÷Ô˜+ŒgNûSÓŒ¹;Cm{*7̱`zý¦|W.ÊÙEÙ9xóûŽ·Ø€o7‚–Ý+†ðÛQ™Úñš<¦´eNØZ&ÇÛdj^Œ¡·8¬×-W÷ÓrûTç+|@J³,dHYX2Š“D/¤÷¦iJ3ë
\âW@í4¯FË‹÷P”o*TŒû9í*ÎlT!… -–Ku/!KÅA¡BzWÑ„”Ì¥[XÖ¸Èê|Èíl9úã¨/½ÞŸ¿(ÊlP! +–Ku¯ZIÅA¡BzWÑ„”Ì¥[XÖ¸Èê|Èíl9úã¨/½ÞŸ¿(ÊlP! –Š% -é½Epf¥pÑ€ò¼¬êÐlÜV¡xÊûíÍèªüF5K#1KÙ CŠ¬‚ê^â–Šƒb€ôu¥ð̼+"Þ·?ïhÔÐÎîG
Hg6*ÈBËE¡’ˆƒB…ô‡î-3Æ«–}]ùDPb*sAÁ†(R ¤â @¡½· 8f9Í¢”}]Ùe -$ ÅÎn:”k Gh¦¬o+˜úbèÜ£…Öâ!Ò‰ä2›dHA‚µRª›’D&¤wà„K¦”m+“¾““ñìb²º,S˜f=¿«Ûq\<FRœ2¤ðÁRø$â ð!½>gŠ›HùRôÜ=È|í‹úŸyÅd2’ÖŽb餺Å&‚ ¡\7€8ϤS2bï¤úÆæDã*wòŽ¡EJ·?é)Ï% Ù$aA ’A$‘®áW‡,“Z´Cû$Ý=ÌèâñM¡ µÙ?OÔÚQ¿N„„#ˆIAý6å:þV +é½Epf¥pÑ€ò¼¬êÐlÜV¡xÊûíÍèªüF5K#1KÙ CŠ¬Å@"ŠÒ;Ô•Â3[𶮈xßþ´¾CJ QC;»5HT Ù¨ C +,…J" +Ò{.¸·Ì¯ZXöuåA‰©Ì lH¥º×a¥â @¡½· 8f9Í¢”}]Ùe endobj 1021 0 obj << /Type /Page @@ -3206,14 +3207,14 @@ endobj 1068 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [499.2773 244.6405 511.2325 253.7462] +/Rect [499.2773 244.7402 511.2325 253.7462] /Subtype /Link /A << /S /GoTo /D (subsection.6.1.1) >> >> endobj 1069 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [499.2773 232.6088 511.2325 241.7146] +/Rect [499.2773 232.7085 511.2325 241.7146] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.1.1.1) >> >> endobj @@ -3269,7 +3270,7 @@ endobj 1077 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [499.2773 136.3554 511.2325 145.4611] +/Rect [499.2773 136.4551 511.2325 145.4611] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.3) >> >> endobj @@ -3283,7 +3284,7 @@ endobj 1079 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [499.2773 112.3917 511.2325 121.3978] +/Rect [499.2773 112.292 511.2325 121.3978] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.5) >> >> endobj @@ -3323,23 +3324,19 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1086 0 obj << -/Length 3426 +/Length 3431 /Filter /FlateDecode >> stream -xÚíKSIÇï| -æ -Ñʼn‘„óé·ZÝU•
Õ)j×0 GØw*Sùÿ©YUÝl@ý6°ŠPáäÀ8Iej0¾Ø¡ƒ3ÿovX{Í0\4„W½<ÙùÇkaŽ8Íõàäx/K¨µlprúëî«·G'G'ï÷~?ùqçà$¾)t̨¨ßñÏ_§ƒSïÿÇJ„³jðÅÿ@ sŽ.v¤DI!Âo¦;ïw~‰oþwmšû JX¢,7™OÂ9ø$ŒsbñÑ)G´àbýQ4á>Ôúƒø˸\0b-•ÞG}Ùt~v6™µ×Á·†ít{ÝûÕhU]T³ÕÞ+º»_ýF)ŸMV“ù¬ùÍhvÚ¼ø°U{CÇÌ.Ù*JïçéÜÿbwMhÅ-Ñœ²”ËÊ,ÎÍ‹c¨U°BÛZÝ|ÿ:¹R߈#hŸ‹#õΔ$Æ70Ò™¤¶ç¿:t÷ä¼Ê@£)¡Lš†ñùh6«¦9h,‘J…ëÞ/FKÏ‚è^Y¸NÊà é-†bð@ù0x2q`ð Þ<Bí¨‚ððx|Cr6_|ËÐ#)Ñö:<’ÚϽ´<!½Åð -¤y‰ø£¥¦—“ÉbN€!Æ TJÑ~N2q`œ ÞÓX†1b¤o"'lóXæË¢ÊQÁýHƖɼYŒ..F‹úý°Û™ïÒõÒò]L0Äh‚z*ÖOS&Œ&Ô{¤I;×4?‘&~74mK涧¯Šy-¥"ÔttC¨ÉÅPƒ{OÔXC,MØÍÅh¹ª²]S=’}Ó©Ø™‡Þ}o€Úó“ì0|€€Š÷Ós3ÌubÇ(b…f yWðÜf.î+½„\S1L V'™80PPï‰-ˆÕŠ'RÔFRæ—µØYR´‡“™
ÍŒeìi53!ÇÅCŒ ¨!FP&Œ Ô{"Hy8œu?}WÝ¢1òQ·5!—Ť -cúg ¹80*Pï 姟Üpˆ…m°ø°ÿ®¡âÝ|ÑÖ~š,W5ò¹¥H™+æb\@eLA+Æê=q!%aJÂq
o/«Åhµž”®'ß–«ê¢y}\-çWëe\b.&52VªÇµP,/0Ää… ÆäÍÄÉ‹zOò -¯¨UªS…¢~g“›5LoÉ÷¼—€£b€!F -gâÀ$F½'¥%ºN™œÆ—«¶dý±QT?„Ô½t!IÅ -+ÓÉt -
4D éȆ@“‹÷ž ±”N
ñÍEÛz‰=
5nÓ]0”µOxy'¦»&`ˆÁåtýGKrq`0¡ÞL~<bÁÙvnï„¥Í
Ql{zÕbd’FÐÌõ/e‚ÀxÁ\ÇÕ@®4±JÒœ
7Ƹv@íÛeµ>„$žê¦°^6B -‹á -úyD?>™@0~P÷ a“ñÞ<¢ž¾®:œÕ·mG?./#Má Ýá»ÏþbnÅóT$f±`ˆAUB!É‚A‚ºOpE˜Q2B¢ZHÞ®ÎÃqÙë³ßõrʤ”ŒW“ÏõtEHö”{¡ÅbH€! T‰ÑþÓø¹@0HP÷i¸ÊüØ„J• ‰Ó—ÛÜÞã_™µ:ÿJðpA}Bk´.'g³æ”–Rì¹{ŠY/† -bPAUQ¨2`P¡îTÔOz„Ð -™,åØ!˜@0J2Q ¾Ó3+
áŽ9Àˆ,aÄO¦rÛJ4±Òõða”zRÃááRv€ÂÔÑþmù™(°Gb¾Á³yˆà,¢£ÛqðËãý0Sªúu} |ðuUÍêRÍ?ý ˜ÑÝU4f´'T…Í‘?¼98:8~Q—úNrM’„R!óÈé{*øô!Ð&ª”€d† +xÚíKs7Çïú<ä ˆÅû±§µ-Ù¥T";²\»å$5–X¡H…¤üȧ_g +3*êwüsç×ßéàÔûÿq‡á¬|ñ¡„9Ç;R ¢¤á'Ó÷;¿Ä7ÿº6Í}%,Q–›Ì'á|Æ9±Îøè”#Zp±þ(špjýAüå\.±–Jl:?;›ÌÎÚëàÛ +C„vº½îýj´ª.ªÙjoÈÝݯ~£”Ï&«É|Öüd4;m^|XŽÎª½¡cf—ì
¥÷ó‡tî±»&´â–hNYÊå
egƒæÅ1Ô*Ø
¡áMn¾\©oÄ´ÏÅ‘‚zgJcŒiˆÖLRÛó¿:t÷ä¼Ê@£)¡Lš†ñùh6«¦9h,‘J…ëÞ/FKÏ‚è^Y¸NÊà é-†bð@ù0x2q`ð Þ<Bí¨‚ððxü@r6_|ËÐ#)Ñö:<’ÚϽŒ<!½Åð +¤y‰ø£¥¦—“ÉbN€!Æ TJÑ~N2q`œ ÞÓZ†1b¤"'lóZæË¢ÊQÁýJÆ–_ɼYŒ..F‹ú/úa3ßeë¥)付&`ˆÑõT¬Ÿ¦LM¨÷H“v®~"MünhÚ¼.–ÌmÏ\óZJ
4D¨éè¦x/5¹8jpï‰kˆ¥`¡¹-WUvjªË)ÙWNÅAÈ<ôAè{Ô¦¸˜Ÿd‡áÄè¹æ:±c±B³¼+xnS‹»ÇÀJ/$!—Å” +é.† b0A9]ÿóvrq`0¡Þ#LÜqb´I}®ï¦ÍãŠvz{ÒÓZ +
4D éȆ@“‹÷ž ±”îâ››¶õ{jܦ§`(kŸðöNLw1LÀƒ Êéúo!ÈÅÁ„zO0ùõˆ÷¶s{',m€ŒbÛ3k…¬#“ì0b€f®Ë(Ææ:îr¥‰U +´ælx0ƵԾ]Vë›ÄS=ÖËFHa1À£J„ᑉãõž +ŒÌw‚C:ÂX|æŽX/Fk:ÞW«ô\•““ŸÖÈçåe9;!ÃÅð +U&*Ô}‚Šú¢G
âPýðöøðÍáQîË
,>4¦3Pí
Ý"ë{„z†„ó1^ `(/™@0^P÷‘ë×Ü endobj 1085 0 obj << /Type /Page @@ -3387,7 +3384,7 @@ endobj 1093 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 698.6222 539.579 707.728] +/Rect [527.6238 698.6222 539.579 707.5785] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.12) >> >> endobj @@ -3478,7 +3475,7 @@ endobj 1106 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 543.1004 539.579 551.957] +/Rect [527.6238 543.0007 539.579 551.957] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.9) >> >> endobj @@ -3492,14 +3489,14 @@ endobj 1108 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 519.0589 539.579 528.0152] +/Rect [527.6238 519.1586 539.579 528.1647] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.11) >> >> endobj 1109 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 507.1877 539.579 516.1938] +/Rect [527.6238 507.0881 539.579 516.0443] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.12) >> >> endobj @@ -3541,7 +3538,7 @@ endobj 1115 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 435.2628 539.579 444.3685] +/Rect [527.6238 435.2628 539.579 444.219] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.18) >> >> endobj @@ -3618,14 +3615,14 @@ endobj 1126 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 303.583 539.579 312.5393] +/Rect [527.6238 303.583 539.579 312.6888] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.25) >> >> endobj 1127 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 291.6121 539.579 300.5684] +/Rect [527.6238 291.6121 539.579 300.7179] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.26) >> >> endobj @@ -3653,7 +3650,7 @@ endobj 1131 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 243.7286 539.579 252.8343] +/Rect [527.6238 243.7286 539.579 252.6849] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.28.2) >> >> endobj @@ -3667,7 +3664,7 @@ endobj 1133 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 219.7868 539.579 228.7431] +/Rect [522.6425 219.7868 539.579 228.8926] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.28.4) >> >> endobj @@ -3770,22 +3767,20 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1149 0 obj << -/Length 3427 +/Length 3424 /Filter /FlateDecode >> stream xÚí[sÛ6Çßý)ô¶öÌ -Á• vvl§é¦—´k»³3Ûí-Ñ2'éŠR<ÙO¿ @Gxj$iÇj¦cÙâá9:ÿq#ÅFÔþc#•‘Ìp3ÒFE™MGt4³ï}}ÄÜ1cÐuvuôâ•Ð#CLƳÑÕÍH*E¸Úœ,'4ÏÙèjúóñùo®¾zsuyòËÕ7G_]…³BÏŒŠî”¿ýüMm -ê~[9#‚JÀJ¨oŠ…/åò]¹Œ—‘-C’çOAïA¡}&’…†˜Ð0ӨБ@0¡Q÷AèÌÂ9:s§óšÚéü}QY-뢞”¿%¶ÑòsÑuHPÿ‰Sõvˆœ0ŸŒ±A5#Q b¢¾·ZæšØ[)…“ò¢l›ù#šjžñ§W¨u,s0ÃTÞfy/LcÄñVbUÚ -z~»lšU¤Î -I¨äžFÎÄJKwÌe¹ZWÓØ™r’ô%ûL~jb½¦ÉÄCŒXÈcÙ0±‘@0bQ÷n²ÇvïÓZy`ÃdO7ñ·œb–Ê\8–&ƒðÚá¡æþ°¯êwU_@ëEYÛ®§ÈÄ󩎃XùÌ'c1¬ ²(V‘@0¬P÷+e8¡Fm±â«ŸÚªžõ—ÑU”0‘ÜøêØÖ4J4
5íÕºžt«Š~ÎH…¬§"
¤vTÅŠ‚ …»÷×V•SB™Ž)áºj/ß×Å¢šôLýt7-VåÃÞVÙ¡7'Æç4™`ˆ5C‰‰‚³ç>6 -RÊŽh3ÆýXu3 -º:aŒ/›õõ¼loíõ«+Hƒùñgxì` ƒÈ^àçÃò±ç6Ú‚¤"B—0Ø9o‹®xvæÇþBms³è†óRÆ6éʧ9¹QC¬QAQx"`¡îý•]…fž¡Ða|½ú‹0×›^¼o–omëú{ÿÛmsß¿˜¶×ýÿRÊgë
x®t7k†Û"œöÞõ!gÿ°åƒ‚ûœ$1ÁaÎQÁ#`‚£îCÕà¶7Ï”Wœ»ªñºžô’u}úЩëFªý¬ÉmQÏvúz~-°ò»—Þ¬×Ýbƒuò„JÁ >MÉ -A$Ô}€€Â„pø¾×¿oKØlÏ4ì¯ý:Ã?ËùmµR®#BÉ%;™¤åh? -£‡¾c2™gÄvÝòïS[Æ9?>½»+ëi5)‡§œƒÙc{aÐ -¦uK&M}ŸåúP8Pd|V“‘†2P5ƇäCuï‘¡ŠE·Èd=2—ÅâÎ?×çôîn^MÜ-Yc%³Ã‚ïB|“ †!P$”H !¨ûpg'7‚ð,ß"ÒïÚ´évCÉßN,kô¸èii«-9íj}Ý¿r«=àÖîõÊݪ¤~"‹v>©2;De˜fLäHˆÆ¨ïÄ9#,Ï€Ä|GâqѾ¯'ÉBkyü×m˜nõ¯;ÙÛJÙ¬Ûùûn_ÿHqÜGHgk‡‰Äøð†¥H˜8˜ï8™ég€:bW?1a»vÃ…I®Õ²¨ÛbâÇôx2¯6÷D*þ¤†å?a²xÀSf•/¦ê~+ Ò„r”»ÎŠÊ 7+WÝâxUß4ÝjV¿’µ³OÆQ‹rÿˆUX›4S+ºê÷Wδdå€!¦Lª\$L9ÔýV9)‰^ûÔ®rëÍÝ>Ãn -o
Zƒ[ƒ|£ë^ßõµp¶,'c½³lù©¶‡O’,0Ä„‚™bbøÙ@±@0¡P÷[¡'¹ÒP¨Ì U·.½×^¦i³(ªúEžÕ‚§CMnËÉ[ÿKUû¦µ\´»;Ù.^÷/$Õ2ýþ®AüIÖ b:ÁD11¼e,¦êÞ68§Dk¥ƒJºmì,»ìl³I×T6šÆYñéLfb¬@¹PV"`¬ì¹mÔf&'œ‹~ ù¬ÛÎ!Ž¿/êµß[xWÌýÚÁú±ûµ¡²_{'*&†Ÿ©Ï‡äbßmlÓv “î1Ng›e)aŽ§ÕìËØñðäæ„‚©-"-oGo”²H m¨û@›–„*ãiã=m·M×½Tú€Û›$7`ˆágbxî!†ê>à–1b´7áŠ[ݶåd<moúÞÛâmi;"Ï4}0F>ÑÉC#($“Ãc€X F¨û€‘4$7Êc$w0²ðxŽæÅu9âÏþØñÙMfbì@õ˜ÞccuØšäþ†Ä³ÍºÙ;³²Û·!Õáºö‰hòùN¦ b4A=™”Ã4EÁhBÝš¸"Z¸'kœm–Ô¶4õCÛwÍÛníU±QŸˆ(Ÿód¢€!FÔ”I¤‹ # -uˆb‚dÒx¢ôQm¹ZUÝTÖ¡@}:œ|“q†NPP{Æ)†ê>àDQ™{˜ÇÉwqªfõÿ6T—R@úX|ª“A†HPJ¦†çèb` ¡î=H¹!2Wž#ÓsÔÍ«OÇ›yô~³Q¦ø ȧ8•`‡àdjøIµ‘(xPßá+¤4‘Ô÷¸íöEï°ãj:ŸÿB>ÅÉ_Ì°/ÙÊÇÔðmû!`_‚87VÄo–³Ø0€Óu˜Žüý§#É
fØ#c·ò25Ü-Úa«ð¥ˆcnHžGœcÿgÄ(Å?þ;·_)5ùÐ\qm§Tº¯ÁrÔêr³Áæ(úÿð^ä“endstream +Á• vvl§é¦—´k»³3Ûí-Ñ2'éŠR<ÙO¿ @Gxj$iÇj¦cÙâá9:ÿq#ÅFÔþc#•‘Ìp3ÒFE™MGt4³ï}}ÄÜ1cÐuvuôâ•Ð#CLƳÑÕÍH*E¸Úœ,'4ÏÙèjúóñùo®¾zsuyòËÕ7G_]…³BÏŒŠî”¿ýüMm +Ò`~ü;ØÈ`g'2Ƈüàù°|칶 ©ˆÐÆå#vΛŢ+ž]£ù±¿PÛÜ,ºá¼”‡±Mz£òiNnTÀkTPFžH D¨{eÂF¡™g(t_¯þâÌuã¦ï›å[ÛºþÞÿvÛÜ÷/&…ƒíuÿã¿”òÙzž+ÝÍڟᶧ½w}ÈÙ?lEgùŸ@Á à>'É‚CLp˜sTðH ˜à¨ûP5¸íÍ3åç®j¼®'½d]Ÿ>t꺑j?kr[Ô³¾ž_¬üî¥7ëÅu·Ø`<¡R0OS2Àƒ +χä`ßm¬)I-‰4y?Ñ}Ú]?µ¶i˜¼›ûy9uõ´[dåæÐ÷Jn:!¹©m"gG<™H :¨{×÷’'’eœŽÓ5¡¾Êž-«òÆܪ]5K·°ÓÜ<¸¿|sùàjÝ/
e”}9E4$+™`ˆ‘ +¼/"_—u¹ôÝ« òEyã.ÓagÎëúf³a|3i–™/³b’ás—L0ÄÈ€Ú0>¼ï#FêÞ׈Ír`øñúÇw™kôÓiOCÛ–)zjÿ³?Y·ˆ¯’ÇdH€! Ô …$ ê>”ž¦©§Dôå㬺žWÍlYÜݾ߂.—ëÙ¬lWåÔ—•bjx=3‚óçÑ7™Kæb\@eP."`\ î}ñ`²»ƒJy,|ñ¸(][å{Ýí•ÃoŒX¸¾ªGåâÕyÛó‹çƒOY2ÀãJ‚ò ãuïy œPšmyàîbÒm÷ªýèþ岸é(0†'AÆg5`ˆ!Uc|xÑ%†êÞ!#rû'.e@FôÈü°ºõ‹_6“5(§×aº·†(ÆŸG#ä*hˆ€°£B,ܽïcI.¹'Aº>ÆÃMˆa˜ò]u½,ü˜õr}w×,-3‡É
¯§Ïh2/Àã*†ò ãuïG¦ˆÎ¨ð¸ø¾G¿"é°¿®«¶êø5;L‹} +"` î=L)8¨ž‚ð +8+*'ܬ\u‹ãU}Ót«YýJÖÎ>{D],Êý#VaylÒLèJ¨ß_9ÿÑ’•†˜r0u¨r‘@0åP÷[å¤$FxíS»Ê7wû·º)¼5h
n
ò®{}××ÂÙ²XœŒõβå§Ú>I²PÀ +fŠ‰ágÅÁ„BÝo…œäJC¡2'Tݺô^{™¦Í¢¨êux:Tž5¹-'oý/Uí›ÖrÑîîd»xuÞ¿TËôû»uò$Y'`ˆéÅÄð–±X ˜N¨{7Úàœ•*é~´±³ì²³UÌ&]SuØhgŧ3™`ˆ±åBY‰‚±²ç>¶Q›™œp.ú%ä³n;‡8þ¾¨×~oá]1CökëÇî׆È~í¨˜~¦ +<’‹}·±uLÛI$LºÇ8m–¥„9žV³/cÇÓ› +z¤¶<hˆ´¼½QÊ"`´¡îmZªŒ§÷´Ý6]÷Rén<n^dÜ€!†œÉṇX n¨û€[ƈÑZ8Ü„+nuÛ–“ñ´½é{o‹·¥í ˆ<?ÐôÁùD'c1Œ Lb`¡îFÒÜ(‘ÜÁÈÂã9š×åü‰?/øO`Çg7™`ˆ±Õcrxi,ŒÔ}`Gh’ûÏ6ëf;ìÌÊn߆T‡ëÚ'¢Éç;™&`ˆÑõd2¦)Fê>ÐÄÑÂ=Yãl³¤¶¥©Ú¾kÞvk¯ŠˆúDDùœ'1¢ ¦L!]¤H Q¨û@$“Æ¥wˆjËժꦲêÓá䞌0Äp‚‚25<¯Ã up¢Œ¨Ì=ÌãŒä»8U³ú›ªK) },H>ÕÉ C$(%SÃst±@0P÷¤Ü™+Ï‘é9êæÕ§ãÍ<z¿Ù(Sü endobj 1148 0 obj << /Type /Page @@ -3798,42 +3793,42 @@ endobj 1151 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 758.4766 511.2325 767.5824] +/Rect [494.296 758.5763 511.2325 767.5824] /Subtype /Link /A << /S /GoTo /D (subsection.6.3.7) >> >> endobj 1152 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 746.3946 511.2325 755.5003] +/Rect [494.296 746.4943 511.2325 755.5003] /Subtype /Link /A << /S /GoTo /D (section.6.4) >> >> endobj 1153 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 734.3125 511.2325 743.4183] +/Rect [494.296 734.4122 511.2325 743.4183] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.4.0.1) >> >> endobj 1154 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 722.2305 511.2325 731.3362] +/Rect [494.296 722.3302 511.2325 731.3362] /Subtype /Link /A << /S /GoTo /D (subsection.6.4.1) >> >> endobj 1155 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 710.1484 511.2325 719.2542] +/Rect [494.296 710.2481 511.2325 719.2542] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.4.1.1) >> >> endobj 1156 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 698.1661 511.2325 707.1721] +/Rect [494.296 698.0664 511.2325 707.1721] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.4.1.2) >> >> endobj @@ -3847,7 +3842,7 @@ endobj 1158 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 674.002 511.2325 683.008] +/Rect [494.296 673.9023 511.2325 683.008] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.4.1.4) >> >> endobj @@ -3861,14 +3856,14 @@ endobj 1163 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 639.2482 511.2325 648.1048] +/Rect [494.296 639.3926 511.2325 648.1048] /Subtype /Link /A << /S /GoTo /D (chapter.7) >> >> endobj 1164 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 627.186 511.2325 636.2917] +/Rect [494.296 627.2856 511.2325 636.2917] /Subtype /Link /A << /S /GoTo /D (section.7.1) >> >> endobj @@ -3903,56 +3898,56 @@ endobj 1169 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 556.2857 511.2325 565.1423] +/Rect [494.296 556.4302 511.2325 565.1423] /Subtype /Link /A << /S /GoTo /D (chapter.8) >> >> endobj 1170 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 544.2235 511.2325 553.3293] +/Rect [494.296 544.3232 511.2325 553.3293] /Subtype /Link /A << /S /GoTo /D (section.8.1) >> >> endobj 1171 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 532.1415 511.2325 541.2472] +/Rect [494.296 532.2411 511.2325 541.2472] /Subtype /Link /A << /S /GoTo /D (subsection.8.1.1) >> >> endobj 1172 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 520.0594 511.2325 529.1652] +/Rect [494.296 520.1591 511.2325 529.1652] /Subtype /Link /A << /S /GoTo /D (section.8.2) >> >> endobj 1173 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 507.9774 511.2325 517.0831] +/Rect [494.296 508.077 511.2325 517.0831] /Subtype /Link /A << /S /GoTo /D (section.8.3) >> >> endobj 1174 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 485.5497 511.2325 494.2619] +/Rect [494.296 485.4053 511.2325 494.2619] /Subtype /Link /A << /S /GoTo /D (appendix.A) >> >> endobj 1175 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 473.4428 511.2325 482.4488] +/Rect [494.296 473.3431 511.2325 482.4488] /Subtype /Link /A << /S /GoTo /D (section.A.1) >> >> endobj 1176 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 461.3607 511.2325 470.3668] +/Rect [494.296 461.2611 511.2325 470.3668] /Subtype /Link /A << /S /GoTo /D (subsection.A.1.1) >> >> endobj @@ -4008,28 +4003,28 @@ endobj 1184 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 364.7043 511.2325 373.7104] +/Rect [494.296 364.6047 511.2325 373.7104] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.1) >> >> endobj 1185 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 352.6223 511.2325 361.6284] +/Rect [494.296 352.5226 511.2325 361.6284] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.2) >> >> endobj 1186 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 340.5402 511.2325 349.5463] +/Rect [494.296 340.4406 511.2325 349.5463] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.3) >> >> endobj 1187 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 328.4582 511.2325 337.4643] +/Rect [494.296 328.3585 511.2325 337.4643] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.4) >> >> endobj @@ -4120,7 +4115,7 @@ endobj 1200 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 160.8217 511.2325 169.9275] +/Rect [494.296 160.9214 511.2325 169.9275] /Subtype /Link /A << /S /GoTo /D (section.B.3) >> >> endobj @@ -4134,7 +4129,7 @@ endobj 1202 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 136.7573 511.2325 145.7634] +/Rect [494.296 136.6576 511.2325 145.7634] /Subtype /Link /A << /S /GoTo /D (section.B.5) >> >> endobj @@ -4188,16 +4183,13 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1211 0 obj << -/Length 765 +/Length 764 /Filter /FlateDecode >> stream -xÚíÙÍOÛ0 -Áø 顉Ò<¾å³Þ,ëêyæ6G‹æè®Þâå0˜WˆñŠŠ÷óJ‚ñBÓ^\ÍÀz^¢ãµjê©;ó¿Ó:´·¼ùŽöbÞ⎃ÒýÞ…`ÞÐôÁ›+C+e¼7Ù¦?½eŒXmŠvPK‘LÍ]7òÕ¬ -ÚÉôvähô }§;Œ1‡±P¦ßa¢Ì!š>8 @y‡jwÞ+Zl÷³fRpàã9î°¨ü¶Fb¨â¶‚¦ý¨…`¨Ðô•rF*áQéU]7ë*£ô¨é0šÂ~Õ"š^õtÿ•ªDž>h2šX -áÆÑtšªÕ²jo'Sã•Ø1?CóŠ1^qƒA÷_ù§ -Áx¡é/-‰*ÜXÚŽ—;Gª¦^ÌÛ?5ú: -,¿õƒaE¬¸µ(¬D!,4}€¥8±–ú[JF;Xëiñ0¯¦ÅwJÙŸÍÒù²0Š:(¿çƒEE˜¨¸§ E¿¨D!˜(4}%¡\ú›FþØlʪõä°œ§ª£Àò[?VˆÁŠ[ZöÃJ²+<¿/(¢¨‹K<Âw¿@¬”ðþ/v_kM¸1,½\Nc®tÎ%içjû«w©ÛAQåhÉì‹endstream +xÚíÙÍOÛ0 +Áø 顉Ò<¾å³Þ,ëêyæ6G‹æè®Þâå0˜WˆñŠJöóJ‚ñBÓ^\ÍÀz^¢ãµjê©;ó¿Ó:´·¼ùŽöbÞ⎃²ýÞ…`ÞÐôÁ›+C+e¼·î§¢±Œ¢MÑj)’颹ëF¾šUA;™ÞŽÔ¡ïÔ`‡Q æ0– +|<Ç•ßöÁ¨¢@UÜVЬU¢šÞ£RîÀH%<*Ý¡ªëf½Ce”5FSØï¡šâ@DÓ«~‚î¿òO‚hÂÓMFK!Ü8šNSµZVíÍã¤`j¼;æ'`hÀ`^Q Æ+n0èþ+ÿT!/4}à¥%±B…KÛñrç¨UÕÔ‹yûñ§F_Gå·~0¬(ƒ·´ê‡•(ƒ…¦°'ÖRKÉhëq=-æÕ´øN)û³Y:_FQå÷|°¨(÷•(…¦¢$#”KÓÈÀ?›MùCµ~˜–óñTuX~ëÊ1XqkAë~X‰Bö`…ç÷…Euq‰GøÞÿ…Áîk
¡ 7†¥—Ë©q̕ι$í\íbõ.u;(ªü/Ðiì—endstream endobj 1210 0 obj << /Type /Page @@ -4238,7 +4230,7 @@ endobj 1220 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.6425 710.656 539.579 719.7617] +/Rect [522.6425 710.7556 539.579 719.7617] /Subtype /Link /A << /S /GoTo /D (section.B.16) >> >> endobj @@ -4266,14 +4258,14 @@ endobj 1224 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.6425 662.935 539.579 671.941] +/Rect [522.6425 662.8353 539.579 671.941] /Subtype /Link /A << /S /GoTo /D (section.B.20) >> >> endobj 1225 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.6425 650.8801 539.579 659.9859] +/Rect [522.6425 650.9798 539.579 659.9859] /Subtype /Link /A << /S /GoTo /D (section.B.21) >> >> endobj @@ -4899,25 +4891,31 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1334 0 obj << -/Length 4158 +/Length 4157 /Filter /FlateDecode >> stream -xÚÝ[[sãÆ•~Ÿ_¡rmU¨ª!Üw42Ocg<«$;ÎÎ(v9¶k$!5$ àÈJ*ÿ}ÏéÓݸ°)iw߶ôÀF÷A_Îõ;§!~Åà_i“™BWy¡2͸¾Z^±«-Œ½Å=Í2-ÇTßܾúú;™_Ya„¹º½Íe3f-¿ºÝü¼™Ì®a¶øðö?Þ]/…f‹Oï>^k½ø~Üó÷y÷ñíu®·7ßøt½ÌY¡ßþûÛ¿ÜŠççøöûßݼÿë0Ïõ¯·|õî6žb|RÎ$áï¯~þ•]màÀ|Å2YX}õ -}©½}Wo—ûºëçÇåRör{5žôléHu¾¶£µ¹‚CæŸ.þg\w)Œ\ô»ŠMy¨:j¶wø+å~O·ŸnÞSësõè‰Ö§ãñšÛEÕôûGßÕ6¿0&¶'ØPï]{¤éN_jõˆg†òÑFE^d\ÇÃâv6žl|'–HU74cU®wÔúRW×…Xdø.JN-Œ†ñ¬ÐZ¸×nÝ¡A÷öÄhÚ~G®/ûz
g¤çÄ© ×3Zeã»6°ézM·z÷îcÙTÛ¶¯Ë~üb6—yP¤œçY.FÛFTOh[ ŠÚ¶©öU_Sµ½bl&”âž©°Cä~BFJeRJëé~NÌNƒçÚ8Y$$-³í˜ˆ~óBûùÓ̈Tçܘè‹E–3°ãĉ¥(ø¢¤Ÿmý¥j¨9•ôc¨qçT¡=Й4ºêø¥:¢§dñÓìvW£¢Àt›Ìi%&ãÖäSlZ¯‹åý}P¾¾ýŸ(¥·Ó e°<¿¤i&×™åºxZÓÆT—5-Rá)ÊÍæm“Ò2•gV°ÜË} šÌ â²6/žP1yn<Áz_v]bðŽÖhýÒiMnfª©¿&¦*¤&b¹«A( ¬¶™³^‚ÔeúiÞGªsæÏ!ÏF¨ ÷ßn@$g¨Õø㸼”¬X<ìê}ENa±áÖµQKñ÷xm§¦©¯ù¢Ùz/*„͸RjîEf›Ž}84fAù÷SM
O‚kž»Ö::Ðïö¬îa‰ûîîßB@*ˆ½w|¦ZZ~UÑsWõÔç’Õ-¬
jö˜\‹DôLZŽ¹
çÐr¬(:S̘KZ0›d\dkÂÏ®?ÖÍ6ƒdî«uîL;çwÌÜË;žçÇßíD2¦#
À®Ág”žm0ÜW¿õᲧ¾‡ö´÷·Nˆ›º)µó=0¼r€³úÝ“K½ß—ëà‡jj5 Ì?²ÜÅ÷9•`@•<×6ržœ&™a -&¦È‹!”KOj;û^ÃoW~©`pã{ý(š‰,øæ>LZ ÇDÈÜ™Ep»²Û%Ž9õYóÔ‰( ˜×¨Z,´"“I¬-
¸ÅÈ‘aéé¬y&({lÔMŽ¸>>Þ÷íöXÞï£àH˜’+v¶USCø³“¨gCÔ³N’Ôr¸q<4€±%`îÅ»ªIáƲÜXû<ò+Ÿ—ðN¦/°Ï×#ÿ†ƒA¬Ø~¨š…–óE¾Ø·å&œnÈM€¯ÀŸK–Oµ»ˆÑi‚¶½öÚloMš\p7ï|¢¦€¿ÙÓY—
5î«cÑiy×£ŸvMú;‹æ8±‹Ú/Ú•‡û}Êùj™œ§5‰ÛÆ+ž *œ[ð;xï)èáÕpð„p™gÊÊ üÕonà -‰µ§È´ogKlª»ò´ïÑü>± h7x -¼!ôÓÆõb}{æ -¡ŸæLù2ôafØ·ëø‚òÕ/h¤ Ø`¶©'€@gfFIæ|cj€:Ю»D´y&uÐü¯«~ý5.v [ I¨ :uWX¶Pfª*«ž[‹`L匦¢î;"¼î`rÓD¼(T1plŠ¯Ë”ˆ°e™â¸<¥¢«¥,1#lxs7L~!â©!Àv°~*Ï@ÇFÐ× a:ìh
+¦º$T™©\„M<üC‰}Û~¦V2¡ÊU¦
×g"Å2U2sÎYŒ…$Ú#Mþ -ßÜ|øÃ…ÍgÐ{uªÆDw…³ -{^þBp‚‘ˆ‰!AWóBƒQJŽììŸ4¸bòÈ'¯ÞYãâã´ºWô;ÄÄd¡CC -ÍÀy‘)NWA4vÜ^Qããhòå˜þgœÍŠ‹ªÖƒÉ›FÎ.9 -œy£YÊ -ø…ár‘þÒ…ƒª -m_ Û‚¤¼É->Tqè¶ÐÊXÆ9S"€Å"ÚÄÅ‹ü“£{NÅŠÅMïÛ=‚Ûû-¤ÈÈÙ5p¸8÷䶅i,ç„‚ýeÌùÖ eÌðçD’3–‰[-•k¬y2ý¿¹b\*üðƒ.ÆÝ—Ö$*¹ ?c‹§]àÀúX3<ºkñ†ÛAuN™c¼«÷Ÿ—à3nüuH‰-U«<Žvq8¹()|AE¸².þ|)÷õ†š›öP:{*šÚÌÚÓvGÝuO¤MUù——á|ëþ䋲£Uv5¤ÀŽAëÊü
ÂúÝÉ¥R†}ÄKmxy_®Rð!T‚Í*+,—3+™$‘0 Ã[|Í‘|(ðâߦ?\Æ—ã)Ï/+8w.Ì+?¡Æ“ÏÜY'u¥’ƒÀ É—«Òþ¬@ÿý¬?c…à ÜEwþÐRÏS@¦2*Br¿màoR·u†Kêb¶%uL1©©R!UpBŒ>¾ --Ó;òYû°—ÉÇ…Ñ…ÛöL°ÂJšRñ¼L‚ã0±,í—àãÀ%|àîÓI)˜OÕ°ƒrl¹â2’©~ .äEˆf±ø‘¿ -(s^ŒÜš±üG@aÍ\@áDœŽ%qÆvMŽî>6uMhx1å¾ä9yPëzZêXùwÔb¯áçj|‰öàé.ÒMé+>pF8´M€ðõì³…ÅÇ,*ænبK²¢˜ñcò]M¸xò }ü-²ìîq–èŒVš‚xPV?{o>ç,?£['ŸŸ6p–dmž’ž2Méjý£ÂØÛɇ>äÏë¦>¸ÜKuÄ›±[÷¿dí]êcæjà¶xTK÷rà¿âÓ?ÝvÃç¹ø¾‰ áë«7© -û“_ì7³JòéÌÿzséÿP¤ÎðŸG,nòÿü?*Ã¿î ¨²V\øÌ#·ø1•›Âsq¶sÎ2!¥žoý¿EË:
endstream +xÚÝ[[“㶕~Ÿ_ÑåÚª¨«F4®˜y;ãÙN²ãìLÇ.ÇvmQ[bDvDjÚTþûžƒ€Aݽ»o[ý 8Äå\¿sÀæWþø•Î³¼Å•)T¦×WëÃ+vµ…±÷¯¸§Y¢å˜ê›ÛW_'ÍU‘¹È¯nïFsÙŒY˯n7?/d&³k˜->¼ýw×K¡ÙâÓ»×Z/~€÷üý_Þ}|{mÔâöæûŸ®—†jñí¿¿ýËm x~Žo¿ÿðÝÍû¿ó\ÿzûÇWïnã)Æ'åLâþþêç_ÙÕüÇW,“…ÕWðÀ2^âêðJi™i%eèÙ¿úôê?ã„£Q÷jŠs0œåÜ^-¥Ê,,Ÿ$29Òhè"Ë¥‘½ÊŽØky¦‹B_E*doßÕÛå¾îúùq¹Ô°-c¯Æ“ž-©Î×b´6WpHSðéâÆu—"—‹~WQ£)UGÍöÅ¢Üï©ãöÓÍ{j}®=Ñút<^s»¨š~ÿè»ÚæÆÄöDê½k4Ý©óKñÌ°Q>Ú¨0EƵPp<Ü!ngãÉÆçqb‰TuC3VåzG/uõp]ˆE†ï¢ôàÔ"×À0žZ÷Ú;4èÞžø +´c"úuÎ!ì[˜§™©Î¹1Ñ!ŠÌ0°ãÄ Ð½(ñG-¶õ—ª¡ž´ì€8CwNÚ=yR‹®:~©ŽèÇÀëI¿0ÍnwuGt›,Ì©%yÆmn¦jÙ´^Ëûû }}û?ÑJo¨AÍ`y~IÕr£3Ëuñ´ª©.«Z¤ÂS”›Í?Ú&¥fÊdV0ã?MæyYkŠ'tLg…1¹'XïË®KLîÑæZ¿tšAU§›™ªê¯‰i@ +)‚M€Xîj +«m欗 õÜ2ý4ï#Õ9ógžg9†¨ ÷ßn@$g¨Öø㸼”¬X<ìê}ENa±áÖµQKñ÷xm§¦©¯ù¢Ùz7*„͸RjîFI³
ûp ?˜çÒÈ¿Ÿjjx\óÜpà°ÖÑc€~·`vKÜw—ðÿ"ºPAlí½ã3-ÐÒò«Šž»ª§8—,¨namP³ÇäZ$Ú ¯hÒ +ø›M0uÙPã¾:vž–w=úiפŸÑ¹³hŽ»¨ý¢]y¸ß§œ¯ÖYnXpZ“¸=a¼â™ Á¹¿ƒÇðž‚ÎY
O—&SVå¯~sûWpH¬=…¦};[bSÝ•§}?ˆæ÷‰A»Ás +ŽÍ%g,òÆ=Œ7ì:~÷Oúíï=É¡ì@^oèáÎÅ]l}5z5Û¬¾òÿzó»Tð{ñ{¶nK(?´}5cÃêX®?Wý<#éªC½\·ûÖ«TI|j’’J)µ§ƒñ$˜Ô\elåi09¦º&#žR–ÿ×`r’ø@€, +%Ÿæf¤:gç4 +£ó)?Câ#™uqpa@ˆ6"Dèì!Rî|;‚D q1úHD„¸TV/¾o ‰wwntw»!uTÚÊ©S:ÁöXogÄgä¿Ôe +<r`»ˆÎÌÕ¿yÁ•å*ãEÄ Ñ×®¢;Aö Æ[I𤇲ïC~G±SÌNË[8½M˜’´|á!Šã³%´†´3ÌŒLq¹èêf]…+Æà+èO
ä‚aRðÂ5/°EȨ¢Ð,‹‹”'n0tgD2÷æÌQä߀(ú㥰‹mSö§ÎK"ŒR·ô;—½%=v»rHPqªjMÏ=†K™{_å&”Ëá·iiø¡|¤ŽÞwÜ“/ûRoüaGr´´nî°í&^‰ƒúiãz±¾FÈ=s…ÐOˆs¦| z‡03ìÛu|Aùò4Ò ì0ÛT‡À 3ËGIæ|cj€:Ю»D´&“:hþ×U¿þ»„À„$4 :uWX¶PùTUV'<·*Á˜Ê= (LEÝ#vDxÝÁ䦉xQ¨bàØ_–)aË2Å/pyJEWKYbFØðæn˜üBÄSC>€í`ýTžŽ;Œ ¯ÂtØÑ欘rè’Pe¦Œ›$x +8ø‡[û¶ýLdBeT¦s®ÏDŠeªdælXŒ…$Ú#Mþ +ÌÙ‚"?”M¾©—s8n-¬²a‹\4¾¹ùð‡!É5ŸAïÕ©vÝÎ*ìyùÁ F"&†]Í
¹Rrdgø¤À•ÜD>yEðΧEнz¤ß!&&`Ä+¸þy¹uEGx{Y&ö\+¤Ã#K»õ±^Q’\3 +<sÅ~W7\Ã]”ÚÀàhA¶Ñ®ñ~Á£I8´ÅúÒÄ)PÙ| +k¬ WP6'L„¿Dj<;ü¨¨ØÚÕîžÌ:?Rç°7x8Te㧓®ÂòÊ¡£å…G?@ék„c¡«ác& +Z×Ý…{ÊÚ +•ÞSÀ/„—ˆô§.TUhûÙ<( åMnñ¡ŠC·…VÆ2Ι,Ñ&.^¬0àŸÝs*V,nzØîÜÞo!Õ@FήÃÅ1¸'·-Lc9'ì/cηÙ(c9N$†±„HÜj©ŒXcÍ“éÿÍãRÜg°yØЃ‡5‰J.È/·ÅÓ®Fp`}¬ÝµxÃí :§Ì1ÞÕsÒ'|Æ¿)±#°³j•ÇqÂ.'%…/¨WÖÅŸ/å¾ÞPsÓJg@ESû‚Y{Ú©*ÿá2œoÝŸ|Qv´Ê®†Ø1h½C™¿¡BX¿;¹BÊ°x©
/ïëÏU +þ"„J°Ye…årf%“$&ax‹/À¡¹ ò‚o^üÛô—Ë8ãr<åùeçÎ…Ùaå'Ôxò;뤮TÒc˜"!ùrUÚŸè¿Ÿõg¬<áÏ`‚»èÎZêy +èÂT¹ŠP ÜoÛ#ø›Ôm¤á’G£º˜mIÓCLjªTH98!F_ ++Ûä¹'*•¨êå‹ûòØ9¤§ò€ï U®×Õ}ïÛÍ#5¢Ú*M`D…ôJås´©|†#9hÊœ}% $””Oæó‹%êÒ/±ŒÝ¡\/–Çè’Ì«žfƒüé¼xµ‰Ýæó7ˆ£œs„ü%ôªìªeî'šuol"ÿ¸K•zG áãwßú¯…µ²>¼#,dâEÁÝBsHËŸÈ7Š\ê„AH6dâyª’º)ÂÃó‡Bÿ©£ÃÉKá ++
hJÅó2 Ž#ei¸.áübà̧jØA9¶\qI†T
?ò"D³Xü0/ +`1§×Øp~
O&ð€°X̼.ºQËÔÓõ£¥ÆšYIíB¦€2çÅÈå–_à(l>d +â!@Yýì½øœ³üŒn|~6ÚÀY’5¶yJzdšÒÕúG…±·“}ÈŸ×M}p¸—>êˆ7c·îÉÚ»ÔÇ4ÌÕ6Àmñ¨–î#äÀŧºí†Ï/&rð}Â×WoRpÀWa’Él_åÇÇ•ÐÍÍûN+ùCS~ûÍa%o¶?}ú¦ÿéGµý©ùݼ绿½ÿëöo‡âñæý»íF8ö'¿$Øof•äÓ™ÿõæÒ?¢Há$.,XÜäÿùŸT†ÿÝAPe¸ð™‡±ø1•›Âsq¶sÎ2!¥žoý¿Û0:|endstream endobj 1333 0 obj << /Type /Page @@ -5805,19 +5803,24 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1486 0 obj << -/Length 2645 +/Length 2644 /Filter /FlateDecode >> stream xÚ¥]oÛ8ò=¿ÂÀPˆQßêÝKšf¯ÙÞµ¹&=à°ÝZ¢m]eÉ•ä¸î¯¿ÎP¢¥[\ ‡Ã™á|‘3þÄ,ŠÝ8ó³Y’…nä‰h–oϼÙæþ~&˜faˆ6Õ«û³‹_ƒd–¹Yìdzû•Å+u½4³ûâw't…pçÀÂsnß^ÝÍ~ä9¿AÀ'/ò®>̃ÄùÏíý\¤Îû·7€ãÙ»··ïõìýöŽ|çêÍåíýõš™ïåëÏ…Î廫ë×4õúïôëõå< û®ïæÜÿvv}?èeë.¼ §EüWŠ¾u®&½ó^»oš9;Ùç0‘ŒnƒBÁ¨èh€‘†_8|?ƒ„éû!» )"³QõIàBÒæ¦d6æ+éÓm$‰YÛª\¶²=ò–K<g‚8Ï…30§ z9e€ ܸŸÐ«§žÏ~ -¨²îU»’¹"¼>8@“ßB'$Ä°xÅÅD}âœè´[Yq¬å¶Ì¥5œ¨Y N8¹dÜ€”Ì¡§Î¾îËuJ–*÷&ÉLÔ,ÛÖ„É›N‘Psœi)¨¡½ë(™U·S¹Ž£œ™5Ï153Keä©9§V•*žsC²,¬ -kóÔ>*À®öuÎ.Ø][n¡Ò
Lj7t§òýÈ*¡ al¡‡ l¡ }€ëMu·ºÅŒ„SIÝaFâO·ÝZ'¬ -”
tcó3Á]IÊ&IÉ$ 9RëSsŠ -ƒ~i·§&¶nlë®|`†c¾Ã¶ÏËtižðµËë[òØ·ê¸3½˜éž$gõUnw»¶n%Lþ'2;€¨S+¹™Ç¦aJŽ0IíÛ™b=o -&Órà·Î«}aˆuê†oo¸ñe–f„ ”ìt”¦ÑÓ5x§5ZŸDßñƒ}ŸúÚÓ (µgŠµÄúÈiª—x?GƒÄЧ¶ì¥0 ³ÅFUG‰¥8Lynæ¦r#;Âõ\qc‚‰¡‚RÍOÆÚ÷Wgc´N¬êÔN¶äÞ02Ú±„änÀQÉÇ•|ôé(u†1Ü=ñ¦ê™¯7xIÇ膾+蟛Ã<óõ
RîÉu `Ý-<²¦ô)µžlÑÉ¢;|±x7ßbøâë
×]‹ñÄ1i³>[áƒ4rÃðdz„ïBM
§³`×L¸AB
à4/Zç/ÍŠSVcgág¡ëÅ¡°‹¼õæû°\ij ñ]_øtUyg=mE¸…çF’kŠ÷óE,ð0öëdžž^¬?rý´…g_f`Å0Ë"²`ëh¸¸Ùú³×
h4³”2Œ6gTlw.$ˆÕYf®—†Öý2„zebáÁ™pð0÷#‡œ¶#Œd²Þ¬ÅËA 'S”VB/vZÊ%Ì¢e@»ªá[ϺÙjxXZ£ â¨3‡sz -ÙpI:çg¤ž°äˆH¸ä=LËz¤¡nZp·&ÔXµNöìé—oð¯’;Š]%ÍkÀøfSsQF¸?m6†×à¼yþ)gñø½ç‡žžÌöz“=ï—½4’[›«U÷’’+¸ßÉïI+£Ký_ ¢°6ñi¡Mßï^^\Zµºë*·i×]³osuÁ¨ñw{ÙºëoÓ¿NØ»\í[i^\»Àê%´ˆß‘2°er¾}]ðJs¹ÛÑ¥çôøL×øÌ+ûtD>yv3÷ã†æ}\ìÅ”:„û$‚PŸ<\Ì“@œ:í߈fYÖEvÿ/vŸóNˆG§´œ~²¥€Ž"¦nïÞP¼ú·³1Õ„‰¤©?i }uØ°P¨cà=‘ÜüÈöTôÿZ’SLendstream +¨²îU»’¹"¼>8@“ßB'$Ä°xÅÅD}âœè´[Yq¬å¶Ì¥5œ¨Y N8¹dÜ€”Ì¡§Î¾îËuJ–*÷&ÉLÔ,ÛÖ„É›N‘Psœi)¨¡½’9t;•ëðÉ™Gó/3³TFŒšSiU©â9ï#ƒÂ +°§´ý¡! +s½o¹liËés×A=œtÞ´dܬÜ4eΓcHÂ`àòäD»íËçZŽ( Ý8N³ï·[6•îDh•÷D@_[¼ÐŸ<‘<Þ4~"õ¿¿©!zºéIO‘ +7ʲètÓâ•Ò…ÌsU¡§a¾ø +0auCVÒ[kp+×-6À£¸ç„v?ÙŠZØ»&àÙ½‘¬f`%;¨ßSM6q蟶Ҁ Ðü5ÍqtùNw6[š¾ºýHH¨3 AͪW5ŠêŠÁ|FY‘´Ôs4ÞôDE1©÷âv¬×Йv,¨Z!Z—ÙRwzzUCdÏS§L·,bmšK„Þ±é8{<‰eð«A<2·Vx‰³ÕÃSï:;‰ØÖŽ³ +ðÒÙó,ú¢¹Â€&ÔæjžÝ”Jߨܦ@ Ñ@5?Ü•¤l’”L¢’#µN15§ +2[lTuq”XŠÃ”çfnJ 7²±#\Ïõ7&˜*(Õüd¬}Åq6FëĪNídKî
#£KHî•|\ÙÉW@ŸŽRgÕ/¨ž¹çzƒ—tŒn軂þ¹9Ì3__¼!å˜\Ö•Â#hJŸRëÉÜ*ºzÀ‹wSðå…ï»Þp˵O“6ë³>H#7ì
Kø.ÔÔpú
vÍ„$Ô +»È[O]±ËE<ßõ…OW•wÖ‹V„kPxnø ¹¦x?_ÄŸcß¹~làé%À*ð#×A[ØzöeV³, "ÖºŽ6Ј‹›?{Ý€F3K)ÃxasÖJÅvç’AXaæzih]+C¨W&æœ s?rÈi;ÂH&ëÍZ¼¼„z2Ei%ôb§¥\Â,Z´«¾uñ¬›æ‡¥5 +"~§:s(1§PKvm3‘Ã-ØÕÖ4±ßR·´ˆÔ—<Âë7øB±ñÁÝiþTÕ@W~šÃ׶¼I«&É´žØ•Çßæè,戜z—½ýv‰ JÆ÷f…Ö#U;è—œWˆÓ®ì츓Æ0£ÌäÐó@|žÄkg®Ÿfé̉Ÿ‹2Œç(ƒÎ|1>;ÿ\°7€k^Owç†ÌO€JxT1_Ù=WæAJ,+óp$Lá|FnÙ³á©%ü®
—¤s~=ê KŽˆ„KÞô¬GꦧqkBUëdÏžnq™ñÖ ÿ*¹£ØUÒ¼Œo65e„ûÓfcx +kÓ_´ÚôýîåÅÅápp¡U«»®r›v}Ñ5û6WŒZ·—»þ6ý£„½Ëõ×¾•æÅe°¬^B‹ø)[F 'àÛ×ÿ§4—»]zNÏtÏ<î±OGäÓ‘g7s?nhÞÁÅN0PL©C¸O"õÉÃÅ< Ä©Óþh–e]dðÿb÷9ï„xtJ‹Áé'[ +è(‚`êöî
Åû§2SM˜¸AšúÓ™ÚW7L …:ÞÉÍokOEÿIuQendstream endobj 1485 0 obj << /Type /Page @@ -6250,38 +6253,29 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1555 0 obj << -/Length 4062 +/Length 4323 /Filter /FlateDecode >> stream -xÚÍ[[s#·±~ׯ`žB¹L,î—¤ò°q´>›c¯[©<8.Ÿ5’¦–äÈœáj•ÊO7nœ!ARŽ˜ªSªÝ1@hôåC£‡M(ü±‰ÒD;î&ÆI¢(S“ùò‚NîáÝ×,¶™¥F³a«?^_¼y'Ìħ¹ž\ß
hYBe“ëÛ§š0r èô«ï>¼{ÿõß¾{iäôúýw.g\Ñé»÷ß\…ÒÕ7Wß^}¸þ~Qá¦_ýÏÛ¿\_}ÞéHäï?ü)Ô¸ð8@õû«wWß_}øêêò§ë?_\]çĄ̊À•ürñãOtrëþó%ÂY5y‚”0çødy!• J -‘j?\ü5¼õ]K”’Í•˜Ì¬&ÜhuxØ0…acQ9bŒ²;£Î´%šQÜj çÛ-‘l°%FgÍÄ -ÂÖ–Y2KgCŠû³s”(¾;½ÇvÝãß¼ã|Жq(C`«·+”;}ÿ|šA¯ÑÒ#¬ŽV›åM½.ŠXTl¢Æž^?ÔŠÄÆÊ“
qB¸Ø¬éÂdͲéëÛ0ã¾
•4þ|X_2;m7÷¡æ#Ô—H{2cRÌ#N)î©>5=6efú©Zlê.”oêEû„E;e”ËPÙ??6ój±x?ýHuׯ›y˜‹ÓêÍ%›vu(ßÄöajóºë`œOe} W«fu9TO«Ÿ*Ô¶=pTجUxݵË:4˜W@ñK(s:V©s_¯›îchñªèÿ}ñ[x°ðzþP+˜÷:þ„n£³sƒ(3Ýt¸@,ù9) ~>.ªyýÐ.n=!€Ï®^Ôó~Ôv]nÛe(?4÷³¸ïÈÅÛ?PÉ®–IBÁˆûVc_g$è„ -Þz©^x÷m–X)“]Ùg0ŒX\çÙ8”)ž`‘€´è£G<ªnoKÖŒ\ð•a¨®àaïÚÅ¢cñäY,@káY8Ó-ªî!š/ï´«¨×ì7Q³%òr”$PèêU¨‚R(Dó¯Û»PwÓô](5«Ü16¯ûeÕ}»c¥^_: -JÜ,Ð@ÔõŸA—[ÜKÃ<5|Ve‡â„“w”[Jœƒ.Ú(â¤f¯ÞÑLq6$¹¿£ÜÂ.Y@6¹Ù±5DSvtY=‡·àŸÀ# -ÀhIó „â_ÉCQØ䈣ËTY@ -´5[ËÒs¥ŽÓN¤Qxìqô?O”p"}ÃK,’ÒŒ C˜ç,ñHžq3V¢â€˜ãqKûↃ&öÐãìQ ]öä²4‚6ðÂØ‚A° -ø"Ìx¿ÿîÕ`r0³wÏOàï -<âíïçð¢Y}jŸÆí˜îO:ôèæí£G8øUÁŸ.T$ñÛ±¾´<(nbÅVA
xkû‡ª%Ä3©.v&
5OÍb‘è÷ó‡Ø¬šœ•LÝwaOî‚‘Z†_Õê9ütƒ¡4Ø¢àä¯ ™<È!´¡,”ŒÇÑ•„³È–õóîšÄ˜QÛv¯5½‰àlH± -À… ÒžR©Üîl*5¤xX¥Fó[4]ÿ¥*Cc_BYBMÛU+Öá¹lƒP´wšŠäå -ŒBƒóWî|œÉO°F ì -⼜dêqPƒ8œßœ9[SJÃRaG1éBŠè®]ÍVõ}Õ7ŸP65 ->ƒcMxÛ¬úúÞ‡'àž–RÜDkBdb{,Â7 -¯–ÍýCjï6k0äëPS— Ì6þ¥ÂqÑaoý¡0oa½Ÿûð£‰ùé¡™GájÒ«ˆ‡Ð °ÁÞ½Nþ«6šz!âÇ%Œûx†aŒªØ³ÒpÊpÀãÜðÕV:œ
)îÏQN¤…#Ðh†Ð - íô—M”1éˆÚ¤mÇꀖ±äczðŒ1=(ùè>Ãyƒ££P;3í6‰FÕlün -Ó—ä07<›)‘ÃÑÁ…]9ëÑ‚R!¸„5Å€~iv¨…èðYéó?Ò;±|î,Qˆ7hÿÄ“H‘„B~µááûx6 -€Å—¡Œ·£Íâ„š|Æ-DbPcxr®>2ù”†D?ã‡|j;já–¹ƒ; -:A·|"$Z‹×Gh3ÅÙäþ®J´0Ìl>¶©ñ@žÞþBለ‹+½S±'Å€U(u N†C-½'Š³!É‚$cxÕ›šÔÌ+rûTZ3H†Ìqº~Ó£ @ -s–Ö*hîžm™â‰µ -°CŠÁ’FkÅ륓þM*‘œ¤d|ÿpqÐÜ ²Ø" Ť¬D€S;†g9ÀT`$@#nÔFbdÀ -ŒÔ” -¬ð#ÂÒÓ³÷³£©X{Ž°Ü¹Êw.&&ÐAbÖŽ|‡mbþôÇT炈y2 •Z±2<àHÝÜž>£'@ -ào6ž8Œ¶¾Úì&Š³!É‚Ù0ØÇÜì$@'OKÃsȹn+0~¥¨þ54s—Cç%nÁÇÑãEôa"nþY<.¥†ç;.
(;.fXý%Ç%=ÂNFúü0ˆóbª·ƒáÑ.ž6«
ÚŒ¶qvà°rÚ¿`(0”‘C¼D©ïªÍ¢$–`©¬Ì™d{Œ[†·E/ -’ríð"›pôŒ#f=ð{‘t£Š¥§ªR̓òÄ»ö>uõúS½ÞéÞõÕºqÖÝpnqk@y¾‹9œ‰yYÂæUŒZ·xñwÈâsƒ½¯o}ÜN»yµCl ¸]ÿ®`8@6°?É’ýo.jE¤æ;²Ú®K‘ A8¸ÉtCT 戥وù;Gaåôc³hožûº+a* -ÚŒ8‹Áµñ.pÃ\bŸ®šîN N!‚š æP³‡yãKΨ
©ÐCËxMU›U×ܯ°ÔùÒ¨0 D¬x/DyHvkͬ”ÚHI0×¥™¿bjïJÚMÿÖź½8‹A¼¤_âÛ5±ŒêmšSØQ-1ØÅÇüͦé¦î²]K×Fm4PÕ]½H©0u?º‡ŒŒyÏh)ÓánŤ ÷JìøßLŸÁc®ã‡âÃr
F×Ѐӟƒs)Ýõçvg»ëR<|×?š_0ÃéÁBm!3Î5¿LñÄ},Øh‚«¶–) '%’¹ -ÇÉ}((º™dàâ^좀Ë*§2¤Ô™üuC{2 -ÓæÉ -›¬s짼h "”IŒ)%F*<zé“'â¡jÿÿÍ”àxÒ‡BvÉ +xÚÍ;Ùrã8’ïõ~[¹£„Â}ìñÐÓëš©Ù™êÙnoìÃôD,-Ñ6£t¸Eª\ž¯ßL$@‘$¹×šˆ
GA +4íÕ4fµP¿dþÅ1µb…dƃ~?¥WlÌ«Ïè•~ÚÅôÊâq½2BïiSß7ß^§Y”âQ³(&«º{^o¾PgûTÏš_8—‘«`4r•ŠÌ{¨+„òÌkõÊ!”Ìã>/F¡â)8A6zD£j>/i3©€qÁVÒ6P\ÁÂÞ¯‹5(‹çH + j‹H +¢L»¨ÚǤ¾0|°v,¢Q²?$ÉÖHË@Ò +Ññi©#³ßž6ˆ¿Z’``ã.uìDqòg°·{¬:j¡?“ûRcièyn‹¿›=¦iÕìË´äÉÔ]KgrOJjIoÕê…ÝãÎÆÐŽ¿Í5Øydôo +Rˆ'ÍU¶rÂ(eÁø›p9ÊôÏF¡Û&uL›²ºIìO»ˆq¶1ÀäOAwä¶ëä¶c÷²™ëUKýÉ¡!R‚)°à#iªWóduùÀm¨²%P'DhÇœ—’ œÄy=Èü‹£$!~îtnÍ+h}:!„#t0)zwëÕtU?T]óyÓò‰’Skh´YuõCLOÀ +çÄÉI渗oçãq:YàdL¯FU“§EA^?—öœ¡û<]Ÿ~Ãã\€œæ,íU 0 Ô½Ø^{ˆgöª@[íËKgì›6*I-äap‰q\YœAžbV , ¹»g}‚©@Hp¤3'‰™¯Òr4¿@N"CœA–r +³r·òI¦Ñ†g>¬¹Rý/ØSÌÆ"ÊÅöÜC<³geaÏΆñžO2Ï |c¢&N?+lT”“'åF;Á¸äör[ï!žÙºot‰~Íqcš,¶ÛSzË-Z{A*Ö©¾¥Öj² DS»4¥v‹•=ÊÔyyŠ9°h™C5ƒ{»WÞCœA–˜KÈyÚ«5Ì ºŒ•Üþ¸ò32ÍÎ0emط̨ìJë1Íé2‚åœ.6”* +œi¥ÑÕ÷&’:5w q|£°5ºJqEØšsöKZÍìåÚ +ae9•Bº˜À°wt1!þ`w1_c˜±X“½‚•:é!u3?£<Np}88W ãYÀlë›Õn†8‚,¨]eÁ +ügIÚ5H=™Õ›“$ð'èÀeÝE²à R¥ Ü¢nÕTàÁGŸŠo}ž_R¬‰ML4Ç’ŠFCƒ‘êè×˺-/Vf .å +D"è¾lQPœ2&bàGŠƒ‚E“·@ÄédÁꡤàýá~Ú Õ)-H•è³©ê8¯A\)‰+ñÒ&¥Ã_r +˜ œúîv¹ï¤šæ!åžjú¼]‚§2ÃÛ›vt;oKÆÎõãîJh¼à +w ¹f‰! +X1z}¦;g¯®d)±›JÚý&¬Ý¢ìt5ÎÆk'¹Ðb}Ò¯DkoÛmbFA÷#cã.R[ÏU[Ó³îkš/Ñ“¡ÎŠ_ëMšÝï"±eZ{|Ý’jÉà¼B¾NøÏÓÛY³lÛhztØÕy#Ir_•,Ûs•¦åÂï=y„³šºÓ9õõbèjëÍ×x*8\¥Ìf^}\†èÀ?9U,†soÿ‘·ä N` +;§¢N¡¡ÂŠ¸óú^£t¥§Ÿw±+=CˆÇ¯ôŒð#ã5D6 +t…U.†_ñ‚±ÖVt„àj] +‰¹gÚ¨lo(kth…gÚÊliÒYìûˆ‚ApzÚRŒï4E£ÑM¼¿íEü€iª@žOEÛàIÑ¢Ðm¶õ‘ëâJ©ƒZË8lgƇŒå}µhTꀗ3åªõ!–ðÔiÑ̲@¥ðöó ¤ù}ºr”<âÔèNÉ êqPYÌóþ&¿(O8½>Å[Þ4 +z_°<^„V—£ÎT‚˜P{ÐQ:÷ôžBò#ºLtèùî™P¥³¯ñsÔƒoFyè?amÕךºbhûºíµâŪãšo S.uOo÷%öÙO»á7Ž»½O»ÿo¿ê“Sàoxf"jˆ¡E~~ði¸À̽Æoq|éûqÞý›¿Vß}˯S~p9aÏà{¬DZ#¬xi”|K/À<+ÛÏ þ¿x¯õendstream endobj 1554 0 obj << /Type /Page @@ -6293,129 +6287,131 @@ endobj 1556 0 obj << /D [1554 0 R /XYZ 56.6929 794.5015 null] >> endobj -370 0 obj << -/D [1554 0 R /XYZ 56.6929 165.9801 null] ->> endobj -1552 0 obj << -/D [1554 0 R /XYZ 56.6929 136.242 null] ->> endobj -374 0 obj << -/D [1554 0 R /XYZ 56.6929 136.242 null] ->> endobj -1557 0 obj << -/D [1554 0 R /XYZ 56.6929 106.2766 null] ->> endobj 1553 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R >> +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F11 1451 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1560 0 obj << -/Length 3065 +1559 0 obj << +/Length 3057 /Filter /FlateDecode >> stream -xÚ¥ZÝsÛ6÷_¡>En,˜ø ^ŸR×iÝi“\âÎ=4”–`‹cŠTHÊŽ§wÿûíb’’(¹£ -éLxoŸNgIaåS¾ ú©Èæŧ2[Ù-â¾o±¨mÓ|Zeí|ù©È›–èÿ£âcs´Îùk1ÔaÆ5K%êª@iÎS§Zž3q:ãýÎ~Œ"Qæm^•dî¬\På—&»³^¬ˆ&3‘0såä½ÝN¹™‚~0NË©S’ª¨©£ŠiFLD_×ù*«ó≚›Æ.¨ÖVT.lkëU^Z?x>ïÄÏ«²u²ª‚·UM•Ymü|¬ï¨Ö¶Îp…
øœÔéôz +õpÎÒ8n-%aÒ¢©¨¶9åS¯¢˜æ%•íÒŽØÜð¬\ÈÉÃõÛr¦Ý7£’,Jcí9ÑêûÒxÊb¸çiªºu{¿/L*&¤ š6kíÊ–-7Æõ’Ò¶ :µ—9íG«6mÞnÚ°x¿Êl{w…ß]´ÝŒÃ ä‘2Á†¼[39Ð<ó.ucƒk=Q¥º¥²]úžÛª(ªÇ¼¼ûסSž(ÎtªÓãamÈå%8io¥ªFd¡¾#®w'…UÁ ¥ÏÚqíO»µ9<‚ºJ¶§
¶¹zçm³eèØêèê݃ò«ûCŽû¨™„`FjñŒ™\G̸ž7Ó±YfÚvÜLÃiwÍ´&#aÐúÒÛ)÷\¿Ÿ¿ JYµîÀ5U$™ÑÉ3å눩×ó¦:6ëÀT»ÓŽ›j8mFKwwŒ3ÙwgÞµ¼G-(Ö[ßožúC8z ö(ÅC칧€¹«G -1ÌÈÝ°sÈâ±åñØ·øë°Å;®g-~tÖÞâ{ÓŽZ|kÚ.|ѽ=ŒlÁo÷Žu¸¡ÚGÊyÌÛå±½BÁ¶«8Üóblob&¸0zo’˜bøñ½pÙ›ÀõüÞ›u°7»ÓŽïÍpZJ7ðâ¯ì…-çEÕ„1!²ÜÔ@º÷Àúi”$x‚ùÂe³Jé¯>¨¸«O -Ðã.#E€è÷j…ÍpùQÃ~™Ù*óˆLâ•[ßSƺ߿zQ
϶L<Zƒ.òEÙÃ/)â †Ú´à=pcádhG)«Òiù-„Ž¢šgŲjZ?P ?¹LyÏPÚ¶Á‘;8…
¹;Wh¢A³Ÿ«ž Í
h.¬G…²…©½ ¿¬:3cåÆ÷ÝV› SÞ´cPoa›y¯{Ü»‡IðX¹JwvX'Èm¼v‚[Å ºW£/.â’—“)ìî¦ñÄU¶°;|!– tå
Õš§²Íæm>§1Íù¾jeÓyÑ`pF¬«¼)¡Æ$Ë]fÚäå|Ô4oê¼õàôvÐOy§ÖÞ©¸]u¸ý!+òEF RmÁvôùjÓRƒ¶üŽücGDFºux¾õX¹“€¢ÃYFhî`®áÓ7àÄ`Ç&=[X·µ˜\xô€§á™¸@í¢A<"/¼slºPÑ.)-ÙÜù…iQÍ7¸WεGýè?K‹æ5d(îrXÛC : -"è1þ(¹q$1o*?¾Íî¹. Púù˱`’IÓêä€ÅP ->}‹±;¼æÚm¾²øB Äô‡êÑ>t®+eJgIŠh HCÃhŸ7yUPÖ2kCÍ“(4b
-Š"?GÊMVg0Û_lnJØuªfcÞålæÏß - –^P‘p»#r•!ø°/ü€‚ŒðÚÕ…Ÿ¢Uº¤QïçKý³î(ÚxK žÀöÀBËxÃx€ !é¸+s¼ç!™ -¬_²Õº°n–Ô§X;‘LjÉRÓaXΓçB}ƒY™š~E•qùÍX|ë$Œ¤Ï\tc©ÕƒZN‰ -覷=èv/P>ÂQl'æ^r) \œùòåË3ŠKU=ú”¸´Eq¾¶u÷”ú„ËÍïe‚€=éýƒqï!C§Pü°Sœ;bH›4†.¦•¤ÿ(|í:‚bƒŽkw_á(B™QAû‚µÎŸ\oà.©¼ ÁÒ¡ÈÁÁÝ9½2ú¹ÿˆ¥L +xÚ¥Z_sÛ6÷§pŸ*_-„ À—¹‡4uZwÒ$—8sM'¥%Øâ˜"’²ã¹»ï~»ØHJ”ÜöF‹]ìb±ø-(yÀOž¦‘T¦O“L‹(Ñéb}œÞBß'’yæŽi>äúþêäÙ+•œf"‹Ãøôêf +AšÊӫ寳—?½xwuñþlFÁ,gó(fß_¾ù(=^¾}óêòÇï_œ%zvuùö
‘ß_¼ºxñæ异h/Y¯.__PëâõÅ/o®>œývõóÉÅ•7fh°Zòåä×ß‚Ó%ØýóI T–F§ð™eáéúDGJDZ)G)O>œüÓôÚ¡SŒT*¢4L&<ÊS)EEáÈ…Q&b*ëB´ZžÍe³ËecÚ–lü%ï+j¾.Ú®E[Ä~M‚Óy‹ I¢¼°U—¥QúȨœ”~^£¾Ï%¨:›Ç0þôØïþlJ³6³=G
Þʹ7$ÿú”„çÄ „ ÆoVÖ|G˜<0Íñ<xº¬ó'Ð>>QPl>çν–ñYiªÛnÅ,ÿ!3‘©0›qg‰Ÿ‹¥ã'Ûåç*_›ñ߇ì&úý¤äÄšÎýt"â(KKòÒþ`>AX]QW!yµ¤ÆÇ6¿5,6<¼èig2Q´%j¶æhƒfi£
šá,'&¢ošb7EùH¯ÛÖ,©ÕÕô\šÎ4ë¢2<x±ðâuÕYYuI„›º¡Æ=ˆ¬·¬¯5ͽáŽzcš-l!:T’Í®V°¸JÁx}“¥e[Sk{&g<ÅpVTôìVfÂçi +{?†Mnå¡ý¦šƒk÷ݨ•²(aNôú¾4™‰(Ñ’yÚºéìÚïSZ„*uÂÚ.ïl<“½ÚK“æ8g=¬ +Z)‰^m»¢ÛvÎx¶2¯nÈ«K›²t:Þ]@‹œCêÚ¸Ðz¤F}CÏnÅ=7uYÖEuû÷Cy8Š"FizüàrÙ´)õÀK4S5…óýÈdW)Xƒtr\«çÚW;Z@[ÇcµÎ7—ïØ7#GG”i.ßÝköXãØïc·Ý'ݤbÑü”›\GÜ丞vÓ17íªvÓPí®›6ä$LZ_{?Ìõû³o©QÕÝðG]é1ÕñS®pq•ãzÚUÇ´\µ«vÚUCµ9™nÏë²Î9´8¢–”ë
ç÷ëÇ~N¤È=ZK—{î(aîÎ#ƒ–ªÝ´sÈãÜ%uð„LJ\‡=ôøQ½Ç÷ÔNz|¤Ö§/:·‡™ÍÅíÞ¶^÷X¬Ï”;+óPt«ck†Z¤‰ŽÜÙ±(§Ö’„]ôG×&
„Vú©µpYÇõôÚÓ:X›]µÓk3TË»¡2p/ÿÌZ˜jQÖã2Ëu“¡s¼ŸqŒ H‚ت»èV¥ø䃆=ùTÓ¸Íi@äå…VNÒäK8ûèÅ|]”ù:g@¦ðÄmî¨SÝïß|‹I
·¶Š¬A…¢êÑ—RÎ&ha|¶$íœÃø°2K©êÊiaGY/òrU·Ô!+W™ì*ÓµøBd¦ð…·t@& Ìì—ºgBo˜s¶ã(÷ì@5b[°iÝŒk·nN…iÆ6JYšvÑ›öîAÜU¶á·Žð‚úu'dÅ\DÇ,-rÒb—•ã,î¶eâ:_š>—IœˆºŠ–Z-–a‹®XÐ_³Ø¾zm€ÓÑ`pN¬ë¢€¡Á"Ø +é¬-ª…™ZíÖ,¶MÑ14‡y[à§9¦Žéj×µßçe±Ì Bêhǯ·½ÐŠßRxìˆÈé‘FÜCh=Ôv# h·“˜[›ÊÙˆaðc J'Ãد,–Œp3<‘(žm.h]@%ÇÆÖ'ŠnEEÉö–
ÆÒ²^lqldO…Ñ¿V½›’àq[€i÷ŽhÑvŽæ +ë4Ü…EÐS0Ç¢^ox#.‰b]2ÄŸêR +Á€ádÇ‘Ä¢y|—ß¹)!K²þj²ÀÚÐLë¯P +ÊZåk1‰#¶pŸ ( +s¤\»aMjíòâ붂E§f>•O¬Ïxû
0˜›˜Îw +l˜MôÆ'AŠ¿ÇqÙ„{ûÁZaß P"ÌGÊ–©Di82:—T¡Ëµ>¤[n¤,ÍÆTË–èŽýaeìL-±sòÙ‡@*Z¢\k?’h[ ÑçHrÙ +ŽÛªÀS +‰¿Ò +„€Ø*YjøÓÐÓq½xùz¬Ê• ¹Øjp '!Ø“ +°³cŠ$ØÎçîƒišd;qî®+rw«Q÷åiû½àŒ+h=óàâCxÇ
þª`P‰8KBÿùÙ}|~Y¯û’hø'ƒcß›ù[¦v
“ñ
•/-‰£K%WÒ +ÂÛmãn}ãÔ†H‰— *–³«³Ûa”4ÒΞ8·M65-m¾Á%sßPÛŸÓ÷Þne¯( ›îõ Û^7Àó¶bg˜Xðt(¤€ðòœŸß}wNy©n&¯W¦,ŸmLãoQÑœ_T$ð¯1_Kÿ÷?pŸ1(ÀÒpús‚‚ž†Yâ&…Ö软ˆþ¯:ûSÿ+/yÑendstream endobj -1559 0 obj << +1558 0 obj << /Type /Page -/Contents 1560 0 R -/Resources 1558 0 R +/Contents 1559 0 R +/Resources 1557 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1530 0 R >> endobj +1560 0 obj << +/D [1558 0 R /XYZ 85.0394 794.5015 null] +>> endobj +370 0 obj << +/D [1558 0 R /XYZ 85.0394 769.5949 null] +>> endobj +1552 0 obj << +/D [1558 0 R /XYZ 85.0394 752.0459 null] +>> endobj +374 0 obj << +/D [1558 0 R /XYZ 85.0394 752.0459 null] +>> endobj 1561 0 obj << -/D [1559 0 R /XYZ 85.0394 794.5015 null] +/D [1558 0 R /XYZ 85.0394 723.5337 null] >> endobj 378 0 obj << -/D [1559 0 R /XYZ 85.0394 730.0812 null] +/D [1558 0 R /XYZ 85.0394 642.6584 null] >> endobj 1562 0 obj << -/D [1559 0 R /XYZ 85.0394 700.9798 null] +/D [1558 0 R /XYZ 85.0394 613.9312 null] >> endobj 382 0 obj << -/D [1559 0 R /XYZ 85.0394 216.5924 null] +/D [1558 0 R /XYZ 85.0394 133.1977 null] >> endobj 1563 0 obj << -/D [1559 0 R /XYZ 85.0394 187.7778 null] +/D [1558 0 R /XYZ 85.0394 104.7573 null] >> endobj -386 0 obj << -/D [1559 0 R /XYZ 85.0394 127.6814 null] ->> endobj -1564 0 obj << -/D [1559 0 R /XYZ 85.0394 101.3894 null] ->> endobj -1558 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R /F14 964 0 R /F39 1161 0 R >> +1557 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R /F14 964 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1567 0 obj << -/Length 2310 +1566 0 obj << +/Length 1991 /Filter /FlateDecode >> stream -xÚ½koã6ò{~…~8{3|èÙ~Êf“\ŠÛ´—õâîÐ8EæÆBeɵäMÓ_3R¢låÑf{ñ1ç=c1áð'&aÄ¢T¦“8
XÈE8É×G|r{—GÂÂÌÐ܇z»8:¹Pñ$ei$£ÉⓇ+a<IÄd±üq1Éf€OϾ¿¾¸ºüxs:‹ƒéâêûëÙ\†|zqõs]Þœ¾z3›‹$Ó³¿Ÿþ°8¿¡Èâx{uýŽVRú<‚ôæüâüæüúì|öó⻣óE÷ÿ½‚+|ȯG?þÌ'KxöwGœ©4 '÷0áL¤©œ¬‚P±0PÊ”GŽþÙ!ôvÍÑQþ ΤŠä1ÆÀ0e‘’Ê0ð«Ù<â|ºX
Ü7£±Gy½^몵»ºê7k;þx}õo5+]–
2 (ÁÒ0”þµYµ¤ÁFoK„;¹>ÉpJ)&D'mò– BgÞéŸ8—UÑx3ÊÅ ÃÁÇ&»ÓŸâ“K|gô¤†³‹f³ÑÙÖ¡|¸_éíL$SM+í*kit¿*ZÝl²\? p´Ñ§W±¼®þ»Ý6ë_€+¥fËb–*™±ó¦}(á*¥¤Fƒ35mÚlÛÒÆ}Ñ®h±]YØö¾¦•|•m³¼ÕÛ†6NÞÐúO<äM™5«c˜‡„ÖA¦"˜¦Ç›Z1àš‰C‚ÚV˜Lßê<Û5z¨$V §x<Í£qoÜ”ºÕ¥Ý\ê²XÇ—4µTðÏ7îL÷D$CÂãgbڡϳŠ·²ØÚº»”´'uåîÎ賩·$+³ûÉí(xYTV+j«x~Aa¬°×»²-6¥…ÃÍžäã¡äå@òR |QU·´sk! -LHE(ãÍã{¦˜…“«µš¼«á‰ï•ïÜClùÖœdC¶ïŽùøÿÌD -̽·%1SA$ýfŒ)‹Eœ¸n–ímœ5. -—ú\n³õ:Û>ZÅÖ:Áö$™í:À(¥Ïaó!R¸Ø š -Œ[†,Šñ6ËËãgÛ¸¸¤þ¥q¤QjÜ%ć*[›šV®~ ¥l¹$4tµùÊÈ·K°Yìv¥)Hrk‘å9AǦÑØRñVŽéh×4Û•ÞvSsè€ãsqÏŽ×ñ%Š(î z9Jwâ‘AQ”<#2òqh›†M5µ«Ÿ‘[^Z›hºVnÇaZXAŽ ËfØù»Õw-ËoúLþ°û-RŽÅ‡Ë£¶Õ2!*”ÕŽ€vmQíÃL1}\‚w^Çî¿P‚ DC!¢§%˜@ôLÛä -ós.ÔÓ‹c–Šš¿è‡g¹Õlt^ wÃ"nË ¯Àݬ»ü“÷Áê·D¶î„o¶
‡’7ï²×î²›õhøß¿{éÏ®éBÔâÃÕåã²òøð:Æ`[‰â È*bI”¨±ßßøäYÕé¯}}öÄ Dú…˜gñq‚¨!.dU JN÷³ …òHÿ’ Q>endstream +xÚÅXmsã¶þ®_Á™ûPébÁ +Dűô›Ñb+ž¶]±íhà±ìVÔÙo÷ØPÏrUl‹eg¶-
œ¾¦þ_¸æmU´«hk‚ƒ>A\Ö¨Èfˆe¼>¥‹ +æR¦L¨N#2gYFÕªdl*ƒ
ZÎGt90˜fí¤ Íb+8~Ã4ká|†¤&/+BªÞyØæ@Žñ|èU{#›ÕS;ßwS2x¹,*L‡‰M2˜ãvÁ¦EèôIi›±Ï-âžšÅÒÆxÓ¶ÔR¶Pð¾Œö; EiúVÅ'ÇÛÔŽ¨š‡aÎv¡a3äH´äË¢M±\
½>»úlBI+L6vK4†hik&KÁ]²D<J–_“„ŽÏþ“Ô2Òb‹ŸÝ«Îˆ)¼ØƒÓZm÷O¨e>™Ú/ªÙ=¬ÜÜnÃm”¼/üBRÛlͧ²ÙµÏ£uä†!—æú=žÃ¨Ã@ñ;CsQS:¯jvŽƒªÏG³béßÅmïa¸Žl6œ ˜J §qwj}®Lp‘!\y½[ßa³’ˇڪ?ž†NI2æ,‡îƒCQsà³Ænm܇#CøùpaQ´ûgP¼¸³'Ùç¿÷ûWÿ·õ?öúW/pú±ë¶Ì8KE"¾ê¾-$ËsÆïÛ°ÐL²4çê8Íã€åH?cjx×9ì°Ôép-—ýA\ ‘,†ÕG2IY,$Uú¿1¡p`„9:·¡ 8ÛÈéý¿1½îi9½:´Há)x™”póKsk«è7°B.”Š-SH[í«ØŽÓëu½m@Ç(PÓÏCd«ftž1àùJ0¡å¨¿Ï„‚݇”£øP0‘¶ÅEÑ-„ˆÖ¬ËeSá5›˜þñÝŸ(
¨”Û„3ƒ¨£¤Cs7ïP@MxáäùêhyvXëìhKߧ™´kqàGÔì*,ãZÙD€—³‚šÿš í +2´èî‰]xBH&Žáì²¾‡«/vž.ˆÀ`oFÐáÄ7]«¶»AÑE³3óÑR?E*É™Ìò, +ýôe®A¦ó|x·zY`îG“–©¹„b±JdøÊ%tîÌsÿLè^7ÎÇž.Kú¹Úëu±=R]3–¤yì£OB˜¹w rú<~HbìlËÖÖM`±…¾v›|=MÜ‹ endobj -1566 0 obj << +1565 0 obj << /Type /Page -/Contents 1567 0 R -/Resources 1565 0 R +/Contents 1566 0 R +/Resources 1564 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1573 0 R >> endobj +1567 0 obj << +/D [1565 0 R /XYZ 56.6929 794.5015 null] +>> endobj +386 0 obj << +/D [1565 0 R /XYZ 56.6929 769.5949 null] +>> endobj 1568 0 obj << -/D [1566 0 R /XYZ 56.6929 794.5015 null] +/D [1565 0 R /XYZ 56.6929 749.9737 null] >> endobj 390 0 obj << -/D [1566 0 R /XYZ 56.6929 730.9277 null] +/D [1565 0 R /XYZ 56.6929 670.1208 null] >> endobj 1569 0 obj << -/D [1566 0 R /XYZ 56.6929 704.9004 null] +/D [1565 0 R /XYZ 56.6929 644.0935 null] >> endobj 394 0 obj << -/D [1566 0 R /XYZ 56.6929 236.9993 null] +/D [1565 0 R /XYZ 56.6929 176.1924 null] >> endobj 1570 0 obj << -/D [1566 0 R /XYZ 56.6929 205.1553 null] +/D [1565 0 R /XYZ 56.6929 144.3484 null] >> endobj 1571 0 obj << -/D [1566 0 R /XYZ 56.6929 146.386 null] +/D [1565 0 R /XYZ 56.6929 85.5791 null] >> endobj 1572 0 obj << -/D [1566 0 R /XYZ 56.6929 134.4308 null] +/D [1565 0 R /XYZ 56.6929 73.6239 null] >> endobj -1565 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R /F62 1361 0 R >> +1564 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R /F62 1361 0 R >> /XObject << /Im3 1515 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1576 0 obj << -/Length 2383 +/Length 2519 /Filter /FlateDecode >> stream -xÚÍZ_sÛ6÷§ÐÛÉ7 }r'çNâö÷)Ídh‰–x¡HŸHÅõÝõ»ß.¤(‡’ìF7“ñ°Xì.vYŒ8ü‰‘3Œ+¯GÖkf¸0£éò„æ0öúDÄ9“vÒ¤?ëÇë“¿½Rvä™Od2º¾íñrŒ;'F׳÷ã?ûåúüêt"
'ìtb>þñâò%Q<}^ü|ùêâõ¯Wg§V¯/~¾$òÕù«ó«óËç§áŒ€õ2rرàÕÅ›sj½¾:{ûöìêôÃõO'ç×ÝYúç\áAþuòþÍàØ?p¦¼3£{èp&¼—£å‰6ŠTK)NÞü£cØ
K‡ô§¥bRz5šÎ´»w¥8ì›°Ò£œÛ›N„0L…&ÑšqÏ7&‘¢g!³Ò›‘5ž%Jª`“¢šÏórŽºù²?Ÿ;&´Å}pb}—Móß8—Y
ZUv|¿Hj5‹n\g«ÏÙŠˆÀ¸þššÓrÖ.QáÆÙÖº0—,³S1®ëtN›¸qçƒx œ•yc$ ”•
{lSÃ-s–‹Q__§_å%3"±£I;á˜&“0ÓqyÈdÊ@Cx2Ùý -ÔsÐ`ÓªDsÍפÂvEŸ¿GH”é2›
ðUš%VÅIMu:Q‰§E-Ö6‘TÇ/Ñ‹|¾h&÷~h -RÁI2K³I°íÄi¦B\!SÀXV%Ýà߸áòKÃœ–>Šô2x -F'ÏVMšÇÐ÷¥‰P»‰°‰)}î(ÇN:;í&ó}ÚïëëTõÿ½4*aÚëCÊ7pq¤Tð=ˆOù´žLiYfÅ“â„™6kÄLÀËåºÌ§ÑÔ²=L‹øg
5Òé4«Ã ÅÁÜ¥ãRªÉwÒÍÛ?ݹöXu£®oùJI¨#”;”É &’FY!'Ì&Ÿ²‡ç¥3¼Ý8¬§þËËwïÎ_PîQhOÔoùšpÎ@]s‹H˜°\ElPè~ªF1å£6mO{Ví¯Rn2êÊîjïh„fp@€MF -LçG«
%´œ.Ú¼³„ÀÙd%²=†ìiè¾Æ9DÞ‡²¤ñ”m>çÙý³¯DÌa—ãÝŠëKt¬Ðþc*Î&Ì -w¨ª26áÚm -¿oÊ2(3Ûʱì /eºúv7Ȇl기-Zë@mwZ4V´étÝ¢aGt6„ëX'YÙnÑ¥%ƒŠ\Z&§BŸ¾ , -αú.ˆß»V øæµJ—Ë4ÂNÝ?/GLÁ¼¤àÀ !ND!ÔûO´mÔÛ·³ÚõÇeÚLCùJøG“©„ÿ㇡ƒ<'‰(
$è%ݼ|‚©4Ưø`4`±G'ÝíJµ®„»P~¢ücÓãëÔ²uÏסVÆOý°¼©Š|J=Ò*¶BÖÃieü‚* g†õÉ8è”ÆP±ªdîÆq«9•ÐÊÛƆ÷-•|Ë-AîV9xÁu r&K)ͤ“nÛ¬ÕmTë–LÁµI&Ã)ñB >>‹7¼Ùn*N"¼‰!¾Ýœ½xSwï.!}C]«¤
_V”õ„'E¥’ ¤l ƒQCaþɤ¤.×uäq)mÌžù>oCxÜ:(µ»@¿ÃpZÝÆ€›Ë]zÏÄò¸ñ´•ž$HPñ3¢@Áu¯ ?àˆ—U¼?œÅõ=#ÑÛiímä¥ÍEÝÓ*vŠ¢ºÏfƒú¾^ÄI·Î"Ô]4Ò -ÿ¡ 6k„ÌjE¥Õ_ã1í
è§Õq—»jÕt¼7[غã˶§˜ÉùP JE.z—Œëñ„¸{P¢öe°t^¼_GŒ±þ²¡ÿ+’]ÓSÙc_ᣃØë©ÿs²ù‡ÐrnÇÛJçœQ(<“V_\eðHã¤ý|[moendstream +xÚÍZMsã6½ûWè¶rU„Å7ääx<³NÍ8³¶sJR)Z¢-n(Ò+Rãu¶ö¿o7¤(›’ìX©šòA`h‚¯î×
‹‡?1r†qåõ(ñš.Ìhº8â£;èûp$â˜I;hÒõýõÑßß«dä™·ÒŽ®o{ºãΉÑõìçñé?N>_Ÿ]O¤ácËŽ'Æòñ÷çïHâéçôÇ‹÷ç~º<9NôøúüÇ_ž½?»<»8=;žgÌ—QÖ ïÏ?žQëÃåɧO'—Ç¿^ÿptvÝ}Kÿ{Wø!ÿ>úùW>šÁgÿpÄ™òÎŒà3á½-Ž´QÌh¥ZIqtuôÏNa¯7LÂOKŤôj4Qš9:^ðZå%óÂÈá×òÑ”zÁõv]4ƒ®Ø¤ê‰ª‰†)£Ð¾Ê°D +ßÙWŠž}…ÐëÍ(1‚I¶G§ÓA†±²?–;&t‚ïÀA³ìÎe™ÕÇeý8…Ÿ„Ët‘ÍHrþ™Dél¶<nœÕqè"m¦ó¼¼£î"¯›o éýø¶ZFeÓ)†þiU6a~…0 Á¼ÃZË펪™gKj®ê¬fO·‰á s £>"oCíi„MÚ‰W¨l¿a»áॉµnŸádBŒ€UUÔ/±Þ´H£Y´>Î$˜§e™±»©è÷&ë0ŽÀß<Æó,¾wc¡ž3m•‰ï]–³éÀê$Ü}4hÕäEÞ<!Æ;ìØèm ?µ£<¨a„Âî³#NðŽ6u^N‹Õ,ÛoÆ80Ú(¥<—E¶¸ÞŠ\{B蹬K˜çBíŽ+¦µ +püž=îǬ¾Ï¦9b`ƒÀƒ³ +ml‚±KÆ1¤ï¾“nÜ&ùé¾k‡Y{x}͇Jk¦Upv™U;ÀÁ8b!ËD…ÙR‡×´(/Ý8̧çwWWg§ÔF…;í-õ+ÎÜŒäÌH·/ºeOxÙA ¬û¥ˆbÐG4“z‰è‘4”+@Ê âzßPkuO=4‚l2’´é/ߟRÃp!âøhµá"ÔtÞFž¸Î&+A´#ï#ô5
@Ý$jo¼’ Ë)Þ|ɳ‡W‰;Â\/w}ú+:lÑç Å;í-³ÂíK«çLò>åü“ÀáÜí õWs(ÐÖµñ?Wõ~[\xÁtb!(É|Èf‘þY±^qËœô°jm=€Ù/ÆÉg·j¤±Î¹úë-eMØñI—ùm-b¨„AžÙ¦~Èfu)Ó%¸Ûi6¸Ë@Æy‰Ö¶~ç±åcEÛšNW-w´ægCÌŽu+ë<Û-niɬ‡}¢òR|7^Ú€[œópYô]µŠ·5Ët±H#ñÔýïŋͼº»m˜XÒ4ABOÿ
Ž¶õz›îv6ƒL»þ-\$üÀÃ?L9üÿ¾ú0Xƒ†cc<Ç’{>è¼|Mƒ»»‡Ÿ°b4`±'_º}+ ×n¥-w/ +GuEp4Ò€ª›U^4“¼üöi€B³$I€IL we{ýÀ¢Â$ym8šÕ»º= ûŠ5Ä”6;a”IT¤„‹fèÄ+¦„i£Ð'ÜÁÑŠx`æU=X!qLkðÿýż•C(fñÆü¯ÀLxÌ9÷ ª`Ÿ[Šeå0íÚYY½±õR…×Sµ¯D‘òÉ>Ä&¿1ŒÕ4-ðã_[¢âmK"Ç矿hQ +EÄEȵÙÕ‡¯ª@C`)©iج"aY5Ô¸'–ðvK>‹3Rúy
tÆy³^³ÈËlûŽ’:*
Qþ?$)²”Ü5óšžÃF9Z€šqÏCkcÏÆ%Æç%õÕ«@}$Ӵξ¬ç%äAà{M=éÆnò¯.qXôÝ]wnÚµC3®}“¬eá¾dÿ +ˆèÚïC”Wbf*ê¯u‹CÑø³mIÑŽC»>
o;`ë3ûš÷ðœB@Ì4Xõ‡øîw§¸K +sé™s‰ú¯5>Ú[êxéÿÈÿ`TÎÉጺ˼!{]tl´zfEå˜qr=¬·øÿ>6rÿendstream endobj 1575 0 obj << /Type /Page @@ -6428,61 +6424,50 @@ endobj /D [1575 0 R /XYZ 85.0394 794.5015 null] >> endobj 398 0 obj << -/D [1575 0 R /XYZ 85.0394 513.3136 null] +/D [1575 0 R /XYZ 85.0394 433.214 null] >> endobj 1578 0 obj << -/D [1575 0 R /XYZ 85.0394 488.974 null] +/D [1575 0 R /XYZ 85.0394 408.8744 null] >> endobj 402 0 obj << -/D [1575 0 R /XYZ 85.0394 420.2055 null] +/D [1575 0 R /XYZ 85.0394 340.1059 null] >> endobj 1579 0 obj << -/D [1575 0 R /XYZ 85.0394 390.0916 null] +/D [1575 0 R /XYZ 85.0394 309.992 null] >> endobj 1580 0 obj << -/D [1575 0 R /XYZ 85.0394 312.7536 null] +/D [1575 0 R /XYZ 85.0394 232.654 null] >> endobj 1581 0 obj << -/D [1575 0 R /XYZ 85.0394 300.7984 null] ->> endobj -406 0 obj << -/D [1575 0 R /XYZ 85.0394 159.3 null] ->> endobj -1582 0 obj << -/D [1575 0 R /XYZ 85.0394 131.3824 null] +/D [1575 0 R /XYZ 85.0394 220.6988 null] >> endobj 1574 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1585 0 obj << -/Length 4330 +1584 0 obj << +/Length 4374 /Filter /FlateDecode >> stream -xÚ[_sÛ¸÷§Ð[åŽÅÃ_‚HžÒ\rõM›»&¾™vîn:´D[œH¤+Rçs;ýîÝÅ )A–;ÉøA$ -lþö‡ï¯¿ûéã›K£æ7×?|¸\Íæï¯ÿòŽž¾ûøæ¯}óñrÁÍçoÿüæÇ›w©+÷4þtýá[j±ôs‚èÇwïß}|÷áí»Ë_o¾¿xw×2^/gò¯‹Ÿe³,ûû–I[èÙ#¼°Œ[+fÛ¥e¦•”¡esñéâo‘à¨×}š”g™¹HPñ‘ -Ó‰4-sû“Á13Ó½lAÏJ/ÃÜÌÛ;ü-ÜG®¡)·5uÕî7P,8ŠÎ$P~ï›LŠŸ
«Ãn/ -ꢥá.-Lv¼’.0Ž„wÍj™Ø!3.ãvíûzS÷OD%BŒ7~Âe»Ý‚–x® ßÉE -›IÅ´5jñÞïêê·ŠZš¶Y|ûáÓ¸»Ûoz¯§w$ˆWJÿ ‰žÆbÄéA)¹Í”…5à´oš„(¸Î -àØ/²nª>! b.ÆŠwDD}×b^wÔXÒëÍÛé½k—Ÿ«žžÑ&TMÝÜÓ˜Ò7“f@C÷P-k<ƒ°‰c¤r0†:°üph«¥²c…œÕÈ -åÖZÀ -‹"m«‘âbLÒâ©^iØekø03røÐîRB<c6h—;$/o.OŠ@ipSÆ_O‘â(m2žçf*‚rµÚ§ð -.åüq]/×tzôk¦Š©YY–(«¢pM iþýúÇßµ´»Ø’Ó“cÀ¦LŒúÄi -&Ó`ÙG£~aš•p€wu÷ž9IØ{}Ý@σ·lΣø;ú%õ†Qa¯Šùc½Y-ÉŠ¯ü~{õšA€Ó×LæS3 -v¨©–è`œ§ÓHÊ9&E¾ZÊå²zèÉßiwÈ°·lž|Ãý:¶ð<á:GL::K*P^ -epc .ѯs±“YGþóêpŒÕr:q#"OÎr'tå-½ý"„JÈVÆr°‹ç¬¨Î€õ|bE‘¢£
i=k·ÕÀÑ ©„zÂ+?lžYSiàP&ùr(.Æ$ÈÂ3‡ÅÇaÏ` Þ…ÛáÔhÎÀ`ÎoyC*²Å·ˆ£±í½®»nïû$îL<"bºŽ&aŒð«£tÉçþ[Ÿ/£¹}¬{"°P`ïòx¦Êͦ}LÙ
‹»Ž†É` TØaZ'm§ÉU8ìî"ôÒÓ@âÄh¼;M¡%…2Zx[
Sx
Þð!Þ‚L$Ô=yyx½-½Ö -³H=8*l;š;oê&*œ -¡ûW“A¤xFRÎñC¤†a™. - œEaÀLf -¥ b¾b/ƺsÈãøåsû_‹2U™ÆÄ4SÏX³<Q<Hl6ì Ö¶_¢8ù¯¾‰íc¬ˆ%ìÒ×¾úº7å?,4uÕ¤»²é³ÂR`í”`ñGºüöÂSqåë™k,W¸H F¯j?-hqFÅÉÅ°L(up¤Võ}ÝS‰&†7.,3¾¤YxcÍÌp¨±u¨›ÀË,~y>ŒcúõÞ79î°Éq‡dòÜðd-Åd¹Rç+ ÌvÜ™<¶à®{"¾-?[¸o¯
øZ0ÚSq<´]WߺL—ô`[*Ácƒ»g"}ƒŸ$/ Ý~S ½ Ÿæ$ÍBƒµ§¾4îR*4ì”è=U,¥õ÷Ä ¦sÖ††=ªº9\¦Î€"ˆHD¼ÑöØî>û¥Ë -9ѽ1W·.ýU¥Q^^‡«ltsiçÛ×þzÖ`šX°ÏxÀíQºº¢¶ª;Ïòxš!ºÄ¢W‘ƒpÇ€~1\Má™$¿ »à…Kq˜x•Ò/Lå6I“«“4ý€ûdè»"ÃÞ¿N©+Žåã8èð?aR‹ÌXéÊ™T~oñ?b´ÿ@"›ýªJþCÌw»¤ -kþï%A\uWo*´>¯O¦—u†ÿ•HL²Èüÿ£Õ†xB…8‘i5EAƒLáj”:â<üGÖ1ëÿnI”endstream +xÚ[Ýsã¶÷_¡·ê:C|Àåéz¹Ki/é3ÓN’ÉÐmqN"]‘Šã~üïÝÅ )A–;¾ñƒH +nf‹Èü‰FÔMÕÓÓϹÊ}Ûý¯åjµ£—ÿ ¢Ð0ñ‚eZ +åHüÑw!QXëФ}íg¹ow}¤=¼üâ,¤ÎÏ‹)åfÓ>„U,‡_dªêº_·e¿\ÿº©»Þwü×ÑÉÒÎÏÕc”‚ûÿ¾ý÷ë Zg:7ÅeY6ù,OŽß7õï~Ýe¿öOÕnKOÍ~{Syá¶Mx7ßíÚýý¤y4É*Hœàúp•‹¤i§S5‰H“q£UTpùÿ¦ú9ÏyS÷uÛPKÙ¬èáÇ®¼«ü\ü´æ_¯«ÈÐ0ˆƒí*aðÄ:Ž©I°cp4®˜…¯ªåŒ™yÜíׂ
톆,×eÓTßÝ·ÔzSÑᆱVÔsóH-Ýc3P[¹ÚÖ
lÙ®ìÛ]GýÂt"$MËœÁþdà6õtSZгÒË°ÐóöûÈ54嶢¦®ÚýŠ®5Ù8ʯó}“Iñ³auØíEA]´4|Â¥…ÉŽ7Bä ¹d^»fµLìq»ö}½©ûG"!Æ?Ჟج<WÐïä"¸Í„dfj'Q›ˆ÷~WW¿UÔÒ´Í⛟ÆÝÝ~Ó{=½%Al½RúOHŒð4cð ÿÖ¸Yß4 I0î®0~ι‚Á£a|¬·qCxT7|1óº£Æ’^¯ßþ@ï]»üŒžŸÑ%TMÝÜјÒ7“b@Cw_-k4AØÍ„Éb› +,߆^!m–çFÌç™IŸ|9¬Ð˜tè]DŠ‹1ÉWGj¥`“fÃÌÈ¡1 íbYnƒr9y¾4|k˜8)© +GWÛ{÷[wÝÞ÷0Ü9x„Ã4tLr5 WGé›ûo½ 8_Æró8øöDV!%<G‹¢¢AÂkXܼ`0˜$3EHyû¼:é9u!ƒ©CV¸wщ°`vÅ"N\ÆÛqÈäJP£¸÷DÐ0÷ØÁ=’-èÁ*BÝSŒ‡×›Ò+-'4‹ÔÓY°sa×}åHƒð˜é™|Ä +€d/Öà@q1&™Ð`®!¿ˆÃMWæ963Ìî¤ø‚LŠg˜”9‡øØy¤+µ$ÌLf ´vˆ6ñz]{ _|²˜wõö~ã7ùê‡`•9†iv°xVFÏ…ÞwƒNÔ¥yŠBîסœò˜BßRBóAéÐ7(uQä oXg\¼}Š‹1ÉúæY!-fvŽw•F"BŒ_Eµq¥/žÖ®´a°÷ܲ3†!`÷/&ƒHñŒ„c‡2H†Æ@Á—c2P<ǤÆÚ0ú1“§R¯"BÏ‘slp×´ô¾ +q ‚½–JLk*)5KÉã6ºJfÂwóLV¤K*z\R)|IESIEÏüpõwêXµÛ²n¨u¨¯èi}¥ðõŠzR\p#¨4Œ]œ[‡ï\z„$çó7[€*`5ò°üçb‹)BÒW,åÓÅâ€hp…;ÿUÊE°Œ"l™+d'q¹Éc…è2AG6‰µW÷>¦" CæöÉ0
ÞC3ÆP¥<ðŽ¹IŒÓ Ézþ¡í½t\ÐtRÚú–ûMÙƒSÞv$2ÄûŸöÍ÷Ÿ¨×s„ÙxT¸‰ô?µ› +0·‰/vÀâbL2á€
€zž-{62ÁL
:U +°€VJ\’„‘£â3¼ +:õÆöº÷üɈAýØ»s£‹´Øõú5¥›_54¤wì[–]uIð9Ò,7]KãÖî$ÆÈSàIÙŒÊ<ë†1¯aà"BêcÑLóåí7¦Nr~³÷«¶réªoZ—îôžÊ”Ês,({¦( /ŠPrŒ”¦A¦†Ùg
Ò=1U4d¯ Ü{®]@â¨åÊ·¬ý2\‹/C*+]”v_n2p9Ü#á<K,¡œt¸4q>Q€+7ãk™Ç‡ñ'ÇMR¬HžuøUÕ'=K1.ËbÞDÎ/íøJ¢(T¨oCƒÊÝbŽsL¿à°z4îÁe=:?H’ñ’Nfzò±-tÞìëM~:£Ë:áÀû–¤Ÿ%Eß<(Þ„o:š.ôAbù´”!5Q<¸k—áÈÌ÷Aìf¬k0‡ˆ(‰/P>w¸0¼õµ(S‡ÒXµzêââê¼8>8Hì5l žj?GoŠ¡V}ÛÇD¯Kê=ÈÓŸxSñÃBSWMξáaW6]¸[f,¥…ÐNÕOpdÐåwžÌ¥?É\ãQ…Ë“`ôªöÓ’OçSè2ažq)íÔ?껺§ÃI˜òݸ0ô±¹ö‡™Æûê\6Ù ¼lÁá—wáÃ8¦_ï}“ã›wø@Ï
Ož£è¬òüéGn7î<ÂZW=ß–Ÿ‰-\‡w×B-øì©Nß·]W߸2—ðP[h:|ÇwÃD ö†0IAºý¦@»¡Ÿä$ôP?ƒµ§¾Ôîv14ì”èV +ë/ˆALçœ/
;ztà~‹çò$‚|„Ç«líî³_jp¼X.eÒØzG \‚¾•©Š½Ë´Y؃ôÔ`k¹.ÆS;‘–Ä¿^Òk7ßâ Ä#µ¹‚ Œ¢Ä‡¤/CEE”c×Â!€3ˆàÿŸo± +
"}9Dˆˆ¬jw>@³zæÛ‡†âëÛ gxß©[ñ>l^€7à&¥èÞvñ¬«^ +µp¬"©â¥€.LðÃÀë”za¨°IšLž¤éïÜ%ó~ضþ딶fÒæÅ8 JrU†ÿ6–(æñÖä‹ÿ;m¨v‡”œŸ¨ij“@)d\Ê#Îÿ±³þ?tâbendstream endobj -1584 0 obj << +1583 0 obj << /Type /Page -/Contents 1585 0 R -/Resources 1583 0 R +/Contents 1584 0 R +/Resources 1582 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1573 0 R /Annots [ 1587 0 R 1588 0 R ] @@ -6490,55 +6475,55 @@ endobj 1587 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.6967 387.5149 256.3816 399.5745] +/Rect [55.6967 314.0348 256.3816 326.0944] /Subtype /Link /A << /S /GoTo /D (rndc) >> >> endobj 1588 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [268.5158 387.5149 332.4306 399.5745] +/Rect [268.5158 314.0348 332.4306 326.0944] /Subtype /Link /A << /S /GoTo /D (admin_tools) >> >> endobj +1585 0 obj << +/D [1583 0 R /XYZ 56.6929 794.5015 null] +>> endobj +406 0 obj << +/D [1583 0 R /XYZ 56.6929 769.5949 null] +>> endobj 1586 0 obj << -/D [1584 0 R /XYZ 56.6929 794.5015 null] +/D [1583 0 R /XYZ 56.6929 752.2372 null] >> endobj 410 0 obj << -/D [1584 0 R /XYZ 56.6929 692.9565 null] +/D [1583 0 R /XYZ 56.6929 610.516 null] >> endobj 1338 0 obj << -/D [1584 0 R /XYZ 56.6929 660.5438 null] ->> endobj -414 0 obj << -/D [1584 0 R /XYZ 56.6929 112.3379 null] +/D [1583 0 R /XYZ 56.6929 579.8656 null] >> endobj -1589 0 obj << -/D [1584 0 R /XYZ 56.6929 85.6994 null] ->> endobj -1583 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F14 964 0 R >> +1582 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R /F48 1238 0 R /F14 964 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1593 0 obj << -/Length 2372 +1592 0 obj << +/Length 2364 /Filter /FlateDecode >> stream -xÚµËrã6òî¯ÐQ® -<,Ÿ&ÛëìÆÙxœÓdjŠ&a‹>‘²W»É¿§)R¤,ﺶt`h4ºýB‹-(üØBKBE.TI™\¤å]<ÁÚõó8A‡±¾»?ûöJ¨ELâˆG‹ûÇ-M¨ÖlqŸ}^~üÛ‡Þ_Þ\ÒeDÎÑåw7·ßãLŒŸ?Ý^Ý\ÿr÷á\…Ëû›ŸnqúîòêòîòöãåyÀ´d°Ÿ{ -G6\Ýüã¡ë»?þøáîüËýg—÷½,CyVßÏ>¡‹ÄþáŒk¹x%,Žù¢<¥ 2¢›)Î>ýܬºsú“B©¹šQ gÆH,%iPÆ$\8
Z¡#P -Îq³æ_I¹.Ì70âùrD÷ú±Dà’ŠWzg±óëMþˆ8øÍìÎÙ²éxIüÞÄÛ”‹Žo´“>y(¼÷ÕU±CèÁQU -gRLöõ„ÝáÉC)’g~.™‘ R‹ë„zÎÍË\D€úQQy($-ËåßÍ®Á2x{Œ{Çöˆ‘ÃU?–3ü‚¼Š:åN)"B®Ni<éDã
RG•ð`ðqgÄ -·Önꢙ+ƒ4x¿d»qÚÁH!>Èq;æÐ4$“j*A4„”SÝáÃ
3®4¡ûF‡– ZmH~êÐÖ).&ÔöaÒ²PnŸA|UÒ%,Ÿ=“ö ~AÀ¡–8åÇ¢‚ö'¢)€sxE‘ñ‘ŽÂ·¼Ã8‰µÖó¯° §I:eYƒz Œ¡êèÑ\-žÍy‘wS”âkÒ<£©âjù[U¿T&
~QvÍ•0<r• ÛÉña‘q%«Ë$÷û}½Ð¶ÊßWXÂÂTÕæ;,¹y4>€1¶t®É—7-N£kðÐѳ®U:Ø!c|}^sT¸D!iWùBvÆK)¡ŒÏ=lÑ&}hÀdlºÇ`3AÇ‚ÜÎøSq¶F-Ø—?õ&Ü›û Õ©È©‹…QˆË2ä¥ñøeÒ¦+\@ôÈfÒal)rdžBŽ—ÀÜŽŸC¦‚gG]úW’>ÖWɳÁµc*œë…Ø£]%i'К -¢b-N‘Ò¤8gˆE·8½™/.££ÄäKLèYÎ kF}Yêýä€P…ò€ždü(½.ú‡#Ù]ÉTˆƒVÑÐb¶6îÏc -q„Ìc–!l4+׬‘¢oT¸oFˆ'|7búz
EF˜öÉ],m“¨Ü–ˆTmË`aÁUÔr¢óþùêÈæ.~Áúçƒq\Á ™,c߉WÙaìÛÖ
ؽ!OdFÙ1ÔÇLðC
4ѶbD‰®6´"ÈÍG¢Vy,ê3ö.B–`‰ `ΠryoÈêCŠÓ%lK0fz0fQ€f+b%µ„-«Y¼Ù˜:n¡ö7á×}?¸¿•Óvr Ú.æmµï·¸£m¡èÛbm_Jú…ÄœIc‚(Äm f"ÊøÖ¦Xì[CEýôä-úiŒaïhìûaLA½jÛóCa?#Fß0¾bÁ6 à÷<í$E¤Ç¼ðèë¤]áî£}8.Ô
„„G{ZÇZøül«"/sw—!ôe.õ{úMþo3 Ç
w³rùS›]ªÂ_}oz7º]mf6›9¾þèä+Š½C>ؼ Æ–aín¯¨ÔöžÓ¤) NÇj{I6UoÝé5ì4Ý”=Ûš‘,yõX¶eæaë y®|§u9BÝÁõçéPÄ¡ÆÇÇ]ƒÇ´Íà«^ÜñÒÉVÕ§ï)÷fJlJ©Í;w8EeÞ¢þ|Ïc¹»Ñ)OdÃ¦ß -ù|ƒAЊËXuLYÎÃIï·ÿ“sÊú_—0‰Äendstream +xÚµ]sã¶ñÝ¿BòLˆÃA€sO—‹}uÚ8©OyºÜÜÐ$,qÂE¤ìªmþ{X"EÊvëéè`±Ø]ìVlAáÇZ*âp¡âHÊä"-/èb
kŸ.˜Ç :¤`ˆõýêâݵP‹˜Ä«‡-M¨Öl±Ê¾,?þåÃ/««»Ë€KºŒÈe #ºüþæöœ‰ñóñçÛë›O¿Þ}¸Táruóó-Nß]]_Ý]Ý~¼º˜–ösOá̆뛿]!ôéîÃO?}¸»üºúñâjÕË2”—QaùãâËWºÈ@ì/(±–‹'PÂâ˜/Ê‹P +"C!º™ââóÅß{‚ƒU·uNRh"5W3 +älÁ‰¥ä#
ʘD‚§A+´PJ—y•ûÌ ˆŸÛ¤5¥©Z/ñ.)Ëdg%~w²ÁÅÐ .¤r{"P|ÈS%¥yûÆüÀF!‰ÒT÷œD¯àäó¥¼ÊÛ¼®p&©2~m’µñGñó,®6¦ççˆÄbB9
y(Æ”˜ˆH†^3`NHØÖ˜]Ûà ÝšIs˵±ŒŠhiáÂ/&í ö¶Î;rO³»dzip[;Ë85‰ÀoãÜ3mª´ÞW?7#–\TÈ×L/‚þŸS¤¯aGÃŽVˇ$Í‹ÜÎY¾täÕ+IVæUÞ´»Ä[ +$hOÇb¬§]Ž4E.…ë®Kƒ3휽߷8YÕ-ÎÔp讘*µ¼†sܬùGRnóŒ8E¾Ñ£~,¸¤"ÕÞYìüv—?"~7‡K¶l:^¿7ñ6eÅ¢<P;é“ûÂ{_]„îýU€õl„ÀèÁb Z’WzºòžnY|S¼q"¤ô-Ïþ—“Û0<º±¤X×pi›1ÁŽàŠÞu˜Iw¦¢'tQsž‹q¡"JD½àúÁÿ_áSp~{o³§O ŽTb&@@òYfȘu$;LðÓl¼5e~Jsc¿Ë‰igß +oó° +,Oµ9ïÐ4$K3„@§¼àÐ~0Ü0ãJº¯th ¢…6°
ÈOºÃz‰‹ µc˜´,”ûÆgÐ{_”t ËgϤ=)_Ðß +RœØŸˆNlt¤ +´k®„á‘+ÝNŽÏ‹Œ+Y]&¹ßïËE€öUþÇÞ¸ºF¦ª68`ÅÍ£ñŒ±¥sM¾¼iq]€ûŽžum,ÒÁãcyÎQá…¤]YäëØ/¥„2>÷r²q#Dšô¡K ±éÞ‚Íëq;ãOÅÙzµ`_¾î'L¸7÷AªS‘S?£—eÈKãñˤM7>¸€è‘ͤÃ2¶È‘ex 9V´^op;~™^uéIúT`Xß$×î©p®`/Œv•¤@kÀ±ØSö¢jÕ[Y¬ŽE|7öåÐLÅ(é—_tk[(+ѹõñ¹pêܸ(Ž}KH¦o÷mO0RœqíH«ÁÁç][‚*Xÿ5†”YuÛ¾hÆ[
ÁÅ\§ÞŒ®YÑà\·Á@é’·‡wÉ<6õˆ#Ú© \ªªå-ÜUæ÷í·ÛÚöD¦O¹ Á(ßÚ¦LÒ ÌäŒDð–Òœª>XMIB±'ûºÁQ‚ +›!%Q±/‘Ò'¤8gˆE·8½š/.£³ÄäKLèYÎ kF}Yêýä„P…ò„ždü,½.ú‡#Ù]ÉT=+C‹!ØÙX]Æâ<+˜Ç,BØh6®W#EߧpÞŒOøfÄôíŠ4Œ0í“»XÚQ¹/©Ú—÷.À‚«¨å1DçýóÕ‘Í]ü‚õ-Îsq%5Xƾ);¯²ÃØ·°{CÖdFÙ1ÔÇLðS
4ѶbD‰®6´"ÈÍg¢Vy,ê3¶.NB–`‰ `¶¥½=buô‚ÁiÀ¶3Ý‹)ÔEŸÙrXI-1˪¯5f£ö‚[¨ý5øu_ä.Æo¥Ãœ](õ„¸£öP×lqGÛ*Ñ·ÄÚ¾Žô‰¯6“ÆQˆÛ<Í:D”ñµ
±Ø÷…Šz½öæü¿7Åz"ÇfSPÚ †Ò~AŒ¾]0|Ãrm@Àïùµ}Š[ým“vƒ»Ï6áü¹PY4iuþjáãg_y™»K𸡯sêé7ù?Íúf“ÛpS0+’?°94 Å!üÍ÷¤s'v»ÚÌìvÏ Tû¢8Šð~ÈóÑÉ`lýÕŽ:JmÏ9MŠ‘~àÔz¬±§dWõ6Ð^ÃNÓMÙ³}„9©—êѶÌÜï=!Ï•oQ .G¨¸ù<Š8ÔøÜqžä¼¥
l* endobj -1592 0 obj << +1591 0 obj << /Type /Page -/Contents 1593 0 R -/Resources 1591 0 R +/Contents 1592 0 R +/Resources 1590 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1573 0 R /Annots [ 1598 0 R 1599 0 R 1600 0 R ] @@ -6546,79 +6531,78 @@ endobj 1598 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [406.6264 524.1437 456.8481 536.2033] +/Rect [406.6264 463.8552 456.8481 475.9148] /Subtype /Link /A << /S /GoTo /D (tsig) >> >> endobj 1599 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.5805 512.856 196.7992 524.2481] +/Rect [140.5805 452.5676 196.7992 463.9596] /Subtype /Link /A << /S /GoTo /D (controls_statement_definition_and_usage) >> >> endobj 1600 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.6195 470.0794 159.8382 482.1391] +/Rect [103.6195 409.8565 159.8382 421.9162] /Subtype /Link /A << /S /GoTo /D (controls_statement_definition_and_usage) >> >> endobj +1593 0 obj << +/D [1591 0 R /XYZ 85.0394 794.5015 null] +>> endobj +414 0 obj << +/D [1591 0 R /XYZ 85.0394 769.5949 null] +>> endobj 1594 0 obj << -/D [1592 0 R /XYZ 85.0394 794.5015 null] +/D [1591 0 R /XYZ 85.0394 752.3146 null] >> endobj 418 0 obj << -/D [1592 0 R /XYZ 85.0394 769.5949 null] +/D [1591 0 R /XYZ 85.0394 717.6455 null] >> endobj 1595 0 obj << -/D [1592 0 R /XYZ 85.0394 749.3189 null] +/D [1591 0 R /XYZ 85.0394 688.3332 null] >> endobj 422 0 obj << -/D [1592 0 R /XYZ 85.0394 679.8163 null] +/D [1591 0 R /XYZ 85.0394 619.0499 null] >> endobj 1596 0 obj << -/D [1592 0 R /XYZ 85.0394 652.1211 null] +/D [1591 0 R /XYZ 85.0394 591.4512 null] >> endobj 426 0 obj << -/D [1592 0 R /XYZ 85.0394 573.4726 null] +/D [1591 0 R /XYZ 85.0394 513.0222 null] >> endobj 1597 0 obj << -/D [1592 0 R /XYZ 85.0394 542.9681 null] +/D [1591 0 R /XYZ 85.0394 482.614 null] >> endobj 430 0 obj << -/D [1592 0 R /XYZ 85.0394 335.1831 null] +/D [1591 0 R /XYZ 85.0394 275.2452 null] >> endobj 1601 0 obj << -/D [1592 0 R /XYZ 85.0394 307.4879 null] +/D [1591 0 R /XYZ 85.0394 247.6465 null] >> endobj -1591 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R >> +1590 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1604 0 obj << -/Length 3489 +/Length 3170 /Filter /FlateDecode >> stream -xÚZ_“ã¶
ßO±“'ïÌYÿJê=]’½tÓæ’^6Óé$™ŒlË»êYÒÖ’ooÛéw/@€”ä¥ïÜöÆ"A -@ø²¸Lá'.Ml!‹Ë¬Ð‰I…¹\7éåŒ}{!xÎÒOZNg}u{ñåk•]Ia¥½¼ÝNxåIšçâòvóËÂ&2¹éâëÞ¼¾ùöç·¯®2½¸½ùáÍÕRštñúæÏ×Ôúöí«ï¿õöj)r#_ÿñÕ·×oiÈ2¯nÞ|C”‚'˜¾½~}ýöúÍ××W¿Ý~wq}t™ê+R…Šüãâ—ßÒË
¨ýÝEš¨"7—ÐIQò²¹ÐF%F+å)»‹Ÿ.þNFÝ«Qû‰4‘Êʈ¥¸")Œ‘3š"±Jª`A‘‚UÒ4]캻»º½#-Ê¡jªv î7Õ¯i*Ûz¨»–(e»¡ÆÏ}yW¡-`E9Ù²ô†“ãò°Ôí½Ÿ$&“dš¤*30çx ž3S9hYž×Â)•-Ö]‹ÒÝöW"_T=RóEIƒõ¦¢Öûr_WÃuº-Í -J;âê×SgÛí©1ÜW4·-fÕWû÷Õý'“‹›¡h§ÀÖ*‹½¾/Û¶ÚEÔ[j‘%&ËÕå2l¼ðp¿/{XR*°wßwëôî±/Ýax84ÖTÃ}·é_`O£àMÉ#A#|…¶¨}Ò×h -ìí ·ã)õ• -09¤ …@Ã&tž™‰è¯øìÜáÀV¸ÚÕ½ .v`+ð…ݽod”O¸/yUÌfÆãZî{çÁ&ÍH3a¼fÂ.rÔLÉE=ÐÈ£ãsi@fÑwNŽ %Ï$z/¦í3r[*U$µÁ~™%ÃÁø -›0©j‡òµ«½ìöüJÝÒ“ó¨Šl*Œ†M…ö]Çot³7u8\‘}öQŽƒ&ïYR ð±ÔD bR·ÞE•_¥Ô‘P!¬ •ûýZÆvÔËES#êa’JÎ4ýCµ®Q{Î0Gn´™N¬Á¸ª -¨}ùÔ
‚¡Ë«Ä{Ä"8Éš -Žú†šbƒ#ω³ -‡H¿nêˆ$'ÐØÎD¢âœP±ŸN°7÷8h+~©\¯«‡ÁA2_=-0îPMMFNÀ‘ºÂÆ<)„)øDÔí¶‹Åš<ÉEbMjÄro³$SFÌ]ÃÁ?%²Ñß°ã-<ƒ'c§Œ!7a’\ûœ†•Á&v’Ó¤(”
!²j+õ¯<Ô
¯ -Ð]’Fâ$F˜ü]¡PÐ^"…<˜Æ1¤vDtþýÙƒ «dê6q(/@¡‹€Îy
y˜ -’˜ÈT&ya—~&[a‹Ë7há¶Àtú,[¼vQÈÕïc€©ÀF*í4Ö÷]G§Nòq’‹wUõàסµyB·ÛPc¢’·A*l¨Y˜áöôøè4À(Áý|¾
¦H²,@QÜXñM—’ùâïùakUm»P®B¿fº+´àIþ«"`§m–†+
úçò@P™÷AÏ<ìK¬@ºÈJŠ†,²ŽŒI‰ ösf(Ôœ™Ïð.Ø~~^q¡4æçš 8…ÒâH¡ô´BPNÈ3-7×̤\œ{Îê!‹b§Ÿv¨ -0sÈèi.AëÆò9¤}kÂé e5ð¬=Lò×å’oŸG\d¹Ø-ÆRˆoÍÒĤG †o¹= -ˆÒ†–/º°µáúØpˆD ;&9^UÌÅúHáÈÕ‡uUmú£ëvS¯Y!˜„–Á{Y™-Þt4Ãg - -̉ˆµ·üƹ|Aƒ*ŒEN( #Ëì§Ñ0Ai‡(ö*›•Ã~èÐx!”J´qŠ¯|½…„°Ð†X -íISÓkè K¿q:Ö©J”ÍåÜF‘#%ón·#w‘|×+±vXïëU ¯º÷üWÖÒ•ðh«Gj€¢‚ØJ8ñw‡Ã`aØ©äôs -vk^)úåDa%“…KåãVYH13øŠmG+4ÝtÝM9”\k -ü“Ål7·5Ú'}Á¯"´ú‚HcÀÀž¢í¶dÚ¼Œ~?Ú×í°¤jç=U}ô#Í›ªs—QqÏùw2Eš<\{ðõl$a@Z)ĉ+&9¹b’ók$0L’Óë#Ép2 -kî²Úc¯0¹¿C8_Pø;v! ¹(Éï3S|µŒ@x"BÉ_–
IJ,Ç÷xc$†âÖ•Æ'Ëýн.ô'
& +xÚ]sܶñ]¿â&O§‹Á’Õ““È©2:Êt:qÆûÃéXIõȳ¬vúß»‹]€ä‰g{¦=p± +‹®Æ«¾»»øö•ÎERXewÛ<y.w›ß—6QÉ%PËïß¼~uûãoo_^féòîöÍëË+eÄòÕí_núñíËŸ~ùöòJæF.¿ÿóË_înÞÒ”eßݾþ0}Î}{óêæíÍëïo.ÿ¸ûéâæ.Þe|_)4^䟿ÿ!¸öO"ÑEn0‰, +µ¨/R£“j0û‹_/þ ŽfýÖYùI‘(mÕŒ +8dßÞßWÍ=©è×¾ì]íšž†?¸wB¨¦ê«¶!LÙlø+Fâ‚£”I¤ÌRÔÝÎE††EJ$BgãšÀÁsb:’×usZgËuÛ w÷Çå̗®Cl¾,iò±Ú8‚>–‡ÊõO4h·´*^Ú#ð~
¶í€~çh-éQ;|t4j´üL-oûnæv,E™1Ûl3×»JA‡&ËõTûCÙÁ‘Jƒ¼»®]WpïÇrÙû‡cOsµëwí¦{£¯Kž‰7Â-¤2Àv¸¯P8ÚÃhÏK«K æõ4O×F¨ß]¹\—M@9†VŽ¦ŽÛLÍ•ò±òtß3'¬"FQÁEïÛÃÓŒ¬R‘Ø<ˆ4JɶôíÜÞÙnwí#¨üöØÑ`½i: %à·vZ2cK²% ‘¸
{[V$`Ò]Enô¦Ù£,ÓtÙ6sWKUR¤‘çÏXy–h™æÏIWÈYjH¾ã/˜
9§#lÉëê²a¦ØîOV€h’qåÂDÇâÕùX6=^ýJ‹|y»%$(pXã9ó’É!ŽZm¦6Ü´3‘:ÉTž~•@laNòb°£¨Ÿ¹†hPÑê±Úï Z¹?ÑA“ØI EV½š c>ÿÛ_RIžûu£;Fkõ7n[÷}Ø5ƽïž: z=EnÜêp¶OCýô€cþ½Þ¡ŒŽhŽûý”ÈÕ ³'‰á$XkÅ"Ëýš[ž:BÈ2(C@ÏdŽH4Xü¶Þ;r ÁÕ¾ê<ëˆxôÑ¡HÔ[ã:K1{^°+ùœ•b3Â{(7a#2º™4áfÒ.s¼™V˪§™GO&¦Ü‚&̲k=#Ì|DSh¾Xu|EvJÏ$78â1œ1¹ÆßHp0ßCÀö²˜Óé>3Iª¤™*ßërrè9ï¥ËãÊÀ@@/ÑZÓb:ŠŒ8"åÜS”ØÄEÝSÓ—Ÿv?ÙxKÕЗ3©žQ*ÌF¥|ßòŽv²3Î5ç$æ8:`úž¤…"sM˜È&
«íIXy§T:+¤UP¥æA_Ws
|ÑOˆ˜zŤ’sM÷àÖÞžs̉A}—&Ö``ÕPÍʼÕn‰äêí.pª?ø…ò㫳—!<‚â™ÓP_ +i +v‰ªÙ¶sÁ&OrYÄ`#Œ|AöB¯—é¡©¤à@-³ÁÞpà#-|£%ã œ«Ý¤Iò4$5l6s®,’¢Ð6ÆH×8ˆõŽOî«šO +Á bòðÔ&¹ÎíÔBÁcØç +â>o+àf›3YûlýœÇ$xÞrkN- +C£3WhUF–Ù/—ÒÄKûò€‚¯¶‰ÑÙIyØõ-ƒ3„v‰4§ù) ô\ˆˆ‚TàSÃlè™YÅ`˜*õ…ø•²§.‹dÇ®ª£«âëaï~01`*Z8À£(¦ÇO0@›~14ãä×B'ÚæjêØ#Q
-%9z»ß“¹(~ðUØ=¬Õ*¢WíGÞÁݵòM|÷H +MK'ÔíøÜMÙ—Üm@”fâ¤&ärTPe_´«ÞWE‚š +ÿÝñ,y +üW‘‰>·ÕžÿÛâÞŠÕÕ7„BŽ4}H)Q_ϵ‡ªé¯¨cÅuO®»>÷ÿ+ÐMá?Ìü·‰ˆ?
üÏÿÛ2üãOš%:ÏUü·•©b³<Is ÂLá]RûŒóðO0ÏYÿ/.ˆÅendstream endobj 1603 0 obj << /Type /Page @@ -6631,35 +6615,46 @@ endobj /D [1603 0 R /XYZ 56.6929 794.5015 null] >> endobj 434 0 obj << -/D [1603 0 R /XYZ 56.6929 769.5949 null] +/D [1603 0 R /XYZ 56.6929 696.3453 null] >> endobj 1606 0 obj << -/D [1603 0 R /XYZ 56.6929 749.2381 null] +/D [1603 0 R /XYZ 56.6929 666.0554 null] >> endobj 438 0 obj << -/D [1603 0 R /XYZ 56.6929 540.3599 null] +/D [1603 0 R /XYZ 56.6929 459.1977 null] >> endobj 1607 0 obj << -/D [1603 0 R /XYZ 56.6929 517.4049 null] +/D [1603 0 R /XYZ 56.6929 436.7104 null] >> endobj 1602 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F39 1161 0 R >> +/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1610 0 obj << -/Length 3318 +/Length 3640 /Filter /FlateDecode >> stream -xÚ¥ZYoãF~÷¯ò220êôÁ£9ó4™µ“ 6“]Çû”-Q‰THÊŠv±ÿ}«ºªyÈm{‚…a°/v×ùUUSj&áOÍl,¤É¢YšE"–*ž-÷Wr¶¹o¯¯YøE‹ñªo¾5é,Y¢“Ùýz´—ÒZ5»_ý<ÿø݇ÜßÜ]/t,牸^ĉœóéóßh$£ÇÇ?ß~úö_w®Óh~ÿéÇÏ4|ws{swóùãÍõBÙXÁûšwxæ…ÛO¿¡Ö·w~øáÃÝõ¯÷ß_ÝÜ÷¼ŒùUÒ #\ýü«œ€íﯤ0™g'èH¡²LÏöWQlDãGvW?]ý³ßp4ë^
É/6VÄV§j`œ‰ÄhãXÕp”©y¾ÛQc/Ë]Ù•EË͵²ó‚:íñp¨›®XQ·®&/Ëy}(š¼+«
/?·]±oAªÀÃü»ú„²Ôˆ,Æ"†0ƒÁ+»zÃëÆä%+ý²SééÝæÕjÇä틶Í7žò¶¨˜¹®æç¶lqëÙÂÈTè4«SJdq¬Ý®Ìû•læ%îGóUÑ.›òÁ1Ã=»m`G©X¨46vIJ®Öž@»©V)¯Ýç¼óx -eÓô¯É=UšùöÀÞ‘¬ž9 ŽðGù¹+ò–›õšÖ Õ»Þ0xåc±£æ¦|,˜„$ª4 -³ÒÔàÁbØžÛbW, Á¡·®›ÁÕÈöALU±{O½¢¢¯é¹á߯'zŽH^Í=:;_¢õx—‘SWA¨‹TFV^pØ9^ ‡Õ–n -Ò‘'ö±ÌƒKÄÚD_fL„ˆÞZÉxf–ŒÔ#ßÄ ôM½ˆ&S|SrD¿iYëŸ(aMoòaÕ@ -$mR_ -8”\Rá°y3œC@65›c“/zõó¬)pÇL
”Yr
êÒp,þéµå#¯Ó]¸fïí -Sÿ&t«&b_À’‰ÌG)MœJH•œÃBÇe^0CÉóèXè ùÂlÂd 0—AÎÚ¢#h-Jʯ‚£Î4^Ñ0FBï¹*YC g’×±Pº/“HÞ=¤»Sûý£IJ(!†Å>Y„öÆ:]Kþ`¨&g’×õnWŸÊÆlåô8Ô~œÁa½¤½ÙÄÙ0éß¹a ÂÖÀ˜h¨pÈ7šjµd -ˆü"Š¤{'BEc„LåEiÇ3¢å Y=ˆ&Òñü¹D6u;iÖXûÖŽp5ów/ÖÂÙÁg¸:sNjYR0ß×Iµ|à†ÀË¢9¡\ˆy˜°õB^î|ÝáØ¡æ•œ¤àå/Pú«—öP,Ë5Wgùh¡yIýÞ@FÕœRjþö¢Fdôp¸ïCi"= åò7wÎolƒ8óÇ«6‡]jw]b˜ÁE_ëú«÷¡ -au–z¢³(½¤¼ÿµÕSÒÿ:[)Žendstream +xÚZ[“Û¶~ß_±“kg,Wtž×Nœ6NëlŸ’L†+Q'©’”•m§ÿ½çà +k®ðÀ™( +y½»ÒF1£• +=Û«Ÿ®þºWSü3Ê2cež` # +nY¡‹ü:7Ë”TŽƒû®n†ù¢ªuÛÝßÌ3Îg÷Uÿ5íz.+ð s!XaŒt¯ü×
¾x+åhu~=Wœ¡iÎí¦ò“&$@ifa2Îéïûm»N¬¥Ë +¡ü´eÕuSuÛ +àAcï¼>÷ÕŸÚîdj¤û”}MO#DE;^Ñï˜_ua½H$<9"ýlÑ£½ËjO0>5„:- +Ò +lDÆáÃR¥bMW€îŸÏu&¼õãi¬°ÙÉRGsÃT=ÔÉ|h}â†;—3
g[VCÕíêÆŸñè +[ÀÅf8€[½§ç}Ù#pЀx•†(ebÃÆq«=¬7˜½Y1{‹¢U¹›-wûm…'æöDiœ†4
'ÅÌN~Ÿ00qSO¢vÝ}‚_Š&¸•ŸÊ–4ÇäóñÐr!SðSFw¸Æn2?ëî0uärjØÜ;ýBC0ÅÍÔBÖi‚D#·E19;–]sš>&äÄ~¬Ë¤ãbF*ý4eÒãüŒ”afA>@q9²M@ÛÄÞ3o2Å7)˜‹ÖͪM§æVE•¿•b5ˆ©UJ4C¶À„i$ôΓ¿$…Ýï£U6g…²v*Ÿwî`† +}
¦A•|<V'ÏfÔÆȦZ‚Æ+x:Ö1ÕžœÁ@[˜pЦÜUËÔ!4ã*àÁ9¹Ç0^ +yFéCâxëm{W¢6ÙÌ;/hæ1Œƒ^’S6[{-H€yUaèßn„ É +L™°<s”ÒÀ‹ÊÎ^áÁ^0\BÆóуø£I +³…ù¬Nž¬¯BÖª¦ðZ ØêžúÀ(:‘ðt)I–Á©ìÓÐ ³$âwDt·k\rk‘spa&!óÔÚ˜¦KÀôT•žäU»Ý¶GWj«¤Ÿ}ÞÇ)>¡ñ·×'`V†Ã›#+L$Øâ¥Ïœ®Y.<þteÒ·jÍ2ЈQ¢2/Yx+JÏKÖØ(Y»Òc#Åæ–„:F¾±êA¤ì¢@œ8Ö<˜æ5_<tMåœ!²ò9åÝ=õ>Ê +püLk°Þ±€@Q)Æsþ°ru50$+O¬ÑÒÌ^‘ISñcf-á€
¨oíV‹Pz±– +„Bþg·@CYoƒmÃþ0 䟽&ßê'±òÒï«E½òÉY9êCd^ÐsTQ2'„˜=?K=ø¿LÜÀ£#Å{A¢ ^üæ¶ùÍ« ŽüÇ5y[¸ªÑÉयVmûÕ×SÓ²‰›çMõgï!}´mвjŒ´FEÞÓ‹ûàן›Êt4{:F=esO¡ÞU¾µñp¾è„}î¢ï|{álÑ&ñîÚG!§¨œ÷ÀåºÍ¬Š +¬}²u.Bc×1úêwåýx“º„ ~¦ešÙÌœe©DÒÀL˜'ÜäñÞÀcŽKŽ„/p_½-°äç«)ø°oáxd*øØ×Í"¥ä‚q‘?â_ø„ua¶ßÁ…FÃ1à2ú(“§ÕJ¨ŒåÊNE?½xHM–3‘ÛàEÃ}‡ÖÓ’Ÿ9 _rÙ2Fõ^Í +¦d,‹Ñ/¤»<íSœÞQÞO·¥²;¶œ3Á LÐvw>O~îq3ƒL¹KŒ±‰:]…ÐÖ"Ír{,ï{êu‚†>Gn姺HJ-Q +«)î¢(Ù@»—TB3@Ñ@’Õ-¨„²ÓÀ„Q©ç»êTY7$aøuq-ìwJU‘ðÍhnæêIïH“’¢ìR™ù¤d€…,Î%sºçªÂX*Œš…¥l=õ6ÒÎßVwsp³œa^ró›)êYWMÕ•[à%x=î+rá©›„ÜòbØv;bR¦FôfX+8tÔ½÷×^TFvâ†ÞÅ)þÌdˆ?§‹¨p-ï¨?¤…/>•rV1y¤b«ò°ˆ +Átž¹/íh°[_SãÃèÓ¼8>~Á}š7Í`¬‹þT-BÝ‹»gòœ$pËLqa'$=øF0Îú!W£¼+¡ß endobj 1609 0 obj << /Type /Page @@ -6672,7 +6667,7 @@ endobj 1612 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.6261 273.4719 242.2981 282.8815] +/Rect [173.6261 190.3209 242.2981 199.7305] /Subtype /Link /A << /S /GoTo /D (the_category_phrase) >> >> endobj @@ -6680,24 +6675,18 @@ endobj /D [1609 0 R /XYZ 85.0394 794.5015 null] >> endobj 1608 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1616 0 obj << -/Length 2400 +/Length 2058 /Filter /FlateDecode >> stream -xÚ]sÛ6òÝ¿BÓ—H3B€ ^žÒÔιÓ$=ŸûpÓv2´IœR¤JRqÕ›ûï·‹]ðC¦ß%ã‹Åb¿?`9àOÎt,âT¥³$„¤žöÁl{o/$ã,=ÒrˆõÝíÅË«0™¥"U<»Ýh#g·ë_æ±Pb‚ù›ï¯®ßþ|óz‘DóÛëïK¥ƒùÕõ—´z{óúÝ»×7‹¥4ZÎßüýõO·—7´3ï®ßO”~!zsyuysùþÍåâ·Û..o;Y†òÊ DAþ¸øå·`¶±¸D˜=»‡@È4U³ýE¤C¡£0ôââŸÿèvÝÑIýÉ@¨0V -Œä@&q -NØ5©q»°)$xë±Ìöv-êc9¡qÈAʘ”1ó’/Ýñc¹‰¹ªþÝ~¬s'Ž]µU}ZH)ç‚´±ˆ’$öžž8úWÐRitWG -kü"YS•Í·<Ê&À=b¿*MÈ*£P˜TJ–`yœÒ[ˆP!GrUí÷.áG‘—î&
^Ôæ_ïL¿ÇÆ®oÚq4Á‡Ë“±~žÎ•úhí,:¸mÅiíšYB×%Å&J(©¢±ße›–òçy^PÂH£†LM…”
m¼ -]¤)¸øÛ:´a?L¼k˜yiï òóõ÷ßÒŠt {- ÒŃé"Á[[Úš¥Ópy1•Õ@Û"2iò?±Ÿ3÷M›Õ-;ª™¬¾HªHž©Ï1NÞ´9–\Ö8U–D¾VvÖªBI’nè:oV™ÛZƒÝÁQŒš_ohïTiQZË÷8mÂï*;´G26Ñ£:‚[¤/Ô¬ zûcÓùcrÎ(È?Ç+®ïóv7®BTܺà~$¢”„”ú”°Ü>7 €b9:ðÎpt÷™‚3K¬1‚@gáT[?‘ø|v …Š´ìË(²ñ¡\q -ù§ÿ0ó½KBî›G¡ž7m8Y×)!Ô³"ˆJ?€@s
òU†í®ÚŠ¶ËØ÷ž#†N1šßÓ
¯%‹€_ÐÕÊsê\¥*_´CzÎ%SÊ4°ËhIÆm’sÔÎ&RmF±Â¹¡:ÝáwÖ!ç„Àq -* Ø$´½mšlk™ç¼œ’Û2e&U -*ÁÄ‹pŒ>„P“§e€´“½¯Œ4t -ª÷.k}ü
“sgó'í—<œ_÷§^G4ΞÅÄñÛ+‡ôÍð8‚¿yõ5§î!±×õæû¯ò½šª†ç.;ÁÁ™O ðôÜ=4³ªŸzºfKeÁ“Þ bœ–£æ<5LzÇD/µHÂ~šÃŒ‡ìB׎çæ)Ïù ±'2ÄŸ[/±<
S½]’À¹AÆ4 rb=Eáé4r5ÈŠAÔ×vü 0Bè§,/²».†ŒºÄpm(,î -;Ízm×c?Ú¾@´€Ú6âÁÃOB¤3Ç"ÔÐÚ?ãéê–H‚äì¥ñÿ;åÁ^ju¬õãй +xÚ¥X_“Û6ßOáéK䙘!©Ôõi›îæ¶sIz{îÃMÛÉhmÚÖT–|’œïæ¾û(K¶²ÍMǦ@ +VØ5¹qTaR(c¼û‚7áq¨äÚ˜Œ9‹Š•îXÅxßd\Ýüæ €ëÂmÇ®ºº9Í•R ï„2Qš&>×S'ÿ¾Y:‹@.”Mlü"y[Wíë9.åà™ƒ_´Ž&öª¢P˜L)ÞÁâ8±I!bq‚œÈU½ß»*„eQ9M1dQWÔ¬Þ…þ];ÛbgÑ„î´Iâ¯óyª3Ø>¢m+öHg×l¦.96ÕB+}QúòMGô²4ha”ÑC£¦`‡ol¼Òtœ:üm±á<L}j˜ ²ÏDùéáû×4"_ÂÔK¢ôx0=¼µ•mxw1OçkëÁÛ"2Yú™_°õm—7'ª Žv_"u¤Æ¥—‡$o»6sXUU$¾WRNֺƤ!iêºhW¹›ZCÜ!QŒ64wª4¨¬e=Λð¿ÊÝ‘‚Mòè$Á)òzÖȳˆý±í†ö±8´ŸñŠãç¢ÛMC=¸¿€( $d¾$,¶_(Ø#'–>$£û\)¸²tÀÀ# +vèÚæ…Âç«K(t«óAŠf|¬V`\’%çóiƒ’*F3H_oÍã'KØr¿ÂE ÂG–EQ-N‚¼ìì\
}qù™Ç¢ì®Àâ2%¦³oJ*¢¯§š¡§#»ŽÔº€}½¯×ÅætQ»}'@§Q½ÝöUû‰YuQu=u€ÜB§æOžœ—l*ßåŸ{E½ƒ®1,]´”\d°‡ë‰„vi¹³#ålØ»&oíÚ¡Hd‘Š|?äÁfPÎ&Ø»"„äóÆ æQmMn/Èë‰êZ‘DG?Às-‘˜êUŽ
Žºš¦ZËÜÏÞ"ëUl +ù¦.Ëú¹Ç!–Óvùã\f}?‰MÉ_&*¸Æó^WE_O-óÛ1ÑáL{ñŽ’fNÝ-ÂECFLé$°¿çûCi/ Ͳݫ–&ÚüDœìèÄHò˜rË1÷#’^UÇb<kNŸtP°6W3G*ò²e~¯, ~³öÀjê4È¢K„ŽK©…:÷[|8ážþŸóLÃéýŠµ3þ†Å¹ù‹ñK¯o°ûÓ'ïŠO£‰Éë¾¾|ü.GòåÈŸ»w©ã¬;‡ïž&&ö7)þ2e_`áþ£–묂hé¢êo=}³ÇGeÉ7½ADœV£æ²4LfÇD¯b‘†çÛ>a\›][8¾7Oeì?…3l«ß7¶Yàñ4,ôz1(/ÇÚ!·—$¼\FîUQFç³?FHýœeþTBÃÅ”Qƒ®
…ÁÐ64\ÛvÕ®We®z3}øé`/æ蘃â®ëÜêÒªk¯«./*1å ÷u¿…‰nkŸŸ|Eá¤Y¯ízœG›ãà²ßq‰ZÂÚ¶âêíGfЀÉlf´HÒ0ýš·8¶D*Ó/<×.b-"ef‹(…F\¦Sïµ²¿%üé×áóÓ9èÑç·¦R×ÅPãA²Ð鑹z»öÏÈÌ50ý¾%+endstream endobj 1615 0 obj << /Type /Page @@ -6710,35 +6699,40 @@ endobj /D [1615 0 R /XYZ 56.6929 794.5015 null] >> endobj 442 0 obj << -/D [1615 0 R /XYZ 56.6929 520.4669 null] +/D [1615 0 R /XYZ 56.6929 436.7807 null] >> endobj 1613 0 obj << -/D [1615 0 R /XYZ 56.6929 495.6849 null] +/D [1615 0 R /XYZ 56.6929 411.9988 null] >> endobj 1618 0 obj << -/D [1615 0 R /XYZ 56.6929 178.7136 null] +/D [1615 0 R /XYZ 56.6929 95.0274 null] >> endobj 1619 0 obj << -/D [1615 0 R /XYZ 56.6929 166.7584 null] +/D [1615 0 R /XYZ 56.6929 83.0722 null] >> endobj 1614 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1623 0 obj << -/Length 3175 +/Length 2752 /Filter /FlateDecode >> stream -xÚÍZKsã6¾ûW¨j‘+ƒssü˜u*cÏÚÚªÝMr EØf
E*"eóë·
H”L‰™OUìšx£Ñ¯â#ÿ|”¨ˆÉ4™4Žãj4›±Ñ´½?â¾Ï$tšt{ý4=úñBšQ¥ZèÑô¾3W±$á£iþëøôŸ'§ç7Ç¡ØXGÇ¥Ùø§Ë«3ªI©8½¾º¸|ÿc§—×WT}s~q~s~uz~<á‰â0^øö¸¸ü在÷7'>œÜÿ>ýùè|º>K÷¼œI<ÈG¿þÎF9ûç#É4Q£gø`OS1šÅJF*–2Ô”G·GÿZOØiuCûø3q¡äh"“(V*Ù¿,-Á`YOr¥Jí®:áÒÀLïD鈹¾Á;wÂc%Rª‘Qi¤¥îRfuõcâ¹Dg -&€9Lû3<ö¹ç ½°N}'@Öš¥ã:€ÛJ£6ª…}Ș1.‹@5«ù<[¾Ð‡³ŸPfeSûŽõÃC†¸æJbÓ®p£Éšï{UI$WágYkjXžsN€¶p;•‰ØfþôÑmNªÍøÒãP{JF5
éÔ¹
C™QÃøBÞ—ëÜævéàÎX‘J‚¹½ÏV¥Ÿ²hûPXÇÛx…wzçôšC -ð¥”<ˆïª,ûØÃ#˜ó˜U•=d‰;*ùujþm-1‘Jä %æ:↑%®lû\/?
Ú+ßl0`f貶Íü]?c‘É°Ò,Ž÷Ú½Zä ÃËXÎbF,£1‡øÕÙÈߘ_*I x“r€_*‘PiÚáפÁ ¬h‡1Óɤ§¬Ü‰˜s[¡2 _€º‡x3^§<‰ø"yCör[¦†ƒàv«°˜"+8ü² -µ½Uë!‹0)Î~ÌÇä¨SwN‚žð±ªJ@O}&±H:|‘=;„3qðLõÂ'‹`îÇÌAð‹ÖV¥‰L¶¡…c zX›÷²˜Èí‚HÜ‹#À†:ºîE½lýÂmHˆâ;_}ù‘6˜å¹Ï¼øÔÉžõqFtæïüÎn\¾òZ,…_Jòõ±7 LßÏã?¬ÝyYX@^ åàŠ>ïÀâ€À};'à -n‡Ý‡[‰Ê áàç™m -™SðXf~†ÌOÕØ^„òSì{بVã’FtÔâqt:žP5(×=`÷½B3ñšo Î-S;¨Ä5o×èñ9fÈzöFƒ€ÎŠÊUc‰ÀÎÃLÒ ~zú‘ˆõP’oÆL×cÄzÌÙõ¦6r{~Js^ÂÎ}×E<$<"¡±~nlpXêq
ü>=Ûô;}´³ON3±å¬hPƒs·–ë³;{J£°C¿µºo]rÃI'a]äã—¦-ªÛ…–mm؈´Øˆ4÷샺€”´? -ÁwUÅ/‚á†Ð¨Í³úÉn€]Ê]æ Kz]G*¥´¬" -P2a¤k*ɱ÷8µö±n¶ÞH¼7Ï!Ú
YëíGË"Ó¹¯»áo*4,f"Ó!™a -‚-åíª-탻ÎI]•ÃI€³u7äØ
¢ìåDB<òKýÐPËÆÙœPÙ“%Ê…TŽÂô1\ÄŒ2r»úÏÙõ‡“K÷[ ã”…Òá!Ìt¼(}SÂÐ{¯~uP×ö§^3j{d(ë‰*Ù&IJÃÜ3qÇ,ÄÈEµõ
NÊgNkÿ‚×´«;¢þ\¿üå"/R¹ýÚ¹ú·PÁôü¢Ÿ"øQ"¥M ì3²i¼Å$÷qÄ°Qs5Óác:SAø ÎP[‡½kêëã1=^”Yáûº_; ‘¯z¹útÜs¨m*œ($ï¡JðR×TT…S¹ºõ`’è-‹ê:tÌXêâÕ‰½³>/¢Æ7§D +xÚÍËrã6òî¯PÕBW"$çæø1ëÔŒ=kk«v7É–h‰5©ˆ”åë·
R”L‰vÙ®²} @¿»1àð/¡f\Eþ ˆ|¦¹Ðƒñüˆ¦0öùH¸9ÃzÒ°=ë—ÑÑÏ*D,2ÒF÷-\!ãa(£ÉoÞé?O¾ÎoŽ‡RsÏ°ã¡6ÜûåòêŒz"úœ^_]\~þ÷ÍÉqà{£Ëë+ê¾9¿8¿9¿:=?ŠP€—À‹Ë/çÔú|sòõëÉÍñ£_ÎGÍYÚç\áAþ<úí>˜À±=âLE¡<ÂÎDÉÁüÈ׊i_©º';º=úWƒ°5jA»èçsÁ„Ôj0T>
àxƲÊYÀƒ=ËrÀ¥—Öûq\®YCl£ +0_È_©X`LØðWŠ…¯X¨”Z0i€÷ÈàIr¯² +
óek>8Ð~ +©E +¿gÉòX„žæ^^Pw¹HÆ)®>v`EŽ¿¦«eŒËQç,.·W#¿K’œ¤®>À„í +ž’¤•ƒ6_Ç7”Š6ÊHpÿ( BíE,ÔÆï¡q¢ú4É“eœ=ODä#oƳaœe Õ2Þ×8_ÓH5~—Ô.«4˨ëò*‡ ‹ËÒ²-™POšWEƒ|Ø%N~"ŽÅù„ lk×…«a#©ÇVúÖ¢³Ÿ»m²½Ž»ÜUoÊÝ@³$º‡»&̃ˆ=®â»Ôª½_“²Œ§¨oJk(–u;‘Gö‹’ ´ß w@«ù‰ÀÏd™KÖ4r·îÖ÷„8”Çs×*“å°‹x[¸¾ª¨uþ]äÉŽŒãq +·t€Ñ- +¾£ë=e
±ŸÑxÔÇh0Ú³LÆ«eZ{}²XXrq¶CÇI’§ugqO_"ýŸ«¤¬Ê„míøuTx_Âj ‘„ú«53R*K¯Ú§ôöt×ù ù°'s²¹ˆ—¥uˆ[Dw܃þÁà·öþV$~#%C›ú\È/‚eRê}‰Ï®n!’äÊI%@Ô?axxåj<Ãað8%M³;h>hH™>$4–Å÷Õ¢¤ñùˆN×ÑÊ<q̪Ùz—Ìâì~[SÆYšäUé&Ônic¡Ö?1w
à{‹ Ùf ÃDÀeßE…@ +)û×½#{š÷²þÙ¯–q^dÙ„ +Ý +c +8‹Bn“µ¹÷pw»d§tÙ]P÷bà>ë>b÷¢XVn᪤xâ×}ù6O&®òâP';îV#ºr nw~—l¾vZ¬¤[J‰f8bL7ÏEØ»Y/ˆ» zGôWwPaÔ·s2ì +Éɯ?u’ÿñ‘%ÅóE–°q1',—Wô=?jýx{ÞµãöÒŸ>Ñ¢ÁËÍ“jߢCZ´Ów·]â+ý컆I2Ì—Z÷¸n‰„Ç1„,©XöûïË«ÓµLBRßaÏ67þ[Jñmˉ,$[V¡ÇÚÈÇËÂÖ¥¡ç>N³UßiûpøBBB¨…î+LKȧ¹v¯#ÒrÕ‚þØÞM¤è +Í,¨“ëÞ"Oª²ÑþmcÑ”T¡=/&«,);Õf;:kÝ|ouÛ1ZëvéÐû†6‘>ð%ƒô5Ó}Išô#&|cˆ•9|üœ‹%òVí<ct{ùùi¥öe·v›¿•Š¼Ã"É#f"¿×L endobj 1622 0 obj << /Type /Page @@ -6755,23 +6749,26 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1627 0 obj << -/Length 2903 +/Length 2959 /Filter /FlateDecode >> stream -xÚÅZKsÛF¾ëW°jKU‰ãya -Xd‚àh×…à1ð?‰’L¨@u2‘b !¦£p13J*+“Û_ÿƒïSå`*¼HèøãœëjUï6I[Ô<iΓ婘×û–zùnw*¢y½k¨_ØYfn©y³«&§‘m]éþYWŽú;ç²Ì›3<츂ÅA íÖÄã°+Ú6¶*Ò#¶°h¡¡›T
&-}ÛuNuq¿Î›ÖÝqôg17‘»d–/÷÷OOj¸ŸTæ_óÒt!ˆ[èh|âMN$ðõç/ª{"%p•Í¶mØ1u2-bÐ@Œß
¥#¦@ÿf‹’Ïaׄ<<Âøÿ¶ÊD˜˜© ·!ãáX7éˆ# -íEÈb%#;㢥M[Tbl›´šÚöò𮻣¯µoöÉΈ'ö¥;ÛÓÙ_±ñnvRZgùx—àmƒ`þÛr¾¸~GÔÂeøX‰£ê²¬ -•Oœ"xÿhd¶X:qw-X¤•pó@!Ã@ÍßÕ÷„e-
Øh;¿N_`rúêí±XºÖ6ÙµEº/“Z=ê¼Ü:Äuæk„Ú4Ù7/BìÊë‰54øÝ·ëÜ1D3_‡&ß}ÍÕñP9VP£ÜæFw - -´NAl4I»±ÑG -jB¯ƒ4NKk°ð¸-ŠQ 5àI`J÷»†NÝ‘šºÜãtw†v´£a€í¤}vï%ŠŽÆX\)P©áÄ},в®?»Vñ9ÿ+fB‚KÂØžl•·hÉPKA™A§[o¼òîðú :Ð_ð\ük0iP%q²#ĹˆÔ9õÛbãwƒ8÷U³OS¸+>fõ&)ªóóéØ5_MHÊsy'måçáÙ—ÝC>Îpà}œ•É&?çgÜp·ƒÆ”œ–IL¶çâ,É–4m®#4¿&%µ>=Ìà»F],³ÜX#±k.<´:HäåÐarã`SÒº´°ZQCã‡Ç"!Â1T;’‡*ÑH1a™µÐÕ´{æø[
€i MŒj†z¦RLGñŠXôâ%r»T¸vl(„“ìM‘‚/S%%Q‡QÒ…±Uæ~a퇃ÇJ…Ó¬Ça4ð»
Øs·¾chM<¶,œ' åÝÐàcŸR¨ -"ˆŒcoì{…™ŽPÃ0ˆ:{oͼ@ÈÀûAÜW)§Í”Ú(íQ!ÊÛM¥~
ÉÝ#cgJÂT+“Áb°´é5nt<[Ñ« -ÇNq¿µUR6¥æ¤áɆ"°~È»šñm‘RÕí(G×6áñ *‚ÎBZÙ‘žçUZB®•Ýæ<ðm¾ìûìúË]’~ÎÛÆ:m€å
F
Ä;g0tùeéÕ$RÎNFÊQî,/Ko^'ÐÙ\ú[[…ˆú¤vd0¢…ª«w§›ÊrÐ,HŸÏ¢.çeF»øËjï;4Æ<ù–ÔWw• ;ça[ù(y´fŠ†:PåÙ?q´cDYà`qÏùà³?gÆ ZåRcuáä t!ÈÙ(oÀŽã!LºòNôú -]èz×Dœjýü#°v”4‡Ø'ó“ [ûûõ¤‚RUÇÅñãp hΖ¡+rè»®Ž–%Ëú«k:Ÿâ'=à&l©t…_£Aó8,anê¦í£y¯¹ÄÊÁv™=]ÚŠñG•6}àòr–~Å“hQÌx¬Í3hÓ‰|l…!þËÀïÑ
Û6ü¦i‰Ù3¶É8RË-ãÍí -Z?¸©Û| -f#%P'ì<v´ÛÄæ9 -rö¦ÜaYNXX´g>…ß}1Þû]èëÌp<ª§QõÉ×ôuu7h}®lh„K(B¢+2çUÏyºZ68Ï7]p`äèýŸR»!ž¿OGzµ“ŠÅâ/i2PßP;0iùmµÃn°ÂjËW”N¿ÐÄÕ›x#»êJ_ÕîË<êظL+W]I5¡Ç”<`Jéø9
ZtGF”ƒ7ú¾w?¥ú¡¢ÔXWñ3¢‹àŽ¹làe²„dª“%´)ì’žICÔ¦¨R7¹õ«ŽäÚQ:§H/×GÁtâ]áÐ|CVƒGøQ²"½Œ¤·‹ÓqôŒ¤”d1„Ðî6ù0½£ôÒ,Ké’ÉÓõÈÓÁP_=À^ÒNÉgZ!µ!ÈgSšRŽýÖû. à¼ÆYplÛ$Ýæ5]©óÌn5–ШO—ÄV^8?xb?ÊCìïzr¾| ¯ýMA`vh³["ŽÏAJí–Ù_`z2šhë#vÚŠ¾X—Ýo=ç©Ä¿©ˆÿn+À5Ë'G€,;Y&vs%ǽxû=áQú¤ºÊ__ÉNÆS?ÄCÍÔfyOëSÔæÖƒ€6iÈÍä_jÀî˜ßýw!ýÍè©(êýÛ€îgo…/òÂç ø£¿ZœIe¤Ÿ58úEQendstream +xÚ¥ËrÛ8òî¯PÕ–®²‚ +¼›Û7×½¾¿zûöêþ|)t$¼Wÿ¾úåáúž§bËãåíÝOŒIùóÓûë›ëûë»W×ç~>»~èï2¾¯$^äóÙ‡Á"‡kÿ|ø2ÕÑâƒÀi.vg*’~¤¤t˜òìýÙz†£YZ:'?_„‘\,C%`Ú³ûòìkÁPD +G‹@8I¤Ø ©ßÔ Õ ö>wæP˜†í6kŠ¼möÅ0neLÅЦ>œí=S×LÛ5–t_f…¥ýéî=ygð0°íR?…‹Ñþ´6J½¶Ø™ºkÐ)#ïa[4<Á_íÕ›–ö²"\¿xk s™]ÝZ‚ƾ˜ƒåTÕíÜ V¦¨PIäÝß¼b +
²ò˜=5óÎmw¨,·Ø»yw¿œnÈVóöú5?”ȾÊkŠ]QfFÒ¥ +¶UÀWX‹;>Œë]·uxèá„è&„èݬ‚ùÚ^úÂÄž÷øb*û¦$ b|Þçý»8f·[‘EöˆðÝÀ+šå¾nŠ¶øbé韾–ëŠV ¦ËÊòɺç±O×Ê— 1vÏU¶›uâ2öEa©ŽE FÁØ]G"%ñ#ŒvÏPËGÌHNxÂ¥?’A2½zÓ·øVqï”y”Ù/»ßØú}ø².`u x-FJÅLª|NÜ`cÔ÷4˜0Â+À0ZñHd#ÎV`šme™HH=ðÊ'ƯˬiŠÍÓ¬?fµQƒÕ!ŒœÊì—¯X²øåk`¯ÊRÃQ+†'7ªb·œ»9lJÖ¡G2ÓäŸß_¿bÜ—¬,rÏ…à²zíøsWXÈ6l +ågV‘R¾’)Kîþ—ÿ}7Ÿº@ì;÷`)ijºõ®å‘9köɉ*1Ê¡`f_—Åú‰g¯+‹ý-ÂÒ@<Ñcæq<-eJR« [ +†”@à$F>ürè`[<nÁÎ8%¡?
bçor³êç¼RèÇ#*ÁÍ•ö¤ËP@&-”žªâÎô W/<¿uä±5»½õ¨óÚ6zÆSAÛ†lÿ{å®I‚ä¤|ø{«ÜADœbÀ‚"ñÁŽ&eÇ7åG˜hPTB!¢S_ÅÑ3 +íj#€TIØ×oNUYMÍ"=-AWYO±ËZóXžf=ÀÊÞ@(âùÀáûTR_‡½‘LøË«™ ²´k·3ü˜òFü6{³.ÐÖFy®½Ï1ýÀe;RD¬¬L +½‡ó4¤¬ä—!Jð踵 +'ûõN„5›¥@Y p<}ó5ƒÅø©¼¸½{qæ†ÌîOùëK©u0ïÆ'çÔœxù¬² UAã0ÈèÁ:lΧ=ÎîôŒpqý1³±¸XSÉAì[ž.©Ú@• |-ü6ug»<¦ˆ +ef‚¢K=q[þzæîJøZIaé0$µVH—UƒÉiðëíu¤Lm_ÑB;],-´‡4¹Xwev(mµº5åÞj\ï¾&Z»ÎºæOiìÆÙIf3جk·5„ãl¨r¸ d¯ãTåÔ@ci7Uo €ë
ÐtÀ…ü¡cub PÛÃóZ•F²u
þ«Ý¢˜$Z#ž6•í
ŸºG5uÙµÔ$!z×S#õãjߌßû3†N…é(”R; +âËà¢Â¦Â€¹wZe90Ù_Š‹,_1ÙB)zG +˜m!ɺ.kÛ +àûâpCRIåάS;ßÚ¥à.ƒ¾.¥ðzËÇ Û[–Ô¡éq+ƒ–rqÇÇo—åØÜåö²6$â¤Uh²•HaS $™úrâlÙ8EC=›íÄŒRŒ ²}Ãz•¨¾ +;tŒê›4ß·Ña×ÇŠ!Êxð§’Êv¹Ö[üoÃÒd9g@@Bm{äd‡ìyPXv2p[“‘úÏ4¾û6Ϥ›„qÈ…šém¹•ÕNjp“ÏF|VJG*Õl<SK¨µrÆSÍßæs7T0^¨ïÖØYk
°¼ÁÌ£|§qÆ!_cBP–ÎL´kpké’({Η˜¥s¯³ +Ðû\•¸[“A表8ø‰ìûéæªt¡«gÑ–
5§awYåb‡ÂœÇìÙ|Ußù´
™IñHnŠ§z¥2ù¿y´eÄUàhñÀùèª?׎ý ’ò›ö¿™†Ô}¢AÖG9õqì4Âb oïI¯KPíoZ–È©™&YM·Ûe‡âwWQÕ ‡±—E<Z×7Ý£¾§àòCý÷[=ÃÏ衯v*ñ§çTÏýTÿ¬²ýðÓïö*ñ¡Æ ‡¦ÏXóúæŒ|ä…ßül.?”qO5:úÿ<{aEendstream endobj 1626 0 obj << /Type /Page @@ -6784,33 +6781,32 @@ endobj /D [1626 0 R /XYZ 56.6929 794.5015 null] >> endobj 446 0 obj << -/D [1626 0 R /XYZ 56.6929 689.473 null] +/D [1626 0 R /XYZ 56.6929 474.28 null] >> endobj 1629 0 obj << -/D [1626 0 R /XYZ 56.6929 661.8816 null] +/D [1626 0 R /XYZ 56.6929 446.6886 null] >> endobj 1630 0 obj << -/D [1626 0 R /XYZ 56.6929 297.0896 null] +/D [1626 0 R /XYZ 56.6929 81.8965 null] >> endobj 1631 0 obj << -/D [1626 0 R /XYZ 56.6929 285.1344 null] +/D [1626 0 R /XYZ 56.6929 69.9414 null] >> endobj 1625 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1634 0 obj << -/Length 2618 +/Length 2586 /Filter /FlateDecode >> stream -xÚÍkoã¸ñ{~…¿UÎ<¾ôê~Ên’m·Ùk’=HÅ¢m¡¶ä³ä¤Ûâþ{g8¤,ÉJ²kQ,Ž†Ãáó¦WL8ü“$d\¥z§š…\„“ùæ„O–0÷öD8š™'šu©^ßžüx¡âIÊÒHF“ÛE‡WÂx’ˆÉm~¼ùËé/·ç×Ó™y±é,ŒxðúòêŒ0)
oÞ_]\¾ýp}:up{ùþŠÐ×çç×çWoΧ3‘„ÖKÇ቗?ŸôöúôÝ»ÓëéÇÛŸNÎoÛ³tÏ+¸Âƒüvr÷‘Or8öO'œ©4 'ðÁ™HS9ÙœèP±P+å1ë“›“¿¶;³véØýi.˜¡‚›„ÄQøô¶´‡m¦,ŽÃd°ëL¨˜é0Fð„IyP‰•X¢T8‰O¤¤²:)Mcv;¼š/¤ìåġŽa$»]™éLi”ûͽÙ\-hD" ªÒTûšPaêýºqˆf•5²¬”§©Öž¡)g( ì9‚¥a(íæój_‚”–<G•FAQÒX›©Ê¼(—ôýÛÞì -SÓîˆ#îhØ¿0f‘VÒ0¯6p=¾•0
WìÈþ§»S2Þ—–-ÈšFŒ‡Q:”z³©J<˜æYm*jÝ-hw›ªqßµÙ¹ûðÄa°/‰*›¯²ûµ#ÌʼYädÄXEÃëm1sS<à
) -Ó—|(JS–„‘¶ç¾Ïò©·_æDQµN„0:ŽûÒüskæ
Z8~;õm«²Fm!êï<äè×—*Gìz`ëlcF$“Š¥ôH2à,¦3-DÐT4¶Ž„µ)‚î?;2< -}+CLÖHF¼.LK½äu3ÉC¦”8¹ßS&ÖUÞ÷ÄÁÆtÌÉã¯`éW<mcR§æ/ØX:Jyjžå÷_§/²b½w:옆6R†)—.P"ºvðÛ‡$Íòܱ¨=´RœWê <J“$M:¡ -×VFÅ•‹]€8={ÍõÞÓ´á.œÖ¦ »ÒÆJnc¦
Ê~¯Ap´Y(JÝV -(¡K”my¨¹K¡ --ÜF +xÚÍ]sÛ¸ñÝ¿Bo•g"¾IöžœÄN}sq®Žï¦3n&CK”͉D*"eŸÛéï. H‰²”Øétô€Åb±°ß€Ä€ÃObøJô J43\˜Áx~Ä·0öîHxšQ µ©^_ýt¦¢AÂ+íàjÚâ3Çbp5¹¾ùÛÉoW§—Ç#iøв㑱|øúüâ-ajÞ|¸8;÷ûåÉq¤‡Wç.}yzvzyzñæôx$b#`¾ôvL8;ÿõ” w—'ïߟ\ºúåèôªÙK{¿‚+ÜÈ×£ëO|0mÿrÄ™Jb3x€g"Iä`~¤bF+0³£Go¶FÝÔ¾óÓ\0!Œ”f±|Vé˜E<ÚñY¼ð2f7/šÇ—ÃŒ.«‘PÓ&BùJÅ"kãF¾Z´ä+´b±RfÁ¤Ù£€—Ù4[.ÓžôOgR¶&ÀGFGð$¼ºË@4 ®b5¿É–—SlÕpy,â¡çTÑPèi¬*g÷aaÆY~ŸM±Ã•«Û»®H–#ÝÇËU
„:ñ\h¸®ê¼,· &㬪@Ï”àÃóbcZzSÞ{0û3/fY È+Ò<h; ;¯hôá.ߘҨ3/«š Yþ%›=<.瞶˜à?Ê`„m*·íñÉA[ŽÏÓ
ÔBÆ<™„E‘I¾%͈w«›µŠ% Oö©›0øéÕªÓe}˜¶ÁgmCµ
Ûñãx–U×wi ?¥«pnh™£¦çeõéY•-a°6 <ÈØpR·ÞÎþ,Ø·M¬_卵§yѳ-ÍY¢¥ñdÿ*‹TSð8qº‰ì³5 +?èöE ÛŽÒzÉ(`ÈDHÑÕÍÆ´¬€
Tdð±ð)Â}]eËGÿÉ
_”U•ßÌ<ÆLË‹[š˜×¨ìV'Ùð½Ù;Û³~ÁÒ4†¹(‹*ƒÏ ?\RK›EèKQ>4¥Hç!éü=çéšóöño¬gçù+0 +Ûõ¢°‡ñ@i;¼É¨O›D(Ë}°ƒÃ6‰J¶–|…Þ<R›Ø*ˆH÷é,Ÿ²v„)ý´´"ò´C¸šÕžlJí¬,¿¬s_FˆEPò䦀ëdâ9yÄ$Ó›Ô}zvOÞ¾ÆpøŠ0¸J•RaûJ62îY'áC Í&»Mª«/ËÁš”N,³"ÞˬK`„çP€&-—‡•Ò²1*„|¡EX+à+BUÁ#(µ$ȱڌuŽQ1êÓŽq¹*j/bç+-ª‘kA)À%ûtúë¨j,Lcw™§‰˜ÕØgÌ4œq×>•Œ†ŠÌg’pîÜØ
낪dŽ ÒÌi/@dÁ:œ‚nçЮ¿6÷@l†«‚¨@MÓ›™'Ä2h‡/å·›ÇÛ`\Èq–eÈÞaäüÍûßÚþ ƒ€=ŸyVõÊ©JoŸˆKmí|)#úu¿¶_‰=F¤ã˜A%‚Û¾I'P‰-³!ÂhCØ®ŠìÏ…÷éØo;ÝŠPèøJòÙØ‹*öçò;Bfˆø´2*-´.”`ÛØv(Eã„#£x)¶â¥pFHzŒ.LKmH–ÚÝK•úҌ·³3vk˜,Qr_æ£d*Ö¤céäæ7}–法— ”¼‰qŽÒ$¨<\z?‰è¶×Á~ð:HÚŠ¿j)=»|Œã$nyRð'\»5*î« D@xg„úho +HïM9]™ÑLç*¹7N£ðŽúø dý÷ýp‘º|ĆŠ¡I™\éÝ¥÷~0-=Ð_å·’šu2?.];©žÐê–º<O¨ßTQĸµû.°4×ÌXEÉÇ4/&SPÙoÔk¼j¡2ºí€ü-Šèˆ´{"ººÍ(¹¢ëJ
mÚXË:QB±®¯£á´»D—v4÷°tåêSl]¹åÚŸ¹{Ø]:Ò>üÿcϧdÂÀùË=:¢lÌlÓe"ߣ"qL’‰£áÛ‹OßΕ5)9_K9üã8Š# ‰hºÅ*T=jAÉ)–‡‘Ú¹w÷:R["ÇÁÖ-;awÎGgù¼Wr*ýŒ¡ÒÛ^Çl@0 ÏT š«¤å—CqCÈÇ}(LµaK3ÿÙ²À+O„îÒÅ"+Îûò‘Qœ0|î9,Bx¥¤•<¡ï-Ez)Ÿ¸~´ú¾ç¨ç=b ›0I|°5.Û¯g[¯hŠ[ØMAž”@ãõ3dç<ߌ [#Ê%NÜ=bðEÖ'ÙÍê–p³ì>sNÖxk‡ŠšrIè»üsPPO¼ÙŽøšO寞]…€Å@E½Ô3¬ïÊÊÐ]¦ sm{
‚†ÜR<uS¬#¾¼½ue LiQ°8—÷˜JSºøŠÇeÍúxzyJûÇnåäüWFÅÍ¥DZTd·àî=~#5GTµÂ›xWQUžÍ?Þ~xr~á±ëû ãs‡†Ñ-
NœI·8´VÞãv•kñé»ä«ÿÇò•/#_¹-_ÝÈW÷Ëпø¨ˆ=à_2¥ºñ×ÍBT¯(Å[ïßÍn¤«×ËÇ9·|D¶Ho(ëÓÚ«öªko²qºª²ðêßDÛUc놘®]èf«ó©äS¤Ár`ì.êé”pÐ ¿ëçù„¥ÉWWËÊç+Üó^<XŠ+ ¦D†'n7øW!ð¥Žóáìa™ùÅ}¬Ó:›ÓûþMa™Îçi_‘ü¤eI”ȧӬòÖópJÍZ^²“nˆÒ‚
«§RŽ +IFÕ]qû¶#_¤:fš‰EÄ„ËbÚó
+(¹iªq.gÙ_ûb©„òYĪmíþ<ñÂøßN•Biß1“k¢˜åU# MpM¾øìòb×¹^”˺Ácçõ~vÜ#Á"µñfzýml\Ø¿åöèÿüº®|ë~¦³‡û<{XCŸñ`;syï¬*K—è£[Û¦,ä3•w¥]?=üôÊyïÑ“²öB¢Ú¡=§ï?9áizþAÃC{öÿuÖfÒ¨ä±ìO"šdÃ/ +÷eÄæÊ
TÜ&–QÏÒÿZ†Tendstream endobj 1633 0 obj << /Type /Page @@ -6818,93 +6814,101 @@ endobj /Resources 1632 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1620 0 R -/Annots [ 1638 0 R 1639 0 R ] ->> endobj -1638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [519.8432 183.6871 539.579 195.7468] -/Subtype /Link -/A << /S /GoTo /D (lwresd) >> ->> endobj -1639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [84.0431 171.732 117.8035 183.7916] -/Subtype /Link -/A << /S /GoTo /D (lwresd) >> >> endobj 1635 0 obj << /D [1633 0 R /XYZ 85.0394 794.5015 null] >> endobj 450 0 obj << -/D [1633 0 R /XYZ 85.0394 402.0723 null] +/D [1633 0 R /XYZ 85.0394 189.8991 null] >> endobj 1636 0 obj << -/D [1633 0 R /XYZ 85.0394 375.8082 null] ->> endobj -454 0 obj << -/D [1633 0 R /XYZ 85.0394 235.594 null] ->> endobj -1637 0 obj << -/D [1633 0 R /XYZ 85.0394 203.5557 null] +/D [1633 0 R /XYZ 85.0394 163.5217 null] >> endobj 1632 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1642 0 obj << -/Length 1423 +1639 0 obj << +/Length 1989 /Filter /FlateDecode >> stream -xÚ¥X[sÛ(~÷¯ð£ó -èÊö)mn:Ût7uŸÒŒKØbª[Ê¥»ûßR¤DÉÚÎxÆÐá;÷šCõCs? -aw4–f)§R§Ÿ^ÍÊòGS™å
Û–6»$jB}aê‡]âVTZŠemdÄ
ú<èý´Õ\ }gG®êÖB¥¢¬¶_‡ÁW}½¦y®Ä<Í -ÙlY+2ÚõÔ_eaÛçSg[“lºúÎö³ËJ»rt¹ê‘OW)ïšzgmj•ÛYŒ‘cži¯(žïù6 -§þ +xÚ¥XKsã6¾ëWèHW0 +G«öÕÙü Τʙ*1—À a¡/}›Àÿ}‡1|¸b)K‚@¢(_®TÄâІ, ™ãœ{ÅscZÊÃM§;Sšª£ÇÏæÎe•wy]GW?·zcœ%9ò É€ÉDDÖÐíÖî„DÂâHa¼(CöOUI€E‚™²RíÁ5_ +/+ôm³oÎDì¡ÿÈíÀœ%*]ZŠ{ižLã–kúÕEÛS©Ó§M?E¾ÙvÏÿÙ©§lP8B°Ißû…üƘc©D2•øË0™Š"µ¤µf³$âzTü^|5–·µŸ$çD+æèƤ+4Zü€Åœƒ¾°Nu‰ò DÇ~Æ1S!—a˜“"™…f/´Kzw¢3H +w +Û›‹Ž«u +=ã]®‰QÕô‹Á•;ÑC¢²¿a·‡#™D +²Ðï[“ivY@M£ +¾â66êۺ̻ΚÂÑ:õ9ÏyQ…
bç°Ô¸aÜOg!#0aÂi"§íö'ÅÖü×ç³JB‡¡§Ü<Ï5˜Bÿ£S ÉØ÷ó*k‰¤T u +Æ%s'ÚѶ2ؘôYä3Ž77Á¡³²—fl(™ÃÞ„]aþ>£îÉœIN·®!±ÔŸØ|Òg ~›š4ßIè®Óév•Â?×ì–|@]oÝÏ›Üëxݵ-1zx€C-œ5çßã··uÛ¦Lÿôêûëtß^åÙøñ!ÏÞ®!Ë“vuã&ŽèWBŸ8Óhõ¾×'–á4s#[šö[ôX,~Çï¡Ã6m«w9úÑéÇ÷ÛëH“ACäx±z +i¾ÓÅ[õôÛ·-¥ßI¶odáS§ß‚þÕ:/Ìû3‘íËÝÛ_¸×a„¿f¹5iSÃ!éÏ^Ÿûp
¿6Ï|ËãÃHÿæÚ‡/þ°ûúq,ç¿ +Ê&qJœSbpòrøú}êúÿõ’\Fendstream endobj -1641 0 obj << +1638 0 obj << /Type /Page -/Contents 1642 0 R -/Resources 1640 0 R +/Contents 1639 0 R +/Resources 1637 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1620 0 R +/Annots [ 1642 0 R 1643 0 R ] +>> endobj +1642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [491.4967 682.6714 511.2325 694.731] +/Subtype /Link +/A << /S /GoTo /D (lwresd) >> >> endobj 1643 0 obj << -/D [1641 0 R /XYZ 56.6929 794.5015 null] +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [55.6967 670.7162 89.457 682.7759] +/Subtype /Link +/A << /S /GoTo /D (lwresd) >> +>> endobj +1640 0 obj << +/D [1638 0 R /XYZ 56.6929 794.5015 null] +>> endobj +454 0 obj << +/D [1638 0 R /XYZ 56.6929 731.9325 null] +>> endobj +1641 0 obj << +/D [1638 0 R /XYZ 56.6929 701.4683 null] >> endobj 458 0 obj << -/D [1641 0 R /XYZ 56.6929 687.8224 null] +/D [1638 0 R /XYZ 56.6929 475.6865 null] >> endobj 1644 0 obj << -/D [1641 0 R /XYZ 56.6929 663.4753 null] +/D [1638 0 R /XYZ 56.6929 450.9966 null] >> endobj 462 0 obj << -/D [1641 0 R /XYZ 56.6929 594.6899 null] +/D [1638 0 R /XYZ 56.6929 381.4304 null] >> endobj 1645 0 obj << -/D [1641 0 R /XYZ 56.6929 564.5686 null] +/D [1638 0 R /XYZ 56.6929 350.9662 null] >> endobj 466 0 obj << -/D [1641 0 R /XYZ 56.6929 531.8042 null] +/D [1638 0 R /XYZ 56.6929 317.4209 null] >> endobj 1646 0 obj << -/D [1641 0 R /XYZ 56.6929 504.5879 null] +/D [1638 0 R /XYZ 56.6929 289.8617 null] >> endobj -1640 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> +1637 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1649 0 obj << -/Length 1194 +/Length 1111 /Filter /FlateDecode >> stream -xÚ½X[s£6~÷¯à1îŒTnâ2û”M4;ÝlëºOiÆC@Äš -G¾NîT%nš¨Ðp¤lDC…šëêJ<1‘‘iUO4ùsòG
Øz»›Ú§2ˆÝîÐÔZjª]Óµ¹Ð2tc§àýXªz“„Ä^æ)M8æ²{‹ù’²eB?ÈöCá±04
ºéˆ<ÊHaà'^|@B3n÷æÉæwùÀ/iD|’u:cg˜šDÛ~#ZÛÃ~Î8¡Ép~,ôuCu@¶M±6|zÎ1 H)NšÜ¡{$ÉÄ? /!Çà 즆ŒÆ aˆNüj™þV‘Ú/¹T·ÓÅ#oÅí›AÂ9öN¼Çw»œ¾ö"xY½jÇézyF‡Q‹(}ö8 pÝ@UØŠ¦¹Pг»`IgÌž-ÖMÈXÎ3à%þŠ–r¶ßpýæºÜãò^5>D%¤çû8Í€Øi„á`øŠ…”m<ì‹YìÎÎB…„ñìˆïýKdÌʘý&Up§K/JeïSʲº¿h<ÈViBXÙÛ=þ=EŸ\¤Gžyþ³›kGm}Ûét‹£ £U£‹\e‘1ÿ® -BI¬Ãð4ß™+ÊëÁª¥éjzý(¥ñWX¨ÒÊúÇÒG§§:tZ<{¤Ó÷¤ÁtCÊ#Q§ƒ<%”ác¬¾ãQ§â@ô)üz£qõã—e¬ÇÅ
‰¿Þ¯Cò…œ/N%üÄH¶ž)*oe½ðŽ>s¶~›ä1"ÉÓp•¼(¢à
ø‡&¸›úöŽÀS²X ת´J¬"`Η±—ù«eDªä|:è׳7ajG0AuìKøžX›‡üFÚ=jdÌKxX¥ÓÑ8ï•Äã㎯DžŠrp쵓 ¬3êÝ:~‰,SÁ3>»g¼- š‚êŒ"OÖ‹ £"·kǽ„òá5¨LÄyæd(tY›ÙÖàÛ$[aNøhz?F¢L[Ñh¼)>ÞÖ&ȃ%U—jÑ34Œ×T|¾ñ¡5^ÉÐÏçb4n’Á}Ô)W;•ùKW›Î¼¯eypš3ÿ Öh~‘Ôl•ïe™o»ÐÐm$`¡mæõ§Î@ëE]1Ͳ¡aëf¯þ‹mã-Ï«O"ÛÔJÛè˜mÔØnëö½d¢#ˆt·¿¼.E=I ƦcšÃÙH¦Mõziœ'È)‹Ñ¤ýÝõ5íXèÔqÛ=Ö¡f®
uKÕh&9¢5¢XgEOß•ª`qÚsªÖÀo¾nmî¢M±G¯oRu½u“j¨tt×®Hž cŸy}/{Hý?=š -endstream +xÚ½Xßs£6~÷_Ácü ÊcÃô)—:inz¹ÖuŸÒŒGak"$N±}×ûß+,ÀààŒs´°ßî~Ú] Ù†¥~¶á{¦å#cŒLϲ=#L–±RÏîvñ(_õ·>̿ܺ#0ƒ±36æq
Ë7-ß·yôxuóûõŸóélϺ›Cà«÷¿iI /7Ÿnïïþ™]'£«ùýç-žMo§³éÃÍtlß³•¾S œP¸½ÿcªïîfן>]φOóƒé¼Š¥¯m¹y _O–©°?,Ó
|ÏبeÚAàÉ`书7rÝRBþª +=ê8#§0Ïü +É®{½³•Â‘ÊRE48ꡇŽkù@îRdŸŸd™PU”1ÒcjTgêð6æ` ErÙ«Æœ% ÂqŒ8¢a9ÉÿZžÕ>azn"AàRv‡ #* +¢pIz¸\¨¿@‚#(«9?í®j¥ì´kmØ„±g¨ò P%vŽbÛ©¢›4ã¤wŽ,Õ;ºä™Ê<HÃ5+è¬?}å386×æ{’C.Õâ“—zzNz0Q*Õ*’bŽzIÌøòè˜Ì¼¶c.ä‰ØˆŒx‘³ßô¥Lît£¨`ö1e\Vò|ð¤G…Ó4K{ûË÷.üdª¹ª>+ºùKåÆI[ßö`Žkù†¶Ñ=[‹ÃÆï$\™„¥×-öœæ’…"ÃX:ÚŠš&' 5Ž‚šp+µ5ãß©öÑ”KVÍÏÔ©d Í”‚˜4xEG§ +ìÞ~Q”¥j9
^Åu¡që<&Ûw4¶Á$ +«z=§_h}µ*¡•úÒè±ó+£Õ»wŒYð—Ÿk³…'—D}¢ôeI¤ñ»”Hl endobj 1648 0 obj << /Type /Page @@ -6921,14 +6925,16 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1653 0 obj << -/Length 1155 +/Length 1184 /Filter /FlateDecode >> stream -xÚµXËrÛ6Ýë+¸”: -×#d=š¹Û®Ö€Ý"P_õv>úñƦV -PLmh;A{€6X^ΤCZ~¤0$>¡çÌ©¥áÊŽüÙÙ',Î$(‘Ê¿÷¬ªža›#û6ôü¼n±fWœâBØèÿmZãè;'ˆøºR – ßø€Fæ/ãòÄlÈñüi™¥<ì°Õ„Ò´#§’=aúIöù•ˆwMD'áf+£Yøé5_cΑ<‚-ñgJäL÷ -°d);é¦:+Q¯ŒŸŠCü0˜XÒÂD›ƒìeˆ¶›7Û…ùuYË=Ú_
½úVîpeé˜öÐ÷ÉþÂÚ…¡>t|R‘ÊÕtæ»ë»Sêÿ¶%Œàendstream +xÚ½XÑrâ6}ç+ü‘*É–eMž²)I³ÓͶ”>¥Æ±Ep16k™dÙnÿ½22Ø6°†±%Yçž{t%] Hý°AmhsÂ
Æ-H¦†7ë ãEµÝupþ
XÊ_}v~¾5™Á!·‰mÇ%,"ÇÁÆÐìÚÀžB@ݛϷ÷w
®{Ìêï??ô +bΉ1ëXÔ„Ô2ÍuMØù³óÇ°ÔºêZ«F˜6©ÐÂ%m¤ åÐ6‰¹ð±l„ºnÆo`1÷ÝTèšóßO„”£™›z“QÈT×ÿw¥ŸO™ŠÀrJÉ>P0Ž“77ñƒèåbø9²7ÞLåT×.…ÅÉ(ŠëpÁ¤P©Xfq.Áõ_$¤1"ý¾¥‹W‡ Òd Ro1VºLÚ»¤Eµ\FéDÈ@^LïçÐõ¦“8¼\„,¤ +¶ììä2Á×qÂøÈà›8!‘ùG
y¤6ä¢{ö6’sá5@ðb•Žìö<4Õ[17u[ö¯Øá:‰hßY¦®7=‡½ +7 +¢pbJ<n’>7= +PwókR˜]×ÖÜÓ¢ÍÁäì[áâÊÜR‹“ãÍ…/!¥_ÂuLS 9©ÌIjí0__ïRÿŒ¿$<endstream endobj 1652 0 obj << /Type /Page @@ -6945,18 +6951,16 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1658 0 obj << -/Length 1536 +/Length 1094 /Filter /FlateDecode >> stream -xÚµ]s›8ðÝ¿‚GgæDßLŸÜÖé¥sMz©ûÔv<2Ȇ) -²÷zÿýv`°‰CÜ^ò õ²»ÚoD
þ©âZªfx¦âx¦jiÔRüõHSVðííˆV4¤&"mªW³Ñ‹kÃQ<Õ³u[™-[²\Us]ªÌ‚Ïã×N>̦÷WD·´±^ËÖƯnnßHŒ'—×w·×7o?ÝO®s<»¹»•èûéõô~zûzzE¨kQà×+ 0\ßü5•ÐÛûÉû÷“û«¯³w£é¬±¥m/Õ4äûèóWM Àìw#M5<×RvðCS©çéÊzdZ†j™†QcâÑÇÑßÀÖ×’µÏ–᪖«;=4iËTsUÏôű<Õ6t£ôàç+bkÚxÍHÎE¾'"Zs‰K6ëÏ%üR._ÑbØ–Pªz–¥·Edi.$esü1€‡A$¢4a1Yæéš°å—=/æi>OÒsûÓs²|æ‡üÂ:Šå, @FÀ·‘_ É˜ç «½3@:µÔ‚ÑŠ
¡y‘q°]k&ü¬Y–ñ€€‘9/ -^6@›ež$MÈÖ”è/š¥õzé§\9gßHÀ¦~ÃAŸ·ŸDüÓÄ M˜—vÍ㨨²æß¾ -þ ~æl‡7X_gbÿH[ÒÃKöGºËàí¤ /žŸ6z_U$J<BógÙôƒç)IRR¤Œ_ªÐ‘˜_œÏx‘ÆÛ:sÊ¡5݈‹r1àÉž°¤Øá°Ò¯ž:„;#ÏD9{èŽ/ÏÆ®R±c…zEþ~5Àè,M -N²4Žü}GÜ!z¦.Ú½˜W0R$ƒ±JÓ ƒÌXQˆ0ßtÉC»¡×È4`‚uPþ!¹Û;îßê_Ò®CE´Ó®9üÎ9ÿƒOÅåÌŒöø NLGuuÍ>Øàã‹k*
z‰¾¶4Õu4«$Âë5µá®´4Ãñ¢·é‚ ¾†Ã@þ|ÿhšž”—9‰Ë˜>lÅ«½ôÖݶÒmÕ¦ºÔgòF¡Öî¿žg1ÒÔœ -3@’aX]ÑRÎ0ÆÇB›L®«8]àiŒðÁ,ø!R\Íñ‚W¦9B‹½\ñ¥B•à,Œ*¶£
׬"ÆËË«}Ê$‘/KXªM»‘Áì7l{ÌpqÆp0¡oW›œIïâ7ÄÄô°-o|³”HB&QwÌ%#*‡hÈÇÚ®êz}Ú³€šsìÙ?@¶gA”å^qÃEœúß$¸‹ðq -Ÿøzâ©5íô—_ϬÐÁ
×Õû3ÃÀJÑ=§V -lYÇš7OŽ§ªÿò¯¿Žendstream +xÚXÝ“¢8÷¯àQÂñ! +5Oî¬3çÖ³çyO³–•¨©Â&ÁÕÙÝÿýš/eÐÁ² !ýKw§û—&º¢ÁOWlKÕL§¯¾jiº¥¸AGSÖðî±£çcP1•G}˜wþx0‡Š£:c ÌW%,[Õl[WæÞs÷þÏÑ—ùxÖC†¥ujYûa2ý˜õ8Ùíþiú0yüw6ê
ûÝùäišuÏÆãÙxz?î!ݶt7r„ß<LþgO³ÑçÏ£Yo1ÿÔ϶”íÕ531ä[çy¡)˜ý©£©¦c[Êwhhªî8†tú–©Z}Ó,züÎ?¿€¥·©hÿ,ÓV-ÛÖ8°¯—¨k¶êô¡2´u`fêÁçhZ—†’ðv JŸ¶ØÏúÃ8x!ü.k,{aR¤ëªcYF@H,©Ô×"H1Ÿ÷YëGvÃžÇ‰Ë +¥W”a\Ƕ…ªhŹ 1î^AK{–""nÖÎ
|¾øVUÕÂåÛ¯K +ø8 HÊÞ¬¸ À;ºØÝ46N…¯•t`ñ©Gå¾6rGeEÅ?—JpáÒpBæqŽÙP»%¹ców€’ûˆ4©.
gLŠ–^Ždên•O´'bÉø2d•8ÛR¯£Öœ|‹‰Í¥«‰Î –Èå$"àœkHGV°€$ipå +@¬_R£‰äû R=ÚBTL‰€ör:–I£Á´ÀŠTRb8ŽåæÚõ8ÅJ)¤X5Æpè†G¶´ˆËÍ2Ä…wZ™ ¯¤ÈÛWrNÍ—Q`Ç@Ž"â¡|)H£MÚ¬¨tˆ0\ˆ…hÛϺ¿j–V륟Ùíòå?ä…0©{Ðè]š¯ÙNØ +üâ„ý5ãTn‚<ÃÀ1
«éTÉ"KUshôk]Q{R.—ø¢º%eìOÂD¿«÷µÄõ N«½æ8g•¾}7Ê9E@íéÂ]]n\tb–H¾)¬ÿŠq ÉcbJ²“?9þžd\cÍHÁ—C=4ÿ
»40'“e!7†M‘GĬ?yjWƼÎ࣠†_díKª˜ÖõÙÉ%˜¿-"'-ZY,/GPÝY‰i©ÉGÍÉüóio>G92õ,lÛ8‘FéˆÄÔªm8ÃB©Ä\Ë:Õüpàr®úÿn³ü8endstream endobj 1657 0 obj << /Type /Page @@ -6968,37 +6972,29 @@ endobj 1659 0 obj << /D [1657 0 R /XYZ 85.0394 794.5015 null] >> endobj -470 0 obj << -/D [1657 0 R /XYZ 85.0394 179.8868 null] ->> endobj -1326 0 obj << -/D [1657 0 R /XYZ 85.0394 148.102 null] ->> endobj 1656 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R >> +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1662 0 obj << -/Length 3141 +/Length 2714 /Filter /FlateDecode >> stream -xÚ½ZÝÛ6ß¿ÂèK´@ÄðC”¨öi7Ý´)Úä.Ù»{hœl˱[r%y7ÛÃýï7Ã!õá¥7 -ü j8‡3?ÎP?±Ð)Ks™/²<aš½Xí/øâôýp!Oì™â)×õíÅ‹W*[ä,Oeº¸ÝLdÆ‹Ûõ¯QÊ$» <zùöÍ«×?üãÝÕe–D·¯ß¾¹Œ¥æÑ«×?ßPë‡wW¿ürõî2F‹èåW»½yG]©“qýúÍ÷DÉéqFè»›W7ïnÞ¼¼¹üýö§‹›Ûa-Óõ -®p!\üú;_¬aÙ?]p¦r£÷ð™Ès¹Ø_$Z1(å)»‹÷NzíÐ ýgR¥2`@)'4‚é<׋Lç,URYõÖÄÓhU¬¶Uýá9¼‰4ê·MWRÇ]UÞwž§ÆFuÛ¢½&r,…£ÂøÝ¥ jf%:†¾qÅ£ìË}Ó>¸á¤Cš®«–;G®ö;IsçÒ”]³;öUS£íÁ -e7r7¤5DZº÷!\×75‹þµ-ëqxÀ¹ -‰]55*ùáèb–ôñPäsäI¹‰ùÜ‘F|Ñ ÿñ -§LA‡¯““Ëo=¹/0:JÑ.«¾-Z§)ú®ÃPˆD8àüŸnåUÝ€òà#Jç0ÚJ¦0O9l%t¢ylí
ï~[¤ÍÒ—]ÙSýÕvÙ‚ß±‰„鎡@êõN -ˆD‘óÍ0~P^‹éK¿¥7÷ê Í«çô¼vO›ì`ãå)¡©1d혓žë0rP¨HÐ| -…†ò1£G(Ìï©ÔqÆM“ζ¯HmDš¤§©
H·.;jáÀÐØeáã7®¹ÅOๆñ¬£â`ËÁ#ªÝÐ 1á)‰öv¡’Àù±ÇÆÑý¿¥U$³5;ƒ(0-9æRq -ÙÎ7WßPã?vB?Íl^¼ J)±5ŽßŽTõ®a=/å|ÌHN÷•1§'³Ñêþû]hÌDã뿦q‹&wT´7>¯žugu}Å[î»à2ä—-ãåSËÿWÃO5> ‚8è?ÿ¼Ô:r rЯè©5:x-è1 -ˆœ½—±iðÜ°±ôGê
ñ -UO¿F‰ëª?C]j”ð£~.ËZ‡Š\Èó”ñSÿY¶M\7q×çT…MÐÒ‹öéYúq9ËÎÞ4½Í,§éHâ"èKGðùf80âFaB|ìÜ@¯Í±£8JpPùð(ó«ž„£íÆâ(—ëÊAÍ: 2øA-ÌÖ§9|B9¼¦~žÀÇI&]ÞÄ1oS0Ø*nÅ -Ì'[—ˆ7µë8£¤±ŽÝ汜q-ïIé5Ù9ç~A¹ ZI.)=¶î=4qŽþÕÝ;1‚ªM’WRÃÐúã¥!eM}c99c'in¦tb!ãíÓ¾øhÓH˜¥¬;פ|
OŸsò¨¼³wÆÕGÝv¿9îpWàœ}ÝÕ–SFDÅz_Õà'PK ´LEÏ\; èGËj‡˜ß?P¥|0YÝÇ—?*2¿ÀßV¥+¥*W!LRP¯]Œ–r%¡Ýµ—&:†‹0W÷.§…ôìÒX°Lˆt!ÓÎ.Î\òS<å¢;^¸$¸È-œïxÝz2sžÁyfÌÓ3{¦ÀÌS,R¸5›šR©¡®o?’cÂËÚåtÀñÞ>•JEíK<í/” -{Ñ@“Ü°ÏK‹eU¯]b?ôÌöÏ -|ôQ,ü¤*JÎV1m½^1Üñ -`hŒñš›3ñª¥ó4lHÄáu¼w†ÁuCDŸB{}2ߘu¸¡Ì$ø„ɆÊ|Üe†qðFÀûáÃÖ¼÷Uç•s—eLbþ2™÷?^IRb€²}âûÚx‡ì*ˆÎÿ¡Àgö6õVž²D Ÿ9°ý™hW†) -ÇV~‚bºÊŠb½.×gcˆG%?S3Œ<çÌñ©`ü ±ÿ4¤8@˜€óõ‰YžÓiU>ƒHºr +xÚ½ksÛ8î{~…g¿T™©TêA=¶Ÿ’nÒëÎn{—ÍÞ}èv:´Eǚʒ+ÊIÓ»ûï$-ÉJÒÞk:A€ žtÃႧAZDÅ"+’€³/VÛ¶¸o¯OBCã["Hu~}òâ2ÎEP¤Qº¸^xåËópq]¾÷Ò +Nó^½{{ùæõïWg§Yâ]¿y÷öÔ8ó.ßürAÐ뫳_=»:õÃœ‡Þ«?ýùúâŠ>¥†Çù›·?¦ ÇL¯../®.Þ¾º8ýpýóÉŵÛËp¿!‹q#ŸOÞ`‹¶ýó â"ç‹;xaAXÑb{’ð8àI[L}òÛÉ_ÃÁW½tÖ~!¢8f˜„æ,H°Êx¤qk¾?õSƼR6÷¾hÔì|Q–TJ*úôwzìÇèW›u¥zÂÿ“†ü²’»Þ_wív´º[y´æÃËh@Ø…†AÁyô Ju%¦ +Ͳüï«›Þµ’þ®«ÕýˆÝ׶‘‘§^ÅA‡n¸„C.ÃÅ7Õlü‡Ùj¥Ä²–å¹Jõ›n?B6_Êv+ªñò¦-E/F¨•ÖŠ˜<¾ÑÕ¾S ›ß6µQõ^ªm÷±iíò¡‘·â‹1Šß÷µQe¿]ÊnDýRËô'Ö!ÑãSûhðÔ¹,;)>ùeî¾úUã7Ê/Û^=²ßl?É‚<bÙdÛÚ&/.£páÐk< Žâ0s©-L!]1àÖîú +¼ÒÏo½èåV6=½þ$ÿ`,j*¤ ŒhJ~WâFYÑ €¨ˆ,LHŸët +ˆÂ<(Š"b¤±3‹!éÅqbèÔ@¹8ö”DS!´ßÑó¦n—¢&ø°-xé[|&ÞRš +#¡å==1?^o*³l"p+±Øí¤èŒíO(Z}ÎQíp|2(qšz™·j´í;d]ü†˜Z‚)/¼7kBöpƒ0÷$-Då
n4cØ4ò¢Ÿ¶l ˧–}¼§L²œQà²nWŸ¼«ú
QH±ÚŽh †£¡ÏhxDT½2±ÊÒ çE1™R®Å¾6NwWÕ5Aú¸à‰ÇÄ0ÈÂ0]ð¤ +’ªÉK.¿pпƒÔ £›Ýñx”„x¤“`µ0‹ñ„\qDÞ¯Ži ¤ +¯Ù[Ô8¹Í«¸^§Ú1ÒuÊÈ£²‚P»vtJŽ3Ü„ËJÚ>Æ&Ó.‘Æ‚¦Y †Ì +fΦ£FBAî¬ï‡ë×údpa;a jcÒ,8XË´¾ÚL“™híß5:eáyo·ºbñL§ÇèÐð9¬ÛðŠu›%®Væ®Ý×%K9^+°Ap ¶r>)bPœœÄ`®†\»Ò@ånЗ•m#Ç%EûÈú~PWfÉ'PŠäßI~Â(#èáZ~WºìÙ“ÿ2Ï*-ºeÕw¢3š¢óš +¡E!ŠÇ9ô¬iuç
ýŠ«Äh¬(=´ôQwä‘éÅàÝžKD}`Ô~I-1Àè±ú“>2@Ø#p2¤¯Ö+ +»Äe$ªÝÒ¢CãU˜ðñ±?¶Ùñàÿ?Ò.FWyv!ˆ +0õ¡™Òw?œý`ï©P 5ÿHÞ‹DBM%B‡õz®@ ²÷ÚóôÅ’›+&ç&Pg¥ÑÇÔÕŸ?¦qø¤ÆšÜ`{susöL=¨stì+Ör/¿cát¯þŸ†5|8¾j?ë?=åܳ3]ú‰ž a¢ƒWA—èÌ…ÊÚA°°ƒ`áÁb0÷AƒÞ.‡ºK™éDkzÊ“#Mhþ +]š0ÃôsÃ3S.4zqnE•]ë7¯Zñªï¿,kÛŸ ‹ÆöÛ¶×EbcxÚ$&¤¿4ÛÐj”FLÌ*l‰÷Ê,„øZï2Pÿƒ‹äýQëcV3ˆGý磙À,+“k¹zq×Ã;µ°_vñ uñüpÁwháý$‹LãÈCãÃb¸fKi`,¬¤Û~óáåèÖ!ÝÈ2ÚPøsõ뎔.Éγ*Bš&eºÒ}gÞçè`ø{¢Åt·W˜±
S +
ÊÓã_%Ì/æǪÿh™~Õendstream endobj 1661 0 obj << /Type /Page @@ -7010,31 +7006,38 @@ endobj 1663 0 obj << /D [1661 0 R /XYZ 56.6929 794.5015 null] >> endobj +470 0 obj << +/D [1661 0 R /XYZ 56.6929 648.6893 null] +>> endobj +1326 0 obj << +/D [1661 0 R /XYZ 56.6929 618.5026 null] +>> endobj 1660 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F53 1313 0 R /F41 1218 0 R /F39 1161 0 R >> +/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1666 0 obj << -/Length 3769 +/Length 3727 /Filter /FlateDecode >> stream -xÚ½[ÝsÛ6÷_á·“ç"Ÿ$1÷”&nêöšölÝÜÜ´} DÚæD"‘Jâÿþv± -|Ú_ñ|Ñ>싼»”jqÓà+æA‹ù¼‚ß”/š–ž»ê©Ø}…okðx
•%Rj”
goŠ]U.¿ÞW{ÇË£AX£c¡UêŽ~›ª*«òo(‚XÔ½£ÞšM_·M±ûçx€Y¬õ¶w¤¦w2÷VÜË¥`<1ÔÆáWkä¤íªýg¶=9Ù\–0
v—ñ,ɸÓÆ옖1íŸ2fÏ…Rô«çåC×Oõš}±‹À3žÈT¿ Càšb`YšH•Ž¤X¦–’§‹n¿ÑÔrÂØö¯Œ‰ã@åâ„lqßî‰òþîn¹º»yïúŸJ0—‹å‹›{7úw[ín%µ=«zš³hJÇê¡MLÓD1¦†›è4·±†6Óôu±…]U‚LCI°àž 0_ôh×Jƒ ðP5Ôãd¥‡/õÖÍ°®ˆRl·í—ª$â—†¹y&ÈH”]ÑoëæÈŸöu³©Ÿ‚XnMoœÌ¿·î©ÚÔ¨o»'íìa¦©LriÎÛeÄ4o–žil•›}ÐëØ2ah¦ÎËàyNeX¥aI& <ÅBX£„ظÍao]ŸÆ{4ÚÛz¬7®ÙÇ[ÿ¦öc{Ø–Ô.À³l0®Y -¼vG-ZäÓ¡êzØ k€ Î,KåÐ -¡œóH'–†ˆ¥RÞ}¸{=¡k!ƒ°‡˜È’²ÝèNõœAÒayê¸qaû6ébueÄ¢%ÉljÁ†÷¥W¨ÃˆDKágŠò„b:±Ð2¶ïY$`mü4»Cçì¯Øv-µÖ%¸®úþè+H÷{lÇÚy[íG“¸4‚öb³Á^g*aÆÈóÑ>æš÷+¨ï¨£AW2áú…µ=ÓÄÚƒ0¯ò Çhqr3ÀkN - Ô"™„e©gª¾n‹æÁFL0Ë·+ž©Ñîi¹@°vŠ
kÔ÷ÏÔíi -º«ƒ^-¿ÅÐœ¢ ‘3FmÎù¦=n ’)#V¼ý+Rg,Ñ"K‡ -¢}6™[[v›á7t
¶Ùä”(°ƒ0¶ÖÕDÌâ©N¸2¾bñ{‘2çÍ÷5ΈPôôjæ g•ëÌMð׉5 ed‡§ÙÒdZFÉ'ƒäó¼åþKÝUNK2ƒr0çf×HÒï„”NK2=v
´¤%èpZ‚ÖŒ–`EBìpE»#µ<V_©QÖXžMhˆ)h}VCàæiH§Æ(ü®Å o¶)ºª{Ežíðõȉ–R±Dq9J¬´°ÕáÄâ"4àßÄH‘J
¹‹IHðJÉ¿tDòA
ùpW„Ñ]dq°µ~»é±i›eõµ„†‰ŒÝa}œÊ,¶õGWÜzñ/äSú ’s
~†¡œ«D -ÐÁï8ª‰Éó|ú bf\ÆSNÄ}ž'š¬l~Ë]„˜€°M¹ðÖqv´\®ó!¦àûr3‹çö€82v -6òÄ\èUîÛPßO½WÍfÛvþ^Õ—e{ ’ÚŸ½²ž ¡¸FÉô|¹æChà²8 -/8±vœ¤J'cÒó® ñ@Ø‘#(Ýj§[í¬~û+¾ðÁfµ÷£Ë?í!ê ÿÓó÷u:ŠžZÇCxØŒ.GµvfêD$‹lÝeÌ|h#´k³oë7ÛáÍ6º…™ª²¡€V©OÁG˜6júŒRgñåÿéæhpN¦UN¡g
/é™P/vÌ5oØËâ ‘$žð0ظ³"® †çE`Ñyª‡BP¦c*Æðd1s&Š„ÿ˜:F -!¤‚c‡HÅ}w)}D*©œ±DÐ4g|h‰sÒ -\/Èq:ÛùÐ!K³N˜c®3¡ÃsÙkê¦ÄSÄó)Ñœ pMH0‘ÅPʉ™ŒsbF©=+’Í3ðë¾üpz?ýJqi‘2ÛàÐQ’Ê”?3Åõc®Kß·~žº¥æÞÇÇãýdñE$¦%¨^ïªH4:¦6"
ÝRèݺÎY Ÿ>“ÖxÕÉ|â+›®«6ËmÛ~,:TÁDVÂû^æ/Ôº§`Œá³7éçb[—ô%ÎĬ -qák'w0ÉÁ¡û¢Þv6+—¹ÏÇâ$ûSnèŠò1Ÿ‰‚hà*\=×ð$´éÄnóK_Æ̈š%"Kùß¡™Î|†ê˜è³Í¾mûYg“&)àîs«¦Óå‡9Z%™óÁú+ÿ
XäiŠÊxúfÌ‚¯ÅÄ -ŽÉ¢FœÑš9#•*‘Œî6ŽàÑ+yú -Så©üŸ’&gDzéXÉé?UŸ0øëÌÿOüïø©y>wB$Yšä^Ñ …‚ël,yøtþTôÿ -Oendstream +xÚ¥ksã¶ñ»…¿…žžpx’ÀôÓ=|7Í¥½S§ÓI2SJ¢-ÎI¤#Rçs}w± +®p#¿]üü+¿ÜÀ¶ÿvÁ™rÖ\>ÀgÂ9y¹¿ÐF1£•ŠÝŧ‹vfý«sòÓÆ2#uz¹0’ÙÌΙ3n@h‹L–JÕYŠ9!G,ò¦<ë¶><N·+¤aÎu9\ô„t‡5C[hÅ™ËÒtL|¹-®Jšä¡>|.«;z +¨U]-òUSïŽmÀ½ÏÛm•ï‹uRV“µÖuõçòîxÈÛ²³Ù(—Ë… ;Ç sÆ‚>”» j¬p’6ÿ\TÊú§½ì`Ý/Aü¶Âp[´~Ó¸c!„ß•AFˆQÜæÇ]K„võ:r +S·õûºii¤ã‘ëc{pÚT/ØÃ=¾|§‡ÊÂãV¥ß* +oÃÇŠPGgjvjì1aMvÇ‚[ÃÚ$Žf7©¬Lnn !ŸÃ-VÕ-
šûb]ânŠÍ€XN§‰S6Í® +VÀ xa6hkÂýïŒ TªXÊy¶Çæ +³Ê=í©HçUDB’Ÿ‹ÇÅy_¥á$×OÒîN‰<•OÅ…Qÿ÷Ö›µàÉ}q +Ô-=ï“ŽES#kŒÈ”AqÊ”rƒdÎó±¡i”'Λ‚ +—
+òÊ+QÚíÇ÷(Yà!ý‡.)roLÔ‡8ZHÐÏ4ùôý+ø£1Dˆ°FèëW
üÝÖ»]ýàÍ—~ìß…':Åâk[Tè"ç¼2ÀVÆcû3î]ô¸f˜nÎzP.ÁˆSõŒ`=áA#Vgt‹¯Þ§^SeŒ§=I»Ã:%À6jɸ¹¨/)ªƒÃê¢:¸·†9iÑsI¸sLBiävÓÒ”%Ã`ö‘5ÚÐIÀ9K +Þ×$ï¼4 +V¹„R©Z—÷[扗§“ÕѨœtgŠé4{¦$bWÌkª˜ëC'Ú©r»™~†ˆ4ÃÆH5!w̤Tc>¼j»Þðñiz⣣ñ#ÊuqØöïSRåÇ¡Åq~Ä-×¾žEe&8""¿‹¦-B92Í2ˆ(#5ô¡[„JZÂ;½- 8ø¹¶^×;0é\ò¦¯_wá庢‘M~(+*ë†æý
xõƃÈe@É¿äå._íÞ„<¹©Èf”/&ß^sÝ”
˜é²ëJŠ._×®3×¾lÇ׿ˮÔÐÈ{¼›¾ßµ"½g~Áïi‚¬ÌÄÎB¨ªú°û||¾Íø²h×/?V†õ~vç
KµÐƒ$ÖÄ&iª‡}QxêücªIµ¦=«T…\V'5ˆãPn6ExñØP¹ŸÆ
f£ +`ÉÞýEJ¤h‡ù¿“F¨õ^ÎÈšª«åQئÞçå\W7ËXÆmLa°ßMš,¯œÄþ5ræ¢-½˜É=œdFÉ¸Ò Zhn˜¿ê÷Y† ¯TÆÅeöÇ&è_¾kjº\!Lù–U°„G¿½ºíqMK‘h¸H&¨ÿ'pÞås
~ÒÊg\þ +Ìf7ô†?†SåRR‚ñ¨Ë®ÿ3×3˘€ê wH 4uq¡
gQçµ›òzWú¦ +¼FB±l‹¯4Ø”wX¤Íµ…4ŒyRB`îIȤΗ®È|¸žTØÖjèÄdgjhìœ1-Ô$°a/Ãâ’A6wÒ_h¸p¡Û§¶O ü®!Ptjˆ@¢¹ ˆ®7à97=âu@ñµ„ˆn9À¥WýR.Ù•ŸC‰Ùm(†ô‘'ìGj8#¿écÉœÅË…¹O
ÝŠ‹á’3~_Xf„r=åxä}'wšVÀ1YµãÉó1òrcÇ9…Û÷÷¿Ü%õó`ˆØ]"Ê]ÌÆÞç~&äR0ñ%?”1±æ1;àáàñ†ÀÀ_Ñe1T¯ÇjW4áÝŽjô¥TDXfe:¹òÿ†L"rûûÉD{õL?oˆu>aè°zs݆+›Ó~ž~štDš!-O»yjL{Il–¼¥;C_3/¾/v»½·¦…tZHßîÊ®E +ŸÒ&ü75‘:SA€gÖ¥“´ ¿f \mVóÉ“4©ÔHh«·Ó²xüÙÕÐG]¡rîïS„˦÷»ÃVÊB.5†àƒ³ù³™O·Þ¢_ЫÂøÛ-˜D©¤¨…lVT€lµÏÝÑe°T–>ã\HO|²|ç£Ø7mÞBÆY®›sV’jpÞÎ=ÉB‡tÊÃÈJRÇR+䈉eüƧ7|ò«á'@ÝUmƒ¸!ãP¶ñ$Ø}aÑïäwá½~·a:ßAö݆O‡n}TWÅ0ãTFžíßÿ†Ç:7TaŽd®º² +„7°ª3ƒaèùŒ_F;þÓ÷_cãm =×ûQ<…̬40…Œ›lʹ»2Vf3¬ÿãu‚Àendstream endobj 1665 0 obj << /Type /Page @@ -7042,86 +7045,78 @@ endobj /Resources 1664 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1655 0 R -/Annots [ 1668 0 R ] ->> endobj -1668 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [250.9056 159.9586 314.5963 169.3682] -/Subtype /Link -/A << /S /GoTo /D (statsfile) >> >> endobj 1667 0 obj << /D [1665 0 R /XYZ 85.0394 794.5015 null] >> endobj 1664 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F48 1238 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F39 1161 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1672 0 obj << -/Length 3345 +1670 0 obj << +/Length 3701 /Filter /FlateDecode >> stream -xÚ¥ZÝsÛ6÷_¡¹—£g*š ~LŸÜXÉ¥W;=Ûé\§é%B§üPIÊŽïæþ÷ÛÅ.(’¢œ¹¹d‹°Üýa?@‰…ÅB…n˜øÉ"J¤«<¡›òÂ[<Á؇Á<KË´rýðxqõ>ˆ‰›„~¸xÜÖŠ]/ŽÅâ1ûÍ ]ß½„<çݧ»÷?|¾¿¾Œ¤óøñÓÝåÒWžóþãO+j}¸¿¾½½¾¿\ŠX çÝß®~\ÝÓPÈküðñî†( =Î,z¿z¿º_ݽ[]þþøãÅê±—áû -/Àùóâ·ß½E¯ýã…çI¬/Ðñ\‘$þ¢¼*p•K)..þÑ/85Sçô'Uì*_† ÉÀ
‘ÌkY¸‘ÀIáŠ0 {-ûbNË–µÜê¶Íëjù‡~ýây~¡§ï-|‰Ò‹áâ'"ô\32ø„Ÿ¸"ö±;}¹„ïìÓnW¥%÷ê-=;;Ìšv^u5µ^vùfÇœ–Ôäó¥ôx|øøZüÆÔצƓ®t“v:£îúõ0Q` <×}xcå̘køŠË ‰ÜP¨á&Jù†}[7°´òC«©1»‡L\?Œ#»G{ØgiÇ–ÅÌvÊÅ+É -§¥]äP,!•ë!þh›«ç´¹jÕ•Q«ÔEmžJ(”r¥ˆü±ˆ_<å=è¸ÅÂUI¢‘ˆ\_%æœÑXó´ Æý -‚ '|>B›dÚ§M—oEÚLYÞnÅ> #Ã)¤D”¸Qä[ý¢–ûºÈ7sæ -AqÈÌm¼¥®º¿ZTÄCìÀ*-öŠz“Î!4\/ñ,tê½Q:°áIIÜ؇rzRЗб£©—W0P¦d2$¤ëúÐQ³Ûå-µ¶:í4͈‰7ξ2Œ¤Çp˜ßt¨C®óµçš8Tãɦx -$¬ÄoÐsÍH0ÂS -”™Â,Î'Ðá8Å5Ÿ€.°q
xŽq
ørã¾À*,(¥˜ÙÎLE€Ë3éY¯ÓyxY&Üy_7ÝtÇHíaæ[;ZžÓGáÎseÈÑŽ”cy±óùæç«Çw?SÇÈÈ©åZ7Dí,o«›gK¸µÄJ©$?çÕ‘Èrfj•õÔ›»šº7Sê®ÞÔïÕ¤[¤¡7è[bidEsAŠè…p}‰ŠÈ—¨Ø@„Ö‡4Ad㌶´2Í«â•iUb¾‡#s¢þ‘¥Óm¯ð=ôB‰ä”áК7D2’>q¬%òšÝ.¬œs0|É‹‚¢9Sh¬µq·Œã†ç¦.ËC•oLVˆ„ð6 -2驨×)/ ª?mðO± -ão€{Àõº-¾Q0¨Ëe¦ŸóÍlE…‘x{ûžkfÿiEhÆ´‹ÄsÚš²
÷1UÂ'¤4Åý+P¿ø\3#À=cŠåè×$@Ýèb(óœÕt1>÷M^¦M^0¹Ò:³«Äaô°zÇîΫŒ“1âë=V& -ÑMÌÑcÁ
1çEºi‰UÜÕ{"úY<½Æœ¶åèÛÊ fP°ª;ÂS§BLë4ã§Idj1µÂM݇ŒígÆíƒ D†ÐÌ‚7Tø# -G‘nY=ªdñ¹æÑ2Íôx„“—#d7/º÷}fä•žGMRŸÕ >—‰çs§£3ù9Ü(Ÿ–Hýë`§ã\„>ŽZ.ÍcÔ›¶aùkzžX‰\m°b7'JŽ’Œ¶å\ ÁÁ£ß–ŸIMîþyóéöúãÝ©Gh‡G¼~Î3OØ‘¼»»¾]ñxY?ëQJ»I!2ðDx5“©…fÏ c3†ž5cH))µú²Ë²¢Ôv°Äà]^dÄwœwüli„.pRñ’¾òû¬`Š/ì8á:Ý”y¥gSÀf7(€y¼š6”nFåÐ<&¹Ø#}AcøòØgp@‹Ä7´f2‰_Òr™|I9Ÿ®‰†¥·„% @ÁåÂ'o•µ<¯G^ -Öñ×Ñèeª¶Lhu³ÎŽIöÀ˜µf½ó @ô{ß÷ghl)%•sm–k-¯Ù˜AÉOŽ§š§›w¦57Œkb¿]l•ì'ãeù’2zi^þóÒ\Ý@?··>©É?©$i™¶ÙéÍmO}<arÛõwMìãÉÑå~ùë^Çùä¬ÎåXeüÒsŸ/`17w®¬$|j¬×†µæ#Ç.;›
y™icœ¿”Vl‚ÄàÂ…CÒ eƒÞi“[®Ñ §Ë½·Ä™‡YUUSûä›õ:zÈ$}HádÈy5å 3Àe—9R -WÅg‚æ1Ç>‰¿×w¿ò}ÇŒòîjƒ N£.¹Eɤ/‡È´ 4F±ú,-´PMÚ}bâ瘛պá7ÃÐü ?%üÒcCüü€ÿóžTá÷íç‡Õç[lQÉÀ>42ù%µ,¥â<v‚6¾+ ¸3Àxøå9”û°`èyοÍr2rcß‹Æ‹ÎÖfRŸÓ -æñ—Lÿå{nÏ}óÐöÍòÐêCi»ÿù¾ÿprº5
ÎUOQäúQøâiÀôƯ?˜ÉÜ¥ç-^0/ûLíéçoPå©7è™N%üŽ\)E<á†DÀ+vûÁ0}K¤¾$5ƒi͘IB®a‹úå[+R>º”pn¡ -¶…w¨ÜXúÁøàî‹Ùïê¡+db?«Ïërúa&v!\ûÓë|¶Ó¡Ç_¿Ð- DÂO½ëèÝDY·ö -ɾÛÆsÖÇ÷Ÿöû"gG;÷£¦@¹øK¤ãÂ?èÿýƒ§ã¯Á -e“+cX„…BM©øô``ú3¢ÿ•MÇÚendstream +xÚ½]sÛ¸ñÝ¿Âo'ÏD0$8}ò%NêëÅIc_§»{ DÚæœDêHÊŽû뻋 ðCrg:Ód‹%°Øï]ŸGð—Ÿ«„%™ÈÎÓ,f*âê|½=‹ÎaîÓ·8K‡´±~¼?»ü(ÓóŒe‰HÎ4‹´æç÷ů‹„ v+D‹÷_n?Þ|úåÛÕE/îo¾Ü^,…Šo~¾¦Ñ§oWŸ?_}»Xrøâý_¯¾Þ_£©Ä®ñãÍí‚dôsdÑoׯ¿]ß¾¿¾øýþ§³ë{–ð¼<’x?Ï~ý=:/àØ?ELfZ¿ÀCÄx–‰óíY¬$S±”²9»;û»_0˜5¯Îñ/Vš)'ÀIɤäÙ<—9K9¤4æŒ'Yâ¹,ø—ryWËߢHlÊñuÆ´Öò<\t²µCšÙZ[Ï4N¶¾*/–R¦‹]Þ?ÕùÖ<éEó@ÐÞM[ò̤veû\¶4~i«¾ì¡ê;»h{Áa±uÙYÀÍ‹Q£J¤bqc7ª›Þ®¹+×îVï + KÎY¦”0“Ïy{ÙîëK<tAÿ3:`—)‹uÛUò$É,ç`ðÕ*<`Õlß•V¯4cyòØæ[‹Ó?å=ͽäuoa
Aº²¶ïwÕco:?mŽæI³G#«5Z-Ú½Ø×uU?âs¼ ㌘'æñâùþðŠ¨Ä¯<‰YŠŒ‹Æúj«›ºœá[™J¸¶/U—¯6¨"øŠ%1FUs‚®âóa£xñ›©Ûr:ûRm6]•Ä!&y:’<ªj_Ö€š‰EŽü¥Á+ø¢ü^u=±Àx43°«Ãhe!Få¶yÍ&Jµ¸mz;gd:e¤P1‹Séy„qB±$Ò"¡*éçòõ¥1[‰ÙN€A<AY[<#ñCG,Aù² £<к%ya³/üÒò0(ëõ¦1úl¦kú-šýjc_ùsèØÄm[ߘ$‚e’óÓ4Ä:î@=ž -×û¶™q£œ§,Šqš5CÂÀ`žNÕã„R'Å'£Ö +þ‚/,Ì+r† ¼Ešq±ßîºÑüŸûVh«ÒOä=òƒÔÔAu¿y%=[èå ôŸœ#D>fC¨ê®7¾cÝ;q£C"qÓog_*8ٌLjRÆã$³:ÜÖÅšð½¨æ†b*•Ÿ•<2b †Ãah{²úç#„Õßi„àl‹g©3@ãöOÑÁ5I¤ö4Sm1¥ôš}@:¡Ø ·ëú¼Gg´îŽ*¶„Цӓû{¤)µæš%qÄP”‹â0?€'“DV;àcŒ=Ð瀙ïvÊ:;áÏeßhèר¥Ai`ˆTØß®!Ô}7´ P²(ŽÔ06’&Ê„ˆèf$C–¬²,ˆöÏš<^¢<ßæ)Æå—4uÈSyDãòWž
´ð= ä4iêBº]ÜÄî&=“!”ÿÐÑ\à,E•õ}Ó¾^pÎݱP¼ˆrä lskMÍÃÈÖNì*Š²[·Õ*#}òmøs®2P÷8MQi²}<§Á·@u=þ2|aª»Óu‘þ;8pÕÔ®‰Ô +‰©s3˜ +’‹²Ï«Mg‚qlƒ1wÁXL‚1wB„Á˜qƒ˜ŽByýß”ke¿¾DfFÐSòÓ”¥‘NÞŠÓ +׌xú†ÅX',Îa™P]®Û¦é[èÏNïïföj³ ÜdoqÚ[L•<BI, +|‘—Õ±h +r?Ÿ^;c–¥èwçzcJ±˜§bHâo‘Š0FŽ»™œAb ÃF;ÒòäÏ¡/Cü©ÚMV¤~RpÓÅšÅõ5„^.MÕßa½AÇt5$%"3j3Ax¥ühÚå-Ô?ûMÞœDa΀ÆPw©Æ8ΧƒâÀñŸ4j¹k6ÕzN\˜ ù ‰G¹…"á§:Ô= ¨¾é¹iÖùœ†JÉ¢,rªÓì\r–’1
yÀ¤¤ »öšjª5|¶ž¯š}ï´+/ʼßÓkTŒu¨Ð+ù†C
°N8T‡5r¨Æ“õ ¢WÊ!ÿ=I€Çš¡`ØvÑFœI 0ŸIòn8°±>£ +!ÔS…qä +¤t8Oq
æGJ篣D«!åj •¡mÇ,J˜Šã7Ò!Ö sX憤iûñ¦©bÀ~zS‡4³é¨Œ37µ½:½øåÃ×Ëû÷_éÁ£tQï·+jǹ;¼H=:,§Í
RB Û7*«gÓ;FÉϼZúáöŽ^µåw߬›Ý«Í†¢\£‡Ñ±o<qðÉHÅ‚D<µ%½€p„: +ÐíÀ³•¶ëy¬¥9Ì@\¾aõÁé(} ƒÄ-sÙ§¢Û/·×Èžãj†7*qö–šX'ÔÌa›oš,~S>;[6˜â•MEL€×?M…Çš!cÜÖ\$C:î/0khkº2
uðEm•amú)71W£†„`e¹ÿùCGèÈâ¾ÙxS>—ûzƒ9mg£§võ¼áúñ¤O)”£|\™?N"s§S»PÝÊïë;°òF›a>BdHÝ2|¸£ò°*íõ½/(ñ¡ü¦8¹´_ÙÙm^”Û¼P »y)½ï33¯öæßsÒ~…@ì„‘ÏeR¹¸³¹ÓÈ™ü…nš
̧#Ðá{xèm.b/³Eî°L4×È·Ò…™Ô^xÀïD꾇¤€“fJÛÚ\ ÃÁÃïn?ü¥&·ÿüðåóÕÍíÔ#t¡‰û;у#y{õùúˆÀN$Þņa(ïG…Hà‰°ÅŽ}²+ÃïlgŒþYÁüÏŸó¾u†ÌGj}ĺAl,Ö°ˆ% +Y¨ôÔ¡¯HÄéÿóBendstream endobj -1671 0 obj << +1669 0 obj << /Type /Page -/Contents 1672 0 R -/Resources 1670 0 R +/Contents 1670 0 R +/Resources 1668 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1655 0 R -/Annots [ 1674 0 R ] +/Annots [ 1672 0 R 1673 0 R ] >> endobj -1674 0 obj << +1672 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [80.6033 713.4536 149.9876 725.5132] +/Rect [222.5592 595.4921 286.2499 604.9017] /Subtype /Link -/A << /S /GoTo /D (dynamic_update_policies) >> +/A << /S /GoTo /D (statsfile) >> >> endobj 1673 0 obj << -/D [1671 0 R /XYZ 56.6929 794.5015 null] +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [80.6033 441.8126 149.9876 453.8723] +/Subtype /Link +/A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1670 0 obj << +1671 0 obj << +/D [1669 0 R /XYZ 56.6929 794.5015 null] +>> endobj +1668 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1677 0 obj << -/Length 3944 +/Length 3642 /Filter /FlateDecode >> stream -xÚ¥Z[së¶~÷¯ð[噈 .$“Ngœs|R·‰“ú¸ítÒ>Ðŭ"‘²âüúîbàÅ”í¤öƒ@\‹½|»€<ð/ÏS •éó$Ó‘Òœ¯¶gâü3´}s&¹ÏÒwZ{}}wöî£Jγ(³±=¿ÛæJ#‘¦òünýãâýŸ/¸»º½XÆF,lt±4V,¾¾¾ù@5ý¼ÿþæãõ7¿½¼Hôâîúûª¾½úxu{uóþêb)S#a|Ì3œðñúÛ+*}s{ùÝw—·ÿ¹ûËÙÕ]ØËp¿R(ÜÈÏg?þGœ¯aÛ9‘ÊRs~„É,‹Ï·gÚ¨Èh¥|MuöéìoaÂA«:Ç?mÒÈÄÚž/Ž”QzžË"¸¶L4¬¤¡ä¹Ë9.û^ÈåuݶÅjY5ÍOy[®‹é¶¥U0¹UçùŸQzÍHX%vLÃ?Šx¯ãE[t_ ʵ‰2‰“$OÖŽè8ñvû™.šGèÛÒ:ÝCA…Ǽ*×y×ìéóXvTÊ™¢¼êŠ}w®¿\l‹î¡Yó$M?lj -÷‡²ê–%‹M~¨:ú€“<¸c„õ7¨ XI'…^p[ìêäÜue¾±¶)t£óé•Lyï9hIk¡˜WMýÙ÷s–+¹{Ø~±ê ¢½åxûf‘´Æþ&·dDbç‡+9›??Àú£©çNOŽÄ‚yѱ[Ï uÝt=#oô’H„CÜ95A]òƒîõ -ZˆPp³ÃoÛ‘:µÞŽÿ^‡c§ç"®˜Wz¤‰Š”ÔÞÜ—õ:‚éÛ™ýƒ“äèYôÕ€ˆ, -¤c*|oÚnYŽ¤ÆÓ³c'þÐu»öËwïŽÇ#î.*ÛUDZùù]ÛT´yí»uõHäÈ‘ÔZ%Bzzþ8
âxŸYtëHd™¢ð€š:÷¥¿>ÂÈåp¨F<_ ùÓtŒ&ArI6’„b¯‘%Cpq‡¼@D!Å#‰˜Ô>b¸¯ŠmK]ʹs•ÐªPæ-çj£,–CÓ³:ã‹nšC^¬W*¨K>t'‰„?>¯Ú†û6Û]Iº†ÔÖTT|ÄQ°D1€Ü×졈€ÛvÌO[ˆÛìX×n‹ê©tŽ7±‡¼4–Î$†|Ô§‚ÇgÛCÇè°ÒxñÐáö–sMÎËѸŸ^çö&Äiñë¶>ÑÒsÀa9˜ß!Š!}ÌQÜã‰ÄM·Ð}R:¬Hã OÀ8?ÜÃÌÔÈÀÊD#¤:Ü›ï﮾œÙ6ìÇXó†M[í7ÝÔ•RçàZ*®Š}GQ |„(pEßN²]ihu¦*au$ã€7ßDƒ†bÓ´¯â ˆqP@ÆIÇ8øÀ˜JÒw&qj"0º§a>h -†:Pçý–Á°4Ÿã€ žp¼íi6@Ⱦ_²ž¥š8Ÿ£-xìØÆ/'}†½N'}B¯øØb{_,¡|Ø?Ïü¤I”é8y™ŒÐk†ŽFÍb0€:>¡„mPãdñPûܱnÅ–*åêŠH-•óá×1[rž‚ŽgÐÃíÌŸFì£Êϵ;4ø&É‚HרylëR 8IǾԇ#ˆ -jc/ÇOÅœ¬Kà€™DO‚è36™1é´9•c´š -¯ÖPÊW«bç,'à•º=û–\ìŸ:{ä»%Ù€gÞ1¿çX(0´±|=.‘3›v«†N*úNJ‘Ø…\xl,œA™„„!Çè4ßí*mÀ#VÍ‘œ‘戀E‡¢€K´åT{ -pÍG’³ó(*m~oì˼XÒ|Õ•Åi[(`||êš!ØÂA¯l¡ïŤ[ýÌöûL–%//zͬ;Öö@Ñ48!vû«¤x@µ=¹ÜȪkgsG2j©^³¨<‰ -ðaݵó(Zšî¼|ÿWfd4®±.ºb¿-ë‚×怛ü¬D“g)¶äüØ€G÷fâþ‰Z\V„¯Š (ÇÚ°€Cîà®7“ƒ -v›
gê]^¾}á6AZ€"‰Šƒ¾=}õêuO¥eŽÖ%©ßpÆ -eb^;ã4²·?;d—Yw7鋇GIl“€q‚™9㟨áÓ%ïSüªXùu}Ä õ„ƒ1c„½‰”l‰à¸¾{Zè S@>ãƒ.§I¡#Õ—ƒÛÈWåá7‹ClDiú;ÄÁåeS—
T.¦«èzøNª,Q›ú1jC¥Ð)5]ãb*¬"3Œ%VIhoŽhÞ°Ž5Ví©br/øÅU›)Žü -³øî’¿-æüì³·ˆg -¥iÈýáÕŽð‚/;ܳoR¡éÃ÷C:ROG²ð†˜6N’hš·*ëU³
à5!@ÁQj§O>Hoo?]ÓŽ£ÐàpÏ^õaê>~ŠÍèùXpÈ$?Ñ©÷Þh•šËÿŠ`¾ÿï·àýCy
Ž=MO\¢)a£0‚' -9n²)åì¢Iãd†ôÿÎxendstream +xÚ¥]sܶñ]¿BÓ'jÆGƒA€I§3Kv•Ä²+Ém3I¨;JÇšG^Ž<ÉJ§ÿ½»Ø žx²ÒÚ3º%°X,ûMFÇþGÇF…BfɱΒP‰H/ÖGâøæÞEŒ3sH3ë»ë£×o¥>ÎÂ,Óãë[– …1ÑñõòçàÍ_ç¯Ï.Of±AžÌT*‚ïÎ/Ni$£Ÿ7.Þž¿ût9?ÑIp}þႆ/ÏÞž]ž]¼9;™EFE°>f +¼=ÿñŒ w—ó÷ïç—'¿^tvÝŸÅ?o$$ä·£ŸÇK8ö÷G"”™QÇð Â(ËâãõQ¢d¨)ÝHutuô·ž 7k—NÉOI*ë Ʊ'ÀH +¯ß&‘—m +3„ÄA–÷¯Q„I¬Ý‚
ELnZÚ‡î€û¼*—ygUx| +Ò:'k¨"š%i¬œ‘I`ãh¬œKZ¤Kî-<‘š²¥À$ë +´ +E +僖׋É4î:f«–hÕE½$!²¾(§| +,Ÿ2K¹vDËxkdš4s›@5ÙLŽe˜aCª·ºDZ=i‡›]Yu³’Ÿ–Åm™à&wöaÿ[[ÆfÜý@`P\ÇQž[T–[›JC™˜=:ÙTè„ÎZ
É+^Ø“¥Ôp|bÓÄ3ƒçxùfa”ªô…%%´òîꬮש‰ûS¡‚üˆ×ÔS·ÔâUŸ†ðYŸ06]³ Cçôt©$‹À¶$b´%§ +©^¢(i˜Å‘K*µ5aÃÛfWcX¬Ç¦è¤â0ãÖs'q›õ¦$ãEnkí}ÆH½ÁµÅ5ÍÁ‚Ü3™Žå™ÄX¤ïéèeQ=RRã»úí¨¥¡Ð¥‡—ëµM·1š8XAyŽo¢ ç‘œ–£u¿íœuO
*V(üâ¯DN69ú6Eñùc‰â!8AÑ6{µ§gBÑ@€(LœŽZŸ±L4%½*ÁKm<·ŽR_¿ùáú웉cÃyTª^pè4q‡æ–¤66b¶.ŠmGe%<ŒÚ ðl5ÛBc766‰4 £¸O`_ž|ƒÕ¦±mrÜÅæz +£+ UÚ/Ò³0Rº±U ©)L`3!Eq˜ý×ÛC®’&üuIWá<žiÛTÏãºïluꛜãdºúò_ð²7Ž:hEz˜ø*¿g¼ª¨ïºU;þúAÆìLá +«Ý¸c¼O¡è{ÛDõ¿ñ¥ã“ù/¶FŸ¿ í•Ôl·&;ß÷™ôúµ%ïjÀû¾YÒNHäb6?=½<Lh×ö¸ícÇ”¿Ûsñ7ó÷g©+»X©BüÎqÂkŠ¾ÿùN9|kšèPO»_)ÒÐÄঙ)”¤Êö9ï¿»|Êú—\åðendstream endobj 1676 0 obj << /Type /Page @@ -7134,303 +7129,291 @@ endobj 1679 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [278.4002 570.2936 280.3928 582.3532] -/Subtype/Link/A<</Type/Action/S/URI/URI()>> +/Rect [116.6985 307.3783 321.9289 317.5401] +/Subtype/Link/A<</Type/Action/S/URI/URI(https://www.isc.org/solutions/dlv/)>> >> endobj 1678 0 obj << /D [1676 0 R /XYZ 85.0394 794.5015 null] >> endobj 1675 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F41 1218 0 R /F11 1451 0 R >> +/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F48 1238 0 R /F11 1451 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1682 0 obj << -/Length 3076 +/Length 3355 /Filter /FlateDecode >> stream -xÚÍZÝsÛ¸÷_¡><"ø" -™1-¹œXm™±–,˜ÏVç‰á|ºYÌD&Ýü›.‚¿t¯™I&Œ{)L°8ðRÈpÿŸ×h
P)‘Še¸{?¯£‰ÁèWWWÙ›W¯^f&®‚3@'¹$B°,M¥Ÿ7[•EµmÚäÕÓÁZý9ëüþ¾˜¦ü!ìêõsÈÅÇÙj7/"új‡É¯^-àï‡?ÿ_÷d\±f·X”ã\bIF·Mó_^ÉþÁ%`i+‚9)ãV©úÂ0€¦oêzUäôýý¶¬«æ -´\#È>žUÆúÆ@…·² v}Vð^äYžH³}q–eJÚÀóâ<QNL·ËLªR3¥
™NgyEÄmA×|>GÜyrK×͹›îªm¹.húC™œ¬È8ãZé°è¦šÏZ‰¸àˆšÎ=ÓqF½!þy±*¶Q‡ñµ`¢PFô—"ræVfDxD•²Ìê,ÈÈ©ŸÞ,BÞ¼Xä»Õ–nÊfä,Œ_.
ó«zì(‚"q‰c0Ö3{ÅÓ &áÝv™Tçõ:/«K1 vjí–épñ!~Ó\êÁê£ð͘UÅO¡×õÐ+[ôr‡Ô$ œHm#$..Æä:–YnK„7·x²þš¯ó§@7Å–«+¸þûwïß]¼½¦»Í¹pÓ¢¹‡¸T4AÁ⡼傮¨¨Ò›‡bÓ®æ¡*´`Òº½˜YÕ7—A*Ûî =…;8Çz -pÊò¡ -o˜ªfù¶Hê*)>ÂŽr•e -ªÓ:´\#Jö«%ÓNf Å
á,Yû„Môcîœq<2<ê -TG,ˆîšÈ¢ÊoW! -Ï–ÅìWÜ-0Kø³-Öõæ‰Ø¡Xø5.¤£|<´Ç”áÌ!‡.Êãò®ªƒ[@Ä4ÐßO^…]Ä`ô}±µÖûó¼âÍq<hÀ–2ö<ô¸Nà!rùÒ±X7[Ͷœ–-βÓË·\#ë -%ÁÔ÷tð_VöNÂó÷Ñøù]¤4ŠYë>³‹œ$Ò¦ÐL)¬gB¡B¬íÎ!¡»ØwuAr¿!–Ìé,6´m哹PKc8 ÃÐmA×½í(Å„è5¢Jê ~l»æ‡²xÑD¦Lp—ö -¬y}¢+½y1e-“F?ïøY¡mpcÉ
‚épÂ]7D¶è5 *¿Ã·›c«s¦œ6ƒÕCnTÐEÙlÿü}Þ4wÆ|-eR¥bOCÍ[½´èôÒ¼Õ‹žP ù~¹çRüÖ]‡ƒÄÔ‚˜€Çö -s ÝkSð¦â´Ãì\ôw$²Cq,ª†ôj8’Íæ„V-¼…òÉFG'·Ž‰7¡«äGÜMiÇRןänI;iØuŽ÷¢{qvhÜ4eÎe±*=Í”RvûÏ]²Ì¼lðasX¸XÆ¿³˜õà5E¦àЙƒH—Ÿôõ[Y(GEš
¿~ÿ¾YQ^ì=ªÍã +qÆPT÷”@ƒ~Íù™e”ÝD*ÊzxßþÔs_±éô´™Ì&%£#\Â*{ÀÕųþ¡h+ñsݤ¯ÿÿf4¾Vw.û¬”ørüÕUkdÍO9ùžPˆˆü½B?®@áŒo–Ç¡ý vDAÔ¨ñ:µ¾¬í¾(B±iÆ=c<éð—)úÄë5üˆÔUry:‹=~Ùo-ÕSâ+6I©æSá¯+´“§«…¡µF`uÊZ==¾bkqÎ7úkqpºL=“ðŸÅÖ '$5Ò¯ÛXÎ1“ -uÚV™„úÍfÏ$ð#¶ú„xÕSâëµ”Å/Fœ¶”ãLºÐ6†’ù÷ì„'ö”ùRë~±÷ÿ(‚ð³‚3ʘB~½á“gõS¨ØýŠS[¨þœ/”¤…2Ä)‰¿"Òñ‡lüðƒWøEcàê©þ_ì¶Aendstream +xÚ¥ZÝsÛ6÷_á{Š<S!Ä'AûÉIœœ;Ós|s7Óö¦¨ˆŠtEÊŽzÓÿýv± +Þ åL'‰>uÂŒÒ pQ5FÍ›|ó˜op70Gôæ\Z „ƒÓjáÇô×å °h´CfuÕ¦Y;µ¢bFÅÜÎÒ +Dj’Ù}Nßm“/¨ÔÖômò¬Xî|ãÊ«Òµ/ÕËQ—ߌ+#Ç®r•e½ÙÏOç\)¦D2äœ%ZÇÝŸu•7`’G³»UÞä¤þtsÆíÌWš¼mÓû2tµô%f ðXäOTzMŸú¡-ꪡJ™?æ媺¢TW~,}r7gþ@S‹"ñ•zîÓ¦€Mà6#ØžÄíî*ÍVê`C±ˆûêœP£H˜UÒj¶õ¦…MI2‡¯;MË ‰a2†õ¼”E^ÁìçT¤d\GÊ»|ûQhW(g¤±ÈÛ|³.@MÔó´*`S®+¬J<‰bOºÄÊ2ÏZ´5ì¾ßQO»*oV²DZ94ˆEAëdmñ˜{½]/GzZ8éWùâª]û2Ý–W=˜·Û¯²ý£d_Šî¼í.¦d¬ñN*Ì3œDLY8ªß¢bɤŽõK*¶ÌˆØ>Ó±ˆb§cÙ£:,&L_§ùbJÅ ãÊŠ¾Š‘ +–¢¬Ž‡ñOÂ~õäQ'˜ødXÇ!flòl»i +X¦çÇÉw£&è˜3 5d`ÒˆËNîÇlØölXt6ŒIU>…Ç4ûì2\J'A§6<¹Ç|ŒŒ|LÅdRù”î|™â+¦¹*j¸ù÷»?_^ßPmŸ‚Û·gPŽ[pI_ŠÞ.‘EyiOÍç9±yNŠnY»u ª*ë
0ÌáhRRAÐ'{…þ½½Z;m¯Ü‚÷µÚ|»Á^i»(
DÂ7¥O¶J«Ï9‘\Ò5dM=þ1JÖ1jè¶
õ]½õktÐÂb柰 ,ôˆÐÄg5\r#;<Ðué¡ +€;%êeûä—ó8ƒ¨@aúœA•Ó Ž{Y¹éË">«X+¿Ã\Ÿs3n•yáœ÷F9ça99X€e¸ÅÍó¯Eû<bÅLʼn:ÎC7j‚‰!‚LÐÌ€‹»U@s7;d—ºF^wPà¾kÿäfiZwMżÚcÉl•g_:ðJ8¨Û|]ov4 ×4E18¯Î‰³)1køè©Ç?øí3dã\R?TοÀ +#YÜ=·ë]S}.SrôÔ{7y=â tî]{'9¾fU÷žÙ!ŸÄz,î€DMî½¾£m)Ä$É›×ðcwwv¿“™x¶@YýÒï¬ìÐù›>þªÅDÁ8äkLÊý@z +¼†pìûpˆié[?úÙxÁÛv€H¹„6Åâvü\Ö÷“Ox1¬w)ûcúÆõÁýöŸˆ¤œ +mQg@ÿ÷ïÒö?ÚS1“Ö@†pµÅ¥ÈÀ”ËõEÏÑ€ÿÛsÖÿƒ×ƒendstream endobj 1681 0 obj << /Type /Page /Contents 1682 0 R /Resources 1680 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1686 0 R +/Parent 1684 0 R >> endobj 1683 0 obj << /D [1681 0 R /XYZ 56.6929 794.5015 null] >> endobj 474 0 obj << -/D [1681 0 R /XYZ 56.6929 636.8504 null] +/D [1681 0 R /XYZ 56.6929 378.3537 null] >> endobj 1370 0 obj << -/D [1681 0 R /XYZ 56.6929 609.3387 null] ->> endobj -1684 0 obj << -/D [1681 0 R /XYZ 56.6929 172.736 null] ->> endobj -1685 0 obj << -/D [1681 0 R /XYZ 56.6929 160.7808 null] +/D [1681 0 R /XYZ 56.6929 350.6124 null] >> endobj 1680 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1689 0 obj << -/Length 3726 +1687 0 obj << +/Length 3312 /Filter /FlateDecode >> stream -xÚZÝsã¶÷_á·È3' LŸ.ßÕž¯ñ9ÓI“<ÐeqŽ"‘:û×w@¤DÉÉ´ãñÀûõÛ%Å5‡?qm4ãÊ&×™M˜æB_ë+~ýc®„§™¢ùêûÇ«¿¼WÙµe6•éõãr°–aÜqý¸øeöîooÿùxûp3—šÏRv3×)Ÿ}wÿõXúy÷éþý݇ŸÞÞdÉìñîÓ=u?ܾ¿}¸½w{3F˜/ý -g&¼¿ûÇ-µ><¼ýøñíÃÍo¿º}ŒgžWp…ùýê—ßøõŽý÷+Δ5úzœ kåõú*ÑŠéD©ÐS_}¾ú1.8uS§îO -ˤµÙõ\%̤°Æ€ê„Z!µQpÛÚ²TIo[ÊÁmí$½ÎTIânû¾íK:¿Ê{j5ív×Ô¾ÿôx÷þgjo¶7ÂÌڢ캪y¦¾ªsüä|‰D˲èËõ<½à3bÀŒL4KlšÁ E•×»§2--3Yf<;‘g\ƒâdÎdD2žh>¤¢ûSÚ¨pÇeþ¥œW¿ïÊíËñÞB&RÒÅÍ#ÕÄî#é$Š -Æ»ß5p…Fõ7É̼_›€´ÜÍÃX»é«¶¡Ñ²ÉŸjwï0ÐUë]÷$*xîW%QµO][—NîÐýÃýgjÐ!Eÿ²ñ£w?þ¶¨²ÙÏ7BÀˆ
æ·*¨˜äN+˜ÕZ:æ›òk¹%X´¥×“Ázî90Ù6ge›¦–e™’—e;¤:/ÛHåd[öÅjþ\ïÊSÑr˜ššË{Gª‰ÍG¢UoxÜý‘$˜šƒÓlû¼ŒàÂUªH Û_<´@œµ$f¸“«2*õæ28à<å|öR851“2¥Ñ¹9E¾ëœÁ¤1ÀUWnI–ØÙÒoÞ÷åzÓAèt;’J@73ÊŽu‚x‘ÖÌœ/)»vçŨ·hÝΪ§ßEµh¾óíUþÕOٯʆZEÛtýöÆÌv…×zÎ -Æûôi¶%g‰Œv‡"œØÞB,ÍB,Ý.©¸™#œS—%™‰w5m \¿¶ž¤‚øVæ‹óF ,Þ|)
©.e rro»~Þõ€Óº¾*N232ir™H5ÁÁØ(Ai–Yp2ºCttPz<†Á_ ¿”åÆ»]AQ~gpDËvë§~%ðM<ì8%E`,†ã— -˜ÚhYÛ¼ ‹ -NÎ7D½?[÷†žw]9U8€ -œH¨l¶íWÀФ°§VV2Iú:௞D&L¥ /ÛÛ€ê‚Å*gsUSóz¾õYÆ©wÍ€CÄ—YˆT<ŒƒoÊbÀwˉ˳€3MúB¹„r¡³tÆ Cngбm(Fèt”WuDâ}¬xVX¡ªkšÑ6õõA&GÓlèHË廹‡é€ñ¬=ªRô«€8®ðžr0%ÆÉ"¦”,*’ÅŽúý•‹ab‹º©ýû®:d@ò+×¼dÏÎÆÐÓÔ峫8ÕWÌ -Ÿ]†Ô£»‚©‚MÙä!]ç/1¼PÉîk¬ñ•!'Ù.±Ê×ÁR—G^Þϼš¢ŒG‚=(®“ÿCž¡2Î4W¯„¹!Õy³‹TÎìàDßyá²ÆÓ'˜²R_f RMp0:lš2•)3fÁKÌjxЦaÓ« «òCÞÕCˉÓuxÌëÚ°I?ñ:*Y 7Їꉎ×@”ïîß~¼%cÌ(‘˜A
uìÔà¤"}ZªäQ·Ó(è&‚*4B€°f‘û5œ
DX£àuüÍ>m”×ûü¥kl+J½p¤l–¯#uG»ŽtT¸q…¢ˆŸÚ~5†`ëÀ¶/»@’-#i,Ô,^àf«ÂG«
øÌçÏ)²HYª¬}E‘T9P‘uõ˜7ë¯,Z]Þ7RMl<6ÖŒ¥6MÇ;O
ÁÄ -]4¸}¾¦ÆÃP.~>œ0!—“u‘¯Ï¡ž‰¼%LœTç‡Ùš7§Õ¹@õ -§«y -ÃÕ‰·"XI¥MÔ‘csù[á0¹RI()&Ñ`ûPZL°nÛôúÇ’¢„b4õó§·Ôøè\kº õ"¨7¢“ÆÏw‡‡_W7<l×ÑC<üÑN§ -CÌ -G°»½žHŸ1aW”tº(¾ì•ÉÏ„op
›—ß6uUTý—IÆŒäÙŸà2ð&#¿J¾'tŒå¥‹Á#ðR{à¤Mi‚æ‰RØ]¦3êQåœ@TÕI6ÈŽÑMßRb” czÞzÄÁñš\´ŒhX“oöê…EýLÈ ^Ö#¢É”³TêdgΨq1Òe8(Àˆ±—D§’~]Ù1š±ÇZ80m\XBÄô›¸€2ß4ÓJN°æäR^,þ*wدªbEÍ«,®…ïºð ûvN¦»Ä
$ìŠñ$㸪£siìùëJ3ô1‹è¶eJu˜¼owõ‚š>ý2Æ][¹Ä/rzgl [Âp¿Û6~ -U˜ý°am/¬Í¬ò£•ß0¾}„±®”ÚÅÅÖÓ#C*¶y·:»D†…(þJItHuvEªƒÎûvÞµùiA_æssyûH5±ÿ¸l˜@2b`Òz
\—Á:ú6|¯%¹ñŸo@£X•ÅlZ¡q0¾Vë¨ÃAdnÙÃïÃCWö4;ÆTDèb"6\Ld~¶ûÞ„â¾K‡ø,_¦ª_£ ï'DA•‡ýtŽ,0pzyȤç>.cãìÿôp÷áîc4=ç~ñªoÖí6›–Ô×oi¿¢m° HÙ—TÁtã²OÊTJ‰’J=ƒ*›aJ¶vï:°ÛǸPðÓ³Ïíº‚’Šv¶j÷¥OÕ}ON3QÓ±K×øòÊÇxt';lú»F¸E¯±xU- -Ó!mŒÔÎ&ð“4´‰óþ‰ +xÚÍ]sã¶ñÝ¿Âo•gŽ$ðx¹ØWgz¾Æq¦“&y %Êb#‘ŠHÙçþúîb(QÒ5½™Þx<\K`w±ß€¸LàO\'ʦ—¹Mc}9]]$—Oðîý…`œÈ#E!Ö·ßܨüÒÆ6“ÙåÃ<˜Ëĉ1âòaöËäÝ_ßþýáúþ*’:™dñU¤³dòííÝw4béñîãÝÍíûŸîß^åéäáöã
ß_ß\ß_ß½»¾Š„Ѿ—<ÑnnÿvMÐûû·>¼½¿úíáû‹ë‡ž—_‘(dä‹_~K.gÀö÷I¬¬Ñ—/ð#‰…µòru‘jëT)?²¼øñâ‡~ÂàûtL~Z™X™PÊ@€"8Í.smãLIåx;¿Š”Ñ“nQðï¦f¨jéYÐcU´]¹Ù!½¹ŠRañÃzoŠ¶Ü<{Ì—j¹ô£õŒ fÛ
f¾ûøp{ó3Á›+a&åÛ²eœ®a\?Ïn™eñ\¶¸ ‡HˆØj-S¿&:™•ób»ì +<Æ+|km¼JmàSüì‘ÎeÈ‘°‡4â˜'
áÒpƒÍ¾q±Ç×nF’ÑÑ{ÃÄdn››J1ï°ú¿1·¨ÿhÀt`xo8îx§<®Ö±1ÖòŠ'”$•RùPIpÚm[Ž2³ª-—%G/Ö’ÁÁ¡XãýÄOHà&Qâ2T|Vê§r¡í0õûs_yB‚ {”ú.¹ô[1œ*Ꙋ²D€›Ìå‘ÄRšXæ0O–@þiy³¤M.p€ôVÍÌ%m©>-i•EŠ¡&Á¹Ê°v.-Üðȱ’ààCþ7© üS™A¯Á_PÐ`q¢9‹19k+!ƒ7{ÓP¯ÿ{é0äíÒçWÔ}‹á‘QFñT£òûšÅa.±™9'?“Ä™Q©“Î+Õ{„J*ߥt½„vBãÏÆ…ñe¥õEZg¢=¨Éie&Î¥Q§3‡¡ÀF”ë¤ÀJ¾fõ‚j\˜LŸ˜†Àž+q&8«b§Ì1 äk$CR uN`¯È홨~D`Ÿå¾B¾f‹”PIæÙYÿ¯dl2®8›þób;i˜A_Jn»VÖÿ#A6ÃE 8i@zj½5%€p}QjÁ aN·ÖR\:UÜ¿iº¾Ë²ËRvÙOXîgíag6˜sâ9"ÍËiw²"¡D‚2Øo8ça‡z[kòÜ„]‹A/Ä£€\Ú +¹Ñɵ{¬‘Å[«4liÈ ®N^™™Ýb3ÇñaS3S¤0Ì‚ÈŒö0 öLò=Œ€A¨Ž’#Y$TøJc÷Þ}3-¶Ó Xƒ[oyЫ3ÜX2“¢ëÊÕº»M†Vä^S–ÇFÙ¡N-Ò.˜Úfë€é`tÚ¸'vpûÐøœU³ú//¨ï7Ü +‚Ú¾§?\³ØÚI1 s
S—ñXç·qà +_ú–p[ÍJš‚aÁ>±àßð¾Ø5pp24jHUwÔ`”†<ÂfgœaˆuÜ`z,ªÑµm6]Û¨©£v±ífÍK½O‰„Ð,SiO“ÒcÐ2ˆ`6‡ÄüƒÎt”â–˜‚\´X•ý¹¼(?U]K¯fÛ’ÆXÃÊê™Î9àÝ·ï®ï?¼!f’^5<Ó¬á0Ì…XNÕ-З9TŒ¢~å°ÉØýŽMÕ•íþ¡—À½Fôü±K*TÚ×Í'ödß=g6»,k¤(gÎ\•˜8Mó3N9Ä:¡cËuè +àb9‹¦Ëª¬»ƒ¤Bdl1!8I@5BÁ€Y(‚ »Cø.ÏzÏŒðKÁƒÕ•˜Ôà¢X“:×sÆñÕzY®€h×ïÆþ’!ŒÞiÂÇ ÅÏùT7½ŸÀGXäuÿs‹‡„ÆL®,¨&é^ +U¼À´| {Ôwß5F€-ÏzVr›µì5ú
ŽoDÙ$Ê¥OÓF6gOÅ 7J¤A…=¢bî8Áω M"'íºœºóÀÉÝKã›ÂëbSt<Lû2j)v_…×ßbÛ-¢úÓ¬YÕ˜E@p`“-“8•½Ý:ó±t3ŸJЬÓ)1&,¨zYk‘¥©ö½ä +â[YÌŽ¥„‚;KÕÇb7ÊËí{ÓvQÛAžÖvÕôÐ(S0#“¥§ è±F(%lE–çC\¤E]*¬…O…¢ô—äïe¹f·+øXLÒÜZâ§Ï”üˆÌK"±;‚ÆÃSùœ`w˜PLùˆ<JeœH‘ï™TÝ‚½ý/–.Ã
Ô9ÀñÝIœcAwz·¬»í±R´•þ£ê5´£Ç¢=Ì‘ÁÔm–ž&Ã#’™aèdÈzŸZ¥»`S»*f$£5±ÎÛÇ°HI1¹íè{çÇà<§ä©½Ô¡Ì¢5è®B +QöwUQèN1å…ØЂݦ¨[PðÛ=©Ë†Ï]…–H‘ÚÓGI*@U]
é# +Ïw&?â\òƒe–µÉ?b·¼ËY^UW«bm¸â8ô´9PAù4 =Ö
Ã@œÅóÁ·óáYÈ9MöaÝa]çþâ‡Ö¾Nè tlã:ÔX-¡°¿Õ—õ×´ð¾…cPÕpX9)b0]±å}›BØßð’*w‹’rœR}ªÇ”ŽJúÂQ _8¶4Î*-ü$D
û»Õ®"Tt3¥ŒŸœ¡§Y–O®âT_i0+üíª]%‡²¢{c'‹ÒUñÚ‡¾áµ«Š/²õ´Þ—ÚÝÞ¢M`?s¶\(Ž{P‰N¿@Í! ^ôç 'Ì.À:avË™°PA$Ž¦®‚<Œt"VVêÓôX#˜Í²XåÊIà³A?`Š6ó± +†*~Å® C(NצxÒƒ³_‡Åù‹Õ=¾ï¤è^„ùîîí‡k2¨’R‰ÕT¨c‡'Q'åä¹j¨«GÃN£¤¿ËÔt”x[ì¬à9œ
ô)¼¯ÃÔ/Å`¡bùR¼¶~ŽMEe¾)ëyÃ=¥voÕKÉ>/f²í3ÇǦ[Ó1a(¸eÚ7mf¯ ÙjÊÑj—ÏÚøØÍ[¥c¼.;¢EÉåٮϽ•»»²%¢2æȽ•@6÷D¡82qpÖâ¯ï’þíÿµendstream endobj -1688 0 obj << +1686 0 obj << /Type /Page -/Contents 1689 0 R -/Resources 1687 0 R +/Contents 1687 0 R +/Resources 1685 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1686 0 R -/Annots [ 1691 0 R ] +/Parent 1684 0 R >> endobj -1691 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [182.6146 300.8791 231.8861 312.9387] -/Subtype /Link -/A << /S /GoTo /D (notify) >> +1688 0 obj << +/D [1686 0 R /XYZ 85.0394 794.5015 null] +>> endobj +1689 0 obj << +/D [1686 0 R /XYZ 85.0394 625.316 null] >> endobj 1690 0 obj << -/D [1688 0 R /XYZ 85.0394 794.5015 null] +/D [1686 0 R /XYZ 85.0394 613.3608 null] >> endobj -1687 0 obj << +1685 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1694 0 obj << -/Length 3742 +1693 0 obj << +/Length 3723 /Filter /FlateDecode >> stream -xÚ]sã¶ñÝ¿Bo¥gŽñA|tîìÔž¯µi:IhŠ²9G‘ŠHYq}w± -o¿Ü]†"Ž‚›Û^Sí‡û«ÏŸ¯î/Cnb|üûÕ¿¯ïiH»9¾¿½ûD=)'&½¿¾¹¾¿¾ûx}ùëã?.®ûµ×Ë#‰ùíâç_£Å–ý‹ˆÉÔÄ‹=4"ÆÓT,Ö*–,VRúžêâáâßý„ƒQûé,ÿxÄ„Ôb†Bh8‹Ó4^$qÊ´Ò20«aI2ŠÕ%7ÁªÈ;lë YQ^•Eíú~Û—<Ø–Eü’‘>fùKY?ä:{£JÛ•UåfÉóÝ–z³Ö•5
ÆA÷RÐ@[l_ø8þ7÷MYwŶÎ*j5›b›ueSÀv´»ü7¸rÎÒ8´´–vëîËãíÍ©ž-—[Ä[´n°jš¯»]‚‡¢ppUÛàœÀB>`!ך¥F(@…VE—¿„Ïð…`‡ìV†)n¸Ížš×‚Mä…³„s½H8Ì+sb (BÑöò9ýðPˆv»Ê…ŒLؽm -~Œó„E\Ëóè{¨üÃõr¼O=&à¡è:+"2J`ËÖÕw•Ì Kt;Ž½íWEú
Ø[Ià ól×KAâé%É!´e[ÔKªÝ=PIò7¶\¶ôiV5žè}Ù½Œ&N‚‡/W6þÖ -aÈ…f\%éXWÍ–$«.žAx_½œÕí¾Øzñ{|qÝËb•íªŽe;Ã+JœðÔ‹WÝÌðÊã'‰ðy{ ÁŒ0ú[¬•4Öøšyk¡Œ0éøô\ô]s¹ªÿb<Uè©uÄ™ ê©ë9V-a kb¡!1è¦]ëÝ€±VÜr#b±ìU÷Ëe¨yðÿE01ãléBó˜)¢^ü¶à,Ri* hP·k=ðÀv|w»‹O
¬h1\”›8Îl¥Çª$ÁB+¹ÐB€AÆÙE5(‰ Þ.E®Q®7U±],]GM¥sfPK'[¯tÊ„IÍbÈÜ?·_6B§àóƒ«úsÒŠ”ƒŠ$À0$<9oãD³(æéyëØC!GÁd„å2Ü4M5±‘aI”Ä‹á´SÛ衦Øe:ÒDØP\èý£5‡¨âÍýY¯îÔ÷Ô6UÑ͹`›ŠµéÛIð’UûìõõªÉ³®pMðäÛ7ªÞ~r}+kÄšµû€ -dÍI¯«˜ÉHèwöe -ö/eþBß¹ Xîà<°ÞP6dM -–äI¶{IŸÎ -n·6„8Äûý"¶„nÞéÀª¤Œ
ä$¸Ùˆ7”‡G)S2±‘·ÏÎß‹‡‡ÌX—ɼ烯0œM¢s¡$ÈØ›!‚‰•ë¡Þ¡c:ÛlLè¶J8¬÷$C¨Ó¦½‡ê]îïàkŽ§îÅÜœG즈GÞ6ÕéI>FLÎV&iïl±Þ÷v¶©`’NôñDÁ[³£ ê -5Ô¬ôC¹,ÛìÉJ=4nº¹gTl²-ˆò®Ê¶4akØtl&žŒ<Gʨ8‡–›Ö)"Ç‘“²†cÇ:;ˆš/çÎĹun¶Ík¹<ìÕ±‚:£¼M…/õDáЬbA§ãLnøŒfyðp?#ÐdzÎè•`ÜS#Áúƒu‹GäL$‡z‡Šélßjp¤6,VÑ7³¥‡¢É¼Æ(&'8@ñWz¨wh˜ÎvÞØÈõR¾clPgŒ‡šâqò³½>‹½‡šA?öð NŸ#ü½ -oAŒ$¦ÂØ*Ë˪Ä3-µ«&[Ò
Ì`ou “NñX£#”Cm7I¡âǻ۟¹oph[/YèѽÐþÀB(CPP빨ñ–†dÁå. ;såÝ#•viP~úò@•µ½R*ì“ n¸!¤¨|j0+5G%ÔNí?O(Ùùû_Ïì?ìªéS[ÎÒ¯ç;·„øIÌàØ•þA)¯d(…Ñ:\.B2påGLJºØWeís†Y¿½Ç¹Å</6°Óü•ÆòÈÍe7ËçšnMŠåi[ -‡£Óô[:€:cK=”½Œ[.K$)«ÂÕ¶Y‡Ù®{ùÐ_Ž†rlj™1¸¥DšóöP3$ŽO2–ù|L£O¥Êñ¯¥FÞÔdL¤ÒeYRL½d¯¥=1âG+*Qãl kl¶hðò‰F°(ÆHo¸ëÞ+YŸ¢ÆwUÖà -\Ó‡£‘¡<Ø•0ÚoòQ¤j;{ãA76‰
ý.mOÅœ`XVQš;¥$5.7j»|>Ý/< „RóæHUìhŸj7ξAßð{ã“üi`-ø/Çä¿ ¯mÖn´-»]æÄ>³1M]vùøî†`¾Üb&ÉÞ&Hzî -q#g´ -¼›Ý^k³ÿ€ªIŸhÌwÛ–>˜d)œœØø±â°{å‡(iÛÅàQÅ€‡ÓeϧH˜´Ž“£pø >ÃókÕ<ÞÂì³mM±4Ö`ÿ²çbV˜ÎqCf¸ö'‚ùã&DºâÔK‚„qÝÛÇ,‡h’xÀ•U^
¡B,SÂÅÖƒ‘¶ÎÕ~:RLå™tóÄ“g3…—®3'ᨠ-ï<Uö¸˜&ÜËéâÿëpendstream +xÚ]sÛ¸ñÝ¿Bo'Ïœxø8}Ê%Nê›Æimw¦»{`$ÚæD‘²ÏýõÝÅ)RtÒëd&ÁÅîb±ßùŒÁ?>Ó&3¹Èg6W™f\Ï–glvß>œñ +²þ^x'Ø”u¸}ô¤÷û]µ”ÞàgÌ¢F-}"·‡s/õžÏ5pINß +”6ª‘íI¦»äý) +ê×z¦p£ýÞºÐÞ,°E³8é´³åŠO»§.Ôiÿ” pS»r¹ß5èf(çl™°Ó”#Ðåžsb*Nõ)ŸÈµczÒ9Ë¥pŒ«|¹ðjsªñýë¾ôq†”^ÀDÓ6²~À© Ø<Q.R2KžIeR‘‹ +B‹¥Î¤ÂxU{U‡ÏÁñÂ5¡.V/ôå˦~>â*°
—sJ›)ÈQ¸ÀmHà½èNßArSô +]4¨ƒ×ÞrÙv£¢;§¹¯{ˆå®òždfþÐ-€ô >¢ïG,K8#š¥X§AsDPbై$Ö`6^YáÞ–ÜB¸möÂm-Ĉ”µ`HY‚®Ç +\¯÷Ô'ò1”'öPž vè²âçChhÆRJo¥–Aâ(UŒ6dZø$ŸÄzñãÇäòŽ¡05~¬Û“°h†÷÷ä¨ØÇëmØ,°iQ +GÔ󶃞·_Z¬ëÈtð#Ä6ô©¬¿6¶ËQ«l>róáË¢ò>˜¹]>MŒ!í;të´"50þåƒM繞I©AîšËÝøp¼ªtãw{à˜,Ï3ú4.ZÇ +\@Íɨ%D4‚ésé@MœK„Š×ì±WPŸ,›ÁÙ@p†ÛiÔ}cÓ™C[ërp¢+cÀ2¿·+[†¹îtPtê (HµÖk*$îÚWP0*ÇMz†¦Š¦û;©ó~³¦R ÑÄkš¥ïû9L ½“@\¡â#X4TGyO¬ ˆ9Ôq¸b 柋ÆGs#çŸ_hÊS½{9qý¦8?+:WAÝ3öFØ“¤+¤*ðu*ã̬äúÕë&ž§NCºËÁÂlÉ(.áag)#Éñ@i°Ò~g NÙ'¤Ÿ>ájÞWáVþ.Žƒ",ñBÉ_ÄÁìÉkO« V¥ëÝfµ<àÓaðÆðî].K—o°.$]ÀÀ +›[zy$ endobj -1693 0 obj << +1692 0 obj << /Type /Page -/Contents 1694 0 R -/Resources 1692 0 R +/Contents 1693 0 R +/Resources 1691 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1686 0 R -/Annots [ 1696 0 R 1697 0 R 1698 0 R 1699 0 R 1700 0 R ] +/Parent 1684 0 R +/Annots [ 1695 0 R 1696 0 R 1697 0 R 1698 0 R 1699 0 R 1700 0 R ] +>> endobj +1695 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.2681 743.8714 203.5396 755.9311] +/Subtype /Link +/A << /S /GoTo /D (notify) >> >> endobj 1696 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.4479 508.2615 244.1386 517.691] +/Rect [180.4479 170.0583 244.1386 179.4877] /Subtype /Link /A << /S /GoTo /D (statsfile) >> >> endobj 1697 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [265.4578 462.9269 326.6578 474.9865] +/Rect [265.4578 124.1537 326.6578 136.2134] /Subtype /Link /A << /S /GoTo /D (server_statement_definition_and_usage) >> >> endobj 1698 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.5441 462.9269 416.2908 474.9865] +/Rect [367.5441 124.1537 416.2908 136.2134] /Subtype /Link /A << /S /GoTo /D (incremental_zone_transfers) >> >> endobj 1699 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [280.9692 432.1776 342.1692 444.2372] +/Rect [280.9692 92.8345 342.1692 104.8941] /Subtype /Link /A << /S /GoTo /D (server_statement_definition_and_usage) >> >> endobj 1700 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [277.6219 401.4283 338.8219 413.4879] +/Rect [277.6219 61.5153 338.8219 73.5749] /Subtype /Link /A << /S /GoTo /D (server_statement_definition_and_usage) >> >> endobj -1695 0 obj << -/D [1693 0 R /XYZ 56.6929 794.5015 null] +1694 0 obj << +/D [1692 0 R /XYZ 56.6929 794.5015 null] >> endobj -1692 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F62 1361 0 R /F39 1161 0 R /F14 964 0 R /F41 1218 0 R >> +1691 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F62 1361 0 R /F39 1161 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1704 0 obj << -/Length 3806 +/Length 3924 /Filter /FlateDecode >> stream -xÚ¥Ërã6òî¯ðm媈K -Bã…1R]}¹úÏ°àd”¦®ñ/4‰&:^a Ö*ÚAt‡©mˆEÖe7[g®šæ©?¶Ð ÓÍCß14«Ú†[ç½y1Ëú‘Áý‘ÝÞÊŒº=Û2˜™ts¿/[*eõ¾í³ªzaà0±°myºQÉÆB„ÝgÏes’ɵ[¹Gß*å¥a¨éYßí›SÙe]ùl·M«ãEµöôÔPNÀës—6ÆFÞœžwµm[6»%V–ï‘2l3×°U -:P%ý¶·Þ@aâÜRøñO«`ƒS•ÙÔÙÁ2` ´ Àê¦Þ -Uý©…Cщ -›3Þ#`Á{2KSƒ';Ä?úÑÜ"”mÉÔä šªÇ›™‘”ƒ¡ô.ÜŸïù!xf°úž¯ýxÝÝÒvŠÅÞJ¸ûsȺ|¿=dÇ£-¶ 1' .aA†ö}/J‚ôm:¬B¦‚¦ýЋ¢ÈÌ)¹Û±LÉ”f/ ý@ú… [:áØKN%P“b’kHØÀ÷îÓs çD@Š€HPàØ|/-Dn‰ØãzaØú©*ÛŽäo«´†ÈÁ„sekç„ÜwZn…UJZCÑ‚ñ"‰#«îqÔ•æè¤
Ζ °RHðŠ>gM<7§'FgqoúZ02þ<ÙSm+§¸%c§d~I9rš´µ½Q›| -¼î&fX¢¼º‘¢8G)…®Q>pÊYæÖ.ƒH·Ô(ÜcìX”mÞô§ìÔ+&5´gT¾mR§X¯›ÔŽŽ±ê80ÞfðÁó®fA‡ -QWMô6!Ö -%3+/ÀöÎH`ôÈ%h3‡cz€dÏ )œ`—lIâ”ç¸õ j:–Ù
œÀîÚh4-̸ŽS/H#gÈ·[[ãnÛ]‰ŒÚ²Å4F{iš…ÁߊØéÈK “‡Ó¥ÁÆ}ÙBC^0x-=«GÁ8ç8ddÜ S•5†™DHwƒè¼øù¬+ˆd'á»·Õq±›r$gŒ)±'Ö;
q :µ;ÈÒä¡oò£ÍÞK¤€Çò™M)´Z<73<H4Â÷»_'¯Jp?2Ú×û/èÀˆìl ¢e”‰‘<Y‘Ï:ÛÿŽÔ×vÞš
{êûr`ºà/A¸‹@G¶³ -–(W£™ã¤ì4˜‰HEl&p´°»¬¯ºa³KI4* -¤h¬Ïº‡¦¼Î«¾°b†BÅÓxn‡€_nßÃe'ñÃŽ¬ŠçÓiäâlÎ(d†Æ;øã–Sî1¥B¼!‚Na+Kv&–z,dÃ*|4ÎZ;·ƒŽwlqùã±*—q$k—f¦tLÆhå¡èT,2»±ð5+ˆ¬°„¿"ŸqªŒ\æÃÉfOۢ˯i„òâ!Ë×\T?e„ßغà7~cgà7¤úþd )D"“AíRV`_™~&›wmûÇGÛvõnå…Z/|79¯HÉ]J‡jà`ô=Ùv†¨LSéB`LQ¹có/K=XÎûç{
²@ 7»&o*)QÈŽc8s -àNÞ%!Ä9t…o¦ZÑæ`ó}V—-…µ!ø5Ã-'s“4}ËmÙ€(52„µ5ì°Ð†NÉÿ[n‰¢Áॢ
3IEKYY¬dK_k¸Ì5=™ÔHI«ô¤œ -m‰õ õи–x³é!Ò„’Oê`TèÀe€Ð@Ð!¾áz¢t@´Ó;€ -=+ÄKR6Of—âƒ+Ì–¹´«TN¶°uéü«ã´¿Æi_‰±d'¥s ÎL““ ‰È·…@EÓ Ñ íXIt`¶sÅ´˜¨–Šð\ɲuµ©æ@¬ˆ_ÌQËC⤋ïxÎà±VI'Y¹…I˜Ë×-Ž¤$C,v2Ђ¡¡ãÈÙé4.u€tOðE}P[®)]Sšáô-
]¼Ž¢Í$®fp#Á“Ð(ßÛüiQî[–UËñ…+%jð›€zI½šúMø¸C+ Ê¥¾Å1Îp)hUoWWÇÂjš¾6ݽy,öMNp%¶NÊÒKÛ¹bû†GYõÔ¶NoFV¾z´å³»—™r¿šüƒÛðT¬ÞÎý'H¯§þ ZþÉ1×Û°ÐÙÙ“óËšª‚},~¾EË€tIÌ,šj_ψùex$˜§â)ÖøÍ›Á±V…s˜JHfÂd|í -é2„€s£(ÐòKUÃL4•Œ–G2`ò ?’P"Ï!U¨(
Æ‘éâÐ L°Ð~BÍ[aÚDoJ0.'W{ä*›‹‡äÈDTLqúµ¸rXŸ8ÒÓ)éRí3éˆÆÑŽ}.AÝxHÈI\Ê€åÖ*ï+ÈöÎЖj›Ðgv¤›Q†ù.§"f‡’s¯£ÈšCäÉľ2W
„‘¨ºAÀ¶*pµ” $6þ£eà›ëƒÜqw‚myA -_3® -ö\Ρì:GSø͹n¹<n³ƒìƒ"ÑòĬ]dréøB$È"Ažc"«>á[ªÊ…ìo8V€Þ媃 é‰ µÒmøû Ã\gÆ)®dŒmàâ¢ò2g4\r;”+)†“â!h†pf?€4m×.õ\ô0íN–}ydžýóh9+õùeÃÙ2)‡›ÍûO?Ë -µ@öÐЃ0´!Œlûƒµ²Oàÿh"ˆÀà &hZW¢ì: >¬Ü½ªxšªNgnŠ‡®Ek~ÑÃ
K5ä")&\ìǫ́*7dÅJã:œ¤¿®¹2Ó¶ôéíH’YWJD £³"»î½f7{çiË¿,¿ò°’ñä©HhHᡬÝK’›8®(ˆpÄʽ%¹G%ao:°p°pò <`»¿BIWÎ$›]k=›Sv*‡(T,'+ÈyKØtÊ^Èæî^ÝcÃ’×î‡2\]eÿÛ˜aá›ÓÄ3c%HŠƒi,Xíʆa©yèJž¢—ã™4Š&N¥rÁƒJŠì$WkóÚ7‹ãWÐU"¡%ÞAl`ZîTOUÒ>ïK²îi<y \¶ÈxzóÛÿjÆÆ^»Rn·(¹J
dœfÕZñ3I½X
7ô:¿µ—êÈmØœÖؼ$ -ƒ¿cwèÅƸˆŽ,ø¼:…ù6ýÚiò²v·HJfœúÅåÀTN5Š†“j£ÌÛQôéõ(Ú!Ç`Ër;òm4Æ‹’$ysëérïYÐ$^ûj¶ùýP–~`i„Y)BÉ´^šžqäáZx€cåzt–‘XtТñGÞ`âܯš²xÓÊb;2|‘Þ°Ò¯ƒÅìÒ,!å1ÞùÌ4U€RõJ}2»‹¾îg+vÇ3*2ó|ª‡C:"e˜Ø½wŘ_<rCX;KS¥¬ÌÜ„þð@|v3G³
lÓýâÂüþEhòÈ[é‡ñâ5îŒqåÊãO -!D!á‘YR>ü<÷’ôÿÚßÌtendstream +xÚZKsã6¾ûWø¨©1ÀçÑ™ñ$ÞÚ8Ù±S›ª$Z‚,–)R!)+Þ_¿ýHJ”7[»ö`á_]gqš<ºNó(ˆC_¯vWáõ3ô}w¥dÌÒ
ZŽG}ûxõÍ“^çAžèäúq3š+Â,S×ë_Ÿ¾¿ùéñö뇥ŽÃE|XÆI¸øöîþ3Sr~|úñþËÝw?½ùF‹Ç»ï™üõöËí×ÛûO·–*‹|¯e†|¹ûû-·¾ûzóÃ7_?üþø·«ÛG¿—ñ~Uhp#\ýú{x½†mÿí*LžÅ×Gx •çúzwÅ&ˆ#c¥ºz¸ú‡ŸpÔKŸÎÉ/Š³ ÖQr½„ÁYéy)‡AƒÔ–i‰N—²VsRv£PÊ}k‹~¹j?¨l±,ºe·/Vötï*Nƒ,‹“ëñgløQ3|è*ÑA–$ù”‘ÇmÙÁDjÑìû²©¹},„xèì[ᢔ.Qheüè~îŠ+”åo:Û¾ÚVˆ´WØ5¿®Š¶-‹gù‚ûúC+‹üÆáoZG(‘o¾¨h´
££À„a›Gþk2‘xä™rZ0jld +'MdŸiºèŠeÒ±xã º +~åó¥fÓrO_<1—„iÑ4>-3,TèÛ«²*û¢—«¦X—õ3ÏÐl˜ø¯¦–îßÂPWV–¦ÃDVøñóýÝ/Âî[×Ûm1t{cãï·|>°ËgÂo϶¶-0AºóÌ@.äyÿÈOÚ<?ÿøÀ]±Ú–µ0a¶¸“áN…’Eþ‘ŸOM¿å–p Kç¯Ò@gyöŸÎßœŸ?œj–êÑù»í¬Ý~¾‘-Ä—ØHãÀ¤*ÿ«\´s;A-Œþ¿û µ´ ’¦žèmmœEÇp[øãÅ— +ôÖu¬Vv'ýQ^I&Ð`e‡†Ç h—òQù\7<á:8CpÉ$…
‡*yKÇ£.c©…+ÖëY*ªå¦mvËâÐo÷']+ÐÇ3˜ÕY„:ÔïsèGÍ°8>ë ÄÞ [Ûü€w‘_Ç/«¦f`l*$3ö<ÙmñZ¢EÑG~¢ÅÑöØ´å«åSW,£[´ƒàH‡‹ãÖÖØR0MN@‚à5ƒG•«-7+xArϺèq”2úñìábÓTUsô³º¿ùáÖ»žÂ«æg'`XÖ]àGå ̘ý“æ7JZ`‹ÄÏ^Ä«ÔH¼@÷ZŽ/íetöec÷˜†6¡kzqœœV¨ÎêÑKñyÁ¤k»)UÏž„ÖFË¡3†B~cJ)ì=YîäÊgÖ‹ôÄ'©\:=qI#] +Q8þŒ yíæ4ýP¯mW¶ÅSe?¢S4‹î€Ö¨Á!@ +£Š$YÜT]ƒÚ ÁSñÚ”%îÔHÆ4¼ošv>ø!gzªÜ™rJ=¢¯@ëö–ØâaÏOîfC0‰bà”=?™)°oº®5`²ýsoëNºè¨ÎØЦgŽÁY.T×T¯boGŽè°Õ*ñådDz³Þôè¹gx-ù¬b úÇÎÿÔìÅØçðú*$`°·b·'}×!ØÅ©¢"v +*b³è^:nmš˜0µæç¿ðS4»q +smÜRÛ¦ëÛÇaƒ6&H³<ÜÞ4M L«f7ƒóY$‰q1¦pNŠ‹«4pÝs^÷ƒ'°4AÚŸ@›,£‹Én: Ã… +ù¹+Êʳ^Û~†ue¤üI6Š +‰½€mWTI;t› #é˜0Ý•ÑÜȼ¿pqìïðM¬êTôÜjê¼ê„NœiiúI°:·7˜+ŽElQE¬Àð<Q` ¦Âóh« +Å +RcÞW +Ì:=¾KÔw™½ +~=ɃFµ‘Â×Jºƒ½œØ’›a¿Ss9QEJ¢r?õR˜BÃ{µ´!Àá¡8>>n ò•Ìi\ýW'ë9‡öd!o÷¾OxÚÛ?¹EûÆë·w³ =B7‚¢É»GѾy$ÇD!Gæ'F-‡ý±ð!yÓÛ¶EÅE;£¹üŒ½¬,nXÓȲ>“ÁR˜ñØiï†g¤ìnF‘$¥4àÊ(vàæ^|JÝó;Íâ¼&6\ÞM<Tý(]<”õÊžŒt§E£5Ë#Ác, ŒeÁˆ9¬tŽ*‰ñ`yrD>ýKbá 2l3L‡&&Rg!¡ ¼[$}xŽ"/&L9Ž¦‰pãSÒA–Cû]P5—@ué¿ŸìwK¡`œÁ&ÈÜ +—|tû†J&yWî²x øZIumðõöËÏ·Ÿ¦Ë~¸uiY&vçâç°¬~›¤jp;™Ž +›ÙY¡—ýYýWvÿ8hK‘VÓž žO3C©GXZN^¬ëƒ}h¼[º\ö£8±èWÛå®Øïíz‰
pÁ™ò¤Ò†A’Eùû|øQ3ŒL³‘²Dk&œÜmfŠ‹%ÄþÊj¾´¡@nô8åä@‡\CÆ^žw?½F²O$äHHdÈ8‘C‚Kr›èigÃGƒª’óhÐ>!rW6&@;§ä¡s(Eɳ.”¬Æ\¸_Rp|̇òÎT†‹‡L.(c*Z²Þ+Ö×Üå±i_x8k;gæØSðãŶµœÝ–<ZÊŒ±/óÑÒ+E/üçr‡&L8 ˆåÎVhxÃÈŸ~r]×\?¡"W#„üæ$ˆÜDNs#ÙF.Ž8ùB.n˜ÚL<ˆ5ÁV׬^0éùUj©†r>R«9ÜΈênQ»à-ÌxÓknO´Ê„^õ°µJ>Áˆî¹æòÅø!ßæNN!c+>7EYqŸ£ÐœÂÆ÷ÍѾº»Óg’§Ab£^Ï:
7nZ† pÑ+j^ß]h7BaW/ëA¥(ÌQJa˜kTˆÙ¨ +ð¡óò5:ÿBD‰IÞgÄšádúD@ï„ +Ç&ø*uthÉ…3´rþÆÍAÓ¾äëü€½µÑ.f:AqæA”'Ç—K[ãjËM‰‚r¿0:ÈóØL 8WÐJ‚Ìø»l¿;¼ð“§”ë# +‰Oîmäæš®w;¹Èˆß¸G ÝõL⛃hTò ¹~nmµ?YÀ¦Ø_ŽD¼sW‡ +3ÜI<ÂóóýYU%xé=Ô»/èÀœ–vðÂ7—8d²2Nfä½NÖ¿#óµ}0‡‚w±\ßÅ..Žµ¯˜îv® DǶ‹'Š•(U£/-†IEëa"Q ÃöÊU¢_ì\ŠÀN’w=r<d´Ä9Fj,b(ÿ;‚ˆšqh¥O~h0†2¾Š]µ`|Û0Š¾ýeÃLµÉdAš¥ÎD°t6gGX’J]©³ÃßËìDKeee¼*k)C™D(ÏUóÄ•Óµ£Â_éúë‚Iã WQ>1ë`øI‘1I>‰qfcÆ/Ô3¢Âp2 F&ƒ
6n“î¾2Fq| endobj 1703 0 obj << /Type /Page /Contents 1704 0 R /Resources 1702 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1686 0 R +/Parent 1684 0 R >> endobj 1705 0 obj << /D [1703 0 R /XYZ 85.0394 794.5015 null] >> endobj 1702 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F14 964 0 R /F48 1238 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1708 0 obj << -/Length 3567 +/Length 3746 /Filter /FlateDecode >> stream -xÚÅZÝsÛ6÷_áGy&BñMðÑMœž;'g»wiûÀH”‰Dº"ÇýëoðC‚¤xz3Ï„àb],~ûˆâœÃŸ87–Ù\æçY®™áÂœÏÖgüüú~:g™¦C®ïÏ~x¯²óœåVÚóûÅ`.Ǹsâü~þÛÄ2É.`>yûñæýõO¿Ü^^dzrýñæb*
Ÿ¼¿þçµ~º½üðáòöb*œ“·ÿ¸ütuK]6ÌñãõÍ;¢äô80éíÕû«Û«›·WÜÿ|vuße¸^Á.äϳßþàçsXöÏgœ©Ü™ógxáLä¹<_Ÿi£˜ÑJEÊêìîì_Ý„ƒ^?4e?m3R[°¤b™i#– <™æ,s¼72H9r¡‘çUÓ”³iYŸWåî’…äÌeb0$%¾ãJÈ—ùB挒c®HòT:9ywswwõ–ÚÍöé©Þ´ô²¬Pµõ©™æ`Vî'ªŠu9lC±Š³<´ As;ù¥Z•M$•AJ[ÓpíÃaÆä*)›„‘±\É(âMBWÃT–ŸRT1Ç¥\ŸËÇâkT,Âs¹Ï ñ¼ŽUÝâ”çS%%LM…`¹1ÒÏÕÛ -êíB -¡2sî¸WBÑ’-ØÅr1VäÒk€QUL¼rŸ4ˇªhšbz~,+êýZn–‹Âtô HìĤղßCìíý^’{U<³âóAßM\îʶõŠ!JÚG@¡U?… ŠÔT,È¡©»œt0sh©b’[•¾xÚ÷™³ÌºÓ•˜v:BõëvU•›P¥’ŠþIf|Z/ô^´m1ûÒDÉ -þ¹-7/«úaWpž1k\~\pdJí'—Ìjˆ¤#ÉwOåÀë×!yaƒI*'ˆš=Ю½y¬·«9uø¼Ž´¶Ø´å¼›%UI
ELÎÅéSŽë>\mÚÆçe‹i'eÓÖF˜
¹31ˆW¦+l=rAY¬ºi `ˆiH9à$Fíæœ%f -’ÒLÊ?·>ŒKK c$1ê¤t -‘Ç«?5¬–T8ª4Bá8+é~°ûn„‚4B(Õ’ygüÝ“Ì -ªõ¦¥NF‡ÆpÅDYíì‘nv¼jõfÙ>®I -ðràÈ&UKÿE@ãÕo>>¬Åß•x¸ŒÍó+Фâ€óݽ†®VâqL2+L>ÎÜdtük¶!¨ôÀ°¦>ì¾àæ:ß;î¾®#î¹z÷]Vmù -|*7`[*Ž×ãNu1'ýì‡^KÏâUo¨‹~>å„°?Bw-D àèG‰XäÕg8x¿ÝÁ†\Š g]ò¢aP%*1L|JÉð£¶f:" x/©I7b Š829; UT[«mI#öd$§(¿-›0” ðüŽ-Ý}ï±:GëÐ=Œ³d.—s¡?uÿ0uåËU‡_(LÞyxï€v1úüVùø
=h±E”_oÛi½è¦ÉÓ$Ò¶I˜ãBèáÝÿÔKô³î
ç¿Ê0ƒ eu®ƒU¸˜à•¦ä‰½Ãΰ~èŽËâçrU?µŸã‚aqÐêÂÅÀ(ÐÓŒâa›C'T¾®ŒELŒG"_W
-æ
õ…{dhÅò\w1ˆq%ž}ÝCÕ`<P +xÚ]sã¶ñÝ¿Âo•gNñèÜùRgçj;mf’<Ðe±G‘ŽHÙçüúîbIAr®éyæ,–Àb±ß€8áOœë4J´çÆ&‘Ž…>_lÎâóGûîL0ÎÜ#͇XßÞŸ}óQ™sÙT¦ç÷«Á\Yg™8¿_þ2K#]Àñìý7¯¿ûéöòÂ$³ûëo.æRdz×ÿ¸¢Öw·—?üpy{1™³÷¿ütuKC)ÏñíõÍ‚Xú92éíÕÇ«Û«›÷W¿Ývußïe¸_+ÜÈïg¿üŸ/aÛߟő²™>N kåùæ,Ñ*Ò‰RRÝý³Ÿp0ê>
òOÄ‘T©0PÊ3ikõ¹Ñ6J•TŽ÷ë²ÅM¥³M±XçuÙn°«g‹¼&x±Ý^ˆlÖÔE³k«W.ò][bÓ‹-AÛbû\ly¾®¡ñºéðX>Ôº„4è¦.û]Ž¾„ßuQòÌ‹ª,êîBÌZ8*%³Ù%²ö?"²ZK·žm·mËú>” “Dí—²[Së¡ñëOÏ)¶ô,¯—=(¡V]t/Íö3uM]‹®lê– +Ðü¢ZÔ4!“
é…û«£‹½„‰£Í‘d
Œ£t5|Âëbñ™š«fËò–àAß5$DO= RÃ9A ÃoàŽ +?pç䨀4L 0³n_ŠíQ`Z¯7{VžV=Àe@¹£#"#DzžJðG<!͇XäDÀ£öX¸×òËÊÑ4_m›Í| :«b[Ô‹¢R#´Œb_ž$§Ç +Ð3tPB›(Ö:ôo>”o>&Ù +<¿;œMÙužgRáwÙ¼ÔmGôç^E¢¥ó6´—ÜÇS‘@ ‰„ó‘z†oÑP¢,¢×¡ˆz‡³ö‚&‚Ör·¡ß÷·¤XTÞåkoÊàdí;lg>„B…zêÈ1£Z0àë¥yˆ/åcD«þ’dB£øòTÔë$$c +îY[õ×Õöû¦fq5ÇñUVüË/ªHfFʼÍÈÊìy ¢JLŽ¨ó5Òœ +6YØš(Õ™=½°G +,<:ÏXFi–t´òÝS± +g³š Œ&ƺê#ÖS\¤'S½2ù G +J¾e¯Ef"cDvZò‡XÇ%¿Çr™:ÞîÏQÚ#u¨7ﱫêP“åý3Û›0Å'†0ºÍQl1Â'ÔmËEÇ#ÎøÂÐboó߶Æ%\„ÇFûZwùu—2øQ±íò’—]6jà +gÁÏjÆ5VÓe•‹]–QQ-YùR´„€æÑQ¶nÚŽG¸&@–ËŠ@d +xŠýË KNÜÆ:÷žÛ€wûñ=áœøK_íæ!5ˤàEyòM³,ƒÌäîÆ®Š¦† ;oß½M¬û43‘‘ª#'ÐîÁC/”ñWÍ +ò·–8t}sv):ö[ÓPÁçhqŸyýå×Ùû§ë‰¥ÌŽÔ@!É…l &a¢ÜÃõä0äg܇¤ÿ=µ endobj 1707 0 obj << /Type /Page /Contents 1708 0 R /Resources 1706 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1686 0 R +/Parent 1684 0 R >> endobj 1709 0 obj << /D [1707 0 R /XYZ 56.6929 794.5015 null] >> endobj 1706 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R >> +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1712 0 obj << -/Length 3339 +/Length 3292 /Filter /FlateDecode >> stream -xÚ]sã¶ñÝ¿Bo•g"– -oùO»mu³h›bÑuÕøÔBÇQ–‹lÖ_új‚Ùã@heF‰!ÿ~´5\½óí¹Èæ¶Ûmëò\Ìë»î±Ù–]Ñ•ÏQñ¼¶áÍOkŸšºµ-¡º†o?^âÝ–4Ï[Û1Ù#/xw÷aš5!xD¸àRPQ.
žVD¹ÖÄ;m½lÜsE -t<…eLYÓ“Àé@¯]veã‰z‚dp¡ôV!‡~îÊ®‹]ÕñÊ-27´4I$Q!bÇãÁz¢,’(OTÆ4ÑugJó4Jóܼ®x}ªÓŠ¨&o±,–p±ú™ŒMg¯³¨&ø9KÀ½1d„ÔOäÉY(QëD®æ᎚†o}M#2”Ž0¹Ó7Ä£¾ç´
'~tÚæ0<»'k™’5⽬‚TE"‚’—œT€<JEmÝLI_D -wÜ=ŠÎ.@äËO‹Oí§‚OÁSˆô
ÕƒÓš82¹ñ@‚WŠ%¤”vò@„“ÁØpô¹¨vŒ7á.5“Ê"£Ó7ìÎD¹’†i¾‚å´ž»{`üÖßß~OÀ}Éû—Ì®=%è“=_ÙÎn7emIe¤4cb9tZÍ~äÜ:Î=6»Š½Ö=îZïÇöä©z°µÝ‚a8ñöæöêCKð¼!y¹àÝvd8ìØšÚ:ƒ; - G:Õú/øë¬ç¯3§9GÿÌ7»¶£
ï-=Þ·²…êö
-)¡Àqï¥4yMÐV4ZT˜%>nh„¶|Z‚A„’bÙDBÚ‚èËÊŠ™i -¸ÁÇwÃù”çˆ9Æw7Ãé)ŽóŽ †²A7b‚IŽ«†¸0Åu7^t£ÝÙ“D‘|Â@$e2÷IB½ì%ïe`øB[äœ!@Ì{MrÄqžÀäªËM öWeP”õ -ý¢\Mߧ¡dl"K»ßu#wRäpq.ÛNC]#i¯šŸŽ¤Ô,Ε8Iaæâó”€zšÜG®¿@1êG±‘é0~AW!•‘Îý%U¥» «õÄb"‰L’¤_dö=Nì«^.-ºpÍ/í\A†(Sùv†({f~201ÃÁig/$°go8ûÕ+ÎÞS!‡Ýö°è–O‹]omû8Õ®S -üñ«ª Æí:%ôƒ»óÂKP—C>ü®9ùxäAªŒ|U \)Éœ˜ß½û‰ -)…4â=eH‚›À8'#èÿ£÷e…-µP7†üÕ5ïTšý×Û*Ùj"ÒôÿÑGSie(ÎW5¢OuZ#Ußg`‘m]³(k‚ÇœÈXDª’×Y T¼ô-ã4’ñˆ—‹ªÂÖ‚9ÖþJ‚[9ÔŦ\Žõ@Pí‰Ãݶ¨Û’óvÀ“5í7Â,xò ýPb¸)#¡Ø¹ré¯ôža¶ÈSì‰5`W%—ý™™ß£bgèFe©»Ø#Íš†9—6½\ÚŒzÁ-&¿R’‡¥%QÝ Ôîè}Rã\–e_æeqʱ
W<Èb3¥Ð ¬4d[E¡áFXžÓ~*\ñ,KÈ_Ülˆ–R…4@—fHÉQU*Ÿfà¤9GO'»B§,3’-w{õ縘Àõíå;Zy$æTBr*!C–Ð<[^á¨yøæO7ÑÄá|ŸƒÁÞVÕd…zåZ©ï1¤¡5âò´–pȶrm Úéœz)÷ «Ú†0µ]Ú¶-¶^›ÑtQƒý4ýÓy.ç7?Ò —€½ó¾àrªé|ªà££Jýµ"´,vØGL#í]qÁDÎxàY„YÍöØP_‘µ¥$LÕ_£oR)·Æ®:¢ ^’¹ýü¦e—Tö¦ ×fÄ™ÚøL'kÆ—% §«]sgðA‡;œë]7èpŒu´œo(ˆÛüºA‰a+†S²-ÀôÊî¨nˆº·®ï¨eSÿÇòa*SweÄDšKìEy—Qì LPÜ Å0[îàoÊÄqdâØ»ò±oSÖOÛò¹ðgáv i¸O?!ÓñèóY±D….ï± -õ*|Ö¨J -võ¢ä“"ÒFä¯o¨&v¸{™FZ+5Üšz -r‰ÐdÏé;Ñ€³±6ƒÖ»ŠF\@Ë}%ˆžã!3 -í«iãCªL¹ÎŸÿdÚ'¥ +xÚÍZAwã6¾çWø¶Î{c(’µûö¦É4m'3›d·Ýv{Pl9ÖYòXò¤é¯_€ +ÊÍÌûH†!øVDnÂ׌Óä¼Å¥¥iŸ¡Ñfçn„œúÐ +ù<B +m††!£C)šfÇ‘%£Æ.0õÑ=¬aŠ8IOïa_êøî¤ú=\TmþÞ}9ÜÄ2ˆ5Ö'è¤F4nb¨)$ì… +ò-X×â*ĸk-¦e-ˆ‡X ª×ÓŠXåj²›žDØî@„~ãP}/Áµrm¢ƒ'ï1½¿;×zúoÞÄ ¸‰÷6ñaµ(…Ÿÿ¤Œ¦-@¾&ÒËy$Š¾ Ò¢žðGxÄ£X‘ຨ§á4:Çèù¯EÃ] ×Ðs‘—ù“-fG¶t·Á@×6jš˜,f¶0œÅ,÷`b”¨+[¹BsQÍØÀ^Ó«lm3,Ø.h³ÞÊÔ‚[ºùë];«—Ý0‰7ÌÈ0hdÚ$…pÙ;/fvF;êaä00bi/r`…*¶J(¦·÷øñ6òú¡Ù-˜yY?·…I‚Kbðâ€ê +Ï(ÐÒ;zF±È…3o*d:D®›]‡}P"!5¯« +6B¬ét¨ÁÍrÄ€i £0ØoP쌻PwGú&GÇÞ®ˆ…5é‚=ªQç`n9]Øל\âñ4ÂûÄüÓ¦‰©pöåíÅ»«{ÞîBÆÑF7ÇÑ8cŸ£çÍðwG·ßyÜ<*aÀl*zTžÔ P9)ðÛÏ'Q¥O+ÐIh0‚*3T᪤‚‚ïPŽ>ªbèŠS‡*`9T%Ò¡ +˜Uð +ºõ +4B+v—}}3Ag¬‰} +ò5ò¯- +ÃÏLa¤Éžœz%{HJmýJ¥²w€mµ¾ˆ_sU¯±^A% ãWö]¤²õÏ%á.ŸKÝOýÝýwD<<Áêæ€S¢>âå¯ø"§ëx¾ïŠ¢$Ð*Œ†˜YÙ6?Ùql$ZÕ»’£ÖcÞ]r1ç™"5ÞåU¾ÍÚ.YÞÝÝ߼嚞®ßúë|ˆný×M7ØA—~í¥SbõzOQ´¨²mQ¾œˆ¾oèç ++.‚ì7Ò7ôË‚^ +—Õ¿ñM—â* » +¸Þ†,£(k—Ó€p[i»µÿv>Óø“–xNg ;‘ h ¥ü¦Ÿ\ӆΕžÚ endobj 1711 0 obj << /Type /Page /Contents 1712 0 R /Resources 1710 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1686 0 R +/Parent 1684 0 R >> endobj 1713 0 obj << /D [1711 0 R /XYZ 85.0394 794.5015 null] >> endobj -478 0 obj << -/D [1711 0 R /XYZ 85.0394 227.0652 null] ->> endobj -1714 0 obj << -/D [1711 0 R /XYZ 85.0394 197.3345 null] ->> endobj 1710 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1717 0 obj << -/Length 2753 +1716 0 obj << +/Length 3468 /Filter /FlateDecode >> stream -xÚÍZKsã6¾ûWè¶rÕC<’ÇÉŒ'ëÔffÖã=l%9Ðm³†"Q²×ûë÷k4@ñ%;µIªR®2ÁF£Ñht÷× -ÏjDYì“L…ŽmæX?TÅ*^®óšyÕ6Ür‹¥®¦&{ÝØ*¦6Ÿk¸i¶yé»nò¶lß #ˆš§n6¶l4îªæ&¯ºÞ‰~ÍþlêÖjÜꢡœ¾V/›Çb·+7›‚Ô°féÔ=çÇc¾+gnô5·L|ÊŸ[ì™F8þûoLg³€±-öLyÈwûr}¨ò¿ó‚[ær~"üÃ÷–·´Ž[¶NQ·B„™ÈÚ¥³ :ïóÇb¸>ÎN9§‹©HðŽâÎ$"Aˆ@B/àxxSWÏoi?wmÙšT k2éGÞP¦„bHXoüø?ëfÏÞZ˜ûl¹ÓÅ8Ôµ¡EÁÅÂDYF1Ì»»7®zAßñ¯ú¦A?•ë‚¾X“û„ü¬„J& -eø(4É=×kjL¤‘bf«°2E¹T»„k£¤¤´B`¢(Z~8äÕªÝçëo¼†¯ÅîÑ'ÐÑÌp‹Øãäôjm±x.—ëÞyç -~á´¦5¢ºí±3oì‚…ˆUN9Š(>O6»=÷ÿý©Ù}ëËoõ†ßhnGº©ŠŸ…"”ž,._ßç7eURŒ’°ÍÁ«GÉb&î«Î*.šÉßN'ïŸÜ(JðíË/fèÏ Ø!üäÜ„Æ}ÓzY[èVÖ…˜ µ‡Cii^ÆÌ>×iÌì¸h›nWíqëØ©3!í/ª˜fT §AÁCÈ©Mìí¢]Öù6Éžô¡(q9ÿA—·¢ð„máþ|½7S'vÓpoì·Ì‰v΄N·g笱4éÐ1ö»¼nÉ(µÛü¤@’R&ÕIæô'Í™H¨LT -ä-#=@SÛœû··jPo -¦äpe¦8A qQ=†Ž{Ïæ£yJÄá½QZæÖ /ïOLÕ²ôÏûœg¢Ä-Ž(ì¶hx3{þ–ŸäHÔÒKçMn©*sÎ^ÇOÓ¼_d:UæýqŒ%±P±C¬¹\Uƒgálí×r¨+Ú·¡ˆw!ÓÌŒ Ð{ˆÏÆÃŒíÙ‡b6÷l7EQàli§6'¢|Ýl·Î³è¥báEeX!îæR·JQW&‘õ¤õÃWfÆñŸê`Ž®H›à€¶ - Ê`úáPÉåÓ}¹¾§¦rˆà©]aDt§2Ÿ|üaO¿Ç°¿/ý8G¾`V àÔòŸ'¹( -ñùIц•Îõ8#âÔ«”¡Nð
I-ª4ä幓¥"K2ŸˆÆÛ1²¡„–:%¶ù3Kçc"µnü|mg×
\Uçu›ê µBia‚`§÷tv¤/›Ä3ppä!|†Â~©¹FVòöBºL2™
V:ìVá芼îųj&(Îm´ìN¡4æÃÁÈÒÚ‰êTŠ$¨f¼¥ð°]ä5Ráí¡¢wÃàæã‡s$n’Ñ‚¼[&ѱÌ-_&Ø”nú -Úa+$*g«úqØy!¼)*Ÿk•¡÷×ÁŸz†BYºŽPwiyÃ>#ÁÊå5þ«åäŠ>µ„¤Gº¥î&zñëBÚ²L3S¯íÖz´#¼½ÜªÅ‡+Zôå¯ú’Ý¢Iz^©´°ØD±6VIÃçGkç“tdX>¯ÖùúàÜvpRËè»@H·phY¿ø+oÈ¥ç±È¤#u8[ôØCå5š5ñ,c3T•.ú{÷ûÜAcŸm! Ž_9~Ÿ³ú÷Ì]§km^)‰•ÞhýÊ'‘Žk”tW\ï
ðH‘3@»¾ä)®x¤6’C
†x¤x„fլݥN&ßFtê‹š]àaÏíÂ`=0ÂÏ.¯¹tÖT±~BK/ç¡iýG8¢S±âJ[â@ÿ†*ãë$Cu'rl½t¾IÊB&¤f— é…Qô,k*‹]W«Û|íN£ž^ì@ü7‡=7è>á(ξ -,þ³gis×9a®˜ŠÖ'uºk>—×ÅT¾+CAõßPúùß)XçU´§Û×Pb
6lþ£á·¡©'ŽÜ±‘É +xÚ¥ZYsã6~÷¯ÐÛÊUB¼jŸœÏ¬s8³¶S[Ù$EY,S¤"Röxýv£IQv¶¶RAF£ÑèãkÈrÀrF"JU:‹S#Â@†³|{Ìaîó…dž…cZô¹¾{¸øö“Žg©H#ÍÖ=Y‰’DÎV¿Í#¡Ä%Hæ~¾ýtóù—»«ËØÌn~¾½\¨0˜ºùñšFŸï®~úéêîr!“PÎ?üãêËÃõME,ã»›ÛDIéãŒÐ»ëO×w×·®/ÿxøþâúÁŸ¥^h<ÈŸ¿ýÌVpìï/¡Ó$œ½À—@È4U³í… µÖŽR]Ü_üÓìÍÚ¥Sö3a"Be¢ÙB‘ÀþÓV–"–˜â0‘VÚ[YÉ)+;.´òªnÛ"_ÀÇSñºxjŸšºzŸ]FF:fý
NÔð\z¨ž2JE +%/Èö—2™´Á²é6´m[t¬IC"LËH‹D%1‹x-Ú‰md,Ræù¥¥skX»Zº-ë²~ÄÅx¹©H° i*» +˜Ðq8ÿ=ƒn“¡Ràªe‹òÙcx)ê0ê6
~¸ÿØ—eG8’nEUñ</8´ÅŠe4¼ +RÊkmËœhì0²ŽÓÝ>«Û’âéäBÍ–fíA¸¶ûUðÉGt3À‰¥¦…À{‡ŠÉË„Ý¢!Hˆ†£â|¨‰“ +ŽNâù=;IÀ9ª¢#gj†UXEpš|®"à˜Ê)1¬ZpÛX)Ê®$ý탾Oºœ$@ˆä/dX}Ì°¸ÍÍš”°ÙЪØLytðÓ#¿âÑ`QâmeAù%ïãCKƒ'èËúJ©´‡0´ÄQEUÚAœˆA#›dáÓÞA±Â„¬ºwó™×ØzƒÛûë$yt 4Í0B1ŒP!4ÏK8z~s§AƒcAθ¼UuF½¢Š÷ˆŸO +^k,Fk‰†jk<Ÿ±‰j‘~¶ÄŸUmC”ºÈ‹¶Í0ýZÙL&C
öIö—ËTͯ ¢Iw0ì÷DË œ‡·ówtWáœlV劆QÏÄ3ÙàÏ̯jö\2vM½¢h‹è2u_F?¤"“Úh¿éˆƒt1óâ뮀ØÊ;÷¢Ý¬sQ¨o“„ÿy(YÓ¢æbÀî£%_wQž«3+Ü–Æ}¬OGÊ×êÈÚBØÜ2á ·
^ 2§iQp%£¯œ/°ACÒ²@/ARÞÔ¿zäW4o{ˆ Œ +U†P¹ƒÿ§ÒAˆ8\> Dp—€[îöåsæÎBxÉGî°' ·0#¿ÊÑ£Ëe…ëMj
«äF¤ÉÛ5P.š}¯ÊŽœÁ*¶ŒØGù.‘‚‡ß\ÈÁY¶¯x¥™UÈ^\]|íx‡r;…áGÑ5¯XMØR HÌ €í²}Ç@r$w&B§ -ošú' ÿ\.àrF/Ù~ÅmèhKÐLaBã±>^ÏÚ.²aE—·Îr‚P–#ÏØÓ–¼„Z/{÷
³Ð¥ðíGä·á¼"ÁL…+/åŠ]$Ïr§DSü}]¼ðŠbÿ\ì±CÆrÏ~ÈYÑaÉ +¤ +™BpªX +i¤ý)Ž&÷3Üõ‚Þó/úNƒþT®
z +©õÛ*8¦ †¥FHøg¨Ã rj²]°ýr=m[…o{Ã*Š\ÖLè¬ÈèÇaœ÷
ŸáFܸ_½‘BWfE[g‚I{g¶ÎáÏwÒŒžjí<:‚}^K#zJŽÛ•C#Œús“'„ÑŠA€Y:tsáüö`O
TÛ-%£Gž8!ãÔÇEõì&6ÌëöÃ}JˆÛTÆîÇwñrÄxŠžRás“ááLÓ»lâ^ aÀffþ–>Ñ‘p¤çÖ›j«s¿å† endobj -1716 0 obj << +1715 0 obj << /Type /Page -/Contents 1717 0 R -/Resources 1715 0 R +/Contents 1716 0 R +/Resources 1714 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1723 0 R /Annots [ 1719 0 R 1722 0 R ] @@ -7438,58 +7421,59 @@ endobj 1719 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [339.2005 701.7636 400.4005 713.6638] +/Rect [339.2005 267.4951 400.4005 279.3953] /Subtype /Link /A << /S /GoTo /D (zone_statement_grammar) >> >> endobj 1722 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [455.0966 503.2689 511.2325 515.3285] +/Rect [455.0966 73.4705 511.2325 85.5301] /Subtype /Link /A << /S /GoTo /D (address_match_lists) >> >> endobj +1717 0 obj << +/D [1715 0 R /XYZ 56.6929 794.5015 null] +>> endobj +478 0 obj << +/D [1715 0 R /XYZ 56.6929 499.1607 null] +>> endobj 1718 0 obj << -/D [1716 0 R /XYZ 56.6929 794.5015 null] +/D [1715 0 R /XYZ 56.6929 471.7434 null] >> endobj 482 0 obj << -/D [1716 0 R /XYZ 56.6929 686.5799 null] +/D [1715 0 R /XYZ 56.6929 253.2977 null] >> endobj 1720 0 obj << -/D [1716 0 R /XYZ 56.6929 663.4862 null] +/D [1715 0 R /XYZ 56.6929 230.8219 null] >> endobj 486 0 obj << -/D [1716 0 R /XYZ 56.6929 548.1865 null] +/D [1715 0 R /XYZ 56.6929 117.3496 null] >> endobj 1721 0 obj << -/D [1716 0 R /XYZ 56.6929 525.2522 null] +/D [1715 0 R /XYZ 56.6929 95.0332 null] >> endobj -1715 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F63 1364 0 R /F62 1361 0 R >> -/XObject << /Im2 1350 0 R >> +1714 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1727 0 obj << -/Length 3497 +/Length 2817 /Filter /FlateDecode >> stream -xÚZMsã6½ûWø¶rUÄà‹ -¥¯— ¬µ•ùUf+aÕ–F±¢’BÄU<·ÊA -W¹Þnûçå‡fÿ²\Õ«M3Ÿ7× ‚-“×r*D©Œ"ј´ÑfªÄ§ÇfÕþʘh†›¥”|ñ¼iW*núaôµõþ†W‹Æ? âÍØbì©ò¡}k7<7{ÿÞ½{¯ßÑÓ¸ñ=¸é"*J¹xóž-˜dºJ—0ÅùR¡ôõRj6FÀüyaË’f—q6wQŠ©Ê÷Ö¢r¥XtýH…¡ñP°Ëh£
Z(³oV‡ýÐö]f8£Šª²v6Üapk¥ö>Žû”¬Œ¼n‡&3:ç -Q‰†QñâÄz?£Z‚ŸsùÁ¥RçQ”Ê:£%!{â*ð 0ËZD©ŒT¡ƒezªÇÄ fF@›jëõš<Ò0 uÔöÐ>5T]V]69`upEÂjtE®Ñ9l¢6€%·g”6Ò-£Î €EDá"ÑCâ¯[b*’ŸrE\ò¶ñ¢hUN´{ñ…ã<¿È SH^pŪ9:3`T¢¨L´¥º[çÀnÑÑL°ŽØÎõÆ -«t0ðópýÀsòWàšH]€k:ãƒ'H-u¡Ä+ã¡ÌøœjÁCÈ©Ó¸©«èË â&qbÜ„7áwWÿî›IÔÍèÉWEp¸76„àÃÃ&T´¾ihöOÍi Yë2T—%̤Ôr -ÞÏ -g¬R&q°Âpo$Ƈ¬9=ÑËñL$?+ Œ¥å³ñ(†á€Ã°†Â§0ærø*Á%Ÿ>™*/MôœWÅŸ.¥W
ùrœÈ:ˆs!‡k`§\eB¾u1ä8µ´˜„œÔ].À–¯—Tê¼µF©Är¡ÅðBj`huˆR%¦T×±G>Õbj²"†)bhÁÚYhÁVZ\ÛjÕ<ŽT97WhöæŠÄV1MPh¦˜EÇ@FÂ?¸ pE'púÜh2Óä|TÙnO¢ -j{Ž[¢|Åy§Rऎp8<®ëñôÌ£JˆAÂ^=Je†Ÿ -¹=€Êáp·kG*ûÒÕ»vEß~øDµ4ÉÀ@ú=Õîêal|ù_ÀjÏ?n ¼‚‡çà -öÏm÷@õÇ¡é®&gˆ¼ºó:l|´`€½aÄ©B8ú›ëýOnblzŽ8œ‚¼íijkónohN°"€?3£ÊëNHð`Ô¸¸¦ÂÇ5Q~™¾pŠšÓ~jšÕØS2…<ÑFÃYETf¢Í r£Ôk:hYHŽ–“ê@rqd¬ÛíyÛUÆB¨·¯¸òTê¼íF©¹í.Açz¿F ̃1 ¦ºº¬H”Êh2YV‚õ¦Ó:5c-£C1˜1fŒÑŒálGÍÊG3ÆgÆPHl*ym[?y{µ _%fîÛY6n—NÝw
=Ó¡^k§¦z/ºñ2ÞI§“Ü8ïàZ’¸“_¾ƒ¨˜,˜Ðã*0ù)dÌ ]ñ?9î#c«À¾ îÚ¢B
œ§¼²ä) ²ój{oîZ¥05Ÿ©°gøÞi!LŸœŒ‚`Ü:ç¤*Z$¨ylöÐÓ ËR2»¸½±bÑ“LÓÕw[/‡V&]Xèùvq÷þ%·NÎO¥n˜7Ì#ÈN6Ù/-ØÂÊ~uvie<.-a¿÷/n0“öTo”…óüÑ'Ø6u—QÌó׶Ø`’7èÛ”éWZ«Y·Éôr½Â -«å`iç§wAê”Â|¶”S"9Øõé’¿F$œy¹‘â2UH¥ÎS…(uô¦Oz9¼t -’w~.Ú릃n¹©üÜDHM‰'¿ný霒ϑ²yr4°ú¸P¦
p‡Ò¡@Mûr¤ÆìøÛ…CoûÐy˜{·áÝ5zƒ~ׄQö]ôJ;ð*õÃ…/8ñ¢dF¿b ‰ÔKRGKpÀ¹oö§G^[Q]>e†ŸxU!˜•Óñ'LY‰2°:,z¦¬„>2e¬Loøë÷§qy¬@ŽëEüì|_G«p/•&*3·~eYh¼ªNé˜' -àv+—ú™`+YÒ¹Ÿ6H¹B¾Û…7!m€”Í„ß$+Cx;…¿ã&›NÎ,2Ðd· -¯A¿}j‚ºtd‚©Y¦6K©wÎùƒéç4W™DSQH¡ÏoüœÇ؈8¼kÒ”(Ö!>Œ½ïö2OCÌ@f’è3Ǝߥ¼r&ÜE%¼¤R@¤(ÍÏÄv¤½¬á/‡V]ñê² -Q*£Ã±ZK>UbšÁ
óײ.üߟÝÉ`ìä3nNó¢ñJädÂ˾[>©ÜÕj•~‰á4x|ÜRžþ/â3[”ÂTñ5w‡ÄÁuÊx0?¤«Òhu©Ôy8D)úBÃY"Ý´í®éã .,Ã4‘¹¬K”Ê(3™·U…µšOµq«‹é›z‡9 -] œŽbÁ7•ñã™ÄO?&§ðFùS3Žñ õ×ã
_ô™AJ[#âscTà1b†Èm¨ÿ†ÃY•Ë'GSì.QŠ»&2üx»9¿ø†@d™Öȃ +xÚÕZKsã6¾ûWè¹jÄà
°rrf<³N%ž¬Ç{Jr %ÊfD:"5^ï¯ßn4À—(Ù»“©Ú-W™`£n +›9u£M4`,\êÀ¼ÍžiölSÑwA^Ýî늸Œ¨Û¡\Š„)04šØë}(]èDé–©n²&ßæeû¨`ƒ¢„p‚Ø\fuö‹›Ä¦ÜÆ
~Š¢>+æÒ®Xá–ãksÎç“jZ‘X“ÆåWxa̛̱cÕ!(«çWA"LV•›gjmó¬,Êûõ~ƒï|¾®vA=¼!Q7-η&¨CËç–%©4b¸üÞ!½¡àã-«|í7
½xkÆÞŠžÞªe^‡ŽÖø¡½jFÖo´liЖÞ2z ÎßV2Qô•ä ø…kK§£PéxŠLÍÿ¹Ïw!ÞquRrËt(z€tG`²‡ñ§³^áÒ6þ ƒµñè]üAª±þL„ʳ®Š2Û=S×»ëOÔK¬½ÉN…‘êD' Ý”ÑZ /nD?ˆÈßDÆùÐà0:8àAt@‚rðœŽNÀ\*}!8(MmëáX+ n/4}p é
=+ðû.ׇƒY¡Ô8àˆÓû{Ì9?ŒaÏ$šðÈIÑ—ƒQã¿õZ¯5Q½"ºèÈ17jxë;ðDÎ`1‚
‡§æékpÚÀ*7C$nžeÔñ¹hƒ¹B3ŽNµˆÚ-´r‰dZ÷=±ÝT8@®#¸"ƒ´ +¼B{#ÓÞĬ?óaFŠ\ +Râ9fÌPƒaN’]N‚æ¦Zf ¤E@JY©®#ã2+©ðØP{”€B ¦è%¤è1¿%à,¯~Ž“ažÇª^P Ô 5xîÌw„Ô‚0¡$…¨‚l¹ŒtUC!6ÛPˆ/UIOÈ€ìó]™mël +‡-/–A Ëc H@†+Ê(
ãÌF‹7]Þa4Þb40<{W5|=¢‹…ë±ní44:ÁTalÝ_eÊÖè#Ð-öNâ›#7Œ.ÌvèáSØMB‚·:µÿ£ØMâr)_ÂnY¤ê/ÅnR +Ð\Ëo€ÝúSŸÀnR¦ÀÖsæ¿ +¥Oaíéô P‚Köê¯pG?)ºýHá}¤ +¡#w)çøeíXÊáp;Ü0‘rpÔÉ”ãÕj¿®PÊéÇ¢“É…C4‘êØ"ZoíqðÖÈ5abS©P½4€ÐNêÐrM(!F—x‰ái ÅÐeE›Z¤hSRG©{}jñ}¡8‰Ä±» +Ýbô)U„l‚ÝÃK¼T&Ö fà³ZÆæôÚl2Òäk/ûñ¤áBùEž¶†ÓqcˆL-ìWYsxáÁïœp1?)ºe:”=°,õJ%ÂG被OC®ßLYÿ›)ëEmdò»Äz·õu%h¿{.³m±$*P•V±‡/Õ±øc +jc«Èã6‚ÿ <þ× Y +JÁà}•{° +ƒ†ŠÓ^‡‡0m˜/ÊãR!}F]ý:U¸îYàм‹²FKö}!àÕù¡@ÎÌ*=3X"ñ¿-¢®Ý}¨ªÜô,¦å^tì‡3žÓÛK¾ô?œñzØDèaà~"œíéq`¯-ÏiéF&’ãÏ:éëXà]åMVl&<5ø—`"'½…µõ¯¯þÕW÷“8eÉF'‚7w'R•Â…;Ö\KÀÑNØ Õÿ
—‘¹vendstream endobj 1726 0 obj << /Type /Page @@ -7497,128 +7481,123 @@ endobj /Resources 1725 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1723 0 R -/Annots [ 1729 0 R 1730 0 R ] +/Annots [ 1729 0 R ] >> endobj 1729 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.0783 507.6843 261.825 518.4687] -/Subtype /Link -/A << /S /GoTo /D (dynamic_update_security) >> ->> endobj -1730 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.1622 385.1227 446.9089 397.1824] +/Rect [213.0783 62.7905 261.825 73.5749] /Subtype /Link /A << /S /GoTo /D (dynamic_update_security) >> >> endobj 1728 0 obj << /D [1726 0 R /XYZ 85.0394 794.5015 null] >> endobj -490 0 obj << -/D [1726 0 R /XYZ 85.0394 131.4374 null] ->> endobj -1731 0 obj << -/D [1726 0 R /XYZ 85.0394 107.8521 null] ->> endobj 1725 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F41 1218 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F63 1364 0 R /F62 1361 0 R >> +/XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1735 0 obj << -/Length 2819 +1733 0 obj << +/Length 3353 /Filter /FlateDecode >> stream -xÚµ]sÛ¸ñÝ¿B}:¹!ø$€äÉ—8©o_Îu§Ó¹»Z¢-Ž%R'Jöe:ýïÝÅIÑŽÓkG‹Åb±ß¢˜pø‰‰ÉX楟X¯™áÂLæë>¹ƒ¹'"âÌÒ¬‹õýõÉëÊN<ó™Ì&×·ZŽqçÄäzñó4c’>}÷ã凋¿:;µzz}ñãåéL>ýpñ×s}¼:ûôéìêt&œÓw9û|}~ESY¤ñýÅå{‚xz<AôêüÃùÕùå»óÓ_¯89¿nÏÒ=¯à -òÛÉÏ¿òÉŽýà gÊ;3y„΄÷r²>ÑF1£•JÕÉßN~j vfÃÒQù ΤÊäˆ -NšSTùÍ -`Õt·,XåëjŠíC±%(ò…0â!F䶎(-…‹Ï4“/$⦉KH¯ðÍOójñm:3Âê[‚äÕ4i1í>"Öu>_–U¼ä²¢gUìh -£p]™<-»øü “xvÅö6Ÿ
v–f-zÀŽ†_/ÇlRxÆ3}tØÙC6r^4x¡r½Ù•)…¯ütß‚ìj‚iÜ~‰À Ý嘰H¥Z€ -”>…é.¿àîsJ‡cA´sa?O¯%$ZQ°®ÂJBÅ£s„DjÑI°0‘ =QƳ,!-C…„!íž7Å2@_–¹>?±¡\@y3v°CØ¿MjϨ[>ÃÔP’ÑÂH„Ô! ü»r¾_ -’æo¾s¡ xý“ÿe ñ¤×´¢E&¯™·Ø*R|ÿ¶Â[¦´r}MëñÓÍü;Ñþù¢]ø\!9o7îÍ›×J¾ßá%•„â¦$u -%t+eMHjUÛðˆÈ,.©)·@hŒ:-͘”u‘yJ³¦ÞoçÅÈg-z?ijU/%‹E”ÊLßq†ââ¥õ8FqÍ>¤y0Û ð™±”J BÛUØ¡«€Ø5‰`1qV_RƒqÊÄIZ|H5¤{Ê®lƽ_j‡t½£+5Uw긡0´%Ë´'tL JmLÄøókŒk“8ÚƒnËæ>;¨Uð^.ƒø¾.w;òÒ$.œì§ˆšœÙ°! -?®(ÊÛÔF *UuP ¨v*ª:šÜ‚M×kBØ„"tG/Õ~}SD -·A7Z\¾”ÿè=îö‡ -€î]ÑßSB‚· Ø~iUE ›Øà•4`bKÕ§F‰·©¾yR‡»ÕF…./ñe‰¯ÐÙˆ¶Ó2hS
~¥ˆ(UB)F“Ô˒U -–@„Túàö&I¹;mgSzÈê¬Y…-i›uQb&¬bÏŽÙÓŠiücøÿËÝ0‹‚¡“ö¨ -‹;F8ñM^ T´?F”E2)Ú -%zž—Ó¤Þ&¤U¯”ñpY×£>Y¨(¨ÜÚ?bòóe1¿ÇaFÝjgR¿Õôºç0߶|aŠBZ]™7T‹‡rÜ›2! U©óQßmó5ýs†sXé@8 $Ôð$Ùm±å[<¤Éev`fý]Ü$z†¸œ+.£7òÓ0(6Ëby2Ô\ ·¾»ÐTÙ -¿‡ù‚·Zý‡?»8|“‚>Ñ99þE…´Rg ™ -…ž;â<}ŸqÌú +xÚËrã6òî¯ÐÞä*!ÀÊÉ™Øɤ6“‰Ç[{Hr $ÊbE"‘²£ÝÚߺ’eÏTb6F£ßŸ$ðÏ'©f:ÙÄdŠ¥ O'‹íU2y‚oß]q™¤Yë›Ç«¯î¥™d,ÓBOW=Z–%ÖòÉãò—©f‚]…dúî§÷ï¿û×ÃíµQÓÇ÷?}¸ž‰4™Þ¿ÿ玾{¸ýñÇÛ‡ë·)Ÿ¾ûþöããÝ~ÒDã›÷¾EH†Dîîïî>¼»»þíñ‡«»Ç¸—þ~y"ÝFþ¸úå·d²„mÿp•0™Ùtò/ ãY&&Û+•J–*)dsõéêçH°÷ÕO“ŸJ-K…Ò IÁ2aŸ”93œ’Qœ¥FÊ(eÁǤ°œ”óͦ~™v˼-f«zÿ’ï—eõtº{n8³ l»¿Ä#k„Ñã„ÍŒŽ¬|Ú‹ò×$Eg¡åôe].Ö8\×MKÐ|Íí´ Ç~±Ä—¶Ægs˜oËÇß«|[.èåÃ'à~›“i›ü¹pŸÌ²”q+ÜŽ8ËÒTxþþSW~JJSR1øŽ‚s|-=3ð Q +CHM:½-ªÖg£<®2k.òÆç¯ Ú-BjÔ¾\úúá27Æ2‘Ú 1´±&lµ'>
\®¿D|YbÔé‚]®‚=’ö„xCazP,U:CŽAÜñH NN0pàõ²õB™½Qëv8¯X.â¸MÏ7_¬ëÍYbÁ(A!ܼ¶hÄ9[u`®‰f*KËŒU +áÓ6xlJ—•ºQ½¢] +p)yô£1Ç‚*,7ò'ç‰@®µ£ñ‡b_Rû5‰ÂÁg†ëY êÍsØÅZI1›i5,•ÜÇkÎù”éç°¢;á^,EjŠ³\1àRØ×Á9awµÁ2D‡¶¦õ/iåy$Á”IBT]6t×Û eÝõTÆIˆ½ª }¬Ë*±|® +ÖsZ£CÎôµæ`
ƒmY•ÛÃQ¢.ñAsN€¸dОŒ©’bZÆFM$Þ†µ·ùŸ´ +@GWÉÀ7¥YðMrtÚ~ìJIm¡šmQ¸žr‹Ëµ×|Z,’f̬bl
[Cþ@ý(X[ËÄ#agŠÕkéļˆù=¦åXNéQ–€ÇšI×<OÒxSÀ5K¯Áó%ϸÎÔ*_ÍÿPÑ@VÍ…¶R‹Ìeqq’ïáÁ‡]½÷gR—4¡Äc<vcŠb~ró 1»—^Pôݧ#‚çÔŽf¯ðáÐ Hüâc)£‚Tƒ;qã8]TàDGv>‹¸;Á,s47ªô3H+É,Âlóß}Ú¡\1ŠO\$wÖ¯R/Òð}ϵ‘\Ë m.ܸNÒigÜ´´©šH1>‘æs®fˬµã3³HqÖ'éýä€? uœ4Jt+cuÒbè0™BÉ—fÙßÈd ø“)Ž²fȤæo'@³4#é©k0êàËa„ŠAç\á çÁ/HÁØë‰Î
Œ-!½›OœÄYs%“’“2†ÒT²a¿áb}Ó!§ò4%
™hôI'ÍÞÁ•»Í¨u&FÙçX`ÖÄ7VhA>ý ‹v}…ÅŸù¸¸±£™g™¤vÀvÇ¿ ‹(Ù™avp÷qÚ:™‰²s#¨¦Õ€Ú?8xfÉ‘ƒ·¯¸~í^V’‰»éâ]|€¥ºû!º÷ +8Š¯Cg/IW¥¡pdQZSDlE®‰\½+€Q´@xmŽ ®-Ž×9Ñ)ªúðD|Ý~|O˜‡÷¤ƒøÂ{ÑŒ6a“é¯P6G+[àí¾Ãðü*¿¶u¿ÜhêÅЇûw*“ý@9ø–*Ëp—®d°ç +v’û8aI8€„êÐàT“±6îóÞn¹ ò±Ú;¿^†q/Q” endobj -1734 0 obj << +1732 0 obj << /Type /Page -/Contents 1735 0 R -/Resources 1733 0 R +/Contents 1733 0 R +/Resources 1731 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1723 0 R +/Annots [ 1735 0 R ] >> endobj -1736 0 obj << -/D [1734 0 R /XYZ 56.6929 794.5015 null] +1735 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.8158 647.9776 418.5625 660.0372] +/Subtype /Link +/A << /S /GoTo /D (dynamic_update_security) >> >> endobj -494 0 obj << -/D [1734 0 R /XYZ 56.6929 291.4983 null] +1734 0 obj << +/D [1732 0 R /XYZ 56.6929 794.5015 null] >> endobj -1737 0 obj << -/D [1734 0 R /XYZ 56.6929 263.1273 null] +490 0 obj << +/D [1732 0 R /XYZ 56.6929 399.7353 null] >> endobj -1733 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> +1736 0 obj << +/D [1732 0 R /XYZ 56.6929 377.2387 null] +>> endobj +1731 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1740 0 obj << -/Length 2567 +1739 0 obj << +/Length 3037 /Filter /FlateDecode >> stream -xÚµY_sÛF÷§ÐÛÑ3§íþ'Ù<¥‰“s§ur®2s3m(‘²9•HE$íúnî»° -•¦z²>³Îgé)«³_Îþ¹8˜
KÇüçL"\¢ãj=æ@— -o´ ,«¶Ø.³Eû‚½–
~]”Ýeå*›¯Š¿ãAJp±· %Tٺșk¨Îë¤çº/W+RÑ5éhoYé¢ÞnÏUͦ®ò²º¡ùæ¡i‹5±äÅ2ëV-Ml³ê¦xã$Žj²½/0~˨dž}eÛ ™“©Ò©0Ò&0R"uNëûŠÎ–u5ßÓ¦ìpër2ÕZèD§a
ÈžÞÙi—o¦›zò§^Êè?ô fÒPImiä3î
ÿû&Ø#í2ýëdh0Vh“Wu[|>µÚGëìfd5þJèhpô54ž3é–Èú›”zQU»z ú*"nXâ²Þ2±è¶eûp®”Š Álb£·4•My®@D3—ÿ.ú¹MQ嬻®è{—m˺câ&›Ž9p AÝ`DXÍ; “F÷
¬Šm¶B³‘Lû^Ôë5¨#Ž’W,êªÍÊŠ~d-M®Š¬áyåMbiÈG…¿IÈA&ÏK¢¦Q½¤YpXÐXo€Q ÜŠgÂjVMM£öTì0òFyN¿¡R¦8N~[TD„ÈÊi´Îhr΢ں&B³ÎBâ -ïcÇ0,Fœ …ôÎ…úõ¼ øü¼( l`
o‡BF
v˜ãl¿KÀ@e„Ñq|˜Ncp†e` -kRÓ‚,\W`¸*AÐW4Â& ”].yÏÝâ–û¯„(?p4Úí#ÙhèüªÅªË - WªˆÊIÍئX”?ÄaC•&s¨·‹¶È± ÑlS´4…ÇŠ„¯]±} R° -Ôø„7kèÐÈpQì/ðȼ -¡ôšš««P¦½&J° Ç:ðvèÍ Hòê3Üä+À27Ö´âKz¸>…‘гÅxëÝ°LºÎæDÞíàQžÚ4ÌšSáuÙ…iìRŸN¦û?•¼:õš<îý[ÈŠ½ð1ÄÞËwÚ¯8…#)^C ðŸ†åbaµÖßF”‚~<Iô·‡‘¡ä'`Di‡ºƒþR‡ÖTQïoA(EÃðn‡ƒ‚y ‹¶DÉë‚ùCÓŽº¹ôy(EËï1?[*u±¤¡/ü±ƒ -üI7òZÑÔÌø?ð¿¢å,=•!ƒC~]Øü_Äá;YbÇê¿Üã«ÿ -ºy3ŒŽÃç8éE¢Óš-²Ð×>=öìîÏ¥Ì50ý9”© -endstream +xÚµZKsãƾëW0'S©ŒyƒÝ“lk¹bÙÞÈUIÙ>@ÄHD- Ð(y“ÊO÷tP£]ÙIŠz^==ýøºA±Èà'Ö¤™*õ¢(uj2a«íY¶¸‡¾¯ÏI d:ê‹›³ÏߪbQ¦e.óÅÍÝd-›fÖŠÅMýÓòË¿\|sùî<‘&[æéybòlùÅÕõWD)éñåw×o¯¾þñÝÅy¡—7Wß]ùÝåÛËw—×_^ž'Âó%¯ðÌ„·W½¤Ö×ï.¾ýöâÝù/7ßœ]ÞŒg™žWd +òëÙO¿d‹ŽýÍY–ªÒšÅ#¼d©(K¹Øži£R£• +”ÍÙßÎ~œôú©1ùeSce ”1š2Í•T^€ß6C³Û8< Œ“ñ:K¡UÂ&8pÓôƒk“®Mr<]Üäi!ÆÁÝnhº¶'Yª–·Žž‡ÞÕ h%@¢Ýžhî·jl¼¢¥õ”¤,R¥•]À-¥EV”OùIò,[þ‹Uûá
µþýW–!ÒÒùÌÄ]·¨%¤Ò³Åþ$³L¼®oíëן+ù&¾Ã‰(`?¢ËIÀÍfgÍÌÒµÕ-Úz9¬ÛjˤÞíÜž¨]K4â)Få®ã!À5®¾Çs`_U×ûsa—®ï]O?g&{l†5 bß´÷`¯^U~ZͽÝê½`¢x…wda§zä*"OâQ”†¥'J½ìîˆB¼aë„74¬+žØ0¥í¡¥§öìhòÏY&£®ÙÅéxXœÒ»]µ¯G}t*ÞÇ©®Z©µ†ÕÚÕó’™°ž¢XÆ1m¼9/å²#UÞVïYÑ=ûØw‹mHl"R»ã§¿Ulä<é¸ý«Ñ~"f’½Ð>Ú®u/Wß+¸I©ÌŠx)a?ór‘Kig‚ÖÆë—¤´s«¯ØÕxR-Y€0d ´É¢p‰H£(5‹h$J=ŠIGQRסÝ`ûéÉ”Ð©Í +f6‰G€J£yALÏàõ$Ѭ¤„˜ÍãÚµ1i© КèêÈÎJ§Ò˜b²³’ØÌC÷Þ;VxoO—ÏuªŠò£‡)Ä¿òdéé¡€`ñ^bì‚@a_Ä~ΣØ?Â.áqï +hOògŒž$vǹ¶ÁŸzó‰p$Ò¢TÓˆgY9"ø¸ª¨²A‰Q)JKJQ–¥€`ç•:÷`ÕÝ–ìÎÁ ¡iãK{ØÞ:^áÎkGÆ3ð%«®Eÿq ÷šÁº÷n¾ÿ®€Wí°ãµZ&°„tëø&,DZB³‹ ‡ãy¢ãŒ‘D¾TÀáÀr!/[Þ¬™…« ¾P½{¶ž‘Á‚á.RfáÔiÃ&U6vL&:9Ô»7Žù›¥2¦‰Qß…ë÷§o…P&@¢X5Ý/OXl2Kmy*¶°rΤ6§¬()¼'&V””!eDýQ%¤ƒ«Í¡†<…:)lÀ/àžˆ'¨Dx1†Ñ1ˆâV¯º¦þ” KÀxZÉÇ¥Éò²˜/;ʬª”ÊÌ3Š +¬LH9O¤ø³…s̓Ûm¤xÞ<- ƒÎÈ1=ùÉÓYFˆ—þüJf?* Q¦Ê:²Þ³ÁÒè<VI ðâ^ÇŠ +°˜£ç[ýžtϺejmQFf™´,Š|:‰J‰(TzÔ‚8lxÊžV©Îåÿ›»S('J‘J_Ošç±Àc„¿Ë/ŽN"HDYd*Ř£°ïyùšÞÙZ€Ží,™Œø¸|êSŸMUän¹¥*¸üjíVï±™/›;"Qª +nç +µÇØí[¦õ‡;Šv¼j ›Û| ú†BÁ=¯ÈUQïV‡}3qšÕËê³B“؇",nþéBßε5ïMÅW»|¨öMw`â®JbÅO°IZí´ËÛêà—GT…¶à
6È6’éÜ«n»ušÂˆ†g +ÆwR¾¼q÷ôtí +`Lu¸Eð<ÉÞbñ^Á²²¿Däy‘“Ÿf0/_Ôýb^5ämà=‡tZOà) N @|²(æöógþ[ÀÑŸÑg€z†x§ð¿ê;üÄ›–|—¯t!a’MO¿@>Cuë
¼ +ýŽ¨b«Ê£î4ö©ƒ]úˆy&ÿ„y€±
Ž_Q‰c½-¢6O„‰O©Dà!YO«{ÓÇã¥usÛD!)dô儾£gßm™
¤TMDâô«$ +øo .¼S$„¢·d˜Š%ŽëG0àÉ´j€{Ü1†ËbÅ:: endobj -1739 0 obj << +1738 0 obj << /Type /Page -/Contents 1740 0 R -/Resources 1738 0 R +/Contents 1739 0 R +/Resources 1737 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1723 0 R >> endobj +1740 0 obj << +/D [1738 0 R /XYZ 85.0394 794.5015 null] +>> endobj +494 0 obj << +/D [1738 0 R /XYZ 85.0394 565.2444 null] +>> endobj 1741 0 obj << -/D [1739 0 R /XYZ 85.0394 794.5015 null] +/D [1738 0 R /XYZ 85.0394 536.6737 null] >> endobj -1738 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F62 1361 0 R /F63 1364 0 R >> -/XObject << /Im2 1350 0 R >> +1737 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1744 0 obj << -/Length 3435 +/Length 2614 /Filter /FlateDecode >> stream -xÚÝZÝsÛ6÷_¡·£f*Ÿ$ø˜6NÏ«ÓK|Ó¹kû@K´Å‰D*"×ýëo» H‰rÒëÃÍt<c€À»Xüö€ÔLŸš¹T¤¹ÎgYn…“ÊÍ–Û+9{„¾ï®Ó,"ÑbHõÍÝÕ×oL6ËEžêtv÷0˜Ë齚Ý~NR¡ÅfÉ·ooßÜ|÷¯w¯æ™MînÞÞÎÚÉäÍÍ?®©öÝ»W?üðêÝ|¡¼SÉ·õãÝõ;êJyŽonn_SKNÅ…Iß]¿¹~w}ûíõü׻ﯮïúµ×«¤Á…|¼úùW9[Á²¿¿’ÂäÞÍžàC -•çz¶½²Îg‰-›«÷Wÿì'ô†¡Súëi@6a¤S_ÄVi‘çÎN³•°J¤©²—ç¢qæâj1žê¸½iž gŽ»«õL)‘;§q{S-L¦ÒYælyJÛ{‹ -”¹p©UH¨$Ì¢Að@ñv¾HUrÿur¶0§Ìt’)áFγ3%¤ÍsC4ƒzXéQ¡á뛞½n`=³Á’⼋ÁÄaI© -DÈ*>Mƒ¼ïË0”ù¤Ø´
.5ƒAVÁê -€9bþÏ¡yAeÒÕ„‡© âÓÞèTdà7¤”Éšº$'p7WJ%aƒÊ}; -S$ú² å -p ÂÒƒ|Î%ër³ãjʲn½Z±´
5XyU2uX{èe2”…ûžªÍ†jÕòÚ
¯Qµ0ó# *€–Xlº5ÐòÅ”i¿
¦Xl`Jtq Wm6Ù5ûŽjÛâ™*÷%•í®\VQT%6<UÈke±\³‹™– -OIRG|ŽW§Eêòl¬¸d0˜rUVS#³/ŠÃ&’>P#$g q™'7ÔÃΡR/´vé—*"ÓR1-Ù<Î\µÄò±úT²lUMMÅOˆ¿ØcdVuÎKƒÿqýµ}¶`÷_Ñ´s&,bK¨ÚW«’ôi”CéØ\Pa*È„V2¦&}80V
Ô!pJ#9$NI‰i½×ÉOkT‡±rR
>6“ùP
éeõ§ yÆŒFaf©)úB¥k¦ØZC¦OÄ&ø€Ê ñŽÞ-5ì `ÒàØ<qì¤uKÒ:£8ø5g€ -ŽsÑ\I’Õ_†ELÛõ‹89{'¨ÁPªÜ¾:Æ
héãÔv‰_Í>J[01îl¨Í=åØÖ[~TíqAà¼à< éïHåv×qnÁ¦µ_`GkÎ4b@Å:®=Ú² PG½º˜~Xi¨»pZëÓ!Õåô£§BÑ·Åo‹˜ýàž/ºj[.ªú,qpFò/ËÁ4bŒ0§1—NGrÜÔ÷2b¼ô6ZÔ†i¨7}r¨ëáa÷¦©CÐGÒà=©öÍc<©Ÿi䶪]ÉÍŒ$Oq&)÷ÛjA{œU8ìLrušo½³£ÌK¥%Uz–
šªk8µ´Ûãé`/ªíaKŸŠÍ¡Ï¬=³-ž³ZiN8¾Œ$“a|ôŸAÒ€ê$EªI$U«Í$’l&<$/KÒSMˆ2F“Y®üX–#šT&5F“Bt| $)ŒçTî‚ìÍã1ÀVrt=²T,åPéà \ªO¢ƒK€KÁqVð?‚+½„-uÄÖÿ
Z&w¸êeh
©.C«§ºì¤šCwî¥R¡T®^¥§še„-8´Ã Ý…y{è\²w>Câ1`pz…Ï¡«Âï
€„½U ¦\/Ô*B˜ -µ~{áƒ3!¨ÝGVC@å ×økz+¹n*3ûH
¨^€T¤ºì&!ed?Ÿ¥§še쮼0º…9BÊÈ)#åÈ_IuôWR‘¿‚rÂ_ÁÀà¯dÄ
þJ¶æˆ!îa% ^a«„–Š¼Ø`0É_ÄgÁª¬6Ùg -eÓ—£Á€èr0ˆD'Z®èFe -ùÑþCËÑdñ… š,t“ÕÁ8–‡=mwØæ0
‡Ã9‰‚cÔYìó°ˆÞ<ŒïOBá"zÂU9”!ÓâVÛJ(BêŽ:([2ýÅ'öᡯÿ2Þ ?§bÕ?ÏwS@ÎA °]3¿¸jì‡UO„‘‘Dä©Ygþ<€§uÃþá&.C=lmîÌØZ%u:ÚZ75^üS¬Òtc; -Qñžd9
Q–žîÆm§á,¿à0ŽË½ìŠ6fžôÅhûWÀKWÃ^8PÉóƒ™Íü‰B.8e2!ÝgžD—I$¾†ôü¡Ùo‹óóŠv0‚ÑKôDç"ŒK)Ò̦#è¹Zånx<ÁÏ%†o¬Üs?íÖx; §†*+¼z÷ ¯¦'¥Uµ_MÅ.Âç6æ Çx‚ &.‘-l¯S§?\8±áe/¥ñ„ÄóMšÄM×›…~LMƒ§á÷np9xÊ^ yŠ8%\êϼ«óœ„d!e¤–ØÃÖã0ëSÛ@ÐP¹*Ã5BÍä},Îx˜—øFaód]Fá¦øÁž°j¤G”»±n.îa´ê“ÊçMXVxrÌ’×·ï©…³j
鶲lè4üÔ¡o¯¨4$ªžúVSkÒ`{ ¿ýBdäªþÑkW,?°ìá7À1œ½)AŸùà;ÈÄ[ïPv²Ó`j,¸Ü5m[Ýo˜òå†û©`‰IjL -ë‡*æý§ž|Ê(¦Ôor!}Þ.ñˆÔRÉé¸4†Ô–£þ -•ö‡åÁ+ô…_‰'ðg›1_ö¿ŒüÓ¿ =þøÍfÂx!{ÐbY“°P¸‚Lž'LR€6ô„èÿ=?}endstream +xÚÍ]sã¶ñÝ¿Bo¥gN¾ ¶O—;ûêLã»ú”é´Ih ²8‘HHÙõýúîbAš”(;©¯3Ϙ`±»Xì'$&þÄÄXf3™MÒL3Ã…™Ì7g|rkÎDÄ™¶HÓ>Ö÷³³ï.U:ÉXf¥Ì–=ZŽqçÄd¶ø9±L²s À“w¯/¯>ütóö<ÕÉìêãõùTž\^ýí‚ 7oüñíÍùT8#’w}ûivqCK6Òøþêú=Ídô9AôæâòâæâúÝÅù¯³Î.fÝYúç\áA¾œýü+Ÿ,àØ?œq¦2g&0àLd™œlδQÌh¥Ú™õÙ糿w{«aë¨þgRY9¢@)Çh2f•TA×Uãÿ§ÊºÓó,ɘa@Á“¢lvçÂ%Õb?÷škVäE¼ÐŠ k,…„÷µŸ~ÙûÝã¶Ú5ÓmUãž¾H‡«L]ÜRm›¢*#ŠD©÷[$@“9Íba¢ZÒ·ÞÏW´¶ËËEµ¡YÜX¿AØ%·ûùO¦R)&Ò“©,3FÖͪ¨‘€}‚›¤+«‡¸x[WkßxZ¾õóŽIKAK~_åM –Zo"NˆÀ"²ˆX¶=@›ü‘Öʪ¡™ÛˆSï—ÈåÎå¼ðe³ŽˆµŸï‰?ë´Éeµ§å‡§DBZ´"DÛòº*QQZ&ECáìð½ó¥ßåëÀ +wFs(ïh†'‹¢žWû]~ÌPÂÕ!êÖÏ‹eÜ—Óg›ïšb¾_ç;ÚïV–Õ.nµ.å$Ãc¥ÃšÖÀvîGÌÊ +f…m-‘tq@oª5¸¨u¶Õ8"<½·#´Si[ÿ…ÂBP~7Ûu1/èzLÐP~»ö5è + ÉS™NŒæ¾¡â™|™Æu–)BêÁá¬O:ß]mää}'šôÕžö)‡CÙAápøCM“ÊLÆ[†À +^’ä‹ÅÎ×5¥#L^qS0~»„cUßÓD,P{/ã@éÈÊç’'mêdS¨Å´9¨h»(„Ô(Àò\qÌNap[5+‚~zÿ‰0!ÄšŒÙ‡¹jöð¤ÓlP¯@ŽfrU +¹ÇâÚ:·!¤!šÏ·«Bj‚µª)Ñ+š ²àÄ!(4”U'd ÊëDÌñ‘¦¼‘º‹ƒÔa-“¶~ƒñ¾ÜFš÷ÅÚS}ÓÝ ŽüTÛŒI—¹Iß^ç\èÆ&³à]Oø«]_Z¦]ª¾ ¼?•æœ”vØ“aDƒÿ;—éˆN5SJØoF´BSûíÃHŸòé0)ŠBhPâÏU(SõÊñL Ñ7à#xÑŽf•ø¡€G€º˜ÖïÂŒošÐ*¨4#ç³Tч6xá 8@§ñ¢ºš£Çÿ†ÿ|½ô”‡ô/ùuvóÿï!P)aºû'
;ôIQÀRA„~ÁCT +©+Uß4Ñ*ÐŒUÙÿ Ñö)Ÿöí³É NñžBr¾®«‘ªœO¥ñ|
ô7õc¼ùóùD +}–Ò]SáaŽÎ˜r-yp6è6_ÈÎ`*\µÙù´wô/øu6óí½£o†`sZ¹ç+r¨ +¼vJnsÔŒq¦þþ,ók„û k…@wÄý½Çb¼¹R:¬•L“»uu½a˜ZuCP¸HX½ú‘!7†‡«º¦ýiDqIž¶ª¡Í$+’ñâi/íŒ\¡öeD¸þ8»ºü'Áàßù:Öáodvðtø°ò¥¿É߆'JQ|Å[Ñì¼Ú>D&)Z{åÝSŠKh~ñs½‹Nª‚z ‘õ¨<¨7¿ Œvÿ€ßŸ"§ëÏC_ ¾‚DŸWá» +àGÌ×Ø2…Ÿ¹öÇàŠáC\xæ4ô©»÷G_]ðô‹8ñP ;„|>_¼)JfžjÕ次{¾ÆC¾p¦Íý=ƒ&ôˆªÑ,#ûøx«c¢‹R·ö9Ø”Gs5’Y“¥C}´G—’áÑÕá…•4ÙÀÍûe¾_·¨Kš4 +Ï’«%-À¶‘Ÿ¬cRv?¼¨ˆÜˆK>”é.¾¸÷Q¶ðh®ï€'ä_Èìmj^uÌKjÆMwA5fŸ
øý"[DÎd‹8SUíŠ5ð
ò8x2>ñkHʤàéðT‡Oá: >Žÿ*¢Œ8’¤r2ùÇ +Õ¡4UƒË˜NyÖWC`zZýT˜Ñ.LÒQjʾô¼?ÂVCR]%6ÂG„÷ÊÖÞßÐóE »æ´®áHRÚ¡‡¸&Z + +¿m´yDƛՙ£ç:ÃAQ?0è‚3êßüfÛÄÚ"º@¿À–±ÒhjøÎ~<ÊŸ?qà‹“åX”TÔ>®>zH§‹ åÞäÿž¶¥^ø´)6~Z”ÇÏçÐ#¹g…ˆ(Ç2Î
´]°Ú⪼…b14òºõ€ú¨Sñ)ª¤n–×UyG½¾Žq“ z%ÀLR>ÒÎMQ
9Ê0a‹ßmŠ)Ý.陡ºg\VšOq¹÷t-$' cÙÚ$pmQM÷<$QlöÜçë½R–.²Í{T5WÇm(Þ¼2Ĺ=Þ5ίþ¼÷‚•B_èä‰_RÇ´"Q(TtÊ?þ¨~,ú endobj 1743 0 obj << /Type /Page @@ -7631,35 +7610,38 @@ endobj /D [1743 0 R /XYZ 56.6929 794.5015 null] >> endobj 498 0 obj << -/D [1743 0 R /XYZ 56.6929 676.1712 null] +/D [1743 0 R /XYZ 56.6929 289.0049 null] >> endobj 1371 0 obj << -/D [1743 0 R /XYZ 56.6929 654.351 null] +/D [1743 0 R /XYZ 56.6929 265.9485 null] >> endobj 1742 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F63 1364 0 R /F21 938 0 R >> +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F62 1361 0 R /F63 1364 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1748 0 obj << -/Length 3130 +/Length 3618 /Filter /FlateDecode >> stream -xÚÅZßsÛ6~÷_¡·“f" -¾Þ·'¤ãHj‘^Þ¾£Ùh@i$†8Ò2;Xu‚i%Ü¥Ñô&D=6!jõLˆÈÙ„h™5î<eß„ˆôŒ ±å€YkÔðæÿë6uwè7å/ñû¾hÚ&(?‹?EãÇè Ãû/7Ð4×|*×^îŠþš«}S,#ROÁ¢¢©Î‚©ã-Øm:fÁ1\¯È¤ú>§…¸iÇò-ìQ]ÐÂ@5ÔÂ-Ûì¼jN”11‘M3s™‹Žj„Á‰Œ¬Ù–°e¤NPF%2¾C)îœ:¬‹Ôêé¢ë:]¤÷œ.ÒЧ<ѽÁû;ï4œpÀJgC¾rïÕÄ_&¦9?îËÇ¢â&/»©Û‚ûU¾ñ¦Ø‘[„‡&G2䬯TÙA©²3J¥´Ž¬‘Ԙώ2kMbñY¨ -›À.û›*Ž>ÒxZ?’R.—¤a4^ûgÎÓaiÏ¿ŠKn|ó™Éö
‡/j9D9âš%±‰`„aØÑY Ü>ìX¸ÄÛŠwßb›±h2´(Ïøé61‚_c¿MÓæ€iìY™d -©z©ûTç}dG՗˹ÞïÅ©‹TQ¦ôLtT/p!e"ù<6Žµ R³iꥶ,Úb·)a4°L¸§‡rñÀÍÅrš/—¬òM cLŒ½Ó¤§÷¹ nkºùø¨¹uûö#7`ÆU±hËš.`Í82ÿ¦pYÊká¹*ZÇšÎÄýlðÉŽ9ÿÊÁÿ'™SoGÉ -ú~m;ýéÛ<²wí+b°ÓU½Ð›ƒø]xaήd¶ÍaO¼ü”;ÂeXoù—U.x~¿]Ât’‡Â¡VLRÕíð$Áw tñ‘Rî¹SÎûЃƒgnãò[FÇõÚ1‚±€fhÕ£&«Zûfï…¥Øã¹=|c¨—Šý‹Rð/39e¢ú€ë\åÿÎ/Jéźnæc÷„(‘¤€j¢£¶ßŽnEEñ_YÜ>8 -šKD´Ù‡5óí¶Èw<ZV~Ÿ¿Öpí˜ÖþG3â#ci¢Dš€ÃNý4ï,ÿÔÜ´PÁ³úñ¤S‚ã(C.uNN~q{ƒ0+ß¹+L(d²GÆGZ›i¹bBŽ»@V6< -‘Ý!Ã`Í÷áDâói10@`êûùœ»ËâÉì˜ Ìø¢f2S󙉢¬÷KFgç£JP_* eô1|@Сӣ°ì©lÊ^ª|ʉ¶‘MD³;ñéÎ -Q¡²Ûz7²vMM˜sò]GØ,²w -O³.]Œ‘e]xz‚:×höÛ-Ù¦†êø‘¢mÙôÐagM£lS¼>;{tV39Þ¯AÇ@–¢ˆÅL‰éoô˜:ÑAY$N¶û·üuŠƒ4,2™ˆ'óCUøëÔ©\D“sØaŠSž«±»FòO9ÁŨº£:ãÅææD'
^1X¿Ãi`¨FhÄmu|ÄIWÝi8YG+ÃæÄDReò‹¼0ð9M»*î«Cijë‹Hž¶|ÍŠC:?$¦m -_ÏôÙ5¤š³) -Å&¯¬òrÝx¦«åÆ"úÉtðØHæ$mÛl1‹“ñBË!Rl;Ì-½šÁž…HåÌEÈ¿"SªÄÙxºðÆ9ˆ”´%N÷D*ú&²ôoÅH…˜âü_€dé(‰ød–íàÆ}_Óg‚zÏ%•Ã„ô -Ÿf[ѵÇI¤‘”]|^Gܧ:ÒR«!89ÆÇÁ ®Ò -Û'6
§œ*«¿×ž
ŽÙ€ó]Mù8…°E*4Œx¡ÜÛ§º EêÔ]Žoèê
]ý%f:ªnŠ„äÈèÔÙùÉ}×Nƒ“H³J¥i_¥Ò¬§R
O×~~Í}xJ¸ˆJß¿dlb¼WÊáÙ–+9iÚ/Òx=Vå‡ÕX¡ÌPªzì㧆Ê]ªq¾ -ÚƲ4݉¹ÕÓñŠ¯ÉèLJïpô£ŸÝbúEW¬Žjfc¿4£’P<š)‹.@þê_¡~¢§mØWãN
!!€ÙšgŠx·ò˜ó„üaý/´5ݲendstream +xÚÝ]“Û¶ñý~ŽE7c¡ø$‰GÇ9§Î4¶k_¦Ó&y $Þ‰c‰TDÊçë¯ï.vA‘¥³ÛÎt¦£.€°Xì7¤®%üÔuæ„4Þ^§Þ +'•»^n¯äõŒýx¥g‘æ}¬ïï®þôÚ¤×^øD'×w÷½µ2!³L]ß~½úóË÷w·næÚÉY"næ.‘³ïß¼ýz<}^½{ûúÍ¿|xy“ÚÙÝ›wo©ûÃíëÛ·o_ÝÞÌUæÌ׼™ ¯ßüå– ?¼üùç—n~¿ûéêö®;Kÿ¼J<ÈW¿þ.¯Wp쟮¤0>s×ÐBy¯¯·WÖá¬1±gsõñê¯Ý‚½Ñ0uŠÖeÂi›\ÏYkLrY +é€kóÔy‘m:.k5Å刅\Þæ_æí>¯šûb£²Ù¼\mŠyY¯ÒD(—øëþ'”tX¤è)*SB™LiyS-êCµº™egÿ¬«‚ H^CÍmþ©¬®júîíõCø
cÂ)huÙÍžr³mYnÔ¬-j?–›
á,â¶Å~[Αp ×à æJ ïœäVy[¬"ËÙݺ éY÷ùaÓR·
Ò+é‹›†±ñ›… p]öÐTãÅàrÊíaKÏùæP×Õoš?õµÒèᆴöX YjR• +•hÿŒhõ°.ˆVÄš¶ÜóúОÈVf…M\r™”k‚–¡lya-JjŸ˜w‡–…K'Š…¡žpas“ÍUÛ›„¤z€ö:¯"Tò’© +f%ÏÒaMÐ2©D$i:"æ(RFF‘2Rì•TG{p°Wð°W01Ø+e‹æ{%ÕÐ^É(^{%ƒx–°€%"+Œ\*,òÿa³ÀezFÀzX,b!‡šb_æ›ù‡bÿ4ß³N+‘BûÄ]&¡Ãš a X‰:M³!7ùgäšÑHÏg2N¦3)н2ëU¹Ì7›'Óà6oÚ`° »7_ÏÚš¾¿I©ƒ%ÔÐYÞS›FÚxApuØ.p [Î cT6”5ÑœùÙŒäC2«“Ùm¾\SsˆP$ÀCd œ>týܵýBú2P–{êk×<Ølºé”7sˆè¾ãÕª¢}¬÷Ÿ¨±È«Õc¹j×A àŠf÷îÆ벜þ¦Ü–¸!D´ôuT +¦î]ÄkŠe]làBKˆÊE†ñA_,'m›–GA€ +{:ËW«OF-Òšl[¶d¶7Šp0œ +ÍÈ7MMë÷ÎÂ:mRÈF¤2¯FOPάq
² +àÛwwo^ÿ78³ü!º‹ãù Á÷±¤f±¨Ûutl¸pj0P8Õ@4MÍYŸà´&uÏø„>ÖyŸÐa77v6R‚©¿¸‡5AÀÀ!€Óó8„A0µ¶Eg³u˘3Šà1À@Ë3ô6M¬ÐÖÚVÓ†MÑÒ~$ ÐsÔ]èít‚îê &ËÞ.>\xX†= ÍáEAVÕs#d±Âzt£ScÀl6õ#*Ž Bâ7>ðÖ´ /e!vK<ðP~.*Ã+©cn⸧Ϫ¦ý€Èº%töaÛ5ïOãpê)³Û§ˆŒ63àÄ´1Ç\õ¡ªÙR]ÅéÍ*”PïÌ7\’ +´-'·f»{+½•;ñV–Õ?\£¶’ãÔŸ1Çãž7yÑš¬ú‡†àn¤`½%ßfS›f#†œ1)Ö%Â{g/›”>Öy“Òaîôs˜ûz¿ÍO3gqbv™ˆk‚Š¡]ñB‚3’ñë)ïú96—èÍXð8ÝB|)aÒcMÀ +‚G8 ¨C¥ƒ5/¦|™IEæ;“SsØÿæŸÞœÐ©.æ@…™R‘Iµ³&^oR'À:…†"U…²É(2œ–:æ0䥫‹.ÉÌØĺŒc’4„ÔGX…²ž_L»P7 Ôô]¡´P1zçšS¾Þˆ¿p•+ò¢£s…w’õî„Y#3‘*冼9{_&Zu1Å÷&í'õÃÛÔÃÁõ†à{Ù +Bz‰À²è÷.ÉF®hJd=¦Î¤AÜ~û•’á…U.JÆ._~bÚó†vù8ÅK‰Å³£€é”vÒí
uæüÝÕMS.6Œ +ÑsÍãôa‰I9Ô~ÔgB*ƒý’wßÖÇÜ"…`hƒ—%hqp
f¶)"Ç“ê*d +!ÇŠä3¯ö}¬óRØa
¥0ú±ê´0¡ošùä2Ö× +%ÒTú!\î¿ú@ãXÒå²’GsŽ
~cPƒ·²Ð\STIJˆ]Æ<‘½Áü=Í빬ÇqY¯âè)€W…¤e·u(s@Ã&‚Ø£ƒ…ïžìûBåBåÏ•¶à“®v«§l¶ðišô¼‚‘_å€[þÄ+Åb8YprY:ˆœð¨Á;°2KðÝãšNðŠùFé Ÿ¡¨ˆƒ]D¯Ž>C§ì3ðY %<òØC~Jé‘wèm©Ø; R]¨é_"Ð%Rz—xÊÃQñîk™èðáÀ\l¦)úÈÌ üÄþš¿9
ÃÏ0•ÂÏ ++õ¸Œ; L±6ÂC.5rNôÞl@ßðiÜXü ÇÊž þs‡™uÿíuè +nà[9¢„Ô‰»Ï(tØl–=–íº¬.©lŠ˜ÈæpâÓ5D…:ÔÖû©Š3ÄÖ‰‹ÄþL®#SÙ8¬OïKçÀô è=öy|‘¡ú¼)Ĺ¿_'ð?Ó~ZvYÙü×ìãÿÖs&ËÎäDF& ‘>DáyS5¦ÜAfì2Nþ/Y Èendstream endobj 1747 0 obj << /Type /Page @@ -7672,238 +7654,238 @@ endobj /D [1747 0 R /XYZ 85.0394 794.5015 null] >> endobj 1746 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F62 1361 0 R /F63 1364 0 R >> -/XObject << /Im2 1350 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1752 0 obj << -/Length 3275 +/Length 2482 /Filter /FlateDecode >> stream -xÚ¥Z_sÛ8ϧðÛ935—ÿE]ŸºmÚëÎnÚK³O{û ÛJ¢©my-9ÞìÍ}÷P–m9ÍNÛ™ˆ"A -m¼0 Ö=%\ž»Qærá6Ñ€³E±mÊˉ1v\oèYðiÆÅ -×\T‹Ï…õʃhœ^,õn²ªÛêû"AR–ÇÄ$+ÚZoª†Ä5mÑ–ËrÕòkÙò@ûP( ¬2÷‰)Éž4õv3+TðFxSߥ5‚âÔø«^•Í+h;;žnY‡-}„fyv4QJäÎéÈe -ÓY×åfSÍçåŠßã3ôº.7—*Œ'(‚ 6‡#U¹£)Ó¢A{ààô‰žÕj¶ØΫÕ=½¶Ðœ3gýËm!s™¨{vGþ»ª}¨xÖkdB[0Â5âòN…i+d–'a°òT"xg™$c×YÚî颞}%/ŒÊ•Y½ú”ú~»)ÚªæQìYÀ¡;òÔΤüæ%®jBDž0ìªüÜ?Ïò¢yxq3Í8d5IÚMÀBKúÝÙ\ö#z临ͣ…®{6tÞªhh)œÑÉП.'è€ðWO ,x‘£=¼u”ŒþËÙ<7DÓkÇ•î-;~ø¸Ô£w5¬gÔ_óôÇùþf+
îj¬y— dˆ -©xŽrãˆ>ká„¢f±šS£dšEUn¨g^—LžAf»^£Z87ÜS¶mt2|‰g)ö’‘„ù|S6ÌéîÒH>͸å}G¸}û™\©©g—ZŽ¿âD3Pêä -f„çO׬$ŠžŒ»4½S ZHèŒ4ã/ey‚qÖ`þy±†(«lLˆipsÏã¦çÇý¤?áÔ‘OùÆ(QÎ8ìƒr|ÞOð¤K–ûžI©ŸW$AÒ—ó¦Mëäøõî(G)‹jQLüšŒ#ä×ô2/Ûr³¬Vå« Ž‰æ‡‘òÏb¹^”1˜´I¸«1'§´q )Š×öÏ:¸»QàkYv$DÕñé±)V÷%5Î| ¦wθ×Ôþßë¡Ð8àA}¶0I¾>á°›Eô(HÄÑV"žR£;¢×a9öìqû w±ÿ.îE½ÊY!øBÜN¸´*–å|@‰yð†©È-Qº%Jˆ5¼ÇÒ ¯e ¨Ã~±?š¥ù'd.P½²í‘CŽ›þ½"0Ñpmæ²Ã=@#«Ã¸bi¿ˆ5ŽL}D7x(Úà6CA˜ãÛ‹&ØL3Œ¿*@VåÿßÃß[¬à&Z*ÂA©ØI²ö¬Éáq×O5È!=s]°8»ÍPQI™Š“îØD9³‡ºnÈAZ„X袿ClèœNVRHmØ[Bcja@±¡×Á -¦ÅìëŽ8ÌSØ_®Á§Õ¢jŸŽ -ìUð˜s@œÔÂì¯û”„èmUÐvèVN&oŠl»Š _ŠÞªi©1?Bé+Ö/¦Om9Xi…·RzÐvÅ›8 ”ÍDZ³R´ -oéý7ƒƒ… b»{èó›b2!Ý7nó{DÏl EµŠ¶8³#Fšç¤&šS©Gû‘Y§¤’sÕÛx¡@Kí¸!¹Œú1i¹¬±œÂv›æwîyñ(}°¶Fïåì·^·¿gyæþöv Ã_Æ÷Ì5s-²à¾»Æµ8¨»¼?ßhFćç~]¶·pG2Ê„Šõãõ±1ú“ iiaÖ—`ª†©j -“é³_‘NUÿ?Õ!¿$endstream +xÚÝZKoÛH¾ûWð¶0êéw7‘“'±³dœŒ£3s %Ê&"‰ŠHÙã]ìߪ~P¤DÉ`»‹ÕÕÕ_½Zf …,QšèŒg‰É$Q”©dº<£É̽=cg™Æ]®Ÿ&g?^ +“d$Ó\'“yG–%ÔZ–Lf¿§šp2 4}ýþúòêí§›ó‘‘éäêýõhÌM/¯Þ]xêíÍù/¿œßŒÆÌ*–¾þûù‡ÉÅŸÒAÆOW×oüHæG„Þ\\^Ü\\¿¾ý9ùùìbÒ_FnäËÙïÒdÛþùŒ‘Y•<Â%,Ëx²<“J%…ˆ#‹³g¿¶;³îÓ!ûIn‰Ú$ T±—,+¬³¢^–ÂaÀVXþ¨,ÿYŒ_ôE-#*ËT2ËÅ…m—ó„1’)Åñ|!ÜX£œ¹öç{vœQZ2dd”(Á%HGŽ÷£±féþçéÁyXM28‹ÄÀ:Vp\9ù’0Be– ÏÓ¡ÝVw&p?^-yò¦‚
%Ý=¹ãŽ`·%Í;ˆe\ÀÁH‘ Lf¬SøcµÈ7€B•–õh,t–‚Yód¾šy¢<‹²Øø‘YUþUÕx¢Þ®×LKšÆ‘¢iÊÕiî‹0Zm7Ó@ç³Ù¦¨ƒ¤ùHÐ$€ÙðÌÛÓ +ü×ZïWgJÓ'Ì:ÕÖ¿Ì*|²ÿ`౬ï=åa„s„A<'E0xÂtç<¤´I9*ÿ¼
ï€ÐÙHê¾õ}µ]Ì]4ÞðZtv³—E#Ô=œQ
X:H#aÝ7 ã +C=u>Õ#…ÍzÂñ¤lÖTí§«0Á`DS.aàÌCY<ÖAd[oÂx½.¦%†#8‹ÍQ„ÍŠy¾]4á+ˆa‡Ám(Ð=$¬ªCgÐù3kê +6¸4ªÞ2ÔÈ%^’Qèy¦ƒ §¢ZÌ)¤ +<PEçÎ4ª{—aýcZ-×ySÞ–‹²yVv…"ƒ¥
Ôø'QØå:ŽÂ–ˬ)çOÇp›¡Ï™žYq8¦<÷ôòû
@Ui¬9+ +wQàs.>ëÂ_˜ôúýäêò7?º=ò»¢/ÑZ@_èïlWÏÀ¹›0µ^»Û¤Ë•—®`™EþÉbó€jdú·¡æR@ +g¼-B—9DûÍŠ¡ÓU\Ä8éúÇ!aKµçuÓE¾EBº8€O§¦XªêjHÍ¢#ý«Ç±‡Â€.*¼ˆèQ~-w;È¢ñ`¹º@µ,VMxÅkG¡™\YBé(ô0ÔÒ¶½UÜcîÈKJ¶A‡i +:0É,•ý‚î6dœØ¦œÍŠPÓUî ¥¤]‡Ìzx"mgã«ÿä6¯]Å*ðÉ?ËÕt±í +Ç¡”n >*©_nšÑÈݱ;Ê,!ˆ‡
[¬YGrzŠÛ[ŒKBMqýµØþQB‹¢U„´3Æ ÍM<î[ˆŸCø_…€¯g¦Õ +sÒÝv“clðƒ8²(Žv°‚M”5ÿ¥·¼\h"öêÊ–gX[Yù=;XècðšA|ÿ¶+ùDË5Þ¤PöÿÏÛ=åÿñ{^H“ú¹:¦å:ˆZƒ7¼”Xˆ]Ñ—„ži@¸„"V(Ñ×à]ù¹¼Ê#{apÛrÁúW¹.£¸ëÚõ@¹+QÝ3äMGÇÚ"¶5«¦Ï‹¹AÔ®ØÀRd N3ÍW;(À¡Ú_÷˜&PÀ2J©/˜PÞ(˜<õZÈ:š"Ý]¼<Èñv¶cy5Tv(žµÍÚí4†ìm¬Kò‡ªœ='À,¡õ|©L§¥þ*-!ÀfGúXÌ_Vîé{Zº…r§“_±IrÇ+´+ àM:R*æ~ÎU†ZC+(³éÞÕ‹mœÛ +t +bAEú±8èC¤Ä–A s¢}žõs›»0nº¿¾Föq‡ÿФºQLCÚÍØõaWF¡q†„Ó‘?ÍÓi-b4cœPÆÿ ™ßVÑçï«Ç½ +%ÈËE~»ˆ?ÛÛîÿœÓ6K34,£éeìC‹¿òåzQ„è‚%ÛÞ +ó ++òöçŸý’ÈaV²þ«€jƒR5ìCc
±âŸþ±ÉWw…'7ÚzR+%Ô+OÿëÕPVpž®X ሾ:XBápX¢Ãá—ú;ˆíøãþÀ‰Ò¶húæ¿!Øý…„ endobj 1751 0 obj << /Type /Page /Contents 1752 0 R /Resources 1750 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1758 0 R -/Annots [ 1755 0 R 1757 0 R ] +/Parent 1756 0 R +/Annots [ 1755 0 R ] >> endobj 1755 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [442.7768 519.0086 511.2325 531.0682] +/Rect [442.7768 128.8813 511.2325 140.941] /Subtype /Link /A << /S /GoTo /D (query_address) >> >> endobj -1757 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.118 239.5449 409.8647 251.6045] -/Subtype /Link -/A << /S /GoTo /D (configuration_file_elements) >> ->> endobj 1753 0 obj << /D [1751 0 R /XYZ 56.6929 794.5015 null] >> endobj 502 0 obj << -/D [1751 0 R /XYZ 56.6929 578.6855 null] +/D [1751 0 R /XYZ 56.6929 188.6884 null] >> endobj 1754 0 obj << -/D [1751 0 R /XYZ 56.6929 554.0828 null] ->> endobj -506 0 obj << -/D [1751 0 R /XYZ 56.6929 323.1321 null] ->> endobj -1756 0 obj << -/D [1751 0 R /XYZ 56.6929 296.0587 null] +/D [1751 0 R /XYZ 56.6929 164.0083 null] >> endobj 1750 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F62 1361 0 R /F41 1218 0 R >> +/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F21 938 0 R /F63 1364 0 R /F41 1218 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1761 0 obj << -/Length 3222 +1759 0 obj << +/Length 3547 /Filter /FlateDecode >> stream -xÚ¥]sÛ6òÝ¿BoGÏT,¾‚sOIÎ鹓¦=ǽ>ôú@QÍEª"Çýõ·‹ R¦ävn2ÀXì÷.Åþñ…ÉR&µÈ•fŒg‹j{Å°öÝ÷8Ë€´c½½¿úö½ÌEZh¡÷›Ñ^&eÆðÅýú×äÝ?ßütsw½Ktz½Ì4KÞÞ~üÍôx÷ãÇ÷·ßý|÷æ:WÉýíiúîæýÍÝÍÇw7×Kn2ï¿Ã™Þß~¸!è»»7?üðæîú·ûï¯nîã]Æ÷åLâE~¿úõ7¶Xõ¿¿b©,L¶x‚KyQˆÅöJe2Í””a¦¹útõ¯¸áhÕ½:Ç?•™4J/–€Ì„”ó\f)Ë€kË\ñTåFD.>Ç倅\þc¢±ýémᆩQ&_Œ·|qpÄš9YŒNæ̤FN¾´Ào™'Ûòk½=liж+»'¸ÛÐ3èCx·û/s[>#`’Çò‹_îv¶%¨êÚê°ß_s“Øvhž¯9ç (ƒdÙ‘ˆµÝ”‡f ]êkž8Ž|û^(s™*-
\oph›z[vM¨“ƒ¸@™…ÇL_(“—XÎy*µ)^ëë‚XžØeõ¹¯ÿ°/+²´È3}ùèˆ5söD°’¥E¦‹éáÄU0¥£haPn»C;ìDOG¦ÇµÛnÿLð6ˆBv›ùÕCoQ|œ:Šõ¬ì€Rìô /¼”è¨Q’%wÂð¥â`•Zƒ[“ ÿ™Q]×àÀå0Æ’O#Úïlßö•§öªM?s6[Àz*´ÎŽ|”¢H6]ÓtOuû€Cº=Ô]ÛÓZoÚ•0ZšÂ‘àóþæ_$‹è;Pöƒƒ+ӶKéÏ(é%:Ķ›Î¿¸¦åºì¾-027^=ã%ñZ E–‘åÏJw_Âô>ˆ¿lOÌ0Ü›Ïý`·gÍJsð¸y¡/›Õë¼YE,$zYݸ[/›îa9kbš§¹aÅe2"ÖÓ:Í5LM¹¬QŒ…ôÊ€°Hâܪï;Ø¿_/•VI=L—˪²»Á
GíÚ/?´$Ï°‚âu -^\foÄz…Š—»Qr•qL;
K~y´žòÉg8èlG -žj•Sã)w;gˆÀeCyȆ -$îûš6uìhrå÷ýÁe¬eò±È„4¡ó«_½Ý5v{9#ù‹q@åÄÁ_‰c¬óXÎ(,”'}ýÅ.«¦â^ÖbY‘æ*Ä‹$D¬¦@¥9+Š)s);? -iœ²Ãr3”í=a‘UûKRÓuŸ»~’ÄñI¾ç½™oB¡ì -vû3'6¶ïÑ®FgŸáÆX]/?ùÂ÷e
,…ÈJ¯=°ò´J/š¨Ûãí|fÁ@sò“ªss¨;hÓXÑA…›)>êCQ‡îØ_y,ûw‡¡ñnÜnp›
D‹i…õËu,l×ÝÓùr -Òþ´ -˜ -«éùþ~r)d~ñðˆôòô‰Fg&eyÆ'ÇS{W™qÓ¥ˆmr\p©"øÞ8®» æ\Š€ïÍ„f/Ìœ6{aÊ]“¾\:ÉãœKA‹4XWhOG}P fQœ8’ØÄ×—m"Y—CIÓ)xú’Oбú,Î÷.4$§:°ä²3Ìsuv|5f
-í²A¾e`ð¶lÑUÏt]|û^ñ—,ÃÉcO_Ÿâ×€—nÃu»»-a{%ãA´vkøôäÕÈáÕ{Úàþþƒ?ê(דÉà‚kû㪿½ôÙ>?y:½s5Ó%c±]ìå©.ŠLM=µ²é&™Ì†B¨ b§¤X®BýÐöõCK
rî’‹»÷¢kf_ÉË]þÝ7&J"ŽÕ®£êèx¦ÚÐÅ´Oª•Lè$З[,ŽÑã“ÑÃ^«üê¿r¶¶[•þþ°Ûu{?ØvQ9Lø.ƒô\Ñ'Cí÷FpU¸Õò.ü0ÀHz¶#¸ëúz¨©ø“Ä|Ü+‚"Ž;3Äøá-OH?ºPµ¨N>ap³×ÁoÕÑ4ì’ÒÌmK3%
ƒ×Á)*qK¡z×*kûD4‹ÞòD!£½3lÛ6”Z¹öâ®D—Ñ„ÝÉw®à0G
ß` -Š¶9³2†ø·¦¹º³ãp{Á9™=Oeí?Ú€ŠD -ò8çÀýO +xÚ¥Z_“Û6ßOá·zgjÿˆu}JÛ$—N›ô²Û¹‡^d[»«‹-¹–¼›Í§?€ +;ªUf‘u
ëþ}‹’ÌJŠ$ÍŒ-¤Lrc”"BHÚf| SzÉ·‹zÍÇí”ΣM2¡
,\"MJǶxlªõâ1]Ö»iþT5.OÒÔÕ Û -»ÄeÚšÖþ…iS~eU€‚•^áJ¨ù¡-×Ôã=;¿Éå#îú©yž(ãÜKÛ¬ÐV³?6žÏê¡iZ¿Èh©·êZê€
]Ó ›-´‰Py6Þ°¶9ø W¸„4÷G™Zþ¸¨£{(¸Uµô»Ü4«O~É@¸|¦ÎgœÑ·þ+„¢õ?x6±¯ÙuqÌîtvÖf4u—ç.v»Mµ*ºª©Ûïø½»Hð|þç¡Ü?û¥‹°d:@Od‚©™7ß°`;Ýuô« HNé×잣·ìÑ‚áÌk›³±!QÝ>¡øØ~j›5½T7<ó}ÙųÚáÍcEÒlëj´JÕŸ& +¿OKžeƒB•k0<-ôüfUlü6ÀÈc±9„×úãà0‚U>z(yF¯È»gTÄ„s8–ù)âÞóÔÚùÜw
Á¤ü\À¦•ßNEPØiTˆ‡òí„:%B™LÇ!y-™'9ylU5è«àPç;¡åÁ’¤Èt–J§Ò ¶x¸•Öä=LËZ¡‡"Z5-Õã#ä^³t÷Õ}±|îÊ©sibS¡Æt¨y'„J³$©Y(Úpº×ÚDïÒc["nÒŽ¢&ôÅ@c[|®¶‡-=Eµ)–+¶Í¡î¦DVV&Φ†X—wÅaÓM#ËÜ93øÅöˆ?+ú +n=Lþˆ G +˜Úê#È% 0D>³±?¦æ‡ý¤ØÙ{¶
†]–G/AHZí+ï6©còÁ@bt–ÖV_ÊãDDCÞà2§f&K@¸Ù_IE*ÌM'"‹~ÆE<%e±pÚXØŸl`ìE„3;±EJ%©0;’ÆG«ÈŸ[‘VAƒûû5>F™PO?!ãèhœÌ‹üoÊÕ x›ÈciR%J¦ùHš“l¬§zA†ÓÙP†„˜¾ÌŒg
äƵŽS|ì㬂@Þ–]è¢<ö®Ú§®ß$×8ì©Ñž„ňŸlèåXÑ õ?ß4n`Â{“8ˆ
±¦þÝ— wØ1N…þÖÏ…-ïÈá×G&¤ónÎ4ç"ÇŸ 3ÿPó‡Õ·ˆø¢à`A +yš†p_®û¶z,ìs€ciôøt¯6UYOæç’@Ó×`ü†±RȳaIƒ´Vks9,ÅTçÃRO…R`ÅbS¶'QIÀÒR—]fÜSMpE%á€#Æk³8!Ìæõa»$”™Ñyß ¢èÂkÍØ£A¶I•AÿòÎçfÐZ55lùŽºï!¥œû3n!†€³T`¸“1+Ó@è¹\Ê—
F7H›^@:…œN¥/ +" èÅdÚàÎ¥Ó´É„¨¿'₲ί‰Çå“Ü‚±6,çIÁõ¼›Hö¿QÀÓ*_v¹¨ÂªrÊü°9OQS_f8*bWHá°GÅ4 +!“»î!´ßq]¥G)ž5+¿‰Öe_4«˜ê¼YõT!¨TŸé"k±iî“&f%@Q‘_£§šc\…´If¡k$`ë*å•°oÙ6›²Ã2zjS>âábµ*wtOþ +%¹IÐ5¯¿"ìCR@(õÈ™ì(c]|ñ,t©ØVíy¯‘ê¨^ˆ@1Õ¯¨p1MÛ- +·ÜòÝýWÇ!ñ›¥—â@DuaGÕ8«Œ2ÇÑ~š<É Ì‹"ôT2Œ¤É"ÏÇBLAv9lRÙaxÓuÙZ¢"«æEp¼i>víÄÉñåy2-®ù¯)>€VyÀeùPlP¾ PàWYgX£š—ábwâÎ %À)‡•Òp%+ÄÔ]•Nrü¤o¨> +5ÿ¾\TŒ€É)"b+҃ǩ½t4Ìw‘Ð*hð®¨öÔ±¬ºxU}ñ•wâ®WŒ´ré& 5~GA endobj -1760 0 obj << +1758 0 obj << /Type /Page -/Contents 1761 0 R -/Resources 1759 0 R +/Contents 1759 0 R +/Resources 1757 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1758 0 R -/Annots [ 1764 0 R ] +/Parent 1756 0 R +/Annots [ 1762 0 R 1764 0 R ] +>> endobj +1762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.4645 570.951 438.2112 583.0107] +/Subtype /Link +/A << /S /GoTo /D (configuration_file_elements) >> >> endobj 1764 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.4723 564.3095 432.5882 576.3691] +/Rect [375.4723 193.4648 432.5882 205.5244] /Subtype /Link /A << /S /GoTo /D (journal) >> >> endobj -1762 0 obj << -/D [1760 0 R /XYZ 85.0394 794.5015 null] +1760 0 obj << +/D [1758 0 R /XYZ 85.0394 794.5015 null] >> endobj -510 0 obj << -/D [1760 0 R /XYZ 85.0394 692.8552 null] +506 0 obj << +/D [1758 0 R /XYZ 85.0394 651.2334 null] >> endobj -1763 0 obj << -/D [1760 0 R /XYZ 85.0394 670.2188 null] +1761 0 obj << +/D [1758 0 R /XYZ 85.0394 626.1263 null] >> endobj -514 0 obj << -/D [1760 0 R /XYZ 85.0394 102.3833 null] +510 0 obj << +/D [1758 0 R /XYZ 85.0394 322.0105 null] >> endobj -1765 0 obj << -/D [1760 0 R /XYZ 85.0394 77.0969 null] +1763 0 obj << +/D [1758 0 R /XYZ 85.0394 299.3741 null] >> endobj -1759 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R >> +1757 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1768 0 obj << -/Length 2691 +1767 0 obj << +/Length 3322 /Filter /FlateDecode >> stream -xÚ]sÛ6òÝ¿‚÷tôLÄà‹$8yrS'çÎÕé¹¾§¶´IœP¤"Rv|ûï·‹(P¢”Îä&ãX,»‹ý„xÄàÒ,É -QDy¡’”ñ4šo®X´‚µWÜáÌ<Ò,Äúáñêí™GERd"‹—-0yô¸ø-Α\¿ÿtÿáîã¿n®s?Þ}º¿ž‰”ÅîþyK£7?ÿ|óp=ã:åñûÜüòxû@K™£ñÃÝý)ès†èÃí‡Û‡Ûû÷·×<þtuû8ÈÊË™DA¾\ýö‹ öOW,‘…N£˜°„…ˆ6W*•Iª¤ôúê׫
ƒU»uJ*ÕI*TͤJ4œ?ežäœRžI&…´,ø”–=jy^›²©šÕ¬jz³{.ëc¹9œÌ3®£ø Ö"àË"áJò1못žI-âš9¨Y^s/ͼ¯žMýJÀö©kkÓ_óØÀç,‹Ù!šy®Ú}XœóøÍõLñ4î׆6u@ÝìhüÒîë
iã¦}vhæë¶"Øõ*Îñ®@Åœ'Eš -Ë6atíÞæ¸7-tÞÚï¢#àÒÎÚ
͈Ì˹àë;º5ž§‰Pª -¸šÂHºk
Î;çŠÎpH–fv>ßäëìLº>xb€uÁ=òhcYÎÍO„Låée¬ &ÆžÈ ¯h=æ‚÷D‘ôÐyÙШ÷ˆé_ÚÝg„ µÂ>Îe7!$Ö"wž6„ÓôÆS}’ݤԖ}›´dB¥ùØ·âEf
¿èVø=… =X°·o^äÞ¾Ãíhßø%ûÆQ`ß]gßHíW¬}ã -Ó̦•²·LÉcqðe9Þ4©¨ -9w4'uݾxJO£';ÎZ£/¥Î&€ÀíTÊð¸#Á®å
…$[£T×·[ÑICõâëPn -{eïK–gÿV<ñ„—’Šå³A/…ìžkþò#Ä:ô,»ëA\,
»‹ýG¦‹o01`MpqÜd9;bã¾ÜैÌáÜ$¸òä°ëvµ²Âôùú½H¡¿>^‘x¢‚Ïdzã”–®J`‡*( y>Ž
¾˜ÍHÎ||gAÞ†‰ÏÛh:n‡ÍÛðuy;e£¼ÆyhÛ¼m‹\gl½+‹Ù›q™*vlÙOŽRì‰=‚ZÒ¢H#Uð$Ë@ƿЄ£¿1
yn² ‡ø“-–¥çiÑ>´ÜÐï“šyî ZBm›B‘˜ààìp¹y"r-"•ëDI¥É+H3Åé@n”B9+ø៼Nè,)òBE@/h¬ñèèK„`QHB -ÆVÖƒ,àíÝFD?¶ Q -åÏBÊV¨läWBB;¯d¤O¤¢bâ¾µœŽ_¯4GnRm¶µÙ˜Æ6ƒÐÐ×=ÑÀ¨8¹y• ¤…ºý¾ë‚2"ƒ–åð -ƒÁ}‹á˜ ~ChxW£·æpǘ1pX¯9ŒÃN^ªÖpnyEÅ)O€åbáÞ®¶–œ!Ñc°iB¸—u…zÏå~GÌ5.oƒ^}˜±ïÜó+ôqãämëÁ˜#á*ÚþÝÈ|-±jyCQBñq<ÑÆ)a–AÿÓ -
µQ?l—³·úÝ”NþÆ¡o…š\ý“Î[ž½£‰DJvôßwîÍ~êDZ<-#Bö}Ã΃DKs—ŽéÎ6š -È*KdJ¥ l¿¦ebæëÜø‡ÀÄ ‚`Ϩ¢7\ -(*˨¤á˜M@ôlZV}c§;Û‡=•£}ÐyøãÓ‘Lµ)½Á·®ã‚²føu#¼Í¡Û^¾¨-ó&êüîÔ¨û¹dÚöS·PT¡zÞs¿YäÔ©2Mð×ωnž
ÝÒwÿÈzøZåTkO>lÅ4qL¡¸¹:}a‰€:q‚õÿ)æÈ÷endstream +xÚ¥Ërã6òî¯Ðm媂' ÉLÖ[ÉdÖq6‡$J‚lÖP¤"R£Q¾~»Ñ +XíkÞFÈï•Î·ÿÉ‹²$(_Ü®e(…ÙB¦¨‡p:Á2cä€WP‘µÛäÀu +/·oÞ롨ɌÕ$„ç„3HÊ2%mÀaê.DŬIôí›b]¿ùwÜ;/‡õ¢©WŸÜÄõ+<ûíýÎÄö£“ªŽ*Ôx/N-LwÛZÐmãØïœË2̯]³Ú»¶Þ74°¿v¸§e›zOS¨Bfó7ÔmÚuQ#lÒ¹kWà +,ey-¥Ê¹u +äëêÍ]
*pœYýq1yÔÌ<Ð=:o)p8B×ó¿ús±v„@ýzKT¬Ar%HÞÝ_™Tpå‡ö¥.ªê‘!ðçÁí×P'¯ÖÕªÞvÈÕ•#¨ÝçU³qû®Xù+½âê)[tÆ•ˆ¢1B^5Ö´3VØÄô› +Z¥Êß?Ž-OCCNÀÆ~}uUOÅk…¶ø>3ŸÈL$9Zh×y›ä5Z² +¼Ôô5ÿŒZN +£‘Ç@7§nô:8t,ÚWÅ’¨Ø•‘ÅÂô¥ŠwÞòìL±ƒøw»’,è4n—£Ë(OÔ÷îÊðè%xç0
6ϽÏ$7¾åð¬óë…’oùÕª3Î0/ºQH×jDŠ¹.%ÈÈ)—Uqf!m¹¹}‡t¹ÿ¸Ò1P¥;b „Ó,¤é+奴k_}¸³=n':z«5]¢©‚@qP…µ›Q¸ÍÀOí+WL§¡¥],5ö}ñ>Š¥¾F;I©k½æaOJQ5ÄÌõ hŠ¢&By‰!(Æ[òÐe˜{lóêDÏøv_ºÉ<pAq!oPÖ’üÖ4Ñ}"dÆÓC™DÖNà1£öt¨A„zæCÒ $lµé\Î,]·n—7kö¦m|?ðOÿCs'Cè”G¤C”Cø
3E •Y9é”öyÑ`<¾¬ð ufOR(0ãƒ74‘0!«ûEU½.VdŠÏ÷o>Q÷SðsÍ5UÒJðù7
t€tÝ@#ò¸*)?XaÿKÕp(Áoíß!]20¶ÐŒ Ĉƒç »rÞ±@½0ÚG.>Ÿ€ÁzÙԥÜŠâH2ÿHÚò¹¨
`¡lÃ;Dˆ†}òˆð±>”kûR(lØ%#ë.Ú’3] RSæ¸òî$›H¤`p(™è! ++Gn&µ10§ÙйÁxïc¼mfá=§úä:qu©?°gXóäò¦®òe–vi2À}õËá +Åà”¡RôV&¼]Ð}†PJS +RXðFpžEÿÛŸ¦Háõ'é 7Å;=øÇ?^êÙ¥¡V±VNû;(§!g"-¼™T_úyÈUÒa
Xÿ?d‘£|endstream endobj -1767 0 obj << +1766 0 obj << /Type /Page -/Contents 1768 0 R -/Resources 1766 0 R +/Contents 1767 0 R +/Resources 1765 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1758 0 R +/Parent 1756 0 R >> endobj -1769 0 obj << -/D [1767 0 R /XYZ 56.6929 794.5015 null] +1768 0 obj << +/D [1766 0 R /XYZ 56.6929 794.5015 null] >> endobj -518 0 obj << -/D [1767 0 R /XYZ 56.6929 390.3986 null] +514 0 obj << +/D [1766 0 R /XYZ 56.6929 439.4679 null] >> endobj -1770 0 obj << -/D [1767 0 R /XYZ 56.6929 360.9106 null] +1769 0 obj << +/D [1766 0 R /XYZ 56.6929 414.5066 null] >> endobj -1766 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F62 1361 0 R /F41 1218 0 R >> +1765 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F62 1361 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1773 0 obj << -/Length 2947 +1772 0 obj << +/Length 3429 /Filter /FlateDecode >> stream -xÚÅ]sÛ6òÝ¿BoGÏD4>Ipò”&NêNë´Žoî¡í-Q6'©TO§ÿýv± -àÜb|<'<º†ÿEt>ÖÐTܲÆc#ž<û2ã1SY& '€íU÷"°g1{WÃ…fÁ<Ýy@Ø^)År‘Æ,Ux¼‰MÆ¥eøú® K%2ÄPjw§®ÞÖëúöÁá…4•‚ó¸G¬·]YW`’©‰Ê–ƪîÜÄf».6EÕK7á0Ýû -OÔ!ÑÑŪ ±Z¸=Ö™ 1 ÒL²“¯üXß(! -´‚.Q`)[¿ÕÊÇx3ý²+®£ÔK$žbýé¤7FVIBä"ý@ú ó!ŽØlãžHO=å%I¢|²Õ‡ÈC'!w‡,úÐÁIˆ±èU3Å›b]ß»¸”òòÏxw\É«)$&OYâ(£lA®‡þ ’àÔ¤38¦és²È1Œ1GrŒžâ<$y˜dHð—:Iõþdds“w‹»&){ß‘IOñ)&UÁøÉ#ªäi ÷¯–¤2ÉÆù¦Îi¬ìH‰àp*šÙÔÞ-àW»-%ÚóÂÆyò¼î¢¤z%ðø¨~$Ø¢@r:™!¸Ç'¸˜ˆ´@{YÛwµšäAÔ•” -ŒƒƒRÉSa×ãÏÃ
q÷€î0ð&¼¼âаYl¸°4w é >hQ,):ÏÁfIõ–€5hvM‰²|T]Nf}¡ò¸ãà²÷0›]ëéwm±^‘É(Ô˜ÒC·‡ž\¦Â¦{‚añm».e7ÁN¢b¨ûnaPHkxÂdêÅϳ§8I>OnÒ8 –í¨h%FgßÉžâL -Œ)ZqÈä1b ô5þ¹bâNºª«‚”…YNt÷5«1Á›Rˆˆè=4Š -ݾהܘªí&lýîð -n‚ -.f¿]CÁ±ÉkÒ!.¹$E§C²6ÑÐ>ê±>,QYõX!TŸxùL˜Ó^Z:KKžñ¾àqÒ¼º¢ÇXÖŸ®Üé¾Xš@ÑciÙ‹ÐøŒp_ž9afN˜Ê¿etˆUïˆÀe9èccÓ4xÁØ^
%vö^ñáCï¹ÿ‹bÂXô—eJÈ8ßX;;#”‹÷4Zy àºÞZÁN(Éï½þñü’ UÙø3W¥ð¦Ê#ÇÏ -[zBû+à9x}ü!*’QÕçðݼ~äØД_§ä~êïѺF¶ç™>.j/˜Å:ÇÀàÛáI|,ß]ëdóWŽHã&Äè[Nilt¹½ë1lõ¿ÿ/'ŽNŒÇÜ#—{®àÄ1Á=¢”ÿ“ÅÉã‚“O N<Cpò˜àøs°Õ3ìó˜¾Hp±ÝUå´m(§Ë»Þ·=òGü«Cþõ€ÿ#?ù’:Æß`MtçYÿ+§ÿlÿÃl¯#ŽôùYâÌRÏÞ6ÕcÎ5ÔpÚˆt‚õˆ^§—endstream +xÚ]oÜ6òÝ¿bïéd «ðS"‘'7uZZ§u|¸‡¶ò®lÑJÎJÇ(î¿ß‡ÔRZCÃ?†Ãáp8ŸËþøÂè”I«¹U©f\/V›¶¸ƒ¹ŸN¸‡Y eõÃõÉëw2_ØÔf"[\ßF¸LÊŒá‹ëõÉÛŸÏ~»>¿:] +Í’,=]êŒ%?\\þH#–>oß_¾»øéßWg§¹J®/Þ_ÒðÕù»ó«óË·ç§Kn4‡õÂc8²àÝÅ/çÔúéêì×_Ï®Nÿºþ×Éùõp–ø¼œI<ȧ“?þb‹5û_',•ÖèÅ#tXʋ͉Ò2ÕJÊ0RŸ|8ù}@ͺ¥süÓÒ¤Úˆ|†‚Ï1PÛ4“B:â™y–r<`Œ%קœó¤}hëöî HD„„-–"K™b™[~VקK…+úûr‹M‘ô÷Us×ÑðM m.?íŠú´Ó÷e€K‚ìÊíç€au߶]éQôiŠMI³{Hžô-}Ú•Û'ºÝžr“´›hµHêªë=¡·4âðÁùðDœ§VkáNDØ; TZžT°Jf"ypHË[˜ÁItãLÛ”a¤ðÀU€!6V«¢®ŸhjUãÁú0ïáû®¬oAô2e’ëûÒ³=¾;Éò4ÓÖµHdü‚”‚[ö`]_ôå¦lÂ~§À¥§®hfö1yª²\ùõÅzéX´TÒ¦\çr̪õ¶ìºéà̦Jäù"‡FføW=‘ZcÌüX—1ÊCùæ\¤Šgz¿3¹)úÕý‘Šß‘È€ñ%"•L³Ìò1‘N<ï’çi.·Ñ¬áædžTM_n½DöëÃ~3”{ìvåª*jê<Oîu£’Ëyr^ +Í0aTŽPIÍ1™ +¹ó&êÃñ»‘<ιè*çà-دóÑÁ³°V«yÛ‡\™ ¿{c€Ë7ʉ1ÄBÒÚ4·¹Ù{b1HÖí²4çã“rcɼF¯KgÀOô Xª¥þÜ{` + Nçù”1€ø!Šƒ©ÝYŸ|}k%ÁDmwÒ=ÜÀë‹XüØÂyÑ‘Þe„Ø(¹:"OY®`{ÁSΕÈ*“1,4¥žu…³‰+l$€mxW9YTü6mïP¹¢Þu*<¤%¡eÓ)Ç”§\éE|Yßvÿ(iÚfv±Ü|ß&c‘’ÖÊç£CH€ð¶ãèP†è0<è¼–½Ùû0Ä/Œ„AªÄéÜ…C8SP÷ÇËÔ÷±67ÅM®`m£N
ÁàTL÷8Ú Ý¹Æj4ºjÝwÝÑBÔ™WWÓâê¶Ýn\àŠ³Åÿƒo6¢D: +Û”=n^v&~À$Å·Ø +ñ-¶½=Äy ‰âHìyç·m¨OÄêð‡•‡fUâv§f˜sÞ,¬ 8lÖ%ø¢pr¸Nõçrf,žçf‡øDeI~6€…C`ºÝËvëODF³Tp>Ä"úª™>C0r)ãÙBÂ;ÈTæ^!Ímï¼rºŠÒ%|Ù )V¤åC¹òJ( CM ’ è„2cŠÒ6Ô„bó¼G6ó"êj`SÖšD gÛµ‡ƒ˜cW¯c¸b»-š»è]e‰¼9aSÁP‡ãTŒ®=ßÐ>l+¸*t/ò̧Cp¾êÜPžì:zS¸Æù¾ØØ»ñ¥ÇGJ:øqÐpFšMz ÈMįAÜâÖ#ó®üt+ô¯!ùœB“¼š{»d T)Ü;„FÌØŽ†Vî
Ac›º ¥òSÎ}Çå!¾qð÷¯V½{Ïn¨ù“1q·óŽ’Çlò—'sópÅÊ1ø¶(30LÅÁà«@›§U8.œyØt “c@è¾åU"ùÏ”d&žv>ÙdÒGë8×z\0áŸõ¢[A•(ÐÈT]Xêøc‚˜~ÚUÖc¸Fˆwy9¿G±\?¸°!>+CІdvÇvì–ŒS;6Í2|ÁBê7©RÍžIÒ‰E¥êt)vnJˆZ¼Y²pw>{ÇØ|öŽK“k³!}7›¡“\¦:79¨8Ô^pçßšü0.c”‡>†u©³\ïw>š¡“伉ïHdÀø‘*O`|Läñ8€ãc‡:ëéAß44²i‡¬ô\ªÅ™ÒŤx
œEÉIͧ2~ÄÖ¢€oú¹b0q‚‹C¸×{f* H]iÁ©S D ÍØ—¬n€_ÆfÌîÞ±ÝÍxT²8l–nF$͘]zŽ\‘ÑIòÉSwí5|96aeõìuq8i‡8åyÅÁå a6».àwŸªg€)=Tä2ÎÛ“`Ë/uµªúr2•* +84xi&”ð¡AG‡Pš|_¿]*!)ý…Ph*ÓIŽUY9¢’}!ݘý*gcâÍ&Y4Dv +Ò§£9ÌìË»ÌðϘ÷ 9ŸÅñî¾}l¨ývÄýè®ó SHó[k™ü>&ÀOSÆ?²Ã^A/aÒÿBG· +¹ë)åÃ//Iÿ…ÌÝendstream endobj -1772 0 obj << +1771 0 obj << /Type /Page -/Contents 1773 0 R -/Resources 1771 0 R +/Contents 1772 0 R +/Resources 1770 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1758 0 R +/Parent 1756 0 R /Annots [ 1776 0 R 1777 0 R ] >> endobj 1776 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.0197 604.364 315.2448 616.4237] +/Rect [242.0197 308.8411 315.2448 320.9007] /Subtype /Link /A << /S /GoTo /D (rrset_ordering) >> >> endobj 1777 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [238.0484 525.4389 311.8142 537.4985] +/Rect [238.0484 230.3842 311.8142 242.4439] /Subtype /Link /A << /S /GoTo /D (topology) >> >> endobj +1773 0 obj << +/D [1771 0 R /XYZ 85.0394 794.5015 null] +>> endobj +518 0 obj << +/D [1771 0 R /XYZ 85.0394 769.5949 null] +>> endobj 1774 0 obj << -/D [1772 0 R /XYZ 85.0394 794.5015 null] +/D [1771 0 R /XYZ 85.0394 749.6227 null] >> endobj 522 0 obj << -/D [1772 0 R /XYZ 85.0394 674.157 null] +/D [1771 0 R /XYZ 85.0394 377.478 null] >> endobj 1775 0 obj << -/D [1772 0 R /XYZ 85.0394 651.0501 null] +/D [1771 0 R /XYZ 85.0394 355.0589 null] >> endobj -1771 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F63 1364 0 R /F21 938 0 R /F41 1218 0 R >> +1770 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F62 1361 0 R /F63 1364 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1780 0 obj << -/Length 2656 +/Length 2109 /Filter /FlateDecode >> stream -xÚÅ]sÛ¸ñÝ¿‚“'ºsBðIÉ“/g§¾¹sZÅN'—Z¢mÎQ¢"Rqt™þ÷.° -Ñ9{–&Á‡S@8Ÿ7…“Ä»íD¾gÒ_q0'ÉÉ?ïëT¼ÚUmÙ¹(§!µ}.Éq6„hwÛµUø\®½ràëæÁžùæ¼Ó*ßãÄC³kŠÛ]…sÖ‚Sí©×¿QÊïvá–Îñ©Ø‘U8‡h‹Y„ú‰SÙTùÂ.nw–Òa€)§ØV?ãu5®ýðP˜`¼Oø
ÚíaVùO_Q¢RˆÛ´y[¬ÐÁ–›b»*É!‹Žÿ¼-U„åž•0ÎÀº)Q@Ìg$ã:Šý.µnBÀÛO8׉Ñø}áàóª©qÔNË-K!”KåeáMñPhB -#™ý0N6O¶Š,à‚7„}ü¸½‹p0ò„~.°yÂpû¼†Ž÷à.ñ\l„–(hÒàm2-4d,Ôc”`3”<R!Au"‡îl=%ú„PÀå$ÚéjH8ì”dY)€åIš>%uã@\–M'n3pbD¤QÈÊÒTõÛCß‹ ÅàœHª¼5•.0,c8蔌ºiÌÇšWÎé™jª†Âú°¨ò¦Á”7JäÃÌmÔA…cLT -"yÔ¾E[òmÚ¬r¼!`ŠŒ%Ø=$ׇ[ç¹æÅ{Çß8—S„ÓJt$ê/dKàLx²h!U4oZP“æw3ŽŒ÷T¤SÕ1¬ªŠ»Ü¥ïŸójWtNz;A\–%×I©îÒ+—¾:pZT" ¦.ãO±]!3’Bê=´Þÿn•'„ö}†£à: -¸ÜWˆ¿é™šIP åÕ‘ -rä|›¯—ØàøŽóS¡Ø»l¾;?E»‚ ©W7…‘TÆÇ¥²ó<õR—)”/ô{PúÇ¥®+IÔ·….4¤D,ŦÀb¿¨ÊÅÿLè® -s»ôÀõn½œáèÆÃÅØ6.]]èzj¦èµ6̃JÓ’âJ⇲½U’ÆçÃoRØåÌ9™x]<0%éÆ׫<ÎÛ)RõjSÚ²R€Q›´`U˜Ø%lù½vóvWqy]¶¥‚Žë]ŽM¸¼ï‚ˆ®E“«¼]ÜOu—º`i\ -êzP‡çÑþÑÁ>æpzžšöšß7¾ÿ‹%šˆ’Ï$–ðLÃzö ®åiV#¸©µû<›®ký5 fXÖ^Ô®ëç:篎´ó oap{/AGÏ' C%ÄÄÔ@]^áÓ8vt†ÌÁÌè…iúG ~óÁ^è_O¶0{(´f×ù›$ìØ%ƒ $M4Æëþþ`‘ïšÂwÝöaó«o&ipu`y4£³£}¾¤kä9!™¡’ÁÔbW×\/äþê¢Ï)§Ã5ea>o‹p‚MH"Ù(Ç4¬9"r|4»[Cu@Æq¤Ì÷Ž!IÎe|ÔØÊ«‡|ß›ÄÇï7bœmqùÆsК>ãÓ}èá8ò@É#»s‡ù²„˜ÖW°v$¡Õ¸»æ9ØlŠÜÒÒû æº<œ+%Ï!œ`:rž QíÈãÂ&UY4äØí!S’)ŸÔƒ’ŠläÑ„; bB‡Kö+F.¹¿¦Ã¤tàÚ:݃\ÀÚ@1i2‰¾í*8Q‚{Ýî‚Å×ð—Çת€2¿4Ò&…Çâ!ú1B¥Öa‚±å´—€xy¹âÑO5ð,y¼³ +xÚÍYOsÛ¶¿ëShz¢;Œÿ$›“›Ú©;Ó*zó¦“æÀX”Í)E*"ǯó¾{X€)Jvâ:ž1Åb±ûÃbw±)…?6Ušè”§Ó8•DQ¦¦×ë ÞÀØ« s<3Ï4¹~XLN/D<MIª¹ž.V¬„Ð$aÓÅòm¤ '' F/__]\¾úÏüì$–ÑâòõÕÉŒ+]\þrŽWó³_=›ŸÌX¢Xôò§³ßçsÒNÆ—W?"%ÅÏ¡óó‹óùùÕËó“w‹Ÿ'ç‹Î–Ð^F…1äÃäí;:]‚Ù?O(i¢¦÷С„¥)Ÿ®'R ¢¤žRNÞL~ï£vê(~Œ.4ó1 +ⰇЀR> fêÀ±f +×0–ö$¯ê²¬ï‹ê»`UÓ—Ž!àï@£Á‹ÀÑW$d5⎰úmf°Í/Ž,ºò‹>IìHÿßÿ‘3“„S}jÌu™5
6_öWbC|ï‡!aß9![Gàƒ¾Û±q;X±Ïâæÿ:àøaàø8v¸#^ñyP<•›}
àØ''Ž?ÁãÄgA!¾À?9á³<ŽÈjˆÓf‹y +Ó
ðT±-1£h‰•Xã÷CWµA'¨Ñœ#þëêOžˆnûŽÛ¤?/ +‚k[M¹„I“ÄÜîqp{3ÅÆ<xèøgá„ýç€}¹F7.éô'Qìé”B´IRÑÓiïa¢ãzL“=iF¼ïÏ„¥iÙpgÕôšPåí|5TVÒIO9BBkö”ÊN£ï33/pJD{ªQJt«ÝÂvÓ7ùõˆcpN$Uþ4.1,ssp*ÉÏë±æ{taOSªú`½Å:Þ.¤D¸&JSæê¸BÀ$1ªˆB<±Nâ,i!ë)Ç`;cn ól¶t39w2W×¢%ïš·íÃ&1"ÓÜû‰gêYŽ4Ñ_Ñj/ñ1«ÓÜ=–Ï°zÇÜ·ZASúxþͲ^gEµw°)#š õõï$>b¸ ’hÊžáߌYž8uißò]ö±žnÎiÆëí‰Ý¨ð]®ð鮪ñqÏÝŒ
©€¤îšæ<æ”æK¸‹DûgC£Õ*ƒ¼ã¦4£Ñîq:ötvõÇxhЩôf‡Ê%N9(³@¥MÞeê–†º%t‹‘¼KjÇtÓÇu³Î,xC <IôÕõéÖB§®éøèø'çrLqš€£Pá”úvDm – †¬H͚ܤùÚÌ¥#½qß=^·2¿É\ùþ1+ïò.HoG”K Äã> )0N»òÊU«ßï-šÿ¦LB‘©zÊÙ2!1”ÞýÓûe³¼"Ô¿3‰8‚,×ô3†qÓÈÃùÀ9ž`D
8ßÌTUîÇ!ã>Ÿð` +Qïjùnûí®M½ö<¸Ð ‰Ä2:úΚç$¡2Œ9ܳf1”%ŠUÒtúè~<õÅݯ݄҄—ä<N`?@ˆ°ÉØâ뽟;ý/Ž+Pý·n)Mendstream endobj 1779 0 obj << /Type /Page /Contents 1780 0 R /Resources 1778 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1758 0 R +/Parent 1756 0 R /Annots [ 1782 0 R ] >> endobj 1782 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [325.3322 530.3947 398.9856 542.4544] +/Rect [325.3322 237.4931 398.9856 249.5528] /Subtype /Link /A << /S /GoTo /D (the_sortlist_statement) >> >> endobj @@ -7911,129 +7893,128 @@ endobj /D [1779 0 R /XYZ 56.6929 794.5015 null] >> endobj 526 0 obj << -/D [1779 0 R /XYZ 56.6929 600.9849 null] +/D [1779 0 R /XYZ 56.6929 308.0833 null] >> endobj 1304 0 obj << -/D [1779 0 R /XYZ 56.6929 573.3935 null] +/D [1779 0 R /XYZ 56.6929 280.4919 null] >> endobj 1783 0 obj << -/D [1779 0 R /XYZ 56.6929 447.7048 null] +/D [1779 0 R /XYZ 56.6929 154.8032 null] >> endobj 1784 0 obj << -/D [1779 0 R /XYZ 56.6929 435.7497 null] +/D [1779 0 R /XYZ 56.6929 142.848 null] >> endobj 1778 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F53 1313 0 R /F62 1361 0 R /F63 1364 0 R >> -/XObject << /Im2 1350 0 R >> +/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1787 0 obj << -/Length 3112 +/Length 2725 /Filter /FlateDecode >> stream -xÚ½ZKsã6¾ûWèHW…<€<:3žYgOÖönÕV’-Á6k$R#Rö8¿~è_¢ä¤¦jíA n4>ô‹âÿ|‘©„É<]˜<Mãj±Üœ±Å#Œ}:ãD¢xHõãÝÙ»Ò,ò$×B/îke Ë2¾¸[ý½ÿÇůw—7ç±P,ÒÉy¬4‹~¼ºþ€=9>Þ¾þxõéß7ç&î®>_c÷ÍåÇË›Ëë÷—ç1χù‚V82áãÕÏ—ØútsñË/7çÜýtvy×íe¸_ΤÛÈ׳ßþ`‹lû§3–È<S‹xa Ïs±Øœ¥J&*•2ô¬ÏnÏþÕ-8õSçô§d–¨L˜ ->§@•'Z -éèöÌuÂè€1Ýs‘Gûª¬6Ǧ@ï†Ã|
ÙÃ$¢xHuB–@ådY·ízʘ–¤©–§9wT3¬Å€5*I…ÑcÞ·¶màhSµOÖ5dTí7÷v‡õ>»¬«UƒmËb‰sDTàˆÛI˜°{‹”Õª\mYW -œt–6ICªã&©£ -š>n‘Rpú©ÈN³ï¨fø-¢"åc(xR:˜x=ô×*Ü5èÆ»—§rù4š303nœŽQ÷^EGhyVeUì^±ÇAs[7e[ÂÕ{¶!‚н!Š¥ðN1“‚ø&›@¦o2r˜ð¬+Ç4SÑ‹µ_°Ë13Øt Ák§\FØâ’Œ<Ìþ½q½›âËbßeá7 -¤_÷–|&ô¶4ƒ,×~Wáû-$; ªÿ|t™ÉÅÕÏ?àÜ{‹+Ž<;š'‰”Y´®›ÖµrÔhƒ½8šƒoìª4ãÈÍMãÕµÝΛ½;0G[Pïõ->½Sq~û®ëþÞ]`;D˜xxå!O$ð -+ÇÃ¥ý¾ôØáÀ3pP˜ÄøÚãÌ -âB©LA/¥ -Ìaôž¨&Ì‘Ìoù»3Â,_;p$Á~øò¹Açí¹¢þ}»×´›ÐA§f¢*gþpëæd&TÕ Bø¡`Äð&Œ“4o^<V`Èà£_¼†Uw/e·`;^j$,rħϊ]à‘ø]0F}जÙØ@æ<›ÏÞS“n2r×r.wçi’ Ú¬÷X>»:¾o;Û”:áØÁ¡á<
Nàï¾»e•¤=B_ŸåÁ‹Ï~ˆs_Ÿ„_æ…¥^m±k¨8".s3†®¯3hÍú<¼/Á²P}FÃBŒq]eå"I*ôˆ®Ð#¨x$\ö¨,ÑPx“Þ×”%€Ðp§‹á…÷¤AŠå~‡ýU;e–N΂„‚ÓÌÍ¥ªÂºÜ”]m¢«*³Ëu½üB•‰/öÅUêè°HÃóD(ª.G£€ ÂréÒþA7 ’õ*õ.Õ,*(áXÛ¢i©¯±x`ÁÀnC¹Åï]ºªŒÐqûù{z›ï($øa¥P N= 8„‡Ê˜ ¢(MaQ¨u‰߯ç·lÜž/µìW“bõs±+ë}(Dùî&ß(‚ÙGЂO?š™r<Á뽑™©ŽsU8FºÒqU¯ìa†ª5ÙRŸ¡£š‘ado -†.ṧb2>4|ÑAÛŸ? ¼8©Æ®{8kšn¿AÈTùë -†uK™NÀ¬›ÓrtT3‚Œö9˜ÈÆrôHrŸècÆÅ.Oõš¾ath‚¶G“+ÃOƒ{?ÕÛ&"ßgw€+_ìò?úºB£gìFPÊ -&ôØ™½T‚©ÓÁKC®#Ó¹ïÞ®°Ð•Ëèk G²T#ˆ+ÇŒSMœ+çé MDcœ†kå[b[ìŠÅX›‡z74¼ÂxØö¦~ÆE(„æxðeð0슈蟹+É/m`h‡TȽ[¤iÁ7cJ\Ü &Ç~¬#Uâ~a35Öݘïþ!Oÿ+'ˆç¥+–Ì'Æ®– ±rÊ‚1SÉ»_üŠþ?¿õ5Dendstream +xÚYÝsÛ6÷_¡¹'j¦DñI×'7µ{î´Î£»—¶´ÛœR¤"RqÜ›ûßoHŠ¢œ¦i2 !p],vûA¶ ð—-rE¨0r¡$Š2µXo/èâÞ}ÁM‰Ò1Õ·«‹¯¯…^b2ž-V£½rBóœ-V›Ÿ“7ÿ¸üçêên™rE“Œ,S•ÑäÛ›ÛïpÆàãÍÛÛë›ïÿ}w¹Ô2Yݼ½Å黫뫻«Û7WË”åŠÁzv8³àúæÇ+}wùÓO—wË_W?\\ú³ŒÏ˨pyñó¯t±cÿpA‰0¹Z<ÃJ˜1|±½J%…ˆ3ÕÅ»‹õŽÞú¥sú“”Æ• +gŽ V’É~A +Ò˜´ëª)Wé©”p¯±í‰Nù£‚"’ëìˆñ;Û…"£/"êÃöÞÇL˜ô¹;<[ˆ›µ™®ÜhBYR¬q
÷QÞT>Ãûq“²Þ”ëÂÕÎÇhžPœß”+S®n7·,yT¿PEWO±‚çi9ŒYÉ·oW3áÀCo!c׊ÙÀðgc7¸1ÌV188`™@;“>1!‰É{þ=Îðw·•S̘àTŒ†ü ¬m‘µ³õf‹·ÅÇr{™Î‡¢:Ø×ÄäœCXA]3+OF P‰#NÅ!!Uƒbš'ð?FK…[‘µµ
ŽÀ>:,y+c*m¡ îpŒ%#Âè»Ûwï®ÞàXnŠXªä¡(«Pô¶a¯>¥q<n‚¹¬\¢7¼+ãÜ ÎV¦sÛ+· I[ÔÆ`ò}þ/§ ij&¢#¸J´PÚ°ª|8ɬzåáNÝñÆàm\YÔ³b‘³øD!ögüø4½‚OÈk©ø˜Öþ˜³(#¹1¯2ï‰N¹¡”ódP`ŒÙ¯–°È5 +TpÜÍaí» 2©m÷Üì×ݾèëŽ5¾GŸâ.€¯qOyÜÌÎî¡ê‚H¸öÝ
nbB
ø;´]3Ø ¼«í#Øè‡@YÔí³Ýã…L4™J8KæúaGw¢Ëis*'ëÃ[ ‘y3'Ú
+”sÀ +˜µØ#z“[‡>#¬5¹ïµa.œ”uÿ>òŠúˆ/%š" +¹¥ç‰Þ endobj 1786 0 obj << /Type /Page /Contents 1787 0 R /Resources 1785 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1758 0 R -/Annots [ 1790 0 R ] ->> endobj -1790 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.1789 349.0138 363.5077 361.0735] -/Subtype /Link -/A << /S /GoTo /D (dynamic_update) >> +/Parent 1756 0 R >> endobj 1788 0 obj << /D [1786 0 R /XYZ 85.0394 794.5015 null] >> endobj 530 0 obj << -/D [1786 0 R /XYZ 85.0394 769.5949 null] +/D [1786 0 R /XYZ 85.0394 429.6422 null] >> endobj 1789 0 obj << -/D [1786 0 R /XYZ 85.0394 748.9943 null] +/D [1786 0 R /XYZ 85.0394 406.031 null] >> endobj 1785 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F62 1361 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F62 1361 0 R /F63 1364 0 R /F48 1238 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1793 0 obj << -/Length 3955 +1792 0 obj << +/Length 3654 /Filter /FlateDecode >> stream -xÚ¥:Ûnãȱïþ -¿EVܾò˜ìÎl&Hf73Þ¼$y ĶÍ3©){¼_Ÿª®êIQrXÕÍbWuuÝ›òVÀŸ¼µi’ª¸Í -“X!íívw#náÙO7’qÖi=ÆúÓýÍ÷tv[$EªÒÛû‡ÑZy"ò\ÞÞWÿ\¥‰Jî`±úáçO>þôëçww™YÝüùÓÝZY±úðñ¯ï úéó»¿ýíÝ绵Ì\ýðçw¿Ü¿ÿLR^ãO?ýH3ý\Xôóûï?¿ÿôÃû»ßÿåæý}ÜËx¿RhÜÈo7ÿü·¸`Û¹‰.r{û‘È¢P·»cubÖa¦¹ùró÷¸àè©uI~Ææ‰U&½]k“ä@YÊ2ɤ¤ÌIª•ŽRVrIÊ¥¼«ÛõÁ=\ÿ´êûŽÄ°+¿-N{ìáðzŽ&çrÓ©LR‘šÛ1sg[ˆX{P£=è4MlžeÓMÜ?¹ÞÁébÕ퇺k{l»v8ÜÉ|Õ541<1ZïÏîp·†³ÿC,ß®Un’•o-eRX«üÒ÷T>× *W]K¿~QÿéŸêö‘æKúù½kBfõ/aÅ\ývt‡WÆ2«‡°Ü—Ÿß°}*ÛG׶dB‡1¡!¾¬WeݸŠàáP¶ýƒ;ô äZØÕ¯ýˆ•MóJ„p»¸71Ý‘-ŠÕsÙ]O01Uä$#œá] -µòÓ–”ѨÕcÓm¼rI8#¯ry.‚ƒÓÑà -5#CT[›dF›©Î¡4$»ç¾z'·Ä–I“L3Ùù8¨Ì˜J‹Ä˜<Ê"Cþ¼Â¾ã‰ŸSÊ€lb"€+”2GœfŒ.•(Ò5àFÕl£ÉYÁ±:•yRhùF@c]èË›xÕöëcµ_÷õïgÁ˜OòL×ÉG¬úcÁHe“Üj5eà‹CUWB±PVàg‡º÷6ã÷?~úBЯ?þBÀæø€Fùན -žt.=¯°‚!Ñ -0wìeC í³ì}îcòà -]¼‰lÛ—·±:Ú€]tS(éŠ&)k(V®ÝvG8rGþ&:#To<2Îb®PȯÎV_v¥—. °ÃˆTÛ/þ{XœO ÎwÈX`ì}'ÑZʛܷëûú™ÕçØ3àe
¿÷?ür'U±ºÅL‘%JÛëAl„t9†¤‘/F05RBÝwtD:§=_:…N'Ä)|éœs@
^ópÐ)JÅaL§(d« -áà5AóaÊŸ)dá‰Ñ©šžé$xaÞ3^J˜óà…H¼<:"ÇÁßeP:¯É;&äszŠ|Zþ® -UÈ ›ì…o ø<nü7vu¾.)Ûƒ8JHƒÎøÉ¡ÔZ_—mÄz‹‹³ÕN6Zb‚ÏGq -΃Æ.ÞÃÂŽRCþ•p`ÓØå7PÀÑì‡qï?€hŽY*ïóSŸ‡{ê"|ÒR‘H<¸i¥KþÇG¼Õâ& ÏžîPâ6·ÆRÌnÊ¥Ó«nîQp\“iäÀþ RÆŠ`Z|‘†‚¦ž|ÇB¢µxÍÕ•:üÒ‚7ÛñBÞÑÁ/©º¤û -÷¤10ÅìÀT0@šŸŸŽGŸÐ7^´šOÞ}¤ôHÓÑëx^H=P| k.x83uxÈ«·Ô'F.3§FHkkÿUOø( ç\zù6×mN†4ž¯Á/¶„±ágM÷rº&¾ä‡JÐâÉÑßá$Þ…y$æî ó\Ïœ_bWÖ-§·3U=¶ä&ª¥oR@®¥O¢„ -™åÅ°|žJ\<)“á -§6Ýåƒ 7 èý²%Ôz·ï|—Ü#¿.åÆRZˆGj! ›^Ê ÁÍ‹à¿.fªY–¨’¼ëŸ¼ž®|ñÊH|©[?¼®+×”¯ç—‹*±˜Æ5Òéœöä,eyÓcâŽ3ðž<~††’sž¥ãï—rìº/ÎÅG-—HYêG€¨Ÿ“òÆhŽ¯#ùêœÂ(L—ôƒ^Û7ÓŠ1C!?€Aì,ؤÈ̬)ˆõE¸.ÁÓr6wú*¹ôí4~ܦ? +xÚ½ZYs#·~ׯÐ[¨*s×\ë]³N¼ëHrªR¶F$(M–œ¡93:üëÓn`©T¥*¥*Mh +ùãâ×ßÅå–ýã…ˆtžÅ—ÏP‘Ìsu¹»0±Žb£µ¯Ù^Ü^ü#8hu]çöÏÄY+“ÀNêH%RÏﲌR))52RF¨°ËJÎí²çÂ]nʇåS±-×eûº,«Ö 4]»4idŒL/‡‰¸fäP9d¬"£ôXŽÛ½]•¿ ¡l‘&‹öÑ"‘.ªnwoTYo¨n]¼2ˆ\SwH›®íW2[pùùÑVÄòñËííõª……W…gl¨½èÚzW´å7 +4¥ôé¯aÔÃslÇC„¥éûXw‡Ö®³˜ÖŽó¬í¦ û樂;^æÜxÞ}2CÍ
ŠUÉ4ƒžØAb+UåJæÌÂëñʧÁŠ4*¦<å^"BÓX§ªà›RùNQ‡E4Æš×u»â¥Üu;*À噋pG¡
õj‹CC—1Q‘Ôy2½‹±ÐI"Èã|¨¢°oØJâ$”ÚªÊje÷¬È Ø–;ßÐз«”%é §Î•¤¶Ì_Ó·®¸.QÃûîX½«î@õU;Ô3¡Á©p(´ìm¹+ɪ@¡ØÕhw.ð]mëÕ7"›oöù*W‹S[DH‚I‚º5å¤ùŸÀ+בF?„{Á†l|9ìèVÑRÅÖMËu}5²¥†\…r¿uøˆdPM[·_ßSM¯ð©Lr]É…Éí(|iGš¤Õž¦éxCqŸÝ6±hà¼ï·–êÜ°…7xPqoÛgk¹Àb Àô¡¬»†káTyÈ¢âò:ŸÖ<:òÙA‹Ó,2Išœ÷â†\§½¸Àå‘ïó²ª×¶9òà4xÖ:UçE\32Œ•ŽøÚc!œ·ÁÞ“Cý ¾Ðîüä¥N5}﹯}O©r7jªuLjkþ芪õc³›¸ìÂ%222ËǦ„´!}þ¤‹ÔsÙ>Žš*ûL¸Ž»þו”rQÍH¯åTsú[‰$Ê¥âÛ#ŬO£\+¯ãOCH'è5½¹Î@ÈsM!äUêŽb3ÁÏʸfl@&,I#»sPhëÙmy¬âª€% –”9vê]W§™”wv\= +b½Ûpb':'jCgðÊ‹rë€ t{(ªfc)¦ñâ—¦s¨´ƒà\”JÓæù ÊY(ˆ‚È)‚^Pƒ()wú£v0÷]Ku-ÀtÌQtE‘ÔÞ¿†NDìÀ‡Ã€³àqûx0_4Ûâ‰ùü¡¹¡×³Y +†»åã%:Õ“ÀjœKq‘â{‚
ÙGûZ¤°H„CIù·ai¨±ØïÃξà˜Lz{ªžg,e&0û.CÞEÐ4”Ò‚=<ž#Î"0»ÆO1QõsSHðÛ”Ÿ&ËÕdR¡:Ž£ÔôîgH— +ÃŽ¥µßœ–›Ë$Q*Œ|hU&B%ydLæ7*œŽ ëG~<S +3™‡:¶_“™R ‘¤ÞmU"O&³Qª&=iÑÁÁg&y#Fr¶èËÝñuÕ,»õÜØ?ÝWŽi*óóÓ®™ùGî«÷5Öj,Àm]²Û'ž€(Ö hÛ’<Q(_CAÔ/&â¾ÛàÜ8õ$@? ô®Å¹_ÈñÊœ‚ïX¡gì»Ó“è»bõ-HÆ®-Ÿ0uíÀk¦œ&¹™¢dí¥Æ͈†ƒ†X*"œdÐj +Õô +üîT‡4?g+ÒüÒíö¾p_|¼¨©¶ã\T‘ +(”W§‹Û]±åd2+L Únð?ýà| +@Þs]VºÏ_Ïùƒ/.ôÄðé;Îáß}øùJªütFBHžé7rŦÓ6Ì3y‹|Ò‚F¥TúìÔéxî±ýÒ‘Èu2šœÌ—ÎØ Ô EÐL‘/e:
d¡» +x;w,ÔÜ4ê„ôÏ'o˜‰ÒL©Ñ
s£Zçí£Þa*"ù6/S!‡Æ +ùÙèpp«"“¦ñ Ý1ƒ»:‰9H1lš0,æØ Ãj6aH²Ô eU·_¡ý +Æ+ñuØ´=XÛ#IÓÄl®f +ÖŸræWTýü’ŽFý† +ÅI"p~Ž„É ÔZŸÝÕÀô†Ó±úk +ïx¡âªä•¦QxZë
;Šúº/ùX´/ËS?ÅÜ“žM ˆð0÷?ÿ¤´ÿ½‰³ìÄ0¾Úh¼P¸¬4;V>p_Ñ‹þ&í#¾endstream endobj -1792 0 obj << +1791 0 obj << /Type /Page -/Contents 1793 0 R -/Resources 1791 0 R +/Contents 1792 0 R +/Resources 1790 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1796 0 R -/Annots [ 1795 0 R ] +/Annots [ 1794 0 R 1795 0 R ] +>> endobj +1794 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.8324 725.4794 335.1613 737.539] +/Subtype /Link +/A << /S /GoTo /D (dynamic_update) >> >> endobj 1795 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.9335 395.6435 381.8296 407.7032] +/Rect [324.9335 73.4705 381.8296 85.5301] /Subtype /Link /A << /S /GoTo /D (zonefile_format) >> >> endobj -1794 0 obj << -/D [1792 0 R /XYZ 56.6929 794.5015 null] +1793 0 obj << +/D [1791 0 R /XYZ 56.6929 794.5015 null] >> endobj -1791 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F11 1451 0 R >> +1790 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1800 0 obj << -/Length 3069 +/Length 3893 /Filter /FlateDecode >> stream -xÚZmsã¶þî_¡o•gN,^ùÒ|rξT™žîj«´I>Ð"mqB“ŠHÙq}w± -š{»r" „tã|¹P± ‰c§µ)Ó¦Á -*ìxg¹q]DJX•ï:ôñû
…ó´z%…Dz¾OKa©Ý$\¤qGrÄ4 àÙáÒ6Tif -’hžŽùÌbÇÖ!àßú…¨rÄy°,Y§›Õd¡ª[*¤»]ùJ¶h*AÖRô`ÑDTóåÉ^ëò¼ìzÐUnXEÖRV4é}ÙÙL áD”QØ'cfR†ñü`BX)ËHPè&I*=¿Ïöe"æFÂxOò-ì _Ò#ë/®L|ŽjxÀŽgIG~%£Yþc¢*ªG’§}ó?ve±)Zª¹~š8$§¶åB„:ˆâD÷§g‚ 9Oµu856Ûîwçô¦,ào‚7TÆ -BÑÎÀ!263‚BG×XA¢ÇoëZiÚÓ’jÝ’a¥Kr l¢Èôs#Øu„´F2œßíòMñðŠ9r>1
D4X -k˜h2¤12ìS¹e9i6ÕÛ@mÁ$à.㶙4n"?…Zc~«’é(ôµNGa§…¾n!·t{³†tIÈÏ&
;¥Ã½=ù¶HÔÀ2a]0µÖ‰»(IJ‹B ö^BE!ìÇE!Í4ûcžŠÂ˜9„‰]zçЩ0„ù–a?ÑÈxB~
ÑkÙß#ßÐWŸÎ§ áL¾;ð`È5…HºÈkHŽÇ´ùÒ•Å_Ó5¢kÖp¢l¶Eåéґ竸ޡwýÑ6“ùV¬úDóPÃm¦TEæ@ʱ(óÖ¹„¸M>AãáP™t²Äî-è°ÛO©ÙX9ìwµIf”ehÚôJÅ.I\دÉ\ òˆªî ©ËKiœ‘{îEðãÑÞÍvT56áiá&mZªÐ¼ 9“YÔØ´8¢_~ó¾ö€*ä\{*u´ Õ9zƒ½%b¡{œÆA~ûnìÀÓ™…õyÒØDL±÷ý_ØNEQÀáhœf;_ë4ÛuZ^’
.Šì-å!;ÅbÚ|§5b¿Ozn³õ Góå5}['èèËŽîâÝŸõòÊoÙäÅ3Í4ˆRú¬ha¡tçº4[SS'ÁZÝ-¯m„È“sŽìƒ9|½w#›E -ª·æ–qyB/
<±K‚Œ‹ª¹ÛŒËëàîæöŸ7·cW¸l&a?çÁOå<2ÐIwˆËâp'Ó›7ù·±lxdYrMsÀŽ$„ÒŽ„°…¦‹[B‰#!šíN•21ÃÝL[Ã÷HMX³Ô„EÃ×ðMéã‘Q¯Õ‘V:22Ûï‘ŒH¿##¬aéHF*<CF¶ì‡%0Ktš‘D?{ÃH¦Ï{PFYaä²ÉÈó2ÒbÚKÁa3ÅÞ+äÐIG¢cŽ&°oEÒmÛ²¤.›ôÐœHd -²oç´ËÍQFN ÆœZz@~ÕÁ|=ˬÇM×v|y…ÛOI§Ylw2Åie´@fõ\GpxÂÚð×æul·¥eSS÷¢Ú”‡,ïÐQ¡Ú(ä˯Ï!•ÌÆ´.±‘ -kùB–-äÆö‹§ÓÝA²2¼½ùÝÌf»þ”Úy€ñ¾‹ZîÇÑÔÎn~< -ß°&{÷µÌÅ@/qb,½±èg8‡÷%IH¨¢i«Ö[³£¿X÷Ìr,W‹«ëëÛàêö+¾ï_„Ž?ÌHœîiM@wZç¡OYõ ÍŽC÷ÍšD|3| Ø ŠÕ4zOé4x§tû”É#ô¡ÍQä¾M½x¤%!«›FîiM@wZç±OYõÀÍŽ£÷ÍW¼¾†jÌäøžÖ|§uþ”UþÐì8|ß,ÜÍßÿRDœÝ÷žÖ|§uþ”UþÐì8|߬`ïƒú2 -Ã3ð= øNë<ü)«ü¡Ùqø¾Y¸Ý½>êÌqçkMÀwZçáOYõàÍŽÃ÷Í -ñ.ø±BØ9Óè=¥ÓàÒYìS&Ї6G‘û6…|ðPgÿ¨s¶Õ9‹zÂÞôÀà(fÏ Pï‚,ñˆå[øßÞ+þç¿@<ΞŠÇ'ž¶%ƒX$‘s -áDÉÐóîOߺþ_,ÉF–endstream +xÚZmsã¶þî_áò̉Å+6Î\.¾Ä™Æi}n§$( ¶8¡HHÙq~}w± +ŽýýËdaõå3tXÆ‹B\n.”–™VRFJ}ñéâiÁÁ¨tJ~ZÚL[a&(Ä@€œA[å—FY.…ôܺeïVp(8hß⯞-õ]ãveòK˜¶vxnXW—2SÒ(à ×mÊ[Í—íf[Õî÷¶‰*tƵÑቾmk¿´rvÛöŽöì×eO»>¯]C´’~QOø™1Qž«ñ¤UõpÅíìÁíðÇ5=²q9DV¨ârÎyVh-<ínCÛIܸ!–Õð”ZeEÁLdÙýÖOœKä _i䪣ë¶\¹Õ» Ñ)I«åPr«‚|
7"ÌÚ”/´l»©‚„ºvãí!"He¹vË_Ïëj¹2m÷W|V‡ë_„§·n‡’ˆZmÏYfP͆2C9+~¸%è +€–ôd,A–YÎí›”T•
îuƒ™ÙMX}[îúj¹¯ËÚè”XÁ$°ñ"˜£p»‰
sž1-‹áÜŽöYµtª¦í‰Pn·õ5Q4~pú¨\ðLMbW>O,[š©“Þ¯«Ž$f“Š¤®„}W6Ȥ–þ´ˆ&„tÐö÷¡å9&™Îl®Š·˜Tšé—´èfßõ´ù"l7D
è>Wýš&6©+7¡åMÍÚ=¹š&–]d8îÒLUx&²ƒ×ÆÊHš'Ï ”0™ÔEþ¶™)®“&´
nû¸‡UmXž„ëoÉÒ-yr×é7ˆ1Ôu}÷;ÜJÐÏ›²ëÝŽ–ž ŸrgAOY>PÚ¡¬kj tï°
x½œ,ËÀøÂ}à§l>^ûäv»jµò0+ÍÌŸVZ¯[ð³%à »ñÈSåžidQv^(0èªfYïWUó¸m2?&'`ñº†W +›Ð? Fý;>`ÄE9Êl|2Ö +sæƒI)ð‰P+Nò–PW ×noûóÞí^ÞC›ò·ùäø1‹"7™í{•Ç4é”É‘ +‡Ãê4ûÍÂ%äæ(ˆð¾W3 +8–û]W=9"u°NÝ—k÷Á:‚Ðh˜¬eóBGx´¡&‰Ó7‘]R*>2
ª÷— ½3™Q6ÎgDÀwŸû—-ü¿¬Ë®›XÔÌæ)4ùë¹5# ñ“»}+ßí +‚Hy2ÁDĶ³ù4„`<i“ +î£ð–¿Ó2÷ù:ˆ u€™hÂsuE*µ‡'Âœdg*Ø™øD nãhô˜ì†ù¼jÛÀÚò±2Ì•M€iÒ¬ñž—.‡X$•âÓW‚ž“Ò‹Ê@Ÿ"VÂ’ˆ•0^ÄHˆX5OØ¡ˆ±hZz~¿õrBҢݣx°Ùú§ÂóeCS«Í¶í\˜±x™ +‰9×àÄ‘?ÚÅX&z*€¸Ö1€? ªƒäâu8ë|ˆšfšõÕÃË|åêò$ôä +o¯¯ïžfMl?ºP¥³Âñþä”
¤ç€s>Ck±!7”BD¿òšÅŠKÿì\jB~„äZTËÉÃÙˆ¶q]W>zå6Ñ™¹¤Än_H+†Å(:©¬ +V¸:íþJ×ò +PpaFU\Zü%¦Úh_
†kÁA$9ø¥ñ»±àÌÝoÛºZV±FV‹•…óÁ˜#·_€jœQ‹‘xòå:W1xÖƦ‚s¡-¾åÓ¯çÃYçƒó4ËKÑ%SùÐ&Ë„z}ã4kbç1‚ÊÌXiÆ[‡0Ø&|§Ô‰a;–º Möµmw}xº*©~bN +MŠÒkú2Öi +–\¾ºkœsºëH½¤ÊD¡ÆÛ’ùåùaßë#9Ù_>(5çfl0Fö—Sé0Ï“ýAÓx¸æ9ûƒ@™<úúÈÐ9ô¥±±ùá&ÓæÙØ~È12¤/²CxVŸ59É°Ö ÿ°ÉÁ’TÎÆ¢ÍuD÷a˜
ïÆpøp5H¦¤.
kð%ËuÕæzÕM‰OçƒdTã»|ªÑÙLYuü½¯U eȱªˆŸÊ׉#K«†"ÌxØ7>7ñõåXံ»jSzuÀÎ~‡e.zÂ뻽ÿîEÙAmP*!(*Âá „M(µ +7Å1çé«îSÖÿ–‚þendstream endobj 1799 0 obj << /Type /Page @@ -8046,7 +8027,7 @@ endobj 1803 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [84.0431 671.8392 144.9365 683.8988] +/Rect [84.0431 340.5527 145.9475 352.6123] /Subtype /Link /A << /S /GoTo /D (view_statement_grammar) >> >> endobj @@ -8054,76 +8035,60 @@ endobj /D [1799 0 R /XYZ 85.0394 794.5015 null] >> endobj 534 0 obj << -/D [1799 0 R /XYZ 85.0394 740.6547 null] +/D [1799 0 R /XYZ 85.0394 410.734 null] >> endobj 1802 0 obj << -/D [1799 0 R /XYZ 85.0394 717.7278 null] ->> endobj -538 0 obj << -/D [1799 0 R /XYZ 85.0394 401.004 null] ->> endobj -1804 0 obj << -/D [1799 0 R /XYZ 85.0394 372.9762 null] +/D [1799 0 R /XYZ 85.0394 386.9945 null] >> endobj 1798 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F14 964 0 R >> +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F11 1451 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1808 0 obj << -/Length 2192 +1807 0 obj << +/Length 1892 /Filter /FlateDecode >> stream -xÚ½š]oÛ8†ïó+„¹Y¨Y~ˆ¹{•6N׃´›z¯fæBµåF€-¹–læ×ï¡HJ´,“1 -,‚ÀùŠ/ŸÃOK&†?ñ¥’Ê(“ â˜ðh¹½ÁÑw(ûtCŒfjESWõaqóþže‘D2¥i´X;u „… Ñbõ{œ"Š&PŽ?~~¸ŸúÏãí$KâÅüóÃdJ9ŽïçÿšéÔ§ÇÛß~»}œL‰à$þøÏÛ/‹Ù£.JMæw:Gê•>Îîg³‡³ÉŸ‹_of‹ŽÅå%˜)7¿ÿ‰£`ÿzƒ“‚G/p‘’FÛ›„3ÄÆlÎææëÍ¿» -ÒöÖ±øuš)K -S °*å?0Ɇ¨ÔGÜêÎLèÜ”RÇTĥ䧦”#’Q4˜ÞÞÝ=¢ÛÇ/IãÛ‹!O¢‚‡à•Þª‚ð>Ó~h:ïšÒô:xJ‘d"ï¨<ðV„÷™öðCÓqx×”f×ÁcX6$ Á;*¼Uá}¦=üÐtÞ5¥â*øTÀ˜$xWu¾S…སü™é(ü‰)•×Á§2#xGå·ª ¼Ï´‡šŽÃ»¦_ŸHÄa»À;*¼Uá}¦=üÐtÞ5eä:xÐSÌBðŽÊoUAxŸi?4‡wMI -“^^AO(<
À÷"»Ñ=Ž=ùÀqÜqÄo&æíÑPú‰Ñeb+ -û;â¡ã(±ëH`o{33Ø4°²;"³™=Ž=óÀqœÙq¤Ã©|;7‡E1ô]Áy¸(Èíq칎ãÜŽ#EøªYÍ™DIš…¹£ò[UÝgÚ³MÇá]S‚1Ⱘ÷µ7€‚žg¹£òÀª‚ð™öšŽÀ5%„Á -‰HPBÓ@\Õå(tªP¼¦]ÎLG£pbŠÑÏýÍ¿¤áˆ¥)™ˆ9*OĬ*1Ÿi±¡éxÄ\SòÿˆX’¡ŒÑPÄ•'bVŒ˜Ï´ØÐt<b®©@ÐÚlZ~ú¶ÀW-&x(ŽÊ« -FÀgÚG`h:×ôÝ+Ú·‘ˆY€ÜQyÈ*Hî3íɇ¦ã䮩@³+ØGRIì®ê2{§ -±{M;ö3ÓQöSy{– ó&Àî¨<ìVd÷™öìCÓqv×ôö:vØ¥ÌBìŽÊÃnUAvŸiÏ>4gwM?\d¦4A§i4%‚ež¬Ì¶»ÃëdJ ÿª«¢QÉ$Î÷"âBç7ÅáÛ˜«ü %‡'“ñ\/:µ)ž‹© Z鼺ژêóÝN'áÞº¿µ1ºµ.ZnòÆdÍNÜ•ò_iE1ÒbÞµX‘b@$HróÀØ4ñ¸¬žŠ}yhkbi¼nï©·º°ÞʺjtQ¹Ö™@Ù…²û¸@YUëÌUß<ȵ̓Û<ÈmvŲücj½Û0jaÂÈLa/TÿŸú¹ØïËÕ€Qw£®†c‡.6es0Ùkýé´®Ú¾Óé×ú¨Ë¼:Ñê‹Î@Ǭ>ô5èT~
j†26ëz¯ÅóínSü]Ѽ¿OÈétÊL†ÃTw¢iÌ´
ïTۦǿ _þ¡«8™Ó±:æ*25¨ÒíN¸8NHÜ”Õw}¥1”fµÒªvXBÆ>¯¾&½T}Ò–®t†.ïT÷e½SóT7F“o´&_©q"yü”?3] -)"w&ýÜäTË -ÇW#]ca–^xÅÛ>¹>Í2D³ÔyÓDÆ~/cDªôÁB¯„Ãø@(IÕ«í¾Ö3ëNtîíÎ\B JõjÛ1ÿªŽ‡kµa2¿´›J™Ö´iµ©™òvü¨”Þ§uZõ¶úÔ»2$ôçR»ŠÊùúùÖ-ZÖí§)lwO•0£Z%ÛÓ‡ú8<µß"˜DÖµÓÉ[uÇÀÒ=ï»n#ª[’ªÿoæͧRf~@ÊnŽprY¡Ë_àú…ÏH—ànøé9O?2ÄÄ¥ßlÀ,C‰€JL£ÚÇø¬å°ÑÀžŽ4ýU„oendstream +xÚ¥šÑ’Û&†ïý¾«<SAïœd7ÝN㤎;Ói’ÅÖf5ñJK›múô!¤cC4LF€~ÎÏXÉñ«ñœqÄ%‘óT&ˆá˜Íw÷3<ÿ¬î½šÅfiEK¨z¾ý|MÓ¹D’>ßÞ‚Xa!âùvÿ>∠…Š€£oÖ×7¯þܬimoÞ¬KÂpt}óû•I½Ú¬^¿^mËX°8zñëêíöjcnñ.Æó›õKS"ÍåBÐÍÕõÕæjýâjñqûÛìjÛ³@ÞS
òuöþ#žïöo3Œ¨lþ¤2ÅR’ùý,a±„R[r˜½›ýÑwÛªÎþ‹1"”G’ØÕL"N í;0æ(NU¿`¬ºà±84Ë¢4 W÷Íw“ü»*óZóª¨DÅsu[5=6²ÎîóýbIî²Z'’¨®îsSô©®s¹‰®%ÿ¶ÑÛÒ˜áwoV¦<+»`ëwæz\Ä"ÊwU{ÝwUyø®ªÅj9ÁÑö.¯;ÃÌèMæVÕ»5wYÓµò®z<ì5¡fŠc$#-SYï³ÃAw„äѧÜ\³²~ÊMø½)9T;+c¦åºôé®ØÝ™ä×ÇüXhgéüÚtY5§Áë¼ìJšÊÄkîº[7e“˼ù©‹Ó6¡²êüø-?Öª'’Dèž82ƒTÝê:0&»";(|,lE“éÚL±ŒvÕ·|GG“kº®UšRtýíò®ŽéŠæñXšüú¯—o^¯nÖðnýP•µ ÉF1»Ò‰"5‚3ŠK×Ø4Åîñ î«çó™êÎm8ÂIÛö£NÒ®û¸@µA-hg‰Ndû}×êÚÜ#Ñéì{#Ø\¿0Åjö‹Î½+£QKzZF"–Ò´‹ÝÎŽ.†‹3µÊ)zAõê)¥ +{M{ð3S'ø‰i{0!?¯´±äi +&ýðPu¾W…ས=ü™©þÄ”ÄÓàU.( À•Þª‚ð>Ó~lꆇ¦„Lƒçêbo ÊoUAxŸé +ÂûLø±©š’i'<J9<ôâª<ðV„÷™ðcS7<4¥ÓNxTý-2Øê ÊoUAxŸé +ÂûLø±©šÆ\=ôòÇé‰ ˆ1Øë ê2}¯ +Ñ{M{ú3S'ý‰)×_ƒ~ü%Qú„áÀ{¨òÀ[UÞg:ÀMÝðД³ið G4 <ó@äAïDArã +ÂûLø±©šª–L‚§)JÕ) +ÂûLø±©šê÷Sàc‰8‘ÃTyà*ï3àǦnxhªIðXQG„ endobj -1807 0 obj << +1806 0 obj << /Type /Page -/Contents 1808 0 R -/Resources 1806 0 R +/Contents 1807 0 R +/Resources 1805 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1796 0 R >> endobj +1808 0 obj << +/D [1806 0 R /XYZ 56.6929 794.5015 null] +>> endobj +538 0 obj << +/D [1806 0 R /XYZ 56.6929 769.5949 null] +>> endobj 1809 0 obj << -/D [1807 0 R /XYZ 56.6929 794.5015 null] +/D [1806 0 R /XYZ 56.6929 749.894 null] >> endobj -1806 0 obj << -/Font << /F37 1026 0 R /F14 964 0 R /F22 961 0 R /F41 1218 0 R /F62 1361 0 R /F21 938 0 R >> -/XObject << /Im2 1350 0 R >> +1805 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F14 964 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1812 0 obj << -/Length 3381 +/Length 1323 /Filter /FlateDecode >> stream -xÚZKsÛF¾ëWð¶TUˆ'€9*Žœ(•ØYY©’ -4ãz•î¯Øê ú¾¿ânÌÆÚŒG}ûpõÏ÷2Z™À„"\=lGkÅ‹c¾zÈ~_¿ûáæ—‡ÛûëÐlײõ·w¾#Š¡Ç»Þß}ÿëýÍu¤Öw?ùþöýíýí‡w·×kó…[áÌ„÷w?ÝRëûû›Ÿ¾¹¿þóáÇ«Û‡þ,ãór&ñ ]ýþ'[epì¯X M¬W/ðÂnŒXí¯”–VRzJyõéê_ý‚£^;uI~JÇ*\m`°dB-K™LƒÔ6‘â¸ï¥,ø’”ý(”r¾?´§MZWm’¶ó3se!`åñ¯¶ïG-ì/FûsÁæ|:äi±=ìcµ~Ù%-¶ôÚsdÉU²Ï‰üR”%Ñ’Ã!OŽÔ.*êmw9Ž×<^çmw¬òŒº>}¼w¥µ}ºÎmí²Ò 旺ʰÅÕún‹’uÀB æÌy`´ö -"RÀÕ0ð0à1äÆØú&ËŠ8Jœ}}ÊÓ–Ä“¤»¢zr‹%Ë`y„QH"}Àø#•^'£å¤RëÆ/‡),—ƒèdƒA75
IÁ¶áh¯ÀcH8"†<a÷Hìô^„ â(2n˜[Enªh—¢jó£cËqBmM¤b°:¬ŸÝQZ?‚TÛêªq]‡ü¸¥8º!Å ®ÆB1ÕÜ>©RÔRdÖõƒkŸÆbÐ:L¼þ"$ô¡ìÀ<zm -¹´÷X˜Ü ‡=U6òŠmyºæœ¯mL×ë;·EvˆÉ±-Ò®LŽ0náLùwÜâIžsùr‡ÞœÍð_ãÀ^ã(•{ïZðÑ¢Mü:z°èîñ\B}_(AÅŠÊÒv‰[{"R–—ùS‚Bv]/E»£.;hr 2·§²svºž$ùÎÚžôO¯6Þ"ù±M -7ÄÙ
²ô¹Øw{z™¨ #}îɸ%’›3É?‘&ÛE’#hï`2ŠaoÛùOóÛø´Ã²›í±ÞoÎÅÎT*ésœu!‰ äÆǦª^ZFZÇãð%îüŸÙx¯ -UC&ôËô † ®¤É„4cRTÖ - ñóñÓѲ¤M£åGn!˜ásQw
½ pËžÁÙ“'ß½$$.Y`”_‘…Ô®ã,K:O„Vឤ«¿ºÂ…%¢î;›+±UèS¼Ÿ¨‡üÝ.êå6x³œeîp½,6<”æÊyØu
¢' -ª‹àÍÂ<SKD—°!š@ǃ‘Su‡ƒ‡*e±/fNÞÛžéÝú´¯z“‘÷>žüÍÀ²T…æ–2ôJK>oœd›âË’\# E©Žz‰ÐY NÒ¡‘Óìu³B(Û
zœ¥Ï¬’²/¼ï‹ŠüSò?uÑJ="Ñ„˜ˆ6Le¸}{ü2…HÚsçÀÉo×B~»Û,%îºk
4ˆ"]©÷¥Öë… -LИ$|6†½ØéVzÉËrJ¡ùœõuˆí´! -eú5]‡—7XIOÃâ&½ëê—Ñ@[„³Ü66$=6$èA¤ùÙFí
†Ì¬A÷ÀÑêx˜ylÚaÍÜU‡Ú!Gã
Lû[¿ñ&Èäf1¤zÎ͇£‘Q©ãQ‡0rÝÐe¥yeÁFù"Ô( -¡ðü°e×ïÒ4Ïm
ì§ÓNã6&ÚݸdeÞ4nÓí„Õ‡cßû&Ê;aʦ>¢%¾¶YCMÙƒ2¼TÓ ‹N\òˆjŽ‰Ùš3P --s¿‹«þÆ‹¿ì -@–Œ{Íãܵ<†™îÃÐÍ[º[„“~Ém]BUگ篇k»ý>ñ9ÐçÅúà¯3׉Â5ã2úïÂõÙû^÷ŽZðË÷½ãQçï{ûQ‹8gú% ÌÅíûQûOK&‰ø-ž2p·äõ&à¡ö á -_€N - -MѾè/êpžåyu•&¨œœ}øöW§ig³ÝY›å`p³‹6;uÞfûQgª…‰©ê8`‘~ƒ~Ôå@ÁÍt8cÀ“£k/xIöugïm M U53´)ÓUžZJž’îÔàÙ5nA‡“¥Çɲ÷õ?Ü,:=~é
ûá§XÝADåœÍ>úzî>RSöfZE5–jTÎy0‡ï=Æ-\Ë–‹ßíçWß=~„–µ/jŽîEp«§'¨Ê“[¤ö{%íÀÛB]ÔW¬Ü…oá1 -q -ÔñW:¾~.òN`Œ; o™eArÁÉ +xÚ¥šÍ’7F÷<E/a¢«-ñ3Ác‡•ãU\É&^d•×0£æC¨ï*åš2f}útÉô¥štùCSòJÛ즘òšüôû·•žþ,¿{]ѳЩwçÕ/6NYå`Âtþ¶•”N‰¦ó×Ïë§wŸÎûÓfk¼^µÙú ×ïÇçë3ùú×ÓÇãËáõ×ÓnÝú|øx¼>}Ú¿ìOûãÓ~³¥ä©¼Þ¼maá/‡Ÿö×G¯§Ý‡»ÓæËùýjž[°—´½„ü½úüEO_Köû•V6'?ýSþ¡ål¦o+çòÎÚúÌ_«_V?Ï„ß~iïøÍÌÖ:•BÙ”}VÁ;erp”sy˜l)¨Ôå(ÿ¦)¶©¤]y‘‹nïÁ:SZc@Kº<vá^c9ˆZŽÛÝóóIíNŸ6Ù¬w‹Ý‘²Ag!(&¿Rr>g…üVÛÏGmLcùÆ–ÿ9ù@1ù•’ó9+ä·Ú~>jcË/®DIZü@1ù•’ó9+ä·Ú~>j“Ê)”7 ,~¤–ógJÌg·üm7ÿN›h,?$e¢N0H1ù•’ó9+ä·Ú~>j“Ë÷Zií„Å“_)9Ÿ³B~«íç£6Ù±|K*Z“„| ˜üJÉùœò[m?µÉå“U.HÓRL~¥ä|Î +ù¶ŸÚ²Ë#ù>>kâó‘ZΟ)1ŸµÞò´Ýü;myÊAeJÂâGŠÉ¯”œÏY!¿ÕöóQ›Æ¦>ï“**'äÅäWJÎç¬ßjûù¨McSŸwå“AÒâŠÉ¯”œÏY!¿ÕöóQ›Æ¦>o.'Êââóbò+%çsVÈoµý|Ô汩Ïk«’µÒâŠÉ¯”œÏY!¿ÕöóQ›Ç¦>Wø L= +ù@1ù•’ó9+ä·Ú~>jóؼç¬VÑ '|€˜ø7Hng”Þ8ûåàÌc“ž#£\Â%¤˜ôJÉíœâ[m¿µylÒ+?Êh/,{¤–ógJÌg·üm7ÿN›Ç&=½ÊÖ +—8bò+%çsVÈoµý|Ôæ±IÏú¨Âe{|>PL~¥ä|Î +ù¶ŸÚ<6é•£¦l&ád“_)9Ÿ³B~«íç£öÒ>ÔoÊlDYZý@1ý•’û9+ô·Ú~?jIÍzV•\.r ÅôWJîç¬Ðßjûý¨%=6ò™ä”QXÿH-÷Ï”ØÏZoýÚnÿ–ôØÌgBPV{aêAŠé¯”ÜÏY¡¿ÕöûQ{yñP¿KåÖ?RL¥ä~Î +ý¶ßZÒc³Ÿ1YÅ`…H1ý•’û9+ô·Ú~?jI
†H¹LÒúŠé¯”ÜÏY¡¿ÕöûQKzlú+Ÿ•”1Z¸ÔÔrÿL‰ý¬õÖÿ íößiI‹¬=¡(¦¿Rr?g…þVÛïGíåÉ¡~TˆQ¸äÓ_)¹Ÿ³B«í÷£–hlþ#›”ÓAZÿ@1ý•’û9+ô·Ú~?j‰Ææ?2åxYáôSÿÉñŒÚg?œDc“ßeRNÁJ+(¦½Rr<g…úVÛÏG-ÑØä—¬òÙW= endobj 1811 0 obj << /Type /Page @@ -8135,1782 +8100,1848 @@ endobj 1813 0 obj << /D [1811 0 R /XYZ 85.0394 794.5015 null] >> endobj -542 0 obj << -/D [1811 0 R /XYZ 85.0394 637.344 null] +1810 0 obj << +/Font << /F37 1026 0 R /F14 964 0 R /F22 961 0 R >> +/ProcSet [ /PDF /Text ] >> endobj -1281 0 obj << -/D [1811 0 R /XYZ 85.0394 611.827 null] +1816 0 obj << +/Length 1730 +/Filter /FlateDecode +>> +stream +xÚ½š]sÚ8†ïùL¯ÌLQ-ÉòÇîmH—Î6íRöªí…¦ñ1“d³¿~,É>8B‚éÌN&ƒ>^éÕs|$D†ðC‡"&qƲa’ED„T—÷ƒpøúÞ¨ÖŒhŒUoƒ7×<f$‹Y<\¬Ñ\) Ó”«¯ALÁaðîÓÍõìýßóÉ(‰‚ÅìÓÍhÌD\ÏþœªÒûùäãÇÉ|4¦© Á»?&ŸÓ¹êŠõog7Wª%S/'&O¯§óéÍ»éèûâÃ`ºhY0/
¹ù9øú=® +G¦pÇù¥ŸÙçرXn2Ï'_$rÄK‹¼ár8vÑê9Úƒ…éÿ+8DÌ={«Ñ2*o¸\¦]¼ú¦ö€aÓ”¼%Wò
¦ágçE +hîâ}ÕV5®ºåA«Yt˜åAk½+–å·0dÆ» £2P
:Œ\‡Ðy(‚…|~ÚgûXì÷åªÇ¨¾ÓUÓˆQ@eSÖݼV¯hPkøZ•Ÿ·ª°Ì«#ª´*fÛC7ƒ*凞PÉeH m³ÞîU¡ø'¿ßmŠß$Í›ëˆo¥„Ã6à +]^ÊgÒô®TƒI—×òñ%S}·}ØhM¾Qš|%ó$Á]þ¨ÍTÌYë“BÆëh}–\G«•ã¸ˆÔdá¡. «bƃY¥Zvû|y(—…ªîJ=¶j‘ïuEnVùZÉg.·^§®lXæµ.=•‡;UºÏ«gUúù +U~_趲R¯0umÆìàAçË¢–[,áÁ—jW+ƃÖ3<×¥:_,óeO^_U«&5ä[Û»Õ»eUì6Ûg³1›RîÅ»¼ªš3ï,Ñg½µ¶¹’?åº
kxÔ©0B—& 'ï‚‚Dö9üj˜_þ·
ô¡=!<MOÜñX’’(åÌ,ª¹ã±+§pÃç1³,ý?¦êªIendstream +endobj +1815 0 obj << +/Type /Page +/Contents 1816 0 R +/Resources 1814 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1796 0 R >> endobj -546 0 obj << -/D [1811 0 R /XYZ 85.0394 133.1815 null] +1817 0 obj << +/D [1815 0 R /XYZ 56.6929 794.5015 null] >> endobj 1814 0 obj << -/D [1811 0 R /XYZ 85.0394 105.0145 null] ->> endobj -1810 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> +/Font << /F37 1026 0 R /F14 964 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1817 0 obj << -/Length 3447 +1820 0 obj << +/Length 3220 /Filter /FlateDecode >> stream -xÚksã¶ñ»…&_BÏœx$Àg®q.öÕiâ¤wn¿$ù@IÅš"‘²ìvúß»/P DÝ]›ŒÇ`,vûNø'qâ'¹Ê'iùqÆ“ùú"˜<ÀÜ»‹PÖLí¢©»êëû‹×7:ä~ž¨dr¿tpe~eáä~ñ“—øÊ¿÷ö‡»›Ûwu™FÞýíw—SÞÍíw×Ü{÷þêûï¯Þ_NÃ,½·¹úñþú=O%‚ãëÛ»o’sséûë›ë÷×wo¯/¹ÿöâú¾çÅå742òëÅO¿“°ýíEàë<‹'{~˜çj²¾ˆbíÇ‘ÖR]|¸ø[Й¥£ò_éDP©1ƹŸh¥I€Í¦+›ø‚À»í€¿,ðæEÐ+ª¶aÐö2Ì<óO3—%o﮾¿æn³åö›ˆWÏj-Ë%·ÝÊpçg¥¢¢*‹;ª‹µá£â ôÿ -‡éa“s0íuiiÜ f†~ÇŠ¸lw³¶+»]g°nú×Ù¾pWŽLBo±3ên‰# $äáºèæ+ÓÊš•ìz(ŸL‡¾¾‰BGÜ*‰ý,ÈS IÀcª²íxåðb? -u(›åá - -Qz~Ʋù’Fu=„HIÚç’¨#tõ2¢1$;ijÝH¹9¡ óþÝdÛ#ü¸pu6 -ÓÃÉt‹1õüä)\œ:ʶ¬ I«Äë–5§-Ös‚à?N¢äȃb2‡57‡ÐM9@Ö`ŽÅƒ(ë—aÝE)X&U -v°JÑRóPÇa¸(0Ö¨OŠ` -è-ûLþÜY‹²KÚcÃ|¯Ùu<˜™3IƼ€<lñÊj†„¥‚›PeDZ÷¬¡¯n¿c¨áÜ¥9NÃUe±¼ 3¯Jàk®ˆžû±”D -ÄFÁ!ÔƒF¤íÐ>˜Ž×azFµˆ3IDÀ’°Å - u³”” ½Ð -Ò[-ÍSveôÏyÃýß7åÙûƒÔ¤mùÁ]§©óÀçž>|”Ày‡ Î9&uübNsÑ“ÿèf~À»Vö#t(ìa7ñVàøðP->Õ]6LH`1*{Ës¨íØÜTæ¡ìJˆlu|'ìãÀ½RB|¿ß_æê ÷—Œ¨É%«ôÜW“_x,©¡?š«Ÿ|ZJÏkýÉûÐ>®îêÓf%:}Hmån•æ»…ÖyüU -J;Òvœ[ÒùX¤Ú¦¤Ðû„pµó±Hp>Ðhû*íŸÍ>ñlžøQœ$èX*ëƒîÔ~%ýTÑð6 -GJ¦»¦ë½e‚Qî ¿LçòœÛß8g}8aŸÙGq¿©-ãºN€l¬ß¤¼P‡</æÞ²˜w½‰7×qHXõ*¹g¢!î¶iÒð%”-…®f4w¥" \<•\)ç¼8^›
û˜Xæl&=ÄgPÊ?XG%ÌK¤”k
\Ð×giÿ) Kfd-„¬„.=a~Ó”T’"¢%·O¥aõC?á·Ûæl¾“@Ñ6ïvraIÎêP)PžÊ¿Ÿgöuž -J<îØm7
ÙHµ×î°Ê%ü-o“ýøˆ0Û=<È7‘$ö®ZAÈ÷…'D¾¥f$ñÒΖíG**K0bQã…»Œ(ßFè{uj˜o•æì`Hjó¬Ù +xÚ¥ZKsã6¾ûWè¶RÕ€$Ž“Œ'q*ëÙõ8•C’EQk%RI{œ_¿Ýè2eÏLh +&|¼ùåšZ?Þ½ÿç?ßßþ¼ÿùêú¾?Ëø¼R(<È_W¿ÿ)8öÏW"T65‹'x¡´6Z®´Q¡ÑJùžýÕç«÷ŽFÝÔ9ùõ4ÀY¨„‘_µŒBkžßV€V`ÑDG—×¢yÖ⦟1]jPo8Š¢^½Ð”2´ÆD¨_+ÂD‚Zc@ç1é÷%ì(mhb-‘PŠÐ¨8wŸVA,—÷ð?Z^ŸëÖÔXK`ŸT¹-d(´µŠhFmwÔA®ã»›C´øPã3ùuƒÑÂîHq4B¬Œ’P Dg‹µrßï +ÀP’.OE¶Ç–]³SQµÔÛ§U Äòq™eqj¨w»‚®úDäí®hx¿WÒ,ëª`²fWwû
QmÊ&[¯"±Ü3m¶ßS£8Ûg"òói «6ʼnš° +‘Ðë˜ï9MÍx.¼áØì™Þ¦§@B°,ëåÇþ <Ç5Xتëvn ,ò‡˜W6DäŸt¶T/݉»rßeECþ´#Žbhæ|÷´2à©ìÅUMå\¸U{M¶É,+ßáVœN+)€¹fJ¿)Š£tY
§Æ©(zþÆ`Ö6 c«ÅؾÍ6ÑÛE0ø—oóm*É9™õø"L=ˆ
S¡ÉßS¡†œ: +âÅ÷Ü·)¶Y·oésFÚç5Ün¯[Ë0Q½!ìÕ+ÂöTxL>R0ý¥°Mi¿ÎCO5ÃÄTØTÚ)zÁ* ´)ËMç’ x÷ò…f/_¡I¾Ð7’¯2Þ /Ñ7WùAEËúØ®`˺¢×<«hš§ vÓ{_ÊgGFEê; +Q”*ÎÚ37}†—bV’X&ãõQ䎡Šv)«¶81[Ì
´5u•‡£ÓaýÈGi=©¶9ÖUÃC‰mɤ¸HêPÈä'òUyAIs½EçÚ×™Ðc6]þFÆPv +%·P&é%Bg:ÉÄV]N§FIEû!Cƒ– ò‘UQô…÷CY‘}êQü§!Z©ÏHeLÔ7M˜\–ÁûöùË4E2ž;NN~[pùí.˜3’ºkg&‰J¿®ÔJûRëåBŸËØÇ¿ü9ß—ùÜ:ihàL6΄% +œe=÷kr‡—7Vžè.oBÑGjùSýT`6©ˆ+ â³Ø6’ F0Óü⼿ñÀ +Ïÿ¸ª[ݸ~—çEáj`?mvÞ˜úèÆe³/š†7ÝNøѽ;ö£ofy§L êÓ†>œaV§PSöIÞ›4èâCÆW2¡GÆüÝ {ü‡6ì]ó,ò¥Ôr7öøôNRùŠ“X“Øt ´L<œ§hÃ÷ÁêùÈ8ög™àãêÞAد|ËÝG—UCo=šCF•,«î°&âC,è™D¶ª„˜…'Õní¬)˜¡ü5ƒB÷…ß…«¿ñâO»2‡$ã^gã¹iùfR¸û†nÞòÝl:yï—ÜÖ{¨Jûõü5@Æymw8d>ú¸X}áuáš`&ð»R%ÿ›»¾xß+!÷1üIúò}ï˜êò}oO5›çL¿±¤aœ@ +óêö=ÕÌþÓ’Iaþ–N¸™³z‹·¡>ix…ϤN|5Ĺ·«”É¥W{ÑîBM¾D¦—Ǭ¯¤ËfN×±ÄOöíLO¿©g!C™Ææ
=¨^ѳ§é9ß4W+Bà`/Tn
^ÃǯsÒSÍ°2A·aYõ”’r4|^Å6‡ŸÈ2ºBª6£OCݽP)ŸJq"ðÁkp ëM¾?…ç/w¿ÒäM¶Àäaw "ù©ÕÙ7Utóϳê¦ïÆâMÁ¾À@¦‘ô3!²tû|YSăzL¡3ô>s³¥QJ0|ÔÔ!P,‘F(ºwHúËzyž£ò¼r¥©,BszöáÛ_ç‹vᥟE)âï”fp"ú_}óO¦†é$TizÁÇ(ʉlâ™Â³¤êœs£R¬’Öÿ•$Þ/endstream endobj -1816 0 obj << +1819 0 obj << /Type /Page -/Contents 1817 0 R -/Resources 1815 0 R +/Contents 1820 0 R +/Resources 1818 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 1796 0 R -/Annots [ 1819 0 R ] >> endobj -1819 0 obj << +1821 0 obj << +/D [1819 0 R /XYZ 85.0394 794.5015 null] +>> endobj +542 0 obj << +/D [1819 0 R /XYZ 85.0394 508.2158 null] +>> endobj +1281 0 obj << +/D [1819 0 R /XYZ 85.0394 481.2174 null] +>> endobj +1818 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F21 938 0 R >> +/XObject << /Im2 1350 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1824 0 obj << +/Length 3716 +/Filter /FlateDecode +>> +stream +xÚksã¶ñ»…¦_"ÏX<âÁW®q.vê4wI}nû!ÉJ‚eÖ©ˆÔÉN§ÿ½»ØRÔùšœ5‚`±Xì“~bÅAœÉl’d:ˆBMë³p²‚¾oΙ¹A3ÔWwg¯®U2É‚,–ñäîÞÕašŠÉÝòÇiÈà0„Ó7ß¿»¾ù淗牞ÞÝ|ÿî|&£pz}óݵ¾¹½|ûöòö|&ÒHLßüõò‡»«[êŠÇW7ï¾&HFHo¯®¯n¯Þ½¹:ÿùîÛ³«»n/þ~E¨p#¿œýøs8Y¶¿=•¥Ñd/a ²LNÖg:RA¤•ròìýÙß;„^¯:Æ?¥A$u<™)¤°þ8—Eƒ’(b%UÇe)ƸìF!—×ùÓ,_ä‹3kŠ_Íp×BfA"Óxâ£>" 5Bô(°‹$Ì$Ü=˜ó™ +ÒR¬wkzÉ×õ®j©]ßó +wdç,ÌßDZ}ÞXAHbR°$q +«`ð$Q€®¼jöVø +b¹ÆyITØîX(°`º“t7íì~1ÀÈJ:ªD”25b/ìbµ
Ù…rêŠP–'huêˆ/Æhb4[–4}Îü“¶‰¬oóÒk-ƒ–LÊ*'RJòòZ’ZjNpð1mîË0~W<š}јšSç:ËM6?в‘5ŒÊãA?ë;úx¡
F߯ NHD¬OØ-ƒHÅú7Ù™¸ÐÖãXDÎGb—$ÄÂ?¿ÆvBùöš§|
I +ÉÁnH‘~Fè0¾À_•«
´m²ôój9VÈ%Dzr«x¡åç”öã[Åú ñ`«›¹/žF6! ¡3m9‡{ê0•}«‰ø›û]ùÚÙ1YHt + +-šNŸëÝ–ZõÞÑaÚ}½}d¨£·+Õº@9r?Áz„z„Zô¶ân·Œ‘¸s“!KçÙfN°9ís߸:z͘šÅ¶ØpA|QïÊeW{¯¼â;uzEÓ]Õ‰ÒÈAqùõéPq½Ì˲ÞsiÏÝ„ÑA<웕wx®LKã0X³¹‰×i‰µ•f*º"´ª—Œ’jKÓ +# wø%5{NÚ4ÖÅêo~l²{ÿ<ð|÷õÁ€X_™Nw¥i¾ ÉŽÑK¼DÀ¦¥ÿ¡‡OØký—~•ÇŸñ•pS^mº·:'ÞŸ†é8?V§bdìb+k0*z® ÈŒ8³Šo¥i†ÓÃzlô¼ +FGÂ`'“ñÄf' ¯¹µÛôI!‰°ßgZÓÈTÛ¢¸ƒDþbôZÌÉÂaw|—@±¥ÿαùÑU/Vë!)‹Gㄯøs䌔@.û&>V÷ sµ…»1Æ»ÞS½ë½8M§ï‹ja£)–µ—…Š¯©ßÆ€ÝEŸ+Bo!:tzvåÃéÑõ€J¯é/Û¯¡à´-§lû`ìLŽƒå£dÀÇïñ˜¥»R†õÊØŒ§`ópQÅæÔÖ—`0ÊyC}(èøÌéQšUÑÀžê™M˜G˜Lòm”íýžnã1¢¶ÖX&Çw<‚ýÏÀ9ÕçáG“‰£ï‚˜Ò|tTîêÇe]¾\ã³·Ð{óéJE§+•_–²O+èØÁç¤ÐíS•‹™¡õ{•w¹%Õ‰J’’Q “®Ê÷B?tÇý›
-™vwæ®5D¨áÇ4…£YÝ»ºíŒ‘
Vuæ) +Ó3÷™Š;u +L±ÃÕJÉDQ»®ã[N€lœÙ´¡+~+rÃcïóEÛ©©9|sÓ#á¡Ë=)‘}ÅÙ.çí—nI[ìጆ×6o³Â„Âr|_ç›
Ù™ˆû\°-Äç4‘3Tg³8èígq ¥C8 K!“îö Þg‰«-@ƒ²cèßԅ͚ͦVû_ÛÄ©ÆÛæ5váNyå¢ÝñÅ) +áÛßÔr¼p½ô¥Ð‰¤Ïœ(ª×;®a£»Ë¡LœSa@&•¢I¦ ŸÄ +HxÍáWU^¢ÂäÀLïs
ûßk. +Xúà×:T Mµøs@²½ÊK2ŒqªŒÃÖ»†o¶°ì¶(ŸéuÎxøTZ*¦•ìnSHø3´…MÉ\ñ¿?šHG¥+ ÅUÐSRYmeÚ-‰f4}¨÷æƒwî1Ÿ;~zðL9£_‚{$ö¦Þµ§
ýíñâÖ‘ÀˆNbN|Ê +é~:’>†wÞ¿û3×Ã7À: TšÊñOCe’:$LžKª(!Þ)ËÒÿüú`‹endstream +endobj +1823 0 obj << +/Type /Page +/Contents 1824 0 R +/Resources 1822 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1828 0 R +/Annots [ 1827 0 R ] +>> endobj +1827 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [63.4454 494.9289 65.4379 504.5687] -/Subtype/Link/A<</Type/Action/S/URI/URI()>> +/Rect [63.4454 380.8297 382.2499 391.644] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://portal.acm.org/citation.cfm?id=1315245.1315298)>> >> endobj -1818 0 obj << -/D [1816 0 R /XYZ 56.6929 794.5015 null] +1825 0 obj << +/D [1823 0 R /XYZ 56.6929 794.5015 null] >> endobj -1815 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F11 1451 0 R >> -/ProcSet [ /PDF /Text ] +546 0 obj << +/D [1823 0 R /XYZ 56.6929 708.0945 null] +>> endobj +1826 0 obj << +/D [1823 0 R /XYZ 56.6929 680.4573 null] >> endobj 1822 0 obj << -/Length 3643 +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F11 1451 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1831 0 obj << +/Length 3786 /Filter /FlateDecode >> stream -xÚ]Sã8ò_Á£©t–eËöìSø˜9¶v˜YàŠ«ÝÙ“˜Ä5Žøõ×nÙ²ãÀUÝAõÑê–Zþ’䱿ò8‰„¯Òð8NCù2:ž¯üã%ô}>’sjN]¨³»£|Rñq*Rèã»GW"ü$‘Çw‹?½óξÝ]Þœœ‘ïiqriß;»º¾ –”>ç_¯?]}þ×Íì$½»«¯×Ô|sùéòæòúüòäT&‘„ñc80àÓÕo—Tú|3ûòevsò×ݯG—wÝZÜõJ_áBþ>úó/ÿxËþõÈ*M¢ãg¨øB¦ip¼> -#%¢P)ÛRÝýÞ!tzÍÐ)þE*QÄä£Th(Ã@\³„>ðÀ÷'y³©«&§e~«ËbþBå?êŠ[¿û‘óíøHfdþ¼-Ú¢Z"?€jàPõO-"å=ÚåǸ7ø)ªy¹[ä
Õ2ú”źhóVoÏWYU4kêkkú®ëEñøBå‹ë[*lOdâñåc½uûþÞåMk©UYY/ë]ãb˜uVœH¯¤ZVµÅ).—"¥H£(0Ki6Ù×ù -½‡2›ÿ( -$RÚ2¥S&²/ëqöc†¯7mQ3B¢d¦ôTäÏÔd»²u
'hµ,뇬d¸
‰!ðC‹X‡r(ŽH™¦àLá.ªÄ3¦…›fî®júº‡Å.ÊŒ³3G Ún(È@ÁÌ<
<q_{ oÖKpUPYU¶}¡n:%PàÁ"Kª3êæ¦ÉátNJlÖLêó!J%"h€#½-Ì!‚JUo×YY¾PÍp@¡¥~Î0åPIïŠ1†Àw×ììÄÚp·9ðe>µÛbn{VµQ‘ -u
ÖÑDá×1QÈ -|½Î€øIÖ@”çñÝ÷ƒŸÔBÈ©¼Þ‘±
ј›µƒD‡j¸ø‡¼}Îsä¸L=IÚ((¶•YYRË#™(=¼´¹±àlœ…¦ ½3e[népI9}Ž2½³zŒ²€/Éù¼Xg<™§¬Üq»Ñ9Hû–yfˆªÈkŠeU ÓÀÛá&\ -•Yù:) -ÇÂᦛ/I5€^ŸÎ..nÄìæ:q3ÑaÐ<`(^¦©³ÎP鳃5£Ï#i‰Épimô -’ÙŒ½Ì‘½€–Î^@Ùî„Ï;á÷–+œ2ÚÜÔƒdäRŠ]t³R7¨)sd¡h½ö7bÞAè·-PbÁÃ~Ê©µÉ·O -õCk
`F‰2‡æÄCˆwÝhyK©ÝyÆB˸jt“.>À"…íI…`Ñ`{y ; ¬÷²ï¼°Z*aöŠ1ö•Þ{LŒ¯a¾ŽŸg1ï‹p`FR9ž ¤m.»!„BùBIyÐõ;=ØL¹~6a+`qŽäÇx}‰ëMcÍ - ¨/`bCF;ÔŒ>ä~`¢(q&Ä”I¤`XÇJCÚxÖX2,WVùü‡Ñˆ8ƒ%Ži§D¨?“;ÔØéG'ˆí²¡ßY6Œìýèêýè1yÓL#ƒÁHÕ©Mƒ…Û\‘Áöÿ‡ÈLZì@‰³ôƒ†mì÷5kö(«psQKÁîRÏ}tȘûT1*0iflxz55µÏ\ ¸!òÖuïv…ýà_qn<bœšÀ®ë®ÌotA¤N|ï,Ÿg;³<PX”dÕ^’šˆxÌÄ;¼hsîÊæó.)¸$(ãåÀ×2€¬kÃ)h!G(vÖ¥øú¤G®¤eþ~Þ†³5?lxÙ\gsÎ{Bš·.Eù’¬šJëDH?°ÑÓÅÕíìì·Ë‹)ÝA˜Úè•(5ö -eßÅ€ýÄc%èLÜ`²Ü1ÿßMlà0̇ž‹Ñ$× Ø±ŽåС³-«Ä5ÛÏÞñyœ¶©FÚó±Æ”%3Ò·Iß|ûñÐ͘’J€‹¡Þ¾ t¡ÌEÖ {™B1Q.\Éw_Æc¢Òa¸FoRí öÉ]Ê¡’=_Õu“¸2:y“`cn¾vWlœ5Á½ØlòlÛù\~°µÐÞðé|>n‹Éç‹C{á·ðu¾½'.Ôá=é ÞÝ“7©ö{²GvrOd¿#m¶ÒIJZóooœl½3„ÃÆÌ9z=ã9çÉš§ÛÁÃ|Ž¡&ú>;PoðÙB½Ïç·¨:|“æ³KvFVÔÿdÔq}MÐ]w;¤½Ô”ºO¸R«‘xÉN”Él!ƒ™Ä[ºš‘Ú戡}W-…º½<ŸÌ›Z{vxŸB¦ø½ãн±Kôþ&½AÒÙ£Íé-rhÚr$Þ^¨î÷‡A -âã7Íysؘ3Ì»¦ü
z½!œ4ãÁ»é·`©º»|¶/í&Scþ(M9H÷I¥}ùÐgKñ¾"Šó>y^õáe÷,äÀ -R5uë>ÏësõÂ$…å‘ÀW¦Œ„?–ÿù1k/a,T’Ó{¢|-’ í¤‰Ï¼{õº?õÿ +xÚ¥]sÛ8î=¿"ÊLÂ%E}î>9Mº—mšMr“›Ýîƒl+¶¦²äµä¤í¯?€ +O›yº‚±_OÓ\X¢—êòñä§:>MEùÑéã³Ã+2IÔéãò/ïÿfw×÷g~(½Hœ]„‘ô.on¯“RóáóíÇ›_ÿ}?;‹ïñæó-¡ï¯?^ß_ß~¸>»PI¨`¾ÏŽLøxóû5A¿ÞÏ>}šÝŸýýøÛÉõcw÷¼Jj<È?'ý-O—pìßN¤Ðiž¾BG +•¦þéæ$µ-¦<y8ù£c茚©Sòu"ÂÄ'èûSSi_fÛmY,²¶¨«Ž%^ÖR[W‹Ä¡#í=®ü"¥_¶ù®¨V„xγv¿;S‰—#"ö,åÖ ë—b™/-Ãò;AmMí:/·5ûÅ™òÖ¼ƒŠ'lóÙYV"¯^ +b[mòªý°1¬Ø¢@J‰4}s0³Xy«¼.¥YºË¢YÔû]¶2»„Ù¶û]EPÑR[›¾ïí«2o˜Û÷zO@Ö:/ùŽÙ7{ßQ¯³FU¼\Ý®ó‹u],x8«–´(3¦m³Å×£'[̨¡…¨ ×®¹ßRÿ¹Þ +.ì:Ös +GЩç/E½oÌq ûÅ÷ƒ¢kDøÑ¡7ß·4¾É*¦Ý"À,êêLÔ¯åGKÙž9'Î%®W·–ëvK×:ÏdÓ4õÆ0õªÌB$ÛïÓš s™°íÏŽbÒ‘÷±èo2ÔæX +„íršMV€c-©W°¸˜”ù6Ûàù†7/Áí”,€æâ‡8ge†ìBOF^FÉCo™›+94 +p'ÊO½sšxû0ì›lÉn®p’ ´aÐ/5a‘]ËÀÃ-éÎοÓéÑ€èrxzX¤G£€7†<I«¼e÷EsïïQÓ›aCKHœ!kgn5µ”Ó·9cדɞëLb(11dWüZY‡ms§>`p>ÍR4I*¬Ï±íV gÓð.±°†Ì9÷ƒdæ¥ø‘óTŠ’ÎTXh22˜ë +–æ +¬2+KÂ<SÈhþ½ÍMŒ€dã28§GÜ¥¶Ÿ1¯KÅC´3Ã"§Ö‘(¯wЈq*e{`™/ŠMÆ›yÉÊ=ãÏñå¡÷%³/óÌ,ªC¯)VUB[˜ +婈ÚyA‰…äMYG(Éšî!g` #ëÒl]ší@[‹Fj4CFyM+ÆÈ´ugzh&‡¨šÔ³zp–/§vLØû„mÇïå„šW·|Óy)çÝîlÞ>Ðù–á×5ôLA‚ø‚ÏûA©b=±Œ‹¡ÃB*³%>!=.
\G)h*èRñ?ÄTºØ èÔ=L•¡f•§±2ü²ÞÏËÜ>àËÚ}ñÿü30O´ïúÑû,í9’‚e6ã,s/ +`¢{NxŒ/RÅã•`¸‡·–ìˆÖ$ÀA4Xóú®›|$Ñ;ZËñG÷u“ƒ+}Jͳ]—îJg“σéÓŸRP!æSŠ8¦
•$BC¸}[.Õq}tTï*äÍU{,;©’Á²w$ˆg[(vêÁ6Ø}¶ßGä²#s.]/x.7³Ïé4x\ÎðH +•¼#g‡ê
9[ª÷åüÖªŽœÇËNËÙ]vFß +}åæu*ì¤uNYÊÖU‡²ß“UÔ׺ k,Ð&¯5é+Ò1Hü F_ÅTdËó€ßWKbõŒ!F=\˜¬éZ×:;®'ˆ8‰¢wôäP½¡'Kõ¾žÞZÕÑÓxÙi=¹ËZ=9vo¿hšøùàÜÝ¡ßf:}2ÙÃÛ|•[å¾£‹[¡¬¢w~bèR½!nKõ¾¸ßZÕ÷xÙiq»Ë²¸!ývüö@ZôS93„C 1¦ŒP'óoÔ§š*D…8ó}£RDÔ<@*uV'2º_ˆîî×pö~MÜš‰ŸFØDä$£QžüdJO:âÏõºÿMáfRÚñ·/üÑ uG™tÄŸ¿ú‘6ÛÑÏq"þ•L”>6š[U‰Ê e?XFñDÊÙ¯dýî'ê>Í ¥¼ XgüûɪfÌœJBQ:LP¡1¿ž» +üMëÄ,©ÿû§³ý¥‡×³N’#阖¼ÓØn +O‘„ãw¿±=Üú–NŒ¸endstream endobj -1821 0 obj << +1830 0 obj << /Type /Page -/Contents 1822 0 R -/Resources 1820 0 R +/Contents 1831 0 R +/Resources 1829 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1796 0 R +/Parent 1828 0 R >> endobj -1823 0 obj << -/D [1821 0 R /XYZ 85.0394 794.5015 null] +1832 0 obj << +/D [1830 0 R /XYZ 85.0394 794.5015 null] >> endobj 550 0 obj << -/D [1821 0 R /XYZ 85.0394 769.5949 null] +/D [1830 0 R /XYZ 85.0394 661.0278 null] >> endobj -1824 0 obj << -/D [1821 0 R /XYZ 85.0394 749.4664 null] +1833 0 obj << +/D [1830 0 R /XYZ 85.0394 634.9717 null] >> endobj -1820 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F14 964 0 R /F48 1238 0 R >> +1829 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F14 964 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1827 0 obj << -/Length 3566 +1836 0 obj << +/Length 3512 /Filter /FlateDecode >> stream -xÚ¥ko7ò»…Qpr±KîESl'q‘؉múa-¬EV»ÊîÊŠ{è¿Îp%õîÄä‡äp^œJž;ðOžûbŸ‡±'|Gúç³Õ™sþcoÏ$ãŒ
Ò¸õzzöÃ7<E¨à|ºè 'ŠäùtþÛ(J\À -ÎèòîöÍÍÛ_î'¡7šÞÜÝ^Œ•ïŒÞܼ¿¦ÞÛûɇ“û‹±Œ|9º|7ù8½¾§¡€×x}s{E˜š‹Þ_¿¹¾¿¾½¼¾ø}úóÙõ´=Kÿ¼Òqñ _Ï~ûÝ9ŸÃ±>s„Gþù>!ãX¯Î<߾纒Ÿ=œ}jìê©6þµ8c×ì‚Ë~,W¹-—¥×ãr(a0€,äògG†»G
a=©óþr{›¤ýM•êmIáDZ?Üt¼v@·“(AGŽ¶Ë²N Ú$Õ…ŒFOiCCYÍð%#l³|>#¤9¡4åzœ§ÏiNór•d
}v|ç{%|Çî¨^§³ì³ã¨´·,œÈ–=²]¥D¤BgE‚oï®&±MñÏ„ñûÇôB¡œÀgôdÖdeñ -6@î2›-q -1t„ã‚ꥱï+O’n«¬Ñ4ùæ¨Ð¡¡z]5Cš’ZMj.þ™¬¬¨Ü^Þýr;ýIŠƒJ¬@1r\zXGÔÉ`T§c›vê´»©]ú›N"” :‹ä}9K@=$Èï*i›cúžˆ& bKÒX³PÒ¢Iç4ðøBmBMª‹’”4+’Š1®núk̓7h– Ï$õNécS›Púz¸¨·iEý¯›´ÊÒZŠ‘p=/jØ'B¹» ðTìI Xó²6xEÙ0µ;ú\*Ž;êÊ´ €ÙfÍ’zC-œðjh‰(&jE½rAmNÃî¦{ <¥cŽG7z¡q'Øew‚ݾ;q½Há<ièLRofKF©iÊ÷"ý–¬Öy*få -€_¹i'c’Q7F¼CÚrG¨ÆàL$2ãC`ð¢AYc—Âê¦Êê/ô¡}»8ø\"ØyLÓ‚z¬¹y2C*B2¬‰ŠôBÝ"Y¥(-èNiXŽÖ›j]^ÈQÍßZhŒ74"µœ‡ŒÞ)c'g¶óQÖOOYñÄãÅŽÜ&y®É†þ‹*-þÎË$›fY‚ï䥴a§N«g`èÝA/®ˆ¢88îûX‡½`‹uÊÝ´õ‚{›Z½à`S»TŽð#ãÔ>j3|x˜¾»ÿÅâáŠv‚@2òºÌ³pÕeˆmw{Î ðÈ 5ÆãöFGèÀi5¡Ê^{¼{µþc—ƒž#… -£`ÀÂS1˜qEölÜ®háwŸ6Ïñ„ -BoÈðuR×ͲÚûeAḃ¹áƒÏpÌJŽ;0("e8ôiÛßubíû±e¿ƒySÛÅ
Ú;‚’bN-8hWeͳÊE‹Å>«·ögºüÂ/Ë<Ÿ’ÁZ1ø:‰Íu.o®î™0ðÝ_øBÚqèª0Z ýÎÃùmôÚ9ˆþ`ˆ\‹o¼”?zNª,yÌùkT
MÄ{COhxF¹-ÈmúÚõ—ó´ÖH5²áÑV½g ÝþeÑQ`9ÑG²MiÏÆ#¥Qà©Åê
ÑJ9•t½ÖfáFUn q`:+ÃQíõµOíýÇ_ sf ¼N >¯Êæó”áìæ5±ÙœŠP)hñûÚìJ!]ǘæ,G5îS&DÑ>„`ž2Þ§buÜ'„$ÇkP¹Fžp\ËåI5´’‰–‘ ´ž’"û£•œý¦K%dΈ8 -ÌœôVÔ,Aœ)ïÈÉ÷,[ÝgZÌL„y9H9å¦`ãeÒúL/„{Òiö±›j‹uÊTnÚšêÞ¦VSlz*ðÇ0 wÍÕ‡t•dõ4#´h¡ÏÚ죢7<•HšQ«ýŒá&<´0‡0¸Bš=Éó†:(³óYŠÁ#úy -}*4°ûΪö‚5*c2`©3`N.9hhÒYs²P· \¾QÓ6¿Åàà‰ÑªyA€>èD©·uDóÖIÍ;¶i§y»›Ú5¯¿éí¿®î>Lnl×6äR1de{Zçs8\ó›ft’¾™,£vÃ.7Õ1+·½²Fàvë·
ÖInÛ´ãöî¦vn÷7ý+uêÐqÏM,Äü4–ÖÓk[™¹ßuá9ÇghëC
ÖI†Û´cèî¦v†ö7mSûª`ÉZ ×÷Tô—ô¸s£'t:1.&á¬sW<¿ïF)Øq¢ÛRKÉ»e3Ϊ¤ã ǃ³²Ò×/T«œ§‹d“ãõËÀ^Ð媈7n97¥O]!@Œ‚¾õ±uÕ³+Aä™™R9ï¦k0üµ-V{&¶¡²ê§‚ƒ×Þ›ªÖ1:‚°¼põ“Ä´ÛZ˜r¸™ÃáGÈy4@u8-;i¥J'@j0ÌñÂ3-\Z4-vüøkMKdÅ`…ç,ÝÒ -{OL¨!_…=~×ÓC_»"ŒZ§óX¥É—ñ¼¨ëtÆ…nƒ0éKZ[˜Ä(¾}¼íXŒn4§c“öBo–Ô)æ ‘oê{=…ÖpãN¡UhjSCÿÄ3¨è³ÞB槰¸{‡Çbºâ(ê&ß´| ËË?xF2ŠÝ·ÿEÒeI3H3@ÈuÐU|²ôAÌѱ³¤hKaàK0lÖ…ê¡÷p{Õiáäô=v$W)ºÆäÞ2ÊyW%MŽ25k -øîr;æ¤^©€=~üó¿?i?óÛ?*…n–sîèÂß´‘âÖòÍœþq1–nÃwÂ{w9yÿîîa*èë|¼zªú¿¸ !¼7%¯¾äÖç1×™SG-Û7é¹ï¼é_ߨáÆäž
6±‡ÎÃ|üD9 vûšV¡‡ÁLŠV#¯X\‰é`ô¡§£-1Ò0á¤idúuG`~hƒ®CŽÔÖÊmñr<Áæ”ët¿«“Èj /FŸ¥«ŽôŽcUQbœ5XÚë~²§ùK¡"=ˆÐs}=í{=ä‹8ƒó¨ˆ¼wW“éd†±ŒC¡œ=Z@ë„ýˆH$ÿ€™^ÔmPá;›®Ò«jVSc^Ï°7?¾•¨e¸¾À_ZŠ -ðŸ)ü¿Ú+Š„Â"eÿÍÂÛ™‰BÎDû/MFPä}Òÿ#Îë.endstream +xÚ¥koÛ8ò{~E°8àœÅZ+Roœ›¤mmÒMÜÃa·ûA‘åX¨,¹–7{Øÿ~3œ!%Ù´½‹CÑ9äÌp^´8wáŸ8B'Ldr%¾¸"8Ï–gîùŒ½=Œ3ÖHã>ÖëéÙo¼è<q’P†çÓyoØqãXœOg¿BG:°‚;º¼»}sóöÓýä"òGÓ›»Û‹±ÜÑ››÷×Ô{{?ùðar1q F—ï&§×÷4ò¯on¯’Ps`Ñûë7×÷×·—׿O>»žš³ôÏ+\òõì·ßÝóûç3×ñ’88߇ëˆ$‘çË3?ðœÀ÷<
)ÏÎ~1öFÕT+ÿ„ëH/”Jic`8¡'=ÅÀû¿Â™B9Z_ˆx”gµjgkò¶¡^JÃø!zàzÎÃÕuÚ—U¾3vuûp˜Bþ-ËW--{u;ùpÍs×fîÃõ%/½H[žTeõ,gÊY[ÔUc¦@€+c!œ$¤:"ÑmV€¦ölkj¿nòu‘7ÎA9J`UÇ'ô¶‡¥Ø.üÛ#Ü{káž>»"Ú%Áz"–ljj¤}¢YÇ ’$.r¤ ¨¢‡*G„QË#Îí®î>Lnn±¿fè9‰HbFìs•˜Y0sI<3úx|¡6åÅ2†îvQë™-©×SÞWjŒ †ëš‡gõ2-*êv×?â A"éž2==¬#"ÔX'ExŒh'Â]¢vö‰NàÔnÇFW6º;l„!ÅFW³:Û¢œe©¹€ÒÖ«q™?ç%!ÎÂrö{bíX&Þ¨YåYñÙueÞ[v_<)XFRëÓÝÕä"‘£)þ™X´Ê醣ÓuþÔ"[¨=ö"×q=ð–›½]mnÕ˜zê;¯v„æÿL¦ì
´“ÛË»O·ÓŸÄA‹‚X¢tá¨:õ±«“Á:¥NG‰uÚ#jU§Ñ!T7d‘¼¯³ÔC€ü®Ò6µ‰0q¢À—ÒÔ@lI+J^µhp +’€ûnQ“PÖOOEõÄãՎܦe©ñ‹*¯þÉˤ›vQƒíä¥(NPY×ÏÀ6лÃVPNG§¬`ëˆÔX'à1¢Ü%j·‚}¢v+(]@u\ôQÝLJé»ûO!µK¼ªË"¶z‰Oj>pŸ3x|¡”>õ„®¾ƒ08¸ƒ´še§ÒwBßtd¶úc¼J›¦]¬7Ž-Ž‹_Ú¼ßðÊYºQá±¢JA·ÎÂÛ±‰C×깉2®Ø²áKàþPÛ9è/‚ÒjFÅh—uóê¹Áb£Ð[û3œrUá…u™7‚OAš`Åx¶×‰¶×Éèòæêž7Æñ[ü»¶ +pYý+C-ÆQes”_¥–òIÀÌ4ä‘שÁ¨¬‹Ù,g8ÛQ@Mm:DõÊ`x£ö•ÙŽð\–•¨Åý‰aj +¯1£Ýë@VH²‹{šY´0`mPÑ[žÊ$ÍØhD?ñD¸©YX˜\ÁDˆš&YÞH…†c¾Á|–a"Na#Úy +ÊçÙ|kãfµÊèDS¨D“s8Ú<kOÖÃæ„Ëå17i$†O|š'@pIr¢(ÞÇ:¢yë¤æ#ÚiÞ.Q»æõ‰ž,x'{Zçjs9h\›fta’òÌs–‘!ØEäÇž |òPyêé¬u„Ûë$·í¸½KÔÎí>Ñ¿RŽ\Wó\ÇBÌO}Ózzm«ævA¼¡^,ñIíDŒÓÇ:ÌPƒuŠ¡G‰†îµ2t@´÷ ÂÅ{Kî’8—ñ_ÒãÎŒžÐéT›˜”ŠÎ\ñü¾¥`7ãt×ì–Rx1΄ë;®ŸøÃÜôõ•gù<Ý”èÞ½HpµÕ»ŒqÌk”ª,VŒQÑ·:¶*.v•Æ#ˆ²ÐSêªdjªÃ_MMØ×±
U/¿Ð8•|ã-6ëFÅèÂ"ÃýÕO“okbÊáb¬‡gÓ +Š +ÏE¾¥¾sjÈöÚƒoÏ~bòhuÚç|LlÃiUmQIÐe?ŒâAÚ®‚_8Àµj°/ŒŒvê¡yÚnº2:’ÝóÝù¦$—~BUÌTž
¡\¨RCaI0¸J*Aˆ\S!>Æ4*C(×®ÂQ½iûPÞ¿¹$€HDL½¬¬7<…çFœú[DÏÊè²¢ÁÉ©þƒ}z+h•NŒ¶÷"P•¶EòºjSÒw—·ÞôžÓr“ózu¥×åÉù·6_W &/Dæ¹Àòu¡‚üV×Ør.ÞÔ”*µïÔ½w“'e‡ÁåФw§}/fžàɾӈkn«ú0·ÐHíÜòº*Â!š—·iyb#öò‚ê*j<Qe +ž˜RC¶ +{ü|¦†,¶*ñœ(6Fçq§_ƳªiòŒ«Ýa Ó—¼±0Q¼y#íXŽn§öB/K›sÐ8ÐU¾žB«N¸I§Ð2Ò µ®¤}âTúMXoBæ§Äˆ½Ãc±Ç]‰U“=-ÈòÀ–уŒb÷‰}žvYFÚÒrÓt•†ÞOBLÌѱ³´2¥0°%6«rµÍzpÂÉé{ì:®”äÆÄþOŽ`hYϺ*à¨íH]¹@÷ˆ€à‚[zÂ…á^Þ$%sÀ¼þÝ“zDWWËü9ÚÃÛ",{õ'Aõ:ôêÕÔboÔæBUZª¨WËB½®+pMmJÍ2ýV,7KúPö‚ƒ?NâBÜK:³¹<>nÛÒ–.…ŽŒÜx·´èf›½Òï¸vöÓck¨ŸJ £M?T@$I9´J:Ovt„j²o´â—èèë¥ÞPG×â »1?Yè‚ßÊâÚ´Í—yÕÒÙýÁs¦Š®7TÏÝW…qÎã¿Ô½ÅÞwé¬,šö»Wôýç+oÇV©.uf;þ÷¶Kœ²l‰·Œ¿m î2m 2à΋RO ø;GÛ]oÇ\ƒT+U@ãÕŸÿ¤ýÌoÿ¨ºYιc/þ¡.)’ïl×é_cáÅ0üp7!¼÷w—“÷ïî¦}£a—Oëþhý¦àÕÜ<æ¹3êÈ…yv¾1ðΫ‘ú‘‹>”ÇX>³%”ðŸ—ü¿Ú«0DŽÇÒþ¬ŽÅñcX„7…G‰Ã½ëªîoýSsÖendstream endobj -1826 0 obj << +1835 0 obj << /Type /Page -/Contents 1827 0 R -/Resources 1825 0 R +/Contents 1836 0 R +/Resources 1834 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1829 0 R +/Parent 1828 0 R >> endobj -1828 0 obj << -/D [1826 0 R /XYZ 56.6929 794.5015 null] +1837 0 obj << +/D [1835 0 R /XYZ 56.6929 794.5015 null] >> endobj -1825 0 obj << -/Font << /F37 1026 0 R /F14 964 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> +1834 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F14 964 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1832 0 obj << -/Length 1742 +1840 0 obj << +/Length 1919 /Filter /FlateDecode >> stream -xÚ¥X[WÛ8~ϯÈcسºX–Ô>Q --ݺ>QNk+Á§ŽíÚ·Ýþ÷Yrb§„¬Œæúi4‰Œ1ü“±ä3å…òÇ„£Åç0÷nD×2y]®7ÓÑþ1c…T@ƒñtÖÑ%–’Œ§ñÕäðýÁÇéÑÅžG9žhÏãž¼99{k)Ê~ÏÏŽOÞ}º8Øþdzr~fÉGÇGGg‡G{‘œ€<u¶Ÿü}dGï.NO.ö®§FGÓU,Ýx f&k<Ž!ì#Œ˜’||?0"JÑñbäs†¸ÏXKIG—£V -;³è~œIÄ% -ºÎ}}Ì3ÝÓáË
ó°Œu†ô}¸(Rm˜64±n˜¥Ž“RG.Æ{ôÔ€¡×ù¶yôÔÜ*p†%ƒÆÚ
‘#%D0&HøÌÆ3`A12·ˆÂ o-¶Uݶà=¢¢Äî1ŽdÀy„“ö[äi=´ÀDyW.þ›p(Â4uƒ¬ºÓ¥cžå¥*ö¥êûHõŠŒ0ü“¡‘ÍL“Ɇ¤è!b—õ%i#É("OEñîÖË‹³Ë·Vʆ·ÔŸA5àTVusÅϪ8Ú¹ólT¾DPµÌÎuò&.Ÿ ïS2^IÏŒ.N‘¤T5ºLõ#(•.ouikÝeÖz¡³Ú•¾2\,ÂÒj샕€’¡D£°Õa@HŠ/a—WûE©gÉ}ª³k;ñoVq/¸+Ëñ5Ÿ/]î<èêK^~ÉÜ~s‹q=”)N¸(óÛ$Ö^r?+_ £ç@©¿/uUÿ–g¿ƒ‘õ–qáUÉ£ÛZÙrñµ…vë‹ðþ÷Ô%ìáÙj?/M†¤=Øû‹¶T˜3ÂŽ Äy¶DØßÿµNg^¯t¬’ÖèÏ|þ¦ª6ÇšOU—I6ï)¸Ú>ƒºv9úãÅ8yU¾,£Îi˜~³Ú›Ú-bJô–ÚÍ»µ{ûU‘—õjW™×þy“á'+býônƒ®«ÁSWWçCãßrÌð_s•b†(jRè0’ÙÃn€1Aý×*‚Ÿõñy0_rf¿ÜMEmºÁu‡BVö±tÆG]U›[Ó•í®÷”8&p0 --2ƒ¹Ðºç+ä3⸎°çšì -×=WKÇÖñ
“Il}Ó•ýÝ„edIU'‘#šŽù~Õör% &¶¿ï’úÆÍØO¹GäD/òº ÛÓšç$\«áªM›œÌz’…5>Ý[ÙTï‘I6ÍjAË˸ýÕJŒ£´:JŒ¬Žÿ4wm g´1 -»Ž†#IÔÆ[QS±†,q±5{4™gùz×ú7+аY†Ûª‰1m~¬a3p%ÀG(ž’ï€O $‡ac3Fz±mÚ">´n>ýU[x@݉پ@xŒ›6V‘~ÒÅz.ÓºBÛ^4Gæràý¯Èß~í\?ûÐÉKIW™ñpÃàœj^†ø¦ç«gѧ®ÿQÀœendstream +xÚµXYoÛ8~÷¯ðËÎ"bERgûä&Nšîæ¨ã‹MƒB¶hGˆuT’síö¿ïIÉ’-§Éˆr†3ß<hß„í{61¹oõ]ß"¶Iíþ,î™ýŒ÷¨žcT“Œæ¬÷“Þ›#îö}â;ÌéOæ
Y1=ö'áÕààÃðb2ïÌ6Ù3lǼ?9;T_}ÎÏŽNŽ?‡{®5˜œœŸ)òxt4ÎF{õl +üLKØÁptòçHµŽÇÃÓÓáxïzò±7šÔ¶4í¥&GC¾õ®®Í~f완ûžÝ¿‡ŽI¨ï³~ܳlNl‹óŠ²ì]ö>Õ£’µ?›{Äö˜Û E» +Ά§óìÉÈ‚¢(oòU0Må¦Oi"Ú.õ6d(8ˆxâl)pÒ†$«ifå²½@ýíq²½\m8'Žï9;‚ÊVAµ½wÚ1 +iÍa£öóâvßKnϱí&';KC•ÕAW@êFRÜ‹\Ož§:ï)sßxª)f"+k²Ž÷ŽñˆN˜„Ñe-Dª‚ÐÁÉ¡Û¬æk#¬JïËÃuÉ’°¢>UW
*š±‚‹'EˆõP«óŒUªpXyz‚}3Wó£]BÖ`~sÄXcC@Ë çQ¥Ëøâo(ÔÌ‚D5‚ùüŸËðÇ~!ò;,Ú؆zŽŒƒd& ò1ߌ‚Ù&_L“-V9òcBªêYšBËÐ aã¼9ïÛ*ÒŠ*7ŽM%0ïÊt–Ë™ÊQÎ(„¨%)AFe”&ÁRõq;˜…ž¿LÓÛUV(¦©À¨Eu4«ú|[‰üQÍ !mZM‘1¯ +~Ê´DÿÀ6¬ôuõPדõâñQµÖÎDÖÚ™ÍÉz…"Š£e«ŽtrÔaD
´ð´ƒß
ˆ€²ûœ!B°ÖX¸¥3Nå Ϧ¼±õ:Ð +BÀ#À:Šsb§grD" +D•/@ÙÐ(uHÀ´§zÞZº>íá°GeGºÚ芽…,àM-n°"x Íì&wä@Q¼ŠU3$…‘©T0 +¨…rI`ΕÈ9MW¥j2ó·Êe˜>pþè,Ó–Ðy´á—:°½:ž¡ÕB£Ã56pŠ—žQM-Ê®ÂØTàØjÄo•ªWá +èma¬6õ¢cqñÌjjQeT”Ѭ µØû9ì6.œE˜'Ïcꌷ.ÌhŠ[qí]PX$¦ã<ˆã W‚[ÜÇànãzêäVÉÀ7ʾB•Ï¯Þd¹˜GK‘\«$ÄÕÆÞŠ+5cš.VúÄò(Š¯iþµºêè#ÀuW–hæ,Oï¢PÑÃ<…Œ–9” +Û„ét€\!Ó‰r¥žå‹ûN'Žk[*¬É@¸±Û®Ewª@w¨°v>aÔ¶:Ui"U{ôõ`qßW·4µ^ý`±——ujy¬¬U! .ndiºÜØë^P:Ûü¶Z»Íö™
«î"‚ÓV~,wʪ_›ZZ}·ëMÏLœw½ endobj -1831 0 obj << +1839 0 obj << /Type /Page -/Contents 1832 0 R -/Resources 1830 0 R +/Contents 1840 0 R +/Resources 1838 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1829 0 R +/Parent 1828 0 R >> endobj -1833 0 obj << -/D [1831 0 R /XYZ 85.0394 794.5015 null] +1841 0 obj << +/D [1839 0 R /XYZ 85.0394 794.5015 null] >> endobj 554 0 obj << -/D [1831 0 R /XYZ 85.0394 525.2179 null] ->> endobj -1834 0 obj << -/D [1831 0 R /XYZ 85.0394 495.5406 null] ->> endobj -558 0 obj << -/D [1831 0 R /XYZ 85.0394 193.8668 null] +/D [1839 0 R /XYZ 85.0394 370.6221 null] >> endobj -1701 0 obj << -/D [1831 0 R /XYZ 85.0394 161.2246 null] +1842 0 obj << +/D [1839 0 R /XYZ 85.0394 346.1456 null] >> endobj -1830 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R >> +1838 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1837 0 obj << -/Length 3988 +1845 0 obj << +/Length 4205 /Filter /FlateDecode >> stream -xÚÅËrã¸ñî¯ðQ®1Ä‹ -7òŸ«þœ^¯`Û?^¥‰Ê¹~„4y.¯wWÚ¨Äh¥d{õåêÏa¯×OäŸH©29Á@)§hò$SRyÞ®oæJ›ÙSs¤Æªj—ÍCy ¯î¾è°•Í -n„›•»¦+é»-qpÕÒï¦z¨ê
µ›#Ï_+^ èŠwÐÌòÙ®8|#«Ž~Ʋh6Gn>VÛ-µö´þCY3ÚõñÐÝpÀ¹InŒô[ûϱ<TeKGÖ5ô[upÖJ¤³»û’ «r]·}<Û#Û5"Š…v‰q©…µp ¢‘†õYà0³,ŒªÚ LpB9Q7H`/ÐR<$ñ[œƒŒ$¹³æz.e"´ âfΗi¢5
!Øš‡jUΫoëÃÄj6–™°Úr[[<b›ƒ:`°˜íª¹‰ ÇûÒsÝt÷~ ›m›e±%‹h
µvËŽN:ý Ãø]Ñv½A"œ3¡cn÷°lS¯xѪ»g51ÃæIŠL{U/YHAH<=i6ûoS—ÔêEÝ®=í©ÁÔ¿ç ½6vøìJ‰Ü+·ÅC‰ ™ò½¶k©×‹œ¶–tÍ£éxÍfâÔ”Kks>ˆ§rJ¾„NrÂ^y¼qÏ"•›ÄJ´®Ä#2›'&H«˜íÒÊÙ¢$©™——F•aƾiÛj±-:HÜ‚ýÆÏäƤ²`Rýz™‡Øܬ òT$»åφ½*òýó"zãM*Þ¤ê91Iê<ôõ9AÂC”‚öê,ÌF:s!+͆‡w“*¬IŒ0ù+UÔ& ¡AŸ›}W55a¯êÓ*DAU>2úÝl›jƒ‡ù©-},@m¿2ꯘ3J%Ëõ3Õb`A“`„_¶L"O´S’wr u¹¸m“ä'™–I:I–‰Í’tâd–°“y!‚YBØ@e~2K8Îï -<–•Zº<“}õ¦Y“ZǪÓÜ•Žl´ÙPŽÍlMÚ¶ãN’f†‚mFû`šaÜÉ¢¢fºŒ53ciõ3»w}þ@_VèmÖ'&, –Ñi½|l.3gÒ -Ø+6ßZ¨¸«†ÂÕÇÌ2Œ®ø@¿Q†e>‚£ƒg—a’Ò×Këíß?bH¨ôÈŒƒµâ}Ka÷Š»‰Ó8î¸ß7î=!fQXqìš]ÑU Û'ê\“©ƒÖ¢ðêûP$Ô¼C!GúÖ
ýâ‘*¯þô=yƨí.üºY]z„VÀp¬>ZÀ›W^ÄzûjyOÍÞæ]‡yÜ!zçõ÷æ5¤£ÐZ…å›î·ÐÒÁ|CW<^è>Ee8{*Ó -"–<7Ï:Êy5PÅö¾9n‘JB‹ícñÔRû±9|EÍÉ2Ž¶?ÀÝñ‡W,¿dÎL X7¯6çÚÊ$"×&
¥ÑQ‰^Ö8›ç;Éûªøן´¼¿ú
9uû]²Gã(z&9FH -êÂéA#ZeryQæ¡U’!sŠã-µh0šC-ß&Ù†·¾4vRíx±†{£äÁGEþWÌÖ
c)¿;SDëñªr’òžAY7›'¶$5›–å¡hïCŠ¬Ô²9nÜì¸ï¸3jñö¡Å̬·¹P§E°Å媞©«£<Æ ^¸ëTÂö"zè¤X !¢XLô Íq:(º®Üí;žÖÐ//bg¾ÿô…gPœ
°e³Ûk0zÞñ’€¬Õ5TQŠö}êÂÀÂ÷É>›ÓM¦_"³I*…~C˜20Tb¦ôÊLF•ÄCšWûy[ý·œXHÊE#©¬1}ÎÒy ¿|ÿB´¾Åi;úÚ– Å -XÕUÞ)â÷âiŠ\8 •™˜•»r5•Ý¢TÅ€ŒpbÂýÄY^Œ!ÀˆdhèÔȈr+‘Ó -8x£Ñ‘hÁÄ‘téX $
vGúÉé‡fÀyü;‚ƒEôöx[¾ÁS¼2°„l,ÿ•¦’º),®î%›P…‡f}ŽQ"…ûðµ%)Úí·UÙ¾Í -[“+²+¾=«ß\éwšýi(C ‹þVíŽ;ú†4eeÇþ²m‹
î-8̸qƾ¬Ï©ZÏr頻W˜õ:7TÆ4(#©·#çä8EŒ+%©¨„äÙûo -ëÆ–CÂá¤&ZŽú‰75ˆd.Ñ1«€Ì°¥¥}fËáì>1Ï“8šÜü±œA9‚ð2‹¸‰?S[˜‹\ù3C.½¼È0N•qŸîš¨5ZBZ‹(Ë -´Ý††Œop0M‚<£özÔÄš€žzÍE>ø>Ö+ £kšÃŸÎW= -¹jóØRÛlìŽÛ®ÚoyâÄdK9Ë἞î“ìF™è
¥z-êeþb»âª‚Ètb…™½°bË\äìóµs‰ýTDˆ©Órªx9¨’¹{é¶F‰XÀÀ;È&PCD-2kÏ.nðyUH -¤7à -´Zò©ŽhÌà‰Â©z¥G/gÌø匋|Ðœ?”Û ÿs
.ìcïs|jØh¿âÕçx}R8•ëp&.{Ó‘Ï㬡¾.Ä„ßžUóU&9ûQ߶8ôÊ¡*\OÉlFóm839ºß—£‡F8÷¶¤ ÄHóf‰SIn3^±ŸDº=%ê?*I -PÓ†~à¡,°@Yy-ü+‰—b 8|Þ€œaÄ@ôvÌD)czðâ;³Ò§ç,Šƒž§âW¿Pˆ×aø(äµvW¨ø -„Sè5TöÒª˜Ë¡JæÏ]½úTM6tå¸Ø¢õ0£S7*VÿH¢ýµæõfà\³×ªÏÔÿb(ƒo²¦Ü_z„åWÿŸÆéŸX´M”srÚ‘Jëðá« -Dá¦\vFyø‡ŽsÒÿj¤Q©endstream +xÚ¥;]wÛ¸±ïù~”ωXâ‹ +\IÓtÕ§‡âD›üÜå]q(êŽ>,þž¦².»²© ’×[jüÚæûYÊщ¥Wk™%V{Vº½ƒÄhpIæÒã&à—’-°‡‡hKÅjK´-}nîóS¾éŠSÙvå†]C¿wýæmÛlJ@³¥ïDz»çú9]·*M&ÈUx* "r#½ZÝì&34iúJs«âZ¬ê=¬ +=ê—~I +ª¡RhÕj“×Ôh6›ó‰š9÷ѾAbºæHªx(*¿›LMÇ°?ŸrV7 +fç’{Æâž»öƒ_nÕÔÃNp Y<;&ΚמÔâbùµÌxX2¨¬ÕÝ7-/¢¡
X„í’F‘%tÐxâAÍqM'L¢èMâ„ŸêB–JAJxoAEË}ÝJ«mN £%\?¶áˆºYâµ`;Áy¼ÌŸÌ;¹Ä%,í
™ìm¾–ЉtZþÖµøfgËà–¸©À0€ýSvn‹]~®º6éíNÐz:µY=5gjlË–¬cøêîQQ•Î06þøM!¶Ñºâï¾|(ë=µ›3Ï¿Ë·¼@Þåȹ̯ùéK?²ìè7g,wÍþÌÍDzª¨Åä!h¢ÝO w§%“ú¯38º`ÁŽ’‚=
Ú+Ò`î„ÙCyuŽ†x·¨R.1 ×|>Dãâ)Š,‹£Êv¸mÑÛŸ^<åDdh©™íö0 +Ñt¼æ’UR.Ÿíù žŠ%ùcⵊcxåùÆÉ$€µRú©˜€Î’Ø.¤ ¤fA^¶<U<ÄǦmË»ªHè oØO‡!žÅIe!Oõëe Ï+Ž"Ù-6“ð@N#Ó@Ïéa¾IÅ›„¸µ©×Ä$©A—$èë· Q +Ú«³0»£léô,BŠVš
ï–£+k#Œ¥Š‚»2*êssä°—õ° +Q@.Øqœ +é±µË7Ýï¡¥£ù†®þx•Ee8{)Ó +"ïÍ7åº5‘±ö¾9WH%¡yõ˜?µÔ~lN_Ps²ŒãC€Ï§#¥=™'ÉüsæÜÉD+e^mε•1HD®-J£{%zYã¬÷;Éû*ù7œt¼¿„
¹u‡]²GïÇQô +2dNq¼…£îšPVÐ&ÙF°¾4vRx±†{{Ƀ’ü¯XíÆR|Í:FK¦ˆ°S=‰|ŒsU¤|dPîÎûýÓ¬À·9åí}L1¢•Ú4§Óµ[w`ÆC-Þ>´˜93ƒµh”žu¡N‹h‹‹mÝ>SXн<öA}(0
®“Ø!¢Žca€Æˆ`}¢mŽÓ1÷í ?=v<¡_^Ä®Þÿøñ3Ï 8[`9ãp8×`ô‚ã%? !§237ÀeGLÝ¢C˜xA“NËÏçt‹é—Èl’J¡¿#ÌŽ˜*³@î«20Ù«$Òú¼=®ÛòßKea É‹fSÙc†œ)¦)¶ç-€~ýñ…hC‹Óvôµ-Aò-°ª+©d +!vv÷%ƒ¹€Œ@rDI,+ˆñÐ?"¶ÿ<ƒáÚf‘,Õn «N‡£T~a $»sE0f!@¹–¢lï©3lK§Ã ¶Ï ¼ãÌر秺O`þ(®Ã¯ˆƒ7Ú;òÍ™8’.Ý×A"I»ëɇfÀyü[‚í¢Eö¸*ÞÎà¯L,!K¬ëR÷#…EØÕ½dÊØâÐllÁ1J¤p¾*’¢ýQ¨ß_"cVäý¦~ó%ÔL¿Sõ[¤±.úky8è#Ò”•û‹6Ü.ÑüaÁiÆ-¡}YŸÓá’€å>PU‡J«sSeL£2rÑŒœ“ó±?X)IE¥ä»& +dCe<¤€ý%|IHkñ#Ü·– Íè64dÄx“€ƒi’Œ÷R +'ëà`-û‰k?[Ó`Z¹¯óîÜW[L_ú3,`ð»/êâDÏñóÜL¬&À$”cB8q¤ +áVh{ÆAîh‚Òaé:Svõn)?›^Õ…m¹/ë¼ëíÈݼ¢Î81âtÍc†ûþ’cý©¿ëËû:öÝ=Åõ"2äÖMË¿ï*ˆÿÎ{åtÊDbcÊÈ
ÃzÞØ»äê<H±É^°Ý&IÅÅ5+b…\µyl©Œ6çª+Aœ˜l)|¡VÁy=!<$Ø21J
ôZÔËüÅvÉU‘éÄ^¼…s‘³Ï‹ÚùU‰ýRDˆ©Óf©x9¨’Þ½t[£D_À]À»~ÈPCD-²þ=çpqƒÏ«bR u¼èÍ/š@œ PÆSÆÉÙn9+dœ”"eœ"™Ñm¿ð+Ð3³O~#Õý#3yD£c¢‘šX½Ò³—3fþrÆõ|Ðœ?U”ÿµö¡á×9!5l´_„LñêK¼!)\Êu8—}ב¯ûYS!ÏY%3~GV-T™äê3D}U~•CU¼ž’ÙŠæÛxfrv¿/gÂkæåmIA‰‘æ»%Gf¼b?ˆt;ym +üQ’:g¦Þd[tyYµo£ñ,fæu[´›SyÞË/¿´Ã7tø¯ß«¤Ãƒ×ç•ÔXõ”T +QÓ†qà¡,°@Yy•A¤ endobj -1836 0 obj << +1844 0 obj << /Type /Page -/Contents 1837 0 R -/Resources 1835 0 R +/Contents 1845 0 R +/Resources 1843 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1829 0 R -/Annots [ 1839 0 R 1840 0 R ] +/Parent 1828 0 R +/Annots [ 1847 0 R 1848 0 R ] >> endobj -1839 0 obj << +1847 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [87.6538 269.6318 137.7628 281.6914] +/Rect [87.6538 171.5741 137.7628 183.6337] /Subtype /Link /A << /S /GoTo /D (tsig) >> >> endobj -1840 0 obj << +1848 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [370.941 153.6184 439.613 165.678] +/Rect [370.941 61.5153 439.613 73.5749] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1838 0 obj << -/D [1836 0 R /XYZ 56.6929 794.5015 null] +1846 0 obj << +/D [1844 0 R /XYZ 56.6929 794.5015 null] >> endobj -1835 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R >> -/ProcSet [ /PDF /Text ] +558 0 obj << +/D [1844 0 R /XYZ 56.6929 769.5949 null] +>> endobj +1701 0 obj << +/D [1844 0 R /XYZ 56.6929 748.8663 null] >> endobj 1843 0 obj << -/Length 3264 +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1851 0 obj << +/Length 3040 /Filter /FlateDecode >> stream -xÚµ]sÛ6òÝ¿Bo•o,”ø $Oiê´î]Óœí>Ü$™EÑ'©”]ß]ÿû-°~HTìNz£.¾»‹Å~A|ÀÏtÈiÔ,6Š…géö,˜aì‡3Ns~Òb8ë»Û³oßÈxf˜‰D4»½àÒ,КÏnWïç¯|õîöòú|!Â`±óEóï®Þ~=?¯yûæê‡_¯_Çj~{õË[ì¾¾|sy}ùöõåù‚ëÃzAN,xsõK„~¸~õóϯ®Ï?ÞþtvyÛñ2ä—Ò2òùìýÇ`¶¶:˜4:œ=@#`Ü1Ûž©P²PIé{Š³›³v£né”üB©Y¨E<!@Ágœ3†b$ÁаH -é$h™æ 'Á¼i“6oÚ<mé&)ˬhßȶYÙûu²Ý&µeÿÛ7ŠN)˜-„bFqå°O"Œ`§ÿص33#-å•°æ=ÎÈˬEèCÔ·û-YjlüQpP4,8‹•ÄmÿFCˆt0 -¾Àõ./¬ÆØÖCÞn*òåïÛBÀZ;nµ_ñ -“ï£ÇL†JÏBÉ™2`žwàPëé¨cÑa\Qú¢§Lj@À”wÓ,…ÎVUp˜ÈÎZ<_1,ÖàUNÉ@ižZÉ¿NÆ'd ¬ -¹äc¸0eZÒ_U{W¤œ?lòtCªãa â±ÙKʃAqæG›¹o_½»WØ·À÷D9œUkÀê)ž¸p/byR°"°—"ÅøjÁvC”Ç‚¡f<ŒM¿ó—+™ ”¿±à8CSi$AbØŠ‡¡xö ž
fÙ -»Ž;ü:²,€QÎ7
ÎC"žž¤Ì*P¤!:7b^á8Z4\…»¢=¯}°ÍšuÄ:;¬®‘a:ŽO›BAôÉ!`W&d‘ˆÕWkk‡q1Dy¬<Ï&ªßùËÚÂ?¡BÅ~Ê‹S^ŠT§0Ÿ²Àe1RŽãÁ+Š$K -=)œ³A'Ÿó{q8Gã¹,[èÎ -ÀøRpЄÇnÏ6ÉiC`±ÉÛüÞ-Ùëí]UãdJåò8ùOÚäëËðFbm¹!+WÞ–ûJÊÐê”Lš - -i6®©Œ„Ö¡ø¼,´{²£JÆ®Î!§.0Á,·ÜëÄ`ÑÔŸ«v‚‡r5㲜—Îúe‹»Tã”zIp·Zù蟲qÇmfǽäÆ%Ÿ‘ÏŸ(E‚ñU,Œ´½áŠÅÞƒ¹’$§’d[ï!<X->e_YqcêKÍ6A°%ùÑ5²c½œVî·Ë¬þ2<œÿrJßÏûóx±>ÍûHußIÚŸ_÷Ïòÿ±à«¢Ø«óˆŒ‰ÈÎ -‘}Q”"†ÂRðG8X¯g\^bºù‹át`£ŠÝ^ËêMgŽ€Åôq -’QfDÌñcMz‚‚#\Þ9‚š¼òòôIŒ sQ/lÉ;acCAÞ•‹ƒùÃÆYé½ -{Ë5]Òv»ÉxN6 WœrfiUS»ª\Q;=i¨r%c,ÞЊ|²*hBpÔqôL‹a²ñ¥Š>Oì«,Ûú0‹çÙïî]Ô‚8uM¢Ÿ ÓÐlFB3š.1„˜ÂÄ>Ññ T4o¯AVhæ7ù6/’ÚE“0ŠF +xÚÅË’Û¸ñ>_¡[4)Á›ÀúäµÇ^oe½ÎX{Z»\”ı,‘2IÙ;IößÓ@|ˆÔx;•šñh4ºýÖ°…?63ŠPaå,±’(ÊÔl½¿ ³[Ø{qÁÌ"-úP?./þö\$3K¬æz¶¼éá2„ÃfËÍïó§?=y½¼º¾\pEçš\.”¦ó_¾z†+?O}õüå‹ß®Ÿ\&r¾|ùë+\¾¾z~u}õêéÕå‚Åà<ÎxþòïW8zqýä—_ž\_¾[þ|qµlyéó˨pŒ|¼øým€íŸ/(Ö¨Ùg˜P¬å³ý…T‚()D\Ù]¼¹øG‹°·ëNÉO C”áÉ„ +ã5@í9É=e" ä–=>øöÕÁÍ;Êœ5 ¥ƒ¹#îaÝ70×L#
:æðž3 x(&[/ùåWU:Ñ}ýr—²`H\’„å‚áíÿh@ÜùßD=\ü«fµ]«7`N¤©„†‘!\1ëñ¸Ì Š3JG“6yÝäëz±Þ¦E‘íjDþ6²=º[œ«t¿O+¼Fö¹¢³ð%8EcD¨á¦ùGa ±‚›¡ªþŽy‘58zK
k‡÷Þüä߈‚AüN€†#‰Ê£økØÂwîm +áa¾ÉÀÝׄ+ër¿?ù:EÚrǪðî¾Þ}“·ºÃ•ú®†;pœnöyDVé"<UÄ(s¢MYIút¾·Yeº^c"ÔÛì8Çy^€—Ù§¸Ë›p`L¼H÷#'CZUÄÈÜ!eº/*7Í‹&+6aÏÂô 0‡çÙùj—õ÷Çñ€–á&ûã®ÉäDÐnéà_¢lÊu¹«ã¡gn¼96ß2ç#9¼Ã±Á5®/†‚òÅE³óÉ BÇêG?-—¯qÔ +ÆyøúÑÃÈc}ÒcÝÇcÞꎃn¶iƒ£PåÀÈâÇ +¾Àõ!ßùôfŸóf‹£]¾úc¿ã`´ÜÏíXû%£0j¬þ!LÅýo¸Ç4¤ \r66
n4ŠÀ@ oòÝ—œ„'6²OY@o·Á< +ñó˜ïÂ’ã´<Ôø˜° +\WiÕ…K«ÂsÂ^ZÜ!tx¡p]G„‘ª›4ßÅ„ù<}q/ +V|vŠ+G½‚¼žäêŒ9hàjÚ³‚åJ¦-°G5qõзʵE¸èa‹•+ÉjbÛ{€rNFs…¨9NKAžòß$Ê.I<Í3 ¬CÎÔƒrÉg +æ[åõÌxÑ9ZO+ŒxYð© ûº +ð~Xªžg>:â®wÁ~á¿¡U!ÅùKp±´n2§=ÚÈùòÒòy‰ûèÎðÞÒCkX5äu"œ÷® •da“몶àÛ“ó~iI,ƒd]8Ó5&ùf]m1.ú(ÇÊÊ4$æàŸº›ï×VÅÛ6È9må2‰ ?ü0¢‚ „ÄrÅe…ÆÁ—!,BÞr9—qÖ£ÒñÑ)Œ¡CØжë×Ä!¶Ã(¦)¡”^ÆÄ5ÎÞr.'¸PÉIMí¸’;á]›@ß/ëF¤ +FÙä +ƒ¡Q0Є»öÎ&ÍÃ…Àb»n°›rLˆœyûMßÒ8[Ïc¯#Dœü$&móÛ/ïÛ«ë5dÅ&úòØFé{“~Éà7©^Ce ´ÅÇ#` ·§‡ÐÆ8T9Ôm§{¢Ìì…ש&/x4ùu.PpÕ*W=ìÉEé|A¿,'I[gœS/áÖȘú‡RÜ3.s æcwQrÃ~Ï æO5¹DiÃbÓÙtýHú‘Mu„ô`³øÝý×ÝftCL]›ÙîÇâŸ_ù(çÀŠã~•U÷ûðïéß~^ìMBÞ…žï$íîùò‡ÊøØì•:‰Ú< c"±³@±QS,:ß …¾MÓg¯Þ¼¹zŠã:[«¼¹ÃnÙø—²d^GdõºÊWX±¹Ö먡à~z²ÒøߘdÚ…#ܬng8¸îý‹@¿èÿ‹À¯cõMë€IÌ8ÉH; fü_ +èŒpÅØjò$ÊsÑýfï{ZŠFaÖ +g˜ ²ö|H矷ޑˆ\`p8®vùÇ
8ÀŠ)~Š²X¤Çf[Â}iˆ1°üϲÈq¼ïCQ~öDÄÞ#,¶¥ endobj -1842 0 obj << +1850 0 obj << /Type /Page -/Contents 1843 0 R -/Resources 1841 0 R +/Contents 1851 0 R +/Resources 1849 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1829 0 R -/Annots [ 1849 0 R ] +/Parent 1828 0 R +/Annots [ 1857 0 R ] >> endobj -1849 0 obj << +1857 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [461.1985 234.8652 510.2452 246.9249] +/Rect [461.1985 109.336 510.2452 121.3956] /Subtype /Link /A << /S /GoTo /D (DNSSEC) >> >> endobj -1844 0 obj << -/D [1842 0 R /XYZ 85.0394 794.5015 null] +1852 0 obj << +/D [1850 0 R /XYZ 85.0394 794.5015 null] >> endobj 562 0 obj << -/D [1842 0 R /XYZ 85.0394 769.5949 null] +/D [1850 0 R /XYZ 85.0394 672.7429 null] >> endobj -1845 0 obj << -/D [1842 0 R /XYZ 85.0394 752.4085 null] +1853 0 obj << +/D [1850 0 R /XYZ 85.0394 647.0238 null] >> endobj 566 0 obj << -/D [1842 0 R /XYZ 85.0394 660.0457 null] +/D [1850 0 R /XYZ 85.0394 551.2038 null] >> endobj -1846 0 obj << -/D [1842 0 R /XYZ 85.0394 629.9318 null] +1854 0 obj << +/D [1850 0 R /XYZ 85.0394 519.7104 null] >> endobj 570 0 obj << -/D [1842 0 R /XYZ 85.0394 388.2848 null] +/D [1850 0 R /XYZ 85.0394 269.9108 null] >> endobj -1847 0 obj << -/D [1842 0 R /XYZ 85.0394 360.9804 null] +1855 0 obj << +/D [1850 0 R /XYZ 85.0394 241.2269 null] >> endobj 574 0 obj << -/D [1842 0 R /XYZ 85.0394 283.5376 null] +/D [1850 0 R /XYZ 85.0394 160.3269 null] >> endobj -1848 0 obj << -/D [1842 0 R /XYZ 85.0394 253.4237 null] +1856 0 obj << +/D [1850 0 R /XYZ 85.0394 128.8335 null] >> endobj -1841 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R >> +1849 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1852 0 obj << -/Length 3794 +1860 0 obj << +/Length 3525 /Filter /FlateDecode >> stream -xÚZ[wܶ~ׯÐ[Wçx\HhžGJ•&N++íéqü@íR#.¹Yr-+=ýïÁxYQöÆíÙb‡¸sùf@u*á§NS+¬×þ4ó‰H¥JOW›yúÞ}w¢¸Ï2vZŽ{}s}òÕ…ÉN½ðVÛÓëÛÑ\NHçÔéõúí --Î`¹xõÓë‹Ëï~¾zy–%‹ëËŸ^Ÿ-u*—?œS뻫—?þøòêl©\ª¯þòòo×çWôÊòß\¾þ–(žÏLzu~q~uþúÕùÙ»ëïOίû½Œ÷«¤Áüvòö<]ö¿?‘Âx—ž>À)”÷úts’¤F¤‰1‘R¼9ù{?áèm:+?%…6VÏP«S¥„OS=‘`ê…5ÚôÔ¤"¥\lò:_¬—÷ÅcK[}Óå]±)ꎅ¸Ë7›|‡ûþê"Q£ã‘§KŸ¨$L;ÉÂÜÿÆA§Ú¯drºìù‚Îm·+ë÷ԬˮÌ+H„z¿¹)vŸn'ø:¬#ã -¤'oŸöû?,o…ïÞ…E—³»ûÏ×$®éa -=’&²§k9ÀÀ«U‘·<Õ¾¥èC9\‘§ÍÈùaä|5ÎÓ‚‘¶<ëÐë¦ü§±‘Ë`Æñß¡+¤•&å ÐÞ…ß’ -™^IyoÆ@Š›±âÓóп5u@j2"Üî3PË
<ãT„°€&ê`ãÙ˜u|») -Nô‡µ”Ö†8T‚ëãx"4ú²/´NC>šK£‘^¶ÌâÿÊÛƒm±§#M‚%Öiœž:¤€»¼ž?>Þ˜£³$3ø¥Qb -<9`al¢=S‹xð_]?ÁJØ4‹È±a“9Xüó:vú3™RŒÝ¼*ú°K¦”ÌW—ßL"` È¢ÉY4ìÅ}Ü9ýàs‚5YŸNeH-¿ oRŽyìa×ÕÅ+j¤R©ÐµÉ±SçT•´UѶbÎÛ{T^ ÿ h˜9XP§ÔZó9ìù¤´Q¸á¼0㼘T°ÇðèE¤XýB´ÙyÏá_ƒÊÍx¤L gÓ/³-“p¤8ûmÑî -泋Rùöõ›¿žÿ‹ÚWWmÁÎèD(eüÁrx[V²n\C³1-„§…ãNññÁ.:s EàÞÒß sÖEÔ?™ˆÎí¶X•ÁÅó$Á>ísÀÇh†™;ÚDScž”jŠ@Nt!
Äk•ž…4²—dÐà Iª;r…:lºb-Æ_ÀÛ¬÷\‘,Æìû¤#olL)öº¥˜ü 22O¹jåÑgÍå¢?P£eŸ}™5eÍͦF?é3fÔ¡t2À©¾˜ñ¬%–¹ß°%ñì%/×E¹™Å¸F@šš‘dªõLQ—ûXÝÇÅznòP -EF"%mP –êíT‚ëÂZ"¹.,„ö͉ë¢*hK]òŠÀú1V"CÂœè)fÅWTVJ§zjøfÝàR¸'ókœé–Þ¶
¿)¹ -hËŽ3ɆkdQaF…øÆ{Æ7*j¡1]_qåV™gÎKY)Riþ@Râdôµ%sS75ÈBÂb
=GUebU -ÿ3`EÖ¤Šãð(\п*±J}—×\ÛÍbÈ|CÙwTñþŽzÉùR¶GêHÕ²p„=“Ó4áô¦\¡QÒU花ÄJKtò“Ø -Uh¤ìʮۃ?àjåôøµÙïÂU
þ!¡¿˜«¤™Ð*þAÒâ׺š“¶†”^{=ªåØPËyd&b-ÃÈp-CƒÓ"K2Ý
ncÍ%®fRêòQŸ1ªN¨¾ÅÒ\ -ìÚ÷”mÓ¶åMßcñ±³FGg3®§ù¡ž¶â›.QKmƒëÔ>^©LbŒIÜL•“ô–c›Ã\m¾¶šØ(5{«‡¶‘ô¤"~f’ètñá§öÙ§²mœÆWhÎ&j
‰3 -ÊÐì?¡¿ñÀn¸i‹XeK…ñòàò¿{h(ÄÒ™ñ—0ô¹Jêý¢øX¸‹1œn6ZÒeg™‚þC³»ïQÄ_7»¡î-UÃé„O'Ìˇ
³‘o¨ ¯‚‘¶ŒºøiO\mLצpr7ÜpÅ“Wyħ‘††Ëו„Œg@¿Ë„tV}îH¥ðÞÄH7TЗZ9!3ï¦À2sˆ"깯
ð¢¯ÒëqY5Í=¤Îë¹¢™ƒÐ§úëéfË7F°@8<)ÀÒ ä{Ü_Z!mtب|ó±Üã—Ï£†D8í“Ïë>têïÈÉ.ñc‘É·PÄ{ŸArzAÒ¨xÁaÞ RŠÒ©JÍT[Bø˜ñ¾Ð×öwßëêƒ(Û•hvï©ž#f»Ž¥EN§|7]_+ ”K“øf¼Åq’gq‡eC?.N+±7 +xÚ½ZÝsã¶÷_¡·Ò3'† +*-ÍÙÂ1ÆXî\WžƒvS7ùxé^vðrh<Nrð|ÊÊb•µ¹Ÿ‰oßßÿíú_,¥C+´=•ËÝ]“·( n˜E/Ò¿4Ôòí=v'òX8UÕÜ´àñÈ_èV`5ËÆ©[
W˜Ò©0J{¾Ô„öú×´°é-ž=ìÏˬB€¶WmVTÔº=”m±+szƒy‰€Qû"oÞ ¨DgËM7¶ƒf±¬r–¥J38¹@ßU½í–©²mþ†d¦¡Ier*ê_¢He¸žŠ“`çD\·õ².¹)+ë}Ñn¶î=œí*Éç‰Ä7Y“ÏuL/tF;¶jØMÖuEßç“‘n×J&hI†^˜¿ßeËÜóÓfOVù±,œ¹àHäÂ¥Û
9ìe¶ßÙ#Ÿ81Ñö+L¯¯ðR<V5½¯¸¡¢gë5Ždï
‘M=ê2”‡=ï·Ùó©ò5»²`}<ìür-Ï5Pxs»'4r¤¶_VI+"É*Iņ‚'YÎcÅ^‘ ¡wD”ùS^ 'çVˆO,D‚_I#¯õ¨i«Ä±žàFËæÞìiÚ#è•“:òA§"?^Z°õß®©¹`n‹fÄ>
·Á¢n7Ô²+YÜf6p†äibJiFžfàÁdVE[<å_£îýœ„°€G\‘S,2éE&½Èd/2y:sQmr0"š@‹gž¨äθkbY‹CKÄ+ëKÞ³$‘Ñàk*òÝ'6B[f?íœ%‹ßésÆúÙŸ€WÁn´ÓAe +#æhóôövJŠèÛÿaq÷ø†áÇ>fžH<ßïo_9®°]%ýqÅç×·¤uEïÖ·ñsƒNö¥™wçhþ{d“¤sL.&ü† uÅãÀŠ¦bú|šZ@§¡‰83të0V©ó<±78Lj±Ü_¿#ºÉ—8-´àÔPˆ©ë¶AeSF+ÐmU¬ñÓ:gвÌi@ÁS:{{Éú\Âé™ØħÚöe)©a<Áê4ø|Êw£Øã#£3<ÚC¨¡-–à“‰¾éD}h»˜•ïŸà +£#ŒPÔ@˳÷ø?16¸ÂV9#ö;n +„„HÃIêrÕÏæt ]SQ¦qœœi'64I<qWõÁ/½Èép•ÆŒÇŠS7u¨²¥„SB|öi‚kÝ ‰ Å’*«ž‰(ëê1ß¿EÙK‡ °Ñ/¤—/wGÝåèq9y’ÿ¼A-¼ºýa8 +SІ\Ö«O"¼¼ã‡Ö™8nÄõEuðy¼”盃{sGIŠ’XõÃ_›TàÿUgg&<ÚDf¶=â´rX‚Á/)$+a¢Ôžëí½„”Á¦>æ¸7+·ÐŒ"ácDê˜wøÞº¼h‡Bà9¥¦B€™JŸ0¢¨Óéá~Ý2°d¶ê9äe'xecGrIúåø[Œ‚T$d‰©£œJÊV®VóÅ3Ò£ +¦OÝxU |Ö–ž2ád6¯BaÓtˆº'ä +á"”Öè/oRËD6 ³»ÈOr6H9¡k8ê}‰4Ç/ho¶½7®ÊÑõbŽ‡þbVpÛRó`ͬlêáÞ–5ÄŸßr^–Ãýlnc°£XžjL—“—©O5{yhYäy5̱YvàtuŸ”/ó¬á©
E?Êá²Ï¸©º…
çëÒꌴáY· +™vI!"ŸÎŒ¡Ù)nÊŠON?@ÿVÔ*ˆÃ™áî]e[‹-<e„‡°Êÿ†³ù|Ýæ€Wô±¯Íù!
¸}›O–i\
Å’pd¹:Ž-6LȪ¿ø¡h&FˆF€\|$[S矄i¢|»ŒMâÃ:̿ͳŠy™¸i +dŸ¬JÒ eƒù·§W°hW +ÄæÌ·íž;™†Š’0²ÆL8™Ž…ª‚É©—‚‡r¾9´‡¾ìåS‰~¢¡.V¡+¾ÑDü•RÖ¬d¬YøÁ†ˆ |íyF§® ò¼H•µ—â½ +›=D ÜB§^Ⴕ_¤q©TœN"ˆ4¥’g;!ÍÔùI8¨Ý.Ïö
½4T¢ºS3
`”$Ü•âþh>Š»ê³IvÆTøÂ';eô5×¥‡àXª1cõ!ƒó£3ÚÚÅhD§—Ήþ°–Òšýƒêq$±š*Ú4”èËþ¤u*òA¸ÐTíEÃ,7ü)kFÛbO
MŒ4 –hFÊŒ`‰Ã]VN„«ÔÙY’êýÒ 1°’, žÎ’,d:ûKC»O¬¤²%qÔÙ®õéà¶~¢!¢Ï¾_BSÄggé4MÌ@å"X˜E2r2ÐÒA<¥SÈ õ¨VÑáú„ñ,<§ä'!äWç»Õ8ŽíTc©¦OX›h/Eàþ«eOðƒuÒ]Öl2£ElÏJßék23 +¤»yU +ôn—ÜR0_mö)ç&–€,êŒEÃ^ÜúÓKŸc¼šµ£Û¬.Â;)Ç<öcØuwóŽˆ$bºðz¨Í«ŒªRx·Fz´Ì›æÕ+²¹°²
ø‚ aâ`AÕ—°;ä“QweæÎÃ0ÎK€I8{tND‚ÕÏýÍ‹¿ÅN_§<R*B£“?g
2ŠÝ‘âìë¼]nræ³õRáMGÓe$Ù‡ŒC!”=õ5+oKÂJÚkhÚ§…@pZ¨1îäŸßì¢3‡6Üzu:§Gý'ѹÑìòeá\<OâìS¿|”Ä`˜š³M4QêE©¡äD·Ò@lÐZÈIHu’]ë\¡v›.Y‹±Àçð6ë=W$‹Ñ˜þ¾#kF6¦ä{})&ÕAæ}Ü[⤹ÜtªdÔe_`fuQ1YWèg!}ƌڕN¦€8 Ñ3^µ$Ð2Óá¶$ž½àåšœnN_+*¥*„45=#E‰”Ey\ìcùÉ/VÓs›¹R(2âÁ(iƒˆ±T¯G×ÿ躰–H®¡]AóÄuQ´¡.YÉ@`õì+‘.aŽå)fÅOTVîK§òÔ4ð]¢ãž´Ï¯q¦5}mjþRpÐànú¾
Ã5²(0£B|c-ãáµ@œ®/¸r+Ô+ç%t&‘úI‰é.jæÆýC ²·XMÏAU@(_xK endobj -1851 0 obj << +1859 0 obj << /Type /Page -/Contents 1852 0 R -/Resources 1850 0 R +/Contents 1860 0 R +/Resources 1858 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1829 0 R +/Parent 1863 0 R >> endobj -1853 0 obj << -/D [1851 0 R /XYZ 56.6929 794.5015 null] +1861 0 obj << +/D [1859 0 R /XYZ 56.6929 794.5015 null] >> endobj 578 0 obj << -/D [1851 0 R /XYZ 56.6929 769.5949 null] +/D [1859 0 R /XYZ 56.6929 632.4244 null] >> endobj -1854 0 obj << -/D [1851 0 R /XYZ 56.6929 749.4437 null] +1862 0 obj << +/D [1859 0 R /XYZ 56.6929 601.0274 null] >> endobj 582 0 obj << -/D [1851 0 R /XYZ 56.6929 672.0805 null] +/D [1859 0 R /XYZ 56.6929 519.984 null] >> endobj 1477 0 obj << -/D [1851 0 R /XYZ 56.6929 641.9666 null] +/D [1859 0 R /XYZ 56.6929 488.4276 null] >> endobj -1850 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R /F39 1161 0 R /F48 1238 0 R >> +1858 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1857 0 obj << -/Length 2928 +1866 0 obj << +/Length 3826 /Filter /FlateDecode >> stream -xÚZYsÛF~ׯ`ùe¡*Ìcý¤$r¢ÔZÉ:ÊnÕ:.D-”I€!@)ÚýïÛ=݃ƒšÚ$Åôèéîù¦“™€_2ËM,T¡gY¡c#3[lÎÄìŒ}{–𜹟4ÏúêæìÕ•ÍŠ¸He:»Yxå±Èódv³|}ýÝÅ7—ïÎçÒˆ(Ïç&ÑWW×ßPOA¯¸~sõíÏï.Î3Ý\ýpMÝï.ß\¾»¼þúò|žä&÷%s8ò›«¿]õí»‹·o/Þ¸ùþìò¦×e¬o"*òëÙûb¶µ¿?±*r3{€†ˆ“¢³Í™6*6Z)ß³>ûéìï=ÃѨ{5d?£òØä2P&³$‰cäÄ‚¦ˆS%•³ *-
X@ÝWöü©+;»±uÇúîÊͦܡ¾¯Þèd´-bbcò̱#)óúX—‹/Í”‰óÔ˜Ù¼—&¿_¬Ë¶ý@óÿãæ‰éŒMÙ-îæ‹u’´~ž{”ËåζíG7ããºj;êÿïë)ŸdÄgiÛ®ªË®jêßÇl,ÔÎ.ö»¶º·ó¦^?ÒüGÛ~lv놚Á·ßÌÓlQ–×ÔÇñ‡ìü¿›Ú~lý¶¾3˜ä?Äð×y¬3 -¦ž²^ñs[~²¼<›;ÛK3LJŠXÊÁÜÃç)'©ã4ÏsžÔŽ%K£ª¥gImó`w«ý[Y´²ewžDûÝy’G–úšÍô~"%?‘FÝ]É<׶›ru@vo·vwow<X·=Mo®"â×½Ý=¹¬V¸üÊ:)æ´aZÅE’Ó½¥K2Ë£¥ÝÚzYÕŸ¨é¬Ï‡»†§6<Ëö3LÇ¥ -]uÓÁm¹ëªÅ~]î<Û}kÉ8@¯šOßl×΢ýrív]1/Òûl·ß2㇪»kö]àwå=±ht
=wç°2ãf³_w¬G-2g÷œòXrM—åâ.€ -•H°¬ƒ²m±™àÆa/!)Ät -•ÎŒ”q¢À<#&ʸp§=ç=Çù˜¥wù` 6…ÔÃʽï>RèD)ÅŸ&dÏñ„Z&±Ha“'Bº -H8¬!1 -¶Ô`sSÇ`ÃŽlØ8647ýÊGÁ¦b•)93 lKùã`cŽó1ËØÒX¥£…¿€µ4Îu–ýy2öOÈþ0Îq÷&BÃZøíÃ2ù©Ü{Äü8ÖR‘X?k“”ì© -ñ7Ë¡¸y¦õT¬•_´ -ÅþVb…û’1!¬èïêrôÁuvÁ±8¶áê¯@¸†åb¯I¨üT,‡ªÚ·eí®ßC(¸ cËWSØ` YÕÃÄ -ª<Á<CO¼È?ÎÁ‹WLTö÷›3…²åþAc
X5á€ôtnÅO]™èñðÕõtì7vÉ|¯›ŽW÷!.åÒÄ-VÏýë÷ƒÐ›½K_P -ÈDÊð™`n‡=,"’y[
ÛC€÷ÂW×Þs“È¥dbÑl¶ÕÚ.ç~ôòbÁIg=ƒv¸PNFÖ‡1°l ,V°Ãâ~Që"”+_’Ô»è -êÊâé'^bâspù¦¦g=G4[YÛ{»¦>È£IIoâýŽï±p”,Mt¿ó<»–ŒŒ¥O§³835»K
sAžxKO]ê!ˆáó10³!>½¤[Z -•ù1ÿ“düOñ¬È!Š"ôyxsΔ¸¹è5àËG/æ9€‹ÚãH*dQ3ûäL‹ªÖ¥Šû¢È%Û³# +xÚkoãÆñ»…¿UNì>ù@>]’»ÔEã¤wn4 ´DŸÙH¤"RvÜ¢ÿ½óÚ)¯Ï40-‡ËÙÙyÏìêsú¼ô™²•;/*—y¥ýùj{¦Î?»oδÌY†IËé¬/¯ÏþøÖçUVå&?¿¾à*3U–úüzýÃâ«?½þþúÍ»‹¥ñj‘gKŸ«Å——W_3¤âŸ¯¾»z{ùÍßÞ½¾(Üâúò»+¿{óöÍ»7W_½¹XêÒkøÞ†g>x{ù—7<úæÝëo¿}ýîâ§ë?Ÿ½¹Ž{™îW+‹ùå쇟Ôù¶ýç3•Ùªôçð 2]Uæ|{æ¼Í¼³6@6gïÏþNÞÒ§)þy[f¾4E‚F§è«,·Æ»zÛ¬q0ÙL&[—)_À8©ï6K«ŠÅ¶n»þ|,5C‡¶û¸i´»ú# ¤?72s]õM=4_À£Í«¾š_M7fõâÀYºMûs#ôL‰·Úd^W¹P4îÃج—´ÀSê}ž9[T2ùUŸÏòª02Ah^â¼ó¥SeVh
üÔ:«¼74癕ÈÇè""zdý`Žáè¦áß¡yPËïx'oÆ~ǃMsßläû[^ËMiÖ´ t²I.FÞ¦PeEáËÈ +>ˆ–OøaUbúaJ™Tqž«5øÙõÍþö@.IJ<6!wG&Ä83ôorîßäâžp´iÆ9VRdúzhö˜±òËnxˆcþùúê=~94œDAÕ ±–¿•"RÊŒ-ÅIÙÄ +N›]Óc^ò»‡;ÉB9ĪÓ9Jíârœ¿ÜÕ{/ƇËÌñmH'¹œ†ÅãrÃnÓ +.Þšñ°Ä˜ä÷‡1¥àwõ=£¡žÿî/`eÑ›ía3¶»MìW ;‡,bšävoêÕ]:©³•Ac|fœ®žjŒÕXKºLe¨æê ¬ú8¢ŠI‡ + +Ñ™ÊA¾S +)ö$Ô9ÏŠBïor¡ªî†TzZeE®Ž\¢\ÆdÞS5õD»†tL@à>Pt†â +°0ñxH²Ì½†t€¦J~‚ˆÂ’¼gÝ1K))A.Ãî^®kÚC9=ò)òÀeú¶©»‡’Oñœ +`Òaä%¦ È—‡Q>Œ•1c¶@¨b1ˆ¯¤—&M–%»Rg»œ0ÛR×C_ðКÒy|¼åßt»ª*³ÒXÿbÕ‚¾ù$o+¿Cû±#PGýhL#G9 +/H£çs[ù
Êk´›¾¾¼šOƒ‡-ÝA¼Wý(«‡ —KuB‹uËðùý‘èí2¤¢§»^)£'~G|¬\%!/Ûå¯AÅlåò*øî:œÿÜÕ2XõÛ]»iÖË Â£úÊb§ýÈòxÖìéHêØOž\Áw]ê< *¡R©ÏðŒÎU©|ð2©Á¡ +Q¸…JŸR¯?%ý·ëpendstream endobj -1856 0 obj << +1865 0 obj << /Type /Page -/Contents 1857 0 R -/Resources 1855 0 R +/Contents 1866 0 R +/Resources 1864 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1829 0 R +/Parent 1863 0 R >> endobj -1858 0 obj << -/D [1856 0 R /XYZ 85.0394 794.5015 null] +1867 0 obj << +/D [1865 0 R /XYZ 85.0394 794.5015 null] >> endobj 586 0 obj << -/D [1856 0 R /XYZ 85.0394 769.5949 null] +/D [1865 0 R /XYZ 85.0394 584.5645 null] >> endobj -1805 0 obj << -/D [1856 0 R /XYZ 85.0394 752.2115 null] +1804 0 obj << +/D [1865 0 R /XYZ 85.0394 559.6651 null] >> endobj 590 0 obj << -/D [1856 0 R /XYZ 85.0394 622.2614 null] +/D [1865 0 R /XYZ 85.0394 429.8459 null] >> endobj -1859 0 obj << -/D [1856 0 R /XYZ 85.0394 591.5303 null] +1868 0 obj << +/D [1865 0 R /XYZ 85.0394 399.1723 null] >> endobj -1855 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F22 961 0 R >> +1864 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1862 0 obj << -/Length 1239 +1871 0 obj << +/Length 1188 /Filter /FlateDecode >> stream -xÚµX[sÛ(~÷¯Ðä)Ùˆ.Ömú”vn:›´ëzŸ²"¡”$TÀvܺÿ}A€-Ùj"§Ýñx>¾s87äX¶ø9–À vc+ŒÇзßJË‘m=ˆwoGŽžÌ$Оõz6:¿ôB+†qàÖ,oaEÐŽ"Çše·§tá™@°Oß¼¿¹¼zû÷ôâ,ŸÎ®Þߜ׷O/¯þœ¨ÖÛéÅõõÅô8‘ùãâÃl2U¯ñúêæw5«Ç@§“ËÉtrófrv7{7šÌ¶²´åulO -òet{g[™ûÝȆ^ùÖJtlèık•£±ïAìyf¤}ýµl½m–öêϱ¡ënÇNŸýžë5 -üþJÊ €€ëÁرÇÍè£Õlûô=rD«¤8QýoÍtχQàûpû¾:‹ós5å:áé'ÕLŠB5Ò£Š3Õ©WRÎD™êܯՓB†’Bw;è5EKLJ…}ÓhÐÙö›æT_©Ö¾ì^g£)Ê©6Eé‚2¼Ô]†è§ºÃ‰zEuîå¦ÑHeÔñ$”,q¦7KÆ)N¹ÑÝî¼H¾Ó¢¦•”u`JʧÔú•TzAJ*žà -W±*ôÉÔ‹û§¦—¤)bßzÝ'ÂäU†±Ã>i±é”Ã( -ã.7¾®‘1&”ûªO€{àÀœÌîOÔ°‡ï´mìY³Ûzy~é:Öv8—›Các¡·
?n(BŠ½U¡ŒyÂQ)Î_Gš”eB^Ç%å‘ûÐñ|oOQ²5¯’RwoÓ"a쮣1m*‰iìvë›d¾,]wý#Ë„y±yãAó3¾õ–æy7ó~¬sËiR±Ñ_ÌvQgâ´~¨‚5®¢[Ô„…Mg5w®æÎéÂXò-„ðîõ0DPÅy÷$q=—’hÌšP¾—½ƒ²‘ȃA$sHHCqš‡ n÷ -d¨HÖ¦ìµaÆŽ$8Œ$ÇGKQn~FëC5ý¨ý¼¹õÉÇD1¥¼¸·ÜuÓ +xÚWKWÛ8ÞçWø°J²¿†¥Ò3ÐNȬNŽ±eÐÔ±\É&¤¥ÿ}$Kò#H:/¬ç§ï^ÝOW²È?Ëp=à…vhøá¸Ðrx5‚Æï;YjŒ©™ÝQ£ÃSÇ7Bz¶g,ÒV ++2\ÊâÇË+ՆʪP¸e…ò%²¡b8¿ÞãG›oîÔõ…m‚ÝFk5ªk‰=ží»j+£²gȱÓ.¢É-åñ2õÓ +ô¡Ý"›„ãÌiÑ<Êdý§ +Ñþ½æÝÅ:ôŒå©R¼=°I“ÿû‰Û¾ÿ§>p‚À~½Ú>D‘. +ígÌõ[ø9õÿ endobj -1861 0 obj << +1870 0 obj << /Type /Page -/Contents 1862 0 R -/Resources 1860 0 R +/Contents 1871 0 R +/Resources 1869 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1864 0 R +/Parent 1863 0 R >> endobj -1863 0 obj << -/D [1861 0 R /XYZ 56.6929 794.5015 null] +1872 0 obj << +/D [1870 0 R /XYZ 56.6929 794.5015 null] >> endobj 594 0 obj << -/D [1861 0 R /XYZ 56.6929 540.8995 null] +/D [1870 0 R /XYZ 56.6929 352.0993 null] >> endobj 1724 0 obj << -/D [1861 0 R /XYZ 56.6929 513.5566 null] +/D [1870 0 R /XYZ 56.6929 323.2794 null] >> endobj -1860 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R >> +1869 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1867 0 obj << -/Length 1226 +1875 0 obj << +/Length 1168 /Filter /FlateDecode >> stream -xÚµX]s£6}÷¯à1îŒT$ñ¥ÉS6uÒìt³[×}r="¡ÁˆEò&Îzÿ{;¸';ÆB £s¯î¹W¦ú!ó¡I¨e¸Ô‚¶‰l#XLã^=» êP¿šo}˜~½"®A!u°cL¢–MÏCÆ$œž]þ~ñe2¶Í3í˜gnnÓ=Tÿ]~¾½º¹þ{|1t³ÉÍç[Ý=]Æ£ÛËÑ ÏFj<®¸ºùc¤[×ã‹OŸ.ÆÃÙäã`4ÙØÒ´™¤0äë`:3P™ýq`BB=ÛxR7&D”bc1°lm‹º'ü5øsØxZmóŸM<h{Ømq …D¦©E]õ)t&¥§Cà˜æ™ˆïºÒ8½r•1Ý›.w,×ísý7+lV„ µmÜ }éßù¢,d®Ð:^Ä)ÈY”3ñ -²:5ö÷¢ŸÞ¦ž8›Ë[É6ã¹Üô7³šaìèxnµ¸+Nù!¬·Ø›gÇHE¦Û0PA›®#?NÖj½yΊÅî^ób?YfÍöœg2®¥Ûaµ£89±búB²¼^HOÉkk’dÏrûO½Lù—/óÔOºryUx«ñjñR¤Zs‘± ÃìUöØÚPhgŹ½¬¨pX.v"õýÝñs”ƒ“7Aåè(çUú#•¨YÔ‘ÚG®%Œ\d Olí§NŠ`Ïžþ¹GG©8âñﯳr9¬Q/Ö»+ẌlZÈÝ×zË$m–ª½ÙjͶy~Dz©Šö4s`îJÏ%ü¾¡‡v‘uÉq¨t^W©¶Å»@|)ßN©ØÛö t¨¥ãšei/<«aÏYñné -Ý´ž -„,ñ«Aª.ó4}d¹¥î¿3È–w›¨mºéP»gúÙ,ˆP©<hì”âÌjä͵ŸK!Á® k»ú¥|dC꺎Ñèß -ëXÒ奾¥‰Ô…'øæ4©:¯©Rb§ü|((Y¨Z§QÅ&˜¸ôÀ~^‚^nm ý·b“B¬R×]Þ+®G]‹1‚È5îtK®]ÓsŽ'î¶Ð°(´uÚ¿}Þ§†VJí¤Ç…ÄÅÖ!ØoS‚K ±(=Îò¸¶¢ú :@A\Dµ¬Kñ‰„ô¥ªçq NÝMt;bj;“#ª\Òv‚¦®j¢7Ÿ×m3-ž‡7Gq7Žâˆé@S·&UHÑ>óÍÁÞkêÿqA”½endstream +xÚÍX[Sã6~ϯð#éŒTËwO,
[vºì6MŸR&#lT|[IÙÿÞã[â$†µv:™ŒeÙúôãs¾#‰h:üˆæÙX7}Ks}Û:±µ éÚ5<û8"õ;¨y µßú0ý|fºš}Çp´YÔÂò°îyD›…ó£Ó_O¾Î&Ó12lýÈÁcd;úчó‹_ª¿ºœ~¹8;ÿøçôdìZG³ó/U÷tr6™N.N'cD<›Àx£FxfÀÙùo“ªõqzòùóÉt|9û4šÌ6¶´í%ºYòm4¿ÔµÌþ4Ò±é{¶v7:&¾ohÉȲMl[¦ÙôÄ£?F¿o +¥‘Û0€ M×åñ¾w&Øv%Òç[q/óv{‘åŠ7©Ûá
;”b]/RÒkk’bj-èý Sþ†U]Ú,o†Vo(xõøÖ§h-d΂ÖÔê±µ¡ÈuÄ…Tƒ¬¨q˜;‘úþöÂÆsÈ"ˆü_v¿Æ»í~;¢TþÀãO‡ª\kÕ‹õî,7¶-âîkJÇ$]–n¶sиÜêüŽesˆn™ÙŸ›ü[þ¦J=Ôu‚dOÓì:ï=é›O—¶GolN=ÏØFëàÈÔì¾Û*ŒõÍ}æ›c¨Cêÿ endobj -1866 0 obj << +1874 0 obj << /Type /Page -/Contents 1867 0 R -/Resources 1865 0 R +/Contents 1875 0 R +/Resources 1873 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1864 0 R +/Parent 1863 0 R >> endobj -1868 0 obj << -/D [1866 0 R /XYZ 85.0394 794.5015 null] +1876 0 obj << +/D [1874 0 R /XYZ 85.0394 794.5015 null] >> endobj -1865 0 obj << +1873 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1871 0 obj << -/Length 1013 +1879 0 obj << +/Length 1087 /Filter /FlateDecode >> stream -xÚÍX]sÚ8}çWøvFŠ>,Ûš<¥Y’Òii˲O,Ã8 OM%Ñ”–ü÷•±
6˜‚¡;ÙÉd,®¬sÏ=ºâ^„-dþ°ÅèpÂ-—Û!̬ñ¬¬G3wßÀÙ; ßzÓo\ÝQ×â;ıúÓ–‘ça«?4H`Ë æíÇî]çþïÞM˵›ýÎÇn†šw÷íttß»ùðá¦×Øc¸yûöæS¿ÝK§œãM§ûgjáéã -õt0©5ZÌ„LÇ×éc˜„lüŒ!gŒ”@üï¿dÍDËe-¼Ï£.D™Å"Ô˜ùJç‹–Bb9Šâ“1~ƒ(*öÖáq@(äÙå ^®sùtbýGYdÉhùy ƒqè+5L?ü\/„ÕËy¶â)ˆôuUÓ Ì^QZÑcNùpÈŠG_qâ(\ÖP®´ã'1þ’˜Tjø1ôìËh5õƒp<F±Æ†w׫«ôÙu:èÌ桘‰H‹ ¬Ô™TêL/Õ™ìè¬ôâáWâùa?ƒ¯!—9jjŸLÌ‘R£™¯ÇO£0PY\/'(YÀ4;r ,ùô‹Ì üp1/ŽGñ<I¤““æüÜ+9”ô'|û%_Ér0¥Qu«ŒßõJúÏÇ)Åc@Œ¢“-JÕjH¥k)›á©JÛŸÍóQ’™mK½±'†%7ÂÒQ{9YuÄÁÏm˜¥e…¼\• '1cÐÆ.ÙѯÂI¿/"K3nü—…˜+ƒ»¾÷*¡–~¤¦B‚`bR"ˆÎ.e ¤šÕ +xÚíX]oâ8}çWäV²ë8ŽÕ§N—v;ÚavYæ‰A(ÓF&6Ó2Cÿû:@hM ÐÑH«BqìøøÜã{m_c™v˜=A„Ã…ÂÌMȹ3m×
\~VêWïz³+Ê…G<§7©`ùù>vzã~Óƒ¶j^~ì\Ý\ê^´¸ÛìÝ|ì´ +©+Ä~–ûã`T?!°Àø„[çå{K t C¥Ã‘².×5feèà6Pò¨åmÆ •“Tªû|Ë9j»É6®c@,Ltº8"çq(Ķ)óH‡ Øï2M@œog@ëh? +œ¯Å´§óÕ«æ¬6sšûã`ehJ•^ø£Xˆl°z1+{܇±>·i1 #«7½âƒ2’wÆ‘“¸rz8\¹Ñ½}™MjµA/'A-û8Iå&׈ùãì¬xv’20o¦³HNe¬åZuÆVÝSuÆÏtVz~ûšxA%àë\¦‹jQo–*©ÔpèÑý02«DQÿTCÉ +¦™‘S`ñ[LÐ+žÑ|V-“YæHõŽö½-Óv9}U'[,²î`’¤FÕ2Z>êe<¤ˆ1ŠŽ7(™UËI˜*½[pdª¶¦¿¿Þµ6[á¾ÝB¸jOµeQ{ø±1s«[Å/—Û„óM›1èbNöŸ•lò¬ÓS¬Ç߶oL¶vŒ½+«|³\°>ÐÿéѯHlgx|О0Ȉ uóÿrÎTWoŸBÏ÷Èqz»ºž=Žß,e:þŒÑßv»GÍ’G©í.ÎüËO¾ùÛ\‹º&wô}²¾Ô#¤r©G¸]߀”¤2C…û‚ùêŠð%õ¸°”Ùendstream endobj -1870 0 obj << +1878 0 obj << /Type /Page -/Contents 1871 0 R -/Resources 1869 0 R +/Contents 1879 0 R +/Resources 1877 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1864 0 R +/Parent 1863 0 R >> endobj -1872 0 obj << -/D [1870 0 R /XYZ 56.6929 794.5015 null] +1880 0 obj << +/D [1878 0 R /XYZ 56.6929 794.5015 null] >> endobj -1869 0 obj << +1877 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1875 0 obj << -/Length 2961 +1883 0 obj << +/Length 1994 /Filter /FlateDecode >> stream -xÚ¥]sÛ¸ñÝ¿BôLÄ€ ’“§\ÎN}Óø®Žï¥i&KÅEª"E×éï~¢lú¦×LÆÃÅb±X,öJ2Sð/™•y¬t•ÍŠ*‹s•ä³ÅæBÍaîýE"4sO4SýpñúZ³*®Ljf÷«¯2Ve™Ìî—Ÿ¢wyûËýÕÝå<ÍUdâËynTôÃÍ팩øóîçÛë›÷¿Þ½½,²èþæç[Fß]]_Ý]ݾ»ºœ'ežÀúT8¼°àúæ¯W½¿{ûáÃÛ»ËÏ÷?]\݇³ŒÏ›(ù×ŧÏj¶„cÿt¡b]•ùì -þ•=+Û2Ú6}7åpà†s
ªÅ„Ó3ˆ›ÒvÝ!X†›"<îÕƒpCÑGÆ-ÝÊî›áßþ°\…Ö«]“Á,'=Å~¾q‹$âôi”kÆPZ/« -„óâ'OâZ)Ü7Ú#³œ¨&L‰%rê«Žúq=ð.ÛÆ.œÏNêŠTÅYž>é®Ä“!.Cr8¿â¨n)0 -Å ¬Ãº&3ÑGÑãSÛ–ð™0Î)Dü¶“Äjyɳ]2…$Î¥¢YIöS>ŒâÇÛoêȸ÷Àtåì°ãCiµ˜Ôcçs©¸ÉéY³Æx†U“ñÔjÒ -„–ú&B¯Àb€)( ê±Ù¾éìÉMO] -½UXùÇ -ʱ)×Mœóð#ñ Š?Ae)‡VþiÁ™¢B¢Dˆ˜S1¾Ég¶O•Î•|žû(j8µ<ß(™°Æ×*=é -¥)̼ôJÆ™eü,}ª?Cîë%þª`ˆˆä3å*œ)WÏÎôGÙQ•!;ªR²# -¥^ì©ìÃ1å0\€¢Ýùã>ÓÐeNêèšó¼ñ
à+~+“Š +xÚÍËrÛ8ò®¯Ð‘ª +<ø,ŸœŒñÔÄ™u”Ë:.%‚w)RCRV4»óïÛ(É¡3Éø²¥Fw£ß˜rø‰i2®Ò`§¹§Ëõ„O`ïÝDXßùÇToæ“×—*ž¦,d4G¼Æ“DLçù÷öçóßæ73_†Ü‹ØÌ#î½¹ºþ‰0)}Þ~¸¾¼z÷éæ|ÞüêÃ5¡o../n.®ß^Ì|‘„ÎKËá™—W¿^ôîæüýûó›ÙÝü—ÉÅ|¸Ëñ}Wx‘ß'·w|šÃµ™p¦Ò$œî`Á™HS9]O‚P±0PÊaªÉÇÉ?†G»æè˜ýB•°0‘ñˆqd@Á–i<ÔEJ*cÁÛ™qî³/~«‹Vw+¿/ך°õv½Ð-Ágô¹Ã;ƒ`_–†¡<aRÖÀ¤o÷/`aôøQâ„ŶêKu½;´×Ý}ÓÞ×Í_*–¢¯N´ùóÌ pÛˆý£©JÝ×™ÓðvYe]wG‹ÿ˜££lûýÆžèú¬/—~×ogß0GVUÍÎÿ}«Û½cNø<Wu÷ë¬_®î«²ë ÿçwاÓí£n}ËBw'Œ-M¹¹Çý{1ÆóoÉ’#²ÐR£rpã ý0Føƈرûq?‹Q?/õ³xâç¢iwY›ËÇ–„ŸyÈ›ºÚÿ·(Û®‡•øîÔ±|tû×½Ý4m?àqq÷w\}V¹®ôø£©}¼Àÿmæ=Ñóì/uy})Åt@¨P.éöØ4d„[å¨A|„ÐÔk]÷´üIæ\Ö%Š%LVç|ê²=È9”k´@ +"ê‹<ëíÈN†=,ÈÓÄ veU´Ðc™ž-*ëõ¾¡ï¦‰ÄkËÜndÛ~Õ´%VÆG‡ª»© +¸ = +æda¸ËåŠ%èWYï +ÄpK¨¼cÁÝgËÞ10ÑyÛ
$=VÒfäÒmP$rR+Ž÷Öz†ÀÚ( øcUv¬²šÐYÕ5c½
ÒÐW`Z;À ˆBͤ¶&ƒ§eu xÈ{³'\®‹¦ÒWäý¾…Œ,†™3»2“f~Ay¾ucáQû–±ôBEÓVàK¦ +B«$"Ü +yx‹¬3¦ +‘™îšx`ãôèø¡Å<5’±»…šLp ˆ“ŠˆÙ•ýŠ §ª#nþñêAÿÖ{T+ä©wUX¶Ä3¼²Üðžø5þ1©Ÿ¿M<¸×;ªu +B˜;NMå‚°Ý•y¿Â Ü»n…«ánb +Ó/¥ä%)Ou[¶ÞTúÕaº„r=ŒGh—¸*ŸX¹f@8~BÁx:ØA12„åÈ4%,馎òaÕ“”M•-µëÚÎ’³ ”OÞ»6“¡.Cs奔⪬Ma +=2xDû@2ËpÐþõ·/ĪLdÉw+mûËל• +ÏDg@h¯øÔuÿÚš@‚êD endobj -1874 0 obj << +1882 0 obj << /Type /Page -/Contents 1875 0 R -/Resources 1873 0 R +/Contents 1883 0 R +/Resources 1881 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1864 0 R +/Parent 1863 0 R >> endobj -1876 0 obj << -/D [1874 0 R /XYZ 85.0394 794.5015 null] +1884 0 obj << +/D [1882 0 R /XYZ 85.0394 794.5015 null] >> endobj 598 0 obj << -/D [1874 0 R /XYZ 85.0394 648.8056 null] +/D [1882 0 R /XYZ 85.0394 445.5677 null] >> endobj -1877 0 obj << -/D [1874 0 R /XYZ 85.0394 618.6917 null] +1885 0 obj << +/D [1882 0 R /XYZ 85.0394 415.4538 null] >> endobj 602 0 obj << -/D [1874 0 R /XYZ 85.0394 618.6917 null] +/D [1882 0 R /XYZ 85.0394 415.4538 null] >> endobj -1878 0 obj << -/D [1874 0 R /XYZ 85.0394 594.2803 null] +1886 0 obj << +/D [1882 0 R /XYZ 85.0394 391.0424 null] >> endobj -1879 0 obj << -/D [1874 0 R /XYZ 85.0394 594.2803 null] +1887 0 obj << +/D [1882 0 R /XYZ 85.0394 391.0424 null] >> endobj -1880 0 obj << -/D [1874 0 R /XYZ 85.0394 582.3251 null] +1888 0 obj << +/D [1882 0 R /XYZ 85.0394 379.0873 null] >> endobj -1873 0 obj << +1881 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F21 938 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1883 0 obj << -/Length 3404 +1891 0 obj << +/Length 3279 /Filter /FlateDecode >> stream -xÚ¥ÙrãÆñ]_Á·@UË1æÀ1É“¼«µåÊj\IÅöH‚"l PZæëÓ×€ Åvv·TÓè鞣»§êIÿõ$IUêŸdÞ©$ÖÉd¾¹Š'OÐ÷Í•ši š©¾~¼úê½Í&^ùÔ¤“Çå`¬\Åy®'‹£Tu
#ÄÑÛ÷ïï¾ùááæ:sÑãÝÇûë©IâèýÝßoúæáæÇ›‡ë©Î½ýöæûÇÛîJeŒ¯ïîß1ÆsóÊ ·ïonïßÞ^ÿüøÝÕíc¿—á~ulq#¿]ýøs<YÀ¶¿»Š•õy2yXiïÍdså«gmÀ¬¯>]ý£pÐK¬còs&WIê2Y¦’yu^ž#†y4‰Vq§óNsÒ4CíèTygl¯§Jñ -8sÔ‹„‚¸eFe>ÉÎNýøÔÀyžÅ¯`¬Ëùl¢2ãòÓý`D¾j`H/Ćn.‹ûŒÈ¥ÁsTl·tæ]‘P!s*¡Ìr¢oô$£8“°N°7@>U\
-0Ž€¡(N«¨T 1fÎ4žŽy¹îºâ*e[ïZî³9(ÐÒ|¸2Î)SOåö×`>W&OC5%%ÍØi†Ñ˹·|L,Ò’è}˜lÉ“š=/¹•”ý#b ¢Ó‡“g2íÎÒœU(EÉÿL
zJ‰}ÇÚ‹Ãr’䧀[ ù¬\ÏU‚™»)\‚ä›Y±; °&—œÔ˜<<±ïåÖ;(§\æÝ©ÁHÂï8ù–§Á1ÿrî2ì`/F‘]ÛqäAæ®!r+†Jã16õú€28 ÐÏ%ÀÕp[¼³¤ÙžŽ[*zCˆÜ´{*± ÷"UØ-m@ÊOk”öZ2Äy P—”
¦aç0^@lË9eŠgê$]|jÿêÕ”g˜I|avrLy2
AUÿ‰!…áÕt¼r»×Ò+ÃL,ä8M=‰h…¹æ¥µ¦¹Êœ þj^¥|UW]Ūfu!Àñ_ -ɦlMÊfBQ6
!-é-–K_
æÂ×›0PÁ4IZ}…¤j4ýþ'¸wt -
·¸p¾¦ó¼ÚsÚýHÁѯ*M%]à‰$ ~‘ -vœ‚Ó{‹«£Käå{ùž¡»{á*èâ#åÛÙ¾Zw¸¸ÊR%èÈŒ¯:ŽÁ™ü¢S~t@QðÈöUÇat]Ñ¥ãÈ¡ÓY3±q¢ [ó"„uùDSSŒ#.DÇ0¼îó§G Ó& -ÜT'F‚³‰ÊZ²wŠ;I0&è9ŸŽ˜Uìe0Úï©wEÛí®!o˜wûÁ%܈#o¬)Æâ
‡z¢Ü×Eo?~xÃ]÷·TöÓW}|øC’â¾J¢b¼:h_ÈÒcb¹‰u€«g¬éŒÄ|½ÙwcæEÆ ™[ùy»®ætUcÈ«Í{‹ôÖ'ù`Þßäß–ó@œ÷h†èØý¯œ/´7§µ·Ñý¿Þ}üpsw¯ÍšEhÑ”BRãé$.gD-c-ìj˜ªüL²×<Ú˜ +xÚ¥ËrÛFò®¯àª2áÁ`0 +³ !’…@[¿2 +œ*´VYjÉÃ1VG
êÇ<|ˆ?¨äG`™f7ÃÌ?L8bT”\Ï +'qLˆ?Ø¢Û8>Eä‡#åÓåÓ ¾[ïÑ¿†Y§sèëòè¹yA‚à¢Ã0‡pA\BÜ#¡áXŠÌPšjOi¾Sà x4¢Û«n×`ÒðR{椵Ýqœ·yæLæ3DA·ŽýÀº§f¯S¶»æER˜R¯Ýî~Ù÷óét×·6z¸û”IÁ/£°+˜¼ñ ‰ž§zÀXq|6äÖ°ìœÎÃ÷É¡7í»ÝÖMÄð2!j'Ã)µ²,…8àø”J|À'$2õ®uk¦–¡g©¤`Rsø÷›'4Dz&k †/l¸™ò1 Ö±ø´23…‰›ÚÙ¸žùÆɨl¹K–Ä*ãúì¯.ê§\*¼4”~¥.ìtáUXffJÈš bæÊ/(MóQùU˜£)€H½§ƒ!ÊÕ +N°éütžg¼T”“ˆW‚Zvëu÷Ê +)ZEÛµ#zHƧ9ÞÁûq¼ÓÊ·OS¨wï˜6‰°ã²,Kçy]è輸¨O·hª©c‰Ä„ë¨? +Ráa¨7[ìn¤:¸(Hr[žv)¥Jli5K©·6趞k`Ù +6ß±ùO]¡"LHK1Oâ—mÝÂûì%?ï~ÄO7¿<þ0YIÞ:vn' ÄI[šÞ5‰.½5Q¿]¹÷¡„z®ÛŒÝÓ‚3Ÿ*[©ˆ½kGøصJ€nä–R°3§/4ýÅ +`œXc²~¨ +-$ŸÞxXèòЙË)Ÿ%M±Ñ§¥ º©d9Iã÷þ+<€,7â'xáØ,†”;;VÝ|’lž[‰2 9ó¤:‰Ÿ8Þ\7½-'…—Xp
!üúÁ5ú8ÿýņù.|€”0—fX‹Å6IË“êêĘS“$N‘Ê`k¢„‘Î8¢8©2ÒöÃ^ï¸_aø_‡Å„ÎBTåv5ô<r¡¯Ø¾É§‹ÃÉ8£¤O ‡ç,‹¿¯¥¤ ™²f—ÏAó1°¤Ð{¿Ù’7{ëö¼:þ(ÃþQK·ŒU,Oç‰9ù:ºò…(ùŸ¹6eˆÙ‡ÊËw”+H‘ŸzÊ@þT¯ÜKãC ŸZÎÏXèwOn=e p&“*Ô?J(%Tø”‰M^š“ÄÓ}é·´+LJˆÙ—1çaG1Šìú#N:"OEQi½©‰øñdqb _Ja¶Ý»)MzÚüm•å†¹ÄJ—3±þË•Þ=A¡‘‰N½÷HYáyÜ^K¾‚Räëóhv“Q>«cžx"N’¥ï~ŽôÿrËsœG|cn‚¿5jBR&RS¿HÿÂäoþýËáÇA&Ó¢Ð!:~y›IÉ)ÿJ{öëœDÅP–hO5:úÿ endobj -1882 0 obj << +1890 0 obj << /Type /Page -/Contents 1883 0 R -/Resources 1881 0 R +/Contents 1891 0 R +/Resources 1889 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1864 0 R -/Annots [ 1885 0 R ] ->> endobj -1885 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [251.8681 217.0669 347.399 229.8041] -/Subtype /Link -/A << /S /GoTo /D (root_delegation_only) >> +/Parent 1893 0 R >> endobj -1884 0 obj << -/D [1882 0 R /XYZ 56.6929 794.5015 null] ->> endobj -606 0 obj << -/D [1882 0 R /XYZ 56.6929 167.2075 null] ->> endobj -1886 0 obj << -/D [1882 0 R /XYZ 56.6929 139.8789 null] +1892 0 obj << +/D [1890 0 R /XYZ 56.6929 794.5015 null] >> endobj -1881 0 obj << +1889 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1890 0 obj << -/Length 2820 +1896 0 obj << +/Length 3218 /Filter /FlateDecode >> stream -xÚµ[[sÛ6~÷¯Ð£<³Bp%€G7µ³î´v×Qv›>0k"‰ªHÇõþú= @ˆ$HÀ™j'“~<7|88 -iš-x³:ÊCÑYÏQûðøef—=>ár(׺¼:9gA 0I0¨TëDì=*eH Í‚&ÙÆLtABœmT„m-ê4N>DzAvS„Ç•{Ôˆö>Ùb¤Ãžús’Í;1äšDŠâi®ÁtÁƒ G¹æð C¹oçš4‹©Ìâ¡÷¨”!´8×°€ŒÈU‚kT„k-j0L‹2"€ VŒ¨~1 G·h‰!Ù÷,ø{tS!Ýœå’")31Í8HÐTÕs5ƸŸp:”ûfÆq,‘–‚Å£ïQ CBiQÆ iÊ)™XK»¨iÆyÔi¤êc¾¯¡š -œF”ª¸ú4¢¾Ç7ÁÅšõõŸ“o]/ʳetOòj¨{ ëyã[‹O8Ê}{†ÓI…Á÷¨”!´8ß`ž(‚«iá[‹:ÔóJä"dd.Au\»G¨ïó
òã´¯ÿœ|;y1dE -ƒæi¶pôÃe›Ã'\å~Gí+ ,ñØ{TÊ@Zœm†4ζ*¶e4ÚZÊíf5R½)D(åqõ5¢¿O7fvβoÀG¿Ÿ«lüsûñ $~Üì[GB£g»á´ßk7(ûÝy@(B}…"ÇVt æëZ£U‹O¸Ê¥ìÃE“f0þ°‘ŒÆØ£†„Ò¢´âPÕ1&‹f5M+Nÿlñ_òãz³ÿ2´ƒbˆlã†xÔˆ%]ç) -„vÝúÿä³CCš‰„Vd2·q†ÍÆU÷œŽÐãî‡rß^¹³Q<>•2$'!ÏLÀ+i!a‹²cV•S‡ J-ÍÊ=jD{oÈÔwRÔßï·¯vªç»"ßYŸ·öûfŒoàŒ^[ðOžz@¹¤…lwÍáHÌa¿¶mOÔ Q?µÿ[î“1›/Ÿ¬*jÛ -˜(“7äLõº¯ó¿lgà ó^q¬óÓ¼.w¶ÍmʪœA{Ÿ$åƒ\kó -[ÅLF~’g e×¼Ôý›Ã'Üå¾}U…ݘ™ŽÇߣ†„Òâ¬ÃaÂ÷o]T„u-Êh\﫪X-àãkñj«4—CêÁöŸ©,a†GØÑ£°…™Áïržt7éÎÐP˜œN{ÜÃØu}‰Ý½µø„ó¡Ü·PQ„¡öBJ™1”eŸ”0i²Ä*ÛMs¯uõñuQ¯‹cñx,ª§±5–AÕîA¡úá -Ë`§ÑUÂ81\_a§9%aŒ€iPUwˆ.¯w8ú‹+ì;4‹…݃Ve³¬=Ƈ™Áؘ>øïŽÿöSœþÒ„CRSµÌl´)Lg”1\‹¡åþ¯.BÓÿã yendstream +xÚµZYsã6~÷¯Ð[䪃“$‰gâTÆžxœÚ#É-Q‰THÊŽ÷×o7 x‰šìdËå"4ÐׇFãà3|ë€I£f‘Qf\Ï–»6{‚¶÷ÜÑ,<Ñ¢MõÍÃÅ×ïd43 E8{X·ÆŠÇ|ö°úyþö»«×÷—¡Ù<.:dóonn¿¥CŸ·w·ïnÞÿtu©ùÃÍÝ-Uß_¿»¾¿¾}{}¹à±æÐ_¸NtxwóÃ5•Þß_}øpuùëÃ÷×.m}9“¨È?ÿÊf+PûûHëÙü`7FÌvJË@+)}ÍöâÓÅÍ€VÛuÌ~JÄ
”À2Bòè4[bÁ€+F<ˆ$ï1]pÎÆe8[„Œš¸q‰â-—pe 5}µ B)¤õÉ&Ëk4Ì×ï„h‡q)Ü‘èa“‚%9ŸgyVgÉ–~TiM…b_1//y</ +W›'»Ô–ÏiY¹!Ü·Ú§ËìÆDº¢ŠC•åO4PB5¿¡¬|ö׊<Åš +ôpFئOIù¢È·¯#!„3„Ü4!ÄÂI‹¹ÿ&VT²“ +¾iŽÈß.BÚc ZúÜl%Lêúà³sÏ×eRÕåe<?,ëMž1'"̱/ƒ0Ã4K/ù<xà£`Aùð†šn¯pQ±¿Øüîþ=Ðò€Ú®òWªNòêÅYlÕT›¹ÑýüÍž…Õ*_²zSFÑn±©¢yúç~›-1FIh/©6Ûµkfqîkí†Éø”YýJõUºôÄ1È°ÝRõc:j’<©Qhn`êVø•óÛ~{÷áêæ6 jò,–VEêHrœœ¶Ï~îÂ"zÛ¬pXA‘†¨Ò?í96À^ÛM9;:Sú"—,u„&6ߦɚJÖ×A´íÁÄ>‡i³PK¿,nÐ"Ò +Dßt&[ƒ•ñ7œê !Žø”kÖÐvÔÉÍ…µÂÂsì¸æ%±$+ÝGŒõ)u†YB`K|¤¢hÖŽR"æ¥X<™‚Œ€Ë§î[ÉKC¿hw°!C´í:¥*!d/FlÜ–HF +Zmƒ$ª¡‘£í®áh(ÇÉ`Ý +ƒ_ZÑú˜ žM-¡6º›YþO¼ Aóý¦A¿H´m9´)ja¢ÙBGsûÖgÍZ‰@† š“qHlLg±Ï®¼#Ó` +ù›Q\ÓJnh‚~UQ™ò,í’W*{ÄK²ÝºßŽ`]l·Å…'¨u }lnbƒ +³¹O¿‰Š™çJ‹µ“õ…£ +µ<tÁ +I€wóˆÊPdÚ›f“VY±QXš€é³ç9)”¿ˆ—ÐX°k(Ò`B±ó$T`®˜avaÉa~}¸yøÊ
ù‘~£8W`…<Áí¦ó›º+ +›Ù _«:ÝUÔ²Jêä
Ø”GT‡åÆuw MIlþDzöž|_f-72m? OUзÈAE%¹ÛïAÍïéë-G«óËçwŸÆf€ +”Ò±ó_ƒGúT¯y‘¿îz#,”¾QW¹Kç!Z£ã° `9|N·Å~G[%h±Üàûv“Ì'œÐ€$TûÃÕ-õÛ“™êbYl©iÙN}ìH9‘Òl€Š]¶‚p1Œ0Îæÿ¦]´ ‹ˆ˜ŠÝF‡Mò±DËg1Ý}T`–xœ…CûCn ™7íÛï®îÆ !LGqØž@.ê„õ‡E"ŽCØ@P)ÙìÒv§&Htgcr58S=xK†°Þ‚&ãGHD³h^g*›cÀ_€÷³õ uà +"`ñiæ
Õû.nÃ@…q“X5aq•VË2Û»yLñph]L(ÅúZôXc¼ÀÙM™AÖ&aUUØQt"kkèϨ<—T^•C8ÀvP
DŸ +cÎؾ¡:'È`´Ñ´pTR’‹)°!ËÕÚ<ÕÑOÒrlŽÅ\M3o¨F¸wÁ¦!—‚õ¿Ãþï[£DkOÈ&ñÃLÖ3ò$Öý‡ã~>Ö"<RŽÂiÓ7TçŒ65ØH(¡ä¬µ¨&°æ©zn‚Ñ +ËÁ´íªs‚F›Fìï¢È§ÑÖ¢š@›§BŽä¡Å¾ØfË‘ì-`©WÓìªþ]¸I¼?Žº|jvsÝ=/^a~Âc|B𑿦°¿²‚#ývpÎçîøÜ÷!¬è\BÎ×–t +VžþŒjÃqGa;Äá¢)ðôV·I7TgŽ6 +« ŽÄXµ©Nê¡êOÿlð_’r…×Öýƒuvƒíã´
Õˆ$måÓ endobj -1889 0 obj << +1895 0 obj << /Type /Page -/Contents 1890 0 R -/Resources 1888 0 R +/Contents 1896 0 R +/Resources 1894 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1864 0 R -/Annots [ 1893 0 R 1894 0 R 1895 0 R 1896 0 R 1897 0 R 1898 0 R 1899 0 R 1900 0 R 1901 0 R 1902 0 R 1903 0 R 1904 0 R 1905 0 R 1906 0 R 1907 0 R ] +/Parent 1893 0 R +/Annots [ 1898 0 R 1901 0 R 1902 0 R 1903 0 R 1904 0 R 1905 0 R 1906 0 R 1907 0 R ] >> endobj -1893 0 obj << +1898 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [312.6233 664.9538 381.2953 677.0134] +/Rect [280.2146 599.6322 375.7455 612.3694] +/Subtype /Link +/A << /S /GoTo /D (root_delegation_only) >> +>> endobj +1901 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.6233 360.3945 381.2953 372.4541] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1894 0 obj << +1902 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.4119 633.2165 379.0839 645.2761] +/Rect [310.4119 330.5066 379.0839 342.5662] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1895 0 obj << +1903 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [340.2996 601.4792 408.9716 613.5388] +/Rect [340.2996 300.6187 408.9716 312.6783] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1896 0 obj << +1904 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.1051 569.7418 396.7771 581.8015] +/Rect [328.1051 270.7307 396.7771 282.7904] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1897 0 obj << +1905 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.3548 538.0045 389.0268 550.0642] +/Rect [320.3548 240.8428 389.0268 252.9024] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1898 0 obj << +1906 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.1386 506.2672 427.8106 518.3268] +/Rect [359.1386 210.9549 427.8106 223.0145] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1899 0 obj << +1907 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [429.9426 474.5299 498.6146 486.5895] +/Rect [429.9426 181.067 498.6146 193.1266] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj +1897 0 obj << +/D [1895 0 R /XYZ 85.0394 794.5015 null] +>> endobj +606 0 obj << +/D [1895 0 R /XYZ 85.0394 560.3013 null] +>> endobj +1899 0 obj << +/D [1895 0 R /XYZ 85.0394 535.1807 null] +>> endobj +610 0 obj << +/D [1895 0 R /XYZ 85.0394 416.2201 null] +>> endobj 1900 0 obj << +/D [1895 0 R /XYZ 85.0394 391.5178 null] +>> endobj +1894 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1911 0 obj << +/Length 3073 +/Filter /FlateDecode +>> +stream +xÚ[[oã6~ϯ0ú²PqER¼=N»™nŠíÌn&Å.ÐöA±åD,¹–Ü4ýõ{x“EI¦fÐ „&?ùñððR¼Já?¼bqEÔJ¨±³Õf•®¡í»+ì0‰%CÔ7÷WOÅJ!Å _Ýï²$J¥Ä«ûíOkŽº éúÛÞß~÷ãÝ»k‘ïo?~¸NK×ïoÿucKßݽûá‡ww× –¯¿ýç»ßßÜÙ&îd|sûá¶FÙ?„Þݼ¿¹»ùðíÍõ/÷ß_ÝÜ÷¾ýÅ)ÕŽüvõÓ/éjn•"ª$[½Àa¥Èj•1ŠXF©¯©®>]ý§8h5ŸÎöN¡œÌt !ƒ”1¥ØJ0…8%ÔtàŸM]\'T¤ëîõP@?p®Öö¾ÇƒïFJ”ê÷yÛ6TCÁu,©ƒiùSð¤5øm±ËOUgkËvF•"º3„“±ËËjFf(S؃¢¦#ØAÛ*ÿ½˜H8R„±7°œ;/ù±žSDÉÈÈòÛ³X£«n:ýé*¡’"•b˜ F€1b¾*÷‡ªØuWl-)wóƒÆ½çOeÝÍÙƒQ0^hÂkŒÆ(À‘P"»ÀCJ†(KC<7=J«Ý<›çdÿÇX±RH²TÆ{ÐŒâ€/i†$[ÍŸŠÂöŸd]ØíæXº²©mE³›hR’I×mCûGj3†x&=#Êzì"a:„f¶ñø¸²…»·=~ÁÝ©\ëîæ옎žÐˆÇ&QÂd¡Û{Ô‚!Si–õ8Æ%C0EœcCÔeŽõ¨óµ‡ÝX3NMtqÕ=jFwH3pW†ªß’dÎ1Ë`Ï",SHH…£,søo§r¿€ee\.ŒxZ0d*-Î2ÆPJ…Z`Ù +[¬ÔOˆÈ/`/–km=öšAÿ…-÷ñ`Z +s—@‰\ç®1·ª²ílÉô +®7 Õ|`ÄeÿüÌo:fzÁ¼æð½ðÒœ*§?×›1g“©›ã^çrºÊw‡ñ±u>AP*y6Ê9e±½È{™¶ÊØÂ>{ˆºÌü5 ¾îßÉsý&¨ÕÝ£f”Ñ|Í$L@ûv…Ý>Fºüó=Wûä +vk©Kzk©Uó`zêB¢ ù•]Š ±tšú›Š~¿äm0I( rûÓ-,½N»wœ!Õ['þâ9šLW£„÷KšÝÈÈ~²Ñ¤nú×zÞ3KöÁZ´íÓjsÄdžSîz;jë{N'•&ÁœKøm71{’q™—0?`hhyEXé@&AýcgLI.œ +endobj +1910 0 obj << +/Type /Page +/Contents 1911 0 R +/Resources 1909 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1893 0 R +/Annots [ 1913 0 R 1914 0 R 1915 0 R 1916 0 R 1917 0 R 1918 0 R 1919 0 R 1920 0 R 1921 0 R 1922 0 R 1923 0 R ] +>> endobj +1913 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [286.0435 295.6317 354.7155 307.6914] +/Rect [257.6971 712.9917 326.3691 725.0513] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1901 0 obj << +1914 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [339.144 263.8944 407.816 275.954] +/Rect [258.7928 682.112 327.4648 694.1716] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1902 0 obj << +1915 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.952 232.1571 405.624 244.2167] +/Rect [310.7975 651.2323 379.4695 663.2919] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1903 0 obj << +1916 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [322.5463 200.4198 391.2183 212.4794] +/Rect [308.6055 620.3525 377.2775 632.4122] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1904 0 obj << +1917 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [331.4327 168.6824 400.1047 180.7421] +/Rect [294.1999 589.4728 362.8719 601.5324] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1905 0 obj << +1918 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.2812 136.9451 429.9532 149.0047] +/Rect [303.0862 558.5931 371.7582 570.6527] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1906 0 obj << +1919 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [414.4213 105.2078 483.0933 117.2674] +/Rect [332.9347 527.7134 401.6067 539.773] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1907 0 obj << +1920 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [330.3165 73.4705 398.9885 85.5301] +/Rect [386.0748 496.8336 454.7468 508.8933] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1891 0 obj << -/D [1889 0 R /XYZ 85.0394 794.5015 null] +1921 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [301.97 465.9539 370.642 478.0135] +/Subtype /Link +/A << /S /GoTo /D (boolean_options) >> >> endobj -610 0 obj << -/D [1889 0 R /XYZ 85.0394 725.3455 null] +1922 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.137 306.5695 299.809 318.6291] +/Subtype /Link +/A << /S /GoTo /D (boolean_options) >> >> endobj -1892 0 obj << -/D [1889 0 R /XYZ 85.0394 697.9265 null] +1923 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.8055 244.9695 239.3365 256.7701] +/Subtype /Link +/A << /S /GoTo /D (root_delegation_only) >> >> endobj -1888 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R >> +1912 0 obj << +/D [1910 0 R /XYZ 56.6929 794.5015 null] +>> endobj +1909 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1910 0 obj << -/Length 2986 +1926 0 obj << +/Length 3034 /Filter /FlateDecode >> stream -xÚµZ[Û6~Ÿ_aô¥ æò"ÞÓî$;Å6éN¦Øš>ȶ<Q#K®%w:ýõ{x“u¥Z4E˜"ÎÏ…²Âð¬¸@BS½’:A¾Úoðê ÖÞÜO³ D›.Õ×7ÿxÍäJ#-¨X=:¼ÂJ‘Õãþǵ@ݼþæÝÛ×÷o~xxu+“õãý»··Êñúõý¿ïÜèÍëï¾{õp»!Š“õ7ÿzõýã݃[žÇ×÷oÿéf´û™aúp÷úîáîí7w·?=~{s÷ØÚÒµ—`fùåæÇŸðjf{ƒÓŠ¯žá#¢5]oÎO3ÅÍû›ÿ´;«öÕ)ÿ%\!N±Ú°)?íe‚$!@$¹F‚QÖz™’)/*ãå}ڤ۴Άæj8cɪËr$8M¦ÁÄI"û’ߟ²]~x¹Óðºù˜Á€éuórÊÜTup¿†n½r³[Ou©³½ª³#©›êœ—O]Æ0ø½*=ÃÐ Báõc[7×WUQTÏ=àœ37Æ„S¤9†Þ8!a -µ[A²Þg‡ôR4î€`Á“¨xEŒ`éÁóÅyÛ|11ª‘RR{ª¯?pÖ_Þ’uíÆeÚä¿zñy¹9fÇêüâö›m‘î>m÷4õ–!³±,È-¿žÉ†¬Ê‚œªq0Òb }5é'ï¤Þ†Nzë¸×ðdýkZ\Œ -ŸÄúcî2"9S@erÙº‘©`LO¹¾?øÕÌÓ‡qÚ -/ô]ªÈÁTF"TéÏéy?j7¢”ó¸Ü@4!·ø¢X¨¾Üw4Œñõ1KK(î—Âçôƒ›÷·Bå@í¦R÷ã”·•ª/[ŒÛÌŸØ?N€7$±Å[ØêÑþ@Ü”ÄÙ -ÇÉÜ¥ÐâxYŠEU}‚äô®Üâ!Íw)¤>ÂéŸÁôИŠJ87çÛÞPIüù–xdœYtQŸ²¦i_)+7™–õ³+}L)…iCŠi$”bÞºÐzLxÁöÂÁÏÕ¥ðòSÓ’yÜLY¦¢3SÁÖ¶ÊÍ…€D%EX‰¤_ðC •ígÑŸHƒ E—jý-UýÆ¿Ãøƒ¡ªÁ -bœé¸ô@4!}xA‹öÅÿ÷VS[¨.ÜщEˆ™q-¬)·`àkëp…d¬ÇÍj™37eÔY‚ÁbVê«bC[TOnåæøçêr†.†$LbZx®v×Íäþä;¯ì ºIi 쀂Wö´…÷ÿ{ý€ÜзäÂÝEÂDþTº[Š”E@Œ›lYí -ˆ‡ñ3Ó¥š?3-UïÌ4ÇÓÆ»sÔÁ*áJ´TZôƒº@ŠŠíÙqáÇG‘r_íìeJ(¸«N‡.®wâÊ\è¼¾o¸Ÿ#Õóž†RW,äÌ+MÄËŽÆâÇCvxM ‘2eBDb IìUŠP›Kt%¾ò…† -GÑÎýœjOÑ—µ{tï -´ÃÊ–ö×gØ}VšÎ
sß*Òçj³Œy=¬|ÏÉ°·B.ä@E,µ\ÎÎœ[þH©>™P…jóqcx2]d0™ÉÂÄßûuû5ÓÍîÒm¸à -íè ’Hˆ$èpLkS‘NÞ¢èk‚7ao‚—†|#ƒ¦ua.î&ìá’Yèè9øb¨Ó5[p‡*á@åìümãQ³©óßÇQ‚1„ù‚hBþU„B˜_z|ž[¯);â¥BŠ39{ÿÅ`C -1†Êü5 êh<œ¢6_¢Úz}*-spéÍÊŽ|Áú×?B -u %º-Õ‚cnq&æ_±v¨" T1÷eÃv:1_U\l šÛµT™¾“¾ØÏ·«òÃ]†ÊKˆÈWw*‘¤àô®ê±¯î~ÁÖ1ß?ñÕ=A V:îó–jI‘·8¼°FË…{]ª¼Õu‡Ì‡ÍtüÉPÄ5Uqé-Õ„øþ]˜D\&¤/ÿóäסÑ& j,æÑ'…H™ô¡-Ð/˜<æ;‹6>.79ôPFßR-h2æ…›”ˆJ±pÛ!Šüåª'êìRSmê*ƒÍ|uOXTvK4Þ‡šFRqÙ“þY‘vµa ZJ)‰@M¤•ŽQ¤yò¸Á#®8ª`ÀÙ9Ý“Ä5ð™FW¸jãÈüõ„,øïoEÿòßj_ÿÚP¦ÔÜ• -% -˜x¥ŒâZŒÏ†ÒXÐ Õÿ#¦
Èendstream +xÚ½ZKsÜ6¾ëWÌmGUo¹)ŽœÕÖÆÉÊÚS’5¤$Æ3¤2œ±¢üúíƃÃ7Š³V¹ +[v.þÓLØêuCÇì'•!ŠK½Ú +=Y‹:½Te>µÆKq|BÀ¦ Ab-ªL¬RÜ©ð3绿z'ÛV–Ä{ê0ä×rç1“p·—2€ÜDŽyéós^fy:FA'/tÄ +Á‰åšXZfcsY"TÕ©wé§|LE!" +mZ“ûŽjÒ!
g‰ÜFM3¹Ay=ßÖlêâ|Ài͈¤\ÎKÐ FDè°Zk"Œ0]>äqcžB%Ëëí¡x>U骇3ð¦ivl¨IoùÄ£ „úEÙWV@¸ŠòŽ²¾óð¸ò•Û–Ú
~Aíá¼^ííYAŒ´LCˆìË$&Œ-0 ‚äÌå¼m’s°YZŠÊA3Œ ¸MÇCZÖà^̬7ÇbŸo†{Á`³ÀÑä¬
h(G‡vBMLG/Ǻ)uzRXà~’Ì°Ï"ámçÈáóºf¢^2`ž¶ Às;Ѐæ¥Ì5Ï<¡ +½••!ÂR5ÆÀIÿnÉ?Å"|^ßÁ¬“$SÃ,SÈXô¬ÙЂý¹f)&¡¢!í›çX5M²ÕÚ¢cµ©«tH3V f~ù5²~—h^%8ë +ðer¸½µáÄД³ªib1¿l«0˵€_Ðy8ïç‡4xñ×x?0küµ$È`¶y¾áë†6ïmÔß" +W|>ÝÌGMFš_·A,ܽ–Äkº+ß ½¿'@ͼ‰÷Ñî¶ZªÈ:¨¿¤¡±(Ôú¡:øæú9ßçŠòÑ?§¾ +*øðz&=ŠÑ®FÑpùpó]† +ŒÎê¶#…ß®Icºšh¶ùµQÓ$nPñ¾{Saçêc±‡aÓŽ·³4¨ :lVxPXÕá&ÄD8k[1\\ÄÃ÷Õº?[9˜7¸I0¨Õë:?À¶ùúK±ÛùÚÇ<ýQç4t%z)
žßP N5´–[È +á÷¡ÝëXøÜV%Ò÷ñÔ„ò6wÓçüw_{ÿ!|,ÙÝO©ëj[¤Çè +oâ¸QŽP»Ïc„jážûV##Ÿª7²Mndw¿Z›ÔÕÔÓËNψ‰†#¯|q¶úçrœÂÚp[zFìqíî)¯Á "Ñg}®Õ¾±Émð¡m2|>ÕH.¬a(9ÏNþ)Á„©NüÉuËEÈúP¯ÄzOð+²Ü¢+H*ÑFìâg•¬9k°´Ê!Õ¾%õ†ºW_uA+èK///—–¯ÉÀÅàýBHz^ìö[_ÞG_q¤ZŽË㉈µ¢,Ž0ºªø³º?ŸƒøÙÎñ ‡ZŒàñ×®l9qöUG]ÂLÉ+T,üš¦š>’TÏ÷=WÉ œBFˆy ÔˆÝdïædÒ•ÁÇBÓÎq,tdttŽcì‰Ç±†ôÇ1¶@æPMý@TažÈØ’Uûc#¶E÷Ð4t‡&g”pKØ9f’^2÷”:º™uºÇïdžŽOÕ¡@BWœÏ=¸… ôLzºAOô@*šø endobj -1909 0 obj << +1925 0 obj << /Type /Page -/Contents 1910 0 R -/Resources 1908 0 R +/Contents 1926 0 R +/Resources 1924 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1922 0 R -/Annots [ 1912 0 R 1913 0 R 1914 0 R 1915 0 R 1916 0 R 1917 0 R 1918 0 R 1919 0 R 1920 0 R 1921 0 R ] ->> endobj -1912 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.137 624.1678 299.809 636.2275] -/Subtype /Link -/A << /S /GoTo /D (boolean_options) >> ->> endobj -1913 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.8055 560.4651 239.3365 572.2657] -/Subtype /Link -/A << /S /GoTo /D (root_delegation_only) >> +/Parent 1893 0 R +/Annots [ 1928 0 R 1929 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R 1934 0 R 1935 0 R ] >> endobj -1914 0 obj << +1928 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.1075 296.9881 397.7608 309.0477] +/Rect [352.4539 693.8338 426.1073 705.8934] /Subtype /Link /A << /S /GoTo /D (server_resource_limits) >> >> endobj -1915 0 obj << +1929 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.1555 265.057 427.8275 277.1166] +/Rect [387.5019 662.8374 456.1739 674.897] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1916 0 obj << +1930 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.6164 233.1259 422.2884 245.1855] +/Rect [381.9629 631.841 450.6349 643.9006] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1917 0 obj << +1931 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [370.2338 201.1948 438.9058 213.2544] +/Rect [398.5803 600.8446 467.2523 612.9042] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1918 0 obj << +1932 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.6948 169.2637 433.3668 181.3234] +/Rect [393.0412 569.8481 461.7132 581.9078] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1919 0 obj << +1933 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.7331 137.3326 295.4051 149.3923] +/Rect [255.0796 538.8517 323.7516 550.9114] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1920 0 obj << +1934 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [283.1811 105.4015 356.8344 117.4612] +/Rect [311.5276 507.8553 385.1809 519.915] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1921 0 obj << +1935 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [287.6042 73.4705 356.2762 85.5301] +/Rect [315.9507 476.8589 384.6227 488.9186] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1911 0 obj << -/D [1909 0 R /XYZ 56.6929 794.5015 null] +1927 0 obj << +/D [1925 0 R /XYZ 85.0394 794.5015 null] >> endobj -1908 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F41 1218 0 R >> +1924 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1925 0 obj << -/Length 2961 +1938 0 obj << +/Length 3196 /Filter /FlateDecode >> stream -xÚÅZKs#·¾ëWèHU-a¼ßäµäÈ•¬r²}‘Ci²$Gæ++¿>Ýh`8/½åMÅ[.`€ÐÝøºñ”¸äðO\ºŒqåõ¥õše\d—‹Í¿|‚¾.D”™'¡y[껇‹on•½ôÌi.V¹ãΉˇå/³÷»þùáæþj.3>3ìjž>ûîîÃ÷Ôâ©xÿÓ‡Û»þu}eõìáî§Ô|s{sóáýÍÕ\¸LÀxg81àöîï7Tûáþúÿ¸¾¿úíáÇ‹›‡Æ–¶½‚+4ä÷‹_~ã—K0ûÇΔwÙå+|p&¼——›)–i¥RËúâãÅ?› [½aè˜ÿtæX&µ¹œ+Íœ9F½ÌÏÀks›yf”T—¥ór’B/¿?o}c…€a”jÏ8X·‘YX¶”wÞuW¾Û‚¿aâ–BͽƒÒ‰Ùþ¹¬©¥zÙ—U”{Ícc¹ÝÛe±Ä¯l¶ªvÔ\¿‹rõVnŸè;§\—ªÿ§Ú4 -mMÍðÏÅ®ü•s¹ÈKV+’®Ë§m>G'ÑšyZÏ|–É`Ëþ°»nV †5¤òû?Þ¼§:Ît–¤G}}.¢ðþ9赜&£u•/Ó¸Uè¨6ôµ,ëO -†Òëëë•—36ˆ0 °Pš»ÿžÊÇrO•€Ieô¸>„C¬•ÛrùbÌ”~úxÒg›âAŽµ”À)*â‰ßŠá8ì›”º€9y"k/˜õ*›>‘ÛR§OäFªú„•„CÈÁkRƒFjD….„SÛhÛÕNc—Íöi¬LBttNcìI§±¤Ó[K -Û±˜:wO—T¹oÙÞÈŸ±}8/Ù¾8Z‰¿È ÃDÖ× ÷fÓ»ÐHÑd8jr€˜äÐg -‚)£}W‰¿>ßßÀ”Þú¼®š#À¢¨…ìZ;¼$Æîá¼_ -|IþŒåÃyOÏŽeaaÕô$¡3jæšž7Œuw-¡Ó°KB'6jþÙŒ1=kä´ÐP‹>ϳZuÕøŸ¡.ÓçzšI¡&€‡9/B-K&©^Ÿ¶|0ëŸGâÌ7r’™Ö¡?Ó$äLÆ”<ƒ¸£ÌÄ ®•¯÷ó?“éŒe.sS$‘]°I`õÀ$Z*|¬MÒ,ͽš +xÚµ[Ksã6¾ûWè¹j…àIÉi2ã™ÔÆÉz¼—Mr %ÊâF"'"eóë·A<LèTœr¹‚Ýèn +"d!2”)ª¹âH`"ëÃ^ÜýÄbV´¢¾»½øú=Ë +©Œf‹Ûí@–DXJ²¸Ýü¼ÌE— /ßþxýþã‡ÿܼ¹Ìùòöã×—+*ðòýÇ]™Ö‡›7?üðæærE¤ Ë·ÿ|óÓíÕ¹•Yß}¼~gz”ù8#ôæêýÕÍÕõÛ«Ë_o¿¿¸ºõ¶í%˜iC~¿øùW¼Ø€Ùß_`Ä”‹G¸Àˆ(E‡.œ1׳¿øtño/pp·trþF”etb9L $H(%¹P(c”õX~)Ÿ÷%Z7˜„ãåõ'óY·¹»uÙ!m+¸")!èìÓ4zúë÷”ôY£Ó¼—u»+Ûæ7'Ëã%‘ËrÝôŸ›Öt¦×\TuWëb¿2ק¶Ü˜V×e´ÍþÁ>R‡ÒŠ:Õ›òhá;{»íŠ®Z¯Úîtg:þhêŒb9[¾oŽnX€Õëòú2_VÛg!³Ó–LJ~•;“Êê¡WBÉeanü~*O¦¹m,øJùãã㥢K4˜bÝmž}¬ºý¡qóÎ|ÞUÁ45hÉ°z†õ©êª«Š®4X«ÝéØ‚~S¦øÙ<u•œeá3Îz½G´1:ë›E½ùZÈ8µ@:
ÔÔŸ²n6v¤¶líÐ Ì‚wemZm }ê&Dè ®úI‡•Û³>ÁƒÍE?íðyh<Åtï@Ä>f¹ Í@ +4HZ3RA1ˆpŠÛ§ªzl0ƒ0)sàêÐsóx¿0›é?cz,×ؾ~¶Rï@$CDŒuâT Áf¨à@3zD²´çÉG1˜ñò
P ò9”sü×U}¿ªpxD<{3ËiZšÐ! gÃn*ñט'Ì‹L/ÁùÌsu‚uL œ7†f¤Xçð3vÇrÿëp†rš©´<jF“XZ’xB*Ä1ÎÒÄ¢ÎÏ£ÆÞÒŸEw:N°OäöÁ€¤5¡HÀ¾Œ"ÅXjòúìí+ÊÅyæI•±Àâ~ÆöXîŸ` Ï9I{Á£f4‰¥¥($ÊU®f8@%èPcuOŸË8òa$9§i
<jB…Àí$"Ôáõ¹ç,
ŸÃp’|
2‰I`lŠv?cv,÷å´cŠ"ƱJ;À£æ4‰¤¥iG%To'¤i7@%hçPzÄîXÔí¶ì3ÎUÛœŽë˜yŠ¾<ŸQ£&´˜G¬·‘¯C¼3¶Œ¹•n.©Å¸;RÜsøÃc¹ç¸—OFaš‰´<jN‘HZ’z&Y(:“ì
Qç©çQgܵzȦ2>NÄŒ5¡È8ãc*ùÛØgÍg}QÂx2ë“”‘À♬¯ÇÏØË}19¦H`*ÒNð¨EbiifRœ–&à +ŠpØœä ÅÏXËýäàCÎÒnð¨Ebii²19GÁgP‚”ð×T·¸IE<(Ö$|Ý"ƒÝ(Påo%àtTJï‡ f¦l ç<m}$õåd²å˜%}àAi-"YiöarÉg²¿!*Á?‡Ò#žÚrõÒ(¨YCõ¼¥”ñ¨ mÂÚ¨Š¡+Pçu6⣢˜#Bd–(0°w†'K`‹Ÿ™‚XîË™È=„¥]á@3jD²’LÔJyî{6ÇÄ!ê<=JX7]µ}:Ç=žÝ&Fë‚”ÊY8ü넿ȈÑØE’°ü,Õ¨b ŽÉÀÐÕ<~ÆæXîËK¡Ä)–ž{šQ$––f×5åܶ;D%ØæP‘£&‹Œ$ÔˆIhBèU,Ôào Üô.«_µ’§_µ(%[ç^µhüŒÙ±Ü—sNæ°9*–ž~šS$’–æaHå3o˜ ã,Hw¨êÕ±ÜËv·êªCÿý®þB°ø2ÙÝ£»ãSŒuq²Dô7<©¿Å„)R†„ÌóÀ‚ž°DYÂêF@XÝ“‹Ã€$#r¨U‚[žÖ/’0Kkrö%ž€¼‹êT!éfJ«ÉJòŠJÈxrÆÒÄ¢Î3Ë£ú%ýekRœí±9¬6ÕV_@ÚSÖë©o0(Â9”=Iu<jBŸ°’€h$D*Ô3ÒlÖñ)úÎdh#XŸñïEæÌŠ« (,Y¢š +ª3cí·S¯…á©L¹ã +ËPŽBÄ9Ma +^Nd†xâ\Xˆ +IçÂÀHPåä®fíÄðŒÀfH\å£em¦Ò[Øt0ué9†N—û¦Ø˜–‰ÐºeÒôæ`®:g¿Ù…üÑuØOª>ëoö{hóB¯Z°HL§—¹ìZö´8´ ¦˜“ëN™ÌýÍçöp)ÖC9)I&(ÂGÞÈzS]ðyD‰ÇHö2äþäQÒ#’‰x„û—qÆ#™÷H6˜ï“>€ +óQÜ4[ž°~Ò±ŸtŸÙ`Åsx=Óï`=Ôd¦öÔºßĵé]6ëõéhšUmo¹Ñ·§Î&]ú(|.ÍÒCíç¦)<]IMý.ASh¸Ó~ïów€iÕ¿€}ˆ¢kU!äRשß\® {dm±.ý`Ë]ñPº¤?šÏÌ"py„É¡³çs +YÛÎöšWl&GLü6a°\ ax¬z¦CëÎ'd†ßÚ-¦gëÎý¯wE}ï²Èªªfc·_m¶}¿gF¹7B6û²m}ueFÜ•ÝÎWÐY©‚ZK‘(« LXpéˆ÷\pÙ±ô¯\l,eJ ÞdrôÖ¥Xö»rý›éð‡ëÍ•¸³æ¬ÖÍÆM‹û‰„/®w
.çõŽ{“ +ªL¿ë¨¿üK¨çŸ‰A2Ǥ<³Ñ\ x8sJéY!Ç¥šýÍT¬ûÿ‹œÐGendstream endobj -1924 0 obj << +1937 0 obj << /Type /Page -/Contents 1925 0 R -/Resources 1923 0 R +/Contents 1938 0 R +/Resources 1936 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1922 0 R -/Annots [ 1927 0 R 1928 0 R 1929 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R ] +/Parent 1893 0 R +/Annots [ 1940 0 R 1941 0 R 1942 0 R 1943 0 R 1944 0 R 1945 0 R 1946 0 R 1947 0 R 1948 0 R 1949 0 R 1950 0 R 1951 0 R 1952 0 R 1953 0 R 1954 0 R 1955 0 R ] >> endobj -1927 0 obj << +1940 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.2254 245.6678 454.8788 257.7275] +/Rect [352.879 646.8005 426.5323 658.8601] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1928 0 obj << +1941 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [362.4163 214.9757 436.0696 227.0354] +/Rect [334.0699 616.1977 407.7232 628.2573] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1929 0 obj << +1942 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [402.2465 184.2837 475.8998 196.3433] +/Rect [373.9 585.595 447.5533 597.6546] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1930 0 obj << +1943 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [348.0303 153.5916 421.6837 165.6512] +/Rect [319.6839 554.9922 393.3372 567.0519] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1931 0 obj << +1944 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.4973 122.8995 404.1693 134.9591] +/Rect [307.1508 524.3895 375.8228 536.4491] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1932 0 obj << +1945 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.1733 92.2074 431.8453 104.267] +/Rect [334.8268 493.7868 403.4988 505.8464] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1933 0 obj << +1946 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [365.365 61.5153 434.037 73.5749] +/Rect [337.0185 463.184 405.6905 475.2437] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1926 0 obj << -/D [1924 0 R /XYZ 85.0394 794.5015 null] ->> endobj -1923 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F41 1218 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1936 0 obj << -/Length 3435 -/Filter /FlateDecode ->> -stream -xÚµ[Ýsã6Ï_‘·:3k?Eª}Ún³{é´Û^6}¹¶Z[‰uµ¥Ô’“æþúøeÑ’©Ìto:[Q$Ä -û8ÃôöúýõíõÇw×W¿ß}q}têK GEþ¼øõwr¹µ¿¿ /´¼|†’Ñ¢`—»!y&ç¾g{ñéâ_á`Ô|:µ~BêL2‘ÃJrà‘ŸYeš)JH šqr\dF§Ùá—Û~Ùï˦»¯öWT/–]{دªåS~ª>¸(äå`Ž‘ h, HBA+ΉŽDùTUÖýÆ5ÖU·Ú×}Ý6¶£½G©NÔ*TF˜(@€y…Nä(ŠŒ -Åܧusª3Ï%,Ù@NÐÆŽí.mãv } Ok?âjµ_õDäÓ<S§òÎ2® -Õùy* -Åãé¿Œû)q2wÎ2Máè=5Vp`Çu¤hj~Fç1ßWCË"?ÅÓk¨fsK£M’LH¥gÐ6 J ÍS5uÜr’i)Òx¢ "Àq™i.y,ÁÿpÓ§¬ý%=9ðÖ°@…ŽtM¹7O?£ö˜ïë1§ŽO/ šdÄ-9›*0ksªæ<θ«›å¾ºßWÝfÙ×»ê]„]ù×d·¡î÷/cZß9Ž—h–“\¤UT:ÄqRžIT¬„--l±Á;Æ0%Í©ŽK@,Ðψ8æA…q£rdnÀÆi{{ªIÆÜ’“ºÈtÁÓG˜'2{û¯{ëÜïÛÝr]ßãÄ?U³ªºq8Ç2¢OʈÆÂÄ 8%)óHƒ¶-Rx.b¤àȤƒ£„f²Þ_Íé4Î)Ïç@[:T;™S8òôŒ¸F8DU=Ç9…‚@ê¤QZŠ/‹Apbñ‘äcÛ“”½µ gl8ÏA`ˆÑ1ªÊ -)Ùk[ :«tÈïve×C,>6‡ŒA枬lÖœh4Ê›µÛ–OSá•É©B$¿Ú´5Êe<giw'-œš®÷©¬·åçë/û“#ù¿mãZÛê©Úf°Šôìž -Ú¹scH•ØÕž -õø£zµÞšÚýËTd,•HÏî‰&f#c–I J4ý—ÉÉFJœFÆ*ª‘1di¢‰¡ -ÉÈØÑÏè<æ{&JÇÅXkQ<½òjFŒ1·ôùA1¤™;?ŽD ¤9"³õ}»\7]WÆ0#<9s OÁŒJЕåÑÜÿ†[•ƒ«ZµÍo„°‡ƒÝ²kÛ{ßîmcýÒ”»ze_¾ûø ¼Ë‹í)·]k[‡®²~S;Ö?|°·õlÛgÛ|*÷/uó`9n¯è7}g_-ÆÁ¢òNcLj+·+{” -R}º~gÛ -©›þ}3Y¥Â¨›Õö°6ÚÇV{úÜ>™\©ÅçCoGíŽ0-ÓÒXÃ|±þÏ¡ëc>Ô¨û•ë`fÄ"ÁX$șĸLÆÝjS[/J¹ZµÆìk³»¢o£)™aý•ë«wnWõ%`¬´oÅtÕ8ñDœaª)Ðjr6¨óäËý„O>åŠZ{-AÚ‡ªAqôTL dµGuž(-† :+8 -’ˆ¾§ÉUDi9F¼Pœ4³x»h¦eì—ïºK¸ÈrÕ*vðÅ9· 3&5›w’d’žïªgÖMLÏ)œ…Ôg;Èk=Ø¡C˜lÍÞ·m¹¶-롱eôvgßz¯¿=…uÞΓÚbfÐ8î¡Î—¸kAO -eÍ«} -Hˆ!‰µNåûž~Fÿ1ßW{@¡(äè\§
¨æq;[_ƒ:SV.2Á• -?`e:WKJY|çëƨÂ/¦piÛ?·ÛzUOÞ&Ü,Ç;¹û«ÈÍXáÑÛ½)Ÿ ¹èŸ[Û]nÁÓ4%f¹¶cñ{»î싉êáù°/›¾¾¢§@Çj[Û|
_,Ð ±¯6½ëkíDG ³¡Ž/¶ Û
ÉAœ©Ìs£7¾fzZp7ÉÍËñS·´ -üøÙÔ¸°/ì=ÃÈÒLfò/VðÅ[ûaW¹ïpµð¹¿Ò‹Ã¶:šHáo´ãä%.ä¢{ÄË©U²Vë73σû$ ©ÊVæ -á»îڔ̀‡ -ö·®o]5uåúŽ@èì -k µIà¡Çw×{ÑÞŽ‡t}vóû+£ —d<ŽRŽ96¹ÒCæÐ[ƒˆ}݃”ˆü‚-nîí€+OªK„—€Zå3Ð?U×ÛA³+<ãÎ>ýÕ~ɲ/c"ú-L=ÌtkðÖ>,§Û»O7Üqõ!èÀ)ˆIo'6ö¿9Ù2n^â͆ø¾üT6q©j]õhÔÆ{¦þÂbuü³ˆ‰³þ9sýí¿¾8þiŠP×úÜWà˜8¡p=ŽE!mà9›ýR†K‰endstream -endobj -1935 0 obj << -/Type /Page -/Contents 1936 0 R -/Resources 1934 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1922 0 R -/Annots [ 1938 0 R 1939 0 R 1940 0 R 1941 0 R 1942 0 R 1943 0 R 1944 0 R 1945 0 R 1946 0 R 1947 0 R 1948 0 R 1949 0 R ] ->> endobj -1938 0 obj << +1947 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.6945 737.4993 433.3665 749.559] +/Rect [364.6945 432.5813 433.3665 444.6409] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1939 0 obj << +1948 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.6372 707.2169 443.3092 719.2766] +/Rect [374.6372 401.9785 443.3092 414.0382] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1940 0 obj << +1949 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.0276 676.9345 360.6996 688.9942] +/Rect [292.0276 371.3758 360.6996 383.4354] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1941 0 obj << +1950 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [319.7036 646.6521 388.3756 658.7117] +/Rect [319.7036 340.7731 388.3756 352.8327] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1942 0 obj << +1951 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.1655 616.3697 533.2211 628.4293] +/Rect [460.1655 310.1703 533.2211 322.23] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1943 0 obj << +1952 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.9978 586.0873 438.8121 598.1469] +/Rect [368.9978 279.5676 438.8121 291.6272] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1944 0 obj << +1953 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [293.1435 543.8497 354.3435 555.9093] +/Rect [293.1435 237.0097 354.3435 249.0693] /Subtype /Link /A << /S /GoTo /D (options) >> >> endobj -1945 0 obj << +1954 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.3035 441.0473 407.7186 453.1069] +/Rect [329.3035 133.2463 407.7186 145.3059] /Subtype /Link /A << /S /GoTo /D (man.dnssec-keygen) >> >> endobj -1946 0 obj << +1955 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [427.0093 441.0473 505.4243 453.1069] +/Rect [427.0093 133.2463 505.4243 145.3059] /Subtype /Link /A << /S /GoTo /D (man.dnssec-settime) >> >> endobj -1947 0 obj << +1939 0 obj << +/D [1937 0 R /XYZ 56.6929 794.5015 null] +>> endobj +1936 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F55 1321 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1958 0 obj << +/Length 3401 +/Filter /FlateDecode +>> +stream +xÚ]sã6î=¿Âo§ÌÄ +©Oªû”n³Ûí]³½$››¶ŠÅÄš•%×’“uïî¿@€”dËNnz“ɈA +„,竼íôfs…~¢”:½»ÃšØ~()دŸ¤BŽ÷¿Ó¬ð®×|»Ø”ÖvHy +O}Dëm_Š}%KðÑ;ð¾ !Z +!\ž6µÖ S³XæÌñü*DPé9¸ê*ï,.[ +Buš ‡5ÁÅÈâ°8A`ÄÆŸ³8ë©G„Ù¿9¤/Òø„ác*Gâž2<FEîªG
/Þg( +2?Ž_; +#‡ÔN[^ +†º.5Ãz;hiò‘° +ðæt'cîýݧì!z +–«%„’÷À>™Tú¶GG&E‹*ýœ£:&¯<gÜJðñ:~au9/4]QS9¤Ì*ryÖô¨ÒÀsM(¼ÖJs}(CÇx¶/e·XR÷âÏp'óÊÕj:×HØ£Pcì)~”ˆp¬ÁªYäÕT³è‰$‹]Cü(óî£ÔD1MÕø3š•j 2¼PÏUuÃã;¦
“Mà4öƒÈUw§ºÀI’ŽºÀÊ{Ò`…Üv›ò#Ø‘0à˜»¿Š£ ÖU¾°|w“üS“ã‚ÓÞ0ð#%åØ;‰Z,9Á“D—Œhó8pX}(í#9›‡24wæ·;sCö‚)XlbŽÆ¶3$…j@Ö@.ŸóÍåf[__²r|dm¢rŽc?’iÀk/zN.¢‹Å±]CiÕP¶äW°UcvóÊw|#¸Q(—²'’WOÍÜaE¯–Ò÷?^½Ÿß}Ä ¦lAB_˜†)`øœW[Í+Ü]‡äáÿ¡ÒSé»àÑš-Ì ÔØ Ë:œ×|"õc,¬"IF~¦äI£Ç‰Îšðcðš7ÔÑ!MPët+¾wAJÚ#… &S¶NTAÌÌÓ˜+%›Q×CÒ˜b<ùnˆ)"Ñ°ÝA¦±2¢ÍW + ¢—ÿ¥Ý_RPä6ã—²ªhôÀDM©3ÜÛƙȉ£Ë¼~â
¨’tºrs$©t^p¤Ê4NuÕ¶Û•û.ä08ÌjÕ–ž‡!À¥äÅ)`° +¼™lÉ”ÑßLDºq +0¾ ç Šÿ¢‡)ÖhØóBï&Ý>Ðhêþónº£B(£`üåìø]I¬²Á´n‡M€y5±CB‰®bç¿uѶ•X;n2á–MÛ]ØBÑ×5;´•ý(xx’ýÕÉÇ:èÿHˆ.I,â‘Ò?sÙfø²)–L¦Uv\îš/<*¿èÞ +ŽœìPÕx-å¿éŸ6‚8êË<|C«ìvkMo¿ô@ý6‚#bk'^µkê$É@ú$é»Xgq1åº ¶¨Êç²ÒOTQÅÊû\/xiN¾º†¥Ëœ×µÛÅ& R£Ú
ðr›Oök™SýÙ³EFÖÚU?IʹÃ~¬+W$`ˆ5¨ŒD¡„Õ–JÉŸ ÉÈðyÃߤ·6 +¥úÎáö9zfkúªž˜DeÃT:sÑ{)Ø•çl9³uÉDD£•&ìÚ.G¤†m +ÇYþ…ÂåÈž†m¨ŸBèºÅzÞêjê×u„t½êIZ”b±EIº&:J,õ¬, sÙ¼èg‚“qäJâºÈmG¶—{ÈŒ²‚lÄ„Nœ½¤W˜¨º¯¶nHý0”Éøì ån4ܶíGx²]uâ\î§,;¦˜ +ëœ +ÜààŠ¿\Ð:¾Ó#þñJoæ£M÷¦¸pì?êìKÈ0¹‚Ì ^È¥fBŸ2wwâxpwbØÐbzYf.ç„í¯×ÿ¤‘þjÓ(|3A·xÀÏ,’bŸx¢4 Û.óÞ/Q͈ÝÅTÜ" à›ùv‰~zD6’åå-/ +endobj +1957 0 obj << +/Type /Page +/Contents 1958 0 R +/Resources 1956 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1893 0 R +/Annots [ 1960 0 R 1961 0 R 1962 0 R ] +>> endobj +1960 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.6803 278.469 357.3523 290.5287] +/Rect [317.0267 683.8431 385.6987 695.9027] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1948 0 obj << +1961 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.5503 248.1866 402.2036 260.2462] +/Rect [356.8967 653.8289 430.5501 665.8885] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1949 0 obj << +1962 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [403.748 217.9042 472.42 229.9638] +/Rect [432.0945 623.8147 500.7665 635.8744] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1937 0 obj << -/D [1935 0 R /XYZ 56.6929 794.5015 null] +1959 0 obj << +/D [1957 0 R /XYZ 85.0394 794.5015 null] >> endobj 614 0 obj << -/D [1935 0 R /XYZ 56.6929 202.79 null] +/D [1957 0 R /XYZ 85.0394 609.3296 null] >> endobj 1327 0 obj << -/D [1935 0 R /XYZ 56.6929 177.4286 null] +/D [1957 0 R /XYZ 85.0394 584.3621 null] >> endobj -1934 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R /F55 1321 0 R >> +1956 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1952 0 obj << -/Length 3565 +1965 0 obj << +/Length 2924 /Filter /FlateDecode >> stream -xÚZÝsÛ6÷_áéËÉ3ƒO¼¾œ›:iÚKr—ø¦sÓö’h›‰TD*Žïã¿]ì‚%ÊvšŽFC -1ZŠ=Ë&W£|Y—(!õ(Lžå#|e*¨D¦'åçbUÕ^¡¡â›Ûê¦ö -¯© êªlÛâ¦üWf¢ÍÖ¯c^R·b±àuµÔ¡â9ê¦c•R:Éñ -ú”‹Ä¤ -ëe1|w£ü£’,Ës’¦Ò*1@v D
Œç ž¸é¶è¨D“[Õ÷bÀàn\@qá—f¶â»{j^”×Åvé‘ͪ]obŽÊ‹Ö$Ë-UPgŸŠÍ³Í¶~æeüŒ…“ k‡ò–Ö&FfŠÇžï8õ²0toO¯üµ~±äÙò-¿‚®zµ›.u‹5j÷ÂÂ_Žè‰Ë›fÇaEÕ@é‡×ϧï¸P6ž´J'³m×ÓhK*~*–Û’GôÆÉGø?[–=~D«à#hÅø×y"l@Y–á¸æ݈\ˆÔô‚<$i’ÜÉ’^Ž‡H,œš`F±AÂÎÛÌÒ±Žñ˜'»#H>C{NR`”參>•KX§• àÄ¥&
-=cÁ)€ -;[•‡•À^óKÕ‡r§Gö6–5Zƃ½ü/=eÍÛ0E¥ -»ªãvÔËî~]Rí—]#•~´cÇ6¼xT .ïí¥i´z¨x.[Žµ8 –ª’Û - Þ(RêQvµm»h÷6%RÔG6æjL·óX5]¤¬ËuÚi²?àÐRP<’ż—E8ì¼i6«Ä9c»ŽlË`’ë½W½EóCb¾ð>r¬)d -"[äžù¿¥Ø‰Í'–#ó‰Ààâ3Zþ]ÁNÛO—ÿ¤Rù9¸RXó0ŒSÌÐÏóƒ¤Øç -†OcÙÝ6*WXšqðýòýû)êGÒ!?EÐ -&:Mr£˜^M¹Û*™ÛÉOåfF©¨¦¥°ôõ¼Zc¤ƒU”'>û2!s›÷[j.BlïbœsY’æ"ÄößÀb7A/Y4«¢ª¿‹é„¢y:Hð(VùÀÈ!¢ˆ
uˆN{qR‡~YjBÇkpŒ5œ˜2‰q&j -"K‡'ækgÊýbÄy„Þc8#“ìéÌ=f=e"JYOPùˆTHÁ=.ú>©5ÎB-Ø/?wå¦.–G×™öîÐÞ·b6ƒIt•ÊÄj¡žòõ6.ÉD¶÷õÁïÁ<£ÐQhœ -D®`$ÿ\é Ç—Ÿ‹y7åVãÝo¹*0ÀWê ð!¾é-¬ôy¬PbGg|…ŒMaò}{VöÉK -îÃ2YSº`ˆ2¤Ý.g[we¨±m;´P -&V;C}Ìf€ãÑ›±8PÕËàešâNí6âë6ÕH炾˜?T_$œe‘ÛÇôE割R?j
‡JsÅ— -Içaú/þŠöæR!2NòHsvT…¤‰PÚ<¦B<f#±cúcÒèê+¡±VÕA¨ÐM½oÚ Ûi¥ÂD¹îèݨaïŠ[‚*ŽÝX…ÌøÜjTÌ3PÔªõº¹K–*ŸÂlcZ|Õç[0éhú¯)Æòô8ÀéÏÐN¹»;&ñ»¶'~Ù’&.ï/®£O„p.ˆ‡Ëbƒˆž Ú›Ù§j>àEÏòýï%:ñ*dYfq¼@íŒúüó }J‚M,Z|yWÍ11 5_=`cYãÕ~K£ŽÜãÒ=¯±œ~´”ã´Ã|ï¡ü2 +xÚÍZ[s·~ׯàdú@uDw`û'‘S§‰Ó*êä!ÍÊ\Y[“\F\Zv}ÏÁeKbEÚ’ÛŒGÆeàà;WM(üc¥‰.x11…$Š25™¯Îèä
|û1³8h–ŽúúúìË—ÂL +Rh®'×· -K¨µlr½øuª 'ç@N¿ùéõËWßýóêŹ‘ÓëW?½>ŸqE§/_ýpékß]½øñÇWç3f›~ó׿¾¼òŸt ñõ«×ßúžÂ#D¯._^^]¾þæòü·ëïÏ.¯»³¤çeTàA~?ûõ7:YÀ±¿?£DVM A + +>YI%ˆ’BÄžåÙÏgÿè&_ÝÔ,ÿ%\hža ç9ª‚hÁ…c`{WG +5ý[uSÝŸ3;m¶¾gs_¯çõ¦\úfsëËnÆ|YWëöXBõt»›ßùîr‹\ùò¥´ÉÚÌXœ°c\õ‹Ý¶ºÿê®Ù¶dѬÊzý…Ÿ3Ø/£†¨B«0îˆ|úË]µî7âf)‘Ì’qürsêì°n?d¨Ã8£eø/Jyµ\xÂÛM5¯];Êd&€¯ÒJ3™1F +¥¸›S†¬ž>ÔËżtœ[`™®ËU…lRuëÕ[_nw7ÿ®æ×6¾óÛ×?çIéiõ~S®·u³vô`~˜â.+÷çvº[Vž Ì_úîr³Y~CÔÕnÙÖ›84p¦®¶Ä‘Ïvå-+Ó¦8Î\pe쀹(;«Ý¶õµy³náê}£ôÅín¹ü0û}W.ý„I$¾ŽÜõ{ži¸k23c†‚·ÚËæþ|&´vÛ›*â‘%4°A®uØàÛû5ÛVËÛÜQr‘¡¥‰ìI¶c„$#V +v*!¿§ÝM8ú!=+ˆ¶ õ‘ „o½Èæš’²d‹Ð5ŠÓ]r^È€ßRƒ€ƒFïÁ]H)1ÊØ!ðRÙs×í‘•_ÎÈÓzÑ<„/xÏX5ö¸FU.Waàí©U9¿«×¡qS-›õ›¸ZÓ‹C‚©q°D™Žn#º† }¨kèô®Üú +¾|W.wÕö/™[´’p.T²\f).H–geh":>„ãÈ +Êk‘;¿!–Ssò¦òä&?† +ï“$ñ€îé{šž™IÃAC€4
$æ)G’Âvjú£5ÎzÇô#æô͵óÍè1O¸„„’nùé—0 õŸf]1oãòÊY!lÜ~õ¾î×àsSwîОïÉ(Xgøo¢5'”Û“¼O!-1ÔìyŸŸ6+ntgÔB£;ðó(Ð +Õ8cHjÖj¦……ší\ÛSà ™‰†Ôª°iH0ýÅ—ïËy;[•-º¯ÂöU Öl~ÑL[ +ª}7üÒ¹ZØp3ªðåÁù¤bgb°+.¾ïXÝTõú‡Ãn³(ÛèáÔÁ +*˜B æ9 +Q8?ÀuVëòfé×èø°a»- +®ôù,K_À!׋˜+8äŸ1D›NròOØeqÈ?\Éé(“´Ú÷¤ +|>"x€si»¤ö¸à1q(w°ß:ì¿~³n|mqT<@Ë"å‚ovN6Á¦÷«€XÆP?zqÐîiÀ•#j[‚6UV–UDÎï3F+Ù3f¶úh—ÔÁØ5ð:8ÛK°t‰=6:cÕ`{ÀÝî–C}NürÙ<ý€c:Uáè{[}ð=›ê>‡© F¬ôªÏF”›dËþŽÂ˜»Pñda´K->…›°"¡Ê(©µ=mÁ5l|õ&tí6Ðç$˜/¨Ë“2N¨¥ö¤wTÓ!¡è1å„uš}‚Ø}KÞ›Òû.À!¤/"<¡½?g¯\„*‰¾õbé!¥h_&¶mu_oßBþÁŸ2/·Õ#z9ÑxÏå&|† YX¬(Ž„<’r¢)ãGr¬ÙY<ºb;»;ì™ûT¤€`áH‚<ºþ½0†H¼‘z¸„¥›ÛÌjŒYdÿǪ/1ó8ËmŸŸq¤¤Wð¼éù¬HÑàðK—EŠ0Ö¿ùI¢ç "hê•ÑàIAÙAy¨@(§”< +•ÎºGÓAkÍŸPÝ¢ hÜ—h ˆ”¤0Jì=hcµ‹>:Èœ”äž( Q£¥âŒq PA„âP”$Ôõ‘çŒNlš—µ®¯|[…þÒƒwCÒ½þá×äGØDÅ¿*gY'ýé««Ë?üèm(ÜbâMSÑSņK£øªïǺ¸ûº +¸ÙµÞU÷ΗdÒåtëè“äm?'n‹ùèîvƒ`¹±êÇd“‹{Ë ¿i˜³ì3!l<!"Æ{|":ÊßpåÀ^#—fÄ ÜcÄÇþÆà‰I ø4xV‰áRZäq‰á`)•æ¤w¶?šØ`æˉàÉS<ö:h@1Õ+syë(Üg:C.›?®‹DV°åƒk¨ô¿Ð…p2 + +ÖõŸ9 Öíá¢è‡HÍ
§ÂªÖ1AßÛ^r°Ó;•vÏÓUNr2ëS1ª?ñ§:ãb”âóyŨxN1bà@[tÍ#¡ç¶8ú8ŸÍ4ÈÔGq E®^†rïwuØÕεzQÊ\. +þLîË0'•#Ë…—#¬ôÒ‰ñ»7?X
Ã!1¶·„—0Ø_"aÐòvçÖ@z忤¦ÇFÓcSÓãŽån“µ5QÆL^zt°;8 JOÈbyÓÍÒ£ƒôè¡ÝÉœºá² L“FÏ'=),ÿÀF=Y*Õ‘3P*qÚoGþÄþWÔ‡Aî'Ÿœ{”ò¬ã†ŸcăãÆÓ]¤$‚1Ê,=ˆL¸ ™G'%ipã`@gbƒÇ}VÛQœrÏw!ß±gšèq‚@ÐB>¿8%8}ö%¥ÄpoZ·¹_ZÃ_`ý“×Ýÿè]"¬åùŸls1˜¬1Q´+ŒòƒŸÇ_€‡aÉÞÿ£‰endstream endobj -1951 0 obj << +1964 0 obj << /Type /Page -/Contents 1952 0 R -/Resources 1950 0 R +/Contents 1965 0 R +/Resources 1963 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1922 0 R +/Parent 1969 0 R >> endobj -1953 0 obj << -/D [1951 0 R /XYZ 85.0394 794.5015 null] +1966 0 obj << +/D [1964 0 R /XYZ 56.6929 794.5015 null] >> endobj -1954 0 obj << -/D [1951 0 R /XYZ 85.0394 273.8839 null] +1967 0 obj << +/D [1964 0 R /XYZ 56.6929 674.382 null] >> endobj -1955 0 obj << -/D [1951 0 R /XYZ 85.0394 261.9287 null] +1968 0 obj << +/D [1964 0 R /XYZ 56.6929 662.4268 null] >> endobj -1950 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F53 1313 0 R /F48 1238 0 R >> +1963 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F48 1238 0 R /F53 1313 0 R /F41 1218 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1958 0 obj << -/Length 2360 +1972 0 obj << +/Length 2380 /Filter /FlateDecode >> stream -xÚÕZKsã6¾ûWð°i+‚ñ&x[elÏ:Éx¼Š·öÍ’èk$Réqüï·
R”DùQÖTeËUÐh¼¿¯»JDþDd,³‰L¢8ÑÌpa¢ÙêŒG_ îã™:£FiÔÕúñîìüJÅQÂ+mtwßéË1îæ¿
,“l=ðÁ‡Ï7W×ÿ=c=¸»þ|3IÃW׿\RîãdüéÓx2 gÄàÃ?Ç·w—ª²¡¯o.H’Pr¤ÓÉåÕåäòæÃåð÷»ŸÎ.ïÚµt×+¸Â…üqöÛï<šÃ²:ãL%ÎDPàL$‰ŒVgÚ(f´RdyöëÙ¿Ú;µ¾ißþi.˜FE#! gÝñqiㆬSÌ:»?ìHð„Aop(Öi¦„ŽÛCÑ¢s(B¦]Å&aVIå¥Ê–÷¸3çWRvtcΩptTº[äœE6C7xXfX°ƒUZÏY¨y\dåêE¨/ÒUF¢i–_Hø°ž§u6'ùNØfcÂæ°Ä韕E5()©å=¥Aùü -ör;m›0)D¦Ï¡]^?õ¬ÏÆu¢‚â9—ÙrŽÈRVÛ×µŽaótÓÂ/í°[3¡’Ý^i¾y˜þ¥(7CáÙü¿ZXºf{ÞYõô¡†ÖªEùà;ü4ÔO•~‡1—V”öï‹Ðœ°zÍÆhœÃþÆX£·³+
èãq³è#xIÀ¶Y¥h·±~Zã´ =Òr°*«š$Uvÿ°$)¥érY>z@‘NÈÊAY„ž¾fO$Yg›>L2•ƒ,1U–?GZx,ÓEÈP· ½ðÛÝ -'uÛ¾»JG'!•ÔC1();
¢‡5È<S`ó·GP)„ËÝ+Œˆm˜ñH˜òÂ8aÌjÍrä¾Îƒêð¼Ë·x,ÖJûþþÞ{ä`g¸Ñ-Ñ’ exZmN«:ÛäÕW ’䡦ös³´ÊؾíÖØ6#êZ¼÷YQ¥Sà«`ÞŠ%‚ë7tI-Ô3†Ùr¦¹VÏf–h+Z"UÓWÚf ±µÍ°ñƒFXå«|™nH`ï9OT9ù<¥e:±ýÈþœe뚨iM½Ãlçå*Í‹0tyß3š·ÿæ"¸‚8˪¤œç¤Á<ƒ”μïX÷‘¢NŠ…;_ -sÆè‘’ÀR÷âûôHÁ\Y,ŸÂ Ìøš>ÌŒ„Ô,‰Íž‹|ª\„ñ[ļ'Û8LÀƱyK¤×´8 -[`íó8‘£M²Ñ«jô†`ÏÅjÃé¥_³ O)ùÏÐ0Øóò±"•U:[äEFµëM^Ìòuº¤"šýU:ê
ð°Ñßþ1¹ÿò‰<$ÜC˜µí9x«‚²^ŸtÓbN²6AãÞXdU¿eI -ˆÄŒ¢íŸ‘ÇO—+ªî D~Äíl°ü6f WÎñun‡Áh3Þ¯”rÍz”Š)(Q1Å{ª “çTð|…tÇ[cè;}ëÞHao2ÏG -JˆƒØøaºP|¼÷“œ”1“–/¸`ca -àéZÆ4öéÿ6J -¢’¼Tzh@Ú`²ž*¨TiXš5¥ä -^ZRÚóëß³@¼êIãň8ÜÓ¼BXfý(&æÞm™ƒB -)Ý^œk<szÆ?r•²ˆQûª€ûM4êàó´4:©ãÁù -kÍ4⎙XQÄÿu35oq=pYí„(¾XäóiHÎ6Sº¦•MU8_ÚR©ÉH¬Ü3ÏC›.œTÄ#ÌlÙ‰·wr?˜
C¤R~ˆa0¿Ã D~çÖÐõŠjº®Ç5®Çu]Ó‡u¯qh8÷³Ç¿ƒ -
{l8Øc;~t£Øõ;=»½Áõ±GÆÝ{ÄéØÓ…å_˜=*‰¡5áNÃâ$N:ìy£úΒߟB¢yûÌ‘ „Ì‘RLeoä†Õo$Cä&»³èv¼QÏêvn&2¶—OFóÇBëcC'éQË
Ÿz†kž;ö|O1"Eé“ó©ÔSñI¨„InìúMÌqFûfø‘àyF)—0.%ªž_çŽÆ$|›n¢ÿPíÂEÅ‹ô[F¹iFÏß]Àì[žRæîÃ-e¼K@%Ï
”<.òÙ‚²Gž «Z¥nþY‘¼^¾¡pOü]Q‰ÐÁQ^äužÖÚõ-¥é|NÈ*ä…ç¶-èÞôú”ñÅÅ„'·ÃDÆá¦(½¾µÝ*ø×Íjβ +xÚÍYYsÛF~ׯÀ#XeŽçÄ‘}bdÊË$¦µSµ©$1”P&š +Æ"2,æ‘|y_ڃþž*e’ódß±P1Ó&¯D2aqjTç-z^Z±D)Ä&e‘’ʹ¥YíƵݬÑ>o/¤ìMˆ9K¥Bpàd³©îÁüivyÖØIØÜf
±o³;KÔµµ%õÖ¶ô½wEFÄòü’ˆ¬ÌiкÚçþ¶XÝÙÜZ 6ÁRc¤“¢n`V¶‰$„ÉR©p›ívEyCµë©¶ÔÂ5€aQM‘5Ý°Ù%}³<wl]£(›êd.Œ‡™¼{·`“Åå(•á„"ÍéƒÄì2êwé4,³wÙ +†#¶YƒŠ"Ic<«:Ý‘èÚ÷’õsö4¢¥Ð,6QÄ‚3-¢äkbZJÍtq2Ó A±Hóo‰ÓvÆ“0íÄGJ±8ª
SˆºÎ´ë@J_AGiÌD§ý¼ &1¢93Jj GãH„Kø/Ãé3ãÀ¢BÁZ¤)7Òågð9Œë4U4ªG;ufpŒ·³ÞU TÐ׫]yÜ_Úéõ³Iš’Sè ‚Ôç†ÇNèYƒ0WãWc4T{Û«l³y¤®]U×ÅõHòpc‰ƒ1ŠßzWUë¡à„UjŒ–8¡lC¢† /ª² >‹–h0®÷Mü +þ†Èâ‰ñû¢QÆà!žÂŠpø$2}ìT:a +Ž(DQ?â5Y'¬Iš|#ŒxQDDM¥¿ ‘œ‡D¬0›X;B¶?8—~PEc®-µ Hˆ¾~¤¾¬|$†‹$VUYÚU¡3JGÀSz1 +¡þ©8®±Œ…øŽ³ÔW¯ãF@îèøÿ€â½•ÿÄæa”O‚×qñ ÞwÌ?Ä“WqHWÆ~¿aÑnÊ‹ .eÖŒÄ@\'R؇ÆîËlóE'¨R2€H‡’)!Síg÷·‹
\ R?+Æ|`¥™ŒL»…ƒ}Ø ·k»§å qoU`@QâÐußßZ±'¦/FÇ‚§`E-Ÿ@ž‡P<:èsSÜañ¬TO1ó}…\+Ïì¶*ÙP,QVmÒpBU +:ÉVÖ†¥q7饕S&œ'ÞŠˆ¡Þâ@H'¶«>
ƒÜŒš¿Îgÿ{» +’y|’ÖmZ6ÙÍ>Ûú&¥ÖIY³® +ÊÇî¡nÀG‚0¬¿»ƒºÌ£bÑ~ëç¥wbXÁU¡_,~gz,k¿¾öÆ91Ÿ<Qÿ½Y "‚Š‘`i–`½Ó{Ú~öÄxÄ™b} œ÷¯‡Ï# +Êæîî"åÏ"¨*‰XeµËÅǫ̈ÁàΣ„ìUÄC%FÄ4R~ù‡ØCí½êBjýxRË®iÇŸÙælx,öŽMÜ‘êÖqjömÀxªüݲ\rFú"bdqy<À‘o W…;—°Ý‹pÔ_`ð»À†¾îª€
÷”l}îtû°²»†Ø‹ÅÕìý¢çWž¸ú8éXÓs¿{ˆÙÈRl(]–£”‡~›Êó%Oéy §9ŠÔ&ƒ
Ç\[môÒƒ=XoMæ¿QÙå +Üæ(B§)°½*‰ÿ™¡e©7CøãËl©ˆ8t¬)+¤ç4Ríï9B5¾4ñ(œWïó0£¡ öKÐRI˜öl`Š. ÈÜfy;µ"Nn7¶]ŽÔS‰÷•‡ÛÚ÷ÖPtø¹-©0Þ!Oyƒ?yr1äAt·N¤¼«èü…-k±°EÝt%ß©€~ð {é7¸nh¥ÄÐd<h½òÝ?Ç«Ô1SI"‡aHqÍ”JE'•;¸z*¼Q >WÄCÒÿË÷/endstream endobj -1957 0 obj << +1971 0 obj << /Type /Page -/Contents 1958 0 R -/Resources 1956 0 R +/Contents 1972 0 R +/Resources 1970 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1922 0 R +/Parent 1969 0 R >> endobj -1959 0 obj << -/D [1957 0 R /XYZ 56.6929 794.5015 null] +1973 0 obj << +/D [1971 0 R /XYZ 85.0394 794.5015 null] >> endobj -1956 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F53 1313 0 R /F62 1361 0 R >> +1970 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F62 1361 0 R /F21 938 0 R /F53 1313 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1962 0 obj << -/Length 2898 +1976 0 obj << +/Length 3031 /Filter /FlateDecode >> stream -xÚÅZKsÜ6¾ëWÌ‘ªò xñ•=9Š”(IÉÞѤvó:P$¤a… É‘¬üúíFR¢,;>lé@ Ñ -ýCKæÖt´ü°3ž–—}Ù6Ôkoiøag€£#"L‡@!<-j -ÁÒ–ÇÅ ä}îÊ{ÓPó°/²ÁP¥°\nlÔ황ۆÙø|‡-ʪÃ4¨A¨¶€6x!JŠ´¼ëCSæÙP6wDz(‡1
~&NmT7ö{“¯çûQà”¿s.AëXª lè‹KY=ƒ—õ®“ríQ¦ÊáqÁ !„…”Â1Ú
ªâÍé:Ñ‚¤Ä=nÛ®Îjãùðû°+ó6% -Nv 8P<WÒïRjÚwæœè¸B¹m«6Ϫ¯Ž¡B–DaèØöèïù$œ#šûüa*ÐYºS‘K -Ò!KãqÒK+§Lˆ(òZû„NãÐVìÁºhèƒÔŒº?_]þwíô¢R–@èÏôR´u†6Ô: ú6ÿÓÆR®À!?;t$y3T§Bˆ --Í;Ö·-& -kÛt–XRTeš;<û²8$ñG¶~n{RÀuy×LOÙªj
ö®Ë&C‡²ýÐ~b^AÖ_’ñ“Øž½wí¡Ë×ÊŠ¢3}ÿ™’mÐ_–Î9<îÍg®õ£yü²Cþxþµ†öOã¼Ê™ñ…uÿ‰Q÷ZÐ -¿*0x~µ>bß×À4ΉyüLÿ³Y^ð0‚ðšÀM¦ üW<b‰LŸè8ª“7ÏÛW -:„E•$\º»P%5ò¬·±è -$ÖY᧶D)Leürt<•¸äž»tÛ»ÑÐZI—ŸÝ’€Ž,YÊ)|Üœ¹$wtEº©+ز|çK·²FÈ7Ðí6acõ*4Sr#"Çj²‚¢àˆ˜:…Âá׶q»_”•9Nõ§°SgQ,Æ©L¸ÉSOébµ¯Æ×ÞÆIúŸ/V}úsï&À][/äCBŽ\=-ࡲ„y"ȱTAçN¢ "ÞŒiä¸i©àhP»*L‚[ê×4¾¹8#2ZÚ-R˜>ïÊÓÓUî¶òmÈÙ‘j÷o»tp\9wÜ›‰ãj³!c'>½¥{ÆØWépo!c+¡œ/ tc‡ÞŒª§kjCT’&ì7Uéë8±Ã—Ž
d FV<HoÌ-±Ù¸vÙ½[þÆx¨övÉf Ïz{—õ¾250{ÿöy|Œo¯®Ùè -³? êYA#Àx©g2=y÷\¯H¢aHÓb.‰»tfÛª®x~ª*Fþ×x¶î‹ªÐOe -y -”UÅÈõŠ$ÏWCI\¡¥d2„3+!¶þj²ª,ÿèdS¼ãÓäx±Lp™»Æ¾~zÄñÇ¡¡Ž¹þÕš“ØüôÚç¥Áp'"|Á"ã/8v)%ò‡ÆÇ4%N(%â£)ž–€ît|ŸcŠÍÆ¿xP}hŠ—¦ò~™Žoô~ÿY¿Œ¹ÿ—ÕÊSúýãµÊiÅÓ—@…Á[T_¦É‹Ø-D´¾±ï,0࣠éò10«ÊÞy»4òظ˜‘Qè <Qä_³ëìiàÌ‹šXj¢‚/SëÑR:†œÊ£ÏX’f|ä'ÌH2žèWýŸªÈÕ5ÛŸð 1åÎçcPgY›5\—"XWå½#Z]Ç^×q¾ÎˆB•’Ž/.@öÄŒºJ:ƒ©X~g£ùš—ÍuhJ›Tüö`¦°7¿öõKǶïÊ:ëJûºÝCoãÌP‘l½³€}à¨8)‚jà´¡&!C¸r¾€dUˆI
‡ÝýÅ4âAÕZ$YJ‹øujܘ%Èb·-<à¸m§9Ç?Rö»öPsPR”}ž9€ú§žxË—9 æœÅ2Âì±(„Koáæä«W3þ§þ³Àñ&@ •$ò\Ä5\Á©À>q-ûöËų{_%,LdìÙ&²ÿΞk‹endstream +xÚÍZYsÛ8~÷¯Ð#]qqñÚ7Çv&žÍ8YYS[»3ó@QÍŠÔŠ”ϯßn4@²ŽÌÆ©IRe‚|} »!>bðŸ¢8Œ3‘’L…ãѨXž±Ñ=ôýpÆ-ÏØ1}®·Ó³¿½“É(³XÄ£é›+
YšòÑtþK‡2<‡XðŸ·×çc±àÝÍhq©"\¾¿ø4½žPGlYßÞÜ^%£ÇåÇÛw7?ü<¹8OT0½ùxKäÉõ»ëÉõíåõùoÓÏ®§ý’ýmq&q½ÿ=ûå76šÃî~<c¡ÌÒhô/,äY&FË3É0RR:JuvwöÏ~B¯×Ýg¡±Øƒ“à#®B© Ó*ÊB‘&˜0@5µ¶@••ÆÑ<Ì¢ÈLÀFcÉÂ8ái1·ƒ§çžWº¥š…EJ·Íf]h÷V4ë¹eÉë95þõ kju
=ní€éƒ^Ú…Oâ°¡ÂLqeÖ1}(aNeŒãAÑ•MýiTùúœ§Á½®ž‰cÖ¬
¥yÒs¤¤Á‚Þ—Ô?ywIdŸ²“Ìu[¬Ë™n©§{ÐÄ[4u¡WQqÇHÌé•6Ž3–Ûl ö»¿²ˆM&ð—Û€l7×C›ÓŸWU^Öøm.‚'ƒ•ä2Ðyñ@´ÒömZ=EVYÜ•µù,Piµ0`µ™Ue‘#8ÔcVOÚ24Ü–E +@>êu^½ÖO4Ådb?õ?ÚégÚ-¨œëº+eLèEöò.—«J/Y;‚ÿƒûÕí]Ø+€Ó’¤{©ÚÆ
.ªÍwîv 'T”{>÷»_5O*Ûì–›eŽëÆv/
–ø´Ô—[–f®Q6©®Ip–H‡|ÈÞêŽ&42í} R@-ëE³^æNßêGéf_æÏÔ˜Yn½\uÏçœó ܧhS£(ŠÛCÃ|ž{>®˜ÿqbËÛ¶)Ê܈ߟÊîÁöÐc•¯»²Ø Mšw‹´Œ +ÃœE³\5›À}¿Õ0æ¥7PBt×€$®xÏF¬•iü +Ë,„™U^hØÈR9sXg´xÖ%´å}m„Yäµ%%6LZÏwØ ç,XY¼ôúÑðÀ7fÏ–×j +z*è]·FlªG¸òh[?˜ÅzŸA!œèK9¼dA@°¤÷àé`V<À`bÁ“ m@õýpärSu%Ø%Q
VÂb‚„•^/ËŽ,^¸8ìoV]¹,ÿ°Z`87kak?ÖsêÏ9Úý›}s~¿]é¢\<;owÖØé᫾×:_Ï,3ÁIí™5én]:ƒB\·]HÒ¸Óz÷খ%ÐH¥9B©s}?¢ÆÄ;s{þ±?€Î\ßy¼œ÷{§˜ >DÈãËkJ£P%ñ`I/Çtjií8®Ã9þGKBо/ÅÁ±Ÿøü‹Y¢ ^,(IÃ,Uéqz®Sy1®„üáX ŠŒCÀÉ-8·~—hœS
~'ÆÉýPÇyÈþL±'¾w‚ý}w‹œepH±l)&i’|IÜ(U&,Ù‰ÿ¿Qn!žY\c0—mºÃ©Æý¦Æ‘HÃTŠá8MF‘¡â¹¶æ©vÖL.S¤Õô’p‡¯×'ô“Û¡&&6Ê/Üͦ¦pa gQ‚߇…xËý:l8xA)…³£ùÀ‹)݈è2J„'P,T±ÌÈÍB|~>ŽUˆ^º. AýÌ¢€ÇãYÙQÇc^m45#ãŸ]tC]ŽÇL<Æ*ü.’ÉؘX* ¨Á9¶k64À™ÎAy|ª[A©$LKþÄ”nÄAAázù )Û'(•Åaɘ\ÎôÈ)ʘUùà,—zç$ÆUùh‰ëÄaD ê!Q(%B’W5'²#æô*…8JˆÇïÑ!_½O\tXoêÒx@IÑ)>[V=7G¾r‰K˶Z—Ë|]b +†¯àakf)ƒð‡H&ÑÙôÀVqPiÄÑššJ%,^@2bÃKÞðõ¡yªƄ@±‰Ni7oMÙÞèÒ|vî"E㻜Ò,íC³©æÃhd^¶En#Ó#JíkË×ià7õ> +󪌟ð> +O)Èû$ ÖR)ë~2ßý¤žûɶî'íÝO¶“]a_Nq7]S4Qùõí ÏiÖ.{l»¼vžgçD÷§="1Š×rCÄ ^Ub‹>,=!1HuS!È
M®¨î….°°+›%¦b_RÔyÞå`Š ‹¶œ”&RÛ$c)·U ;€Z&ý‚'%Ø +‰«ŠìuEm³ÔèíÁn4Œ +*}6aÒ·#ÂóPy-ámKuEÇã,”‰ DIÈ’aÍðEÜ, Ví`"ÁÔÉúáJ‡2†°9á|/šªjž(§ô*5¦–±Çvš—œÂÊûxd_ÅŽ-—3Jp åÜEtíá šàIÿÂúø[HžÂ$£Ìà°õJȤÌúBUœ¨Ø¬„„ƒ¯í¨•ÏçÖxM!EdÁMM=d•Ð¸¹¥§±¨7Twé¨Ê +Tz*S@WE˜Ÿö|í7Q{ì÷ÊžÍ;u@SÄ@¶]“ײÝoþH.ÂTJ$$¿JØôçþ¿U\ +{tñ rCH¶yp14k6Ð~¢Te_7Þ…}ë‚!-?è…ÁÏCÙ[þkyáo²€VË(K&Êæ{—דsHä§&q`Áû¦êo~]F|_vÎÁzÝÙ»–NŸ8ß +Â~øôñÒéìÝàbÔ÷Z÷U3s1îªiKÌøÜÏP6+ü¹â†þBÉÚᇗ‡áôúu{WBJÈO±ø¸Æ|ßO+Øè$Ö_úcÖízÁÊ4=p{ÑfƒcLêq. +0_ü0¤ÿÙ«eóÖþ?ÖÖRpendstream endobj -1961 0 obj << +1975 0 obj << /Type /Page -/Contents 1962 0 R -/Resources 1960 0 R +/Contents 1976 0 R +/Resources 1974 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1922 0 R -/Annots [ 1966 0 R 1967 0 R ] +/Parent 1969 0 R +/Annots [ 1980 0 R 1981 0 R ] >> endobj -1966 0 obj << +1980 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [341.1654 175.0606 414.8187 187.1202] +/Rect [312.8189 570.0778 386.4723 582.1375] /Subtype /Link /A << /S /GoTo /D (the_sortlist_statement) >> >> endobj -1967 0 obj << +1981 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [434.6742 175.0606 508.3275 187.1202] +/Rect [406.3277 570.0778 479.981 582.1375] /Subtype /Link /A << /S /GoTo /D (rrset_ordering) >> >> endobj -1963 0 obj << -/D [1961 0 R /XYZ 85.0394 794.5015 null] +1977 0 obj << +/D [1975 0 R /XYZ 56.6929 794.5015 null] >> endobj 618 0 obj << -/D [1961 0 R /XYZ 85.0394 385.3709 null] +/D [1975 0 R /XYZ 56.6929 769.5949 null] >> endobj -1964 0 obj << -/D [1961 0 R /XYZ 85.0394 353.2653 null] +1978 0 obj << +/D [1975 0 R /XYZ 56.6929 748.2826 null] >> endobj 622 0 obj << -/D [1961 0 R /XYZ 85.0394 353.2653 null] +/D [1975 0 R /XYZ 56.6929 748.2826 null] >> endobj 1250 0 obj << -/D [1961 0 R /XYZ 85.0394 323.4096 null] +/D [1975 0 R /XYZ 56.6929 718.4268 null] >> endobj 626 0 obj << -/D [1961 0 R /XYZ 85.0394 266.7517 null] +/D [1975 0 R /XYZ 56.6929 661.7689 null] >> endobj -1965 0 obj << -/D [1961 0 R /XYZ 85.0394 244.4404 null] ->> endobj -1968 0 obj << -/D [1961 0 R /XYZ 85.0394 158.1241 null] +1979 0 obj << +/D [1975 0 R /XYZ 56.6929 639.4577 null] >> endobj -1969 0 obj << -/D [1961 0 R /XYZ 85.0394 146.1689 null] +1982 0 obj << +/D [1975 0 R /XYZ 56.6929 553.1414 null] >> endobj -1960 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F53 1313 0 R >> -/ProcSet [ /PDF /Text ] +1983 0 obj << +/D [1975 0 R /XYZ 56.6929 541.1862 null] >> endobj -1972 0 obj << -/Length 2922 -/Filter /FlateDecode ->> -stream -xÚÍZÝsÛ¸÷_¡Gz&Âá`ûäØrâkNq%g¦íÝ=Ðms"‹®HÛqÿúîbA‰’-1©•©“c øÛïDÃÑ3–ÙT¦=—jf¸0½Éíï]û"Žé7ƒúíQï/~9U®—²ÔJÛ»¸jå÷^ô.¦¿'–)v+ðä_Ÿ‡ƒÃ¾4<9=û”PÚÈäøãÑùÅ`D/lúþlxB=)5ÇŸ‡§g¾ŒŽN.Î>©{48ŒÃãÁ៿.–[n–à -÷ûïƒßÿä½)|ݯœ©Ô›Þ#<p&ÒTön´QÌh¥šžÙÁøàïË[oÃÔ—`Ò\0!À8ÓBlÿUú¿I©XŠû\ÿѾà)ðךñ”¯—²…¼†iïzΤÌ*©ò“YVU‡}«´NŽæ -Ù‚âuð*í™Iíõ›û䘄‘žËŽ)Ãœi -ö VU[ä£1`Öiæ×þÀaDúªœÍÊÇb~Õ‡dA“œ¶–ñ¸e;ó‘ÓZû1@ØHaã¨F)Á$ÓhgGÕ_6Yº”t‹F‡;ýÿb -N¶½ÀÚî±woqc|]')èÉÛ_PH@ ½*ïçSÄ’§ÉàÛ]¾ -ÃÇ|öD#ƒ¶a -Osšƒ2¶¡¿º¿¬é9§!,L),\üHz–ßÊU³sÇ]ªcйÈâ§q41YšÅq°ŸY3"Ú2´SzŸUôŽ~¡±QÐ1Áç…8´Iûë¦ÈmåÿŒˆ.á–ÖÉÂݛ׉âϵK’C©;„[YÆáË¢pÿ6ø'p[¥<×er0ôNà ¹»¿œ¢¿æOÑ5·ì
¾ˆ‚½šU×ómøêüO9_Y›þvûÔaˆ¸Ú‘´@د٫+W©…8Su¤Ø3¡L4DcÌV¥Yã“H£†ˆÔ$7YuCê¶hXˆ]…áÝšËБ…ËYfÉB¤‘…[
Ó[_û6*ûM%öäBðìò€òž»H¢?œöiíxéª
Ãu=+/›8÷®¬ -Lú"®ãû»ÜÍb†Û˨ŠŸ>ï@´µÕ7Ù*Ë™“^t ê,“6¥3‡gÃÓÏ -Äñù"¨ÌjƒŒÀŠ¿ -H -:$‚G,€2:j‹3¼ â_⶿ô
‡¸ -¼„®#[V”*“ÚðÝgçãÁqð&Ò)œÓ™ØÄ´Õš1ºÍë›2š•ù‚›£^+UùÊZ-»oÁV-B¡
ŸÑ2½¢p¬¹ÜŬ -o™Yà&Rîºì‘ôLC˜NÌŸû†‡Amt'X° B“‘T4X©§¡r:˜c(žÅŽÐ·Å¹Ëïpî»KMí/ÝC~B-Z:1VÇ ªâšåÉš½„Ö£0¥‚Ö`Ó¸p¤ƒïZ.ŸÉ…·f…ȉ˜çk’/U3¼˜oç¨ãu1ÞˆÖåþ+=ÐöB&4¥ž`@i -<øõ’eº‘ -Øm8Ú_÷†²6í’q
ã¥p‘ƒãPòM@®b¡]ÆÌôîy@Y1]¢¤˜0-ð 4Ž`‘âÔ˜ -öçÈb-ï¡Áýáf°'£^3ê“ËQ" ¦íó\f\¥¬‰È¿U½¹Þá?–ñÅR¬ŽDëÛà鑾
¨ÑˆZº¤[Þ#ýl–:‚ÔÒÒÔ†Mõ_òË›‰?r.¶³¤Ù׉#æ ¬Ç;ÕL*ºp±yO“÷:Mø÷Þ_Ýž‡
)ï·¤³Ò“-ºl\‹J`òÙÅvÁqÓ²ÖÚû"Üendstream -endobj -1971 0 obj << -/Type /Page -/Contents 1972 0 R -/Resources 1970 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1976 0 R +1984 0 obj << +/D [1975 0 R /XYZ 56.6929 361.0617 null] >> endobj -1973 0 obj << -/D [1971 0 R /XYZ 56.6929 794.5015 null] +1985 0 obj << +/D [1975 0 R /XYZ 56.6929 349.1065 null] >> endobj 1974 0 obj << -/D [1971 0 R /XYZ 56.6929 671.961 null] ->> endobj -1975 0 obj << -/D [1971 0 R /XYZ 56.6929 660.0058 null] ->> endobj -1970 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F39 1161 0 R >> +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1979 0 obj << -/Length 2985 +1988 0 obj << +/Length 2817 /Filter /FlateDecode >> stream -xÚíZÝsã¶÷_¡·P3'_$ÀöÉñÙwNî|®¬´7Mò@I°ÅF"U‘²Ïý뻋%Jч/öMýÐñŒ¹X|ØÅþ°»€èpø3®RÝ1©f1qg4;á;¨{w"B›^Ó¨×nõÃàäûe:)K™t·±,ãÖŠÎ`üKtöþôzpÞïödÌ£„u{q£.¯Þ'¥ÏÙ§«‹Ëw?÷O»FGƒËOWÄîŸ_œ÷ϯÎλ=¡t,a -·€ÙHÙÌ!%ýd“ÑgäuF<¹j% Uí÷Ù”øã2ŒRÖD¸/yUo‡óà›3øOYà"âæ9&¢µ6(=ÐÚ€ê÷é[?ή26QFR!þœ -•+B‡ÛrÑM_?©Þæ4È&òâ'Éýa?[ U9Îoqì[·¨ˆqë«œQéª+"hLZ.Jñœð
¼‡ VdöæŠåÌ- ?ȹ,ˆ7\ÖDøÝaT4+W«î¨œÍ—uVCûlê· 4q_殨ò{·ëçüÀ —aé·ŠŸ²#VªÅ4éˆPË£Ñ4'{f†Aq1jðÖU£E>t¡c^ìyÿâŒÐ"q̶áB^˜¬¯mdÏ3\0¦ -\ƒ?5ž¨ë–Ÿ§˜µ®|‰¿÷›ûuÍ9K¤é:–päÁ@^ºŸpJj¡‚†µM )l£aâ¡Hñ» ùÔºEߎÐ(ùHä#õÈ*äËT7¯µºA¦ß¹©ŠÀžîò׌\ÒÔ_©@¿=Ÿf£¦Óð‘¾W^a˜X™ô<˜CVÓÚŽÏÛâÛ©^!c“0#¬<b5q*™ŒÓÔêzÐGßR¥Ñ):3:š—~RÜ#
º†¬aγEMTyšy|b\Î2ò´tØÕHUsP º° í·®·ßrëÖ~@GíÅ¿²}ƒS–Ê,7ö˜Ž˜ƒNÒÑg8¹`‡F×äÝçc´UiM4Ëæs0³PºúÁ¹‚ -$7 ¬”Dx0@â3œ<ðÆã`á•«Ø~Õ5 ‘¨Êiúe•ó²$-³©9vìÄZ3RLÿÚ+GF—@ãÌ»‡ #£æ;Ÿ¶ô‡=‚°çÀÈ锦ÇT Þ¤7$ä!!xƒéûí4€µ3@èlúD¸ÂÒVK¯Y[aÍQ¸“œÁŠîúý›ËwpâEgeQ“¦h;ÚʨÊ^6G!²ÆY|çq[ÀXE~†ôÞkBš+}@èÕ¼”Ð/m›{…®“â}q,"èb‰°„_ý®2Ñ -»±#*8?è¦iˆUPËÅï¡j*{¶1͵íYcW'Ü–3ôƒlýyŠü¶{C)p,’c©!1±"±xsŒmš¶ÌÑ`€<v¤·lY-"M.¥ ‰Nñʥܜ5n¦ñ–› ¡°w3±&À²¼[¬N¼²!i -Ñàˆƒç
ÜóopIÊÌ™Cf€0$W†-{s SµÄá¼3ܳ›ƒë®iô&dî)^Áí£ˆèj9Ÿ—‹ºQîû¼ªÁûa±W…-Ù¼bL“p®€pDƒà¸2e¹ñ²ü,côbõ]+ÝÜ@VQž¾Ÿ6Ej}ä@a;03<Ý -ÌþtZëp\ÖZìK©d}Õ~ìîûn¶îîÿ\¯f"Me¤B=2n6ïüÿp÷¯x¬LMEÅÔ¾À¯y— •dZ†´Ù`n¸nËé´|ÀФüýHsÝ3Ñ0I«á×°Ëhš¡‚©ÝÆ/ ¬*˜µó>ý -H«’δ‘Û ¯;®àà¤bQûÓX÷Ù4ßÚ"u³ -@_ð¸“<fJs1%iDTÊåU·—àuÑJñ—xÍ -ù©ÚC:ç5U|¼ÃoÐæÒ‰Y>î‰ÔðCéý~Ör…¢PMnX¹ÏÄ1YVTž/ó²r¸É)‚lpÇ@øê»jW~d¸Ì§uouH†›u²ºvrÂWá¨u쎽!XТ-{z@!X€±*èÎ0Ó¸C¯J„¶û÷d[Û¯8'”bGS*Â$nBøܨDÀþyï@LcÕþ’b-ù›U˜G…±»wÓrN‰K—´ÆoI4 -õMØ -u÷Ù"/—a¤ê±Ú™¡Ý,˜]fÕjƒýÑÛƒÙ,šÚ»Êž7þø‡LÙº*¼å€=¸{ôöR›ëÕ8 ãÂè':‚&-{Ï}¡Ö> -Ï/TxjFí"¨¼]X³ù4åµÏãÚh‘…nzXá–ò×Xh˜¨Ý»Â–Âu¸|㑸‘ýð\ë¢#»/ü¬¿9ËŠÇ];‘æöG¢{¿«ÂÛ3¬ÄÉU“!8j縓Œ|ˆì¡–£&‰^ý'¡kë—ñÒþ
=ÑÇšž-QKÿ(y%=Ü£BQŽ½®…öÙñ4ƒf€±Ý÷há¡H-½(+b=2ݤtÀÜÃ3Ðzâ2ŸM¤Š˜ãœ°Vä*z0ø€‰%jâ@잇_áUlUû.X&¡@ƒÌ'?üôš±HÚ?ãÁ&ˆ+þ±Öž§¸ -S†Jìz9Ë;GóO}§»~«¬
„Uû€(®ñ8aVMºz{î±² +xÚíZÝS#¹ç¯ð[ÆUgEßÒTž8ö¸ 6›lrwƒ=à©5Ç3À’¿>Ýj=öa[@Šª¤¨BI–úã§VK¢ÇáOô¼a\¥ºçRͦ7¾=à½øöñ@Ä6ƒ¦Ñ Ýêû˃?Ÿ(×KYj¥í]^·ÆòŒ{/z—“_“£/.‡ý4<±¬?0–'ߟž} NJÅÑùÙÉéÇOÃþÓÉåéù±‡Ç'ÇÃã³£ãþ@(m$ âÿ<?;¦F'§?÷¿üñàør5åö²W8ßüú;ïM`u?p¦RozPáL¤©ìÝh£˜ÑJ5œÙÁè௫[_CקĤ¹`BÕδ»•~ïFR*–â<7í˜6%¯5ã)_K^Ê–ä…VÌ+ezΤÌ*©‚è8=;9ï´ð29äóºøs™W 6á’zšqtñ‰ˆl>AÂ'ç#bÜUù„¨«Gú’QuZV5èA¦iò!¯ÆËâªiXÌ©áðäuÒsš¥ÆàR2LVjضÊ4èÌY+{í¥¾L|J{¦À{ƒ¦ÁkjDBKÏe—F`©NŠ4,üôbt|ôÓñ?@FNéäbÙQ•÷Å•"Rƒò©NnózZNˆu].‰¨êrYÌo¨rzQåc"¿ä+ömVçË"›Q
•å‡³{Jä¡m
‚;
¢ï¡¹Ü§–^W[ú5µeSˤM}—¶@0^KÚ} +Ü(«‹„d¤LÊk,UÓ8Ùd[Vy>"„ôÉñרåûÎÞ‡|°ÛCökD¯vk¤½Ô×Ò±·æ[\²é±[#@’kÕ¡ëK¹ D®2âÉœÄÜ@3t,wW³bL4øEüVUå¸ +PÏF‡ PçmrH’˜çõC¹üB•*_ÞãFÎã1„¤-!o‰Ä¹3ÜtÜîïzÞ¯%Ý7ˆŒæÌéºÄk,üˆÖQ¼XŸ\Pne¬p¸¬ˆ!@¡¸4M©|„àD†ÍÇlØ´zfÐõ½V ó’ËMjЩ‚p«ëÌl”dÚkµp€ªobr$ÊUØLÕº¤ÎÆw´Ì›“bG€ØnšÕD
‡±k< +økº"Y0WfÒ+V Rõ?oÂâ}˜°\›°–+[Z© +ÈIqc_çˊה»¥Úl˜„L’Çåò¨”À‰eœà=L°ÚãÎîäó»Û| ýAΘ^Bf¬ÃAH^®VÜqy»¸£tT6fâ0V_äó +÷§'D½\•ÁT”sb5ÛÒ¤)š¯<Ï +’q`fq£-çWÁTžZí + +Œ0{6³¶“½Ìqß4¦P0_LWN^sÎRçä.ú©L‡‡¿@|amƒ 6b‚ÝÄ1Ë“? +zb+"AÖJ‘@?L‹ñt÷Y+š;jŽ5Å<Ƈ+•{8üdW³XŹÄôÓ3a¿®ÛB|ÀŤÌ9“~ÃÔÃïѵ4̈»÷ëZ9Ǹµ”í?û|2*jX{JIhßh˜x(R,7!ŸZ7°Úº endobj -1978 0 obj << +1987 0 obj << /Type /Page -/Contents 1979 0 R -/Resources 1977 0 R +/Contents 1988 0 R +/Resources 1986 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1976 0 R +/Parent 1969 0 R >> endobj -1980 0 obj << -/D [1978 0 R /XYZ 85.0394 794.5015 null] ->> endobj -1981 0 obj << -/D [1978 0 R /XYZ 85.0394 229.6198 null] ->> endobj -1982 0 obj << -/D [1978 0 R /XYZ 85.0394 217.6646 null] +1989 0 obj << +/D [1987 0 R /XYZ 85.0394 794.5015 null] >> endobj -1977 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R >> +1986 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1985 0 obj << -/Length 3016 +1992 0 obj << +/Length 3344 /Filter /FlateDecode >> stream -xÚÍ]sÛ6òÝ¿BôŒÍ -¼›Û· -¸Y—Ymç¨$²« ²£ÞÈ»¿K䯬 -j˜–z3mÖ<¼2kÓ²©é¹jvÜ×Ð*¡—Õ„™Ï©g<vÁd>”¦bꃕò,_•`Sqª`Ž
ZÕmRø:Š¤ÝdÑ”vˆðêƼl³©ž×5Œê»U³5]֙ǒºŠ¬Ë"ï¦.Û¿Ÿ_† -p÷1ñ¬j™J¢ dÓw0<Þ¢çµna’®Óá«rÅjÞ¦©LnïÍöpsäˆDE‡–5I -Ö*àHošU¥•—µYÖ–9ÀZNt¸§‘kS›¶Ûf¬fQ¨Ã…ÚJbú€Œrrtiê¬+[Ëšôþµ2U9¥¤„N -äº%Èšhøì[ä!T>‘áµù£tr”߶4XÎèñ±ÛË°!ìÊ,L×NÑ!o4í6«LgÕ‚(ë‘ð¼»r[—“¸)· ÆuV£*)½¶_.˶£y?AeË#ЄZ¼jzër -l<ª”F=mJoãâò -„É4ŽfÚ=#pµ4LDbõmy4q]—ë¦6y;¥¡¢D¿¯‡½hsÄ.Ç®ŒÅÂ`HÄœæÁ·—d¨ã‡fû¸z Þâw;ÜG((4bÞß;¼!töØÇT -ËUsPŸ€³µ\B£‰â2„¶¡B'\÷"±Í½½@£0í0Å#Y•ºW…ãQ¼õÖŽJö‹Ð® ]ÃVD2DjÕÎVÎcX« äà -öÇhá¸Ôö£@‡°ywB‘ðöÝýæg<ôQiàýðþü2Q‰„ú0PƒÿóúîzþʆI4Œ0œ€DGkÿµý äÀ÷fö%%”D~”DjZBR~ªcØL¢}m%ô\$¯Þ9-ÑJ_±<€ÝXâS'¾brãC‹Àjì¢U¢QF2õµ,ÉÓ’¡5åW.™H€ÿFŸ2”(òe$b+˜A°ˆ zA{â_±”ö“@§Ÿ²PùRÇôŠ}àPä-8©Èä´TF~Åb‘‰ŸDaü)ËP‡rOZ†óuZD>ù‚BØ_Áü?R€@¨Bg(ü 9¼zv'Á³•s€Æ’$/ß ÉTõP.]¤²![ÉŠD¬²Gî¢SÒg¥v
¥6v+“¯h(Ÿ{2):VtŠz"¾\Ø@ÕýzAÅŠÏ$éè•/Ü$5Íaž¯¼|—bíQ-dßzFõ¼Z×Õ‚\ Ýþt‚0žäáI@vTR)Iûja<Š?&ùBõñÛÕAå·¯ò˜›Ö|¶æÊBzEGövÍѾãe–¯Žßž‰§Sg “/¸ïè -wà”p×* -fŸŒÿŸûUÓþË®ÂVšÊé8$¡äµi‘™BuˆàYÆãïŸÔïÿWfendstream +xÚÕZÝsÛ6÷_¡·Ò31Ž +¥âGlcR§Êw*µ§q\ç;òý6¯:¶£NuPßÐ÷À©ØÌ…lµâemŽMB\~ØåM±E>¤Ói3>z©dª?b’ýYŸÊ"ûðõX<Ä5I˜ÅÃÿn•D+4<#arGÄS•@M5¨Ô¤¡H¢tÚè>Ö£D*cŽ}›œ4|S—e}WTkÔ2$,;Zi 9Ø4‚ÝpɲÌÐÀ4ï`e…Ò`š‡Þ²£mÝ»Æ2Ÿ®|C‰JeßP·êÊ{"Ýfeqä"?ÀË7oÿ~ì!Ãu0©bödÐpïîO˜ëdcIuFƒURmœM® +\•ñâ5Ä;ëÅ&«[ÐfŒD¹<a’àë爞LP0¬»zY—DY’cfX0×¥øæjNçž@ ÷„ƶX]€6Ãö#Qðšýß¹»ÔAß:þRÁílˆTt-56Cª¢þ®ovu›ãT,0ß"™N0Bèø™»Ä{ç¤D¾è‹²»2$äà¼ñwn”Ø‘ð[]avví\¬Å3 + +‘«>³B8¡ +Š¿Þ#‘ÒÕDi7CÐvÇ"â8c?»Íš¢î™S{ß^Ly_—o9¬².[díà`¡HÓøÑ5ßy®)0´ùÌRqÞhkú‚žv¯½ÝžÊ»þ?ñD¬
´ìÇñD,SÇFíñ„†ˆÃ6«lËDr#¼éòŠIÛ]Y,Œ½Z§A“ûñ:@î< } +¡‰ëx"šwÝ`üÃÞ.k:ÏÜ/ç]¯¯5^ÕÌ9ÿÁ¶9ï¹Íªû)W$¹ñRDWJc·oSe¥‹Ò0ˆÂQ«£›Ó<iºÉÚ
QZ˜ý²ë
xý†—ŽvÞeKÔfârC̼¾f&pj`yCª^9ÉÈYäàpd(’ +5±""$ ðš(”‹ptá7&ízÞ°)7lìjŒN^vôȉÃ9Ñ°ð¿œ{ÙͲ©ð·m±®œp@u’ØhÏ#[A¨ƒk +¹Ñؾn¹ÍÊþÁ3Ça§Íâs:z"1!_)lQuç3"’ +‘Z@ÙÔ
çœçÒµ¡€…„eÖ4U‘Œk
=TâX½]àÅe.rà‚Ôæž·éP±~aÅœ†7NX…`¢SÆO¢núÄsÇÆ_ûÑ{L?XÂCòŸ”Šv5!olZ§&pçÑýé—Áµá¸áµ†Êjôƒ‰êê0ÍK)ñé¾w1Ö£vMÞ¶CêÓ6šàaá ÌTC +
Ÿ(TP¿`zF†ÉèÕ +‡àúÔ†46à»Í Šñ|^N.ìÜeÜÈAØúþxÝ8[IÌ#w~S B%B^ææ’|Á¿ãôCŠÉ窷ݻOlëÖ=ü¤ìÁÒŽ<>¸EMw/$ÙG Š”9‘Ê¢¢‡$@#% ²~½¡”µ¨z’`Nm©9ÚÌVÃÕ[”¼mßRÄÅÌ?êb¢m?q5XŽ »Ñû´wívÆ– +Ö +„oû-=¯P”Ôø¥¥¦·ÕqdçjœslÙ¯|P§l¨p²U¶( +dzøè®`×É~:56èԣͰ“‘[yç3¶A0„Æ:Œ88À<ü-c/õTø÷’Ìãà#W † +¶n +@ÆæÄÅIÆ!/šzL +yþnPÇImŒ6úëj#5Â$©yÄ[, +À—ýÐÜïO!ªÄ¢‚T*¬ endobj -1984 0 obj << +1991 0 obj << /Type /Page -/Contents 1985 0 R -/Resources 1983 0 R +/Contents 1992 0 R +/Resources 1990 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1976 0 R ->> endobj -1986 0 obj << -/D [1984 0 R /XYZ 56.6929 794.5015 null] ->> endobj -630 0 obj << -/D [1984 0 R /XYZ 56.6929 622.0858 null] +/Parent 1969 0 R >> endobj -1987 0 obj << -/D [1984 0 R /XYZ 56.6929 597.3835 null] +1993 0 obj << +/D [1991 0 R /XYZ 56.6929 794.5015 null] >> endobj -1988 0 obj << -/D [1984 0 R /XYZ 56.6929 411.8393 null] +1994 0 obj << +/D [1991 0 R /XYZ 56.6929 660.0058 null] >> endobj -1989 0 obj << -/D [1984 0 R /XYZ 56.6929 399.8842 null] +1995 0 obj << +/D [1991 0 R /XYZ 56.6929 648.0507 null] >> endobj -1990 0 obj << -/D [1984 0 R /XYZ 56.6929 231.7148 null] +630 0 obj << +/D [1991 0 R /XYZ 56.6929 345.1443 null] >> endobj -1991 0 obj << -/D [1984 0 R /XYZ 56.6929 219.7596 null] +1996 0 obj << +/D [1991 0 R /XYZ 56.6929 320.442 null] >> endobj -634 0 obj << -/D [1984 0 R /XYZ 56.6929 131.5008 null] +1997 0 obj << +/D [1991 0 R /XYZ 56.6929 134.8978 null] >> endobj -1992 0 obj << -/D [1984 0 R /XYZ 56.6929 107.0349 null] +1998 0 obj << +/D [1991 0 R /XYZ 56.6929 122.9426 null] >> endobj -1983 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> +1990 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1995 0 obj << -/Length 3209 +2001 0 obj << +/Length 2992 /Filter /FlateDecode >> stream -xÚÍËrãÆñ®¯àÁ¨ÊDæ |“mC—W»‘•*Wl Q† -Á[ ƹŒ<Ë{Òâl[ì?Ð.±Œ-7Më9Ú{ v³Î¥”ÑhÕ
#ö8ÂÞésd© ¬§üÄe'vš9¢Ý5õª¬ïð¼™âk8Ñ®ƒÃÔ¾£n~WxÙv(¶Ã¬sj™è6_þ›×5ü
(ëâ#ã¨è wø&~ª?4ßßH½ïY—Ð;µ¾j¦x²n›rÑ&ÿ€[ª˜ø†òÛ¶©]A½m‘×pg‚ùM©”†á¤¼' -ðí©‰âˆj !p´YØß?+À±xMñ+›R,lÖ…Ú8O-æ lzI±†åÁâë.7^!úц¾AæÆ€^ölxll݆mII‘ó™^ÈÀ¤fSf"&EƒWØZ†@"KˆÞ·É‰À`m’ž°tÛ6Ë2ï¼)e
fƒßd¤½ŠÇ~V\PÓÓ¾ðÃ’ˆ'Ц_]¼½Ûâ3h´‡5"Eµ±,‹GÆ!õ|ãwHHT“£¨B“Þ
%/UQ¹¦AÏ4Ì|Ðõ›Â÷¶ñ&2Ižp°Ä=¾"îV÷
úz|Ì›“Œ> 5< -éhì{Òé{tw<"í·àZÖ™ð̃ßò®nŽ¬c€ç5ØìÜ+q°$¬5² ˆ`Éc$#¤!Ò:¯‡^õf'fÒŸ¢æU ±ÃO‚l‚q`l×”u7ØjBÝ>sÐÅìåv+>æÛ]U|sêòei,-¤!UŸäó©,¶©LÇ>ßÿ·*œcð~Ož€Ö ÀÅÍ°bŒjî4·. V½?iä@üÁÁzf3¥K<5™Nñ²Ù¢†Ñàµ-ÀÖJ -ð -²,y‰-„‰“àPRy÷\áTG—9&X•²4©,ÛBh„œµõÔ„Qû-}I¡)ËÎ -EÝ㟩„<mÿ,êX„Ó9Š~8ÿ'ð£:Ú‚ò/w/ Ë@ãqI:ãbdÿs -´@¢à¯•¼`cÝ4Ï×Äe{¾eþ\GݤLbо¥IÒ©ŸŠÙ‹¯÷©?@<þB{í¯7ò$0ŽÒàUÎÀwC\Þöѳ„Ÿ*2ØàìÿRý'ûendstream +xÚÍ]sÛ6òÝ¿BòL…Ã7É{s§çNãôw&sMh‰¶8¥HHÅñýúÛÅ.HJ–'qgÏ °Àû½©‰„?5I&³“$³ÂIå&óÕ‰œÜÁÜO'Šafh6†úñúäoL2ÉD浟\ߎöJ…LS5¹^ü>}õ¯³_¯Ï¯NgÚÉ©§3çåôÇ‹Ë×4’QóêÝ囋Ÿ~»:;MìôúâÝ%
_¿9¿:¿|u~:SÆ:
Þâ?ï.Ï èÍÅ/ç§\ÿ|r~Ýy|-%
ž÷¿'¿ÿ!'¸ÝÏ'R˜,u“{øBe™ž¬N¬3ÂYcâHuòþäßý†£Ù°ô™¬L +ë\z-¡€–»J‰Ì¹}¬pk%,ÐHï¼Ö%=é‘^ÛLh«ÓIâ2á6ög§À±DO•NE& +žìýôÑQï£t’ã°%bÛnó +œ’KcÜô†¶†Å
wòê>€ûî\I‡+!Ä>MÛVÆf I0Þ–¨ +-Æ.`•aÆ` +„„^`¯¡X/@4M,Š +ätó@__ÐÀœ +3=gXr˜H½v<š—¥ÔC`&bŠà»Çc xJjÖ›²Ù”#ü¢Ù¼îÆ&<ïI§ƒ±Ñ^ÖïÙÒ|ù@!b‡OÚÓ÷‘?…ÛSwD„m 6ï€Ýë®X L'*Šéf døÓmÒ)pÓ›ÑÓM/‚qÉØ-Á4ß)Cü‚·¨>d+,Û°”í/”¼|6LR:Ý +aõ ²‚cëË/ªW½yˆEb$A‚«³QÜ8zTÏÈ
ƒ´ub0ÓL!‡zNVgÂ%*ùºÄððªGåõý¹n¼DŽJ¤Æš#åi„•ÊLŒr²p*'2¡Ä¼Y¡‰1¹a-Ãh  +YÕô(y:K$›,±³lÆN{8oj'ãó|ß‘˜*1ú‹=Õt9z’©#5ƒ96äœÉç&QÆEXè0yL ~}ƘÿÆôIÁÚBäóúèL §¤;B=¦À(f»Íæî êŒð¾,u^Rçtâ€iúÓ X稸ðXƒ +ÖêÓ T¡Š¨ŽÓh„ýo,ABeü—häIŽîi´§F@ë'ˆ¤i„þ¥ˆôü²â_á=@¡D*ûÚ²¢6^8ãýÓeE
‡¥ßh=JµV1X€ñ,@Û§‰ôIÞ{Ÿ×N %½‘êž"ˆZAˆR'cÔÊáÏþ®Áe£MõvE™Kuªy Æ«!TÁkÔ|Ã>sÆ°õÎ[8üÂ<X¤^©Ýؤärc]”œ›ì¼Ú4ñ%«ÝÎçEȧCt ¬“GèæAÐÊŽè6ØÐCdÓB9éÌÌrÙ…Ç%fÖ‘B«WXÉ5±ÒêûJ«áJëû¢ë(Ńݮ¯yFM•ßÊü´+WŬkf¥t0B4JbPç¹LäCì_Tú "tø^í|xµ»#Š{Ž,ל§Q(Ú`[—];Æìñ]uz—‹Ñ}Òc½Ê7%½ž%Tj:œŽê·WBQ–ÒÓ`èÍ!M,¨{uÕ¢°)“ †€ªÔ‰EhÞiÙÜS§j¼¡œ…Š–´/£º)Fˆqì¶2 3
$Ä:ô²ÙV=Ì¡ÜxQ¶s~x
Y…Qrx +3ã&d‚)àGàwà5-X’È7;òP$‚Èl¤k†Im£FZª¹Ø]Ü¡.îr®Î85–‚ ‚€âó”Ù+Vâ +4Š›w$k;*ÅBî\_ïîP«ÝŒÖÍõúݺ™•]ΆÇqÌüå‡×ïÞž]\ÆZ„Õéð5ì€RßÒiW$jÍöé_2¬òÏåjËÐhê†6v¹ä˜\CÄP +¹i‡ŠŠYÒÇ~œ#S¡½×“‘8|Ÿ„YHŽµöi0ßÚgþÐää‹âsî4üädÒT–h#-H4¤Kà“p/¤:(ö#z@FâRD°ÑÙÿ>Îendstream endobj -1994 0 obj << +2000 0 obj << /Type /Page -/Contents 1995 0 R -/Resources 1993 0 R +/Contents 2001 0 R +/Resources 1999 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1976 0 R +/Parent 1969 0 R >> endobj -1996 0 obj << -/D [1994 0 R /XYZ 85.0394 794.5015 null] +2002 0 obj << +/D [2000 0 R /XYZ 85.0394 794.5015 null] >> endobj -1997 0 obj << -/D [1994 0 R /XYZ 85.0394 613.3608 null] +2003 0 obj << +/D [2000 0 R /XYZ 85.0394 660.0058 null] >> endobj -1998 0 obj << -/D [1994 0 R /XYZ 85.0394 601.4057 null] +2004 0 obj << +/D [2000 0 R /XYZ 85.0394 648.0507 null] >> endobj -638 0 obj << -/D [1994 0 R /XYZ 85.0394 465.8716 null] +634 0 obj << +/D [2000 0 R /XYZ 85.0394 560.3373 null] >> endobj -1999 0 obj << -/D [1994 0 R /XYZ 85.0394 438.5672 null] +2005 0 obj << +/D [2000 0 R /XYZ 85.0394 535.9977 null] >> endobj -2000 0 obj << -/D [1994 0 R /XYZ 85.0394 397.0946 null] +2006 0 obj << +/D [2000 0 R /XYZ 85.0394 336.1431 null] >> endobj -2001 0 obj << -/D [1994 0 R /XYZ 85.0394 385.1395 null] +2007 0 obj << +/D [2000 0 R /XYZ 85.0394 324.188 null] >> endobj -642 0 obj << -/D [1994 0 R /XYZ 85.0394 216.4249 null] +638 0 obj << +/D [2000 0 R /XYZ 85.0394 188.6539 null] >> endobj -2002 0 obj << -/D [1994 0 R /XYZ 85.0394 186.4354 null] +2008 0 obj << +/D [2000 0 R /XYZ 85.0394 161.3494 null] >> endobj -2003 0 obj << -/D [1994 0 R /XYZ 85.0394 97.1422 null] +2009 0 obj << +/D [2000 0 R /XYZ 85.0394 119.8769 null] >> endobj -2004 0 obj << -/D [1994 0 R /XYZ 85.0394 85.1871 null] +2010 0 obj << +/D [2000 0 R /XYZ 85.0394 107.9217 null] >> endobj -1993 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R /F21 938 0 R >> +1999 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2007 0 obj << -/Length 2116 +2013 0 obj << +/Length 2796 /Filter /FlateDecode >> stream -xÚµXÝsÛ6×_Á‡{ fJßnn:u9§N,÷µ¾i’Z¢mÎP¤"RqÜ¿þ_)ÓqziÇ3æ -X,v±»¿]€DþH$$’šê(Õ LD´ÞNpts¯'Äó$)ésý´š|ÁÒH#-©ŒV·=Y -a¥H´Ú¼‹%bh -püûÕb6M¨ÀñÅü
P„qAãóŸý²š-Ý„ô¬?ͯ܈vŸó«ÅÅüõ¯Ë³iÊãÕüjᆗ³‹Ùr¶8ŸM?¬~žÌVÊ}³fFß“wp´ë~ž`Ä´ÑüÀˆhM£í„†g,Œ”“·“ÿt{³véØ1QFP*X”0ŽlßgzÊLYcÃÍÕZ~•Ž„"×G‰b°3œü³²Ü:²<VE].9E\rÙ¹œÒˆ¤… Æç’"–¥„ÁASn}¾0î°œ ɉa$ óØr\MIâü§ñçLœÒ4’RAl)n¶Ž>Fa®5sL=ÚÚz<;ðý|K£W5XõŒ -‚“¾dk”¤½8†ð.Ø_¥(å0e4^ÝçÎ*Éz¬àD,H°êWËùë¹·~ ’CD,=_YTy3M˜ÆqQ¹oâ-‘OŽ?gÛ]X²½Ÿº5SõÞýØíë)ñ§bSTwnh]W[Þz¡õ—„ƒ–piL£¤s)¨WWå#ð¿§4u”AqìÇ7µûVuë‰|7MºNEXžív¹c„8CIÐÅL®ÛCV:úÐdw¹1òŸslû¸›; -„–¡GDú6øæ<–’sžôs>ð
é -8”¦“œti—P¥âËŽzïh/Jéø¢ÞoGaô!kQTE[d¥‰ós“¿Ç˜VÖOvÖ-]^œ»¨ÂQYåyî(7‡›&ÿxÈ«6H»ÉóÊQùç6¯6ùÆÄ,ÄÈõ½Ñj$&]´€Ý ƒÓèL -Hòr\ßÛ°cÔAPÌùFœ£€(³›¼tsfƒHf¸ÿÙ]ü¦y¹1¶2Ö²8kvùÞ% -ñ¦ÚB˜vå‡Ä…«'Ä×j;8Sã<gí¾YõèˆCõz¸ÂBÊÆ8©DÈôk,À—‘èV†œ%>=‰ÍÝ}Ó:L
¦@Á‰ÎìFÂW7‹`nÂ7î›ÙiÐØ뢫7$p6 ƒÜ1ÚHF¿ "\DEÊ"©Êû0"HLú"G@B¤ -Ñ#kó˜8àÉÿSÜÜóææù¥_ΖÐY¸}±4v=dm^ÜŒo!•ïïFÂ…@¬ -ÎÕWQTg~›_°µÍ/øýp¬)fÖ]Y¼zEe!bD/;µa²ðÂw5,1Іe<¿»Z†°ê@óy7A—Ç™ölA|“\ñÄæµI§Ï\C;e{8Ò;ò€lE{?Z4Á‹ŒÒ? iÐœÂk¸ôBÏ^›jþP4ù ¿TÀû)ÿ³:ãÍÊßåXšBË…Õ0F(p<ci®<D×'˜é*оßÊñ|Ê÷žËžÈQŽrÒ8™0øèFï3¿ßn_ØëÙÉÒ¼‘¥©øŠ[0à
ç!®êjÄšÇ&i +xÚÍZÝoÜ6÷_±÷ Y†¢(‡CÓÄî¹ÈÙ9g‹Mó ïj½´Òf¥ãþõ7Ã!µ’,Ûé%À +TãápHçã7܈‡ÿÄL',±ÒÎŒ™æBÏ–Û>»…±ŸO„—™¡y_ê§ÅÉËsef–ÙD&³Åº§+e<MÅl±ú%L±SÐÀ£ß¯.ÏNçRóèüâ-PBÅZF¯ÿùêÝâìš/úÓÅåâXú¼¾º<¿øù×ëW§&ŽW—ľ>;?»>»|}vúqñËÉÙ¢ÛrÿX‚+Ü陸ùl§ûå„3eS=»ƒ?8ÖÊÙö$ÖŠéX©À)OÞŸü»SØuS§ÌKÅ©Œ³XˆÇW¥8¬êI˜iqŸÃEç)Cp4|3nùÑðRöo%³©™mY¢¤rvÿÛbñö¶”ªh±ÉOçJ¦ž§¤‰VÅþT¤Q¾l‹Ï~0kéÛ’´‰ÚzGœzíAÏŸuå©?8—¥—ÿƒk~“¯kÒ<RöþêŒâÞ¢_on–hfµ–³¹Dà Vù:;”-Ý´Û9¨ßùç|ïÝÀ»Ï]Ñnꃟ‘ѧÙåË·¹)jò–Ý&6`TaÁ”={Û*«˜‚h˜ÍƒÀwô + ‚)—O{…ÒÌHaMƒ¥À +pÒeË
RÓ |—YEÄ&Cç@*£ÿnèëî‰&_ÖÕŠh´v^ú?Šj$y}ý‰$ºÛa廢,ýÚuÕ:ªË)Ï œ²©ïèe]ÝUƒþ}¸Ø=¸FCÐY±t; +¯SYA©ÃJ4y“‹\™«üTD>ÆPM‡ªh½ÍÞ½š˜Ñ0Õ‡ÛÍHXÐ]㬿TþeWË¢-ï‰ßå‚|å4%”Mp(ÿ’mweþýáåy,z'äCçÅ·$60„´,Mq”b^ÌRÚŒêeæ“BpÓUÈÊ!ç<º¨Ðu½{þ+ÛíŠàà…÷ã‹wŸã‰Õa“2f6t×¹×£,ªl‹Tj#JÍM]Ú¢®hÓv»qÙ$ +²1Äë>«š2ór0²¦°ÜÒ¬‹wÄÍV+¯´¡w‰0€‹úŒÜ¢ñâËM[[÷枸ÛÖ"]8Ũ;¥²_EQÍÝú€ X¶ßev²-¬–þVVõ6+ÜyL”aºRi½[\áK"°UX’@t ©på +&ÑäÄ×5ÇmÁ
Öéê!l³U>ÔTæYÓÎÛz¾›Ö¥¼yØó 6ÅmEu,«°Â¥´ÑÜŽI\žËV$Qæk'«Üµ g_Ün ëÍcn +@¤l<ª”W¢Ó I›¨ÙøÝ×ï¸1œóâß!´ŽXæ4<ti’¼ÛÔ^emFÌcÍ6íÁ„BÙߌ³ŸNC|Ž¯¬w-Î?É1GÂTân]A\m!ù»ÒO à +à6á9å‘9|ðÒlYo?‹bþ‡1 `MÍR¨”ÿ«êß;É×#š0ã1 +¢5ý+-|˜12j÷v¢ ¥Ly,ú0º‡
(FF$³òD‹ÔyÇeÑèæ‚ ŒV2öˆæ +¼05ü_F^A@'7ÒÌ@1\¬q.2û4ŒÇÖ*êÑî¬G8ÆË‹œ½©áD³Þ¡‚ây_³;T2è@Sè<
¬o9㩦°È.Q}ôÑ"œ*¤ ’ë«D#jH&$WBñÀ±¨ŽÀÑù)„Éö~hC„üy´ÛקBGŸªíÈÂ&”¦·=Pû¨rÚ°Qå#ÌVW®ó +@•ž¿ªé[Õ'ò%` +0hën¸wG¥xåE[ Ž
+ ‚d ÔnšüÓ!¯Ú í&Ï+¢ò/€ôWùŠQçùÛw5á“úêŽ0°Fw÷²ÓäåÚÓá)¨Ìš&4Ó«|‡kVá±Ð½?ñyözïì©å·‡Æ+»ñœz=zoj<Œö{aÝ!-ãI¬Ý!§•¿é¿×v»Z–‡UÞ=4¯^(pu“ˆ©l*ÇÙT +íå^L¨Š²]\¾~û뛳©>‚ÈÈ£&²WµšP)c¦ :‹·dpW(m–#I ™ª^<0á#blù#}ðõ"kçػ׆gãà·s;%)õ¥è~Uè,€(³›¼¤1\ÀµJöÞ4hĵLxVÞ75»|O \DÜ·Í£Úƒ.5÷Û›Ú¯H7½ó
¸h3ÚÝòà;Rç½ +ûó.YŽ;–WíØÛlß>âŸv9†Þõ_„`R÷6#NÙLrœîï/i†™¸»x·Ø(½ËnZø€+R®¾ +Ë!ªÐ:Š;ó¾Ê‡Ø\Æ)1 +¡Â…ï><'†£òBïPûi´KbÝË ²úÒo(ITlé=}ªäw«)Äî&Qò›²„Ž!¦¡{4†I,sßœ$‚ÂyOãDŽÐrŒ©gS„¥ˆÇLG?J*3øcît +Ñ>…èA +ÑÇÝp‚”Œ‰Ë3ð‚‘Ïâ…y̱¥éèÞ†¾‡sïá½òrÞÿ)fˆ±ºâ2ÜajÁ‰zÑò=:߶Ð+ÖÓ5Í5`î7îç‘œ=öO + ⿘ø endobj -2006 0 obj << +2012 0 obj << /Type /Page -/Contents 2007 0 R -/Resources 2005 0 R +/Contents 2013 0 R +/Resources 2011 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1976 0 R +/Parent 2021 0 R >> endobj -2008 0 obj << -/D [2006 0 R /XYZ 56.6929 794.5015 null] +2014 0 obj << +/D [2012 0 R /XYZ 56.6929 794.5015 null] +>> endobj +642 0 obj << +/D [2012 0 R /XYZ 56.6929 647.5054 null] +>> endobj +2015 0 obj << +/D [2012 0 R /XYZ 56.6929 617.516 null] +>> endobj +2016 0 obj << +/D [2012 0 R /XYZ 56.6929 528.2228 null] +>> endobj +2017 0 obj << +/D [2012 0 R /XYZ 56.6929 516.2676 null] >> endobj 646 0 obj << -/D [2006 0 R /XYZ 56.6929 617.17 null] +/D [2012 0 R /XYZ 56.6929 321.585 null] >> endobj -2009 0 obj << -/D [2006 0 R /XYZ 56.6929 591.42 null] +2018 0 obj << +/D [2012 0 R /XYZ 56.6929 297.1352 null] >> endobj 650 0 obj << -/D [2006 0 R /XYZ 56.6929 518.3317 null] +/D [2012 0 R /XYZ 56.6929 227.8928 null] >> endobj -2010 0 obj << -/D [2006 0 R /XYZ 56.6929 489.3118 null] +2019 0 obj << +/D [2012 0 R /XYZ 56.6929 200.1731 null] >> endobj 654 0 obj << -/D [2006 0 R /XYZ 56.6929 437.3327 null] ->> endobj -2011 0 obj << -/D [2006 0 R /XYZ 56.6929 411.1024 null] +/D [2012 0 R /XYZ 56.6929 151.1547 null] >> endobj -658 0 obj << -/D [2006 0 R /XYZ 56.6929 208.889 null] ->> endobj -2012 0 obj << -/D [2006 0 R /XYZ 56.6929 179.8493 null] +2020 0 obj << +/D [2012 0 R /XYZ 56.6929 126.2246 null] >> endobj -2005 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F63 1364 0 R /F21 938 0 R /F11 1451 0 R /F41 1218 0 R /F53 1313 0 R >> +2011 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F39 1161 0 R /F62 1361 0 R /F63 1364 0 R /F11 1451 0 R /F53 1313 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2015 0 obj << -/Length 1853 +2024 0 obj << +/Length 2015 /Filter /FlateDecode >> stream -xÚµX[oã¶~÷¯Š -õ}î}üÄ£X÷k3•g&úœ‰<—Ѳ§bF+ÕÌ,zw½í -ÉòÜèn±<JrŤLó·±h¬@6;¡öQL˜åû(J Árc$†1çÌ -ˆž5È–RGèaÏ™3“jŒ‚3£$hî9nûI*â ü—ñ«x -O• MBYƒMBA_ëMÞ¯ëG¢ÖsA½eØ;y,Û”Ôð;\3µªjŠÛÖÍ»ì
3×W<þ\äz~èòºD÷H›ÅóÍzI”O&$0™~ ²LˆåŠz»q}1spD;ØËzѹe©‚´h×ê·•?6PQ²oaßÖœ;Š±bßPDDZ -ÔiÓ¡<¸g2íz“)ËtÞ”ÛÌÍ‹í¢NêzÑ!9͘Ժ)ªh -ÛšÀ0]/—X'¯À™V
Ð'ª -ØȬ…ã -(–+™‘y -MæœÊ‰ #}LúJx隯\Æk¢oÐ{žú“Æà hbj{_¹ç/füÞôE»éÚ³Š&¿”XjHmW3‡íq…uãåMn*¨9
þ;Š.ek)JÓX¬1¥z@±z¹À)´Õ™Jµ¥™ -[Í*Öi~è³}¨¼N¡n¼Ž-aÛ&Á'ö2ùð
„Tp¶ìd¶NʤÁK Ñ„àé.µÓØû‹Îû¢òmßßX Ñ5ü«v« -ÚÉÐwDb,„«áh×!pédø·WD“Ÿ‡R^'sªçª©ŸVlU‡F²ŒËS‹£»Âš(6…áÅuaåLHc›B[U—F2gYfóv™½€1 rÖè\} -n:
Ôo¨ÿ¤ü_*Q<g -Tymß -Øa’ÌšTµ\Â)WùܪÆÖ ÓxJ%YÔŽæ*·)]ØäFâ¬Ö[OL¼îˆî/K~ójñ•¨Y9G–¹Ï}øžûþÔWLúf y¶+K(œN~|tÕ~ÒX}pHÿWWÁË Ýݦ(L¥)]R|†3è3]¤¯D?¸êx}ÕâtåêŠ('¥W~ÂEš|Þ–DȱВŸžÖ›: nï‰x'u{óg·©Â]ª1äÀú™[¸‡/*»&WM7åý‘&'lhBçXLW…pÿ\\ŒÙ`ü9hð!$º³‡´½__]ã.…žÈÞ&$káX×5+Dûî‰$â'Fw4Þ
Ç¿ÇgløÇàý‡›áiPð òŒ†óÑà}X<c¼»Ã¶-jÎŒâç‚îÍø
A<â
:œÐ].è°J¼a•ø_äQ÷ˆc@-×߉á“'‚ÊÓ@Édƺ
À÷Ýi&Î7äuœ«áA1W»²—ôVÀ¡ò÷3K5ƒ°¼šñþ_ôÐMei<Z7xtøû
ßW ¬ð¶|wU9¼>÷Ê<onFìðÈ)W^Œ Wì†#À)‹.wÞ‡SžžšžoÁÐ5v×”MPÈ î"å°Ë„*y¢¦?…ž‚ϻΠ-iûù _üuýËíÝ$ Å=h²WÂÕì¬+NÃÁ@âø§‘}w¬QdßÐ(¨ÉxÙˆŒ¬rgŽèrK÷ÆFýFû7wÊã"e—»7ž,R©Nßx\äÑ.Bnƒ±‡L_;2ãô½]Ú´úBÀµÝXYxð[•ò*Wð·ܾñK%R.2xðKx«ò¬ë§J¾{Å|ó£û´e*ËdûWÅÖ½˜k¦<•à‚X¾isûÒFeÌdþ¥û +xÚµ]sâ6ð_ÁCÌLÓ·í>•&äJ'!WB{^ïÁ<8‡Íåòï»ÒJ`ß5™k‡´^V»«ý’XŸÂõSE¨Èd?É$Q”©þ|Ó£ý{˜{Ûcž&Dq“êçYïÍ¥HúÉ4×ýÙ²Á+%4MY¶øÿ2|7M1W4Òd+M£ŸÇ“Äd8œßL.ÇoŸ‰Œfã› ¢§£ËÑt49
b&¤âÀ@xÝLFHt9¾
>Î~íf‘›j1*¬¼Ÿz>Òþ´ûµG‰ÈRÕ„JX–ñþ¦'• J +0ëÞmï·ÃƬ[Úe&%R¢RžtØI².;É„è$A;ÝLÇoÇ ·¦42_òÍÃÚy¹!V5à3F2¥¸#~ÿþý (Ï'Ãkkàëáxߎ¦€¹aÑ›KλAI"¨v,Š +g>í‹ÏùÚlkü®K\Û’ø°6 Û“ÑŸÃëwW#r~sMPh/ŠnKÒ&D±ž±3¤Žµ=`Ehdµ›Ju6žœ_ý~áOü¢Ø™y]|6ÝjrMœ€ãwû´ó/?vl,QLKXàÌ6p„J4—Ü.°U¾éÚZo0&<á‡Vå Ê]q_l;ø€d©Vì#êÜÅ.#Œ«ÄÓ¯lì)žò“Œ¤R°?ëP1ŒPi•¥$I`;;95ùöi”oD»K£rnª +gjw( +œ3$‘HÀõt•9F;Ž«Üc ìÍ— åL òÀ|¿Ã9¸[K¦N?‘¯•)(¿1éÅ"I4mû(&™†“q0º«^ ³–nfQnò@îÜÑAHóÙì<•³È‘OŠ©' Ÿ»Êý~»¢Ü.íÈ7šY:óM;& ßHüªÜÎM‹-xÓ$…Õö¨¦#roÌ;c¶¡ž9š¶«T*ª‰¦üE¥’q’eJv—JÈÀ™ œëìë¼p^+Ú¬Ž‡„ ‰b‡Š +&;h™ªƒŽCf–Œa™júœÒ¡¬sR¢YÿÊ‹fðÏ£“xJ¢I©ˆL©´[÷?õmÚÌ2D
Øéz´C¼oxÿ¢ú
¥ã¸ÉÙ)¥›~ÀxB¨#©3Ì .C_ž bf´5 + ”6RN…Sͤ±Ñà"ÁbÃ2aôXDµ*÷ëRÞÄíLU—;ã±ù²†$ì&rŸu«² N´:=ÔÃa¢å¬
ßoé,¤-¡¡TAEwiÁÊ.µ« iÓ…«{—[¤y\›¹‰& +.Udþì™_ŸX;?q’(-šÎ•» äúj®£¹ïakƒø‡Êì +ã¹@…)«rï +nž¼¸Úa›½öͯ¹Ö ËZ±ojõ +Fü+ŒÐ[Ø·5Lƒt/<>þB¦ü5L ùêJ›}UîxN¦‡¢ýÝמ7!"MyóÝ|ЂŽ€ÎÀåŒL³ç¢ž¹Oeÿ°žÖ1endstream endobj -2014 0 obj << +2023 0 obj << /Type /Page -/Contents 2015 0 R -/Resources 2013 0 R +/Contents 2024 0 R +/Resources 2022 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1976 0 R +/Parent 2021 0 R >> endobj -2016 0 obj << -/D [2014 0 R /XYZ 85.0394 794.5015 null] +2025 0 obj << +/D [2023 0 R /XYZ 85.0394 794.5015 null] >> endobj -662 0 obj << -/D [2014 0 R /XYZ 85.0394 655.4043 null] +658 0 obj << +/D [2023 0 R /XYZ 85.0394 645.1438 null] >> endobj -2017 0 obj << -/D [2014 0 R /XYZ 85.0394 633.1281 null] +2026 0 obj << +/D [2023 0 R /XYZ 85.0394 617.8288 null] >> endobj -666 0 obj << -/D [2014 0 R /XYZ 85.0394 552.1893 null] +662 0 obj << +/D [2023 0 R /XYZ 85.0394 390.8337 null] >> endobj -2018 0 obj << -/D [2014 0 R /XYZ 85.0394 525.0283 null] +2027 0 obj << +/D [2023 0 R /XYZ 85.0394 367.3195 null] >> endobj -2019 0 obj << -/D [2014 0 R /XYZ 85.0394 90.0274 null] +666 0 obj << +/D [2023 0 R /XYZ 85.0394 281.8762 null] >> endobj -2020 0 obj << -/D [2014 0 R /XYZ 85.0394 78.0723 null] +2028 0 obj << +/D [2023 0 R /XYZ 85.0394 253.4771 null] >> endobj -2013 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F63 1364 0 R /F21 938 0 R /F53 1313 0 R /F41 1218 0 R >> +2022 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F53 1313 0 R /F62 1361 0 R /F63 1364 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2023 0 obj << -/Length 3601 +2031 0 obj << +/Length 2817 /Filter /FlateDecode >> stream -xÚÝËrÛÈñ®¯àÁUªDì¼€rÓ:’£-GNl¥*¯ ’(ƒ -·ûí‚ù2Ž‚Ù˜ÏãX̶*~ ¤t3ÅŇ‹´ -,ŠcÏ í¡ÎÒ+ - -»!±jÒl™o“‚Æ}™o*÷5#”æ»$M}‡„¡U[rc2§¾ØÅD*î]£oyLò"Y™]m\-3Á(u[ÕÅ5-vtVÀ¦¤I5Z—žNp#„´H‹N]ù±C2Œ¨øH«ec"õÉ#5HpìĨš81ðO„„"ö6 ½Éetêú: û2i‚¤jtcBÇ…¯e«gÿšŠ5ÀÐnNPÃðևݎx½¶¦LÚ¿—ùÂpñ…¸ -ås,¡àû’qWŽ?Bþ[ S+-¦¹§¼°&da?6]êBŒ!†ùŠÆyCã'ú …††ö=BlC;#4"ó©ì§gYL.ìRfršÍÀÁÜÐÁ§4_à[b3»Ä‚Êv l6ž˜ƒI·1ëØW8ô=òrYÒ¬Ñß@¤®=ŠbÃÉÏRÞ²Úî’&_äEÞ˜ W¹{ÂÇ,Ù¹IFa‰Áp=3pý(nù«©xŠKÓÿN¦ð„º!Õæ®ë2ÿJ‘u@$„6/ÓÜ|ù°8TÃû,á&àC9µô0²¥È+GºÑÈž.Vô‹ -ÐHŸcîgFS|³Vña’mDϘ$[}0|›Í›j^ävÆ„-ŠuKÖY‰ù‰1êYeÂÆ£d;¹³u $í‘©;’|Âså(,k™ãí&Ûç³O6µš(ˆœD<<¼ìKÊ¥]µ¿Œ¼C‘Õþ·ì%dÊS](0€±‹¡mú5Öˆ~íTfšÀ1¥¤ã&{W#OÎ6K‡ò -ŸŠ"N$Ï:c0)é}úYe¹ÿ «È×±>_”Sj¬¢³,:'êp2#í~3gd¼ÿ/ã0?!ã\»Â2,·µSX¹Mšå†&H»¼¯Xiž°Ö-Ì8:Ó6¶µó=Å9+·üÿNn{ñ³äÖÑþå ÝŽ“r+C?Rã•[Å|a5ö¸ûö£…)Õ"± jÊ]`Ï«‡ÈÝmL.þ3É‚E:<O.ašTd‘õ<d3½‰L¤Vñ®2i$¬«îqÐì쇪u"þ¡fÏŸEÍîî¿{}û±7;¯ Í—(²|F¼ÿXøìÑPh`AŠ>—J$Ä01ñ¶ -v`ZÃ<]©ëÂCݦ(onîoÞ›ºÇÃÍTMBBî--Jsk -KzæÑÆ„ÝÓlö¥ÉJŒgí÷2u!‚5¬AÛ^µ…5)•X쮯ôDh#õÂö± “46'Š øÒ;Î…ÀªÙៈš´rq}‹H
)uåpéW+»£`¦½Çë·×>’‡^<Óúã0)ÔP»o}9çŒ1ï:Móþ!·¹»Ø¹Ø”šá“/ಗóZ̃”d.çÔ|þ¨¼ãèhŠ?Ž…8ÛÍDŸz3iSšÞ‰6}´‡P©ˆ~Øî†ëˆŸØ#~N† ¦ÐÉIE>»„)zþ@„«„3æ3Õ>£ì“§)GÌQZº’@µ™Íˆzy>=N@²Ô•û¹SbÑLzììpµ¨ÞÀ'Ô,ò2Ùûëmø ®G¾}N³ÅRÀ¬À{‰ø“d0he+Mš¤5¹/›C[ÃÄïjµ!=~X]ðŽ£m²ÿ”°sù–pªŸ§E•¤ÝlîJl¨§T7+”P³ÛCÆ„1&öûǬ}†aí"k ×è›P'î=K…CKˆœ¸>/ÌdŽ¤Ã -åx!‹«ƒ“—±É¸òVÄr`x3]ê¿jß°j”α -ÖÅÅ¿ã"'f&ÂYyX»sá‰3B¤± -ú&Ú7JƒV¯¡ïæ 0N˜G¶Pžz
cüO“n.kÐ*âмSØq,$|Á"·‡<‰PÃOø‡’‰g!L
Úö ÐXŵ{ÕEÃjïEv:mŽcB‰h”šT`ÌŒñg«ÆåmöIY¯zy‚iŸè0T¨,ŽRƒ®º%‡Ø›Øw*nË“èå Sî4¦:å…¾QÞn‘3ØoÕúøt_SD•tû¶ÚŪªD)㒤̳¯íÀfŠx„9ëtå#ÈN¶'…¥ŠºNa->ÄqÊ{'üsEøÊÙ«‰÷”4ˆþfh È2«k¢‡„ ¹zS¨Â©½µ©-‡¶Æ¬µÖæ†Ô#®/¹õÒN¸/„œ£—©¦•—Ž"ma§*Û-›mLggݲ)Å„ðY1ñ”ä2RÒJô:ÉKß=F~H=ôP×E7_cáVòÎ%~KþÀlŸG -1—àŸgB‡R³èêœQÅîÿ1‹TÈendstream +xÚåZÝÛ6ß¿Â(œX³üDñÞÜÔI·H6½(.̓lѶp²äZr¶›¿¾C)K^ÚÙkr¸‡ƒDñc8œ/þfd6¢ðc£8!‰âj$UDbÊâÑr{EGk{}ÅÜœ‰Ÿ4éÏúa~õý+!GŠ¨„'£ùªG+%4MÙhž'Dk @Çÿzw7»žð˜Ž_ݾQÌÇ/šþ2ŸÝã@â¦þp{÷#ö(|¼|w÷êöõ?ï§×2ÏoßÝa÷ýìÕì~v÷rvýqþóÕlÞ±Ü?£ÂðûûÕ‡t”Ãé~¾¢D¨4=À%L)>Ú^E± q$„ï)¯Þ_ý£#صKƒbb”p‘ð€œ"’S¬H"¸°rb\JÌÞœÜÞM¦?þxO¦÷¿LA" ÜMßΰég†æ‚¾Åyo3:špEÒ4µ»¼Ö•ÞgñÉxœá£Ñi$ãz…S7\åØxû+>÷×,ëemŸy¬‰4ßÕž^»Ñ~Áß$ SÇÅzã6Øt$›"ws‹fÀÌï —ãô¦ÝÕÚn瞸áÈ?eimŽÉQqŒV·Ðh †ÂngéÁÛÃFWØBN¡±wÌAÓ1gV!sвÌÁsg\/uÓè܉y S/f©ìþ/ÞÝß¾¾½C…Í~¾ýåÍŒå8ñõìnv?{ÝN@»ØüéÝûù䶧n”pð¦ŽQ¤y~GñI¾[“D .-e/ýû¡ø”•ºrâjë°p-š›Ý›‘N +ÁŒQ5ŠiJ˜ZϵB "©< µm•çN#b’&q|ž\G–kúCR¦I$A`TÉ.Žó¾±CôU©E +Ÿ&‰•â>«Ö:àT2BIS;k¾±^•¤ãeVaÃF,xÖ•mHÆÐÑ>ÔØXÕûmów†‘‰ŒÙ¾4m½s«öø<öß´zgBg"Æ·žÔÆmò¥|ß´!2»À$¥Ðñáy€w„3»Êl¤wÃix‹@£ñÉ`÷(NÆSѶÞÈÌ4L:Šî@£¯ö¤·‡ÆÑ\èÉîê¦h‹Oú‰QF$Ï@o}~Më€j ÎSˆ ýóivKÎO¡’©Ë†–¢"†g/7Í3ÍL0:Îu³ÜÝtzÄþúð +Ûæ¬O÷fÀWÙÉ3,s–˜ãÄnb$šááñÛ»2[1’˜pzep¡Ë£6ÞY¥lÖá®àƒ6~Äx~ø¸Æþ5‚¸q”AÙ7s¾µúÐîÆû8`ªÇú€Ã•FÌ%Ñ{¥Q÷2Ûéãâ§Â9E AÍðÐ7JæÐ `¸2<šÇ"[þ»)³fƒKYÔ_ÊÀ
/ù*@L=ež¸ '‘k²&b<!’ñô„;%]0²Án&M‰¤…¤OIÁª(.,ˆÅOØf(z×u••¥{·.ÏXsý`ôc{ÑxXÛDGãA%lë¼0Á]ïÈæXnLüvcï&Û®Ù˜f¹²ÁÛ¼¯ènqI7³AH¿Œ¨¥°wˆ.s·M‘·lš8BäYcÌVr|LBZpäSÉž«¨Œ¶E6òÃÒž&·0cY@½LB6”0o,« È•`I/F”zÕ"ÅÅ\҅بØnu^@À*ÝŽ ÿ‰“¹2 +ìh sPŽ5lñ3ž)³ø’EH"LÂŒ²&Š\\i¤0°ÐÕ9÷ŽŠÿpcµ÷áƨèãÇ + +398KøžšJ| ò”{Ùä
èUu‹BÉM]Zíü“H Ô®xÖmàNÁ:Aº‚Xà˜yç}†€tªr_¸³ ´_¶3É +æSlŽáîXÆmujø©Ñ¿sµÂÅb쳕DÛZ¸Áö˜ºà€
Ä0P¬ð½hñý¤ÐðÀuŸ +ÄýÂ@«eyÈus"KÑKq+ĆÁÏÁãñ²ÞXeÑZùs Îöea“Qè6Â0Ü„0“’¤ªæ/BxŠ bÒÿ£M™šuÌ£.w]WÅgDÖ1ŠžE•ðò¡*‰†çYÂ,à3vêäa²“È/º¡áýy¾XÑ/|eaáXøöE1.`O +B¹T«€ëŸH*ðÛFÛ–_¬U¼ße[Ó³!ÉUl£ØêI[OÊâ“ë±°%¢Ç)k÷Y#Ç×Àw +À£;™uà$Ý–¹ßï„SÆØ`Tè¿+ÕFï‹ÖÇ'—ÚC $oóù›Áº¬Zúï×éøPê†\J°ÑE—)‡": +™^TÑ%S¹·áÖÛ>kãý±¾CÀÆ™ô…e˜îj§0s›µË
v¶v{zŸM¥9`ìÔ^töÙ¿†õçÿËnûñìÖËþù$ýŠ³v›ÆÌÆ—¿Z°4%JºÏíãîË-l©ÖPSá,¼ ®#_w¶ÿª¸¤ ‘ ñeqè L¢EïYOšRÛ +dz`µ;V&…«{ endobj -2022 0 obj << +2030 0 obj << /Type /Page -/Contents 2023 0 R -/Resources 2021 0 R +/Contents 2031 0 R +/Resources 2029 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2025 0 R +/Parent 2021 0 R >> endobj -2024 0 obj << -/D [2022 0 R /XYZ 56.6929 794.5015 null] +2032 0 obj << +/D [2030 0 R /XYZ 56.6929 794.5015 null] >> endobj -670 0 obj << -/D [2022 0 R /XYZ 56.6929 306.3415 null] +2033 0 obj << +/D [2030 0 R /XYZ 56.6929 520.5289 null] >> endobj -1797 0 obj << -/D [2022 0 R /XYZ 56.6929 275.1221 null] +2034 0 obj << +/D [2030 0 R /XYZ 56.6929 508.5737 null] >> endobj -2021 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F14 964 0 R /F41 1218 0 R >> +2029 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F14 964 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2028 0 obj << -/Length 2797 +2037 0 obj << +/Length 3180 /Filter /FlateDecode >> stream -xÚÝZÝsÛ6÷_¡{“§ƒ ïžòa÷œ™ÚíÎÜ\ÛJ‚-N(R);Î_»X€%ZNÍ\&“q-‹Åâ·‹Å1øÇGi1™Å#ÅQÂx2š-OØèê~<áŽgâ™&!×ÛÛ“×çR²(SBnïYiÄÒ”nç¿ßýûÍÏ·gק‘°±ŠN'‰b㷗ÑçÝÕåùÅ¿^¿9Õñøöâê’È×gçg×g—ïÎN'Y– -h\Û›[läZÞÜ^¼»9ýãöÃÉÙm7€pœIÔþÏ“ßþ`£9Œõà ‹d–&£GøÁ"žeb´<‰%±”žRžÜœüÒ jmÓ!£%2’Tè« >âq$c%zfK2š$Öl0ÒÓ g¬?Ò6o‹¦-f
ŽäˆÀúl4i¤t& -`Lo©&çyQæÓr‘~Õ¬ÜÌ=oYsÍêMu -’®@hyK¥GcG>Ü[QÑ×YR"Ý°àZniòª¨îï6%Mµ–ô<å}Ij0ÈÚs‡S§2V5ôÕUóE8 0ÐaÔ飣L`Q2)ðô¬3ÔU×AÞšûz]|öÒµ×Æ »«Ë²~„q:Ùf†ršhÀa³$)-£T}™»òH3Õ÷Ö¿ÕÈ«€î$£ì`¸ vD¹¢oÑ5qÙ¨Ü5Îô6„œ‰Hʘ”J¢8㱇‹jV/;ƒ]›?7¦i›]{I =pžÂ¾NçNäZËXD"MûZzt6®6Ë©©N)Îhë…~Hðëýå
U2ÝølÆW1ùlAæ¸úùÝÕû³=ô$RGB%êˆÖ@¨H¦Õh²øÿGLÆGĤH"³ôLÆ<â)Òö0ùËƬs -37$Snê²9̧£¡^~r‰¤_çW>y(Ìãi&ÆÏ{Áñ&àÈGLXHÙKN¤,R,£\í2_ºüêƬülô7Ãþ°íêX‘ù öÞzÚz‚eÓoʽñW>‡ b¤¥ -Ó…>HiÛé¶(¸§€&y,|Ç€ŒY{Sñ"ãg™µþëÊ!ÒSåÕÌ|9,ƒ†Ëƒƒè€¢LÕ¦òø»§-Ýœ`©ôø³92Øý¶™EÐÀ5DO»™r»¨fã“ÛÜQ>w¶l×yÕÜà|4Ó}Çi‹a§’¼„g – Š&×~Müb}-Ó8¨wáPﱊÇ*ñ±+*»„ ±K6v‹?€^@,àò/5·'RJ)ˆàS -üµŸRL|0.L†÷ßÍ,Žfðoø©ŒTªþʈ|‹g€Åœ%‡VŒ´ð§·iºèóþ;ƒ¸n̈°“¯S{‹üÊ{ä÷§;K¶9v¦(Çš‚¥¨2±É3~)yÆ*<iŠÞ?WÙÔZ3f¤©Ïëî„
«Ð9n 3kÐÜÏó6Ÿæ
l!a¾ØøU•îèæÓ¬Ìý¹–ùú#•~g ûüÇ©iÑzíý+õ'²PÈéc÷°ðűã1cšŽ‹–Hx0Ù¸Z:T„Ò*_CP\Û6en7ÌÚRº“¤X»S±h¨êcU?VŽ¿&ÒÔÐokçÁá/
¾]Xq‚#ñ›—
J¼ë@Њj›_þçúúæì‹h¹cotŽçßo^)3qÆ_8
aFT,é\ñ¦ž}4î`ûâõÕ/ÇaWÇÊ(«ß¥žúárœ…eœén9†ŠÊ´µuo S@)sôÞ¡ãÐð…)áñÆþm@Q€k¥Æ3:✫ðömïN2¥¶š“§Q’ûþ|ùK8™ÀÖ4ÖtPó -l?f›5ý¬Úò IÐÃcMux-K¥ðæVº[Zdµ·´2¸¥ÝV:HÊÞ2&ù±_U®¦h¼|×µo²*s¢á}ë'× ]0źùf¹²–R©»Av©~gL”®Ü¬Ì¬@qgãé“kEÙ×ô9ìû5WûÛLœÐ}œ&Y¤dæ[Ìê -9ï7ëî¾Òž–°¯¢+1ÐÄ_Ûƒu対–ukÊ'b";SêBW‘„`Þóã‡"²8Ñw
ÏyU™’*Ó»4nÐ1,lxô±g'fÈY!jj-TÐÆ,mf†ýØÑ¡Z½¹H XA3‡ŠîYj»éLòcž{×!´ˆ2hƒ¡êÖ÷#*\=c ùŸ_ -:.»tÓUµÆ"`eÚÕ†Çq$b•õÔÙ[:®´Ø—fã¡Mó÷gopL'˜ D|û†$‚%Ô½#énôov"èy1pLùb -{hˆÅyµÉ×OÄÌ_
EJžiæ^Çœ.b¼fA㻧+î¥KN,´ˆÃo›íì>‘‰Ý#SPÝú+N`¼ÍRyý7!±;Ô„Š¹ifëbjüØiý`"ÜÙÞåE»&ôÀ£ƒŠØ_¼IqøzGgôHë@o®è=p€*k^ø¢Â
j,¤Ý -ÎË]ÓsÏ6%¬?`v -ùû®y˜È)íQ -ì‹üÁ-'‚¡rs]Z´ªn‰êÓ@¥håQÚ/»N³Äh z.×BïM{m¤Ð.ða!×!i”øí|IAÖrtH¤îXæn±§˜Ù³UA)’[¯L¯
øgÕ“™’ÛXD
ŒUú×Nj>Aœ*É…†V^HèñäÀBNöW¿¶Ü.ܘ‡§Ï˜’Å‘”÷JÙ0Ȳý±{—¹¯ûÿ +xÚÝZKsã6¾ûWhO+WE^Éã<<Y§jíÄöVmm6J‚,ÖP¤"Rö(¿>Ýh +iÕ¦#%—ο™Ï‹¶¨«¼¤(Jã¨z³ÊÛÇŠÎ\°ÑD¨(S\Ù殫ˉ”lœ»¦(ÕÖî»4D4m^ÍóÍ%OÇs—e>µ[ìÛ݈ý";s•·ëu½iúmæÓ¢,Ú]¿GÛ…É]'õ†¾óíjÝ/÷g]¹fþϘ(*.èWàpD<®¡Ï
‘$iƒ`‘ñød±*R¼£"ÐmĔж²ÉŸô(xÄîŠP«ÔCÑÐw¶ÝÐ`ª¶Ü+Ê‹2Ÿâ$Ù¤+™;1óÎtîeu¢^4ŸÓgZTùf×-o1á Ÿà‰ð +!›#Öôi@²¢z$ÀtïŸ
EÕšMÀÖ<os¢švs™Ž·³vKí¸ü‚R3-ç|üñê1cº#¥Vùæ#hÂñŠÉT?,L(ë|¾ç+…©N¢LŠÔŽìBEdõ‚Ÿõ¦XYňŒ³y)À DY(D BŠ@D4¢¿í08)Å“Óà`Q*3}€ÛxC_óim.ùxÖš¹ë¦ïÔIñh*³ÉCö‚ô³¢9ùƒ
†p +ãG +œ0åó×uÓS™RÍø °A†¢%×·Ê·Ê·ð幜¢jŠ¹ñ2©x8ñÁo¹ÕõÀ`›øöX–ÖšköT3Š_
ÂÀˆ—Ë…´Àð
¹6†ÅŠƒ€ßÅ`E¯!F3u„hÔÆ×ÐÉ*ÿhz²ìõÌi>û¸]»ñ,öòXF°sØðØ)ÀÜ¢q¦ ’ˆóX
…¡h?¦£v¶~`áÁÇ™wb³‚£
g'êµN- +>+ˆw´p»#Å"¡eê6[ÊmµºÛJ¬ß@”ñÒö*t’ÑnÍ…ÕšÛý¬Hƒ›háß·¬í: +¨Wä4ûÖ-¿¨hÂÈ
kg¬˜Bæ¹q54gGm+¼Èg>“‚*m‘¾q<«IÁfëŸá2@LÈ|aU‚à+ëj=m7S“v·9ý‚”.ªY¹û²v(5«·¬Ÿ-É*3ï.€z6aãqÜ›
+öiÚ—šð“dãj»šZ˜&äÁ‘W쇩÷7÷”MØtã³Yè9ŒÅäÒ±ñí/ïnß_áB p¥±>£6*’%z4Ù°}˜”)¬”‰ˆ_Á$Q•Àä¯[³)ÌËìvp.Hž:@²+´…¤Ld€$Ò6¨€ï’˜úÃÈ&ìò…„…]Ž„õ;w”ÜîÖæe(žOßa6RɈ|— ³(cé+P”I)Ó1òí¶}¬?Š¾NäO +í¡ØÚBQ1 ˆ4BÑ~È +¹ÑÖ¸yóÒ wsÏgSÝ÷ja·¢_Á³ÈdI{â;¿.~.„»}œ+Ú8-·‡pOî.„•V+{犕]E€ÝèÄ +®’Hòìà=Ûµk»©ýÌ,·!z÷^-º]÷c½*ÚðÊdá%…æf‘oËv`á±óšÂ2£´y|»Rwt‰Ã‡¡zx®)ïf‰ê^ßJwU‹EíUì\Õî3ý»Þ-2ÆøJŒo+—S4¾}×µ¯².sâq÷ˆGÒ¥±{¡6ôl0¤È›;úIõþ‘9N}šŠ¼<S°HeÜ…³À9?öÅîñõ±ì‡6naendstream endobj -2027 0 obj << +2036 0 obj << /Type /Page -/Contents 2028 0 R -/Resources 2026 0 R +/Contents 2037 0 R +/Resources 2035 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2025 0 R -/Annots [ 2033 0 R ] ->> endobj -2033 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [84.0431 269.7901 145.2431 281.1822] -/Subtype /Link -/A << /S /GoTo /D (statschannels) >> +/Parent 2021 0 R >> endobj -2029 0 obj << -/D [2027 0 R /XYZ 85.0394 794.5015 null] +2038 0 obj << +/D [2036 0 R /XYZ 85.0394 794.5015 null] >> endobj -674 0 obj << -/D [2027 0 R /XYZ 85.0394 769.5949 null] +670 0 obj << +/D [2036 0 R /XYZ 85.0394 769.5949 null] >> endobj -2030 0 obj << -/D [2027 0 R /XYZ 85.0394 748.5408 null] +1797 0 obj << +/D [2036 0 R /XYZ 85.0394 752.4085 null] >> endobj -2031 0 obj << -/D [2027 0 R /XYZ 85.0394 686.2137 null] +674 0 obj << +/D [2036 0 R /XYZ 85.0394 542.1781 null] >> endobj -2032 0 obj << -/D [2027 0 R /XYZ 85.0394 674.2585 null] +2039 0 obj << +/D [2036 0 R /XYZ 85.0394 510.0725 null] >> endobj -678 0 obj << -/D [2027 0 R /XYZ 85.0394 255.5751 null] +2040 0 obj << +/D [2036 0 R /XYZ 85.0394 447.7453 null] >> endobj -1669 0 obj << -/D [2027 0 R /XYZ 85.0394 232.5802 null] +2041 0 obj << +/D [2036 0 R /XYZ 85.0394 435.7902 null] >> endobj -2026 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F48 1238 0 R >> +2035 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2036 0 obj << -/Length 2917 +2044 0 obj << +/Length 2603 /Filter /FlateDecode >> stream -xÚÍ[ÝsÛ6÷_¡Gj&Âá“ îÍíÔÖId¥×¹¦´HÇìH¤JRv}ý-° EÉ’iÙjFã\‹Å‹ý -£„‹oA³m¨)CBÁ…Cí+çÚCUÇuVÕÙ´Â÷³å|¥U¯TQ£àn¤fpÝ0FŒRÜöC#¡cT·ó†#FéÓ>Þ˼NËʳái—ÄH&—É]: ÁƒÛb6dÁ¬xÈòoH©ã›YZa¹ZÂÇù<.³ÿùúU§K!X0mºÄ¶wqtœ{K3HX”CÅ}–¤•Õ¥‚‹¢Ä*i<½ÃZXéÉÅ-ëFXíž‚„êŠu
fém=/*+³âÍ–ó¿d>}UÄ77®¿ô>‹ëFš ½zœß -'ñM6ËêG»Øü™à4I2Û8žaͼ¨Ýòƒâ<~Ä"<ñÙYN R2ß=ŽÎ–Pùm7œÿ¹K}…xÛ\ͳ$q¨qÝ.[Nÿl+,ÃxÒÔ}-þ•¯_?݆•EVkV#µQlÔÔ,‘jQ䉳=HFµp/¸ôlÉ©í¨iî¬Ë–QDhW*ñ Ù->ãÅb–M!©]³‘B€¥íx@ÖÚÚ+”ÆZö´¼w2ªç-pד…Œh!ÂÒ`Ê#¾È•IA$ø¡5OöªF´vöí(°òŦÅ:«Q3"ðôü¥”«ØÂt0
#ðÜFƒ·IÄØko_Ci¸›J?m
]pɃ34,nYm†Tm´V]¿m46 -^Ról¬ñ„eÓb'@ÂÛF´ -mzU†p.UǼI;³ü>žeÉjŸd¥®EùöôUö-ë%ÎÀ3ØwFuÄØï0â=±ˆ”šðЈÖ.¼ÿd7àtŒ‡Jöµw\›ÍØ`/eîˆzÄæA@‰ëžhA -E“-œ.ë»Ïåã8ý2“Hª`üåámU”™MïÓ•çÞk í>]i¯
Ò²t
ø?Óiý,ð!±&3C´æ}!B51Å´]*Æö—„ÕãÓ×ãÙ‘ôˆñ„€6bº/b -Œ~»-š¡‚müå·‹q?œÿ-rd]ÆyuÛì{ì²½àvÄ>^pD¶Q؃0†H ¡¼ÅéË"‰ë•5äàJ?¼gy<Ϧ>ðu<Þ†¯—üÈC -¬¡aOH!"M¤MHaw -íŽ#Ø\ŸæÕKŒ6òVi^?]G¨#†NÛ -¬'"ZjQ˜¸´¬\æÓØæUýáÀÐX•‹‚¦EG÷Á´#íc -±«1¡êÁ4DE‚µ˜Ú¼”î„Ïn"ô ‰r¹§‡•P{Îø<šŠ‘G+}a¶°ËUvÐaG¸#†P„„ö; aH¨;¾4‹ÝáÓ4¶ËŽ”‡Â2™ˆÓ}ìEÓb–<Š 9R}‹›k¢™FgaçõÒ¬ö£ù¹ 0!hìãræ,¦¤þ€¾Äø¨ííræÉyõÐ Û½Ý îíBËy£‹{rªŠ‡µbµ¡+ÚÃSŽ -N¨E»\ÿ.Ë*÷YŸ\o®O dþ2Íʯªµ±¼¶w_üš$®c²M[Pµ˜yªZŽh•É=·*€ë¥ÏwS"µb›Êd9[%±Ïue²{9Hx%lÄ@!#³½N¼ZÛ:óø6Õø'3’Ù㘥Êhë®ÏÇÖvüza7íO/0" ->â"Îfs¶`Ø‹¼—?;ˆãõÃ,¢$ìÛIb‘£¨Z_pñqü¬D‹H¨àó²<Àž÷3¸®$>^ËTH éÙfbšA©jíåog9½¼Úö -Y„è3v -|®´Õ·¹YÖXH²jëüiác1ÜŽ -ÝìÓÝêv·®í›ÝH²àß0µ%'œ-Tîî³-]~òŒ’Ä+ïöŸcØû[î¸l·©¸ .Ï
Uá?׋¿Æv)Ù¯ÓY\Už6k.Î?â·›/‹‹Fe‹í#w?‹°WßM»%¥·9øºçöU†+Cí'2içË2ƒ©Ã'©—å
Ë£a{gÎþ +xÚÍZMsÛ8½ûWèHU",>H€˜=%ŽqžDVv§v2J¢mÎJ¤F¤äx~ýv£AŠ²eQ±=[ªT…`£Ñh¼n<4h‰‡¢i¦´=cCqõ&óÞ»¾'Âëj¥A[ëýèäçÊô,³ZêÞèºe+f<ŽEo4ý-Ð,d}°Àƒ÷—l #\ú&Þᣋ«ÑÅéU`m,ƒÓŸß}
IK·’Ä?ýåòüâãס7ðË%‰‡gçgóËÓ³þï£O'g£fíE +®Ðû?O~û÷¦°ÖO'œ)G½;xáLX+{ó“0R, +•ª%³“«“/ÁV¯º4Á™TZî@MÊ]¨E–i%•Cmºš/Ò),KÇAUàÓÕmJ‚oœË™o—‹t’¡€´m0¾÷£@`€ÉDk2³¡#p§)«¤ÊÊ*›”o”†lù‡nYíGLŠ5oVKYä4W±À6DKé(‘›6(À…%)d%=—}鼨ÒÙ=)%“IZ–Ù˜¦î
¤ÐLEð‚Ù(’nÖu–€z,÷-¿I<¹Mò<QçÝmš“ø ˆYÎíc¼™r +qÄŒ‘¦5&§yEó¸å¡[[ÁÀŽœ:(tèè#ø ·‰'(|ã/ÓôÉVà‡S‰ú–7=jwnØ–þžÔ«µpmWéÄ»æ¶ „üèÁpËG Ñêðâ±5tƒbGô’›¨7PŠ ÑbØ©ýàœûDžiç ¼Ÿg;SœCޅ̆"tÆšáUú½¢Öu±œ'¾]>0Š{•Zãô&˽ô.«n©•Ðc–åéÛºùßô§k?„aVAž¡oÞ¼Ù½ŒÍŒ +æ5 +¨×†¶Üe>Þ,Sqä«ùw*¶1cƒEB{5‡Ô-ÓÒwúgB +d™dyQ‘´¼-îr’¹£G›ú|¸Ð‡$FgkT[ñ%žñÖèôć=)m]Q†¢¬¢aÆï=ÝaA@noi4$©T@Y6îÉ&4§[¸ªÙû3ß²Ó¶qµcõèÒ?f§Fúxjv/“ÒtóFç)fÆcÔ{äf€ÃOnšã¬>ÌÎqZ'Ïaç˜Rw T3#J*Ì]DZ‰ \Íç umEYµ“Õ
tÉŠrªÊQfI°p±-Ö9ÜQÑF@Úê¨EJw$ƤFaU{J~½ÝEŠ¤#€èÒëj^”è†@÷f«yN=.w¯U¡\7;è0˜’¼¼Ÿ‹)玱弢^#Hjºk¬(´1-½:)ýLMbcmCçR^Û<`Z:mæMiÍ}}ìˆ
º©†Fâ»>“dËôøZIÅuIcƒevsëÑsZ.3€øz“SmðNº$JsôdêJwÃqc=ÓšÆÌ ÌÊ‚$5s_4·Mm-͈M½l¤Û]ãUå¦Ð¡™×“êÞ‡Eá.÷ÔéSPΗ]i7/¦®¤Ÿø ¨Hg`cœVî4Â6%@2MÆÙøw:€¯…
ÞM§v\š@×nïAsžÜSƒ ›ôlm§)I2?=[”ü8äÁ¿Ý½ÇÛ«y6:Ô¤i6
¶Óïþ”†6¬ç.u·'©ƒŠRåÕ]ÑèpØYEÒ:mhP¹$DÊvt²;q}€#ïS
"ýéVÓ;6»ìXEü°÷ÕOvíë¢Åb§ÆØŸe‰üáA4D{XEÔ¦ßöHf”Ò=%#‡&<è#C¨X¨åö7†g
ª½h¡õäü4Žƒ)߬Gl›Ô+þR,¶Rn¾úئ:f¸ž‚#241U™Wž`uh¥‹¥[-WXE fqûêá}—‡ÌX#zí¹_¶ÄkG©˜Ýûè‘ÉzÄSÉðˆÛ\±!±H‚>"4Lÿ\ÁÝh¹bT¿ì8ÐØ…ê!ôŸ.>“zèÉÆY(/™¤°§@àMp <óS`¢ØSêÑ
·Kj炇äàÝ#מ‘=®6/Ãöo
—ÖŒ¡÷‡KÆ‚i¡ÔV¸ô…KÿŸÂ%Ÿ®¯®×çMv„+2Ìð&ZgÓ¼äÝ16QÙ¾_Ÿ}¸¼ÂÚ‚»Š½i²'!m9ûZ„õ7@J&´†3Àé5Rï“)âò/w—…òÙè®òrµXËŠ +[‚›Zpð–Í·!o-æˆ!WœIÞÅ9Pž+›#btuññù0»Ñ?äÆÅ×ÅQ¼&Ž"f°¤Ž³VJÁbe¢@âl +N³uºI^,Ѳt÷?ÒIµ÷ÖŠŽ8‘
g¡â…0!ãB׍Æ=Œ„Ü©ª‡5¨Ï´åêÅpŸî"-ÁAõ¯×K¦Ž <~ýõ|Ø押þcç2ÉËëú³ÇS$щíÆë#æˆP³4;°À×TB|]L“*¥\ÕR¼ é†÷Ã}žÌ³‰¯zâÛrýˆsW…,ÒaGE!4"QWø¡?8¨àê]^Â4ÈCX¦yµº–SG”LsÛµï¥sZ4(ŒÜl¹ÊñïÐ$æ¨o1åâ ÑÊÁÁ´åíïwÁ™ŽÂ®š@„L†HñNÊ8÷~Bè endobj -2035 0 obj << +2043 0 obj << /Type /Page -/Contents 2036 0 R -/Resources 2034 0 R +/Contents 2044 0 R +/Resources 2042 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2025 0 R +/Parent 2021 0 R +/Annots [ 2046 0 R ] >> endobj -2037 0 obj << -/D [2035 0 R /XYZ 56.6929 794.5015 null] +2046 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [55.6967 732.5838 116.8967 743.9759] +/Subtype /Link +/A << /S /GoTo /D (statschannels) >> +>> endobj +2045 0 obj << +/D [2043 0 R /XYZ 56.6929 794.5015 null] +>> endobj +678 0 obj << +/D [2043 0 R /XYZ 56.6929 718.3947 null] +>> endobj +1674 0 obj << +/D [2043 0 R /XYZ 56.6929 695.4159 null] >> endobj 682 0 obj << -/D [2035 0 R /XYZ 56.6929 741.8766 null] +/D [2043 0 R /XYZ 56.6929 492.5344 null] >> endobj -2038 0 obj << -/D [2035 0 R /XYZ 56.6929 717.2979 null] +2047 0 obj << +/D [2043 0 R /XYZ 56.6929 467.9557 null] >> endobj 686 0 obj << -/D [2035 0 R /XYZ 56.6929 609.8545 null] +/D [2043 0 R /XYZ 56.6929 360.5123 null] >> endobj -2039 0 obj << -/D [2035 0 R /XYZ 56.6929 587.5432 null] +2048 0 obj << +/D [2043 0 R /XYZ 56.6929 338.2011 null] >> endobj -2040 0 obj << -/D [2035 0 R /XYZ 56.6929 587.5432 null] +2049 0 obj << +/D [2043 0 R /XYZ 56.6929 338.2011 null] >> endobj -2041 0 obj << -/D [2035 0 R /XYZ 56.6929 575.5881 null] +2050 0 obj << +/D [2043 0 R /XYZ 56.6929 326.2459 null] >> endobj -2034 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> +2042 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2044 0 obj << -/Length 2524 +2053 0 obj << +/Length 2944 /Filter /FlateDecode >> stream -xÚÍ›[Sã8€ßùy4Ucî—}£˜ejº³Õ5—‡˜Æ³‰Žhö×ï9–+äâÒU)"˺}::G:2¬Gáõ¬"T8Ù3NE™ê
''´÷Þý|Âê2qS(K}¸;ùÇ¥0=Gœæºw÷´e µ–õîFDÿuöéî¢sE#MNc¥iôáêúÜç8ÿóñæúòêçßúg§FFwW7×>»qyÑ¿¸þxq;g9Ô—AuÝÛ;¬T×¼½»úx{ú×Ý/'w‹„ƒdT ôßNþø‹öF0Ö_N(ΪÞ3<PÂœã½É‰T‚()D“3>¹=ù¼h0x[U]MJ¬¸éÅŒsÂ$ßÜï‚B·uÒ)¢%¯z®½XN„rí,pÌ‚HJ³žQŽhÁE5Ÿg/ç³|:MFÈjð ³$>´*ÛO†óY‘>%§±04ú6OfiRø‡‡|† =?¦ÃGŸW>Ö%‹dö”Ì|z”ߘ ӪΠÃΡ—˜1â”âUwÉ÷aRÔÝ eóÉ}Õˆ`Qþàó’ïiQ¦ÙWÿäÛle„‚ŒðÞË lM‡Å`Õ×Q©Ÿ éTT¾LëÌA6ò‰áxP¯òžëù§b~_$ÐwVŽ_–{òº?ª -WØAmw)¶ „šß -&š‘cGŽ¿A˜ÑŽt͸Fó„ˆÊýø«/ó È3ÿ"ù>ÒÛÄ×ÏiùØÖðújÓ‚-jõŽSpO=Š%zY£UqSmIH$¹ÚgÄr¦ë&ƒïñ®½0*‰ãÕêÁªù´LóÈJg¢?©¢E’àƒõ00w”ÃY:+„0)š…«*œ8lˆ@µÁ}>/_Û!$‘––¶†8Ê*‹â_ξö|¢˜‚Eù8¬°ºtWÛÝ -<I2° ÔÙ%‘VmRSj !ÕÕÖP@@T²Vc4Ìg^½ŠižêÌJk諳]AR¾RÑF%áB5s<ÌçY‰?.üz!žÒ|^ø0>…×…°\àyÈk†J°ÓBõBû>‹
ƒ$TC“qSàPN@P\fùv' a
:G]ã.éx>KºÀ
LšQ"¯oÔÑCUÝO7X4t XnE°j¾\¯ œQb´tu§¥‹%—Tf¡ -à‹«)–`ö—Uß´ª€ï}9Q«æ€*ÀÇF×y™ü†ePÞ´XgÒ=¢C«Fnšó§tÔ¸º ˜×ñ‹»ð™÷ƒáŸUÙ‘5Ì'ÓA™Þ§ãxEOKl‚ÉÚBcÊ;[H,R°v”¸C¢3›Æ㺅ÿ™äÿ§?)åY²¶ë¯³ÆAÓºðOÅ=?¦Å:o¶T¯Q¤³yùŠ×Oþ^3°EáÔšºèzßÀ`Ãj7'[‹™c°œŒ~eÌ%.y=çóqåó€Ç¸È}æ@òyiVÖy¥7oJ…Æ*5ððM8é?a–n°²áÀ5@›V1Õj]H…É,/}â>ñ¿Õ~'sAu”ž²¨ª[´²ÎÌ|±él0\;e:L6ۻЖÊÞ5½ïÞdScƒ½Ó€ØnàXœ®ÆüåaÖO¾çY²Ëž¬\Qúþ‡•ªT9dŃ×}xÄ;NJÜÏm„Ù -ú¾ÿ@–ŠK퀩ÀK;)+@¿MGƒ2L—Ï;!|iÌkj…·†±1ƒ[AR-II‰…£@I û:áøÉbúF”è^‹dO–œ‡eÉÇ’[bé8Ö*Á‰´’p€#îkºYž¿À‰/zró -æpÚ4Lt¹e\¥l‰ß>*¸7¿P°#Ö?nà@£l—Cæ–ã}wÈWoп«½ù‚3?ØïY*º\17Љuf‰ß>ú·?¿@°c^¿°Ó³g:®,‘B.nunçCüd¨“ßï+·8›n$ -l1m%ÚŠzÌ - ›>ëx'Q©‰4N6D7D,ߊsC -Àzo€z€pG«Õw…ªãJ’1î¹úËß*%©6Q¿¿®¹2ßjq¢-N -Uí¸¡dT'êë—N½Ný^œ¨ÇŠÓZüÞÅm§é ˼+¾þr~óëÙÕ5~n.UÔ‡çn˜m¥ÝéU’õÊ6¿péø¢ÈBY®kÏ{ÑÇÿØøÏå©RÑÙÕ¿ñ»b+£þn—çXêAmü׬½;Ì@Ôc¥©%~ãÒᨵ%Ô0ï§/oú¿^ÀRŽe¥ˆ—³Y7ÄE¥ÝÙ‚½—ì—¨äÕ†™*¦×}¯N{`wýö˜¤³xøÝtHHPI„p¬'Á¶cl•‡%ÊrÓdÿ?ûÞÿendstream +xÚÍ[Isã6¾ûWèHWEìËÜ:m;ãÔÄîÈÎT*Ë–ènf$QMRv{~ý<l$Q’ÝV§\: +óyB!̽¹µ“ÂÌ›ÛË÷7§Þþxr~Ûm Ý$ÁÌrÿùä÷?ñ`{ýñ#f´<ÂFÄ:˜pÁàŒÅ–éÉÍÉÏÁ¤×Mís
XQ¨qÄ(Ù³¬_ò¡ÊÒ«U‡®@Â0iw +”$§` +‘½»ü7 ¡1ø†‹¼œÍ5ØE€<,b#ÿËïÁ9ÙÄq½/9Є"¡!•Ú4‘ˆ(Ü9‹ëÑO …© +‘TŒ€sDIÐfk*=»þéÝ%$ Äá +Ï/q³„mºYÜ,ôDÚÈ?— +µí¼‚8Ó·#Wê1„1¬eg'Õ,‡U·‡¤”SMþ6—šÂ[u© +D0æŸØ&"q,ÿ,RJ¼„dœÑ/¶Ü +Cwû´(|onÉöŽ§yÓ„¶©_&Ÿ<ù¾»Â±m«^`«aßúöŽ¨˜€ÆIÓÝ?©>S_WöëX|)¥ +9éοGÉ@U7²S2K”ÇÁF Ì_?§£ª^"Ö¯S“•æÓ’¿è6Îè×<fLÅ6®9 ϺÈø¬®äƒÊ<‹½ë` +;ôÀôÛ +é\‡Š†*»€:èÔšúØ9y¯‹(¾XióË1šÍ—³;G„wp¶m¥oö)q:~Ix„~Ï#T‚DnªµWGAeÔ#H¹ƒÙF§G¶ôhí1ìÈ?5Ë»¦€µçíô©ok^Éì K„^™ KŸÄۺݹ- +¶aµÓ¾Õ–áæÙ_ÐÕ½v0¿Ñ²x.¦Ÿù°{uSMwúIHs%5Q3§%ì¸.B~ê-TÏr7o
~‹eÏ¥Aš’è‹gù—ás—˜jb^-Z¯ùL×XরÆ×è`¡uR4ãº\ÄÄšJ¤„Õ«µˆÁEV¦åwÕ²Ý4Œ_S”
8d"†Q—6øÎúãÀWFÉÛ˜nü0°¼Ût÷"ž²dg0lôKÛ¯…â¨FÖŒñ5Ë@ €(xdЖW°NèÛ§í@g`!7õe—‰âA¸ð÷å
ÁÄÊ×Ûìoè0A +ÜÕ~7ÀÀ¸cJ»Ó^„,ëâ°¸†£³†TŠƒ0)³{7Ý·„ŒñŒÛŽ`†‹ sÇe,ÁHImËýNî†ÝÈõH%ŠgÌ1ÿ. +¶g% +¶ßcAlˆÂP]UmñOØ–²ü–½f6 LHæ#£¸bõPN¢³³ ðôÉ÷v^ó.ÿ÷1÷¹ïW³EÞ–wå´7-Û'Ÿ{íòrŸmÞÚt,îÒ¦J˜ÂfêY> +¹/fUô`öÉåZEoø±Ž.B©¸éÆ?5K€C-oúü…½‘$ +’}æÖ¿zŽ‚'Šuúú}1HR%VáÉNj P'%7ӿ܆úBdÕrê¼à1m*ßx ù¶rÞ†¶Ö›7!Rc“"x¶'=ôïÜEXÜÀVÈau +¡¼–° + Ìšp|Þž³'ÈùʱGn™ +äBÁ2iNÈs d\Ã>{†ý³"#øˆ1o·) ba@p™¾¬`n‚ôÂÁ=Qïožfw$ˆ`¨hvæïÛðžpíHIi™èÖxÛ †µ>¢iX!a "e»dm……"Ê®WU[Þ?]/ÛÞcGJð˜Ê_~€AáCʶ´÷Ñ87żE;ÁKØzÃàie?è’À3Œ¥ØÉç`'¿»„«7Œ‚p“b~ endobj -2043 0 obj << +2052 0 obj << /Type /Page -/Contents 2044 0 R -/Resources 2042 0 R +/Contents 2053 0 R +/Resources 2051 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2025 0 R -/Annots [ 2046 0 R ] +/Parent 2021 0 R +/Annots [ 2055 0 R ] >> endobj -2046 0 obj << +2055 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [333.4761 684.0956 413.3061 696.1552] +/Rect [333.4761 409.1267 413.3061 421.1864] /Subtype /Link /A << /S /GoTo /D (clients-per-query) >> >> endobj -2045 0 obj << -/D [2043 0 R /XYZ 85.0394 794.5015 null] +2054 0 obj << +/D [2052 0 R /XYZ 85.0394 794.5015 null] >> endobj 690 0 obj << -/D [2043 0 R /XYZ 85.0394 447.7394 null] ->> endobj -2047 0 obj << -/D [2043 0 R /XYZ 85.0394 422.6188 null] ->> endobj -2048 0 obj << -/D [2043 0 R /XYZ 85.0394 422.6188 null] +/D [2052 0 R /XYZ 85.0394 160.8154 null] >> endobj -2049 0 obj << -/D [2043 0 R /XYZ 85.0394 410.6637 null] +2056 0 obj << +/D [2052 0 R /XYZ 85.0394 135.6948 null] >> endobj -694 0 obj << -/D [2043 0 R /XYZ 85.0394 197.6003 null] +2057 0 obj << +/D [2052 0 R /XYZ 85.0394 135.6948 null] >> endobj -2050 0 obj << -/D [2043 0 R /XYZ 85.0394 172.4796 null] +2058 0 obj << +/D [2052 0 R /XYZ 85.0394 123.7396 null] >> endobj 2051 0 obj << -/D [2043 0 R /XYZ 85.0394 172.4796 null] ->> endobj -2052 0 obj << -/D [2043 0 R /XYZ 85.0394 160.5245 null] ->> endobj -2042 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2056 0 obj << -/Length 3512 +2062 0 obj << +/Length 3122 /Filter /FlateDecode >> stream -xÚÍ\[oÛ8~ϯðÛ*Ø5Ë;EìbN.³ì&mâY`13Š4Bmɵì¤ý÷{ŽHI´#[ÎØ-‚j‰"Éï|<’6 ð(M´åv`¬$Š25ÏNèà|ûù„ù:úÒ0¬õÓèäÝ¥0K¬æz0zdÅ„Æ1Œ&¿EšHr -hôÓÕõ¹=rE£»Ñ©‘Ñ{ügtu7º:»;Zóèì_ï?Œ.n]-4t%¾ùÙÍõåÕÏ¿Þz7×®øöâòâöâúìâôÑ/'£fá$8ú/'¿ýA˜ë/'”«Á3¼P¬åƒÙ‰T‚()D]2=¹;ùؾVM»@“2¬ -Eg¶ç?Y9K–ãG ¥U&º=_Íoû!m[qÃ<Ëy‘—)²Ól²s(F©ûêpí®ÎÿöRÀ_Jìúñ<sê.§£1Ê,J&ߨDBEI>ywÊ"\`XaùèknÈ®Ê6¥Í‹ÅÒ=MŠt£^õŸXA먞6<>?&¾ð9)ÝCúužŽ—nÊ*ŽunÚðÍw‚2V¥º¯¾™H ÷^,º:¯¤[MÒß)åy:ÁWÝsÅ8U§±PÛƆ^À)¬êü¥Z90‡‰r•Šù2+râ–‰4FYéúš%¾³jÄð›äîC–O²q2¬†=d”K©\× -ukxp¿‰û'ã -xœYYäYþÉWX.ÓÙ|¹}=†L?lñ|O»¦
'BÙ»¦"VjÖè”wX¬òq<ê_‰£S‹«-ŽêshWäÞþ"ñÛõZS"©=¸jA¬¥ÎÎý;™ÕE×[=÷"ëZ t“tš~JƯÃ2åq±dÇÄ%)-ïÁRqBÁ¤UÈܦKôž˜wà0>öƒù±u¸¼å"«™9OÅb¶Ê`o˜–Âm˜òn$%…ðœê–÷÷Ýƹ³ÛÔ«}²òD]uxS,k[äK8NwÀÛüXèBŒkõ;R·ØŠ.8Íã>cÊá+ÙÂ{WŒ?ï(^¡ GÑ»¹ßbžzçDÛà‘b 1þœ.!n_(£›<uÅãb6+|S'/ïÖåÚ0^aVDå -à -fùZ@ê¾e¥û’¸× ‚+G·ŠšQ•óôÙ½»¡ºB$LGUÓÇSgšÍ²exoÿ‹AÈ´1åx‘Í—–ì W ¹ÃÈð=W¯ŠcH/DSQ–®¬mù5:U*Êfi±Z¾Ê.]›¸…#z»D
AdÜã@T]PéÈÏÓUz™B ý$172º»ûVîáF®>`D¯Ê!«m"àó9”[›É,*>ïr,áàß®cQ†«û˜ BZ½°~5Âú¸·cà -ê1Ì>ýúbö³l:ÍÊt÷s•Ñ¥;L¦c²–h*͆cJ>#Ó´;ßÄ_ò”æ™÷VPðìëÜ.K'A¡Úèíd„>µÔ$ø—‡“±–8Ev‘Aä(ahM5!í4uªn'ã¤ïýä)À -Tr°`š”Kp¬FglØ4¯Î™D,¢ò±XM'ø,<(sk|îC
¨œú -IÙ‰¯$¼u;]øÂ,
W‰§Øh™Ç×K†"»ð…5¦ahMµÊ•üµk!Ó›ˆ| 4K˜áîB2K“ÜÛWf$šq¾±ÅïÜãƾ‚÷Çòqk_±ÐÛW,_·¯ø±±¯øâ²dêÊÝ BìnaàïSºèÐÅæ劺àÁf`]Œ˜_îÕ‰ÃPäK]pHÀô4•¶9u?øìšMëÆc[*¦¦-m.ÔÞë½Tm Ä_èO5jÔÄÀµKH‹ éÀ´È„Wñ^\Éã&†é@6‚u« ¾/(Àkq¥š{ŒŒÈS¼bB£;–…ùçÕ»«ÏªÊe6ö›~gE-ÓEÙ¡<à¸ë³~×yqøPâð}\‹«Þ’öümí^¾ÎÓ…È]~›§ÕU%ÊëÊéˆM,þèÚñþzþAv]ౘñ°ÀµAÅw¸ÕŒž+¢V VXÕŠÕ¯«·‰KÙ¡0ñúÒuÛ@ÖmL *î¶.Ô.*ë×HÕ{Iý5ϾvI¦è8„ë
98šób–d¹^åßÝ!”eÄĵW¼<®®u¤Eâd#ƒžüñ²ëOw«|^-Ël’º—6mæ1o^«‹ŠfÅd5‚q¸®Ro®tíTôPL§Å³¿ˆ¥ýE5V¶æMÑœª&,üG×40
qÛè.:Äpˆ¿µ¬è?»#W -ë;™ßN[>nœ¬gá±{:}¹Óƨ%þ`FÅ÷sbjÄë|Aw«zôˆÍœ†œsÜ|h½µ°k^Ø%pˆd!ˆtæüÛ쾘b¬iytÀ¸ðÁê—Ìbë¶ÃÆ ŠµÛ–‡o·P0ð0ÞöÐg}EÖP -¡Þ¡ü@Rm9žX'Öúµ-Aß0¢í…(,lïj[òäÂJ
¹°Ræ%Tä¯o•\ÖŽE®£LäÒ0w%{¸¥5aÒ߈üAä:›bv»¿É›”Ød²C%í\åD¾ƒ?e -·cÛ£éVìs¯¤’Ÿ²|ò'Ö{øw÷™?nj#²r‡Â(Ž«±ã®!›¦Gc’.èuûgEž¨±1ˆHÇËW(-@ã-+k¢ã¸'Vc°qócÝ**Wag^-MÚ’–˜ fåc¯tm[U`q,•ízy«2ˆpâà"P·Â€ùÛ¿?HaïǘAþ‰u¦„¬Ö™"J*!Õ2Ãâ,³æmÜhÛ½7çôå²û -Ì™¬‚§S¹àÞërœ3áâ§:T‚U¨åÝ¡SšX«e»;Õ½!õ¨wº·\@OÖÊþ˜/ô®äF~_eðÛÝRå0ò}W>ƒ·ÊôX ˜©üÖÊç^._5ÕÂ-± nì¯2AU¡cyõç—LVršuþ5iòKãB~ü(‹!eñ)[ýn¡,Ão»›²xW ¹9ÓMYÎÌ!þN”
ØpàŸ`@ï†kt›–(.;ÿüžz}ê¾ìßþï¤!€Op†¶¾÷«`ÅÃ3eU§áŒ¿8‹ÁýD<óÕ‚±ÿôW +xÚÍ\[sâÆ~÷¯àíÈuÂdî—Gg×Îq*kg“J$2ÈkeArØñ¿?Ý
ĤŠÚ*£ËtO÷7=}™-ëQøÇzJí¸ë'‰¢LõƳÚû﾿`U›~ݨ¶úntñí0=Gœæº7zxYBe½Ñä×HI.¾»½ûè.û\Ñh8º42ºÂ?£ÛáèöÃð²ïœåчÿ\ý4ºøV: ôO*ò÷w7·ßÿwP1¸¿ó×7׃ë»×—¿~¸¸•dT ô^üú;íM@×.(ΪÞ+ÜPÂœã½Ù…T‚()Dýdz1¼ø¼b¼-IÛ@“”Æ•èõ…%R)»»[ß…n«KƈSj³×>£Ž0ø*Q©Ìj 8‚1E¤5=£Ñ‚‹r îòEúø6Hþ@t€€€‹QÒ@/Øò6ç³4ûâQÍ€î7JyRøûù%³QòG2^$²‰4ˆD$sØu#àû”ÒæêW
N‰£”„:ª:p”†hc¼Aï¯î—‹Ù
ãOÐÈ›ûý•¿øs™ÌÓÈ"É{ +a$;Ý«1ÄYígÐñÍPŒºåu'²ž¡›$ÓäKŒF|–^Ê3/N„æPÇÉŽâDhM¨`¬ªö9K0‡.X~øÜ[Þ¢YƒxNæù|¶Ê@È3†RQ"ë¨R`zj”kp¹zh÷Í-®@‹‘¦žî“e½šž×¹M¾¨]lž-|Ò8݃o ù©ð +JsuÌÕ;ñe’iÑåN%'ŒSÓà;ÌÇ_Ko‚Dà£ÝüoþœTÁ‰6©#ÅDbü5Y@Ö±PF÷å¶<ç³Y^‘z~qáW{7óšGÌW˜¸qô„W|-õïÒ¿‰ýmÐÀ?Ç°Š/VR³äÕß{QýC´˜–<£¶ŸÊv¦é,]ÄAô®~1 ™®œ£_̆šd}#÷>cøGç/åDkÛV¨&¼¬´¯.¤³$_.Žò„O³·@¢ó]J€l’HÑB`~A©·úï§Ëä&D×T…2ߊ£vÊmµ)ªjùÖ~2Í^ò¯ûBK(üù†Üæƒäµ#´pˉ€ânb}4Äú´ÂŸ1ÄâXÚU:CùJ a7›V|X|9Ôz÷î}7¸Ÿ±w€|ÇvÕ@\Y"…Ô›–{0¬ú„°6Ÿ±µB–cï‚Uj"ó¥åÏeiO¯|iÝ
ëÇ»áðúƒí%ž¦“ ¨êó½8"ž1‚'LGÐçB +yÿõ}î>*Ô`Hw*¹ nï¹õ-–5ÅN©!”›®èÄ9Qº:zRcx—|9F#ÝŒ¦ÊJñyVé/‰šfXTÍ +˜ÕÄP¡ÌæçoåFáh”e”—«ómÙ¸\MÑ"~(+),Þ2_Dúj}™MªP]UWP/þו—Â@Ǹ +ç <DëÚ”Ö=Ç®(¨-ÞY®45Ð᪜þ‹‹>”t–àqapþtÙæ×)´×Yèú|ó¿HCdƒ\;΂ßwa¤Ö…?œ³jkT rœU³@öÿËëgfendstream endobj -2055 0 obj << +2061 0 obj << /Type /Page -/Contents 2056 0 R -/Resources 2054 0 R +/Contents 2062 0 R +/Resources 2060 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2025 0 R +/Parent 2067 0 R >> endobj -2057 0 obj << -/D [2055 0 R /XYZ 56.6929 794.5015 null] +2063 0 obj << +/D [2061 0 R /XYZ 56.6929 794.5015 null] >> endobj -698 0 obj << -/D [2055 0 R /XYZ 56.6929 328.1878 null] +694 0 obj << +/D [2061 0 R /XYZ 56.6929 615.1118 null] >> endobj -2058 0 obj << -/D [2055 0 R /XYZ 56.6929 303.0671 null] +2064 0 obj << +/D [2061 0 R /XYZ 56.6929 589.9912 null] >> endobj -2059 0 obj << -/D [2055 0 R /XYZ 56.6929 246.6387 null] +2065 0 obj << +/D [2061 0 R /XYZ 56.6929 589.9912 null] >> endobj -2060 0 obj << -/D [2055 0 R /XYZ 56.6929 234.6836 null] +2066 0 obj << +/D [2061 0 R /XYZ 56.6929 578.036 null] >> endobj -2054 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F11 1451 0 R /F39 1161 0 R >> +2060 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2063 0 obj << -/Length 1362 +2070 0 obj << +/Length 2407 /Filter /FlateDecode >> stream -xÚ½XmoÛ6þî_¡60±|§ÒÔn] y±]`C׊Ì$Âɵäý÷;Š”,Ù²³,à "¥ç^x÷Ü`ø!A$fšJs$0Aò4ÀÁ|û8 Ö °z¿¼›0h¤%•Áâ¾¥+B8ŠH°X~^~º¸YŒg£ -<”h -‰‡ï§WÜí—×W“éǯ³‹‘âÃÅôúʽž'ãÙøêr< -µŽ(Èó–/;_X!/9_L/ç£ï‹Ïƒñ¢9@û3ëýÁ·ï8XÂY?0b:Á6ið4à‚!Á«ß¬óÁm£°õµíÇ*X -Œ8!§:¬ú%eH[?»FCÂâBÙ<pŽ°Æû<€ú}g(bLJh$eU"~µQy7¡m¤BŠG -´[Àâ›±Ãt´Q¸ä̃~;¥%ò€¹É–ãÍÆÃh1Sšj³
óM1 -™bÃ4³O>,òä/Sºwèr«|m6q™æYù—.S/˜äÛ¬4'äN `*$i!he³XçÙ²p¬)óž“p8+rQ¥ÿ”B:EµÆ¼Ušß÷)UˆIRǧ¢~RÈnR¡C -sà°’’íÔ¿NŒGˆAÂJ HŠ×¨¬%N3GˆÒ -z%úÿ$èÌ$ϯ%(ÅŽ Ó† öãZbÒgã>vxJ5÷<uòÉj»4~göÚ{ˆ -<>)_ -jgaåeú'Æ@“®OßýtŽ3÷œ^~¹q«ÆU·}2E?˜3ݧþmlÚtßf_êÛVFauзÿTí‘1m4¤ -aÕí÷G}Ÿa‰"ªU`û”%^SNÖ3IB{T»°ó 1 - Æ0ó§5äü.]¥¥ÏÎ.-se{òpÌ&ò¨Åtê$B‚ÀÒ·?x]û*zÊ!$B",™„ss¤9á•à—¼°í™B%”à]Q¦‰íĔ԰p_ËÇØãvÆÕ‰CÅÏqºŠïVÆ}„²êqÛž)ÅùžÉ •”îÏcÕÅS«"÷®n×ë|SÕÇI£Ç9£¯0ª½Q€â1ßeSU›NÐYÔ-ôø.¯Z‡H6&¶m0‚‡ŸšU5ÙÞ@?Ã@z[úɆ|îÓP©Ò`W˼QàÅ×k{¡4«á¦8pèð2…p¹°ˆ¸àý7F -Û¨ÓEÐ ª=Ù-g¿ÌíïCÛD€ -¡´d\w¹¹‹7Ë4{èsRœÕc9.úNKÔ’¼êÒãiš.OsŽiŒ½À¹êçjTŹ‹ß'Çl#Ð÷%æçÍ6¨»¶Aeœ¨®a?Ø—/Ǻ“ÆmZu˃2õc:Kò'›¥jw»5›´î\€§ƒ‰5"„¿TÀ-Ô™`Ö¨*˜ÓÛ£Pbè~XÊóFTÕN(á+‹”îšýoC93?¶¦(ÿa,¹Òpç‘â|,Û¨Ó±lPU,¯×eqLL ’€{ÊY³
ªÇn'š–Àö®á¢Ù‘Vÿ³Û3ýnQõš– ëÉeÍ&™Ø„Sk…þXß–{rmïÁ›Â‹¬Wqr|ŸÓ—Sû—~O„qP·Ë7ÿCaÿ/û×bÑþT1(Æ4©²1"„º×5U=¾ÿ
1Ž.Ëendstream +xÚÍZmoÛ8þž_áP³|ÁhÝd×l’&.p‡Ýý ÈJ#œcy-;Ùþû¾H¢lÙJZ'{‹Ôp†œyf8äˆ0ü‘3ÃÊp$0ƒôá¾Â»ŸNH UD£˜êãôäý9SƒŒ¤r0½‹xi„µ&ƒéì·áøçWÓ³ëÓx(ÑéHH<ü8¹øä{Œÿ_^œO~úrýáTñátryữÏÎÏ®Ï.Æg§#c4…ñ<âÆÞLí 0òf:ßœþ1ýåälZ/ ^$ÁÌÎþÏ“ßþÀƒ¬õ—Œ˜Ñbð
Œˆ1tðpÂC‚3VõÌOnN>×£·nh—Ò(#H 61Ž´Ñ1Ãij¨X$eµŠ)éR1•HNŠVâ§#‚1¨£Hÿ›½j&ï/ƒŽÖÉ:/×yZ}›Å:[•VS ‚F"0L#à wÌ+vÄvö¡ŒØÙvZ±sduJô0óYö;Æt‘Í|s™‹ˆïúÛ2+ßÁÌ0>Ýçé}›Ÿc¬ +“JZõÙ9~ùtÅ;VB
„TD¿cðýäê‘Ã3y×ÁW +BŒ~KxçE™½ lyS;dvÀ(Ñjµ•¼†Q$œÅ„î³ $yœsù–6ù˜/fßáòÖ6Öåíï-° ,n\~¯ÅUü?LÀ)Ó^‹ÁéŽkó¦{ÿ¸X,~Ðb)°ÈÒõŒ©ã¸V#Gµd¥†«¾ŒMp‰¿±Õz-6v©O/Yi„yy_[:R·½6‹”q,›1´â,«ûm†ÂšöîWŒ#¡Ì›¦CR{–ü_ƒÉ:_Œ
ÇĹšíÎiñP·ÒÚà¾í9ü¹»{oÜ΀BŠN¸Ë¡NÉÐgéЮú}–N˜O£ªŒ ^¸Œ ú»3&"$2Fò枪ûj†ÂÙ-Ðt_¾
|xê5¢ÎM‚³ö Âå€:BË!ðUAÍA”Ⱦ@Ä
œï “oê^@OjœJ¦"œ–¶C×qèB‘ëôP·éÚˆpE=X»Òø*ýçʧÿö×áÖ>ĸµm‹[÷»·)¬Íaܶ±”qK ‚5èWÂmˆcáÖŸ.ø1Ϧœ+`.Yn%Ešë7
Æ7Ùbv¶Zõ×Ò@-ìe#SÌ]ô1ÅëCÛW/ÿÇÕUâp
•W‡TxÕR•¶žmÖy.-—ÅbVÖÓÝ•pX+5ÕÅ÷M÷:(EœˆJkÍŒOÜ:˜‚$©y[ÿê¬,H\›B@hdúco_#²‚Þ9Ç}‰9g°
ÙÚÄ"ô:K_ŠPŠ=Bm™ª¾Ò†>¶4Ë3ÿ²Tjx• ¸ñé|3ËB+k¸w\Ðù€ +`ïßÆþ¿þVþŠ¿ŽüY ¶ñÕ3¨ïß•
ݹ»-Ÿu9Çí·pîÕ'ã_¯Bv[MÕ7`CI¾¸‰m¬ ÚT[ÿŽ+|"
bŠÂ^B!¯Qí²ïŠ.Óàz6;XÑeC˜*ªèŠPÑK°úm>Ï×Á>Où:ìw2®À˜™EÏN”iyŠF‚ÐjƒÕ½á‘M7!ØÈvaø×¢´šÒV5˜QìÛõ}èž²ª¾c©šZ’{™/º¦ŠmØ”âpØd`KJ›õXvIKÔ¼,ÂT7Ëe±r²W(ËqÎè„š 4( ¼/žµ„ …ª©8DG¶U +Nn‹Çê²ÔêÄ{½ús—ÄvêcUÝì¶Ø„òZ‚VÕÅASÇÃÁ®xVÔÂðå2KV;¥¶rkBÛU`„¤Ts@¡Ý_Ž¢QLµß j*¢ÏŸf×ïnìÿ²ž€pqPxMÕ!½UF•0Kªt[üÔk€qZ
´¸áÐ#š·YšlÊÎ$ظûnÙ/ Šà<gE¦¤Ša2+–a®8^º3ª}®r‘ ½ðʫO”`¿†3£À¦Í§då®;&)œUsRv2u#É‹òž endobj -2062 0 obj << +2069 0 obj << /Type /Page -/Contents 2063 0 R -/Resources 2061 0 R +/Contents 2070 0 R +/Resources 2068 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2025 0 R +/Parent 2067 0 R >> endobj -2064 0 obj << -/D [2062 0 R /XYZ 85.0394 794.5015 null] +2071 0 obj << +/D [2069 0 R /XYZ 85.0394 794.5015 null] +>> endobj +698 0 obj << +/D [2069 0 R /XYZ 85.0394 744.4469 null] +>> endobj +2072 0 obj << +/D [2069 0 R /XYZ 85.0394 719.3263 null] +>> endobj +2073 0 obj << +/D [2069 0 R /XYZ 85.0394 662.8979 null] +>> endobj +2074 0 obj << +/D [2069 0 R /XYZ 85.0394 650.9427 null] >> endobj 702 0 obj << -/D [2062 0 R /XYZ 85.0394 665.5626 null] +/D [2069 0 R /XYZ 85.0394 368.7785 null] >> endobj -2068 0 obj << -/D [2062 0 R /XYZ 85.0394 637.9713 null] +2078 0 obj << +/D [2069 0 R /XYZ 85.0394 341.1871 null] >> endobj -2061 0 obj << -/Font << /F37 1026 0 R /F11 1451 0 R /F21 938 0 R /F22 961 0 R /F67 2067 0 R /F39 1161 0 R >> +2068 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F11 1451 0 R /F39 1161 0 R /F67 2077 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2071 0 obj << +2081 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2070 0 obj << +2080 0 obj << /Type /Page -/Contents 2071 0 R -/Resources 2069 0 R +/Contents 2081 0 R +/Resources 2079 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2073 0 R +/Parent 2067 0 R >> endobj -2072 0 obj << -/D [2070 0 R /XYZ 56.6929 794.5015 null] +2082 0 obj << +/D [2080 0 R /XYZ 56.6929 794.5015 null] >> endobj -2069 0 obj << +2079 0 obj << /ProcSet [ /PDF ] >> endobj -2076 0 obj << +2085 0 obj << /Length 1242 /Filter /FlateDecode >> @@ -9922,144 +9953,140 @@ xÚ•WÝoÛ6Ï_aäÉ*Z¤¨¯å©M×-C1kö´î‘iKˆ,j•Ôú¿Ç#e)V³†ÁÓéø»ï#EW¡ùÑU“0Êù*Í9‰C¯ 3í}MÑâ+Ûz̦.«Þ—†.=O.Ö+ï¤p†éiko8ÜËîy:Ø<Þ Ÿ
»|!öw óÈ Žñm1ÚªÅëé$³þõÌfBú{z_šZéMÿŽItñFó -€:]C¦ˆcq¿h“‡ž‡-ÖXd¹_UãT]º9GLs^¾jw…9¶nßAôæ_ôqWy?.›)ü!=χhŽs·_òïâÇ»ñ[ËAÁ¥É|-}y‘à$ƒŸb³;Yh>‡¢œz ; +€:]C¦ˆcq¿h“‡ž‡-ÖXd¹_UãT]º9GLs^¾jw…9¶nßAôæ_ôqWy?.›)ü!=χhŽs·_òïâÇ»ñ[ËAÁ¥É|-}y‘à$ƒŸb³;Yh>‡¢œz ; endobj -2075 0 obj << +2084 0 obj << /Type /Page -/Contents 2076 0 R -/Resources 2074 0 R +/Contents 2085 0 R +/Resources 2083 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2073 0 R +/Parent 2067 0 R >> endobj -2077 0 obj << -/D [2075 0 R /XYZ 85.0394 794.5015 null] +2086 0 obj << +/D [2084 0 R /XYZ 85.0394 794.5015 null] >> endobj 706 0 obj << -/D [2075 0 R /XYZ 85.0394 769.5949 null] +/D [2084 0 R /XYZ 85.0394 769.5949 null] >> endobj -2078 0 obj << -/D [2075 0 R /XYZ 85.0394 571.259 null] +2087 0 obj << +/D [2084 0 R /XYZ 85.0394 571.259 null] >> endobj 710 0 obj << -/D [2075 0 R /XYZ 85.0394 571.259 null] +/D [2084 0 R /XYZ 85.0394 571.259 null] >> endobj -2079 0 obj << -/D [2075 0 R /XYZ 85.0394 538.9404 null] +2088 0 obj << +/D [2084 0 R /XYZ 85.0394 538.9404 null] >> endobj -2074 0 obj << +2083 0 obj << /Font << /F21 938 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2082 0 obj << -/Length 3284 +2091 0 obj << +/Length 3286 /Filter /FlateDecode >> stream -xÚ¥ZëoÛFÿî¿Bߎ,Šû ¹,¸‰su¯Hz‰»¢íZ¤-^(RáÃŽú×ßÌÎ,EJt b.g‡³¯yüfVbÀ?±#?Jd²ˆí‡›ÝE°x„¾^æY9¦Õ˜ëûÛ‹õ;/?‰d´¸}É2~`ŒXÜf¿z±/ýåï·?®ßÅbÄ+?” -Ä#Ï›>~øpK\‰ÚøZÉlWïßÎIŠ|©„fžO×·w7ogD “Ò*†¼úùöúãr%à -°+!ü$¥]Wz_æ™?ô?ÒØžwuCǹ«I$½ÕCÝìÒÎΠ©ÑÕôì[þäêÍOí´‹&Ywù¦#¡îy4Þ!ÐœKG`1¸C¤¯Éè´”~l§¯WwŸÞ€º†¡Çv29Zû& ó¦ÙSÑÖÍħÝwô…[ÍJE q»ÍIì§?ÕèHûZ‹xƒ’éÌÌj õ~^¸Ö¿ŽÚè>X¿°Ê¨ÇãŸÉÅѺýwë5üõÓ¾ÝäMç×Í#´×ûþ~ͤµ[Ýú꧘màÙ$~h?«ÚÓékfr2ÿ×LRú‰1fÞ WƒÄWFë‹0™.0«Ïg -?HÎvøÄÆ®óQ'Çz.
‡ý«ŒXí+
®Âj -¶ëÃTâi¸À%· ä÷õWl²‹~Þ›-7‹²¤VYìŠîè¹m#Kwé£kו)l<“@]86µ[ç®h_XWU
á‡ÚŸ‡g¢…÷§]?Ä0a@Íl}@‘!lRtƒwŒàÈÁV;%í„ô¾(í&[jMÏÁ"ÇÃdi¾s‚S“ò{_í›â©(óGÒŒÓ@
â=Aƒ™Q_ IÅ¡SßžXB5V_&¡³'+ñ\'êÁ -ÐÖ|D÷Ÿe"hûÇǼåÓ¥¥VdûxŒó…ŒÆ+sÈ qš“;®v0ï<dB¼fâ<ælHø2–çŽÎÞggr”2ÑTy~È‚(‘x„õ»|æ_ÓݾäNÐÅõóøR“ñä-¥N¹mÄ,'[—‚phõ
ëJÂÄ/áåŒ@ü@NÞú)mÖ/ù8\ibÇ -Ö¬Tä
ks+b]žuj¡1êÔ©a „H©“çѾÁíÅŽYÎ?²–È@26Óf‚Íø»ÉI®û¶Y—õ&-×í}QñÚÁ“hö ò˜ÐÑól“Äàê)d«ØW&Œ†LMpì¿užm3× 98Î -ñªÆ€"¨!Úž…m”Ž{Ã=×Íg¢°›Ýç
¦ØWTn&Ä6]±éË”gšœ˜tJ#z¨al;—3.Kš˜„ØCpú£ü(õT^ÒbÀSÆÄÉÈe¡&dz -Ši•°Uå¨Ø²Ú3ï¨ÑsHM9žm˜ýj›r«¨6eŸåšs‡nËqÕŒâ*ŽØN‡$ƒ²á]{ï\hWîÖ2A2(ìoèU“ -´ÝÆ€tŸ¶”)òí‰vi”òn~&Bše„O[þˆ.å8µ·)erƒ_ [bH9f£»dëâI–ÅÀª©N÷ÂÐ3+¥ˆ…6ÖQÕ@†•.N²ý%Åï¯D·•Öмxû:NÖ²7«+>êÙüÔ˜Á‹ýÁåcÃé‚qr±É»¼ÛÖOƒi r×™`æÆçÇ9Zî¶&×1=ñáX#Wd-“lå˜Ai±}÷w7ÄòÉæ3a3L+OÛÂ&1!]ÀXVaÁzWe[óŽ×Ý0ÕÔ‰x˜L>¦SœN:çaìþR
Ö*¼x2*Q¾”,|ådVûL^ÃØ"’–ÐMÓ‚Õrì G[¦OÌ:Ü -`µŠAV£@ßò¯¤["@ó™R;NÀFR—‚/´{ϦÄqJ»r±fNñ7TÐ&7#C0Z,ksú ä´ëðl3ê¼gj;d‚¡3óPTC34s&»êKjøN
W+z¼Fꢋ–Q¼þÞ -B¼T<±lR\¼^'°N§† +xÚ¥ZÝsÛ6÷_¡·£f,šø Þ›Û8ûäyî:m(Š–x¡H…¤ìªýíb%ÓçÌt:©Àår,öã·‹Yÿ‰Yœ„I&³Yšé0ŽD<+vWÑlï~ºÌ³pL‹1×Ë«›÷*ea–Èd¶|É2adŒ˜-׿i(ÃùË_nÞ'ÙˆWFa,ˆGžþüñã’¸Î$jja$³Ý~x7%) ¥šy¾Ü-îßMˆ¥U⧼ý´¼û<_È8‚5ÎaQðÃ=Ì`)ý|¹ûñáóýòWzúñã‡/÷ïî>ßÎS,ïá 繺[zMµ)"…júvõÛÑl
Jýå* +UfâÙ3<D¡È29Û]éX…±VÊQê«/WÿòGoí§“§#"Ð@"'ŽGʩ㉳0Q |ÔÃr[õó…*Èëº}æq7&(‹C×WO%‘¾Ê®*ù}ûˆ¿:¶ü¶/»§²£ñ£ýºÝÑ“giC_ùáÐÔeÿr²¶!Ò6çw«²lhª=±=Uía.‚¾>y]õ<PÅBˆ0‹ci÷•¯êr͆'ÅLèPiP¨µJ½}Î"Šàx·]ÛtÔy³f(‡Cµf9cm‚™…*h¾°LiâàáÃýp”°JúkxÊtP
DEm#ß¾íû +ÖHÔ¡%j77 ¢±1µbÙ9›õ™õ‹4Ä5U[Ò};”SkVIg©c.›§ŠØ›]Ù4ÇïQúªÙðÂàôœG¾%¡ÑÞ}«8üþ‰©yM(“(cöÇCSpÔ–ÙNº:Ú#\¨,u$õùQöû²¨vMJ§lQÚ¿K©i6=^]*B!#Á³-†‰9ñÄbåXÑí~ ém7±up"“¤†¿lòÝ´¢£0Ë|¬è’DÒ¹ˆ.ò†æÛ–õžFÕŽ¼}âÍõÇ~(wô²G暴#=ŽÄ±¯óÂ+…¬ÅJâõç¤S‘ÂZT’: +¿åŒ|Õþ‰Ãk2öçmUlyXÕ5êjW±WXÍã`ïò·
ªGvúq1Á¾êé·hÝ>wUÏj]}¤hm·Má‡: +}ùxÀ•h<–ùp 0@/cÀZØû€„3C˜°§‰Ï±ƒ½ +(vIÚm +ùªª’-µ¥_ï‘ãiÖy¹s‚s“óó¡ÙwÕSU—²ŒËÀb ÃL˜¯„ˆ¤ÒØ™ïXb56_j;²_Ú äEí½ +XhÇ©Ž€ølF£œ„£¦D[À‘µmL—å@ƒ'ÔœÓà…Ù¯¶9ª¦¨ë’s iã8l9«šQVÅûó)Élr×Á{zíÎÝ^ÎÜ…ýcj–ü«ìZÀølfÒSU>chžR1à¢Ôdâ{BA"Ã4N]جx>ÂLQ8|Hd77e6üE¹Å°3›àW\¾ç# +Û”‰ÓX/[îK…@Õ8qbPœ +k§R)bÀ~MuPwù‘¸YÆBË \h˜M—{o=ͦ¿t‚óJ2ˆpéöf]>ÝüUví>Pašù>ÊT„шÉôXT®Bñì2ÂÄa”~K˜«ÛÍ”kbŒÒlq¥÷*ÖöXf9†j7å¥F¡—J_€MÀ°)Š41ÀQ.p‡s,ËU?vüž+Ù·ñÁ§®j»±És¸ÍÕÅK—Ê¢2aò=.•9Ç£òÄF…è‹æ›–ŸB)!å)ž +wܤ¹%`•‚Á+.L.ùat‚qaÁ¶ ÂXùêð#€0,áÿ2¸»ÔHŒR™BAŸÇv+³o3F:ËñŒÆv£'XÂÍýNÎÞµ°ÙhGNîb$Øn(›Zf +0è\Æ!CˆØŠÄŸ[PcsÑpšÒ@0êß³}ô2 ƒñŸÚøÏ3ÇîdÀÛA¹ÞκݎOF`‡*N8Ç)ÎpïŽ`JUAaåa¿Î‡Òõ½¹åøfçû–ƒ»mö·gM¬|Ûôgùö’ /8èÚëƒm{¨×®åOŸÂ‰Ãa×Ìa»xZðT[n#Õƒeüà–OWÊå󫈦>Na°gÖ2Å%Ö-?o©{·]1 òž + E±=Ó®ŠRÁý'"äë5áÓž?¢zK9Nl[ª˜Ü-È7(–RŽÙHs×ì_¼Èºò¬ššt¯L}¶S1Ê¡èe5
dEé\à2 ØŸSþþ“è¶Í›W/ÒP§™ÃZöiÁG=YžããØ_Ü;6\ý!W1wÊ‘¼+‡m»æe0
+4N× +À´¢<Ñr÷-±¸çg3>žä*ªåÌXŽñF‹ã‡w¨Ý»'ÅWÂÆ/«ÌûÊ11ÝÀ\k°ƒÛºoYãíà—š;g‹OéÏ]ò4V¿Ô€5d +¯žŒÊT(¥‡…oœÌ³O”å0í!Ùf =Ðbap®Y X+ÇôÓ×ù³ú+lV1èÁfØ[ÙÒv=`øL¥`#©>¤àíÆ^²)qZÒ.‡Z¬›2ü‚ºÙfdN‹=m.?œžíš^®˜ÚûJ0vn«‘ih†fÎe`w}McWÑã=Ò+ºe™Å»áïm£ ÆÅ~*†!à%ðzæ endobj -2081 0 obj << +2090 0 obj << /Type /Page -/Contents 2082 0 R -/Resources 2080 0 R +/Contents 2091 0 R +/Resources 2089 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2073 0 R -/Annots [ 2087 0 R ] ->> endobj -2087 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [63.4454 707.8911 452.088 718.0529] -/Subtype/Link/A<</Type/Action/S/URI/URI(ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos)>> +/Parent 2067 0 R >> endobj -2083 0 obj << -/D [2081 0 R /XYZ 56.6929 794.5015 null] +2092 0 obj << +/D [2090 0 R /XYZ 56.6929 794.5015 null] >> endobj 714 0 obj << -/D [2081 0 R /XYZ 56.6929 690.9391 null] +/D [2090 0 R /XYZ 56.6929 730.0613 null] >> endobj -2088 0 obj << -/D [2081 0 R /XYZ 56.6929 656.5891 null] +2096 0 obj << +/D [2090 0 R /XYZ 56.6929 694.6148 null] >> endobj 718 0 obj << -/D [2081 0 R /XYZ 56.6929 517.028 null] +/D [2090 0 R /XYZ 56.6929 556.3845 null] >> endobj -2089 0 obj << -/D [2081 0 R /XYZ 56.6929 489.6469 null] +2097 0 obj << +/D [2090 0 R /XYZ 56.6929 529.3116 null] >> endobj 722 0 obj << -/D [2081 0 R /XYZ 56.6929 373.2709 null] +/D [2090 0 R /XYZ 56.6929 413.847 null] >> endobj -2090 0 obj << -/D [2081 0 R /XYZ 56.6929 344.9674 null] +2098 0 obj << +/D [2090 0 R /XYZ 56.6929 385.8516 null] >> endobj 726 0 obj << -/D [2081 0 R /XYZ 56.6929 184.6919 null] +/D [2090 0 R /XYZ 56.6929 226.4875 null] >> endobj -1732 0 obj << -/D [2081 0 R /XYZ 56.6929 151.8489 null] +1730 0 obj << +/D [2090 0 R /XYZ 56.6929 193.9525 null] >> endobj -2080 0 obj << -/Font << /F37 1026 0 R /F71 2086 0 R /F22 961 0 R /F39 1161 0 R /F11 1451 0 R /F41 1218 0 R /F21 938 0 R /F53 1313 0 R /F48 1238 0 R /F62 1361 0 R /F63 1364 0 R >> +2089 0 obj << +/Font << /F37 1026 0 R /F69 2095 0 R /F22 961 0 R /F21 938 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R /F48 1238 0 R /F62 1361 0 R /F63 1364 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2093 0 obj << -/Length 846 +2101 0 obj << +/Length 533 /Filter /FlateDecode >> stream -xÚ¥UKÛ6¾ëWè(KŠ¢ÇÍÚI ÛíZ9I´ÄØB$Qé8î¯ïPCïº[õTg†çñÍb!…A(/Ó0/S"(aÝ4<ÀÞû€yL|Å·¨·UðË;ž‡%)³$«o7¾ -B‹‚…Uó9ºÿõî±Ú<âDÐ('«Xd4z»}X£¥Äe·¹ÿø´>¡vÿûÃn»Þ<Ýò4ª¶ â´ œçÞÃúÓÃÝoÛ{Ä|\#tóÊÛ×êC°©ž¹-–Qîªø3øü•†
Ôü! „—…Ï PÂÊ2 û œˆ”ó«¥vÁÏovç£Kä ^Q$ù{I²Äž(IÆ>³÷NO«˜Ó,²Ge”óhZ±"RÒèÁ¼KB£³B±óžÝå[ë¾WCsõ$-J§±‘VTöÞ{=]F«“m-;t”EòLVyG{£Wr0Žj¨7fŒ”B$sòú´#K";@Ö¶Õƒ3°È´‡AÚ&gô… -Zí¶ïaeaÕœ©Ûl]¥I–:\$ ŽÝPÇÊŒ¤)ÈtŽYësŒÕyô-ÑYBJV¬Çk^IdŽúÔ5¼k®Gœ䇶ïê‚°b‘\Å,êAP˜¦ˆmgB`K³$ý'1ÛGœSÙ4ž3Ó -“ÚZ¬8‹ê£ÖÆ›v« -Íe=N¤omƒk÷:Ìi%Jí€n¼jNûF÷àrð'Õ©ƒ›ŒÓvÅÇKíð3ååT£F9¡+ÐþÒƒ"xIªcky–/]J¯]»ÕcÜ)hâËY”j=Xˆ×¯O»óպاúˆ’ô¡¼ïÍm¼4ÀÀå\(p<ía°gµ÷cŠ„QW~‡’QÓ5™ëœ)psGÜDÑ7Î^Jļ`ɽÔ\÷¼.¼«ð÷yÿïWüåû–¦(’åšÓ”p^²kRŽ/Æòש?¿÷ÿÎýoÊàaendstream +xÚ¥TM›0½ó+|©¸6ÆÄ>fmY©iš°‡Õj¼ *Ái e}MÆùЖ=¢ˆyã7o><@1?ŠÇ„Édˆ9¡‡ •9ûîPËñÏ$ÿ–u—9_¿±’XFA„²—-‰eå“;ù1žeÉÜóNÜö|÷.Æà‘ðX$“‡yš=šüš.Ò8™½Qèf©Až +"L<³ +ñãtü3 +Wµ²ý2Ôàv¿¬«öî –`Ø‘¾ý¬Ví^Õ®Ð(e îlH]ë˜öâ endobj -2092 0 obj << +2100 0 obj << /Type /Page -/Contents 2093 0 R -/Resources 2091 0 R +/Contents 2101 0 R +/Resources 2099 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2073 0 R +/Parent 2067 0 R >> endobj -2094 0 obj << -/D [2092 0 R /XYZ 85.0394 794.5015 null] +2102 0 obj << +/D [2100 0 R /XYZ 85.0394 794.5015 null] >> endobj -2091 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R >> +2099 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2097 0 obj << +2105 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2096 0 obj << +2104 0 obj << /Type /Page -/Contents 2097 0 R -/Resources 2095 0 R +/Contents 2105 0 R +/Resources 2103 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2073 0 R +/Parent 2107 0 R >> endobj -2098 0 obj << -/D [2096 0 R /XYZ 56.6929 794.5015 null] +2106 0 obj << +/D [2104 0 R /XYZ 56.6929 794.5015 null] >> endobj -2095 0 obj << +2103 0 obj << /ProcSet [ /PDF ] >> endobj -2101 0 obj << +2110 0 obj << /Length 1965 /Filter /FlateDecode >> @@ -10071,86 +10098,86 @@ i ·¥Ý3éÀ–yíˆùðŠ&Â8K<æcø¡›‚hïCû™<»úÐŒêhüýÔï Æס\@•‰ó÷w= vV ýf3GÕ51b‘æi‘diNŒ‘Œâ±ˆ±0·"ð0àâÄßZÕ7’\sÂw"ó‡&0ÍåþF—?$cRÍZº”í(õåŠ:éH^04g¢°û(½ÀÙWáÓ7˜¿S,[>°úŒ¹…;î3`ô¦'bÕÀ¤Ö^ïöEy˜]¹œÞv‹íçÞa¯Úák@n@þzh|ÇütÓOÓ0J¿mºã—¿ÞeÚâš(°ÁiÇEðá
êÍâÀz҃ѣm§žæˆ§çOŒ$ è×ØÚ:‰óÎÐÃBYn?z·XdÌqâd¾©Üä¤ÚNí:ørðï»QÕaáƒL·CÕMucVìâªV.Wª4 Û8Hü»Uoy)”@»Zìo+B)ˆ×©ôD9ƒ©;B.ÊõTyåvÂ)Î6™îZds§¡ÁÓÏMíµ°r=¶öä&vÓž®é^/yr€¡¶¯ÓP;«y Â1{9B€FãŸà{ËוÂM>p\×-ž‘7>å èWˆÌ¨W ¥Ìrcø-Š¼ûãËü -“¤%œ¡i±Iæ² —â~ÚøÑŸ/¯6³Âv¡ámÒ¥ß;»è½‡CÀê/aïoãã<,EQ^Çsór4ÝÅpµö;[ÃïVÎy7G)JΑOü©5¿|hW°hpk·IQ„"é5¶ÏÍŽûª‡]Ù)C™‹_Ú‘Âõ%KÄQXDñ¯oʬ±]ªÜïʽe×SX{üâññ|>‡¼+¾,}w¸ÉÀdñ:Æ›š¥îãºÊǽµÿ¶Uø]5èTíŠË°ç§ð6hÿ˜ÈŸ%×"ö"Û‹½H.ƒH"h<H#a(B”·îæÎ{ÿúÀendstream +“¤%œ¡i±Iæ² —â~ÚøÑŸ/¯6³Âv¡ámÒ¥ß;»è½‡CÀê/aïoãã<,EQ^Çsór4ÝÅpµö;[ÃïVÎy7G)JΑOü©5¿|hW°hpk·IQ„"é5¶ÏÍŽûª‡]Ù)C™‹_Ú‘Âõ%KÄQXDñ¯oʬ±]ªÜïʽe×SX{üâññ|>‡¼+¾,}w¸ÉÀdñ:Æ›š¥îãºÊǽµÿ¶Uø]5èTíŠË°ç§ð6hÿ˜ÈŸ%×"ö"Û‹½H.ƒH"h<H#a("·îæÎ{ÿùŒþendstream endobj -2100 0 obj << +2109 0 obj << /Type /Page -/Contents 2101 0 R -/Resources 2099 0 R +/Contents 2110 0 R +/Resources 2108 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2073 0 R -/Annots [ 2108 0 R 2109 0 R ] +/Parent 2107 0 R +/Annots [ 2117 0 R 2118 0 R ] >> endobj -2108 0 obj << +2117 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [348.3486 128.9523 463.9152 141.0119] /Subtype/Link/A<</Type/Action/S/URI/URI(mailto:info@isc.org)>> >> endobj -2109 0 obj << +2118 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [147.3629 116.9971 364.5484 129.0567] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.isc.org/services/support/)>> >> endobj -2102 0 obj << -/D [2100 0 R /XYZ 85.0394 794.5015 null] +2111 0 obj << +/D [2109 0 R /XYZ 85.0394 794.5015 null] >> endobj 730 0 obj << -/D [2100 0 R /XYZ 85.0394 769.5949 null] +/D [2109 0 R /XYZ 85.0394 769.5949 null] >> endobj -2103 0 obj << -/D [2100 0 R /XYZ 85.0394 576.7004 null] +2112 0 obj << +/D [2109 0 R /XYZ 85.0394 576.7004 null] >> endobj 734 0 obj << -/D [2100 0 R /XYZ 85.0394 576.7004 null] +/D [2109 0 R /XYZ 85.0394 576.7004 null] >> endobj -2104 0 obj << -/D [2100 0 R /XYZ 85.0394 548.3785 null] +2113 0 obj << +/D [2109 0 R /XYZ 85.0394 548.3785 null] >> endobj 738 0 obj << -/D [2100 0 R /XYZ 85.0394 548.3785 null] +/D [2109 0 R /XYZ 85.0394 548.3785 null] >> endobj -2105 0 obj << -/D [2100 0 R /XYZ 85.0394 518.5228 null] +2114 0 obj << +/D [2109 0 R /XYZ 85.0394 518.5228 null] >> endobj 742 0 obj << -/D [2100 0 R /XYZ 85.0394 460.6968 null] +/D [2109 0 R /XYZ 85.0394 460.6968 null] >> endobj -2106 0 obj << -/D [2100 0 R /XYZ 85.0394 425.0333 null] +2115 0 obj << +/D [2109 0 R /XYZ 85.0394 425.0333 null] >> endobj 746 0 obj << -/D [2100 0 R /XYZ 85.0394 260.2468 null] +/D [2109 0 R /XYZ 85.0394 260.2468 null] >> endobj -2107 0 obj << -/D [2100 0 R /XYZ 85.0394 224.698 null] +2116 0 obj << +/D [2109 0 R /XYZ 85.0394 224.698 null] >> endobj -2099 0 obj << +2108 0 obj << /Font << /F21 938 0 R /F22 961 0 R /F11 1451 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2112 0 obj << +2121 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2111 0 obj << +2120 0 obj << /Type /Page -/Contents 2112 0 R -/Resources 2110 0 R +/Contents 2121 0 R +/Resources 2119 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2114 0 R +/Parent 2107 0 R >> endobj -2113 0 obj << -/D [2111 0 R /XYZ 56.6929 794.5015 null] +2122 0 obj << +/D [2120 0 R /XYZ 56.6929 794.5015 null] >> endobj -2110 0 obj << +2119 0 obj << /ProcSet [ /PDF ] >> endobj -2117 0 obj << +2125 0 obj << /Length 2544 /Filter /FlateDecode >> @@ -10162,42 +10189,42 @@ FXЂdƒ\#åS¯ÐyOpBŒšÈª†¨n4\Tòi¹^¿È=õvÂÀ3v·Ù”¹<ƒZˆLPO–`š8I9³€øQ&ŽÀ6
CÆg”ñ ¼ –a“p¯GkଯëÃá5³îǪÿêÄ- ÜȽ¬Í|µ/^ÄwxÒH‚ D¤<ÐÎÿ—yÇ‘sU@E…ÎqÌ*Š‘×8P”Ì Ë¿/@f4áRÊ}^º¦ÖÒRº#›Úv°/×ˈÖFtÅŒ‚þ[åSr Òéú@Øèªé)ŽL½"Ÿûæ¢@ù<ñpJµÙ>~æÜpËLtGYFgá±[A
—(-̃ÅÙ¶Ä ˜Þ°)Ëx™AaíF¼¨‚ÕáPâ¥V)§8·º>@ÌÔ4ûôÜÄP‰BÍÞ(dvP&máªëæßFD3zœ`·“¢ÂEàÛ=ÃBj{
†rh®ÔÐq½ ‘®³«zß&Å(uùJ¸8…B×ò5ø?Š²9Òp#ªf'Ë’•ú&_æùM_—¢±J6iðU£ª#E}ïãÏ^5X*‰eÃÏÖJ©>KF\¢P¯SSŒo&Œ>Ï! ·LÝ–è@±¸ˆ¤ægH@Ä9³ZI( Ž:ž()6Sq -UŸiQc¢õFêƆEiX*×5ÔÏ]OÕ-ãÖXXE p³Í‚¥¢o¹‡šMÔºõÁùˆ4òs®øbðج–× +UŸiQc¢õFêƆEiX*×5ÔÏ]OÕ-ãÖXXE p³Í‚¥¢o¹‡šMÔºõÁùˆ4òs®øbðج–× endobj -2116 0 obj << +2124 0 obj << /Type /Page -/Contents 2117 0 R -/Resources 2115 0 R +/Contents 2125 0 R +/Resources 2123 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2114 0 R +/Parent 2107 0 R >> endobj -2118 0 obj << -/D [2116 0 R /XYZ 85.0394 794.5015 null] +2126 0 obj << +/D [2124 0 R /XYZ 85.0394 794.5015 null] >> endobj 750 0 obj << -/D [2116 0 R /XYZ 85.0394 769.5949 null] +/D [2124 0 R /XYZ 85.0394 769.5949 null] >> endobj -2119 0 obj << -/D [2116 0 R /XYZ 85.0394 573.5449 null] +2127 0 obj << +/D [2124 0 R /XYZ 85.0394 573.5449 null] >> endobj 754 0 obj << -/D [2116 0 R /XYZ 85.0394 573.5449 null] +/D [2124 0 R /XYZ 85.0394 573.5449 null] >> endobj -2120 0 obj << -/D [2116 0 R /XYZ 85.0394 539.0037 null] +2128 0 obj << +/D [2124 0 R /XYZ 85.0394 539.0037 null] >> endobj 758 0 obj << -/D [2116 0 R /XYZ 85.0394 539.0037 null] +/D [2124 0 R /XYZ 85.0394 539.0037 null] >> endobj -2121 0 obj << -/D [2116 0 R /XYZ 85.0394 510.2426 null] +2129 0 obj << +/D [2124 0 R /XYZ 85.0394 510.2426 null] >> endobj -2115 0 obj << +2123 0 obj << /Font << /F21 938 0 R /F22 961 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2124 0 obj << -/Length 2811 +2132 0 obj << +/Length 2812 /Filter /FlateDecode >> stream @@ -10214,66 +10241,66 @@ EЙOÆܨŒÚ›-—e]s÷Z_ÔU×.Ê‘zE)míë¹®¸ÊWñ•¿ÉUêº0¢Æ÷jbqå¤7‘Љ’-9ŽÂÐák â”mÖöÑëC½Ã cåàföí÷¹àRõvùÀw²½šÈöëvuyùòò‚*p ]8*?\ÕÂXé[}ãú&?kÚþù+üM\O:‰p-’Ó~å‡1ÎCN("ÛÿùøÓ‰øN”±iÙE˜øôƒ–¿ÌìèÇþ»G·c1Üb¾{øÃO)Ô1T~ß!¯½<æÏGþã8:âïè[L‡uÊÓH§Ô§¿Lå]ÀĈ90&ºÒK÷ðxj7ˆ†žÄ˜-t|×âÚv ª{ô^Ù¶Ä>±t‹à-Ö‹i¦'¾}¤¥¶Ÿ4žÓÂ>©]¶£÷OtJµùï‘ÊøÙJ„b¤‡7 -}Ç÷èUHÇÁ{‘Ý°î8u¢º¦Nh{'RíÚ©›Íe³ÎN|Çs#'qå1WG¾Óa²2RÄ)µ·|'r"?Ž†<ÇéÜ4†`“6MKÎü=B¿õ…S~–œÃíóÿüõ³ÿ +}Ç÷èUHÇÁ{‘Ý°î8u¢º¦Nh{'RíÚ©›Íe³ÎN|Çs#'qå1WG¾Óa²2RÄ)µ·|'r"?Ž†<ÇéÜ4†`“6MKÎü=B¿õ…S~–œÃíóÿüõ³ÿ endobj -2123 0 obj << +2131 0 obj << /Type /Page -/Contents 2124 0 R -/Resources 2122 0 R +/Contents 2132 0 R +/Resources 2130 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2114 0 R -/Annots [ 2128 0 R 2129 0 R ] +/Parent 2107 0 R +/Annots [ 2136 0 R 2137 0 R ] >> endobj -2128 0 obj << +2136 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [253.7995 149.3637 417.685 161.4234] /Subtype/Link/A<</Type/Action/S/URI/URI(ftp://www.isi.edu/in-notes/)>> >> endobj -2129 0 obj << +2137 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [63.4454 110.455 208.8999 120.6168] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/)>> >> endobj -2125 0 obj << -/D [2123 0 R /XYZ 56.6929 794.5015 null] +2133 0 obj << +/D [2131 0 R /XYZ 56.6929 794.5015 null] >> endobj 762 0 obj << -/D [2123 0 R /XYZ 56.6929 662.0717 null] +/D [2131 0 R /XYZ 56.6929 662.0717 null] >> endobj -2126 0 obj << -/D [2123 0 R /XYZ 56.6929 624.1661 null] +2134 0 obj << +/D [2131 0 R /XYZ 56.6929 624.1661 null] >> endobj 766 0 obj << -/D [2123 0 R /XYZ 56.6929 624.1661 null] +/D [2131 0 R /XYZ 56.6929 624.1661 null] >> endobj 1531 0 obj << -/D [2123 0 R /XYZ 56.6929 593.0972 null] +/D [2131 0 R /XYZ 56.6929 593.0972 null] >> endobj 770 0 obj << -/D [2123 0 R /XYZ 56.6929 294.2701 null] +/D [2131 0 R /XYZ 56.6929 294.2701 null] >> endobj -2127 0 obj << -/D [2123 0 R /XYZ 56.6929 255.4568 null] +2135 0 obj << +/D [2131 0 R /XYZ 56.6929 255.4568 null] >> endobj 774 0 obj << -/D [2123 0 R /XYZ 56.6929 255.4568 null] +/D [2131 0 R /XYZ 56.6929 255.4568 null] >> endobj 1251 0 obj << -/D [2123 0 R /XYZ 56.6929 226.1045 null] +/D [2131 0 R /XYZ 56.6929 226.1045 null] >> endobj -2130 0 obj << -/D [2123 0 R /XYZ 56.6929 53.5688 null] +2138 0 obj << +/D [2131 0 R /XYZ 56.6929 53.5688 null] >> endobj -2131 0 obj << -/D [2123 0 R /XYZ 56.6929 53.5688 null] +2139 0 obj << +/D [2131 0 R /XYZ 56.6929 53.5688 null] >> endobj -2122 0 obj << +2130 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F39 1161 0 R /F53 1313 0 R /F11 1451 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2134 0 obj << +2142 0 obj << /Length 2825 /Filter /FlateDecode >> @@ -10292,191 +10319,191 @@ Zî–ÁÅ“ž„N(ËEHq¤;#UO«E;õ4:É$£ÇgöHm)7™FJ“>2½Ð-™'ØÃdvÀ› ã3¤%ä¶B-dU™Ï}¸
ö‡MÐFžŒ¯ -3wÊ,Ÿw¢^
[ÖŒ*…ÅÈ´<Øû©ÍØ/cŒ ±ïÖÙN>Ë^vå›~¾Ñó åçú«d>C¶K¡`Œidå7ÆÁâU<2³û»I_åCæœ:& ôÚäLcjKy¨ÖRמZ/´EvÛÁ¶
>-÷{¹ëŠõfëÀ·@09—¬–‡JÊH…‰Åq³N¬é„`ü]þmøèœÆ(æØ>F¢aóù XäýqŸêSW±ïÚôy°Úc +ïÔàT
>d mâŒ^·Ãs§÷œ¥ÅùÆgîóÝÎœø~ŸIð‘0Šüa ¹
BµT$žƒnk}àak°‘Ù!×G%ǶÚ4[Y¯†ªLÆ,<=5G±Žö\×~ïGI ¶àÏÔÿ–[áZ¨Íø¾Ï¾|¸ÂûÀà ·‘÷AŸWÏÙ6}ÍE5#P}m kkôÓÒ9áBŸÔ6"²€ÑÛÇ×H^MÖêD2ì #FEÐ|X|Ö~ѼJyÈ«m^§DRãKá%Jæ./öY®P¯ÙÙC²7Ü…¤jñ î€j“Ûÿò—¾ÖÎaŒh’8Ó(4Ÿ”r¬_Jü -LhÿÕÍ7Á§ïþ_$Gb’endstream +LXÿÕÍ7Á§ïþ_$Ÿb”endstream endobj -2133 0 obj << +2141 0 obj << /Type /Page -/Contents 2134 0 R -/Resources 2132 0 R +/Contents 2142 0 R +/Resources 2140 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2114 0 R ->> endobj -2135 0 obj << -/D [2133 0 R /XYZ 85.0394 794.5015 null] ->> endobj -2136 0 obj << -/D [2133 0 R /XYZ 85.0394 752.3015 null] ->> endobj -2137 0 obj << -/D [2133 0 R /XYZ 85.0394 752.3015 null] ->> endobj -2138 0 obj << -/D [2133 0 R /XYZ 85.0394 752.3015 null] ->> endobj -2139 0 obj << -/D [2133 0 R /XYZ 85.0394 746.3107 null] ->> endobj -2140 0 obj << -/D [2133 0 R /XYZ 85.0394 731.5461 null] ->> endobj -2141 0 obj << -/D [2133 0 R /XYZ 85.0394 728.1497 null] ->> endobj -2142 0 obj << -/D [2133 0 R /XYZ 85.0394 713.3851 null] +/Parent 2107 0 R >> endobj 2143 0 obj << -/D [2133 0 R /XYZ 85.0394 709.9887 null] +/D [2141 0 R /XYZ 85.0394 794.5015 null] >> endobj 2144 0 obj << -/D [2133 0 R /XYZ 85.0394 651.9592 null] ->> endobj -1381 0 obj << -/D [2133 0 R /XYZ 85.0394 651.9592 null] +/D [2141 0 R /XYZ 85.0394 752.3015 null] >> endobj 2145 0 obj << -/D [2133 0 R /XYZ 85.0394 651.9592 null] +/D [2141 0 R /XYZ 85.0394 752.3015 null] >> endobj 2146 0 obj << -/D [2133 0 R /XYZ 85.0394 648.8377 null] +/D [2141 0 R /XYZ 85.0394 752.3015 null] >> endobj 2147 0 obj << -/D [2133 0 R /XYZ 85.0394 634.0731 null] +/D [2141 0 R /XYZ 85.0394 746.3107 null] >> endobj 2148 0 obj << -/D [2133 0 R /XYZ 85.0394 630.6767 null] +/D [2141 0 R /XYZ 85.0394 731.5461 null] >> endobj 2149 0 obj << -/D [2133 0 R /XYZ 85.0394 615.9121 null] +/D [2141 0 R /XYZ 85.0394 728.1497 null] >> endobj 2150 0 obj << -/D [2133 0 R /XYZ 85.0394 612.5156 null] +/D [2141 0 R /XYZ 85.0394 713.3851 null] >> endobj 2151 0 obj << -/D [2133 0 R /XYZ 85.0394 585.7959 null] +/D [2141 0 R /XYZ 85.0394 709.9887 null] >> endobj 2152 0 obj << -/D [2133 0 R /XYZ 85.0394 582.3994 null] +/D [2141 0 R /XYZ 85.0394 651.9592 null] +>> endobj +1381 0 obj << +/D [2141 0 R /XYZ 85.0394 651.9592 null] >> endobj 2153 0 obj << -/D [2133 0 R /XYZ 85.0394 567.6349 null] +/D [2141 0 R /XYZ 85.0394 651.9592 null] >> endobj 2154 0 obj << -/D [2133 0 R /XYZ 85.0394 564.2384 null] +/D [2141 0 R /XYZ 85.0394 648.8377 null] >> endobj 2155 0 obj << -/D [2133 0 R /XYZ 85.0394 549.5337 null] +/D [2141 0 R /XYZ 85.0394 634.0731 null] >> endobj 2156 0 obj << -/D [2133 0 R /XYZ 85.0394 546.0774 null] +/D [2141 0 R /XYZ 85.0394 630.6767 null] >> endobj 2157 0 obj << -/D [2133 0 R /XYZ 85.0394 531.3128 null] +/D [2141 0 R /XYZ 85.0394 615.9121 null] >> endobj 2158 0 obj << -/D [2133 0 R /XYZ 85.0394 527.9163 null] +/D [2141 0 R /XYZ 85.0394 612.5156 null] >> endobj 2159 0 obj << -/D [2133 0 R /XYZ 85.0394 513.1518 null] +/D [2141 0 R /XYZ 85.0394 585.7959 null] >> endobj 2160 0 obj << -/D [2133 0 R /XYZ 85.0394 509.7553 null] +/D [2141 0 R /XYZ 85.0394 582.3994 null] >> endobj 2161 0 obj << -/D [2133 0 R /XYZ 85.0394 483.0356 null] +/D [2141 0 R /XYZ 85.0394 567.6349 null] >> endobj 2162 0 obj << -/D [2133 0 R /XYZ 85.0394 479.6391 null] +/D [2141 0 R /XYZ 85.0394 564.2384 null] >> endobj 2163 0 obj << -/D [2133 0 R /XYZ 85.0394 464.8745 null] +/D [2141 0 R /XYZ 85.0394 549.5337 null] >> endobj 2164 0 obj << -/D [2133 0 R /XYZ 85.0394 461.4781 null] +/D [2141 0 R /XYZ 85.0394 546.0774 null] >> endobj 2165 0 obj << -/D [2133 0 R /XYZ 85.0394 446.7135 null] +/D [2141 0 R /XYZ 85.0394 531.3128 null] >> endobj 2166 0 obj << -/D [2133 0 R /XYZ 85.0394 443.3171 null] +/D [2141 0 R /XYZ 85.0394 527.9163 null] >> endobj 2167 0 obj << -/D [2133 0 R /XYZ 85.0394 428.5525 null] +/D [2141 0 R /XYZ 85.0394 513.1518 null] >> endobj 2168 0 obj << -/D [2133 0 R /XYZ 85.0394 425.156 null] +/D [2141 0 R /XYZ 85.0394 509.7553 null] >> endobj 2169 0 obj << -/D [2133 0 R /XYZ 85.0394 355.0758 null] +/D [2141 0 R /XYZ 85.0394 483.0356 null] >> endobj 2170 0 obj << -/D [2133 0 R /XYZ 85.0394 355.0758 null] +/D [2141 0 R /XYZ 85.0394 479.6391 null] >> endobj 2171 0 obj << -/D [2133 0 R /XYZ 85.0394 355.0758 null] +/D [2141 0 R /XYZ 85.0394 464.8745 null] >> endobj 2172 0 obj << -/D [2133 0 R /XYZ 85.0394 352.0499 null] +/D [2141 0 R /XYZ 85.0394 461.4781 null] >> endobj 2173 0 obj << -/D [2133 0 R /XYZ 85.0394 337.3452 null] +/D [2141 0 R /XYZ 85.0394 446.7135 null] >> endobj 2174 0 obj << -/D [2133 0 R /XYZ 85.0394 333.8889 null] +/D [2141 0 R /XYZ 85.0394 443.3171 null] >> endobj 2175 0 obj << -/D [2133 0 R /XYZ 85.0394 309.8192 null] +/D [2141 0 R /XYZ 85.0394 428.5525 null] >> endobj 2176 0 obj << -/D [2133 0 R /XYZ 85.0394 303.7727 null] +/D [2141 0 R /XYZ 85.0394 425.156 null] >> endobj 2177 0 obj << -/D [2133 0 R /XYZ 85.0394 278.3282 null] +/D [2141 0 R /XYZ 85.0394 355.0758 null] >> endobj 2178 0 obj << -/D [2133 0 R /XYZ 85.0394 273.6565 null] +/D [2141 0 R /XYZ 85.0394 355.0758 null] >> endobj 2179 0 obj << -/D [2133 0 R /XYZ 85.0394 246.9367 null] +/D [2141 0 R /XYZ 85.0394 355.0758 null] >> endobj 2180 0 obj << -/D [2133 0 R /XYZ 85.0394 243.5403 null] +/D [2141 0 R /XYZ 85.0394 352.0499 null] >> endobj 2181 0 obj << -/D [2133 0 R /XYZ 85.0394 173.5556 null] +/D [2141 0 R /XYZ 85.0394 337.3452 null] >> endobj 2182 0 obj << -/D [2133 0 R /XYZ 85.0394 173.5556 null] +/D [2141 0 R /XYZ 85.0394 333.8889 null] >> endobj 2183 0 obj << -/D [2133 0 R /XYZ 85.0394 173.5556 null] +/D [2141 0 R /XYZ 85.0394 309.8192 null] >> endobj 2184 0 obj << -/D [2133 0 R /XYZ 85.0394 170.4341 null] +/D [2141 0 R /XYZ 85.0394 303.7727 null] >> endobj 2185 0 obj << -/D [2133 0 R /XYZ 85.0394 144.9896 null] +/D [2141 0 R /XYZ 85.0394 278.3282 null] >> endobj 2186 0 obj << -/D [2133 0 R /XYZ 85.0394 140.3179 null] +/D [2141 0 R /XYZ 85.0394 273.6565 null] >> endobj 2187 0 obj << -/D [2133 0 R /XYZ 85.0394 113.5982 null] +/D [2141 0 R /XYZ 85.0394 246.9367 null] >> endobj 2188 0 obj << -/D [2133 0 R /XYZ 85.0394 110.2017 null] +/D [2141 0 R /XYZ 85.0394 243.5403 null] >> endobj 2189 0 obj << -/D [2133 0 R /XYZ 85.0394 95.4372 null] +/D [2141 0 R /XYZ 85.0394 173.5556 null] >> endobj 2190 0 obj << -/D [2133 0 R /XYZ 85.0394 92.0407 null] +/D [2141 0 R /XYZ 85.0394 173.5556 null] >> endobj -2132 0 obj << +2191 0 obj << +/D [2141 0 R /XYZ 85.0394 173.5556 null] +>> endobj +2192 0 obj << +/D [2141 0 R /XYZ 85.0394 170.4341 null] +>> endobj +2193 0 obj << +/D [2141 0 R /XYZ 85.0394 144.9896 null] +>> endobj +2194 0 obj << +/D [2141 0 R /XYZ 85.0394 140.3179 null] +>> endobj +2195 0 obj << +/D [2141 0 R /XYZ 85.0394 113.5982 null] +>> endobj +2196 0 obj << +/D [2141 0 R /XYZ 85.0394 110.2017 null] +>> endobj +2197 0 obj << +/D [2141 0 R /XYZ 85.0394 95.4372 null] +>> endobj +2198 0 obj << +/D [2141 0 R /XYZ 85.0394 92.0407 null] +>> endobj +2140 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2193 0 obj << +2201 0 obj << /Length 2889 /Filter /FlateDecode >> @@ -10494,179 +10521,179 @@ id„ý4¦Õ0m¥Ñ¡¥ ¾šÈÖϺ`]Ë4OòJv‰šU
N«µƒiqLË2í«ÿ ŒÛÏiueK×±ôƒƒæÏBŽãŒÄaÓj˜¹¶jÞLpð0s«tÃüD»—yK[ÏÇ"ß»ø+Vý,/MÓ~‚é;üd'DÄñCK˜ýl~h½u Äë!ÍTò'/Ø‹PˆÇª¦•…’²j(ÙöK«´A©«ÝOÉÔ^³ïÇTìq{–«íPo‘Í#/þéºÐ湚»×,Ý…ô¦¬+#wŸ[<¹ÂùÅ!Ù±r¹
…º#õ:ÓÊEYi(^ds›´¥«ÝÅÔOï7Õá¸D˜d™7žmôl‘‡ü€ºíÉÿ ã -.Wçñ|¾FñZD—øw¦~TЙìkUUIw9SAèJ6î$Í«z꾅щlÍ£ü~dÃÏu1dwGÛ›VdÊJ#‰å4i•6uµû‘™ÚËøBm¼DÁ¶Ï9„§L½Î´ç1NîC݇MyúýȺ‡ лéz~ÐÛ–±DÇÊŽ§^I§‚ö;•“~f8ö–…a4LK5eb©TÛtV]á^T¦°Žqn¨bœñ7ƒ´ºsnÔ©b‚å2^Åâêr…tÇÉÐû¼¤é“ÖÓ?±N©áv3¥†f#¥æÒè¢.lå¹x òüßµ·eYšìÕ‹Z¤uö×ÎÚyÍnð i©³xˆ¿OÛ3ùŽ>“þϯíUñ +.Wçñ|¾FñZD—øw¦~TЙìkUUIw9SAèJ6î$Í«z꾅щlÍ£ü~dÃÏu1dwGÛ›VdÊJ#‰å4i•6uµû‘™ÚËøBm¼DÁ¶Ï9„§L½Î´ç1NîC݇MyúýȺ‡ лéz~ÐÛ–±DÇÊŽ§^I§‚ö;•“~f8ö–…a4LK5eb©TÛtV]á^T¦°Žqn¨bœñ7ƒ´ºsnÔ©b‚å2^Åâêr…tÇÉÐû¼¤é“ÖÓ?±N©áv3¥†f#¥æÒè¢.lå¹x òüßµ·eYšìÕ‹Z¤uö×ÎÚyÍnð i©³xˆ¿OÛ3ùŽ>“þϯíUñ endobj -2192 0 obj << +2200 0 obj << /Type /Page -/Contents 2193 0 R -/Resources 2191 0 R +/Contents 2201 0 R +/Resources 2199 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2114 0 R ->> endobj -2194 0 obj << -/D [2192 0 R /XYZ 56.6929 794.5015 null] ->> endobj -2195 0 obj << -/D [2192 0 R /XYZ 56.6929 748.5056 null] ->> endobj -2196 0 obj << -/D [2192 0 R /XYZ 56.6929 748.5056 null] ->> endobj -2197 0 obj << -/D [2192 0 R /XYZ 56.6929 748.5056 null] ->> endobj -2198 0 obj << -/D [2192 0 R /XYZ 56.6929 743.7078 null] ->> endobj -2199 0 obj << -/D [2192 0 R /XYZ 56.6929 719.6381 null] ->> endobj -2200 0 obj << -/D [2192 0 R /XYZ 56.6929 711.8197 null] ->> endobj -2201 0 obj << -/D [2192 0 R /XYZ 56.6929 697.0552 null] +/Parent 2255 0 R >> endobj 2202 0 obj << -/D [2192 0 R /XYZ 56.6929 691.8868 null] +/D [2200 0 R /XYZ 56.6929 794.5015 null] >> endobj 2203 0 obj << -/D [2192 0 R /XYZ 56.6929 665.1671 null] +/D [2200 0 R /XYZ 56.6929 748.5056 null] >> endobj 2204 0 obj << -/D [2192 0 R /XYZ 56.6929 659.9987 null] +/D [2200 0 R /XYZ 56.6929 748.5056 null] >> endobj 2205 0 obj << -/D [2192 0 R /XYZ 56.6929 635.929 null] +/D [2200 0 R /XYZ 56.6929 748.5056 null] >> endobj 2206 0 obj << -/D [2192 0 R /XYZ 56.6929 628.1106 null] +/D [2200 0 R /XYZ 56.6929 743.7078 null] >> endobj 2207 0 obj << -/D [2192 0 R /XYZ 56.6929 601.3909 null] +/D [2200 0 R /XYZ 56.6929 719.6381 null] >> endobj 2208 0 obj << -/D [2192 0 R /XYZ 56.6929 596.2225 null] +/D [2200 0 R /XYZ 56.6929 711.8197 null] >> endobj 2209 0 obj << -/D [2192 0 R /XYZ 56.6929 569.5028 null] +/D [2200 0 R /XYZ 56.6929 697.0552 null] >> endobj 2210 0 obj << -/D [2192 0 R /XYZ 56.6929 564.3344 null] +/D [2200 0 R /XYZ 56.6929 691.8868 null] >> endobj 2211 0 obj << -/D [2192 0 R /XYZ 56.6929 549.6297 null] +/D [2200 0 R /XYZ 56.6929 665.1671 null] >> endobj 2212 0 obj << -/D [2192 0 R /XYZ 56.6929 544.4015 null] +/D [2200 0 R /XYZ 56.6929 659.9987 null] >> endobj 2213 0 obj << -/D [2192 0 R /XYZ 56.6929 529.6968 null] +/D [2200 0 R /XYZ 56.6929 635.929 null] >> endobj 2214 0 obj << -/D [2192 0 R /XYZ 56.6929 524.4686 null] +/D [2200 0 R /XYZ 56.6929 628.1106 null] >> endobj 2215 0 obj << -/D [2192 0 R /XYZ 56.6929 500.3989 null] +/D [2200 0 R /XYZ 56.6929 601.3909 null] >> endobj 2216 0 obj << -/D [2192 0 R /XYZ 56.6929 492.5805 null] +/D [2200 0 R /XYZ 56.6929 596.2225 null] >> endobj 2217 0 obj << -/D [2192 0 R /XYZ 56.6929 467.136 null] +/D [2200 0 R /XYZ 56.6929 569.5028 null] >> endobj 2218 0 obj << -/D [2192 0 R /XYZ 56.6929 460.6924 null] +/D [2200 0 R /XYZ 56.6929 564.3344 null] >> endobj 2219 0 obj << -/D [2192 0 R /XYZ 56.6929 436.6227 null] +/D [2200 0 R /XYZ 56.6929 549.6297 null] >> endobj 2220 0 obj << -/D [2192 0 R /XYZ 56.6929 428.8043 null] +/D [2200 0 R /XYZ 56.6929 544.4015 null] >> endobj 2221 0 obj << -/D [2192 0 R /XYZ 56.6929 414.0996 null] +/D [2200 0 R /XYZ 56.6929 529.6968 null] >> endobj 2222 0 obj << -/D [2192 0 R /XYZ 56.6929 408.8714 null] +/D [2200 0 R /XYZ 56.6929 524.4686 null] >> endobj 2223 0 obj << -/D [2192 0 R /XYZ 56.6929 382.1516 null] +/D [2200 0 R /XYZ 56.6929 500.3989 null] >> endobj 2224 0 obj << -/D [2192 0 R /XYZ 56.6929 376.9833 null] +/D [2200 0 R /XYZ 56.6929 492.5805 null] >> endobj 2225 0 obj << -/D [2192 0 R /XYZ 56.6929 350.2636 null] +/D [2200 0 R /XYZ 56.6929 467.136 null] >> endobj 2226 0 obj << -/D [2192 0 R /XYZ 56.6929 345.0952 null] +/D [2200 0 R /XYZ 56.6929 460.6924 null] >> endobj 2227 0 obj << -/D [2192 0 R /XYZ 56.6929 321.0255 null] +/D [2200 0 R /XYZ 56.6929 436.6227 null] >> endobj 2228 0 obj << -/D [2192 0 R /XYZ 56.6929 313.2071 null] +/D [2200 0 R /XYZ 56.6929 428.8043 null] >> endobj 2229 0 obj << -/D [2192 0 R /XYZ 56.6929 298.5024 null] +/D [2200 0 R /XYZ 56.6929 414.0996 null] >> endobj 2230 0 obj << -/D [2192 0 R /XYZ 56.6929 293.2742 null] +/D [2200 0 R /XYZ 56.6929 408.8714 null] >> endobj 2231 0 obj << -/D [2192 0 R /XYZ 56.6929 267.8297 null] +/D [2200 0 R /XYZ 56.6929 382.1516 null] >> endobj 2232 0 obj << -/D [2192 0 R /XYZ 56.6929 261.3861 null] +/D [2200 0 R /XYZ 56.6929 376.9833 null] >> endobj 2233 0 obj << -/D [2192 0 R /XYZ 56.6929 199.468 null] +/D [2200 0 R /XYZ 56.6929 350.2636 null] >> endobj 2234 0 obj << -/D [2192 0 R /XYZ 56.6929 199.468 null] +/D [2200 0 R /XYZ 56.6929 345.0952 null] >> endobj 2235 0 obj << -/D [2192 0 R /XYZ 56.6929 199.468 null] +/D [2200 0 R /XYZ 56.6929 321.0255 null] >> endobj 2236 0 obj << -/D [2192 0 R /XYZ 56.6929 191.7053 null] +/D [2200 0 R /XYZ 56.6929 313.2071 null] >> endobj 2237 0 obj << -/D [2192 0 R /XYZ 56.6929 176.9408 null] +/D [2200 0 R /XYZ 56.6929 298.5024 null] >> endobj 2238 0 obj << -/D [2192 0 R /XYZ 56.6929 171.7724 null] +/D [2200 0 R /XYZ 56.6929 293.2742 null] >> endobj 2239 0 obj << -/D [2192 0 R /XYZ 56.6929 157.0677 null] +/D [2200 0 R /XYZ 56.6929 267.8297 null] >> endobj 2240 0 obj << -/D [2192 0 R /XYZ 56.6929 151.8395 null] +/D [2200 0 R /XYZ 56.6929 261.3861 null] >> endobj 2241 0 obj << -/D [2192 0 R /XYZ 56.6929 137.1348 null] +/D [2200 0 R /XYZ 56.6929 199.468 null] >> endobj 2242 0 obj << -/D [2192 0 R /XYZ 56.6929 131.9066 null] +/D [2200 0 R /XYZ 56.6929 199.468 null] >> endobj 2243 0 obj << -/D [2192 0 R /XYZ 56.6929 117.2018 null] +/D [2200 0 R /XYZ 56.6929 199.468 null] >> endobj 2244 0 obj << -/D [2192 0 R /XYZ 56.6929 111.9736 null] +/D [2200 0 R /XYZ 56.6929 191.7053 null] >> endobj 2245 0 obj << -/D [2192 0 R /XYZ 56.6929 97.2091 null] +/D [2200 0 R /XYZ 56.6929 176.9408 null] >> endobj 2246 0 obj << -/D [2192 0 R /XYZ 56.6929 92.0407 null] +/D [2200 0 R /XYZ 56.6929 171.7724 null] >> endobj -2191 0 obj << +2247 0 obj << +/D [2200 0 R /XYZ 56.6929 157.0677 null] +>> endobj +2248 0 obj << +/D [2200 0 R /XYZ 56.6929 151.8395 null] +>> endobj +2249 0 obj << +/D [2200 0 R /XYZ 56.6929 137.1348 null] +>> endobj +2250 0 obj << +/D [2200 0 R /XYZ 56.6929 131.9066 null] +>> endobj +2251 0 obj << +/D [2200 0 R /XYZ 56.6929 117.2018 null] +>> endobj +2252 0 obj << +/D [2200 0 R /XYZ 56.6929 111.9736 null] +>> endobj +2253 0 obj << +/D [2200 0 R /XYZ 56.6929 97.2091 null] +>> endobj +2254 0 obj << +/D [2200 0 R /XYZ 56.6929 92.0407 null] +>> endobj +2199 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2249 0 obj << +2258 0 obj << /Length 2542 /Filter /FlateDecode >> @@ -10677,173 +10704,173 @@ i’|œ8Hrà
€-È_k©îòuà8‹<KkV˜z`Í÷²úwGQ¶eã…±ùA0žI>¦‡,o”Ói’ÖrûîGU¶k,E )ÒI8²×à| D}`k°ùzH‹v;–<óç‘<k˜¹mP7,ÏKÍt²}Ó|Û«" éÿBp7¥Œ+)ƒrì Ümp>Ķn‚sF…‹±#ø4¥ w}vÓT`j¯K‚^ñÒ•‹µ±ŸïÄQ¾¯Ì‡‹è8:4‰8Œmúp€ÂŽq~ƒqq¯–p¾óE®nÒ#ü:O‹íkþáAL ƒº”ÍM);áZÊ ÜQ;¡;ÂÏ°Ç ï?ŠÛrÇx -ÈLíª¯ÝƒïüÂÙ)óWy~„{¹ÿý_ýò£
Šòr,4æ0[ÄV>ýˆzQx)]˜Rv>µTÇ'uNèŽÏ3ìq>{à=}gE7½S.%«‚ó©êÏrjÇtå¬Q„Gõ1þYoÓm»›x1xé„´H!]Ò£ÈÑùp
RÀNä5ƒnŒ°Q3+ZÄpEdôºP•:¢ þ0yCA»/ÁóêÁЯ%k”"J¼8õ÷'IQ猣o(À±&B½ +ÈLíª¯ÝƒïüÂÙ)óWy~„{¹ÿý_ýò£
Šòr,4æ0[ÄV>ýˆzQx)]˜Rv>µTÇ'uNèŽÏ3ìq>{à=}gE7½S.%«‚ó©êÏrjÇtå¬Q„Gõ1þYoÓm»›x1xé„´H!]Ò£ÈÑùp
RÀNä5ƒnŒ°Q3+ZÄpEdôºP•:¢ þ0yCA»/ÁóêÁЯ%k”"J¼8õ÷'IQ猣o(À±&B½ endobj -2248 0 obj << +2257 0 obj << /Type /Page -/Contents 2249 0 R -/Resources 2247 0 R +/Contents 2258 0 R +/Resources 2256 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2114 0 R ->> endobj -2250 0 obj << -/D [2248 0 R /XYZ 85.0394 794.5015 null] ->> endobj -2251 0 obj << -/D [2248 0 R /XYZ 85.0394 748.4854 null] ->> endobj -2252 0 obj << -/D [2248 0 R /XYZ 85.0394 748.4854 null] ->> endobj -2253 0 obj << -/D [2248 0 R /XYZ 85.0394 748.4854 null] ->> endobj -2254 0 obj << -/D [2248 0 R /XYZ 85.0394 743.3452 null] ->> endobj -2255 0 obj << -/D [2248 0 R /XYZ 85.0394 728.6405 null] ->> endobj -2256 0 obj << -/D [2248 0 R /XYZ 85.0394 723.1655 null] ->> endobj -2257 0 obj << -/D [2248 0 R /XYZ 85.0394 708.4607 null] ->> endobj -2258 0 obj << -/D [2248 0 R /XYZ 85.0394 702.9857 null] +/Parent 2255 0 R >> endobj 2259 0 obj << -/D [2248 0 R /XYZ 85.0394 688.2211 null] +/D [2257 0 R /XYZ 85.0394 794.5015 null] >> endobj 2260 0 obj << -/D [2248 0 R /XYZ 85.0394 682.8059 null] +/D [2257 0 R /XYZ 85.0394 748.4854 null] >> endobj 2261 0 obj << -/D [2248 0 R /XYZ 85.0394 668.0414 null] +/D [2257 0 R /XYZ 85.0394 748.4854 null] >> endobj 2262 0 obj << -/D [2248 0 R /XYZ 85.0394 662.6262 null] +/D [2257 0 R /XYZ 85.0394 748.4854 null] >> endobj 2263 0 obj << -/D [2248 0 R /XYZ 85.0394 599.7666 null] +/D [2257 0 R /XYZ 85.0394 743.3452 null] >> endobj 2264 0 obj << -/D [2248 0 R /XYZ 85.0394 599.7666 null] +/D [2257 0 R /XYZ 85.0394 728.6405 null] >> endobj 2265 0 obj << -/D [2248 0 R /XYZ 85.0394 599.7666 null] +/D [2257 0 R /XYZ 85.0394 723.1655 null] >> endobj 2266 0 obj << -/D [2248 0 R /XYZ 85.0394 591.7571 null] +/D [2257 0 R /XYZ 85.0394 708.4607 null] >> endobj 2267 0 obj << -/D [2248 0 R /XYZ 85.0394 565.0374 null] +/D [2257 0 R /XYZ 85.0394 702.9857 null] >> endobj 2268 0 obj << -/D [2248 0 R /XYZ 85.0394 559.6222 null] +/D [2257 0 R /XYZ 85.0394 688.2211 null] >> endobj 2269 0 obj << -/D [2248 0 R /XYZ 85.0394 534.1777 null] +/D [2257 0 R /XYZ 85.0394 682.8059 null] >> endobj 2270 0 obj << -/D [2248 0 R /XYZ 85.0394 527.4872 null] +/D [2257 0 R /XYZ 85.0394 668.0414 null] >> endobj 2271 0 obj << -/D [2248 0 R /XYZ 85.0394 502.0427 null] +/D [2257 0 R /XYZ 85.0394 662.6262 null] >> endobj 2272 0 obj << -/D [2248 0 R /XYZ 85.0394 495.3523 null] +/D [2257 0 R /XYZ 85.0394 599.7666 null] >> endobj 2273 0 obj << -/D [2248 0 R /XYZ 85.0394 420.5376 null] +/D [2257 0 R /XYZ 85.0394 599.7666 null] >> endobj 2274 0 obj << -/D [2248 0 R /XYZ 85.0394 420.5376 null] +/D [2257 0 R /XYZ 85.0394 599.7666 null] >> endobj 2275 0 obj << -/D [2248 0 R /XYZ 85.0394 420.5376 null] +/D [2257 0 R /XYZ 85.0394 591.7571 null] >> endobj 2276 0 obj << -/D [2248 0 R /XYZ 85.0394 412.5281 null] +/D [2257 0 R /XYZ 85.0394 565.0374 null] >> endobj 2277 0 obj << -/D [2248 0 R /XYZ 85.0394 388.4584 null] +/D [2257 0 R /XYZ 85.0394 559.6222 null] >> endobj 2278 0 obj << -/D [2248 0 R /XYZ 85.0394 380.3932 null] +/D [2257 0 R /XYZ 85.0394 534.1777 null] >> endobj 2279 0 obj << -/D [2248 0 R /XYZ 85.0394 365.6884 null] +/D [2257 0 R /XYZ 85.0394 527.4872 null] >> endobj 2280 0 obj << -/D [2248 0 R /XYZ 85.0394 360.2134 null] +/D [2257 0 R /XYZ 85.0394 502.0427 null] >> endobj 2281 0 obj << -/D [2248 0 R /XYZ 85.0394 345.4488 null] +/D [2257 0 R /XYZ 85.0394 495.3523 null] >> endobj 2282 0 obj << -/D [2248 0 R /XYZ 85.0394 340.0336 null] +/D [2257 0 R /XYZ 85.0394 420.5376 null] >> endobj 2283 0 obj << -/D [2248 0 R /XYZ 85.0394 325.269 null] +/D [2257 0 R /XYZ 85.0394 420.5376 null] >> endobj 2284 0 obj << -/D [2248 0 R /XYZ 85.0394 319.8539 null] +/D [2257 0 R /XYZ 85.0394 420.5376 null] >> endobj 2285 0 obj << -/D [2248 0 R /XYZ 85.0394 295.7842 null] +/D [2257 0 R /XYZ 85.0394 412.5281 null] >> endobj 2286 0 obj << -/D [2248 0 R /XYZ 85.0394 287.7189 null] +/D [2257 0 R /XYZ 85.0394 388.4584 null] >> endobj 2287 0 obj << -/D [2248 0 R /XYZ 85.0394 272.9543 null] +/D [2257 0 R /XYZ 85.0394 380.3932 null] >> endobj 2288 0 obj << -/D [2248 0 R /XYZ 85.0394 267.5392 null] +/D [2257 0 R /XYZ 85.0394 365.6884 null] >> endobj 2289 0 obj << -/D [2248 0 R /XYZ 85.0394 252.7746 null] +/D [2257 0 R /XYZ 85.0394 360.2134 null] >> endobj 2290 0 obj << -/D [2248 0 R /XYZ 85.0394 247.3594 null] +/D [2257 0 R /XYZ 85.0394 345.4488 null] >> endobj 2291 0 obj << -/D [2248 0 R /XYZ 85.0394 223.2897 null] +/D [2257 0 R /XYZ 85.0394 340.0336 null] >> endobj 2292 0 obj << -/D [2248 0 R /XYZ 85.0394 215.2245 null] +/D [2257 0 R /XYZ 85.0394 325.269 null] >> endobj 2293 0 obj << -/D [2248 0 R /XYZ 85.0394 149.4956 null] +/D [2257 0 R /XYZ 85.0394 319.8539 null] >> endobj 2294 0 obj << -/D [2248 0 R /XYZ 85.0394 149.4956 null] +/D [2257 0 R /XYZ 85.0394 295.7842 null] >> endobj 2295 0 obj << -/D [2248 0 R /XYZ 85.0394 149.4956 null] +/D [2257 0 R /XYZ 85.0394 287.7189 null] >> endobj 2296 0 obj << -/D [2248 0 R /XYZ 85.0394 144.3554 null] +/D [2257 0 R /XYZ 85.0394 272.9543 null] >> endobj 2297 0 obj << -/D [2248 0 R /XYZ 85.0394 120.2857 null] +/D [2257 0 R /XYZ 85.0394 267.5392 null] >> endobj 2298 0 obj << -/D [2248 0 R /XYZ 85.0394 112.2205 null] +/D [2257 0 R /XYZ 85.0394 252.7746 null] >> endobj 2299 0 obj << -/D [2248 0 R /XYZ 85.0394 97.4559 null] +/D [2257 0 R /XYZ 85.0394 247.3594 null] >> endobj 2300 0 obj << -/D [2248 0 R /XYZ 85.0394 92.0407 null] +/D [2257 0 R /XYZ 85.0394 223.2897 null] >> endobj -2247 0 obj << +2301 0 obj << +/D [2257 0 R /XYZ 85.0394 215.2245 null] +>> endobj +2302 0 obj << +/D [2257 0 R /XYZ 85.0394 149.4956 null] +>> endobj +2303 0 obj << +/D [2257 0 R /XYZ 85.0394 149.4956 null] +>> endobj +2304 0 obj << +/D [2257 0 R /XYZ 85.0394 149.4956 null] +>> endobj +2305 0 obj << +/D [2257 0 R /XYZ 85.0394 144.3554 null] +>> endobj +2306 0 obj << +/D [2257 0 R /XYZ 85.0394 120.2857 null] +>> endobj +2307 0 obj << +/D [2257 0 R /XYZ 85.0394 112.2205 null] +>> endobj +2308 0 obj << +/D [2257 0 R /XYZ 85.0394 97.4559 null] +>> endobj +2309 0 obj << +/D [2257 0 R /XYZ 85.0394 92.0407 null] +>> endobj +2256 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2303 0 obj << +2312 0 obj << /Length 2928 /Filter /FlateDecode >> @@ -10859,126 +10886,126 @@ B…{aª/;ÏÕVÇ Ø§Å÷ñ`èv `+•Z1†^ž@¼lÐÛeg˜sŠ÷Ó¬[M”›M‘ÓëY3gÖU^ â§.|Rƒ¶Im3ìê\ñ–/²ƒI/UQTïT`7“.›ŸO@6á™Ë±Í¥"QÏ‘#÷ÒÐ’¥=9:T<{ãJ
Ó±ÒžÓÄÜ
ð׋žÒ'uIâ”Ù»:_h¦t4 ñ‹âh‘£e=A]-¶…ªÙ‚H{"’ÍWÒgÁNe)hXXQ̺€–…–Qj‘è˜/2Õ+.«Jº> -®,¸è«ªíEšN¡hKÂsÚZ–LµYÃÈ{Þ®¨%éƒÞš§ÛBÖÔo²úm_áóAÖ¢û9Ø(ããûÃ÷VSì¡Á
ø9-]@
v´tŸa€¢Á†ÂbC=¹x“¯Á§D°ØLÀ'sŬ(žCW$¢Ae™/¤y}æÝσ€ug¹ÄÚ7JÙÁà„ð“ÿìW¦*œªÕ/õÍ®LWkYm›ƒ»¹ÙÉ+mœ¸p¼gž
-¦Óh˜Î9à˜ÆÎÿ5ºŸQyŸz5Яnçä^Š€W´Rå# >f-„·7ÌQØ¥‡ýýBgQιƒÿ9ÁÕ¥¥¡¾w!Ej™–wa#»š ëÆÌjÁ_+ÊjUq²7â7ZHZ•/4‚Þh3"Ñf€Ä}–Þ6ë…ú}ÎW¹¤Ùd)ýÐD, {ËmmNæ@´zÄC"-|¿¤–zꢗ0Ê{¡d#ÓW¸î_šì0À)¦u¾Ù¿v‡{–²Ñ['1´>å p½|§{ÂÎEàâ¿àë.ÿ÷úXo@‘+âøÄO'^¸094‹Ru¥-ÝüOÐñÚÿÔy
Lendstream +®,¸è«ªíEšN¡hKÂsÚZ–LµYÃÈ{Þ®¨%éƒÞš§ÛBÖÔo²úm_áóAÖ¢û9Ø(ããûÃ÷VSì¡Á
ø9-]@
v´tŸa€¢Á†ÂbC=¹x“¯Á§D°ØLÀ'sŬ(žCW$¢Ae™/¤y}æÝσ€ug¹ÄÚ7JÙÁà„ð“ÿìW¦*œªÕ/õÍ®LWkYm›ƒ»¹ÙÉ+mœ¸p¼gž
-¦Óh˜Î9à˜ÆÎÿ5ºŸQyŸz5Яnçä^Š€W´Rå# >f-„·7ÌQØ¥‡ýýBgQιƒÿ9ÁÕ¥¥¡¾w!Ej™–wa#»š ëÆÌjÁ_+ÊjUq²7â7ZHZ•/4‚Þh3"Ñf€Ä}–Þ6ë…ú}ÎW¹¤Ùd)ýÐD, {ËmmNæ@´zÄC"-|¿¤–zꢗ0Ê{¡d#ÓW¸î_šì0À)¦u¾Ù¿v‡{–²Ñ['1´>å p½|§{ÂÎEàâ¿àë.ÿ÷úXo@‘+âøÄO'^¸094‹Ru¥-ÝüOÐñÚÿÔÑ
Nendstream endobj -2302 0 obj << +2311 0 obj << /Type /Page -/Contents 2303 0 R -/Resources 2301 0 R +/Contents 2312 0 R +/Resources 2310 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2336 0 R ->> endobj -2304 0 obj << -/D [2302 0 R /XYZ 56.6929 794.5015 null] ->> endobj -2305 0 obj << -/D [2302 0 R /XYZ 56.6929 749.0089 null] ->> endobj -2306 0 obj << -/D [2302 0 R /XYZ 56.6929 749.0089 null] ->> endobj -2307 0 obj << -/D [2302 0 R /XYZ 56.6929 749.0089 null] ->> endobj -2308 0 obj << -/D [2302 0 R /XYZ 56.6929 745.2843 null] ->> endobj -2309 0 obj << -/D [2302 0 R /XYZ 56.6929 721.2146 null] ->> endobj -2310 0 obj << -/D [2302 0 R /XYZ 56.6929 714.4694 null] ->> endobj -2311 0 obj << -/D [2302 0 R /XYZ 56.6929 699.7048 null] ->> endobj -2312 0 obj << -/D [2302 0 R /XYZ 56.6929 695.6096 null] +/Parent 2255 0 R >> endobj 2313 0 obj << -/D [2302 0 R /XYZ 56.6929 680.9049 null] +/D [2311 0 R /XYZ 56.6929 794.5015 null] >> endobj 2314 0 obj << -/D [2302 0 R /XYZ 56.6929 676.7499 null] +/D [2311 0 R /XYZ 56.6929 749.0089 null] >> endobj 2315 0 obj << -/D [2302 0 R /XYZ 56.6929 652.6802 null] +/D [2311 0 R /XYZ 56.6929 749.0089 null] >> endobj 2316 0 obj << -/D [2302 0 R /XYZ 56.6929 645.935 null] +/D [2311 0 R /XYZ 56.6929 749.0089 null] >> endobj 2317 0 obj << -/D [2302 0 R /XYZ 56.6929 631.2303 null] +/D [2311 0 R /XYZ 56.6929 745.2843 null] >> endobj 2318 0 obj << -/D [2302 0 R /XYZ 56.6929 627.0752 null] +/D [2311 0 R /XYZ 56.6929 721.2146 null] >> endobj 2319 0 obj << -/D [2302 0 R /XYZ 56.6929 603.0055 null] +/D [2311 0 R /XYZ 56.6929 714.4694 null] >> endobj 2320 0 obj << -/D [2302 0 R /XYZ 56.6929 596.2603 null] +/D [2311 0 R /XYZ 56.6929 699.7048 null] >> endobj 2321 0 obj << -/D [2302 0 R /XYZ 56.6929 572.1906 null] +/D [2311 0 R /XYZ 56.6929 695.6096 null] >> endobj 2322 0 obj << -/D [2302 0 R /XYZ 56.6929 565.4454 null] +/D [2311 0 R /XYZ 56.6929 680.9049 null] >> endobj 2323 0 obj << -/D [2302 0 R /XYZ 56.6929 550.7407 null] +/D [2311 0 R /XYZ 56.6929 676.7499 null] >> endobj 2324 0 obj << -/D [2302 0 R /XYZ 56.6929 546.5857 null] +/D [2311 0 R /XYZ 56.6929 652.6802 null] >> endobj 2325 0 obj << -/D [2302 0 R /XYZ 56.6929 531.8211 null] +/D [2311 0 R /XYZ 56.6929 645.935 null] >> endobj 2326 0 obj << -/D [2302 0 R /XYZ 56.6929 527.7259 null] +/D [2311 0 R /XYZ 56.6929 631.2303 null] >> endobj 2327 0 obj << -/D [2302 0 R /XYZ 56.6929 501.0062 null] +/D [2311 0 R /XYZ 56.6929 627.0752 null] >> endobj 2328 0 obj << -/D [2302 0 R /XYZ 56.6929 496.911 null] ->> endobj -778 0 obj << -/D [2302 0 R /XYZ 56.6929 464.7873 null] +/D [2311 0 R /XYZ 56.6929 603.0055 null] >> endobj 2329 0 obj << -/D [2302 0 R /XYZ 56.6929 439.0859 null] ->> endobj -782 0 obj << -/D [2302 0 R /XYZ 56.6929 352.4521 null] +/D [2311 0 R /XYZ 56.6929 596.2603 null] >> endobj 2330 0 obj << -/D [2302 0 R /XYZ 56.6929 326.7507 null] +/D [2311 0 R /XYZ 56.6929 572.1906 null] >> endobj 2331 0 obj << -/D [2302 0 R /XYZ 56.6929 290.6891 null] +/D [2311 0 R /XYZ 56.6929 565.4454 null] >> endobj 2332 0 obj << -/D [2302 0 R /XYZ 56.6929 290.6891 null] +/D [2311 0 R /XYZ 56.6929 550.7407 null] >> endobj 2333 0 obj << -/D [2302 0 R /XYZ 56.6929 290.6891 null] +/D [2311 0 R /XYZ 56.6929 546.5857 null] >> endobj 2334 0 obj << -/D [2302 0 R /XYZ 56.6929 290.6891 null] +/D [2311 0 R /XYZ 56.6929 531.8211 null] +>> endobj +2335 0 obj << +/D [2311 0 R /XYZ 56.6929 527.7259 null] +>> endobj +2336 0 obj << +/D [2311 0 R /XYZ 56.6929 501.0062 null] +>> endobj +2337 0 obj << +/D [2311 0 R /XYZ 56.6929 496.911 null] +>> endobj +778 0 obj << +/D [2311 0 R /XYZ 56.6929 464.7873 null] +>> endobj +2338 0 obj << +/D [2311 0 R /XYZ 56.6929 439.0859 null] +>> endobj +782 0 obj << +/D [2311 0 R /XYZ 56.6929 352.4521 null] +>> endobj +2339 0 obj << +/D [2311 0 R /XYZ 56.6929 326.7507 null] +>> endobj +2340 0 obj << +/D [2311 0 R /XYZ 56.6929 290.6891 null] +>> endobj +2341 0 obj << +/D [2311 0 R /XYZ 56.6929 290.6891 null] +>> endobj +2342 0 obj << +/D [2311 0 R /XYZ 56.6929 290.6891 null] +>> endobj +2343 0 obj << +/D [2311 0 R /XYZ 56.6929 290.6891 null] >> endobj 786 0 obj << -/D [2302 0 R /XYZ 56.6929 241.4457 null] +/D [2311 0 R /XYZ 56.6929 241.4457 null] >> endobj -2335 0 obj << -/D [2302 0 R /XYZ 56.6929 201.7704 null] +2344 0 obj << +/D [2311 0 R /XYZ 56.6929 201.7704 null] >> endobj -2301 0 obj << +2310 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R /F14 964 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2339 0 obj << -/Length 2293 +2347 0 obj << +/Length 2294 /Filter /FlateDecode >> stream @@ -10994,48 +11021,47 @@ bsب– ²y<ChR µJH%âWÇ«jØb€;WP§ªbu8›ZÎURC—iÑÁ„&L^š P#¢
&6æ0wV}-±b]íO«–í%9µ2¶žTû¾Ò“žAäíEÑѣ̀~ãÊ»Ì^¹¾'åe ±)ìúŸ`ÖnqaSx¿áÄ«¶´¥$ÓÕå„á#áQàY1Ó½|Os‘ï¤Íw¿”Æ æƒ’ÊáNšë¥jÚZÓ‡„—8@Ääܘêån zs€{Uêq€»;9Àˆýp2ßh0á–ÂCP˜XÃg‰±ˆ€âLî€×ÛÈwƒã´‚ðYÝ26iàÞ.‘ØO|)Úˆ8ñKD˜‰••@Åt"'%M_ñX¨Ù«9÷}WúL¾qŸ#ªWzû>_“:ºÏs±Ó÷9K^"áÐtÀ¼¿TF¹ ‘Ë¥é:$ã˜b¯¦m‹ì›ýpG'ßNìWšèäúÍÖ’žm/zèᢋÛYìÜå´dF+ö‰™Ú¡¾™ 8¢oX/dîpŠ³:áØ8Ò WÐBi:–Ž™ .Ó>÷7ŠCßfœÈ²‰œ#„‰¸§Ú¯ua‡H;B£x“kéƒÞqàõÁûxÁÏD‚…¶êÚ³IÙªJ¹’Ì
Exêìc…±dÐż³@©ß•%±3Hqøñ….oÔ~½9»åη¨ks“ÓÛ;‚W%0þ5=ÿ}Ï ÷Âòÿ?]¾}¾‘Ž_§œòÕVx*åW1ùQž
%ìoÿ{☻dèŠ(ò¦sˆ€\Sï… -qï"qù -uä…gÿ/JD»æendstream +q/>?º/ PG^8qöÿJœ»èendstream endobj -2338 0 obj << +2346 0 obj << /Type /Page -/Contents 2339 0 R -/Resources 2337 0 R +/Contents 2347 0 R +/Resources 2345 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2336 0 R +/Parent 2255 0 R >> endobj -2340 0 obj << -/D [2338 0 R /XYZ 85.0394 794.5015 null] +2348 0 obj << +/D [2346 0 R /XYZ 85.0394 794.5015 null] >> endobj 790 0 obj << -/D [2338 0 R /XYZ 85.0394 662.3711 null] +/D [2346 0 R /XYZ 85.0394 662.3711 null] >> endobj -2341 0 obj << -/D [2338 0 R /XYZ 85.0394 634.4781 null] +2349 0 obj << +/D [2346 0 R /XYZ 85.0394 634.4781 null] >> endobj 794 0 obj << -/D [2338 0 R /XYZ 85.0394 566.8617 null] +/D [2346 0 R /XYZ 85.0394 566.8617 null] >> endobj -2342 0 obj << -/D [2338 0 R /XYZ 85.0394 536.3186 null] +2350 0 obj << +/D [2346 0 R /XYZ 85.0394 536.3186 null] >> endobj 798 0 obj << -/D [2338 0 R /XYZ 85.0394 411.7882 null] +/D [2346 0 R /XYZ 85.0394 411.7882 null] >> endobj -2343 0 obj << -/D [2338 0 R /XYZ 85.0394 386.7645 null] +2351 0 obj << +/D [2346 0 R /XYZ 85.0394 386.7645 null] >> endobj 802 0 obj << -/D [2338 0 R /XYZ 85.0394 230.2565 null] +/D [2346 0 R /XYZ 85.0394 230.2565 null] >> endobj -2344 0 obj << -/D [2338 0 R /XYZ 85.0394 203.9874 null] +2352 0 obj << +/D [2346 0 R /XYZ 85.0394 203.9874 null] >> endobj -2337 0 obj << +2345 0 obj << /Font << /F37 1026 0 R /F14 964 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2347 0 obj << +2355 0 obj << /Length 2527 /Filter /FlateDecode >> @@ -11052,49 +11078,49 @@ A!zBΪª zÊaÄwIl3H’ ²R7IK#«pˆ1‚¾‡JʤM.“]²È‹¼=Ð<QÊF,\zÔya`,öºu1ƒâA ävXíÐð0Išõ› ±ÕFM-‡ÇJ
ðk¿ãètw«é¬÷˜Øšwg=§ H¨ã -e0ì>Ùr${ÑÁãÍðÍtÜŠzéÙüDñùîÏ¡9rP#nßÔ“±ÏOè(µ”GµMo£g~ÿÑèþ¾–Ž¥4úøôyyyI´î KyÅK¶˜¦C7c§±¯ë)ÆãØ£‘8hyøíÎ,|¦ïO ðOcŸõ;²2ˆm–h CnÚwš‡i3ÁEHèówUfÿ4ûðU‚ð`¡É×%Ý(í6O!•î‰%[VÏ¥!Ø£Ò``Û.X»+ÛÚÐÝUù‡ž×]DÎïa38îÈË-Õ6oé+ª&i6‰ ‰yÊÄ_ìE\áê⃣òþR5âѼ«ÃÿïÄŽ/—T•Ñ¥^A†Ð±Ä06B¡„ŒÎ#©ùéì\öÿ=k-¢endstream +e0ì>Ùr${ÑÁãÍðÍtÜŠzéÙüDñùîÏ¡9rP#nßÔ“±ÏOè(µ”GµMo£g~ÿÑèþ¾–Ž¥4úøôyyyI´î KyÅK¶˜¦C7c§±¯ë)ÆãØ£‘8hyøíÎ,|¦ïO ðOcŸõ;²2ˆm–h CnÚwš‡i3ÁEHèówUfÿ4ûðU‚ð`¡É×%Ý(í6O!•î‰%[VÏ¥!Ø£Ò``Û.X»+ÛÚÐÝUù‡ž×]DÎïa38îÈË-Õ6oé+ª&i6‰ ‰yÊÄ_ìE\áê⃣òþR5âѼ«ÃÿïÄŽ/—T•Ñ¥^A†Ð±Ä06B¡„âç‘Ôütv.û<8-›endstream endobj -2346 0 obj << +2354 0 obj << /Type /Page -/Contents 2347 0 R -/Resources 2345 0 R +/Contents 2355 0 R +/Resources 2353 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2336 0 R -/Annots [ 2350 0 R ] +/Parent 2255 0 R +/Annots [ 2358 0 R ] >> endobj -2350 0 obj << +2358 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [344.9397 501.3201 406.1397 512.7122] /Subtype /Link /A << /S /GoTo /D (trusted-keys) >> >> endobj -2348 0 obj << -/D [2346 0 R /XYZ 56.6929 794.5015 null] +2356 0 obj << +/D [2354 0 R /XYZ 56.6929 794.5015 null] >> endobj 806 0 obj << -/D [2346 0 R /XYZ 56.6929 609.3932 null] +/D [2354 0 R /XYZ 56.6929 609.3932 null] >> endobj -2349 0 obj << -/D [2346 0 R /XYZ 56.6929 583.208 null] +2357 0 obj << +/D [2354 0 R /XYZ 56.6929 583.208 null] >> endobj 810 0 obj << -/D [2346 0 R /XYZ 56.6929 484.1849 null] +/D [2354 0 R /XYZ 56.6929 484.1849 null] >> endobj -2351 0 obj << -/D [2346 0 R /XYZ 56.6929 454.463 null] +2359 0 obj << +/D [2354 0 R /XYZ 56.6929 454.463 null] >> endobj 814 0 obj << -/D [2346 0 R /XYZ 56.6929 405.4622 null] +/D [2354 0 R /XYZ 56.6929 405.4622 null] >> endobj -2352 0 obj << -/D [2346 0 R /XYZ 56.6929 378.8348 null] +2360 0 obj << +/D [2354 0 R /XYZ 56.6929 378.8348 null] >> endobj -2345 0 obj << +2353 0 obj << /Font << /F37 1026 0 R /F41 1218 0 R /F14 964 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2355 0 obj << +2363 0 obj << /Length 2458 /Filter /FlateDecode >> @@ -11103,42 +11129,42 @@ xÚÍZ[oÛ:~ϯðÛq€c–w‰yKÛì"»9Ù&vÑöA±åD¨,¹’œË¿ß!‡TD[¶Hv±(ZÓähøif8ó
k6¡ð‡MRE¨0r’ ‡P¡‹¾¶Ù}ÈœC¡‰¿…d:žÁ8gD =QüL¾=}³Â‘RU˜Œé·
é˧‰{‡ƒ/_vpJ©Ìû 7‚$B¦òîe{ÈEµÞì&!ç“wÛ+<VHM4$ì¬QWŠ¹o%š‡€2NâÏuWÔUÈ.Œ-¹vι߬ ¿¶gû¬Œ¤F¡¦C©ý ¶—RÓ=…˜[ú,U´ÿÛ*qÐx,ãˆ{„v_){Ãåa3õR#[Gõ@H IŠ·¶9Kj(ÅGqý• f=XðNïÔ_©0ÁLs¡þÂðµþÚ
úúë´õ(ŸqY`è¹tÁÄBò$‰aUûÐnÖëºéòE8g¡ª>0\²Á™Ùèuy|OŒÊÔ@3æpŒ¥öÇh/åbtoºbÔÀù‚`j}[|G€2Æ ‰Ž‘ÚŒµƒQpB5OÛ§—Ù7&+ ¡R²xß×ndÈHÀ^8aQ3DoËÜmÏyòe¶)½ÙC$ôõ{ù ¤<Hçé±PH… e_t´0Fm®ÐѶoì¼Æ#m_¡ êÆ _KAœKbh*§—Ù9ŽNÒÔ¤ñΞ5z"6pø6‰mãà.j§Zø˜È³Ð”EåÅæPÆ`‹¶£§¬Õ}¹‡;{Ͼ-uÌTFl,ŽËp
ÅÜûôôDMë³[=; ¨ò.@UKžŸŸƒš1ž.4I5³'P‘$õi‰ºˆ‰z“ùi»ýT½¿üꚬj³¹MÞte¹ô8%¿td6í/œ9îÃ|Ÿá†è¾~¥¿/ÀlÎC±I$v ,°>]7E…þcá\³àý5x7G±§¢{ÀµUQ«¬Ä/kdÐs(9àlçTÕ#^Ôy[ýæ¿À«{ˆã|ÜòuŽv7ðm„]3s£§E‡ËmW¯[zÂÏ· ¤px—í¾¾ã bzéQ×Nñˆk¡!µíïÛŒbÓeÑùbq¥‘Gåþ`…¸Þ=·,M‰N( -É)´ ½
n»v—?dEÈ€Ò‰£~v›.û™±)8±sY©F)á ¨ +É)´ ½
n»v—?dEÈ€Ò‰£~v›.û™±)8±sY©F)á ¨ endobj -2354 0 obj << +2362 0 obj << /Type /Page -/Contents 2355 0 R -/Resources 2353 0 R +/Contents 2363 0 R +/Resources 2361 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2336 0 R +/Parent 2255 0 R >> endobj -2356 0 obj << -/D [2354 0 R /XYZ 85.0394 794.5015 null] +2364 0 obj << +/D [2362 0 R /XYZ 85.0394 794.5015 null] >> endobj 818 0 obj << -/D [2354 0 R /XYZ 85.0394 650.8348 null] +/D [2362 0 R /XYZ 85.0394 650.8348 null] >> endobj -2357 0 obj << -/D [2354 0 R /XYZ 85.0394 625.7398 null] +2365 0 obj << +/D [2362 0 R /XYZ 85.0394 625.7398 null] >> endobj 822 0 obj << -/D [2354 0 R /XYZ 85.0394 378.0874 null] +/D [2362 0 R /XYZ 85.0394 378.0874 null] >> endobj -2358 0 obj << -/D [2354 0 R /XYZ 85.0394 350.2627 null] +2366 0 obj << +/D [2362 0 R /XYZ 85.0394 350.2627 null] >> endobj 826 0 obj << -/D [2354 0 R /XYZ 85.0394 153.7325 null] +/D [2362 0 R /XYZ 85.0394 153.7325 null] >> endobj -2359 0 obj << -/D [2354 0 R /XYZ 85.0394 128.6375 null] +2367 0 obj << +/D [2362 0 R /XYZ 85.0394 128.6375 null] >> endobj -2353 0 obj << +2361 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2362 0 obj << -/Length 2394 +2370 0 obj << +/Length 2393 /Filter /FlateDecode >> stream @@ -11148,30 +11174,30 @@ xÚÅY_sÛ8ϧðtîAž]sùWsOé5·“Ý6—xgî¦ÛÅV]m˵”¦î§?€ eÊ–Îv(Aø€ÅˆÃ12)K´ =GƒjÁ‘žÓ`§y½„´ÏŸV‡;äf‘9}¢Øƒ"Ÿ26ǨrÅR®ÒÓŒ¹Ž°ãBåW`’CØ+¹W€‰o(À΀3+2qz×À.úg`XŽÖÛÆ-Þ(AÐn×{‡»r½.7…OQ0£¸¬¨Äå#˜ÅUŒÄMøvs˧!V£îhL(£˜0ùÙdÌuâH—;Ò¥o?ÕàPÀʜԤãP¥Ÿj(ØSÓ×¥;%C“¨‘'Õô¼ó3¤÷KÈ.<Óv]ÍŠ½”_ j[áëÉϾh’Y²¨¡ò«?ú—ê£çE›Ì€ÈWL+¸½zØ;þF6¼¹ÙùÒÍ›¬¦øç…°cGÈ\™Jõ7ÝÁZÀ-l¾…¡pqÇeÑwdùaøbïBïš¹Òõì²^ u»¿Ám¤2ðAiS&”²Î"o£FŒIáÎuU3J xõ«À¶m*“Ë}Ë€LžÉlW ìÖ:_} @S,ìS4v{ÝÙÀ~ºZÊÑ›v4Š6ObÉnSi쥬Ÿq@ß÷q-6ž»¼³Á¶š•c¸½±½&²¤ô¸€,ØÁg½¡ºdâéKüÒÁ ÔGÏ^¬×›zí¿éú¨
™"ù<–&qp‰¬¡që?ÖÉW4`Vö·!ŒîÇÊé@5Nßfy -—„oÍ98ŒÍ již–î•.¡UÔèj”ëй^ÖQ›ENj¾×¡ËÚB-3s½h˜£üG®ù…ßQ‹GC.ý9òÃtRr.Îçwùù9”ªúG
½ÿ«dZgNÂ_ +—„oÍ98ŒÍ již–î•.¡UÔèj”ëй^ÖQ›ENj¾×¡ËÚB-3s½h˜£üG®ù…ßQ‹GC.ý9òÃtRr.Îçwùù9”ªúG
½ÿ«dZgNÂ_ endobj -2361 0 obj << +2369 0 obj << /Type /Page -/Contents 2362 0 R -/Resources 2360 0 R +/Contents 2370 0 R +/Resources 2368 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2336 0 R +/Parent 2373 0 R >> endobj -2363 0 obj << -/D [2361 0 R /XYZ 56.6929 794.5015 null] +2371 0 obj << +/D [2369 0 R /XYZ 56.6929 794.5015 null] >> endobj 830 0 obj << -/D [2361 0 R /XYZ 56.6929 740.3318 null] +/D [2369 0 R /XYZ 56.6929 740.3318 null] >> endobj -2364 0 obj << -/D [2361 0 R /XYZ 56.6929 714.7319 null] +2372 0 obj << +/D [2369 0 R /XYZ 56.6929 714.7319 null] >> endobj -2360 0 obj << +2368 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F14 964 0 R /F62 1361 0 R /F41 1218 0 R >> /XObject << /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2367 0 obj << +2376 0 obj << /Length 1890 /Filter /FlateDecode >> @@ -11181,310 +11207,295 @@ xÚÉnÛ8ôî¯ðQj–›¶™SÚ¦ƒE›IR`i²DÇBµ¸’'óõóÈGÊ’$t’ƒžÉÇ·o$›SøgóÈ'TÄrÆ’ø”ùó´œÑ Ÿ8k…“,C#µÓ-¯¶»îXnÁ Êþ?¹{Š¯È-xL"Åc¹¿SÊug|ù*IƾóedP¾nµ›Û“*M õ¡Ø:Xh<Ý},Îr€„’±‰’ê4Óev̪²”òe~ç”ßÐqL$÷ÇüšEäíª£¢ç*ðwÎe¦V»{
àRYgŠ` îónãä®H›!|ÿûÜu‡lWnRP¿žŽZFÞá×Ö(} %Ϲz¡œ±—ý0ÄzÞ=–ñÄÉ'‰âà–i‚åȉÂðˆ%TMÔ9iÉÀ:«ºÍ»§qªÁE¶SUuS&Ö¬Em{h é…¨µžºéýcŠ¡œOÚJs®Â•»¢ËM-6žÍÔ³¦÷9aBðWL?ÀzÁô˘þ¥ È8%aàÙÿR%é)¾"+ã‚„þ‘¬º `4‰i_õÞÛ‡XxŸª|.ò9ºõ
€2°ÅÖZUe¦„¦óÁ–Å°ós§šÜ¤,›á&èZ…û‡«.¬c±Ö¤ëÒîŽæBËMdghR½‹é7M»*s“T?öj‡þ~4¥IQàÄ{̲þɺç0%ýÜκÛv´f'Ìì$28z¯ñ=PW…O ȆýCGhŸ9>»¯™£ÕZ5ªJQá—_'δ·1ýµY# 5y -jm¥ -·Çª¿k7„ÂAk™T»¤°ZÈ[xC[úê1UÛ 8tIMw%DEÚ¨%\±nÝŸšH˜p°™µ}k²Iò +jm¥ -·Çª¿k7„ÂAk™T»¤°ZÈ[xC[úê1UÛ 8tIMw%DEÚ¨%\±nÝŸšH˜p°™µ}k²Iò endobj -2366 0 obj << +2375 0 obj << /Type /Page -/Contents 2367 0 R -/Resources 2365 0 R +/Contents 2376 0 R +/Resources 2374 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2336 0 R +/Parent 2373 0 R >> endobj -2368 0 obj << -/D [2366 0 R /XYZ 85.0394 794.5015 null] +2377 0 obj << +/D [2375 0 R /XYZ 85.0394 794.5015 null] >> endobj 834 0 obj << -/D [2366 0 R /XYZ 85.0394 741.6375 null] +/D [2375 0 R /XYZ 85.0394 741.6375 null] >> endobj -2369 0 obj << -/D [2366 0 R /XYZ 85.0394 716.9352 null] +2378 0 obj << +/D [2375 0 R /XYZ 85.0394 716.9352 null] >> endobj 838 0 obj << -/D [2366 0 R /XYZ 85.0394 420.5643 null] +/D [2375 0 R /XYZ 85.0394 420.5643 null] >> endobj -2370 0 obj << -/D [2366 0 R /XYZ 85.0394 393.2598 null] +2379 0 obj << +/D [2375 0 R /XYZ 85.0394 393.2598 null] >> endobj -2365 0 obj << +2374 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2373 0 obj << +2382 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2372 0 obj << +2381 0 obj << /Type /Page -/Contents 2373 0 R -/Resources 2371 0 R +/Contents 2382 0 R +/Resources 2380 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2375 0 R +/Parent 2373 0 R >> endobj -2374 0 obj << -/D [2372 0 R /XYZ 56.6929 794.5015 null] +2383 0 obj << +/D [2381 0 R /XYZ 56.6929 794.5015 null] >> endobj -2371 0 obj << +2380 0 obj << /ProcSet [ /PDF ] >> endobj -2378 0 obj << -/Length 1945 +2386 0 obj << +/Length 2016 /Filter /FlateDecode >> stream -xÚµX[Ûº~ϯ0Ð>x#†wI穹µÙdS4[ô!ÙMÛBdI±äÝEÿ{g8¤lyåcÅ+r8ü83œ-fþÄ,3Œ«\ÏÒ\3Ã…™-¶¯øl
k{%6ŠL&V£2f2™Î’S·÷¯^ÿUŠ™äÌZif÷«á,›¦Œç³ûå×ù›¶uõ²üy“HÃçooî£]š¥Y*p‡Rf•±~ǧ¢Þñ·ÅÚuá™ÒV†=Ö0ËMæ÷¼eâ&œóù²\#?2¨”)kIŒ»b뎜å,·Ò%˜Ê@fäÂÍþÜoR¦4z÷…UÓ|ß·4Þ÷eUö‡£`‚åÆDÁ´`2¤Ì—CÝ´]éuxõá~°©åL(°¨– “«)»S}áR2Î@{Ç!ühq¢a¼’kÐÓ‚µ¾þ¥s»'·{Óä‘t2êBð”™Ü87ËåÎuáVFgâ™V"ð
˜‹ LeXfM„\TÅ$ ÌY–¥ù9àê*બ\=\ùXÈ”e’§ç˜ßÿ˜ÛaÔN ' -½ÞdÙ,üv·Í®ÿÓ%[dçGü¸*ö‘¥b¹à꯿Š×ÚÿïçU<t§)<ͤ}qó‡«p_7Ûbñëjýëww˜@Î9Ó9·çÐzÙŸAȹâr|?_:ò¢1âØ;qœüػݡi{ÆØÃ¥ØW©d:$öO!.ÇþÀ5ŽýdsY4#™ÍUúGD;øÑ"×X´uÕ<U2²b"ä`ÙhÖ+Ù÷ý‡/ïþqû÷ûÛÏw÷(ùKŒ@qLþ/+„€"¢xtÄoÜðe³-Ê -æó²^5»mÑ—
T>_ïnD6oZ·V˜:Z+húså~–•#rß4 -È/Û².oļëwEßxá¼ïÜ„K€°ùPq.¸tCÊÆlß7Ø“’{¸×nÓ4(ºåG1ZZ†ÕmGKnQ ~¹YÑ·ìÃjôj4@®ù/°Šó=„ûÛ£‹VœIh•¢ID¬²;ó-nöß}ßî{ôÁçŸánv/ÛôÐ.zé»)ž\Ø‚]öõc¢¨†óà6ë ƒ+Ì&Ƥ¿opÍrbíc1;k–å¹s–¦)Eü›ªß4ûõfâ(m ãTêÚÕJÈ”W)9¯1Æ«ê€3oî%ÑŸË~C´E³Ý‚õ“ª¬QH¬÷[W÷^‘p¹Ä]T]C\›¢$š?ý"@n›e€ò÷Œ_kJ5Þ -åzìöC -¡ˆ)–”<ôÉ…B~ E¤®9â¢8;f*Y9Ÿ[ìü
Ñ!öV4ìö ôî@“&½ãc“xÔS“’÷&ÜÞ¢bÝ0'"ºÝaZD~«çÏWÓÓÉË"ŸæL«ÃE&›i¯2™} -ÅP¡Ւ(þx øÂN¤‚(]ë%:á‚æ±ì©P0nR
Yñ¥%ϼCä5Jx՞粪‚`QW`(Ê€^R¯> -FU—¨UÙ‘[¢–õ„/ -c˜"v¨¯]¿x
/¨¦zŠ©,ƒ‡“jì^MÈ=n´B$ŽÌÿ/Š™AÃozrm@ £óÀ’O#°ã—_ØäƒcÒú:ƒÄl²«Ö2[PCçB‡A|ßöÀ7zWQ@x©k†ÿˆŽ=]LÈw›{Šh(Ï`žÙ±¥|ßd³ø)¼Áº.4h@õ -Ôζ–ú‘*ÁŽ––nU@€u´ŽÂMô©…2&ô5»XžG»<•Å”? -iô¦?ÿûãçOþóšÞn1˜)f3+NAÍï7QUÊñ§êgCí r õ(G§ÀM¡É\3-äY=òaoø‰ëà¤m!.cÖAs/ç˜S¤à¬“içÞ7˜P²nïèK]-Þ}¤/ýÞà[fÌ)Qˆéªhij;Œú«p}ÓXåž\E4z%d˜^§ÙüCIMÒ©sgLü¬ -§g=42¾ûùÁC#j*u[øa;xs»icŸì½‡ÁKØù;üø<fø³ìäC;°$GúEöÔfГ/UJ7üÀûò¼ÿTÆžvendstream +xÚµXK㸾ϯ0=¸‡oI{ʼ’é¦'Øé ‡™>¨mÚF–´¢Ü=Fÿž"‹”%·¼F°h“ÅâÇb½)¶ ðÇ™"Tär‘æ’(ÊÔbµE[Xûû+x¤DI!`2³š(‘•ñt‘ŒAÞÞ¿zý7Îœ¹ZÜo†³tšš/î×_—oÚÖÔëòÇMÂ]¾½y¸ÿwI’f)s»(œ-”ö;>õ¡¨¿-¶Æ{˜$BjöhE4U™ßó–°›„QJ—ërëøƒH‰ÐŸ+ö&àðENrÍu€Œˆdv\n³?÷ç)ŽÞß}ÁAÕ4ß-Ž}Y•ýñ$#¹RQ0ÉÏ^æ˱nZ[ú;¼úp?èTSÂhT2M˜ÊÅœÞÈÉ•¼`”Œ¸=sÇ ¼M$Ý0šdàî©A[_ÿjM÷dº‡0MñNJŒ M‰Êµ‚sÝæb½îŒ
V™œÏ¤`oÀ\Í` +E2"äª*fyN²,ÍÏ7W7eeêÁäS!S’qšžc~ÿ?`î‡Q;ƒžçõ*ËÉà?°»mºþ/—t‘ñûU±/ˆÌÉçxýU¼þØþx?®â9wšÃ“„ë–?^…ûºÛ«_ÜùnŽ3È9%2§úZ#ýà3H" +qÍ´2eàq+_Ö.Æ«êèf^Ýk¤?—ýi«f¿í'UY\ÃØö¦î3â`\ä.*Û ×®°„óÇ¢_È}³PÞÎîÂSW€–B©œºýB0bŠ5&92(ä\„@²}ȧu³S¦â•ñ¹E/ß íboƒC{€KwGœ4èØ1U‰G«$¼7¹í»˜æLD·K‹Ž_ËåóÎÔ8réäe‘Os˜–ÁÉnÞ«T¦c€ ¤OØð»-ŸLí®¯ÄòŸuU~7H7EW•>P`âÒ¯ýg7M1»q–ooïÞ#GP÷-?ܽ8Ôlfc^clè£/Ö%•ªèÍàÍ3j-‘îi•39
þý¡ê˶2ãè¶ÓH~‹¥µ¢|ä>ˆK0n +©¦õ5#úO´õÈû†µªYÅçÿŠ{ÐÇ’™âSû¦žáÍy:òL †Ü£óÜ$Ÿ)aÇ)õ|a“ÿY“Ô•_u0Ƴ©: +c§ý Eú’ ðéãö.&Xž ÐêB£‘ž=㻑Ü1ôZ¡mÀ†ÒÕ˜vðf»iãSÀ{‰/!çŸN_ endobj -2377 0 obj << +2385 0 obj << /Type /Page -/Contents 2378 0 R -/Resources 2376 0 R +/Contents 2386 0 R +/Resources 2384 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2375 0 R +/Parent 2373 0 R >> endobj -2379 0 obj << -/D [2377 0 R /XYZ 85.0394 794.5015 null] +2387 0 obj << +/D [2385 0 R /XYZ 85.0394 794.5015 null] >> endobj 842 0 obj << -/D [2377 0 R /XYZ 85.0394 769.5949 null] +/D [2385 0 R /XYZ 85.0394 769.5949 null] >> endobj -2380 0 obj << -/D [2377 0 R /XYZ 85.0394 573.0107 null] +2388 0 obj << +/D [2385 0 R /XYZ 85.0394 573.0107 null] >> endobj 846 0 obj << -/D [2377 0 R /XYZ 85.0394 573.0107 null] +/D [2385 0 R /XYZ 85.0394 573.0107 null] >> endobj -2381 0 obj << -/D [2377 0 R /XYZ 85.0394 538.4209 null] +2389 0 obj << +/D [2385 0 R /XYZ 85.0394 538.4209 null] >> endobj -2382 0 obj << -/D [2377 0 R /XYZ 85.0394 504.6118 null] +2390 0 obj << +/D [2385 0 R /XYZ 85.0394 504.6118 null] >> endobj -2383 0 obj << -/D [2377 0 R /XYZ 85.0394 432.7569 null] +2391 0 obj << +/D [2385 0 R /XYZ 85.0394 432.7569 null] >> endobj -2384 0 obj << -/D [2377 0 R /XYZ 85.0394 303.3232 null] +2392 0 obj << +/D [2385 0 R /XYZ 85.0394 303.3232 null] >> endobj -2376 0 obj << +2384 0 obj << /Font << /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2387 0 obj << -/Length 3825 +2395 0 obj << +/Length 3818 /Filter /FlateDecode >> stream -xÚÍZÝoã6Ï_ õk•)‘ê}à²ÝMÑM÷6)®EÛÙVbamÉkÉ›¦ýÍp†´$KÉ÷rÑCŠçã7CÉsò<I£4‹³s“é(29_nÏÄùô½9“<fîÍ»£^Üœ}ó2çY”¥qz~sÛ™ËFÂZy~³úuö"’Ñ3˜AÌ^]¾y6ÓDij‹÷ï__½ºü~'†À -…œ|:ûõwq¾¾¿?‘Êlr~?D$³,>ßžéDE‰VÊS6g×gÿvzÝ«£"ŠUH –çRFY’Ä=$Y”ªX9\_¾{ÿÃkÚ×O×°)ܼwd'Ρ;2Ʀî•Ý>ìÊe¾¡eõ¹^æmYWô»¾åydgI$,,Ü<«ònd1i"tÂc6uý±¡)7åÇâ[zAwgK©#€ìæÒÂþcfŸ§prÿjŠýçbO?ª|[PØ/F–Ÿ'QfLêç¢ß¯á}ig´~ïÄed¤LÏÓ4…S'DƒæÝQQÑ0 -—fæËfq”$V?¾¬tºloÇ™‰•™þ²% -Ý‚”Ö ®Ød,8$Õ{z^¾§ž|µ"á4üœýÔ»þ(ÚÖDût(öϤ”305•e³›µ_}™W4vÁï»ßníÏzbõ’‡¬ê¶-Vs”&œª¨!ÞPCŠe¹u -lÕ¬ª[¯¾ð‹ö¨x=…ë¥L鯧x=5[Ö›ºš¯ŠM¹-aáþ¬°3-²ÙÖ&Ù@£9ìv›Æ;ULTç`”1‘ÍŒdS8jÂà -÷íãö¨¤[ô(êá¢ã²î.ZV+À:3LpR‚–ãƵœÐáIáÌ5KN‚þt(©±"êoql°PòêÿžSÇ?ßýÌëË7ÜûŽÆÜ[F'…wÐ&N#+…öNÅÅ6˜sÁÈ+fûs¾)WÝÍ8ÃVð: ƒ´oظԗ8`
¨[fêIµ=ç;«|Èu®6²ÚÊ¿€0ïË
cØ]±‡(´íDÔöÃŽUÍŽ(g{1fGQઽç1 Td =e@Q|sùãÕõcˆ; îóÔ÷Ëp?LEû˜/ƶŠ AæãH½ó -vr€Ä~T½=QÑgâÓÙô¹˜)>@Š€P픿W2J”õ[›ïÆwŸešoVÖ°Ùb5 ˜(Ñ
£_€,Žm' -Öop}èzîÇì“»ZH5ˆ“GYa4zÅ©Z»Üƒä‚ý$WØêÔôq6Y8ǹ¨ÂÄÉP…¥ò¥·åxT0dB,™Œª"•Þ:œ
´u…UlÁaQƒÊ¶Øb\§$ø´}^5¸,’ºòïèMŒ±*ø¨ôÿw‹)û8H*³}=©’ènü¯ 'e¤çuÞNaÓӜϟó郪8âëPÊ0b<‡DÔyªÆ -+µÌ;ÁPÞóýó˜ KÈU³là*^Þº0ƒHM¶q15Ž»hÖe¢Øõ@].E½¥Â=Òs"“(‘àÐ1P.~þîCD$ºA¢_¨¬–´–~\bŽi×ÝgÏ¥‚0e}îõf,Öàž© -\ƒj3DÖÒ߇(ŸðÍ\w Nó5GÉë/¦«Ò÷y3q©‰º?Š1‰òe®()} -bÎDü…îR -ïóæŸÆíWéd
!ËôîVû룻UÇ»•)w˜‘GŽ Ü©»Æƒ(˜ùð5óö°¡Ÿ«šŸ€YÀFe³>ò7Æ‚…Œ: -”®DXð9I;܉ -ô½¿ù@„0È•œåñú¹X¶åçbã?^¡€™ À°õW¶ÖƒMw›gÂW%fèÂphðRØ.]¡Ã‰h¾,¤ª\,6<ÏËe³8´Z9ÿký¾ÅEÓèâ}ÂÆLÁ©—îÀS7ØQóëEÚP8d½¡é“löá»—)Rú±-Ú5˜³Àe’ù¸Ÿ9.¯nèNmÆÇácÕyW µãrâÖK…zº÷¿ -"BV˜ñI§ë†¾xÀfHÏqàÛw/çï^%cÁ8`–Y(bOud)ú O¨&y¢álD
×Tˆc÷Âà)†Ì‰HÉ´õ0QÉÓÁù âþ“I‘r5Æ|Äï4K‹0ANEÞóTS_Q-ëÁ'ïÑþ´ôŸõnx’»¢ÂK2œvE”'0« -‚ÕrœÀ4d‹VM}°¢Æ¾ÌáK‰ÿù{éã×àÚDÊÚ‰o|b‰amfÊ¡¥O¿eâ/«Oyÿ/eRÈpendstream +xÚÍZYoãF~÷¯0‡h€ÓÙdöÀz’ÉÄAâÌŽl‚$´DÛÄH¤"RãL~ýVuU7µìû²0`5«ïê:¾ªny.àOž§Y’ª8·…IR!ÓóÕöLœßCÝ›3Ém–¾ÑrÜêÕÍÙg_i{^$E¦²ó›»ÑXy"ò\žß¬^¼JdòF‹//ß¼Xª,jqñöíë«//„ïT@h Ä⻋«.¾%ÚÛ4{óúúů7ßœ½¾ ‹/X ++ùíìç_ÅùÖýÍ™Ht‘§çð!Yê|{fR¤FkOÙœ]Ÿý;8ªu]£"Q:S(y.eR¤©š° -’L+íXp}ùÝÛo_Ó¾~¸†Máž §ñNœCu¢Uf]—jÝÜÕ«rCuó¡]•}Ý6ôÝÞñ8r4°$&nœu}™LÚÄh“r›MÛ¾ïhÈMý¾úœ:˜ñ¨K)MbRàÝRæÀÄ4¾ÌààþÕUûÕž>šr[Q V_Ef_¦Iam6êñºË|A³OÎ[&VÊì<Ëlb³Ôœ8j´·rÇcòˆ€†V85¯}6m¡’4ÍÍÓÓúFÇÓN6\Ø$Õ…N[#Ës`ÒpKÙ‚ù†¤vO¿—o©¦\¯‰9÷“?ÕןRû–h¿ªýÇRÊ(š.ŠÅ̓Ÿ}U6Ôö–û»o7÷sböš›¬Û¾¯ÖKäœ%ª(^P@ªU½EñÕÈEÛ³ðê¼p{DjÉß0_Æ”ñ|H¨¹ÉªÝ´Ír]mêm
OG…YU,þóPqkÇlÑv»M
í$¦zt0ÐZ©XI˜Klh8Ù^éÖyØVMÏ*ÊzTÒÏCÛõx4/cŠ +&%•&ûŠÊli7*ž§(yf– +p'\Mßm¸û©ñv6ȑᙦ¿»©Y]×ÝnS~DÆž@ )â.côÓ(aÜê4JenѳIs‘d€ã““úFÇ“NN*O@ÙtÒº;É:§¨ã*ï®°šPWäÖsN‡ñ[ï:ü1·ï+n}Øf¶{^€j?ÍìQ«'˜í[9ÈÀ1Êì§&˜=Ÿ4Îìñ¤5¨7Àk§……Dê¸%·WrL‡_¯"P¬¹91ú·CM…5QQÊb B™«Ÿ{IüûÝ\¸¾|Ã%ð?IÌÃY˜Á;ÏØZeI.ƒ&tW°U‚ß²áe(7õz¼¶˜YRˆ4›ZLœŠ5ý’¥.ŠD}²ÐÏ.Ð_{@yг|]æ&—8
önWíÁÆo'(
¥ý°c“Õ²9*9ȺˆéQV5 +ý– +0p& +àž0œçnêïßÞ\~uýTÄ—¹†7Q+ˆ;¥õ®ò6î*Sœuì*qј×Þ±Óz+¤‰}°b +ò@öeÔ3¸…ÍED>ÁÓäYê—Šâ`Çë5ŽOûãCÁR!" ·‡®§inyæ’*¼È¯Ö.üŽÛ¦"IV9BM!§~7¥uʱΜû´#bSõíþ=UÔM’R®*®tá +ÐA¡HÜÇ•©«üüsüï2vqÑpw(.‚16 }[~¤Â-¯§ÛAÄôÄï.¼ÁŠTQîvÁÜž˜ngü„8-'Š‚% „£&÷
ܲŽ
BíaÆ?ŸÅqÅ1‰°“‚p‚?^Ý• +ù\Ôš‡Q«=¸t¶æáoËØJ3µk®$Eó~¼$¤„03ÖõD #"ƒÛz$w}G„TøË¡ìŠÂ@ PL‘68*™gú(D04›*&u +¤Îç]½©<>[›äJØ‘±Í×Ã0¼“5ˆuû²~QJG„’~šÃ¬nÑ}:¿ +Áf¥hq¹ŽK<o¹ýŽ½,ÖéT
‚p¤H©Êƒiõ>‘©õöàÐQ`9^óªÝnËf½D.úm±Oâ,”LdNefƒ½ÛÆí1i~#†«l8¶Õ¶õá!ı÷1¬«ÛÃý=ì¯
ÂN©ƒù—CI8ÉÒ +=UñdRðÿc‹›8tGº˜%oÇÙ³aã᜵•~©Ëþ.=÷¬ðážõÙK;äòlÈbXß +J‚8
Z;s¥4«ó¡°ªj–h¿ZûK€àãS¾7Äa>eyýýÅé„ôcÙE¯ÒýQÄ8Ê <CIè3`s!ÔŸ³¶Nx“·ü-®¾Ú¤s\ˆW>lmß°¬ò攵@pÈÃÆÁÛ±µÖ#(ùðóî°¡ÏuË¿ +Ùԉ½‹hú˜k…žxý¯8¦ºY¢`%å~WFmoš¤ÆÚwÝ4ly¥·¼bÈ!C‘CŸVü$ +êÞÞ¼#Bhä’Ír¸}®V}ý¡ÚøwSä.Èf˜óÎœçjºk<ë•'·GWüÐtô†Á·PáX4ŸRSßÒk ãyуħkzµ‘ûÇ 8i–\¼£·“¼(8õ_G@S7XÑrw‡!ó4™+d»¡áÓbñî«/ÀQdô±úJ-a•iá½~á–pyuC4;•=Ícyy—© iãúÄu—™toÖØÅ+÷R§ê÷aa›ò¶ÚtTF4 ›N¾B +û”¦öî Ä”ã7W`l™ +†x»ë9u4ÃqÀ’ëûfr˜çTòbüð'ÇÌMOäÛ±§QNiij¦!—áN‡¶@Oæj–¨á
ËìpØØÁh¹bk‹‚Õ—='P¸=2ûæúò
rú%o2ˆ +ÔȢ뾫6wD$Veƒ®r‚—¨œå
›;ñèYcÀ}g"ÂUôÿü zxîml¢ó\ÅQ(ð»€2/ÊYw?á§ÓÇkÿ/¿ÐÅUendstream endobj -2386 0 obj << +2394 0 obj << /Type /Page -/Contents 2387 0 R -/Resources 2385 0 R +/Contents 2395 0 R +/Resources 2393 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2375 0 R +/Parent 2373 0 R >> endobj -2388 0 obj << -/D [2386 0 R /XYZ 56.6929 794.5015 null] +2396 0 obj << +/D [2394 0 R /XYZ 56.6929 794.5015 null] >> endobj -2389 0 obj << -/D [2386 0 R /XYZ 56.6929 752.1413 null] +2397 0 obj << +/D [2394 0 R /XYZ 56.6929 752.2855 null] >> endobj -2390 0 obj << -/D [2386 0 R /XYZ 56.6929 501.191 null] +2398 0 obj << +/D [2394 0 R /XYZ 56.6929 474.2043 null] >> endobj -2385 0 obj << +2393 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F53 1313 0 R /F11 1451 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2393 0 obj << -/Length 3111 +2401 0 obj << +/Length 3255 /Filter /FlateDecode >> stream -xÚZßoã6~Ï_‘·sÐZKŠúÅúÝl‹-ÚÝ´ñâzØæA±•Xˆ-¹–œœÿû›á)J–œÃÝa5E9ÃáÇo†d䥀ò2‹¡tt™ê(ˆ…Œ/—Ûqùm?]H–™[¡¹/õ~qñîG•^ê@'ar¹xôÆÊ‘eòr±ú6»¾½ýøùæÓWó0³÷ÁÕ<böëõç¯×¿PÝí•g×?}¼ƒÏ$!IKÄìæÓOW÷‹Ÿ/>.œ1¾ÁR(´ä¯‹o÷ârvÿ|!¥³øò>D µ/·Q¬‚8RÊÖl.î.~sz¦ë˜b•q¦#Ã1Ä:HT¨Œ>䇶¬««¹é¬Yׇ͊Êý¶ùsÁͯk[:4eõÄíë½ðîÇHzºdY&b°µÌ$Ó³G‚=RI©wöw{Ø´åüÐ{¶ïشŶ¡¼é0…ç∅d¶Ì«þ^ʦ|ØðGY¡-—sðvi•@I:ŽCc†-LÕ¬>´»C‹åhö¸¿’Ù¬ÞRË®ùS€—á?É¢{ƒ‘Í·£Y›ÍßúX—M[ï$ú§á¦ -ò46VèE•Ì>UÔúþÓç›ï’²é¸ª«‚1'ðôˆv´Ò/åŠUˆY¾ãÊݾÌÛbÄëRˆ@gZ³GqF#^×ЙbœìÈ@:PqjeØÕ§C) Š$I¬XVm
ÙKøìÇ,Ô"â.¸Æ«`YW#£;¤@,83 -/ç¡>J3 ]a›eûúñ÷«8žý“ùr»øôåóÝÈ<Áé!€PËs(MÊ”ÍèÖ¥ÀiJ@ þd³ê°}0x„ªú‘ê…G®2¬Â]^×å•œ-×<À#ùX,[ú&DBÕkÎÍ~ÆŠui;mêúù°³&£¸×6_\m€,3;¢ž‘\lÖ0÷ðäz[kU6»M~$@ÝÕ[ì¯2š˜2T×pUS´Ü¶§6Öa«`TþDå‡Ò`C¥4#e-S« m]ÀöW@8¸{"1kœþUÑûmYñ§õtjÀ}ì`ggfcB·¹B}óJÜ!fOÆP(À®ªÚbõ=o6"1«aŒ=#ÚWŸLP(·E}h=É™|6íöÇSY4³)”%±±écNK›v¨É\,ÂjÃPÈFÞ6ü-,Ó'lû×Ú(çå'ÌËb5Ñc·9ðàMùÄê0´Œì_ÀC%™%íïÆöm ÓÔ’'€Q¨µ…‘Ì|ÒFp‘Œ"ÙGʱRÉ0È¢$ê¯'¹É¨‰gƦˆ`+à<Elâ/V<-Gj¡µ„ -X&dÜ‘Lr2KU=Æ -È$´ìf‚
Œ]OÈ×fxÖ¶yEÔµ¯Æ -b ÆsÏë‘Äzþ3~ EÆIÙ"yCë ^›½ä›R–’ʆuŽ”°rS>TM‰,®±wÇFs"¢›Ô°Î_†ëýv<2 ÒLÛ¬à;šÇêcÛˆ;3$Yº`“^Ú'œ!ˆ JãQXðÞeŽüûI¦,CÇ1$ŠPMíYhîK™Ä6ÊF['efùªïÛån¨X*€r"ÞÐì¤NU—ÂÆÝ_q'(˜ý·.y¹PÝR
$,÷TZ|¸¥6N«¡Ê¸–2k샙˜©§L -6$¼{&ÜaB§›*@¡)È=ÈÇ*Á4¤±"5ý·9.v¿,Þ†Ë4¯†%$£:²gHâk#ˆB¡H»»¥ÝìÀøå#ÙÖ슥˼M[•œ-çJé †”§O/¾ýÃtD‰NÜ §ªmi²«DŽŸ§ã(PÙ“ú»¢]¾ÛM½y™:UkX̺‰f|Rĉ€{è~ -ôõWFz+ù„Mô}_Éî:®· Rgœ¬½ß¡ŽåzÄL0rÅ“[1w  ^øûê üTMî)•&AÆoì)_jzO9)G“Ý,Fiò¬òŽ&O´ÓdO½ ÍHI&4CŒ£ÐŒ5š±ÄgÝ[Ql Å–U°®è|(ø|8Ú“ûHÎÂà—Mãôa‹Í£°…˜åØ^Ë2dùŒ7ºòp†Ä&²;l -ÄeG>{ö¢qϱs—Þ‘9Ï㸴ç¦Q¦¢ Ž²ä
”yRgPf¥:”ë× ¤¥Q -õ†NêÔ‚Á…—‚â¾ ··È„6ßYÖî{©ôÐÙ8wiΓK:»ŒÝÜNM»XDA¦ox¸:ã`rþ…ÕŠ1À1ÑYÕNèDwßµ‰ÒX¦=å7…½–È»“JKUXÃ.mú®=VuuÜviä×&ô‡¡öÓãqüXÇ…!±:ï]_jÚ½NÊéÎóºÚ'Yò¬òŽ%O´³dO=dÍàÊ“ê<ï²rwMé0.)¹Ÿr]ú2õÆÖ÷¥Î¸ÎJy®{ÜäOÓ®;§ÜsÝPû„ë|õ×ÿ1Ü
“t7ûƒèJ@U¬bÿjÔ©p -Í©ßpª'uÆ©Vª³nuÞ©ç”{NjŸpª¯ÞdÁRÇÄ£X0<Š…¦hï©dЇ…ëúÅèæžà¨j•·9=ÿá×CɃ”Õ`ÀóP‡|èÆ&ô²Ol¦²öÅÛþ:sày]|Y¦pªÇ#mÈ—ò!¿“š{
oÊ+’Ââ«Û‘ê½{}ø¢«F#F£âÓªy³„ÒK¾)WL˜!=Ë¢$Œpp‰"Ö/—|wJ¡-ªIôä¹@òûŒÀe³]½¹‚d|yôg•u³b¯¥‘¹ -ÖïIMeµÂÇÓ¢±]Ìm¯ï#ÞåxoÖ“ÍüÉ‚qÞ|³Î³o=†hI9üRX‡‚÷à¬)ö@å—Û¾®Í¿|]PÅ>¯žð
9Rf¶‚ãÙÒOV»ç¨Ûå{Öc¼¨%{ -¾U¯ycGôsd*ö6Åe%ÎK“ƒ÷¦€}žb|©iŠqRŽb–ç)æ¬òŽbN´SLO½¡Ø˜œªevM3Ƀ%ò6>ÜÐ/RÌr],Ÿik@ͪlðD¸â?2€Ã2X0aÒ¥Ç2 ŸX›ú,fa×Ë=äãPõVæšôqóùîîã‡Þr»býØK,ébh -p2£·RKOhV¨ÃÁfòÞöœÖîÚv¨vüÖÖ×{C¸Sù:¿ñÞ2¿\ßÝÙ;ò¢ò^F]Þîdû\5éVˆõ*|ãY¥“™v*Ët7½-,ö‰[!wÉ$ +xÚ¥ZßsÛ¸~÷_¡·Êsü¶sNœK}s—øÎδœh¶8–HHÙÕß], +-|©÷ïé,²$Lf÷OÞ\2`RòÙ}ñ}~u{ûéËõÍ?/aÌæ‚ËEÌØü׫/ß®~¡¾ÛË,œ_}þtIÌBâ(–°ùõÍçˇûŸ/>Ý;c|ƒ9hÉŸßج +v—À8ï(ª4N¡ZµÛ”•y´þ€— ÜX;;¥
+ÃÓ•WÍ‘±–p¬ªVïÌi#`óæØHûêcf¹åFÕûvð&9¢ÕË‚Gˆ¤p@žKÕÎ&ÈδMŸrÚÚ´CtÁ»5u@ H‰[Œ<éœáÜ¿ÕZ¹Ù~¬Zªbâízo&oÊg£cËÈ<2‘–µ;¸A–¦–(îÃAÍ,Œ¸ô-lHÁ…ñ>ŠÐP,%ƒäܤÕĘìhl²Ž®“Å: +6$¼{&ÜaB'›*@£Qääc‘`ÒX‘š~‡Û7»ÿlÞÚ´i]c—~’Ñ,²E¤¿ðµD¡Ð]ÀáåbÆèjæ/ŸÈ¶f«–.óÖƪ|¤¸\¼è‚”gP\y¶ö«i Œ›%îÊĤªm©³«„Ôq(l©þ^µË÷;ÕÔëש²:ƒ]Á<¡[¨4•".ÜCT ¯¿3ÜÛC‘KÑDï0Ú÷ïîã÷œ2€ZÀÚûêX®F̳ Wô®ÅÂÞíœâÊ?WÏà§jòLa¨ÀHqòHyBÓ'Ê +9Žì–0Ê‘§4w9T=ξn”‘ŒtP†èFA{((cËTYo/q€öG +…€®¨247¸ãošw¸É¿à×`™æé‡GÑÚ±ýÌ`Àjª»Ñ=Ÿ endobj -2392 0 obj << +2400 0 obj << /Type /Page -/Contents 2393 0 R -/Resources 2391 0 R +/Contents 2401 0 R +/Resources 2399 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2375 0 R +/Parent 2373 0 R >> endobj -2394 0 obj << -/D [2392 0 R /XYZ 85.0394 794.5015 null] +2402 0 obj << +/D [2400 0 R /XYZ 85.0394 794.5015 null] >> endobj -2395 0 obj << -/D [2392 0 R /XYZ 85.0394 679.319 null] +2403 0 obj << +/D [2400 0 R /XYZ 85.0394 654.1216 null] >> endobj -2391 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F48 1238 0 R /F53 1313 0 R >> +2399 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R /F21 938 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2398 0 obj << -/Length 2837 +2406 0 obj << +/Length 2748 /Filter /FlateDecode >> stream -xÚ¥Z[oܺ~÷¯ØGITÞ%èC‚¤9hOÝ-øA^Ѷ´Yic8¿¾Ã«HÝö´Å>ˆ"GœáÌ7’‹w~xÇE* -R첂¥a¾Û®ÐîÆ~¹Â–æ#zR½»½úÓ_i¶+ÒB±»}æÊS”çxw[}IÞ¥8½†Pòþã/×oˆàˆ$oon>üöþã¿á# „’¿¿ýíóÛ¿™¾›ëÈ~ùðéúîö׫·^˜P`Œ¨’äûÕ—;´«@î_¯PJ‹œïžá¥¸(ÈîpÅ8M9£Ôõ4WŸ®þé'Fõ§K -`<O9aTAS‚2²¬&œfQÆpJ -F½šX¾¤&G¥ÔôêKÛÝäþ|êåtɘä)#4øb‰»§š³'$`)Mâ$æ«ôÝ=>6òú
Íq2<éIz9×8©ÛGóÞ=D8ùý½y~E®qžèEÔ]kè+Ùצ» -lhïëÁ4êvÂîûYž^®1Æ €"C,¹}ªûéG¶D3Ý¿(•iäˆg œ–¨VVɇòܯ“äù©Þ?ÄŠ"9ȲíÕ‡ (Ð+2Î@«úóúÑÒDJÌÒ‚ˆÂÒ´ÝéP6Í‹™·—m¥$Dúø!ͨZ`-{X€*ù=PЫ•)¢ò<t‡r¨÷fV5TÕ}yßÈʬ`– -Dh¼Ôç'Ù÷QúÔRsHÍÀò™àVêWmßËò꘯0Jòܯ;-LŒsáÕôj8•{¹0ÍSʱdƼZÄî8Àº{óRM™—s/«tæ÷Ö¹Dž¥¨@ù¶†Të詼†*‰\2p|›ì=ÕœÿÄ‹p›ÇüK[⬧!-£$Óv} -arFáàJ6ò±´Ð‚c9<™‘m›î} Œåºn0ÝzE½ÂA¨=Ÿ‘Ð Hãœ/çˆÇVt°RÈ=UA‚©Z€Æ-Ä»`>cÝ{ÿb{M¦ÑïÎy ‹` -Ùê–<™¢,rÙ“}:”ߤuÀz'惡Ë7vé„CÀq¼víù„Z÷è»FK˜Õ#ŒX=BËz¢õ*ƒn£2Š’ƒ|®¡hhóòÐ5M÷2y§SÙôvx´9x¦ÍÈZZ¥q©ÿ©{ö‚¸HãÓTžÝŸïŽ,O‡Vèßc$x.û1ÙÁ.!VG‘×+u(5¬ø="ÍH.¶ý>¤Z÷{Oåý~¨f^ VÇôgO5gÃ
²+Ø„÷èõJaÂ"†šOu;˜
Ý* -:¢XŽŽ²S¤JýíÒŽgØѨԢ]‡´²Iiém¿VÖŒz*`î¥+ÒÊ㱩U©ŽŠl¡«úGep[ÂS+Ô¡ñÞ2óg
t -’]H6!Õè•8áiXM6›¼Çd3c¾œl"î7Æ› -^f¢óá^žÜ¥›õl(š˜9{™a–f9]Ü&QÎÖ¶I<åLø‡ùtgÚ(0v{$W©Ã´:ÇÃÓæx@ 8ùø`zÍ|º© cZFhûß
©Ó†Óª\€
¯Å&åtsÈÖ¨]-¯3ZÈYZÐŒÇé±×v‹ÞwgÍmïšÆ¸‚
@Æ4ªåL£cßÃtÂÅôzÝ·Zö5í¶kžz/rz!‘†Tžä¨ÆDjbo¿îI[ìOšò_ñ¤P€°†Ž´2nk%GY¢©[ÙÇ!Êm²çÿBÖí•(¿`€jÃŽjÌ1°åìWsÌ&ï1Ç̘/瘈»MÇ4÷ÉšÎÉU{ðuzÑj…FP÷(úóT«¨û¡Þ÷V§9L… ¨~ÚÉÇ'S‚BãPVòµÚŒâ‘®¯JÏ`}Oã`œøؼL¼¸·æîÚMtÜK¨^j·Íý#)3¨‡Æ¥¯"ˆŠ,eŒ\È!Õ:‚<•GÐ÷Ó”o‘§œ^`kiæ\'U1…ê¶ÀÛ›Q#_*«%“½ºîÖõå¶õÄ5{pBk¥wqõ÷z}2÷qÌ}ãtÒ,ÅPåo[b$Ú0„%í 2˜òžµÈºÅ{¬SæËq5äîÌ¡*mW™ø}Š2‡ ãN‹ªßz¹_ÌN†êÐPj]CÓ¾Â<¥¥õ…#´µ%„ÛþçSk -Vh§[/Vþër5^Ãf?¾8l•Qh_2¯@èB¦
©Öáà©<Æ2-¾ë àH‚n3÷Tsî“ÐnI`Û±¦Ó¹‡Úl{·±
ˆ´êr9
¶öã§Ý(Ï׆,(»rCª
Ã8ªÑ0ö¬w¾›`(¥Y·ù{ª¹ -gÚGXûkŸÌÛGSQ¤Í'цÑpAR$.ĺ€hÝdŽh´XÓ¬Îm±Ïæ¦|—æBÆŸ¤1®lÛ7²´M%Ï<Þ|Eˆ–ëUê -éVìÍ)OHjŽ}>«CŸ¦þ¶tꞀҜ4>¦5qféø™«ÿß8Oð˜th«:9Ýü×í¾9WÓÃE}ç þýjåwÀWý[nhçœëÿþSÞø—C–AÆÌÉ2žHÆSøX8¡”& +xÚ¥ZÝ۸߿Â^$QÅQR>$HäÐÞm/>´@²Z‹ÞN–KÎbó×wÈ!)R_¾^áQäˆ3œ™ßÌ4ÙÄð#›DD"§ù&Íy”Ä$Ùì7ñæÆ>ÞCóƽñ©Þínþòw–nò(Tlvo®,Š³Œlvå—í»ˆD·0C¼}ÿéãí*’˜nßÞÝ}øùý§ÿÀ{ ÄñöŸoþíí?°ïî6²>ßÞï~ºù°sÂø“˜)I¾Ý|¹7%ÈýÓM±<K6ÏðG$ÏéæxÃ%œ1ÛSß|¾ù—›ÐÕŸÎ)€'Y”P.@,ÊI¼ &¥„ +g“ó*ï!;O˜Ï§ç€{?r°>‚9#˜3rëNÐ(e-ãÚ@p*ú'9hÛ´Çà–kU¶WÝÆõrßõrëz@íø„èAÚ|YµQ:[)ϽœT¥G˜Z8]ˆƒ`6cÝûðbz1Ó詃sæé›B6z†9$³8€„^G²Ë@Çâwi +Š†ºÆ—C[×í³Ïä Ïç¢îÌð`s pL=›‘±´JãRÿSû챑fLÈîÏ»éÐòñ=D‚ç¢2‘lýbt ^©C©a ÷ŒBIeý:î=ªÜ[*‡ûýqZ’Ç° "ì +gG5eºdžóïõJaÂxÌ/³¡[ +]Õ?(#1%¡Ý·Xo|0Ì\ÄYp:ž©u¥W¶+>Õ²Ó9*çt +m¾s»!õ‚mˆ0]¯ÊØðßd œÙg‹jWËkQr–&aðê´ÝOïڋ涷žï›¡`šFÁÓèØwO8›^O|Ëy¬iØ.! 2V,ø•³-ŸjI–jH¤{»e$±÷4æ¿€$_ +cQÊ×j3Jº®ú!ƒ¹=ͨ<AŸê—Š;cî¶YõŽ ÕKe·¹$ezõаôebqÏ+ˆö©V<ÈR9úvóͳ(aWØš)×QUÌ zNYÈönÐÈô¤Z«ë~Y_vëQ Ù•Þ…ÕßëåÉìÇ!÷•Ó5š«C¤ø +˜}ªeS8ªÁ*‰) +hh›²Cõ]e2ã÷t›à#üþmc„Å+>'§!íg~å+l
Á2/8ì«ì ©M[µ;%€¾IŠÄœ§WÖËÌqÂûÂó4¯tÖê%Wâok÷0ÞÕ ;O]úóFÑT\Á¶G´ò×
Cdn¾+ÙM}Öaví endobj -2397 0 obj << +2405 0 obj << /Type /Page -/Contents 2398 0 R -/Resources 2396 0 R +/Contents 2406 0 R +/Resources 2404 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2375 0 R +/Parent 2408 0 R >> endobj -2399 0 obj << -/D [2397 0 R /XYZ 56.6929 794.5015 null] +2407 0 obj << +/D [2405 0 R /XYZ 56.6929 794.5015 null] >> endobj -2396 0 obj << +2404 0 obj << /Font << /F37 1026 0 R /F48 1238 0 R /F22 961 0 R /F21 938 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2402 0 obj << -/Length 3256 +2411 0 obj << +/Length 3179 /Filter /FlateDecode >> stream -xÚZ[sÛ6~÷¯Ð̾ÐÓ -!®òàÔNÖmš¤±ÓíNÛJ¢,N)RI»î¯ßsp)Rr§Ýx2ÀCœà;WˆÎbø£3-IÌS1KRAdLål¹½ˆgðîÝu4sO4ïS½¹¿xõ–'³”¤Š©Ùýº7—&±Ötv¿ú9ºúôéæÃõíO—s&ãè
¹œË8Ž¾¿úðåê½ût™²èêÝÍt•ŒQ$Sqt}ûîò×ûo/nîƒ0}iÌQ’ß/~þ5ž@îo/bÂS-gOЉ MS6Û^ɉœû‘òâîâ‡0aïùtj„ÔD2¡fs ¦\&ÓÛ“XÂ²ç‰ „+©Ã6 =µMž -·é«jU·ÍëëãåRΈV1õçqTcÖŒõXSž-èﻼ½œsžDí&·ªÛ.ò=¶UT¯íÊçÉ2÷Á&{t_´µ}f»]~I£lo»E…zõVòž,N‰Ò‚ìȾʶ¹¥ÈÊ”¢ŽæOD‰w×s¤„s&ÁºöBµ}™U´pkXÖUS¬`ÝTGùÊgÑÔe×ægŸÍ™V„1Š[NI*%33ß›}“°Gù:ëÊÖv³²sãEcŸnçå/qÌ*ú]SÀ®UžÌ}W¹M‡fÓfm¾Í+÷½ßXAû[¦a€-·àWy»|µÏaÖ¶žÚ I” ~¿†¹µˆÌ>êX! -Ø>,Y³³8-Ÿ/)¥Šœ&ÑB ¹õ\»-ù€µŽ£}ûG
/è
›vÝU«|5eºU¯û«úÉé48<ûín_€…îÉEã¡\ø9`aïmAæføÓzœÚöœA‚Ö2맙}à©ÛÖï]¾v¹ŽÖšÕSºÆ(¡B½¤k=ª3ºæ©Œ®å«ªyý¯‘¢1E -ƒnñ±jžDÐŒ(T°³(èSFA -(XgE9®h<,užu ó>Šf9D½é÷5¦ÊÒºµÝΆ™Wùî]“ïMõ@¸äžÏugéÝ6æ&×À7™}ÜÝ|¾”2úñíe"¢«Û÷Äßûé©5Lbòiá2ø ±| -
¤F,¸Âº>4^TymŠ¥H1íðЩåCÓR¡½-=šºEŸs#?ù"ßd€Vw:"&B‹s :Gp³È!]ƒ¢µ#ô$œ?Ï=Ø™KSÙ‘þWm›ow¨´Êz -¦@“‹fWfÏnÐl34 ‘lÑéX³Ç0êÒ¥Æöü1)Ú‹É*+ÑŽä+ƒç±ðÅÁh@§hœ„”k9´>”2p2a~:·Íàáäaò²ì2¬³§Ù§:}œ*œ'„nM¾<é
Î2?xƒ÷io0`ÿ9‡à³Á3¢©Œ à»»ùƶGÁµeólL1ÈŒ<û+cÇ@àxÂß¹/ -÷):šëÖÅPS -bXœç¨Æì%‰¤Éÿljnw2W5 éÁ™Á‹cgF½3³m—»ÚNf?‡Í]y˜šb±ÊZS -“à >pú -¹9%:–G˜ý{£XëÓfœ0moµÿÆüŒóþ”–‚Éç¿„1šr+¥Ïc¬Ouc*`¯uO&ÍgY’æïɤyÀû¶Z–Ýʇ•Õq‰ÔÜ{»ó…Þ^÷SHjûô4¯B…÷PŸÈ&ãP㠌ր-
Š¾zÎñÛâÿû/ï1½¿ýôþÆÎòכϷ7wÆŒ"xyÁir¸ñf^¿¹ý€‹4Jí@±Ý•ææ7sQ³0—@c§…[+£/Ößhê½VÓívÁ6–Scëþv'€‹)…îJ'nHaT¨ì õ0€ÕM[î:²ÕSla~Q8¡1pÞ¡TS~”-šõñ˜Û2D,¼|F"3>}ßSÀsì]ê|êê” -’&©ß›EÖbT‚,0¸¤®»õ¥À„oÒêâdn~·$íÆ‹q(ì Ž/3'ý"?H_æ 0j-Ž›ÀÅÌøT9JóƒËÃnU$F‡?0] +Ïš¯]ØcDmŽJm½‹G0á¡pîïò µ„ gæÊ–šÇw ‰$2öA‘å3qJ¬ýFÛ‚ÂCç~¹ +xÚZÝsÛ6÷_¡™{¡§B|‘ÀCœÚɹM7vz½iû@I”Í©Dª"×ýëoP¤HIöâÉ +Ó˜Ç%ùýâç_ãÉäþö"fÒ=y†N̸µb²¾PZ2¤#«‹û‹Ú ;oݧc +PÚ0-T2™1—:WSÌb
Ëž¦Š3™hÓªI™15*TÓWÛ¼Ù¾¼~8\.—‚™$æ“îœÎ-ÕµÖ\¦Ì(~Àû>ojнäQó”S£Ügù–ÚÕÒ¿,Öy «è¹½ä&BÁ©ûùúŽ¿ïòmqH\çÛ/aNƒ…¾z«eG:¡KReaM(Ö‘ô`˜HÃû¢¬›<[V°È—ÙnÕ|= +ûU,ü—íÖ™Z ÷'Zû Àèo¤'e¡d +¾õ4ÿ–j(@©diœØ¾wÛó%Œ×Ó¼rÏEMƒîäZNŸØ¸ÿx…tüLð™ÑT;«jÿ¥[éÔ-Õõ!;Ygž;¥RØzÚ³rJ¨K@æ$>pßÄ7[d³NsH†×˜¿aPHMAÇÛ;èXU,±¿ñK‡¡<›?Ñ`M4†æˆTu1°cáZ UÒ¶Ó.³9ì&&ÀD²†¹ýæî5™ÏÀê
0¦àÓÍ»D× @ŠsÝfA#¶ÀS¦¤ +4V6»ãÎUÁTíILw©Žcº¥j1]•le@ë‘gN3o©†ÜûËG–¦Š÷Ù{@û¶rnGàR$…ö/±Ž!éߢëƒ6'Zjl +TÌ”Qg@°':OÔB`™«a +‡g ubQÊ +ËJeßQ´1̹žŠ¹‡F1ê0œå}§R¢§]íf]r<…ÉgùSö¥ +©[ÏFƒ“Ì÷Ñ`À}<ôØÊ!ù¬q¸Õ$|÷7ßP{¼p*«¸gíŠAnä%Œø\;‡~üÎQøO1Ð\¤Ã]ŸÉþëwc²œˆ +ƒ*N¶X
¤®mã³*‡Å_K.Ôg€Ð¡:„@Õ¡.çOY=’é +–Â'¹¢!÷>’òa+ûì¿ql§òË°iB`ýâ±Ìš]kš‹gXs× +p.)—éžó_òWÜJ'É™ú|—긿j©ÚøÕTWLd2 ä±:ͽ¥²?`œ¥š§}þÿ¡3¨»ÝÉ|Õ€Û}0ƒ‡ÁŒ‡`Fmv¥NFŸÃ‚¦¾<Ì] ±Xd+…ƒ±‡p‚¼½N¦š3ë´Nù{ãXëƒæ\çé?ÇX˜qÚrc`ÕZ ½çü×0)é¹[õ=Í |M‹.¼Ð=zb>Át`>à:z^îp½íþÌ Tø÷eQw×íÓÊýùóöº{xtéu8˜æe[ÕÝ×$²ÑÜÓ…ÖÝ-OŒâóTâ¥5íÄ÷ŸßãAôáöîý
ÍòÃç›O·7÷#¡€GúM¤¬ßÜ~@•,
ëÍÊÝöf>SVîâg¨P:ülÍÛ©êÝfך8ÕTë'M +± +ò9‰ÜøøoÌÅq£Ó±ëR®˜MmÐÍ,k0Aø/y„«ÄnµA)ð„·ç)÷92w¿Õ +Ž»dÅÍø\zJ÷#âA +â ‹1È÷ÜÈ*³ÇÚÿ"‡DÊkËOÀŽýÒL"þ䘉Æ-Ôÿñ¯Ðö¿±S)“xk:jí &¥åA(\.—öPt7`nCÙÿEú7endstream endobj -2401 0 obj << +2410 0 obj << /Type /Page -/Contents 2402 0 R -/Resources 2400 0 R +/Contents 2411 0 R +/Resources 2409 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2375 0 R +/Parent 2408 0 R >> endobj -2403 0 obj << -/D [2401 0 R /XYZ 85.0394 794.5015 null] +2412 0 obj << +/D [2410 0 R /XYZ 85.0394 794.5015 null] >> endobj -2404 0 obj << -/D [2401 0 R /XYZ 85.0394 147.4749 null] +2413 0 obj << +/D [2410 0 R /XYZ 85.0394 105.2981 null] >> endobj -2400 0 obj << +2409 0 obj << /Font << /F37 1026 0 R /F48 1238 0 R /F22 961 0 R /F53 1313 0 R /F41 1218 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2407 0 obj << -/Length 2054 +2416 0 obj << +/Length 2274 /Filter /FlateDecode >> stream -xÚ¥XKsÛ8¾ûWè°UK×D0^|ÍMŽíŒ§2Ž7rjwËñ&!‹ŠTDÊŠvkþût£Z²¨r¶¶x Ðh6ýøºA1âðˆQ±(•é(N5¹Gùâ„ž`íÉp<cÏ4Þå:¿;9»Rñ(ei$£ÑÝlGVÂx’ˆÑ]qœ3ÉNA~û4½;Ë0’<˜ÜÞ^Þ\\ÿçx€ƒóàÉÍ—ÉG¢Ýž¦2˜|¸œž>Üý~ry×k³«±à -Uù~rÿÀG(þû g*MÂÑ&œ‰4•£Å‰µRžRLOþÑÜYµŸZ@p&U$L å ”EJ*k‚ œHEÁSÕ<fŽã 5›½¿¯ÍjëHË®lêöÎÒ`3/ó¹ûhÞ¬«‚˜
½³å²*MA]ãˆUõ"µ4^TžÕ~½mè/¦]“p„âap77!§58,1‚¥a(í±œÊŠ¯2Nd°X·‘—«S‘&7…¡¥nnhå+çrEl@]/+GGs ©Î´VBy•µwÛ%‘Ã+áÈSÙ“ŸeuAbŽ©ÇÉÛRë A[éTFBÞ,V0R«²6ÖVI0©·ÄÐûÖ½;Qßé_yÈÍÜ,;ZDé ÇÙ•;Q$“”q!CPµúå¾nòEAœûñaFÊ1ÒV°‡p*gîîͳYÊ¢0µ=ýX©”É(I¼(e·”‚½ìYÆíÒä%º-'*E0l{6G¢#£®š‘ÍlžþuàÄàˆ„2¦(ŸNÇ Â/ßW4Øl6¬lsÖ¬ÜJ†fÇÁø½…Œ‡GÐtÍoÅÕ
<4c¿=…$Úë - -ÕîN ïa`0t¥€P½Î$ÌU4¹´kˆÚͳn ˜É¤?Α`N<Ë’ihPÖeWړäÇ] wô^d…ã$_ÁÀdXÙpDÎKêDcñAjl‹D½/ÒSD!H—ûq8Ï0e•|UMNÕö%â•îMnÇC&ö¨Q†’LŠ—ñ5’ÒdµÓ㘹!¢ÞÂHÏÈ‹/+wºéh°\•uç·14è=ðêÈ›¹±VÖdšæ›SRÎÚTꘅ±ŠömJ²º1›ð}MHF+¹üŸ³É[¬×c:IÍd‚ÈÜ)©å½¾¸!¦_no?}>
¡qwÀ‘: új6à”” ù6ž«$õ.§hÓЈ - -úî¤(Ûe•m‰Z7õØù8bÐdžû.žLß__cŠ©^ ߀µlÀR‚\@ä¼e«4â>ƨÀAÔf©¶´]ÞÔ€ÿkÉòy¶Êr0-š:oŠ²~¢µ…‡õÑÌ( ݼ5µý”ÀBrDÞxÿÔˆQêÂr[Q$ØÚ%Á…
x ´fõŒ:á¸qog^PDODÚ“·Äât§®£l›L ÜÉ„ú˨&^ÏhaÛ¬ÿ^sUÚâÞ«ïõª&6°ˆíIM]˜¡Ê1ûý-‚^) $XãAq •³¶©±ZÀ-¡0wMKœÃª€N€Ç}‡Š{¿º¦I)›†)´¨ÓØØýÄEM²4ntðš6î%ŽwEÚ;Ø~瀞‰Ž_vF/®§“ó—C -q‚Ž:#ª3(8&
¡›z…¸~'¶²}Õl[,¨)З ù&~i¥½ÇV§I°®Û#pä:öpKš]]¤Ëøa뾯g¦ËÏV¦mªg>ëÿ Wüí¿¿}úãòÏ3Š®ò!
øÞÎÓËK:ýäãôÓÛ -$&;Ä¢n[“¿™í“©wí lÇv4bº7Þç«÷‚«p¨/HXö|ÃÖ•€ :M÷ŽxþåÃôí“AÜyœ³÷³Ý‰ƒØGw뚆{W:vGëUÔLé¨7?D€Gs&O!&àþ„¦õUp¿Q©¶7ˆÅÇ®UQ$’Þ1´ùW)c]øÎÂ÷ÿ8^weUvÛŸˆŒmÝ,[È’Wà»Æ D[œ@o¼¿t0eˆ%jø‹…€ÜÜ‘pˆ4ýßÇôrH¼lÞ³÷EU¯Ú»Íóƒ'åC-§ÂËö%Õþð¼Ÿ0Ž–©x3 P…,‰B…uÑtGåÅékŸß¸^<šÁ‹cĤÔâµÄîM‰ø_gHCwr®_Ëûç›ò6YÙ•§zyt5KÁÑë¶è~¼Øe_¡Y•=
í¢™Ž“+è~¹u0–F-Áñp:üA9©¼OŽÿû?èËo^n"‡qÊ8dðqä•ÂC -•¨îÿ˜êþ:šendstream +xÚ¥YKsÛ8¾ûWè°UC×D0^|Í͉Œ§2Ž7vjvËñ"!‹ŠTDÊŠfkÿûv£š’èõlmé@ 4ýøº‰ ‡Ÿ˜„‹R™NâT³‹p’/OøäÆ>œ7gê'M‡³ÞÞœ½Wñ$ei$£ÉÝ|À+a<IÄ䮸Þ2ÉN~ýt{w:•a$yp~ssy}qõìs˜38~?¿þrþ‘h7§©Î?\Þž>Üývry×K3”Xp…¢|?¹à“ÿí„3•&ádÎDšÊÉòD‡Š…Z)O©NnOþÞ3ŒÚ¥£œIÉH9¦‚0e‘’ʪઆ#)t‹²¥Vžµæ
6£Àdùxö>TFq»D°92ø¾1ëMÚÛMI&y"ܬl}*’àq³4uGÛX‚YѧíÉ™“§¬‹ò©,6Y…}é¶qC^dã$n–ˬ.¦UY;J»«»ìµÓæërf +r2<f±Ð 7!X†’ä›5O--ÒàO=Uà yS·eÛµÔkæð…ñ¬Þ
ðµ‚`£í@:jAs›UW†Aj|å\e-hY©øyy-]«khùÌõ«¦ùfÜâÍÊCUY1ì (<ß?—W8m·[jY9°‘WYÛÐìé°1XÚŸÂòYdµÚE³©Ü²™ç½ZU¥qD<Æþb*„X/n¢$L¸çäwU3#ÃÇAk:"¢¶ñÛ{Bäå²ÞšÛE‰†³‹¼d0ÉJßgÉPç#VÕ3×ÒxV9¹!Ž·
ðlÚ
ñgQ<îà¼4ÃIý²‡à2XnÚŽÈ.rS"§€ð¹¦i@ݬ*G·Î$tt¡Éœ®Ö¶Íp %øôÈ%¹|QD8îtÿH^—Z
êJ‡.à⑨”VWIpn]&ôö…qoNdԻпò›¹Yu4ˆÜ-Ê@è>£ŒLRÆ…Ìü|_7ù²Á£@2Œ”›H[Á‰œ¹CÌÜ +–¢H°¹5J‚ëð@hÍú eÂvã¾N½ ˆ‰´Ço…'Äî ¯#oLÀÜñ„üË('^Íi`×l~*hrUÚäÞ‹ßͺ¦i
`;ßãš:7C‘ÉcÆJv‚^) %Ð¥L:‘³¶©íNg,îš–fŽW¨*÷*î}ðh 9„l +7 £ÃhýWž
$K¨FG
¦=Çé¥}ØÏãp–‰ŽŸwF/®nÏß~¼ ÀA{ 2õSIf«éZJxÊÀsg•½KKŸ¡@yVçVŸNç¶c³0Œ‚Ÿà¢ÂQçDu +ä!TSˆëw"`+ÛƒbÛbùHNºLÈWñK+í-¶>M‚Mݾ +¸A¡n½EUÈb¼àŒkDãqñSàƽehó¯RÆԺ𵅿`{Ó•UÙí^÷Œ]ݬZ“ôQ6…9qÅ!#/Œ¤”!æ¨ñçGÁ9àp5ý㣛ô|F¼mÞO³wEU¯Û»íÓƒ'åc5§ÂÛö9•°Æ.(Ì¢£Ô3¼a–I¢Ð{a]4Ý‹üâôáç×n–33zsŒ˜”Zrì^åhŸñF$T,\òûãU~Û¬ì^ä§z~t7KAÑa]t?]Žì²/мÊÇvÑâõHºoE®E%Œ¥QMððÒÓ;œßËG<•÷±ñ?Ë?ÿë ±ÖMäø‹»ŒC‹#/Rh~$ºÀ?–ý?ΧLšendstream endobj -2406 0 obj << +2415 0 obj << /Type /Page -/Contents 2407 0 R -/Resources 2405 0 R +/Contents 2416 0 R +/Resources 2414 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2416 0 R +/Parent 2408 0 R >> endobj -2408 0 obj << -/D [2406 0 R /XYZ 56.6929 794.5015 null] +2417 0 obj << +/D [2415 0 R /XYZ 56.6929 794.5015 null] >> endobj -2409 0 obj << -/D [2406 0 R /XYZ 56.6929 562.0317 null] +2418 0 obj << +/D [2415 0 R /XYZ 56.6929 526.8607 null] >> endobj -2410 0 obj << -/D [2406 0 R /XYZ 56.6929 444.3852 null] +2419 0 obj << +/D [2415 0 R /XYZ 56.6929 415.3623 null] >> endobj -2411 0 obj << -/D [2406 0 R /XYZ 56.6929 354.5963 null] +2420 0 obj << +/D [2415 0 R /XYZ 56.6929 332.9987 null] >> endobj -2412 0 obj << -/D [2406 0 R /XYZ 56.6929 284.7704 null] +2421 0 obj << +/D [2415 0 R /XYZ 56.6929 269.3209 null] >> endobj 850 0 obj << -/D [2406 0 R /XYZ 56.6929 241.0985 null] +/D [2415 0 R /XYZ 56.6929 229.9211 null] >> endobj -2413 0 obj << -/D [2406 0 R /XYZ 56.6929 206.0104 null] +2422 0 obj << +/D [2415 0 R /XYZ 56.6929 196.709 null] >> endobj -2414 0 obj << -/D [2406 0 R /XYZ 56.6929 168.371 null] +2423 0 obj << +/D [2415 0 R /XYZ 56.6929 160.9458 null] >> endobj -2415 0 obj << -/D [2406 0 R /XYZ 56.6929 95.6233 null] +2424 0 obj << +/D [2415 0 R /XYZ 56.6929 94.3462 null] >> endobj -2405 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F53 1313 0 R /F39 1161 0 R >> +2414 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F53 1313 0 R /F41 1218 0 R /F21 938 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2419 0 obj << +2427 0 obj << /Length 4190 /Filter /FlateDecode >> @@ -11509,27 +11520,27 @@ p˺ëæ‚[À‘r8ô >ð >EðI‡<ãt ì`WAŠõÉóõ82ÒþÀ˜Ï9Ì7ÏÜÌÞ¶óMŒŒ® N“:å“ÄÔgÚ_ó€Íu2±@0°_¹šT‡ÉÙ’›ê’o:æ¤ËHÐŒoi!Ž,«ë4¸«Tz²ézVÿ–N{ÖJf†Nb‡÷ûW³¦nòD&3çMg,Âù²×/‹op…}ŽRcpõ7+z›@ ‰PÍ}n@© rüƒva¢±}qM›ï9îîþ@™3}]}9O!£…ìX"B¾gøzPТZ†C1ÿ8ú|ãOù7›úyü]Wï DrÐYúûé8ÆEôȵî9'ÝȇH¥ã$5öäq2U*tìJ,ÕÔ>çÎh¾P@N
WNœq‚Gbˆ¦š³CÔUK–iC'vbÂ×<Ítþ”¨È¤q8`ûùÄ9‹íÎY&ñUfÂ0ϧ†!»³{i'k’fŸAÛ‘ÖñÉ¿T‚“L?óVÜHi‹ðæäÊŸ¤‹t˜™„Ã{ì=mtÀNr§”¯rŠ—$Ùtõ)Ñ’u×*?gT2ez¶aóäjkA3;ê•Pݺ\©ú‰ÌÃ4¿¦knÿÉgêù.—Ö'ë¡I¤cm?%%˜EE‰µ£"]x•r(`Nß겑LSs>ÛSbxW/V¨6+*gS8`¼jÚÔG¸UáúäôÜé*ß,ˆeÆZXë¡E„ã¡Óv;ÐþÆSi8¤KÝÆ8ىⵑ¸ú”ú“EE@zp~ü„q\ó5 -¾NQüñ—ÿ(·‡-_às¤þ*o‡Q¶ýô`“«¶»€qâ§ÏÍôÔDømÂ_þ™D÷+Ø -Ëendstream +¾NQüñ—ÿ(·‡-_às¤þ*o‡Q¶ýô`“«¶»€qâ§ÏÍôÔDømÂ_þ™D÷+Ø +Äendstream endobj -2418 0 obj << +2426 0 obj << /Type /Page -/Contents 2419 0 R -/Resources 2417 0 R +/Contents 2427 0 R +/Resources 2425 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2416 0 R +/Parent 2408 0 R >> endobj -2420 0 obj << -/D [2418 0 R /XYZ 85.0394 794.5015 null] +2428 0 obj << +/D [2426 0 R /XYZ 85.0394 794.5015 null] >> endobj -2421 0 obj << -/D [2418 0 R /XYZ 85.0394 751.6872 null] +2429 0 obj << +/D [2426 0 R /XYZ 85.0394 751.6872 null] >> endobj -2417 0 obj << +2425 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F53 1313 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2424 0 obj << +2432 0 obj << /Length 2037 /Filter /FlateDecode >> @@ -11545,50 +11556,50 @@ xÚµËrÛ8ò®¯Ðm¥ª!‚A‚G%–³šÉØ^SÙÚL´I¬¡H
I9ãýúm<H‘,';µ¥ƒ€F³»Ñï™bø‘)PÑhF>â˜ð 9ôx¹«/WBçÁ_[Š¤[Ñn•8¸¨xó»¾&Éw®Ä&`„ÀÁ˜Eî 7ì£liº¤8D³AÛ,—¯ZÙÀØÁb=W,Öb½n1~PÏ3˜È:;ý¢y[Ñt¶ê”/‰rZyNþßÖûâÕÝjã &,„9ó‡¹}“'uýýn½}SêÖ…Æô`ÒTã÷ˆÞâëµ8 9ãÿK‚ßçô8¬$TMç„Œ*ÉÍ2þð¸zX¯îïÕlœíéy”†G&$ô0~jŽ'ÝVRnÛ#Ìnd.wmn…ƒ8Ûº±ƒµª7±mº·Oz±‘Ë@7¦ÕLÏ_>>¶u>M,߶‹²xºi…ãÇÛÀ.ÌÊNNSÏ^bа|(>Ç‘-uº‰LŽ»ìYÚ’úQ2Õ£*øjí¸×F¸|ɱi„0¸"ºžkúXæáÅ•k:,=D“1Ë ='ùIœrë¬É! -ê¼áø55D$¤m¥=œZÞO–UYœé +ê¼áø55D$¤m¥=œZÞO–UYœé endobj -2423 0 obj << +2431 0 obj << /Type /Page -/Contents 2424 0 R -/Resources 2422 0 R +/Contents 2432 0 R +/Resources 2430 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2416 0 R +/Parent 2408 0 R >> endobj -2425 0 obj << -/D [2423 0 R /XYZ 56.6929 794.5015 null] +2433 0 obj << +/D [2431 0 R /XYZ 56.6929 794.5015 null] >> endobj -2426 0 obj << -/D [2423 0 R /XYZ 56.6929 684.0716 null] +2434 0 obj << +/D [2431 0 R /XYZ 56.6929 684.0716 null] >> endobj -2427 0 obj << -/D [2423 0 R /XYZ 56.6929 572.8605 null] +2435 0 obj << +/D [2431 0 R /XYZ 56.6929 572.8605 null] >> endobj -2428 0 obj << -/D [2423 0 R /XYZ 56.6929 509.4701 null] +2436 0 obj << +/D [2431 0 R /XYZ 56.6929 509.4701 null] >> endobj 854 0 obj << -/D [2423 0 R /XYZ 56.6929 470.2699 null] +/D [2431 0 R /XYZ 56.6929 470.2699 null] >> endobj -2429 0 obj << -/D [2423 0 R /XYZ 56.6929 433.5878 null] +2437 0 obj << +/D [2431 0 R /XYZ 56.6929 433.5878 null] >> endobj -2430 0 obj << -/D [2423 0 R /XYZ 56.6929 401.47 null] +2438 0 obj << +/D [2431 0 R /XYZ 56.6929 401.47 null] >> endobj -2431 0 obj << -/D [2423 0 R /XYZ 56.6929 335.1577 null] +2439 0 obj << +/D [2431 0 R /XYZ 56.6929 335.1577 null] >> endobj -2432 0 obj << -/D [2423 0 R /XYZ 56.6929 244.1508 null] +2440 0 obj << +/D [2431 0 R /XYZ 56.6929 244.1508 null] >> endobj -2433 0 obj << -/D [2423 0 R /XYZ 56.6929 168.8052 null] +2441 0 obj << +/D [2431 0 R /XYZ 56.6929 168.8052 null] >> endobj -2422 0 obj << +2430 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F39 1161 0 R /F53 1313 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2436 0 obj << +2444 0 obj << /Length 2161 /Filter /FlateDecode >> @@ -11596,38 +11607,38 @@ stream xÚ¥Y]{›8¾Ï¯ðÝâ§c„$$z‡§“Išvã´;;ÄÈ O1dN&ûë÷è&Nf·½@Wç¼çC™`øO&’#Lc61C>YmNðäÞ}<!Nfæ…f]©ùÍÉgTLbGa4¹Ywö’KI&7ÙoAòåËâêôü—é,ä8˜£éŒc|J®¾&—víË4ƒäãb9!qBT‹E88½Z.f§Ë³ëÏŸ.ÿžþqóóÉâ¦EÖEO0Õ°þ<ùí<Éà?Ÿ`DcÉ'O0ÁˆÄq8Ùœ0Ng”ú•âdyòÏvÃÎ[óé˜5—ˆ‡,šÌ@8b8·F˜ƒ
f‚a$#µ6ɘͼ”¶ÙìBôÇ3Î;’ñ6×Y¾U«¦Ú>-BxÈ£hÒU{ ycumÒçÖ,ÆÀReÄHè-lKBµÉ›Fe/SÄ9bq$SWêå`j¥L0%C•quCˆã*½ÐˆÊ^˜`e/î«</WÅ.ÓD¤qðëòâµ>ãéÑ*Õ6mòòÎÎO—öi)µªÌ3«‘¶¬þ5å ipsïö¬Ô*×N -—W×p
ÅD_!©€æ0²wÃÅ/ɧ/—‹‘$'Ð|#"¨¼ÑùÑ4$¸Ýå…Ƀ¡ÇA‚åO <#»j;â’h§¿6«ú[{d¯Ñ†æ3_U.Ô_éæ¢uUmÐ;èpÞ…ŠðPtŽeï/ž{‘}’i±œª(ª'g3¸T›™/HPÙbƇßó<U»"ë÷Py]ïTö~ä@`@¸¯ A¬³²®Õj–Õëmµ1÷ïã`ÚçÛ;ض-zðá(PÓ§¹RYm´Ÿ-Wòïê
À»È¦À_¬£Ý¢Ö~ÖO‹Õ¹[±šEršˆD°¹<ÅóDF"ŒæøCŠ$‘<™Ëùü4œÃ¦Zx-ÎÎ̹
ŽŽ>ðE‚ç1#7î³úìür±<Æiѱ%=ÎPw[©½-ê(þù]ij?ÌnŸí³é|nÐf”ɦ+Û_ŒµXztæóþE ÿл4Mßåúßh¨Â1kãÂdÌ®rÈ´…EkŽ0%²SSH¤¢§ß²Ÿ©FÈþåo
ésâ“Ú¢‘ÿ='u ÊÝ’|¿t늀‹Ø t5‘¶n +—W×p
ÅD_!©€æ0²wÃÅ/ɧ/—‹‘$'Ð|#"¨¼ÑùÑ4$¸Ýå…Ƀ¡ÇA‚åO <#»j;â’h§¿6«ú[{d¯Ñ†æ3_U.Ô_éæ¢uUmÐ;èpÞ…ŠðPtŽeï/ž{‘}’i±œª(ª'g3¸T›™/HPÙbƇßó<U»"ë÷Py]ïTö~ä@`@¸¯ A¬³²®Õj–Õëmµ1÷ïã`ÚçÛ;ض-zðá(PÓ§¹RYm´Ÿ-Wòïê
À»È¦À_¬£Ý¢Ö~ÖO‹Õ¹[±šEršˆD°¹<ÅóDF"ŒæøCŠ$‘<™Ëùü4œÃ¦Zx-ÎÎ̹
ŽŽ>ðE‚ç1#7î³úìür±<Æiѱ%=ÎPw[©½-ê(þù]ij?ÌnŸí³é|nÐf”ɦ+Û_ŒµXztæóþE ÿл4Mßåúßh¨Â1kãÂdÌ®rÈ´…EkŽ0%²SSH¤¢§ß²Ÿ©FÈþåo
ésâ“Ú¢‘ÿ='u ÊÝ’|¿t늀‹Ø t5‘¶n endobj -2435 0 obj << +2443 0 obj << /Type /Page -/Contents 2436 0 R -/Resources 2434 0 R +/Contents 2444 0 R +/Resources 2442 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2416 0 R +/Parent 2408 0 R >> endobj -2437 0 obj << -/D [2435 0 R /XYZ 85.0394 794.5015 null] +2445 0 obj << +/D [2443 0 R /XYZ 85.0394 794.5015 null] >> endobj -2438 0 obj << -/D [2435 0 R /XYZ 85.0394 463.2352 null] +2446 0 obj << +/D [2443 0 R /XYZ 85.0394 463.2352 null] >> endobj -2439 0 obj << -/D [2435 0 R /XYZ 85.0394 318.8302 null] +2447 0 obj << +/D [2443 0 R /XYZ 85.0394 318.8302 null] >> endobj -2440 0 obj << -/D [2435 0 R /XYZ 85.0394 224.0131 null] +2448 0 obj << +/D [2443 0 R /XYZ 85.0394 224.0131 null] >> endobj -2441 0 obj << -/D [2435 0 R /XYZ 85.0394 159.9229 null] +2449 0 obj << +/D [2443 0 R /XYZ 85.0394 159.9229 null] >> endobj -2442 0 obj << -/D [2435 0 R /XYZ 85.0394 83.8775 null] +2450 0 obj << +/D [2443 0 R /XYZ 85.0394 83.8775 null] >> endobj -2434 0 obj << +2442 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2445 0 obj << +2453 0 obj << /Length 2556 /Filter /FlateDecode >> @@ -11642,41 +11653,41 @@ U*„ÃýB5(C©º6BÁHÀTó4‡¤5ɘÕ1 ôê![òè°h
Öˆl½8J$ ¤m¸`É5\¸m¼á¢¡d£ïý~‹øBqÞo¸€l ‘ e´…>pýçõÕgtÄÃ
±+9CÍŠõKÎ&+æZ~eŸhô”&ôyöý- ÁGGL÷ÌXŸtoeÐ+øήî.ï¾ãj+ƒÂ¬ß¥WU¹È¬yÃØÖ¤Š"&›>–æ¤-ï‘rïÛ|v«Ëº'G®³\ƒ× áP‡ ‰z3à‡Žâõݧ.§V->Nºö0`m{¨7í!l{iGë×NÏ8æ²aè³0 ‡=¶ƒ´ßa’ñ×óÊV ù9œ]~];™O#õø÷{fWe’¾Ãß•¶ˆm‚.óÄ«ê×ÜævW;ÚŽ_ßh¹ÝG5ch>b›íßÛé¦
Þ}oå-rç ¿÷Þª5}¦Úð˜¶3¥Ðý‹|›¤8°é˼ûýµÂ¹Ú‰ý1QÏ$¦pÆ̓}îT8]Aoe6'8¶O»í ¹+{¶ä‚®â8w/µ€Tb\Ñ(‰ÑþžßŒõo¬|ô‹4zÿ÷ïÉí¯ç"ôy±qãb!Ô -`+”Ö:l×{ì/Ï»²ÿ#ÉRendstream +`+”Ö:b×{ì/Ï»²ÿ{ÉTendstream endobj -2444 0 obj << +2452 0 obj << /Type /Page -/Contents 2445 0 R -/Resources 2443 0 R +/Contents 2453 0 R +/Resources 2451 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2416 0 R +/Parent 2460 0 R >> endobj -2446 0 obj << -/D [2444 0 R /XYZ 56.6929 794.5015 null] +2454 0 obj << +/D [2452 0 R /XYZ 56.6929 794.5015 null] >> endobj 858 0 obj << -/D [2444 0 R /XYZ 56.6929 769.5949 null] +/D [2452 0 R /XYZ 56.6929 769.5949 null] >> endobj -2447 0 obj << -/D [2444 0 R /XYZ 56.6929 744.4739 null] +2455 0 obj << +/D [2452 0 R /XYZ 56.6929 744.4739 null] >> endobj -2448 0 obj << -/D [2444 0 R /XYZ 56.6929 712.5891 null] +2456 0 obj << +/D [2452 0 R /XYZ 56.6929 712.5891 null] >> endobj -2449 0 obj << -/D [2444 0 R /XYZ 56.6929 647.0402 null] +2457 0 obj << +/D [2452 0 R /XYZ 56.6929 647.0402 null] >> endobj -2450 0 obj << -/D [2444 0 R /XYZ 56.6929 551.5126 null] +2458 0 obj << +/D [2452 0 R /XYZ 56.6929 551.5126 null] >> endobj -2451 0 obj << -/D [2444 0 R /XYZ 56.6929 446.5077 null] +2459 0 obj << +/D [2452 0 R /XYZ 56.6929 446.5077 null] >> endobj -2443 0 obj << +2451 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2454 0 obj << +2463 0 obj << /Length 2973 /Filter /FlateDecode >> @@ -11694,26 +11705,26 @@ bì| wó¹æt/S5å‰eßÁ'Võ+6‡
Ap?Nâw2}›jÄ•2„³wßÇì ô…dÉ8{Õ IÌ\ØÁ]‚;¶´î8D Â`ZQÕÔ¦‘\aZJÂ4N)LãaZÈn#Êï#Lck0}…ig'B±áDm*Ìï>âÿgLÇ1TPùŒºÞ|¹ÖD Ð߆Œÿ7ˆ~lí8Œg¢ÙçÍEsâÇ1D›9
æD»ìh0'äÔ±5`¶©rI _òÈo#(gøÕ’ºnƒƒ6ˆNŒ7‚FCÆ÷¶gÑI°C4ž<.¢éæ“ çYc'»*+ð®ZS“(ÿm½â[1ÀJ:O©c€ýgíú·“ÝÇ:4“ƒ#¤83 Û «zþï¿ÏÙý5RƒOH<D‹ -¥ËBÑg½ûKž}Þÿ£"ò…endstream +¥ËBÙg½ûKž}Þÿ£zò‡endstream endobj -2453 0 obj << +2462 0 obj << /Type /Page -/Contents 2454 0 R -/Resources 2452 0 R +/Contents 2463 0 R +/Resources 2461 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2416 0 R +/Parent 2460 0 R >> endobj -2455 0 obj << -/D [2453 0 R /XYZ 85.0394 794.5015 null] +2464 0 obj << +/D [2462 0 R /XYZ 85.0394 794.5015 null] >> endobj -2456 0 obj << -/D [2453 0 R /XYZ 85.0394 287.1527 null] +2465 0 obj << +/D [2462 0 R /XYZ 85.0394 287.1527 null] >> endobj -2452 0 obj << +2461 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2459 0 obj << +2468 0 obj << /Length 2099 /Filter /FlateDecode >> @@ -11725,44 +11736,44 @@ S¥mÝ9z…ÂHRybjèkµ½€ð@’ „%=[Ÿo˜È¡S öˆ¢¯;
J‡N÷ò¨ ÿh-öÚdF2HÄ1ñðbY¤ks¨#¡4; ¶|j§òÖ¦½…ûäh‘„ÝJ×ÊÝšøF‡bZÀh£¤<Òª‘;»áÜFšr¾x[@œw°6+†¹ØlòÀrk¦wC‡ÄIìÉKŽE ›}²3Ða4„˜Êáøõ{ñø½SM Ý év{¿_™X”ÚöÉà(k¯ä2mG®¤ý”Ú‡´B÷¹*¬àX3/Ã9hß¹5bÏ<+´—0 Ñ$ M?4EB?º½ºp9f<b®\Ôž3žfÑK &!û£Q’„Šƒ²ü£“>ÿ Ùœ„dS•M9/ÿ$vÒíÿ8h7b‚`ûuZE|Q蟇õ\ÊõÂ<Áâ÷–Nã®w}ÒŒ1Pø0¿íæ¤Í#]ÛÆöžNÚËÍ“ÉuP5´÷ÃK…Ÿ!b¿+€}û÷ È‘Œ»1à¿þ³Óî -@’)Eã¿™S ÷=
²Ên†p~øg˜JV‡±ÿ )Émendstream +@’)Eã¿™S ÷=
²Ên†ðäðÏ0•2¬cÿ7 Éoendstream endobj -2458 0 obj << +2467 0 obj << /Type /Page -/Contents 2459 0 R -/Resources 2457 0 R +/Contents 2468 0 R +/Resources 2466 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2466 0 R +/Parent 2460 0 R >> endobj -2460 0 obj << -/D [2458 0 R /XYZ 56.6929 794.5015 null] +2469 0 obj << +/D [2467 0 R /XYZ 56.6929 794.5015 null] >> endobj -2461 0 obj << -/D [2458 0 R /XYZ 56.6929 632.7441 null] +2470 0 obj << +/D [2467 0 R /XYZ 56.6929 632.7441 null] >> endobj -2462 0 obj << -/D [2458 0 R /XYZ 56.6929 393.4246 null] +2471 0 obj << +/D [2467 0 R /XYZ 56.6929 393.4246 null] >> endobj -2463 0 obj << -/D [2458 0 R /XYZ 56.6929 322.7553 null] +2472 0 obj << +/D [2467 0 R /XYZ 56.6929 322.7553 null] >> endobj 862 0 obj << -/D [2458 0 R /XYZ 56.6929 278.4974 null] +/D [2467 0 R /XYZ 56.6929 278.4974 null] >> endobj 1455 0 obj << -/D [2458 0 R /XYZ 56.6929 239.5941 null] +/D [2467 0 R /XYZ 56.6929 239.5941 null] >> endobj -2464 0 obj << -/D [2458 0 R /XYZ 56.6929 205.2551 null] +2473 0 obj << +/D [2467 0 R /XYZ 56.6929 205.2551 null] >> endobj -2465 0 obj << -/D [2458 0 R /XYZ 56.6929 131.664 null] +2474 0 obj << +/D [2467 0 R /XYZ 56.6929 131.664 null] >> endobj -2457 0 obj << +2466 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F14 964 0 R /F39 1161 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2469 0 obj << +2477 0 obj << /Length 3070 /Filter /FlateDecode >> @@ -11777,29 +11788,29 @@ X/Ü4µQ±ª7…ÓЈ“>Lík~÷R5OÍgwï ÂÓÍÏsíŠu]”Mµa³êq]4ç2âƒ×x`¦]Ó³{^V¼’΀ʌ‘ ¥kŠeѨ"~dbmïøK"Ø@,òô¿õ!"*XGš©¾Šq¯MâW°rµ_:pñš ïßÕ4W’*lœ0³$3—ü ».‡¦ëfC‹—4æz‡6Ú¼]Ò•˜Ö2¤í6ÚP”F”¥ûXÅVø‘ã8<ɺuÚO43ú(Ïç-WSœßîàø8‰„ðæ$ÑeƒLŽ½rMÉqK‹?þñæÜgê|iºªÛ= ‚ºŒœÖ³.®Ü°û ç8hAPƒÝ|Š…Ÿäïî¯ÿu*VÂb -2#2µÑl8ö…aÏz¿Ýò×Ö:ôÑÎó›>"ËcÈâõiÑAzÛC$Ïu9þyBÙU® k9JŒ•¥‹?ÅV‹tÌWOHZÄÒÙcìn½Dò¢1:(… ßÈŒÿ0€j›¡þ¹¤—åfÝ•¢½U”ŠPƒGY1öSñÕõðÔ ¬ÃQ1Å2ÿåæ¨/€›!6·÷þˆÂÈáçN_›$êÁ»û~v¼<⋃ò†1"jÑ~yý¿íqøU‹IcejüÒ´0+å20…‡”ÆYorÌûÿ +2#2µÑl8ö…aÏz¿Ýò×Ö:ôÑÎó›>"ËcÈâõiÑAzÛC$Ïu9þyBÙU® k9JŒ•¥‹?ÅV‹tÌWOHZÄÒÙcìn½Dò¢1:(… ßÈŒÿ0€j›¡þ¹¤—åfÝ•¢½U”ŠPƒGY1öSñÕõðÔ ¬ÃQ1Å2ÿåæ¨/€›!6·÷þˆÂÈáçN_›$êÁ»û~v¼<⋃ò†1"jÑ~yý¿íqøU‹IcejüÒ´0+å20…‡”&²Þþ.ä˜÷ÿÉÔendstream endobj -2468 0 obj << +2476 0 obj << /Type /Page -/Contents 2469 0 R -/Resources 2467 0 R +/Contents 2477 0 R +/Resources 2475 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2466 0 R +/Parent 2460 0 R >> endobj -2470 0 obj << -/D [2468 0 R /XYZ 85.0394 794.5015 null] +2478 0 obj << +/D [2476 0 R /XYZ 85.0394 794.5015 null] >> endobj -2471 0 obj << -/D [2468 0 R /XYZ 85.0394 751.7313 null] +2479 0 obj << +/D [2476 0 R /XYZ 85.0394 751.7313 null] >> endobj -2472 0 obj << -/D [2468 0 R /XYZ 85.0394 629.4849 null] +2480 0 obj << +/D [2476 0 R /XYZ 85.0394 629.4849 null] >> endobj -2467 0 obj << +2475 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2475 0 obj << +2483 0 obj << /Length 3191 /Filter /FlateDecode >> @@ -11818,23 +11829,23 @@ xڥ˒Û6ò>_¡ª=X³kÁxð…ÍiÖžØÎÄŽcM6»•äÀ‘ Ë©ˆ¤'“¯ßºA%¥jKÐhô?1‰–h©'©ŽXÌ =¶J±ä·Ÿð1~_º€ïè±!b÷¯‚bFÆ„LôP¦ÝŽvlK 818ž¹—Æž¸ò5°m·ÛÖþE×Ä°ÂqZ^ ÒË´¼ð댼x,'/÷cò"íÿ*¼çÜíœ;ú‹FÌøEÒz¬Úÿ¢¡ˆJ‹ì+YÚÿß ŒÄz¨zµ°Œì³›\ã—Þ|4ÈÂe¹ÂA<Y.p%JŽ¸rgŠÈónÓ5-.ý@[˜KW¶Ý?ø˜RƦ3} fû¢(˜må¿ -gÐq©|ý²RGô7ír%X@<9…îÏÆm_”¾‹œÖy ë¯êË¥_=™{ó(+_ïíÿÌ°÷œ¿k«||~2Øgô_ào¤f÷0‹@žöýcø»7¯g>Ú¾y· _Õ$8½{³õ&ýtIÚ—ßbfÿl5¢|â¯ñÿþO×þ¿kQÊT–P%™ÆV•O”埈’cËbB"GhÿïW“Ðendstream +gÐq©|ý²RGô7ír%X@<9…îÏÆm_”¾‹œÖy ë¯êË¥_=™{ó(+_ïíÿÌ°÷œ¿k«||~2Øgô_ào¤f÷0‹@žöýcø»7¯g>Ú¾y· _Õ$8½{³õ&ýtIÚ—ßbfÿl5¢|â¯ñÿþO×þ¿kQÊT–P%™ÆV•O”埈²cËbB"GhÿﯓÒendstream endobj -2474 0 obj << +2482 0 obj << /Type /Page -/Contents 2475 0 R -/Resources 2473 0 R +/Contents 2483 0 R +/Resources 2481 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2466 0 R +/Parent 2460 0 R >> endobj -2476 0 obj << -/D [2474 0 R /XYZ 56.6929 794.5015 null] +2484 0 obj << +/D [2482 0 R /XYZ 56.6929 794.5015 null] >> endobj -2473 0 obj << +2481 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2479 0 obj << +2487 0 obj << /Length 2936 /Filter /FlateDecode >> @@ -11849,30 +11860,30 @@ aÚâ:³aÜ d04¥3a\ÃœI3.LÂïòû ¤™:3…ËiÙ¶ÆUaÒ½!n@Úz+ÎÆËÜ• }…¶ðɣà ê ;ù'UÑa íìï@]tïc<©óhû1† úáòæò×süRwwyAL>^~yÅ™ßñ4¬ïk%ÜíB'6«¬[PiNvï¨}ž¦ÊN±Ô‹¹š)”åÖ{ç›Å6xÆYJNOÌլô
µ-¦çôyÁ>‚q - Ý#Õpw¬«iï ²ýÒèÕ¸¢¿²XÜ7k…˃¦Mt‰úqËni–i^´ëy[³î´ª'ðPü1>K^ÄÞÖóm2…ÏDëìó¦éLÄgÝA;JâŸóì+rwÿþ«¡í‘¨4”Yv ¨$ÁRB¤e¥p÷B퉆ëIgq: ûÿפDôendstream + Ý#Õpw¬«iï ²ýÒèÕ¸¢¿²XÜ7k…˃¦Mt‰úqËni–i^´ëy[³î´ª'ðPü1>K^ÄÞÖóm2…ÏDëìó¦éLÄgÝA;JâŸóì+rwÿþ«¡í‘¨4”Yv ¨$ÁRB¤e¥p÷B廪k¸žt§ºÿ×üDöendstream endobj -2478 0 obj << +2486 0 obj << /Type /Page -/Contents 2479 0 R -/Resources 2477 0 R +/Contents 2487 0 R +/Resources 2485 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2466 0 R +/Parent 2460 0 R >> endobj -2480 0 obj << -/D [2478 0 R /XYZ 85.0394 794.5015 null] +2488 0 obj << +/D [2486 0 R /XYZ 85.0394 794.5015 null] >> endobj -2481 0 obj << -/D [2478 0 R /XYZ 85.0394 658.0977 null] +2489 0 obj << +/D [2486 0 R /XYZ 85.0394 658.0977 null] >> endobj -2482 0 obj << -/D [2478 0 R /XYZ 85.0394 153.2806 null] +2490 0 obj << +/D [2486 0 R /XYZ 85.0394 153.2806 null] >> endobj -2477 0 obj << +2485 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F14 964 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2485 0 obj << -/Length 1727 +2493 0 obj << +/Length 1726 /Filter /FlateDecode >> stream @@ -11887,48 +11898,48 @@ XæRecî‹o¦™BMBÎtM:ë„_±{qq˜5«Z©/œGN×FéÈð ñº¸ï¤¯öÊé./îʬ||O„²Š4x‘‰˜„¡¾{-~È;Xû/}$b̲õOøî|-U×=Î5¶‰|–›¯Íò
ÙÝ› X¥š‘kƒÈÊ7tÅDë¦z[~g~!ä’
vÂ,s|±ÙyxJAoÓ¸e:~•©Éo³Ü7¬’µíêÚ Æ‹leü•\dd#Љ÷Éxz|}z5;½œxú“÷Éþ¸AE²v0m†k[` 3R±}Fªf¶ƒv,;ÎÀ¤_šÊ½‚¹®º¹0וËõ.™ãÇêAÕ¤ÆrÎíl·™{qè$e¬–Ê›~Ö#›T·Ùvê+7n -I²ÍáÄѮ퀎SL}gj瓶œóâ¡Sþ©çêìûl!µßZ<õFÛØÿïO:ûOW|£5ß9¼ãH;Ÿ¨F)ë7¸8>Q½ùøóT÷ +I²ÍáÄѮ퀎SL}gj瓶œóâ¡Sþ©çêìûl!µßZ<õFÛØÿïO:ûOW|£5ß9¼ãH;Ÿ¨F)ë7&éÕ›?OuÿÛÅÊ2endstream endobj -2484 0 obj << +2492 0 obj << /Type /Page -/Contents 2485 0 R -/Resources 2483 0 R +/Contents 2493 0 R +/Resources 2491 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2466 0 R +/Parent 2502 0 R >> endobj -2486 0 obj << -/D [2484 0 R /XYZ 56.6929 794.5015 null] +2494 0 obj << +/D [2492 0 R /XYZ 56.6929 794.5015 null] >> endobj -2487 0 obj << -/D [2484 0 R /XYZ 56.6929 598.7685 null] +2495 0 obj << +/D [2492 0 R /XYZ 56.6929 598.7685 null] >> endobj -2488 0 obj << -/D [2484 0 R /XYZ 56.6929 432.9509 null] +2496 0 obj << +/D [2492 0 R /XYZ 56.6929 432.9509 null] >> endobj -2489 0 obj << -/D [2484 0 R /XYZ 56.6929 360.8886 null] +2497 0 obj << +/D [2492 0 R /XYZ 56.6929 360.8886 null] >> endobj 866 0 obj << -/D [2484 0 R /XYZ 56.6929 315.6627 null] +/D [2492 0 R /XYZ 56.6929 315.6627 null] >> endobj -2490 0 obj << -/D [2484 0 R /XYZ 56.6929 279.8921 null] +2498 0 obj << +/D [2492 0 R /XYZ 56.6929 279.8921 null] >> endobj -2491 0 obj << -/D [2484 0 R /XYZ 56.6929 241.5703 null] +2499 0 obj << +/D [2492 0 R /XYZ 56.6929 241.5703 null] >> endobj -2492 0 obj << -/D [2484 0 R /XYZ 56.6929 166.5861 null] +2500 0 obj << +/D [2492 0 R /XYZ 56.6929 166.5861 null] >> endobj -2493 0 obj << -/D [2484 0 R /XYZ 56.6929 97.4887 null] +2501 0 obj << +/D [2492 0 R /XYZ 56.6929 97.4887 null] >> endobj -2483 0 obj << +2491 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F39 1161 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2496 0 obj << -/Length 1930 +2505 0 obj << +/Length 1929 /Filter /FlateDecode >> stream @@ -11936,88 +11947,84 @@ xÚµY[oÛ6~÷¯0°¨Y^DJÜžÒÄéÜK’Åî6 íƒlÓ¶PKò,9Yöëw(’²$Óΰ¢(PSÔá9Gß¹3¤áéGa&ƒ~(Ä1 –hؤr‚=VpTZîpÝ ÊAð‚HGäI"¥Då‘£4)÷E¼Rf™ªâðg³P'%:…‰¡ç1iRƤ¦ª0y¯E¾¾á¼AIÀ¸æšb‘ìÔ¼ÌwÏ]ݧà!Àç¬r5•G»&|„‡ˆ…Q[»‰*ƒN¹¶x:$X•ª$3¿Oëd¾îS–èÆt£,·Øð°´¹ù5{E²P§Í ݘFì34¨Î˜ÁQUfع&ETÌY‘ŽÈ#²åš!¢„‰¶ÈËe©v¸]R&Ùª]¦žjUz`4ˆ¥ù£êÍwÉ*ÉâÍÉó§¦/8oMs]CSaûèsqÒ dÖÇ7êQmŽü› DÃ@œÓ©¦9RªåÛŒ ÊES)Ÿg«Ù~µªíPét'6•Œ¼€T“ê4V5U…ÖÈV$¹CKe ¥:‚‹QuÏ«VSytkCTPWZÊ}*”®Â€Fd8X%*3{w[•M&̃Ñ*(•lðÇÚÑÌót›lÔÂ<=%åÚ°¹5ù‰³]ì·Û|Wš‡¤4µŒ÷m´J~nv·ßæ!¿h,úC¢ˆnú 9 ,u…7H«$™¥1¦6ÂŽ©%°ØÆÉάTå}z•,
ulMž3ëxcÌ/ìy(õEeqX§q9_ë ¯\ˆí¸Žß‡âÍ -Rk¹N;½C]åÆ×6/;ÉÅh ±h!„Nû¡ºy)Ã4¨Îø”£ª|êáȧ8tœRžéˆ<"[‰cÄ¡m™÷»$+Oµe¼:ZMb2EëÝÃè÷»÷#³ž¹¸ëÜlo‹:’Ë®%<Âj‹tiè£P !
¡õvôddå_~˜Üy|CNˆqJ›!rV*û‚9Žà?òÊd²i7‚0œ
Ž7ã[ëVÒŠ[¤I.¼‹¡ ³h¨¥2_–Íí÷|Œ³}¼ñ¨ED„¨€Ï°÷) ‚\½y¸¹2aÐ ~T×€K퇂ûDRH‡ŸË>M½{8‡œ¡gÐ+eζ“ç¢T©ÍØWyV@±HöéAn - endstream +Rk¹N;½C]åÆ×6/;ÉÅh ±h!„Nû¡ºy)Ã4¨Îø”£ª|êáȧ8tœRžéˆ<"[‰cÄ¡m™÷»$+Oµe¼:ZMb2EëÝÃè÷»÷#³ž¹¸ëÜlo‹:’Ë®%<Âj‹tiè£P !
¡õvôddå_~˜Üy|CNˆqJ›!rV*û‚9Žà?òÊd²i7‚0œ
Ž7ã[ëVÒŠ[¤I.¼‹¡ ³h¨¥2_–Íí÷|Œ³}¼ñ¨ED„¨€Ï°÷) ‚\½y¸¹2aÐ ~T×€K퇂ûDRH‡ŸË>M½{8‡œ¡gÐ+eζ“ç¢T©ÍØWyV@±HöéAn +™endstream endobj -2495 0 obj << +2504 0 obj << /Type /Page -/Contents 2496 0 R -/Resources 2494 0 R +/Contents 2505 0 R +/Resources 2503 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2466 0 R +/Parent 2502 0 R >> endobj -2497 0 obj << -/D [2495 0 R /XYZ 85.0394 794.5015 null] +2506 0 obj << +/D [2504 0 R /XYZ 85.0394 794.5015 null] >> endobj -2498 0 obj << -/D [2495 0 R /XYZ 85.0394 751.9581 null] +2507 0 obj << +/D [2504 0 R /XYZ 85.0394 751.9581 null] >> endobj -2499 0 obj << -/D [2495 0 R /XYZ 85.0394 466.3276 null] +2508 0 obj << +/D [2504 0 R /XYZ 85.0394 466.3276 null] >> endobj -2500 0 obj << -/D [2495 0 R /XYZ 85.0394 401.6524 null] +2509 0 obj << +/D [2504 0 R /XYZ 85.0394 401.6524 null] >> endobj 870 0 obj << -/D [2495 0 R /XYZ 85.0394 361.5595 null] +/D [2504 0 R /XYZ 85.0394 361.5595 null] >> endobj 1456 0 obj << -/D [2495 0 R /XYZ 85.0394 328.0431 null] +/D [2504 0 R /XYZ 85.0394 328.0431 null] >> endobj -2501 0 obj << -/D [2495 0 R /XYZ 85.0394 291.9754 null] +2510 0 obj << +/D [2504 0 R /XYZ 85.0394 291.9754 null] >> endobj -2502 0 obj << -/D [2495 0 R /XYZ 85.0394 224.3783 null] +2511 0 obj << +/D [2504 0 R /XYZ 85.0394 224.3783 null] >> endobj -2503 0 obj << -/D [2495 0 R /XYZ 85.0394 138.7576 null] +2512 0 obj << +/D [2504 0 R /XYZ 85.0394 138.7576 null] >> endobj -2494 0 obj << +2503 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F55 1321 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2506 0 obj << -/Length 3014 +2515 0 obj << +/Length 3013 /Filter /FlateDecode >> stream -xÚµZÝsÛ6÷_¡™{0=µ‚ ø1÷”6Nê¦Nr'wz7½>Ð$qÂU¤ì8ýíb)QrÚ›K„ÅbwñÃ~€“ -„šÌ«‹`²‚¹w‚i¦–hÚ§úþþâÕ[™L2?‹Ãxr¿ìñJý MÅä~ñ›÷½ŸøWÀ!ðÞ|˜Ín~˜Înîïoïn®¦"KEè½þôéæÛÛ]MC -õÇÅo¿“¨ðÓEàË,U“'è¾È²pR]DJú*’ÒŽ”³‹8†½Y³tÔ"ðC‡#ÆÃ1c¨Ìe(1~]ë” -3ï³~ÆFêUºËy—Óð‚ Ô墥^¾½©§©3_çõJ/®¡'¥÷Ðtkb€KJÍ+š%¯<Øe“[»ƒ -ЯÞF¢'n˜Ä~ˆ”DAß×ðÏÿ.Ïóï -üç#'³j ¤…ŸÊ@ñª¼^Œ°™/"8#Ùd‰Ä“$L…ð3¥BCÑÛu³-óNí$¾Êb»3h%®¦2ëÙ;Ô^éZoÍÀ•¨Ä»s&Gš½Éá̇ËÛ®¡î‚úEM¿Ýš ¬|ŽQ©y×4¶ÞUy=%mÈmiç¡D>Aä-t;ß›®hjÀCÅ_Ú{Ì`¯hé7/Û[ÊÛ”ùÜÈŒ³ÌdÞT•®»v8êX¤`Ãi%¡wo§÷Š{"¹dVmT %«]þªh[P£¥‹¼‡3vʧü™'ZÝQ£kè÷‰Š:ŸÏ5ð0ÆéSäõsSó\½åi¸$¶egŸj;‹Ø¯šOq n|†—˜¸sY¢"2ñà £‹ûñÓýíÇÇHø‰ñ$ŽR?‘™<á1ˆhÚ§"‡!F†£Â}§ËÃ-c駩JÏoi‰F¶ì_¢8õÓ8Ã-ßæçh%¼hÏ,ñv›… -ã¥`¨nh¤çî²ÔÝ=„›’Þ¯WJy°¤Ù1£nàÆu¹×î¨öJÈ$ò#Xϵ¨ÛVϧ -†âÀÍ×ükÕÉQ§à³ NlªJÛBq}ûá-î¥V†¸*ÈþÈI¾±‘ âtÎăbýÅšV/hÊxË}’`³ šü7ü»»{ó†fšípôÇïîf3Ÿ&)BG{>äTW»Šã9¦; ~;ú÷¹ -'"—ß]Ú”…¦—&Ád\˜)XÉ¢îô–ÕêH+`Ó9kY.Ì/]*²4ôMu ûA -¢ö)Hlri²jSZ]Ï5ç\Å’3Ý|}~ߢ˖MY6OFvyâK@šlj"0):˜¡mØbûbÎ&/Ÿ/!wAÂÈ»¬c®Pz—O®µpµmpuUØ!N’Dl÷K†Z6½ {¸#›UÁËžu¾e¡°H[h”ʱƒ§sJ=+j„ÑJ†-uPUÃ)¯jÈ^W…‰Rçj™Í°òcºª©»53în†Ü~Á‰íz¬ž´þl·ïI‚ô¶
æQª*j°Š¡Ù;HF!ƒÔ¥+"¤Š$Œ´œ(öøú°î:v:½Ãè%AP?5µ)Êp¿{|~cg´«ÞsÚk› ðn—5Àðòd -爎¥0È“ðÁ¯/ýÌžIšÙò†L}í“Ï”Þï2›zB¿°«ú}`&¦þh×æ{Ón“¯ …Q˜y¯—)Ì´qÖ,]Ûš¨¦? etèvM6x¤™—»Å!ˆö¾ºwš‹Ø=ºé†Ìveda×؆ȓ˜ -Sé¡TçAÕ§:*Ge`õúÅêæª Á -$å QíÚŽê/àŽ!£,Ÿ©_屉áÕ´Ìíˆ=s²f+œÑ°Î‰ûÍ:|~‘u
8CÔm:S{šqþÚÈcÀSÿ G{¡ùVýͲ٦c9[òiŠˆ?¨Að2õžûؤl4ü:´F‹°ŸŽB'¢O¿Lå"Ì;D{@ÍÂìÒ+Úc^^½Oõ¾¤ìPû±Í<§˜„çÖ?õ§=˜÷Ž -ÜKèÿüg?û¿oŠ(OÒpÜ„‰òaql…B-ý1ÍÐ9òËþ_‘Ã8?endstream +xÚµZKsã6¾ûW¨j¦+‡ +÷.·LT˜e:;¿¥#Ù²‰’,Ì’T·ü–0?C+á…@{æi°ÛÌ- +†ê†Fzî.ÏüÝC¸iür¥u +êÊõ˜ç˜ªD€¥35„êsYU +tæõŠm$γ½&O(«0¯³8Lòá}xä½cêŽ3V÷.J§QGêÕ§:í¢<•uQ?Ò%Óºž!‘Ò¹»’åÖÌ ”¾Ê&d‚K–ç…óT#Ò
“‘<ŒäcñîM×ä¡Ëceâ@C¿Ï«r¶: 'ÌÛðá2Ã`æΆO¤œŸ9•ƒoÎ^9†=Ñ™S`"{«£8‘„QžžßÏÑï×·k*Â(͆ûݬKÝ®-–l…5Djß¡[ +ìðwV<O5"ß +gúµG‹æ¦2ùT$|êdYØÔ‰wº¦¯«Ç|ù”%¿>ÃoÕÔK³õQ0ÇŽ¦þ„Ÿb_‡µŠówëâ¥ï×…[xÄÀ?gå¦iKûŠ%ƒv…å¥yh¿¬žBD98™×üZêò•EÞý«Éüfkæ¿
b9šD>m`b‰óž•ÓÈ9@`¢B©” +z8™Ù#ˆ©"rŸH ¿°…2¦AîQÙ½tèØQafÄï~1Ô¡sþöÀëØUð[Œæ'è›Ï›ªœ•¼q»›±!ðÀ +Ï:ê¶ZB‘ÜÖ¶Ÿ‚ËùÃOÙ@˜€Ô/ Ñô¬8=’ؽ~ìI9h¬wmGÍgpÇQV/Ô_µ‰åÕ´Ìíˆ=srf+œ½Ñ°ÎIR÷ÍZ>¿¨È¹œ¡ê.©½í8—.2DäpÄÖ¿8`ãÑž‡´ßª¿xC6ÛtL#oK>Mó5^¶Þó›´‹¦€_ÁhîÓ‘äp"úÄðË8.¾C´Ô,ìÁÞ’^ÑžŠêzì}ª÷%eÿ€Úmö9ž ¼´á©?íÁ¼wü³Pä_Bÿç?ûÙÿ}SœBy’Éq SÂâÄ …Z +-#ÿбìÿ’8Aendstream endobj -2505 0 obj << +2514 0 obj << /Type /Page -/Contents 2506 0 R -/Resources 2504 0 R +/Contents 2515 0 R +/Resources 2513 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2510 0 R +/Parent 2502 0 R >> endobj -2507 0 obj << -/D [2505 0 R /XYZ 56.6929 794.5015 null] +2516 0 obj << +/D [2514 0 R /XYZ 56.6929 794.5015 null] >> endobj -2508 0 obj << -/D [2505 0 R /XYZ 56.6929 679.0396 null] +2517 0 obj << +/D [2514 0 R /XYZ 56.6929 679.0396 null] >> endobj -2509 0 obj << -/D [2505 0 R /XYZ 56.6929 422.1751 null] +2518 0 obj << +/D [2514 0 R /XYZ 56.6929 422.1751 null] >> endobj -2504 0 obj << +2513 0 obj << /Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2513 0 obj << +2521 0 obj << /Length 2295 /Filter /FlateDecode >> @@ -12030,44 +12037,44 @@ xÚ¥Y[sÚH~÷¯àÍPÚÝê‹Ô3O$q2ÌÎ`¯!5[›øAa4‹„ç×ïé+4&ÙTEÖѹ|}.Ÿ0éaøGz G˜JÖ‹%C a~`ò¶…LÝMOÇ^³Må:7»uÚœD‡%Á(8CÛR§ÑñRM€B¾&’S›6ï®n¯FWwWã«÷WiqL¸"·¯úè¥NvH¢$ˆáïzé d…*sÍË…žöçU®S8ð”âmk«ó¾m¿pˆŽqäÒ' 0…ñË(éò°Ñ§Ùo7wç‘+FXf6y¦/u“í”W•ðÓä»õÞ.L2&"«‡Aª`;×Þ¢d0$‡£®4F”GLOÒ ÇSRјu9¡S¤úȬÌ/`öÃÆ?WÒžÙ5UU„0ÃÉøRV›:¯ù€ÀˆÀG±@B`¢ð%M«z•Ï´UhªÀB|ÆKÃWuøy˜Þ»ÕÜòÚ™ÚÀâ¨t 8/€Î†ªæ»ì5.»5¾È·ðeRm_JÕ~‘OV¯ôú¬Ò¬|ÌËP3êŠyÙh\÷Ý™í(òÔçÞÎkŒ’¸; -prè:§ â •cßÿ€%ˆendstream +pzè:§ â •cßÿ€ç%Šendstream endobj -2512 0 obj << +2520 0 obj << /Type /Page -/Contents 2513 0 R -/Resources 2511 0 R +/Contents 2521 0 R +/Resources 2519 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2510 0 R +/Parent 2502 0 R >> endobj -2514 0 obj << -/D [2512 0 R /XYZ 85.0394 794.5015 null] +2522 0 obj << +/D [2520 0 R /XYZ 85.0394 794.5015 null] >> endobj -2515 0 obj << -/D [2512 0 R /XYZ 85.0394 567.3101 null] +2523 0 obj << +/D [2520 0 R /XYZ 85.0394 567.3101 null] >> endobj -2516 0 obj << -/D [2512 0 R /XYZ 85.0394 399.1134 null] +2524 0 obj << +/D [2520 0 R /XYZ 85.0394 399.1134 null] >> endobj -2517 0 obj << -/D [2512 0 R /XYZ 85.0394 330.2279 null] +2525 0 obj << +/D [2520 0 R /XYZ 85.0394 330.2279 null] >> endobj 874 0 obj << -/D [2512 0 R /XYZ 85.0394 287.2095 null] +/D [2520 0 R /XYZ 85.0394 287.2095 null] >> endobj -2518 0 obj << -/D [2512 0 R /XYZ 85.0394 248.8505 null] +2526 0 obj << +/D [2520 0 R /XYZ 85.0394 248.8505 null] >> endobj -2519 0 obj << -/D [2512 0 R /XYZ 85.0394 215.0559 null] +2527 0 obj << +/D [2520 0 R /XYZ 85.0394 215.0559 null] >> endobj -2520 0 obj << -/D [2512 0 R /XYZ 85.0394 143.2486 null] +2528 0 obj << +/D [2520 0 R /XYZ 85.0394 143.2486 null] >> endobj -2511 0 obj << +2519 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F39 1161 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2523 0 obj << +2531 0 obj << /Length 2973 /Filter /FlateDecode >> @@ -12080,29 +12087,29 @@ xÚ¥ZßsÛ6~÷_¡™{¡§?I }rm_ê&v|‘Ó»^ÛZ¤-N$R©¸Î_,@‘Ee¦É¡ÅX,>|Ø]šM(üg“Øp3IŒ ÿÌòéP\ü”n—M¸Ã+Ý~ž×Œý°wgç«uãyÔ±¸k…88áÛªôOÜ®ãç ð&FZûgOÎ;·WW„Õ¦§åë^?L!Òg‹ÅEô°(üèÕÚçÐ^¥~ŠÇüÐ8X庇à¥X‡ÊFS¬FÒm`\I–9±Ý‘íZn»—ÛmãªåÙj•bdØ™ .Ô@ª£–µZ¦õc&°ÍF¯=Ûv·J[ïSÑÕ{[¢ýe¶|ä¤Eé•Ú<ÎJ݉)ž8h¸]µ=6¶‚ÃþîúWNíjÊ‘¹½vMá‹‚Ðç½áú]éd颴,l5Dÿ4Vf¯Þ¸öwáÄA¡`ï9Š ÇÀ2æD A›…-醵\ÌxtZ}/YutÂ@à\¢½K´sIëíý¡£ïî\vd -cr12Xƒl‹SÄS+‡´YvX¸Í³£B!ì K)J·X¼éíbgŽ"'†{Ÿ¨ëïtF¾•£ŽÃÌâ –j’ÑÉ‚ÊÁd½:&#nüîd÷›¢E]ÿ‰^Tï€z»Z¥›×#I–ÂË¥ÿ˜Že¦çí*/;çÃÏn\`º]ióovk+;Äþ‰Ñ€“hûçû/™v³%"ô±ÂO—ã`”5œ)~&ÿ7O‡¶ÿ21?rendstream +cr12Xƒl‹SÄS+‡´YvX¸Í³£B!ì K)J·X¼éíbgŽ"'†{Ÿ¨ëïtF¾•£ŽÃÌâ –j’ÑÉ‚ÊÁd½:&#nüîd÷›¢E]ÿ‰^Tï€z»Z¥›×#I–ÂË¥ÿ˜Že¦çí*/;çÃÏn\`º]ióovk+;Äþ‰Ñ€“hûçû/™v³%"ô±ÂO—ã`”5œ)y&ÿ7O‡¶ÿ2‰?tendstream endobj -2522 0 obj << +2530 0 obj << /Type /Page -/Contents 2523 0 R -/Resources 2521 0 R +/Contents 2531 0 R +/Resources 2529 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2510 0 R +/Parent 2502 0 R >> endobj -2524 0 obj << -/D [2522 0 R /XYZ 56.6929 794.5015 null] +2532 0 obj << +/D [2530 0 R /XYZ 56.6929 794.5015 null] >> endobj -2525 0 obj << -/D [2522 0 R /XYZ 56.6929 751.8053 null] +2533 0 obj << +/D [2530 0 R /XYZ 56.6929 751.8053 null] >> endobj -2526 0 obj << -/D [2522 0 R /XYZ 56.6929 661.6515 null] +2534 0 obj << +/D [2530 0 R /XYZ 56.6929 661.6515 null] >> endobj -2521 0 obj << +2529 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F55 1321 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2529 0 obj << +2537 0 obj << /Length 3169 /Filter /FlateDecode >> @@ -12121,23 +12128,23 @@ Bº—¶Ëy):WÕ×DZIW0 Ì{kEÑ—È“+AŒo ›¸'6'Øq«]…ÂDñÇ{¬™ãÇö$*ÎÆç¿i|‘Ó¹è¢ÚN]´SOªH=ÝROȯ•(1¼ ¸ÚÁy¬E÷D@‘uüŒ4ÃÁ¸'"ÂT&fÌ»a*õsã“íR²_¾ÿŽ2KÌ#J{Èš6vY¸ø#Wé¢-·ÃZ2±l92é,x¬FÒ¥GPcîʯ–©Ï?ºÃÅfë7»Ï>ñu-q×Y<4›§ÅH¹b'ú…H5ÄZŽT–‹TÍ|¢MçÈšcõXÕ—e½ !ýS×Yë°fxç I¨´ŽÆÌÝ{Ar‹bt̸LXP¥;ô£öùä-º4Ï¿D{I½ë5E\+£-@)¿Ÿ¦˜>ƒíhx¾–ÞOâ'Uþõ÷`]y?åÞïÃK™ÔW:· ¤ˆ°÷*i†¿Ñ¦íH¤Öm"úÖm")qL|™
b’Æþ‘ûx·ø!î‘@ÝŸvà˜ÓŽÖ=ÞîTK[¯¤ æÜB\¤×[½b¹Óëtg6Oˆ²0´ˆ¿¶Ó;§_2‰B£…¼®_C¬eýê°œ~¦Gf?„½p¤Gš9rx»,Š&GþŠ-P`$8ØòT4kjU òý¼ÍiñÙµü4·I;2ÃÚÁ
hLDæ¸æ¶7bmsÛvý%£eðà”0¨$EpÔ§î3âPMŠK<ŸË*s¥ -gK Áçóþ\9heÇ÷çb¹|̨}/é;SLmÑ™ûö C>ìYvwÅaZÃt¯Á¹Û?¦‡^wì§êÐ}H.ý· ^£æþ7L£ïœ-ÎÄÊsýÿßXÿrPÇé4]ø‡*
i¿Ö™ôL¡´d¤§¬G2„T%3¼ÿ2ßžendstream +gK Áçóþ\9heÇ÷çb¹|̨}/é;SLmÑ™ûö C>ìYvwÅaZÃt¯Á¹Û?¦‡^wì§êÐ}H.ý· ^£æþ7L£ïœ-ÎÄÊsýÿßXÿrPÇé4]ø‡*
i¿Ö™ôL¡´dMY4d©Jfxÿ2Zß endstream endobj -2528 0 obj << +2536 0 obj << /Type /Page -/Contents 2529 0 R -/Resources 2527 0 R +/Contents 2537 0 R +/Resources 2535 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2510 0 R +/Parent 2502 0 R >> endobj -2530 0 obj << -/D [2528 0 R /XYZ 85.0394 794.5015 null] +2538 0 obj << +/D [2536 0 R /XYZ 85.0394 794.5015 null] >> endobj -2527 0 obj << +2535 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2533 0 obj << +2541 0 obj << /Length 3085 /Filter /FlateDecode >> @@ -12154,23 +12161,23 @@ pc£/P`‡Â¬VW*:3u ”g¬¿, ÀÕ¦h\ò†¾[ùº[õª]EUðQ HÕ!¸læ¨;ƪ{×YŦXç»Ó[ÛÓ Î,tZ÷c¸»õÇÊ«—¿¸ú/C¢Î ˆÔ– J–P³rÍrÊ9¶`’ö³~ú,d$Ø·ýT+ü%Έk*8î!¾²ó®ÙÅwÍË»æc®y–e뚧,‡\³ÇòM[ŽR‰üvþþ# ɹ-àzŸÚp˜<´ KÏ,š^Óô2¯™ :kÅtÍ-+$ëcµíF¨jd8ÿé:‰.Â|üø¦¥®¸"²¦¥<ªˆÂGòãoäe¸GC9zC8ºÇk§GÒïá«_¨XÅmÑ5þUÝâåÏ|SoqÎ|Q'ïŒrFü¡Rø-IÑx©«²>ùD“MlzN®çD°^üCƒhm¢º’}U\^ëíªÕ}Pp0Ϧ½»„Þ3lçøwí%U×°—c¿ç™ñGX»–íõÎÿÖëð«¶(&ë+u‡~c -¨ltêHRhëÙÿ(!¬fendstream +¨l|êHRhëÙÿ(y¬hendstream endobj -2532 0 obj << +2540 0 obj << /Type /Page -/Contents 2533 0 R -/Resources 2531 0 R +/Contents 2541 0 R +/Resources 2539 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2510 0 R +/Parent 2543 0 R >> endobj -2534 0 obj << -/D [2532 0 R /XYZ 56.6929 794.5015 null] +2542 0 obj << +/D [2540 0 R /XYZ 56.6929 794.5015 null] >> endobj -2531 0 obj << +2539 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2537 0 obj << +2546 0 obj << /Length 2027 /Filter /FlateDecode >> @@ -12184,44 +12191,44 @@ YL8;/»¡òïLÄ7äPOúbc3ª` ,ò B¶Û‡ª) 51 f7¾í¦—Ùz“äÇdëKrº \ðÉ×3qUàí‹+ÑcÆ<ü8A”ÒÔï\ªŠUÔCoúnñëíÛs°¹ª ‘§6.çO0†ìl=º*òÚavܵR9b\:gq@d<‰ -mßø*áÔ/\îÿ&QÓx±Ñéù!Ü|t«Çfõw³²ã™`Þ+D‰hzgv°5É3sr˜[›H´\×Ù6ÕÊ8ûFÚ×Ï}'`õÇ]¸qÁÿþ†Ü~-çÐ|âç>¹Àc¼¬ˆSJ›]o¨º`±žÈ"îÿé¯endstream +mßø*áÔ/\îÿ&QÓx±Ñéù!Ü|t«Çfõw³²ã™`Þ+D‰hzgv°5É3sr˜[›H´\×Ù6ÕÊ8ûFÚ×Ï}'`õÇ]¸qÁÿþ†Ü~-çÐ|âç>¹Àc¼¬ˆSJ›FD4T]°XOd‘G÷é±endstream endobj -2536 0 obj << +2545 0 obj << /Type /Page -/Contents 2537 0 R -/Resources 2535 0 R +/Contents 2546 0 R +/Resources 2544 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2510 0 R +/Parent 2543 0 R >> endobj -2538 0 obj << -/D [2536 0 R /XYZ 85.0394 794.5015 null] +2547 0 obj << +/D [2545 0 R /XYZ 85.0394 794.5015 null] >> endobj -2539 0 obj << -/D [2536 0 R /XYZ 85.0394 573.4038 null] +2548 0 obj << +/D [2545 0 R /XYZ 85.0394 573.4038 null] >> endobj -2540 0 obj << -/D [2536 0 R /XYZ 85.0394 309.4358 null] +2549 0 obj << +/D [2545 0 R /XYZ 85.0394 309.4358 null] >> endobj -2541 0 obj << -/D [2536 0 R /XYZ 85.0394 249.0624 null] +2550 0 obj << +/D [2545 0 R /XYZ 85.0394 249.0624 null] >> endobj 878 0 obj << -/D [2536 0 R /XYZ 85.0394 211.9585 null] +/D [2545 0 R /XYZ 85.0394 211.9585 null] >> endobj -2542 0 obj << -/D [2536 0 R /XYZ 85.0394 179.7548 null] +2551 0 obj << +/D [2545 0 R /XYZ 85.0394 179.7548 null] >> endobj -2543 0 obj << -/D [2536 0 R /XYZ 85.0394 144.9999 null] +2552 0 obj << +/D [2545 0 R /XYZ 85.0394 144.9999 null] >> endobj -2544 0 obj << -/D [2536 0 R /XYZ 85.0394 81.7046 null] +2553 0 obj << +/D [2545 0 R /XYZ 85.0394 81.7046 null] >> endobj -2535 0 obj << +2544 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F39 1161 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2547 0 obj << +2556 0 obj << /Length 1971 /Filter /FlateDecode >> @@ -12229,976 +12236,960 @@ stream xÚ¥X[Sã6~ϯȣ3C´ºY²úƲiK»(dÛN/ÆqÀmbS_è¯ïÑÍ—Ä ìt˜!’üYçè;W™L1ü‘i(PTM¥â(Ä$œ&» žÞóï&Äaæ4ï£Þ¯&ï¾erªTLW›Þ^ÂQD¦«õïÁ{D0šÁ8XžZ|˜_|¿¸øñ·«åb6'’Pœ__/–.Íiˆ`ŒƒOçËÏçíÚõLÑàü»ÅíìÏՓŪլ¯=ÁL«õÏä÷?ñt
‡øa‚SQ8}‚ FD):ÝMxÈPÈó+ÛÉíä§vÃÞSóê(p Ê¡ƒ’)!H…!ð*$e†‹Û‹›ËëÕåÕRŸÆ¼ÓQˆ§s*)5à<Þ¥ëyò&'E¾q/ÐÞèËH/j¼AV³9c$¨R=ÀAõ’×ñóLBÜ5µ]Í‹z—îâ¼Î’ÊA‹Ä#zR,¡\:¹FÏíG4ÊkWä`Lï›2®³"·»ë•íŒ©¶{Hƒ•UÇ=pªe•Þ|:g”#ÅŸÎ[šaßǸ¬@üœÄ¹*üê¦(õ€.@Xül§iYÎH¥93•A¼-ò{ûÎSV?XT¼ÝÚ%«Re'Yžl›µ—p÷âVk8W"¸ÜØ—ó¢ÿ®¹-ªÇ4Éôƒt}fÙã}’9eH„!wô½Këäå¡}âx ÐGQ!B·—Ö@G–9~¯íLBÿ®ÓMÜlá$F˜sN")f9_uú
œ”E}V8xS\ø‹Äsòº·Š½Š^5·q–Ûß*sÇujgÆôζpð:}®)µ;7ɃÅÕ¹$’HòV§2_'èïôeDƒÏIá€ÚÁFvƒ¡bs—åk½Y5¶C™C:]c{X«®ŽLke „ƒqVŽ›ºØA CgñOqe÷LÒªÚ4[4"ᳯâ•Jbw€»Tÿ2w>»V¸_gý¸µˆ^OŸ·Y’ÕàO„àÌ%[´I*‡ü=OÀV9ƒ×ºSôŠT0!_í®L¡;¬ÛIBÄ4”©Ë#uÖ‚æ}”/³‡]G‹Òrçû"…@XÉWDzЈHºg*퉼.3¨-&š’ªMß»aÕìvq鬩Rz>g6ÍŽ²Ã¡ÈBÉ{…ê;eØq):{HÉ7ô}•iRå˾n2 BV®Eh×'ZªˆÕ»x° Åt(Xé)Ž! #!ÆôÝϸE2ô-RU¸Mu¡2#WÈí62É4©³/&ai -‰ ý«WÐH’QÄØ°7?F”!E0ï‡Ñ~×>çp·'rлß,VŸo–Öi~ž¸Ùül¿Áýï¯Vƒ:j½¸Ÿ|íʨëvê¸nªa&"Cÿ~[Nß+ÔØm ^P>eU:NŽW×±c#õv±°/Ÿ¼½9cKJïãÌpËà9ëõh–)Úíc³S}Ï—`Œx3¾¿\~°›(§Æz—åÚ྅KË7éÆ‘'Ž‡OqÞÄÛu ¤#(»â¤—0˜@¿>$âüóêû«›SX·¸Ì¡^䩳è픳ÕE‘WEYgÍ®]þJ gçRÐö‹òl~ÀŸ‰
}…ŽFHÛ¡,]Â9Ôaè{0ÙwY½ÑÐ<Åî1Û¦F€í=(•]>î÷#®·Ù:«ÛÎ6m¹7
4ªu»^ÅöØ×m7ÆƲ"nó¿¿|wùá*Æt«6š_©õ·á•Òä‘PV÷üP÷ÿ +‰ ý«WÐH’QÄØ°7?F”!E0ï‡Ñ~×>çp·'rлß,VŸo–Öi~ž¸Ùül¿Áýï¯Vƒ:j½¸Ÿ|íʨëvê¸nªa&"Cÿ~[Nß+ÔØm ^P>eU:NŽW×±c#õv±°/Ÿ¼½9cKJïãÌpËà9ëõh–)Úíc³S}Ï—`Œx3¾¿\~°›(§Æz—åÚ྅KË7éÆ‘'Ž‡OqÞÄÛu ¤#(»â¤—0˜@¿>$âüóêû«›SX·¸Ì¡^䩳è픳ÕE‘WEYgÍ®]þJ gçRÐö‹òl~ÀŸ‰
}…ŽFHÛ¡,]Â9Ôaè{0ÙwY½ÑÐ<Åî1Û¦F€í=(•]>î÷#®·Ù:«ÛÎ6m¹7
4ªu»^ÅöØ×m7ÆƲ"nó¿¿|wùá*Æt«6š_©õ·á•Òä‘0:¬&îù¡îÿ:ê#endstream endobj -2546 0 obj << +2555 0 obj << /Type /Page -/Contents 2547 0 R -/Resources 2545 0 R +/Contents 2556 0 R +/Resources 2554 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2556 0 R +/Parent 2543 0 R >> endobj -2548 0 obj << -/D [2546 0 R /XYZ 56.6929 794.5015 null] +2557 0 obj << +/D [2555 0 R /XYZ 56.6929 794.5015 null] >> endobj -2549 0 obj << -/D [2546 0 R /XYZ 56.6929 751.9581 null] +2558 0 obj << +/D [2555 0 R /XYZ 56.6929 751.9581 null] >> endobj -2550 0 obj << -/D [2546 0 R /XYZ 56.6929 608.6139 null] +2559 0 obj << +/D [2555 0 R /XYZ 56.6929 608.6139 null] >> endobj -2551 0 obj << -/D [2546 0 R /XYZ 56.6929 322.9834 null] +2560 0 obj << +/D [2555 0 R /XYZ 56.6929 322.9834 null] >> endobj -2552 0 obj << -/D [2546 0 R /XYZ 56.6929 258.3082 null] +2561 0 obj << +/D [2555 0 R /XYZ 56.6929 258.3082 null] >> endobj -2553 0 obj << -/D [2546 0 R /XYZ 56.6929 193.633 null] +2562 0 obj << +/D [2555 0 R /XYZ 56.6929 193.633 null] >> endobj 882 0 obj << -/D [2546 0 R /XYZ 56.6929 153.54 null] +/D [2555 0 R /XYZ 56.6929 153.54 null] >> endobj -2554 0 obj << -/D [2546 0 R /XYZ 56.6929 120.0237 null] +2563 0 obj << +/D [2555 0 R /XYZ 56.6929 120.0237 null] >> endobj -2555 0 obj << -/D [2546 0 R /XYZ 56.6929 83.956 null] +2564 0 obj << +/D [2555 0 R /XYZ 56.6929 83.956 null] >> endobj -2545 0 obj << +2554 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F55 1321 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2559 0 obj << -/Length 2597 +2567 0 obj << +/Length 2595 /Filter /FlateDecode >> stream -xÚÝZ[wܶ~ׯØGêÁä£bË©ÒZV"µÉ©ëjII´¹¤¼äZQ~}€ËÛîJŽšö4>'áÌà›Á\ e -ÿØ"V„ŠD.¢DE™Z,WGtqk?1Gz¢°OõýÕÑwoE´HH¢¹^\ÝôxÅ„Æ1[\e‚“‹‹Óó7g¿‡\Ñà{r*Jƒw'ç?ùÎ]'<8ùáôò8dãˆ5tšç'ïNß„¯ÿrúú¯ÿ|~züñêÇ£Ó«N³¾öŒ -£Ö—£é"ƒMüxD‰Hbµx€JX’ðÅêH*A”ÂÏ”G—G?u{«öÓ94”ˆ‰Šy4gÆH¢à¡¢ËǪ¾oŠf¼
ú` ıžÍ -ªœÍXò8—â«a4 Åôm|1Š‚“,+Ú¢®Ò²|<fŒ™m –ØÝX&÷÷ea¼Ã²j×ŲÓÙ%.”ù×¼lpúúŸY~“nÊÖðãÆÕ2Ç‹„ùÊ cwH‡;«7í½AU08TEYâè:Ç'8w†£´qÏÊ=—í&uÔˆ²uÐ0<˜þëëÇ—àL P¨±@PŒ‹He/}xð‹=ÿ†õ*6Pû64 -[J³©RפÍÔf‘†Ú4ñ~h½`i
6
^†Ñ–˜*êÊv²W3ì%DÚ8#î¡ÑNú)ª:±®qš²…òHƒ3k6쿲^¦»Ô‡ÆHI¦ö0–$‰™ì©kÙÒ²®ð}¡ à3i"!BE}ÆXt—šÂdGL°Øg*ìíݪmw±Ø×Ý/ñÑÅÐó§5‘lt#¤i½L¯`|éݯ8ƒ~´Ä¦?kú“7¶ÑZÓ™šé|×îþ›c‚TÆ—®¡ÓAŠ¢ -½Ç+L‰–Ó¦
ë›Ð'ÖE¨Ì6™ö?Ц´&
7Æ'] Ú“ÍÅ<›{—YÀ—÷ Ú* ƒewcD-NÛôÔÃÉL>ÜË»þº…Ì×Ú÷Qá6Ýuñ -YVÀ±pJ™]A:V½û-áT÷GG ¬endstream +xÚÝZ[wܶ~ׯØGêÁ•—GÅ–S¥µ¬Dj“S×Ô’’èpIyɵ²ùõ` +<eH"NÃ!ÏõO_„”Œrçì+„ +[7Û"›;GÑßõ‘ÁlòKóu¶lªõv‚©’$àŠ
™ÞYȧÿ„oì±±N!ÁèØÿòmÇ~ „ÇÆ%Í[×A§²GÆ„qàúõÙ£Ëb>{´TìQA¼éüñYC1-‘úº¬ñúȱíÏÉB¾ˆB¨?‚°ïS/eYùÿõÄsìD±>2¿£År,7(%2Žø0î4³qGþÿGd;šŠ½"¡ò+<k²bèœ=ƒ/dD„A¿˜èÃþÁç’ÄT'QBTÐß¿9¿~ýóÅÕÍÅûËö£Ý¦¾RPm‹éº?àÝ€.‰äa[›kÊZ÷eÂk2=^½-›äwœLÊ'ó²Éî×y³Åùêήã*&=ñ/Jy‘A;' ³»hpò1[ë˜6ÚÈÀ¢§vrH/©'ôЄ1ÎÜFÏ í|É9Ôx¤Ó*ÓÌ#é==d%ŽŠ*Ióò^¿ ª¢Kƽ›‡¼ÆµUò[6%ÁÑ»"‚>ä±ó¤MÝm +ÜÀÁù¼•Ê¢ +óˆªÕá6Óô,òìâ²*õú½ñ‚Cq %@°Y#[hÀÿŽÀ¨Ž|”Ö"Ô«³õ—l}JL»‹H ã™z`¬|¬g;ʈ-ì’¯ò"1Ê3¯©&v‚q?dЙr\^iΑw»ip¿¼Á’â)ÙZÒÍêÑÑ3aÝ!O5¸MV6Ž ²ß[ñ³¥C]ÀÆR¨>ê¹6xª/¨²FÔã +u Šq©ÌE÷~1ç_³^%åÆ +X?åu¦±èöx„K]9w£¼ÅYŸ‡³¯6ucXãV7ukZb‰Ñrý¹æ¡ªÝ‰ìŠˆ§·=ÏS(1¡,¡$ˆŒd›l(Ù¬ípÈß…ô©”%(×Wbq?g½7éêzt}g{ )+ +!§îmLºTî¶mܘ´Tz_?nCºƒ`¸KG4±e/„Å:Õ`Ëó2¹-¬…Òìvsq–Ìi.tE°_ó.Õ¼æ-•ÑüaNó½[¶š·œÒ¼·åd”fçf°©“{ç®›Õ*Yo;—Ög³ßóf +ˆÊY:oÉ¡²âê€1:T{Œá¨Œ1ò cèEúôž) Ç ¡’ûåj©&ë™z~ª-Гì +[S€VBŸZÕ¯¾ÚúTöº_½€íª.)£Ø»ªê:75€¦ÔzÔH•Ø&m¢6¨Mcç‡ÚPÐÆ`ãàÅa¢¶l‡!{5Á^B¤b1àîk)á¤Ïì@U„¬mœÆl¡< +À™Öï4¿¢Z&sâCc¤$S{KGLvÄ5ìÉYW¸¾Pð‰4¡Â.ã,:'&‡0Ù,ö™ +{s?kÚ],ößµwJ|pyôüùF%Üé[/Ý+h_z÷+Î -±éOëîäiô€Vw¦zú_«µ}…ÿ¦˜ •ö¥[èt"/}çñ +S¢á´iüêÎw‰uá+&ýþÚ”F§áZû¤
T30™\Ì£¡¹ç̾,¸ÕTI,Û#jpÚ¥§Nzòé!_>t×
d&¸V®òwé®UÄy +˜4Wk†ƒùŒ{;1VI£] +²…Ö£Ék¼^tÝŽÊ´‡¼H¸·"¡Ù‹Ü›íuo´ø‘=ÛÖšŽöÁÝQÕÕ*sN“0Œ¿lÀM>orØv +8V(SñPôö÷cÙÿ
ìsCendstream endobj -2558 0 obj << +2566 0 obj << /Type /Page -/Contents 2559 0 R -/Resources 2557 0 R +/Contents 2567 0 R +/Resources 2565 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2556 0 R +/Parent 2543 0 R >> endobj -2560 0 obj << -/D [2558 0 R /XYZ 85.0394 794.5015 null] +2568 0 obj << +/D [2566 0 R /XYZ 85.0394 794.5015 null] >> endobj -2561 0 obj << -/D [2558 0 R /XYZ 85.0394 749.1077 null] +2569 0 obj << +/D [2566 0 R /XYZ 85.0394 749.1077 null] >> endobj -2562 0 obj << -/D [2558 0 R /XYZ 85.0394 598.1922 null] +2570 0 obj << +/D [2566 0 R /XYZ 85.0394 598.1922 null] >> endobj -2563 0 obj << -/D [2558 0 R /XYZ 85.0394 456.267 null] +2571 0 obj << +/D [2566 0 R /XYZ 85.0394 456.267 null] >> endobj -2557 0 obj << +2565 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F53 1313 0 R /F22 961 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2566 0 obj << -/Length 2888 +2574 0 obj << +/Length 3016 /Filter /FlateDecode >> stream -xÚÝZKwã¶ÞûWhÑ…|ÎÁ“ - Ê3Ћ€÷Ô<3‚$!À$™FÞ3ê† .£³ÅÚ¼èWo…èqj”)–Áä†c]ï·y{¬‚)¢œÎúKž˜‚ÑÞrKD)hb ÙíC±,×On[ÚMá^;®×Gÿ]ïüèWŒiUÀþ2{Z7My_
fhÜM¾¿$j^8´E9Gã …_)åmñ¯Ö\=wÿ¨FXÀ‹^ëüPµ0$~¥Ý*±ŠÐHêî0ù>[C"Bõ¼è Òh“eúTz\P \*oP!1.ù¬0¤±PÓ¢E®„lC´(¤”$Cá"Z˜âL±ˆC4h14ÿ‡öáÐ:¢Ã‹£7f*C(V -L ¹ú» %âRÉõ¡Øì&6™„HÜ4»Å³Ý͆$HB‚ç²ìÖ$Èü±l7fDƒ©‘¾I9Â:/«ƒ7K0 -1Ö†ùÀÚ܃ÆM7á¬%GJªþ˜F$_pp5 -Á‡‚]8t8s؃kî.Ùœ!Û=s´u±oܽÅq÷×+Sâ!÷÷<áIˆ†w<b(pÊL}ù3D˜ÏÄ#ìÅ㹞|<×ãX&r½A&$¡’r™=® d.‹ÌÝ%D“rÅ„èT®TB4«+1³.÷’Ì×5÷7·îzâu)£Ñëãu
-z]C4hµŒEáù†à¼®¡D¯kÈÇ^—aѯ[Yðºƒ&ö®æ§ -.G߀Ò^ {gétä(Ý[‘yyÛ:¶5€º9€k[xϹ -ïèìyð·vsh|d= -Ó˜Ø&ºÔ¡‰#×D—*6Ñ¥öMt›è@ˆMt—þ¡‰.ƒIÉhF0êšè`ÍÙü]ë—¨šº'Š`vøŽ¡É¿Éÿ<îño‹|g•h{úÇgy!Å;>ô+̡ʸ%Æ·Huƃö¸&<hà²ôö‹JÚI¹bI{*Wª¤Èz-Â÷ùàš»Ëí—BÌÿánN.â¨á<6Áìþ.bÐp±2µ¼
—Ìœ1¼`Ã… -ÆŸÝp‘$:ÌÓ†‹|¼áŸÕp9[×™c¢%›FgŸk‘Ë¢³M&¾„Š „U¹¿`2þ“ºd’éiá"WBºa]ǑЊŻڸxbL˜a.ḀB0ËRò\¦Ø¡Ìhj?©MžÍ¨Ü-«Ãªp70‘þ g -7úT)„ÍÇ+ªìœUf4LBšÞ™‚°å’y°Í›¶Ø÷™Üø/ïn®¾ûñ͵»;B¦QfêL:̉ëýïþÐþ.ž¬‡«ÇŽõQXí‰Õþ²êàË]BeÃîÒAËy¬SJƒ:¨3ÅQp%fçŽÞû\ãàŒ\œoŽ—Ì 8bͦ—L‰%GÞAõ
—| Túó£¨Rÿ™Ã®ÞÙÒº—ÓŒîb^=æO~‚X»šêÍ@øGŒ1öòÍ"’9s(ÐçšØªÀe·ê§/:®š”+WÊ•<®ÖÄBÆÛÄÂ͈àºôI––¾$ +xÚÝZYsãÆ~ׯàCªBU-Çs3kÎ:^ycÉñVl?@$¸D$d´¬üúôœ88 +aA</x•¯³CÙÀ¸•v«È*B¡TµÂäûìql"©ãEG +!ˆñ”ŸÀ +C +9-ZàŠÈÖG‹DR¦¤/\@“Ü‚IТ‰-šænáÐ<K´x±ôZO¥ ù + + î˜ÉÏÂ#ŸÀc‚KÅ3ñ»Gñx–§Ïò8N‡!ëµ †B9Ì–i—ŽÉÀr÷¢<hJ¨ Ë‚ºBµe%cÆÙž“¹ñ·úúæÖþù[Êhð·šAû[MþV5N
cž[‚Ƽ&X«)ÁßjòÐß2,ºµ*óþ¶÷d`éRb~)\§Hqñ +Äke>ê3<ºPÿÿ©W0`I2m“]®q£\Æ*«Óe<ì¨ÖÒQ!¯‘–`5-\àŠH×#ÉA=ñ~:Où|_4Ú¥3âê9Æp[®3“Ù˜wàÝ·…H%SJ#ï0X˜§HRœ¶Õ/ØÌüÝ:2%+ŠŸž6^Û'E›8 b³DÓÐ +æ™"‚
«„T±´/Y›’Iå:y +;aÍ4ú»÷tçÏ]ÇF¡éÏ©² D[úùjË9ÕI"‚y¯:8”åxÛŸs6Þ÷×KE±“`$ +
nàÚÎs®ü;Z{î=Ölµ‹¬ÀL«âõçùªhœ"ˆ{kl$uq7Þ>Çý¶ü3rO± +Ó˜Æyª|ãF¶qžÊÐ8O•kœÃ ß8BhœÃ¸púÆyêM*
f£¶q¾`*™¿kÜe]uD1 +DzÇrEe{‚µ@}×~p endobj -2565 0 obj << +2573 0 obj << /Type /Page -/Contents 2566 0 R -/Resources 2564 0 R +/Contents 2574 0 R +/Resources 2572 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2556 0 R +/Parent 2543 0 R >> endobj -2567 0 obj << -/D [2565 0 R /XYZ 56.6929 794.5015 null] +2575 0 obj << +/D [2573 0 R /XYZ 56.6929 794.5015 null] >> endobj -2564 0 obj << +2572 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2570 0 obj << -/Length 2199 +2578 0 obj << +/Length 2008 /Filter /FlateDecode >> stream -xÚÝY[oÛ:~ϯ0Їu€ˆåUÓÄ=›³m’“³´}PlÚbK>–”4ç×ïð¦H2mXìË"@4"G3ÃáǹÐd„áŒR0“|”HŽ&b4[ŸàÑæ~;!Ž'òLQ—ëÓýÉÇÏ,I$cîY)ÂiJF÷óoãóÛÛÉõåÕ¿O#*ðø:Æã¯ç×ç_ìØí©¤ãóß&Sxe’ÅÀDˆæ‹ñøúüëäòôÇýï'“ûÖž®Í3mÌŸ'ß~àÑLÿý#&S1z…Œˆ”t´>á‚!Áó#«“éÉ?[YóiÈ‚¥H¤4 8’,… =/‰bF™ñÂÝäþáîÚ®÷SBåøüˬVf¾w"E”#É 7ÙZÍ£Ù“š=ÿUÊ}@»^ç`4Óvjþí)IǪn¶Eeµe…}ªŸym©ªÎêÆÍ–û$ö‘»Wµ5rÊc{UV®}›«ZÍj5÷ -ÈúIm_óJ¡vuïDÞ܈¶«œN&öãó/Ó›ÀCNùŽNá9³Ÿv<5+‹EgÚÈc²#p‚I¥sÚÝççÌD@=pS.¼‹CÁ¸”0ÇðéêúÒÊ“nUóu^äU½Íêrk‡îÔÂù´˜9·~ÍŠ&[Ô“8E4Žc'>ìW&J ‘}Çž?Üÿýæî¸G¯ŠZmå2}«jµv{QU¹ófý®öÇÔÉa€ó” »t8º§ÁØí‡þÄðp‹Xžk˜ØcQŠâD²÷=¶|§4±TßÌy¹Îòâ}÷¼Õö\ð€î(7U^
ÃK1‚ÁA×Q -‘†Â»©à@ã%FX@ü‹º"L¨à$/[®Îºcðà·ˆÿðTÜR3»4Áº{„ ‰CˆÆ¾ŒùÊ9º§6(Œ;ÞVî< —¦b!ë\=6Ëh¥^Ôê×ÅNŽŠUÅ2/TT´°ø±‹Z‹DÙ˜¢v£í[´l9×Àá¤üy]¬²e@3œž¤d¨¹8º ³MS…J”¦‰ -ܸó’Ç$xÇ5UKM’ûþü°Î~FU9{Ù ,I -)PÌÛp>Ë ©ì;LÖG²»œÐL!® <Ìy—“éÅÝÕíýÕÍõ/– 9ÇþÜC,ñ8³K5m‚®¡lp·´N’—×S&퀞 ‡,±7@ÏLéRA?!½[¦9MIû˜ë—?6u^:[F8mWÓd©Ï:
jb]ºÂÂf·šÞY΋E¹]gV¨)0ÜÓ¢ XÁ™ýn2zÕ¦tvÖ’ülP´èŒ|–" ’:òkµÿzRF^Êg›‹Òñk^?•Mmg2cü²Y«¢®Î»HD‚Xšø̽w¡üL°Ñk¾ZYùÖ7™SíÖ+!/²fål€Xÿcºl¶‹Ò± •$qÖÆŒªž}4V!3BÕ%$÷˜¥ÝÒG§5 Ž6ªköð›«)‹¼Î³•KÙY
·`°QnO¾>ú³QÛ\Uèòø9CÓ.Á%a*bchTfê.—/êw3uË¥õF|¨R2ÄXJ«ôL•]ÇCň}••Ã÷Õí÷§aå
y¹è—ñí y*+W3!˜A¶u|îŒÌ²Mö¸Rý– +xÚÝY[oÛÆ~ׯЇ#æfïÜ}tb¥ÇEâøXr[ Í-Q‰TEÒNúë;ËÝ¥Hjm(úr RùïÌ74cøGÆJ Ì4Çš#‰/v#<^Ão?ˆã‰<SÔåz;½yÏâ±FZR9ž¯:²ÂJ‘ñ|ùyruw7½½¾ùý"¢OÞ¢‹H`<ùxuûpõÁ>»»Ðtrõót·L3 L„>‰'·W§×_æ¿Œ¦óÖž®Í3cÌŸ£Ï_ðx ¦ÿ2ˆi%ÆÏpƒÑšŽw#.œ1ÿd;šþ× +ìüÚ¼Š + Êå8)LÃÂp<Š9ARëc ( Ês™@ý1ݦy²K‡þÊcD»ROt·\å´£œPa´¯}¾Im6ªXÙkåú«ÈemEÆÐÆ5È—‚ñçˆÆL#ÆQL‰‚ûéüáþÖ¾üë˜0¹úð +Hˆ×á9+_7·žÙtj_¾ú0ûð1”?°À +þ#—ÇĹH-Š|Õù¹‘Çt· õŒ(í‚vÿþf" ¸)>Ä!`œ"Ì1¼½¹½¶ò´ój¹Ëò¬¬IUì£ûtåbš/\X?&ylê‰TˆJ)øp\™HSþÝÀ^=Ìÿûéþ|Doò*=ä©«Ù÷²Jw.÷,UVïŽz!‡\R'‡i¤bάëк."‚±Ë‡y¥ááH +©ž[wÄ)$cÍŽ9v§ÒØR}3—Å.Éòá±-ÓÄ6#<(ºïy±/³rØn$ôHFã1Óàd9Ðl˜MúÕ.Ø‘Ðô!j‚ž©ã´„ð}ŽøOÉ–ZX¿ë–X#‰]y˜âÏÖÑ*Ûº(÷´JbÁ¸ãmå.r”±.ÓÇzmÓ§tûãb§gŦù:ËÓ(okâGÄ®¾4u1É„ÿ ùû,ÛçhÝrîÀ°ƒ íëj›¬šápðX‘¡æü¬C?-öuYV± +ÜŸ¸‡Ã’Ç&ø$4eKÍ’ûñüi—|‹Êbñ5d¯Ð(Ž…ʯÎJv€éP¾‡„B âÕ&‹êWQxße‘¸,ÖUÖkŸ»ºô}˜;*O"ýÔR¿¶Ô·€ +-äm/_$0Q^:L6FºëÎI_¦ÐÔ¼ëéìÝýÍÝüæÓíb€@Çœcî¡‘ +9IìåÚ5GC7·¡lg·´™×·33#í×9c#.b1žì(½æ'ƒÌµÁB†°3ÎPÚ^–f¾eu•NëÊb§íföYê½™†ØUØÃì¼éå,_‡]b…6è"€2ðàÒ7~÷ÆyÙÎsvÙ’ür€X̸G~D‘iÓöÚß6i£GƒOÅW;ˆÔä9«6E]Ù_’Æøu½Kóª¼d‘ˆ1û±ýb{ÇØÑs¶ÝZù66‰SíüÕЇWI½u6@¯7Pt]Ú)NåJbŒ8k{Æ›´Z¼i¬Bff„ ¥FR2ÕÅ=f 0Þè Q]kM„¿;@™gU–lݼNªd˜‚-”MêrºòàèÏ:=di‰~`ˆjÎÐìdEr#˜b³¬À¤~uNw¹^ÞVZ.£7âC•šÁú¡èë*=S@e7ð°@Â&#ú*JWß7wOÜŸ†4Ìå¼áÛ²)J˜vÐÌ2¿ÃdîŒ,’}ò¸ì< B¢Pk”©Uì;¸Â®šƒÜN“é@)Â&b_‰‘</¦»€ìê +rëú·Å¶.³'»p„ª€ÄÆF,^¯‚.×ËUÐr
UÁ«*Û*8Uª‚žÊnÈ¿ +øÿQp†0ÕòLt¸^©ÏÕîQ¹èŽeD„Ayï놄~JazÕ¾–+``W”c÷-4E +c€XªÒFzc«¹TÞ8`‘¹}T§–0æt¯‰½ì‹²ÌƒH‚2Œ4Æ2ù{!ËŸƒbïÊÃꮶ +X endobj -2569 0 obj << +2577 0 obj << /Type /Page -/Contents 2570 0 R -/Resources 2568 0 R +/Contents 2578 0 R +/Resources 2576 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2556 0 R +/Parent 2543 0 R >> endobj -2571 0 obj << -/D [2569 0 R /XYZ 85.0394 794.5015 null] +2579 0 obj << +/D [2577 0 R /XYZ 85.0394 794.5015 null] >> endobj -2572 0 obj << -/D [2569 0 R /XYZ 85.0394 752.4085 null] +2580 0 obj << +/D [2577 0 R /XYZ 85.0394 699.7547 null] >> endobj -2573 0 obj << -/D [2569 0 R /XYZ 85.0394 692.9368 null] +2581 0 obj << +/D [2577 0 R /XYZ 85.0394 640.0922 null] >> endobj -2574 0 obj << -/D [2569 0 R /XYZ 85.0394 633.465 null] +2582 0 obj << +/D [2577 0 R /XYZ 85.0394 580.4297 null] >> endobj 886 0 obj << -/D [2569 0 R /XYZ 85.0394 597.1647 null] +/D [2577 0 R /XYZ 85.0394 543.9387 null] >> endobj -2575 0 obj << -/D [2569 0 R /XYZ 85.0394 565.0591 null] +2583 0 obj << +/D [2577 0 R /XYZ 85.0394 511.833 null] >> endobj -2576 0 obj << -/D [2569 0 R /XYZ 85.0394 530.4022 null] +2584 0 obj << +/D [2577 0 R /XYZ 85.0394 477.1761 null] >> endobj -2577 0 obj << -/D [2569 0 R /XYZ 85.0394 468.0086 null] +2585 0 obj << +/D [2577 0 R /XYZ 85.0394 414.5918 null] >> endobj -2578 0 obj << -/D [2569 0 R /XYZ 85.0394 387.5913 null] +2586 0 obj << +/D [2577 0 R /XYZ 85.0394 333.9838 null] >> endobj -2579 0 obj << -/D [2569 0 R /XYZ 85.0394 286.2765 null] +2587 0 obj << +/D [2577 0 R /XYZ 85.0394 232.4782 null] >> endobj -2568 0 obj << +2576 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2582 0 obj << -/Length 2820 +2590 0 obj << +/Length 2767 /Filter /FlateDecode >> stream -xÚÅZmoÛ8þž_aà>œÔ,ßDJ¸Ãi›-²ØæzÛ·Àî~Pd:Q+K®%5íþúrHY²e»‹tq)PSäh8œ—gfh³…l+¢RžÎt*ILY<Ë×tvk¯/˜§Y¢ÅêÅíÅ󄞥$U\ÍnW^ ¡IÂf·Ë_£„124º¹|sõj¾à"*º|ûöêæÕõ/ðS J£7—7ï/¹·ó”G—¯¯ÞÍ¿ýñâ궗g(3£Â -óéâ×ßél ¢ÿxA‰H“xö”°4å³õ…Œ‰¥a¦¼xwñŸžá`Õ½:¥'$æR6$QxLjŠÍi‘’„sÑkŠ³)M*«©Åjÿ J$‰“ÙÙÁ–hbK>ØR%$Qš·ü¹«P×íƒÁAc¶ŸÍÇÅþâªÞÎY™{÷QwÕç£1-ˆ -F£e³UÝâ`™™u] _Ø·¦W™¦à5±>§×Õ ½*§×û½Æ`îôÌ–hbË¡^5%± {[~'½faà rOŸ•%Êúþ¾¨î=»Úžóùr¨š£*ŽáLV°¦]šíéFÇ1¸GOvÔHJ+ÂSÐùI#
©Ž©§rFZ£P ÂŽ’A¤)™z¡Vev`É4&\Òœ”+MÈ5T£”p™Ê±`·ó”FÝL&¤ˆj÷)£5xôö+ÎuMvop¸4w·ˆ¥úR‘Ý7Û€ÉÛºiŠ»Ò“ú5|ÈÐþ^bh?•’˜ åu€{šCP':hêÙ#E˜ìÙ´Û,?Ê&ùV.[“×ÛåYg:˧h˜F”Q9ä0Ìí«àcUÒ8Æp³qr¸K‰ˆµðï¯óöËÑMDï÷ÁnLãC
Nˆ¶i6uˆÆ¶Þ‹ßëw/÷“Û,‘‚“+I„Pé·$)NR§ý©µCŽ‡NÌcMT¢“ÝÆö\o®Þ˜Â9ûžŽçDL ¼Õc_]½xÿúø)҇K ¦É·ÅYöøytàOV¸àSÿ,šü9D)yøׄÕÛu,Σà$Ö,9ƒvªh¨ÚUShÇH’ÆÁÿ–oºæ -õ -?×]Ù›Ò½|û¾ñãµ'pņ]k6&/À{¸Yzà™C0›{éªlm¦l!Rˆ#)Øh—y±[‹þn`Á -Ð
>uf[ε_
âíg@( ø.wT'ò¬O׫½"~WcçXšUñéÁ¹ˆäFÐ\5©Œ ƒð=cÒÕ “*gÒè„\^rzË@4±å(}¤D2ˆ˜Ñ–ÿkm‹Ö+%Tˆvì+D§Æ6kÁ¬EÞœ(ÚðU’ïjöº›2œH ÀQ,ø‚ùR´ -O‰Ó4ÅC°†K²‰kã¤{ -ù…âÑÕf(Š~ië+ªÝÖ³O3È2M
Æî¬;¸‰ç×k>{UÉfÃCyÆ‹!gw(5JÃ~ -z€™T È`Øu<`é¨Þ´šVûØRÑ:+ªò«__ùµ -Û4->a‰ª£×7¯ð'–f.hôyÎãÈ”5ä¿o55ð¶_ñ%„g
•þºž³Ø¿·gLŸ4ô¨Yuï*5xp.|fø±êÚnkp¼5¥É Ê®Þ*!Àx’&³¡?<ÍÅøŽJ¡Ð_ìîxž -£õª+qæÎä™!KæÎ`gÅNà¡Êί÷ oßrÛ}YL‰œË@2ÏZBãUëÂÖ4Vn»`O%™t½4¨±ò«»³«ÍW(m×HpùöšàìõœE-Jü>[ã
ãwlLë·²Ip¢‰y|°z’Ty!`°DX¦Ú‰¼®¬>î;h<`ÞËo¬ú£&`f·îÎGc{AÁËž{“{§Ø´õÖ¿ío¥öuˆF³Ù·ß<³öƒPÉ9»ØÖÕÚ5…–Òù,~¬\~¬pÚuÏ0Ýt›uJI#ÿB¿ÇØð@[Ù}3ç„XMÉ(iÅøhÿ´ôNþ¦n b(›ÚŽl¨d-Îy£ÃbÞvöHvà\¬q[œÊ`ŸÑÖ0_{oÎJ[Ý8>øQm[š)[;³+ç£åê:N§€¬ -#ƒƒ‘*8¨"Ä -5ýaÞ8V½iJôžù'Š7YÂÿÚÚQnáE~ÿÚmÈùDíƸ&:—nƒ~7UƒÒMûÒM[0ó3…§7ùÐUyxMGEû€#ëJ߉B˜ñ”‡¯ -Ý’3h7(Ô3æjAdž?l!&{g怈|ß—3¼Þl]XáÂ<” ø=!Ìda¥Æ[l-kÓToqÚTÍr#Þ˜¼ î’¼ò—äuãßÀòªù‡-èhÐÂA™d“‚/ü&”D ¥:\.áYí÷üÜ~‰?¡0€•XÒûœ5uiÍÆk…÷6Û–XÁ¸e…÷ñN=öÁ[F¨$À.JsoüË®cÔ6±æÙO% -H¡Åðf"0L¢YQχƒ(}ZÜÿÙ“*HtPk$júg(tìüäŸÆì~û#5ÑŽü -ì@RR¶’Œ)zxñK ‡:´§Hÿ?=a‹9endstream +xÚÅZëoÛFÿî¿B@¿P@´á>ø8‰¸—¸¾ÚA´ý@K+™g>T>â¸ýÍììR¤DI9$Àµ@8œÎÎÎÎüfve>óá>B&"™E‰bσٲ¸ðg{ÁÌ -†Roî/^ÿ(£YÂ’P„³ûõ@WÌü8æ³ûÕïÞÆ9›ƒ +ß»¹üxõn¾2‘¡wy{{uóîú7x|ß÷>^Þ|ºü@¼Ûy"¼Ë÷Wwó?ﺸºïíÚÌ}‰ÆüuñûŸþl¦ÿtá3™ÄÁì^|Æ“DÌŠH()'¿¸»øw¯p0j>ò +b‚7bRG<ÅYÄ9E2Û¢ÞQ‚O9Ê +¡ŸW¸Ì×?Á@\'ØeDt¹ÉJ½(ÓBﻄKŤâÑl0ïq½Ð¡ub8©L˜rdݧFÏÀôR|(oY¿lÛŠXi=ç±·z¦§üÃüŸ·º¼»û@²ØœT¬«šÚGûÉPiµÕuÚfUÙtÖ¿é¶Ûªn›Wðª„Q® +Åé$JÏ¢^ʤÑzÊP²8âÓS:¡‰)÷œ‡OùKWîy®Ñõg][í®mˆl(²ºrE|L˜ŒaäHî{«ÞŸÖÁ«TU™ým2è¸_gBÂBNûu u¯NÊøusà× +FŸ¿×wo÷S»I2€gß_Óé –ïOõy§p1Ôxĺ‰0ŽâÝĸ®WŒ%‚OÆs&Æ!ØL|wõæÓûßà?WRlz˜¢›e=èUŸ‡@ñ„ƹ˜úGÖ,_C–²ÇNu˜àò,ÚØ/ó$:vC©ãh×K´+ÏvÌ?,·]s +¢`lÙ[Švl''š7\²Šö-ÜÏ~É|»JRÏUý„…Orl—öâW&“Ì@ú¤‰“®>§eK€ +Õšžt~Ù6·Boo?5öÔumL³cÍV/3ˆ¡WxFÛ!9ÖÃÞ:ì§\È#%ùhž3Sy±[DC + Í*à‰«°wj›¨|¹ýÂí;©˜Œc™k`Ìö«]ÍFˆ89C©ãÙØK™lÜžÍFwš%£` æŒ]Nh®a¼A´©(Ù³ëCÖ´ºÜu€†ø«Óu¦-0VvôÈa‹C%v©¸“:Qgm ¼^ï5ñ£¼‡=™Ypn&*Ç·/JÅg.$†R'¶ÔI™-=€ÎP1%e|zJ'41å¨|$LqȘє¿Î#åÕYkâ:D¤m‡hÜئ-lk¶lN4í\ +ïêÀ3!K"hú%lªð)?gÍ J¨$‘$4 ÍZw>0Œ××…˜½«`E³á¢¬âÅP³YT8*Ã~!œ`7 ¥=u<RE^µÅ«$¢‰zEš•ù‹_Û±[7-½Q‹yo®oÞÑ7 1Vz.}ïó\žÎñ¦ÊNcšèFúˆà9‚N¿¨æ<°ßÆ•ƒJ£Á§Î¨i¹1¼˜“.<Sz¬»¶«5ѵÎu +]6h=ˆV…‹“x6Œ‡o1 ±&Ðè/v¥ß– +dVß~ò÷R
,°ÙY]•…9¢¤‰|*M~.‰mNÏÀ¦_[pRÏ~ÐÏ1Þx-qF{˜3F¬§<(‰f<á?ø{ uò7Uk¶:†¼©ÂTI[âÙM‡ÁeÛá’pÎ +š–Cðöø•æ4ÇîÆè¡Gžµm®§,5ÛªÑÎgÔjNœÆié(MÄÈ\ár +«}=ÚhÂÊÝÆÚQÖ"BHCˆRo!üˆÅ +ÊË8|L|™nª‡+ì´ÚƵ\-»=SÈêεYÚòuêÿÞgq.X„gú¬^ÊôYíDŸ•0¯ûí1«õ²ÅóÜ~—íPÈÃÂÉ.ËIMX7.k +ª|,Ææ½¥Û“ÊœÄE8Ýáí§É”½{“€|;ÉtMázé.ªÂºH¿) H,«¢ 3¼ätA„éc¾ÙtˆUæ2Hr†>h÷ý»K Ôn"ã.‰ý½Ÿ¾û{…F§îäÛ¤aÇþ°Bx‚ŸÚ¿o“¾ù.vU¢"Ñ{ì¢; +|:£pq<‡—!>ü endobj -2581 0 obj << +2589 0 obj << /Type /Page -/Contents 2582 0 R -/Resources 2580 0 R +/Contents 2590 0 R +/Resources 2588 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2556 0 R +/Parent 2592 0 R >> endobj -2583 0 obj << -/D [2581 0 R /XYZ 56.6929 794.5015 null] +2591 0 obj << +/D [2589 0 R /XYZ 56.6929 794.5015 null] >> endobj -2580 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F55 1321 0 R /F53 1313 0 R /F62 1361 0 R /F63 1364 0 R >> +2588 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F53 1313 0 R /F41 1218 0 R /F62 1361 0 R /F63 1364 0 R >> /XObject << /Im2 1350 0 R /Im3 1515 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2586 0 obj << -/Length 2480 +2595 0 obj << +/Length 2428 /Filter /FlateDecode >> stream -xÚµYßsÛ¸~÷_¡·R3‚ß ¦ON㤺Iœ4Vz7sw´Ùl$R'’¶óßw -
BŒ¡œ¦ÉõåÇ«·Óß?]\-:ú>3*Й?.~ýNVàúO”›ªÉ#¼P¬å“í…T‚()DÛ³¹¸¹øG§°7ê?‹T)Q\êÉLq’R>(J¨‚‰ÏŒdD[û(ÎÆÕJa f
Îóõ;¥z’ˆÔ*pÌ‹4•ÛƒqJR©&}‹G~µB#~ñ¾5®HÊõc7®nò,,S]F'Eï3ɉ‘Ö8y ›k’2›F¡l]ƒ”W¹,·»«óâ.¼ïöùC¾qw.š,wnŸÕyYT¯¦3AyR5Ëû0”UøÉr?eiâ¦,ɦ3–ÔЈêDR•Ëoðîê([ßguøz“Wµ+¢‘]ö™.¥µ1F¬RÜ;;ðvWîëŠ-…ÉB~hÈ~©™ù3i)R¿SÒñ´¤è†&"Uì´²ð!e±Ù}2T6ký›©”j´îç@7]L9E4—f¢!\0ácpÝ[R¥%ó’”(Áe\ÒOÓ™fÉþóäê(8 Tp•N4¤˜ÑÔ¢ñÉF(„[©^ÛO÷9¾ãõ|Ë'oK˜Ó¤?Vó¬¯ÚÏKr[ÁS -hUƒ§ÁiX!uò!/¦Œ&ÍÓ«0O=ÈoH]¡ÛÔ-²-$BêŠ(ez» -ªë{ߦœ&>ëUR¸Í_¦JQf™í²Û|“×ßÃûÖ-ï³"¯¶øjp×ùîվ܅V¶Ù„ƾ,똺r÷ø0uaC¨$æ/ZÓ¸QMž–nW‡÷ࡶɳطºìW.&ä„äq–·y±ú*Ê቉„˜0ÖfˆŸhÎÂcèÛ*¸ -šê8綪sv(å,Š”;¬nAgY€~vÜ`Á¤f¸ž˜¥eÜ7\Nn“Ç{WŒdÒD2+_ÎZ‘ò6·ó¨2hpsð‹£ï=Hà0È l§4 cØ·É°º+HH–®D‚X;Ûí3·ñ•'îUP6TMMRå®0âhÀ}È˦ -Âöbï -Á?(Ê:ôÀn*13Ãëñ¦NŸ¼ðÑï{WgyáÓ5x<;Î:LÎÊCé¹LèSøG 0K´€uîñ‘‚N<jöL~¸ -uUÊÀ•ûí¼YœãÍ}Õgx³ä -@Tt逾Ðûf~ý6´lx¬æOáÝŠ•'tÈB51i²ÍPü{xA¿ð¹w[ÿAK”DÂO$âwmg^„gë¦nö’Ë*æ)Ôî'Õ¥éÿ³™/
-Î1‚ȹ¯U
û]èèŽù -;oã—˜V¡åk<—eQ›ðM(P0‚4¸r{ -=»vìfqU»luÀ8^°@Oè4|µBq5þþõóñM‘"p˜ÑgvBÇVUAP´³ïJôeƒKánfÓÖh„õ˜™œ“N‰/D©“9¤ c4¿^ >EÆ‹«/¢f$và:™#'13–›¨ïÅ}ÑrU>çMn°d3 ¬±»~ «Û@W®X…ë0Ï«¾ÇQ0ÙØóVCë帾G¡¦X¹ß(å…©}X#`ÓIRNñçoŸ®ßÍßýr‰á^Ì?]¿\'íáz°ŽÌâµäÈMÌ@˜¦L·wPÐÕ»&”<¯‰{6þ$'A_]–¡n$ŸÂh;W®ZîóÛö›¢í…Sà&´1ž¸o("=JÆëM×ײ{v$—xæÄz¯6ðÈôÃòU{™÷2ÅOR¯w„Txÿر€˜(mÃãrµÍ‹¼ª!e\Ö/n}/ÚÍû1+šl3\ÉÕO÷O¨«•üçÆõär ¢hwÇÇÜßÖ*~âŽEq¨9²u¡ÙfÕ·1½x!ÖÑu<t·«ŽšãqÌ ìÙ–«8† -ýùÜ¿u¼ºó"Ùe1duˆ+ˆ÷O‚éd¾#Álu`7,&On¿!œ±Œ°ú¥LîgEËë_…ä‘ÀØ(ΆéoÍSnÍS•ü«lö°ïCgôñU¸$/œ÷.
éÂ÷Ùƒ=K x>ÐÌÞæUÕžÛüõúø¥'–jûòŠNÍ!²‚!¬à†¿Ä÷´Ûä˼FÚˆï~K¤*.t„}ïÒ,’uspSQºWóª:ëŸa—Å NR½´*‚ÈT¶ =È‹‘Z ÄKÃé¯Kú5óÝüÃÕÍ)<ÔÈÝÙy<|–ñP$Ó<Œ2hﵫ—¯ýŒTÌõ*ΚîdmÁ Æ£zƣȣÊ!QÉ©ßÒ—Q”¦]Ðø÷ÂçD¥!@—ùøL¡®-°¬u -gÊ4;t] )ì×cßÿ
£NúÆendstream +xÚµYÝsÛ6÷_Á·R3Š §OÎÅɹ“8¹D¹»™¶´[l(ÒI;þﻋ%R¢Ôë¥ÏˆøX,‹Ýý-Ö"âð'¢T3®²$²YÂ4:Zn.xts¯/D ™÷Dó!Õ‹Åů”2–i¢ÅÝ€WÊxšŠh±ú9¾|ÿþêæåõgs©yü‚ÍæšóøíåͧË74ö~–ÉøòõÕGèªL éo.ß^½œýºøéâj±“g(³à +…ùýâç_y´ÑºàLe©Žž ÙÈ2m.˜N”êGÊ‹ÿÚ1Ìú¥S:HdÊŒ26™™âZü/ÛªÔk"Þ–GóL±$M²Ó¼h^¡Ù¯³š÷˜hn¬fV®HÊÔ™i-ñŽ`†™ØÈj ˤõ—ôT±'͘6‰ J¦-\,§kœÍŒ?øßøñõ®-ãׇW„Û(©ÓÈrËRymE¿ƒ2‘$ÊS
Ûþü{½ø®7*zYÃ)£áA{Îó!kR#Æ(4:å ’¾tÐźhÀÌ2×mQWØ6q³®»rEã·Ž¾]ãÂH¨–uõ[W-ûe6~*Ú5µÚµ#
‚êö"H™0™íT8ïˆf,fZI !¡¾ŸÍq$]®·uÝÕ=.ÐG˜ä j"Ü*,Ìa‰Pñö^º¦¡Îv6:îª +—ú‘¼Ÿ~Ø’ñªvMõ]KîZçÕÒQ§qËŽ8í3
á¹ñ»©›°¢ynZ·i~„žâ½Ð®I6Š +,3ˆ…ó}ûºà¦ÇpÃ6›¸<tE£Gª÷®(Å.ì¨†Þ õÐK3Âå‚nØKšèh¸ã‘X=Ñ„\#߃£¥Òöѵ]á]_âÕ“j°,‘ÌÂyÀ[–Š,
Dù]Tžå²Þ<”λ³ï?lƒµ…-ë·Í1 +4>ȸé–kš¢€ âåv&ÒØÍZœˆ[hvà‘õò3ô]hÛuÞÒê² +|ñ¬$;ª QFê³´p©±,ë. çª~ªÎ+ Rµ„I‹\ endobj -2585 0 obj << +2594 0 obj << /Type /Page -/Contents 2586 0 R -/Resources 2584 0 R +/Contents 2595 0 R +/Resources 2593 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2556 0 R ->> endobj -2587 0 obj << -/D [2585 0 R /XYZ 85.0394 794.5015 null] +/Parent 2592 0 R >> endobj -2588 0 obj << -/D [2585 0 R /XYZ 85.0394 346.0235 null] +2596 0 obj << +/D [2594 0 R /XYZ 85.0394 794.5015 null] >> endobj -2589 0 obj << -/D [2585 0 R /XYZ 85.0394 208.5535 null] +2597 0 obj << +/D [2594 0 R /XYZ 85.0394 243.4864 null] >> endobj -2590 0 obj << -/D [2585 0 R /XYZ 85.0394 94.9938 null] +2598 0 obj << +/D [2594 0 R /XYZ 85.0394 96.2114 null] >> endobj -2584 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F53 1313 0 R /F62 1361 0 R /F63 1364 0 R /F41 1218 0 R /F39 1161 0 R /F48 1238 0 R >> -/XObject << /Im2 1350 0 R /Im3 1515 0 R >> +2593 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F62 1361 0 R /F41 1218 0 R /F21 938 0 R /F55 1321 0 R /F53 1313 0 R /F63 1364 0 R /F39 1161 0 R >> +/XObject << /Im3 1515 0 R /Im2 1350 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2593 0 obj << -/Length 1457 +2601 0 obj << +/Length 1795 /Filter /FlateDecode >> stream -xÚÅX[oÛ6~÷¯ð£
T/¢.nãv Z'K\`@ÛF¢mu2åIrSï×ïð&˶Ò؆!€EžûùH†Œ1ü‘1P”Òt§!â˜ðq¶áñÖÞˆã <SÐçz½]½eñ8EiD£ñrÕ“• œ$d¼Ì?M^#BÑDàÉböa~ÜÞ}|XÌÞß?Ü,–Ó€ð8â“Ùýý|q}óÛ4 ÃàÇxòa¶ø8{oi÷Ó”NfïæÓ/ËÛÑ|Ù×w€`¦-ûcôéçàÇí#–&|üŒHšÒñvr†xȘ§”£ÇѯÀÞªÙ:'ˆÓ0‚ÐpDY‡ ˜`ŠYŠhÄI¶0 -›çÒa»ú&ê«z¯®”ØÊÜþ¢]‘Ÿ»O18ÁÃÞî!K:®KS(í™B1G„EìÔ–åFÚ$är%öek'»zJ’I•É¦ À.CûŒ1-%ÒF‚d2&¥œS-: a‚Â…=†(g‰‘ý8ŸÛ³÷wvK{a0bMbnØÞ¾šIñRÍœš¾!FQ%°Ms¿¨˜ÇÐþ»âøOˆƒ¼Ð‰Immdö{V©ÕgÌq?ärùÏJÉóåZåÙ9|6©‘M>(y5Ü®\:†QFPº]u+ß,®m²R—³|[¨¢ikÑVµ%=È•´ÚUæªæƒP{Q„ƒD h±ñx¡l<ÓIÙÌ>.¹{yV/7ª•µ’®dM+·¼©TSÕm±ßõ†ˆ…urt½â¸1È,P²ùøZík%Ê]]¨Vo×üe̶̸†c¼àÖºY¶(}“uD};rì¤Pö»Ùo… -lèE.žJǼªêíP`ñYTµkŠæ_`X€ÀRðŠŽ€ƒ Æ?DÁ¾‹‚d -—8nÊ!ÛÒÎú@ìve¡+¡ã‰ºbO}=Éæö¸ƒFÖßdm‹¦/µiEÝz¡bÕz.á6nöm^=;yæ‚oV‹fÉ`,¼>Xš»¸¼òPÝ÷ÎÚ‰)N=rÝ”néØ…0éº8½@Ó±5†Âøé`× $Rå&Æ'ÂäwhüF'Ù”Õ -ÒDßbcæįjèà¤u-eb};7È¥P$.°» -,›‚Ïk›wF0ÂôžÔÿ†Î/v§ðØÓŸƒG†Rœøsò¯‘ŶÍàzfZ!¶ +xÚ½ÛNÛHô=_‘G#ÕÃ\mÏ#ÚµÀB*ÔöÁØânbgmÊ~ýž¹ù’¨´«U<sæ̹ß&dŽáGæ"B‘¤rKŽ&bžmfxþ +¦³ó»÷·7‹‹ë«‰F<Ž¨—$¹YRÐ…Ä]W¬¦ïõ¾×´ªWKûM_uu?SönOßö>²“‰ + +"„ÛAùÒÓg\öã޸‘So’ ÝÁM1K×z +Òç£áR&‡K’@Ó•ä)†#(‹Þ^O+U:«´|˜h“æÊ‚õ@¥¿ù3P/2»Ñl¼R+ô€ ²˜MKRJ‘²›cí»ªlvÛœªäTϽ¤ø â\FºUj¨ÌFܬ2ßÜÂTª'c½Jó¼°C†Þéê©¿¹Z«tép‡ð˜^èêzÈFkIcúð¾(ÓÚÉ£C!m
8t½®žŠòÁ¹ jžSkTö;/ÐÈϯÒNÉ°·ìÃt3²™q=NÔ»ôñ ëÛþªUm‹fHÕÌÈžhºl=Vê.®vm^=9z¦Á7«Óf¥_EL§ÏæÆ–w¾Rµ³r`b‚S¯\6¤;ê³6]¦‘`Ú¶FPXß?Û30‰*scã1õ_¿c¦/‰~aÇ~žG?Ê©¾IêRÊغ';5È¡$Î°Û +$;¬ß<¶1¾£øïËÐþX7ªŽÃzòkå‘Á-ñm*!ø_WB»7¯^ôRïL*Ä6 ‹ŠGS# endobj -2592 0 obj << +2600 0 obj << /Type /Page -/Contents 2593 0 R -/Resources 2591 0 R +/Contents 2601 0 R +/Resources 2599 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2603 0 R +/Parent 2592 0 R >> endobj -2594 0 obj << -/D [2592 0 R /XYZ 56.6929 794.5015 null] +2602 0 obj << +/D [2600 0 R /XYZ 56.6929 794.5015 null] >> endobj -2595 0 obj << -/D [2592 0 R /XYZ 56.6929 687.6458 null] +2603 0 obj << +/D [2600 0 R /XYZ 56.6929 688.8814 null] >> endobj -2596 0 obj << -/D [2592 0 R /XYZ 56.6929 603.9193 null] +2604 0 obj << +/D [2600 0 R /XYZ 56.6929 580.117 null] >> endobj -890 0 obj << -/D [2592 0 R /XYZ 56.6929 558.8956 null] +2605 0 obj << +/D [2600 0 R /XYZ 56.6929 502.4221 null] >> endobj -2597 0 obj << -/D [2592 0 R /XYZ 56.6929 519.656 null] +890 0 obj << +/D [2600 0 R /XYZ 56.6929 461.5895 null] >> endobj -2598 0 obj << -/D [2592 0 R /XYZ 56.6929 484.9808 null] +2606 0 obj << +/D [2600 0 R /XYZ 56.6929 424.1905 null] >> endobj -2599 0 obj << -/D [2592 0 R /XYZ 56.6929 410.2876 null] +2607 0 obj << +/D [2600 0 R /XYZ 56.6929 391.3558 null] >> endobj -2600 0 obj << -/D [2592 0 R /XYZ 56.6929 341.4811 null] +2608 0 obj << +/D [2600 0 R /XYZ 56.6929 322.6942 null] >> endobj -2601 0 obj << -/D [2592 0 R /XYZ 56.6929 157.2444 null] +2609 0 obj << +/D [2600 0 R /XYZ 56.6929 259.9194 null] >> endobj -2602 0 obj << -/D [2592 0 R /XYZ 56.6929 85.4731 null] +2610 0 obj << +/D [2600 0 R /XYZ 56.6929 84.2201 null] >> endobj -2591 0 obj << -/Font << /F37 1026 0 R /F48 1238 0 R /F22 961 0 R /F21 938 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R >> +2599 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F39 1161 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2606 0 obj << -/Length 3409 +2613 0 obj << +/Length 3006 /Filter /FlateDecode >> stream -xÚ¥Ùrã6òÝ_á·Ð‹!‚dÞœ±3™$ãxÇžÊîNü@‰´Ä‰TDÊŽrüûv£¼D{\µå*h -í+mä€aâË8’–x²³™€e½ßfi“ã© -¸`”òfþ˜W(—¡†ö¤L~‚ŒÌú(,µ˜©vÖðä8ùi–Ý»ÖeÛZRãoú̪aw=ì2+BÕÛøéK ÷ü´Ú¤‹oï?çÈÝüÛ:_ìò†–
J€X˜˜—¹>Oíøqì&â‡bO`ÔÂA0hÚ½•—™B_G¨’íÝ!³fjå'È9BЛ¼Ú7Ïî#Ú˜‘û ” ¬± CžºÏ¶Ïcñ@ÆXw¯Á -Þyý,ÖxŒõñîÒ2«6Yþ8…Tû&åé#ó\éˆn–yNò o
Eâ~JfRûI`ÌP«.¯nß|xws÷î—ëvÑPÍávQ4Â~ltè+¡
Z:ôöuža+öšŠ õ~¾)‚µÖ¬u@èGÖ'îÎDìå¿ïóº©i4eÌYþ[È’ÐG^QÒð‡ïß@ -e†;§ÔEþ0)ùî1ß¡A÷Y’ùA¾[ÙÃã¥ëuõÄm"¬®ö¶±ÈûÐEe¿OµûÃwn'…^še–j -Àæã9ÿ(¬àX´
µR·vöe–神ubIg£ËXà±H'Eĉo„qòÿ²¢H8ÓVñž)}.xsC-NjÃe¯3j—S?gÂñÂsœèœc>̤Ò~‚›õ{+3Ä>DP»‹´ûð‚p¨bÁ—"G¬ïÓ阼vu’ŠÏ³Ó&ŠÁœGÖUÝL^Ö•Ú0™R²ÚW2 --z²z8D_á -Ð` Ÿp¥
G»ôÞ__¼¿¢¦ge &T2¤#c Ýþrñj¥F9™z°©œ"β‰û¨‚¹á -"† -oBJ?;?¸{£|“Dñ«®^©¸CïÈ—î‚÷Èòù~ÉÛUÞg¨çf -o³îpÜݾ{;´¬²'¦gÄ#3K°æ°åQ°@‹]1ÏyÀZ°ÀÙà%d¬CYgŠkW¼¨ø-ƒ -ÈóüØ(çegËgâg-]Á+*é’ɼ ÜeU:Ͼ3¶î¦ž-ª
èiZrªñ˜îºŽ¯Ãáa>mÝå@ß_ÏBŒ{2[ËD€‚`TÑs5š>cÏe,]-hš1xú‘nÃYõÅôÌ1æXªÁÑ@®›ÐɈzUM·¥ûº+üM^bâkÀêH=L—„ŽLW±›È¤¤šÈi”{ay ‹+:È€Ô¢ŸøwÛ‘A€i‹ƒ½ -mÒ¦þc1iåˆîéÚXá8¹ -?/ -ÚBýÿý«°î×o:ZcÙýàKŽ^*!ÃŽ(<Ž0jLzûû±cÚÿå"-yendstream +xÚ¥ÙrÛ8òÝ_¡·¥«"ÄÁcÞ<±“ñÌÄñÆNÍî&~ DXbE"="e§öã·Ýà!ÓŽ«¶R5@£ÑwƒŽfþE³Ô„Bez–d:4"2³åöHÌV0÷á(â5s¿h>\õóõÑÛ÷*™eaËxv}; •†"M£Ùuñ58¹¼<»8=ÿ×ñ\üÏÁÇ“‹/'¿îò8“Áɇ³+JbX)\‹àâêËåéÉq¢ƒë³ã›ë_ή;¶†¬GB!O}½³nðë‘U–šÙDe™œm´Q¡ÑJyÌæèêèŸÁÁ¬Û:% +£ÒФ2™…ŒfQfÆÈ‘0LÆJ*Æ—ë_>}Æ‹Àr9˜(Bm`®;¯Z»«lKºzlZ»mh𮮚z×–û-“Su¨t,™ŽŽB—@:(Éãy$@âU³¿+òÖâ.\¦L%:sË.ò}†©•±Ž‚ãã›” A§U¾-—<¸¸"`¸vß–›²}ìîÅ„œÄ¡Ì„tg\=Võ]S6‡ºŽAa +¤nâ8ŒE’Né&봄 +»Ø¯ø¸º@}ù4È; +7÷ pÆ´»|I1Ý‘¹wÛœy–`ðJ¸pÍæiW<¨Éž‰æMoÙ×óaÞæ…=poÒcGänSúÀZ³¥s&Äô™l´“²°K7Y¸S²zYÉQœx›ŸN)YC¯Ó•e^Ét£g”,¡W|•C ÐÒ“f!@ãÕ¥¹óñÕé{åô‡Ã‘þ8.N]PA,^6cV-- }ec3“¼ÒU”ȼ±ÎŸ–"Ó‡RŒµO +µÙô´\_˜Š¬ÉT¤a–píãÏBZîÊ…å Á„/²!KÈTB¹dŠ{×¼¸ø&Œð_ôüQ/Ò(>ÀŸñ\¦¢©‹:V´ >\]Í0`¤©o +`¾WõSöAá°V/G(ˆ„Ý–·V>+~Ÿfþ4x·ßóUüEQ iÝo&ÆÝæýÆ=ËämµÜ=úã|³ªw&¶4¼¹Ú Á"ŠŠüòñäÝœ›0f}\¯žÇE<¬Ë%ÆH™´9¶‚8tˆfCA@FP¹áå²àSåš@Ö-… +èóÂ4V>ËÎWÏÔÏZúo|QÉWÌæ Ñ®êÊg>!B}(Øfp™f¾¬·à§yÅÆ}¾ë®¾6ãË +.>Ý»Ë#ýþql°î)Ü[&"¤âàEÏ¿Ñ#ß±ôoAÓ‚Æ3LtW~Ìë¶g^0O
ôzilÆÕøØt÷tßô“JÌB
QÞ³ú8ý\é$î_ì&:)š8ñå¿°¼DÅ?:HÁÔÑ°ñï9v3£Ó= +L˜ÇÃÏ5¬lå`¿/r€Ä“jfo9ŸÏ#™„F%ùíIqeƒ|8pø +?§Ã–‘f8¥%Š‚VâŸ$k™d®ðyÊ1¤ ØxW~þñæ>Ç‹kpbåóšO_ä5ÍKíœ'†‡“½Ã¡D’4øÒ0¿tõŒIÂO’Qœôß¼%²ã¸(›%´íùŠúˆ©¿sP&Ärtâã¶èž‰þï¿èÿÖC'¡JSÙÿyƒ<x'‡üy¦ðZQlYïþZâ)ïÿ
ÜÜìendstream endobj -2605 0 obj << +2612 0 obj << /Type /Page -/Contents 2606 0 R -/Resources 2604 0 R +/Contents 2613 0 R +/Resources 2611 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2603 0 R +/Parent 2592 0 R >> endobj -2607 0 obj << -/D [2605 0 R /XYZ 85.0394 794.5015 null] +2614 0 obj << +/D [2612 0 R /XYZ 85.0394 794.5015 null] +>> endobj +2615 0 obj << +/D [2612 0 R /XYZ 85.0394 752.2432 null] >> endobj 894 0 obj << -/D [2605 0 R /XYZ 85.0394 769.5949 null] +/D [2612 0 R /XYZ 85.0394 714.1831 null] >> endobj -2608 0 obj << -/D [2605 0 R /XYZ 85.0394 744.6647 null] +2616 0 obj << +/D [2612 0 R /XYZ 85.0394 678.1164 null] >> endobj -2609 0 obj << -/D [2605 0 R /XYZ 85.0394 712.9035 null] +2617 0 obj << +/D [2612 0 R /XYZ 85.0394 646.3846 null] >> endobj -2610 0 obj << -/D [2605 0 R /XYZ 85.0394 648.1357 null] +2618 0 obj << +/D [2612 0 R /XYZ 85.0394 581.7132 null] >> endobj -2611 0 obj << -/D [2605 0 R /XYZ 85.0394 565.3444 null] +2619 0 obj << +/D [2612 0 R /XYZ 85.0394 499.0182 null] >> endobj -2604 0 obj << +2611 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2614 0 obj << -/Length 3751 +2622 0 obj << +/Length 3862 /Filter /FlateDecode >> stream -xÚ¥ZÝsÛ6÷_á·“§B -™¥š‘E*çdaœ°Zi/‹Õ#nâù·J
†ªDä¹Í`~S4%M'ÈUbyÌßoŠ]õ‡øJšL|õû¾iwˆû}ýPª™%dæ„V™áïŸ]-u’/>mêõ„ì²Åºh°a«Šª¦ÚÃd%“ã#¦T&œKÏZ6]W—°Iøx† k…3yà4¦nq»©f¶«@z<nùqf*øT -“ç )aV£üØ]ñ;“nQl»–Z¸|;Ü -¶ÜÓÝWëú?PÉ¢ ÚÍ«ï~NÀ -ªìÌÅñ°©šC½F™{Ê‹GÐK½æ—77üå}Gì¯d¾¨~=VÝ¡C[‡·W
O»©;Ü*ì{´©uÑUÏÈ`=jx®°á7ñs’(¯( ÀþÙ´jxÅÂóo¯¯¿Y¾~aú ¤” …Sµâú Ø,1~ý¦ã
œª!ÇËRÍš"’šlžû«|qdZÍÏ‚Ûv]l—›¶;Ð{Ûl©µkKþüØÕÍjæ$‘"Ë€#¶”íœå§"ɲÀ"HJÚt¦ç…ÓwÕ¡ëbÒþ¡Ú3ÏeIzë¨v°¿ ÔÛRÙD$Jçcý¡A•uW¬¶´7ØÎHîV‹šYeNw¤a\–‡am˜²@Qº”·à[pÓ- -ôòí–ùbl¼’‚Çl—*·pž=¶ÏÝœ^S‘;à±¾Žœ÷}¤KYÃa¸+º*ÉŸÛ¦¢Ö¦è¨Ö<Öi.¬ fC.½¼o·õúñVçI@vPùú‹Í‰»™³
`:Ë]ù™N=æÇ=¡eÑ[Ë[ö@è7Jà$D¸-äa«ŠÝ.Oá¬M'bî™ïS}Øô(zjLNa—¹§NÀ’45aH{¬âA&FèÔ»þ -ÉUÊjî\4™Òº©¨$§ -¦·G¿ÏuEïdŠWi ÜðΟ‘¡ƒ
FÞcàMyNôðŽÚeVáÔWñi×>ÔeSHÏìXtÅŒ|2¡Ò`<ÏaÛωµ¹@9‰Œ)ˆ?YT†¬ÁªÆ.9XÊC½öY¼vç©Á~à“‘PàÝõB!zÍOˆW-Å[%„èH.îä&Ò -NÒÈæSê„ÐÚ‰,…XbTŒu©³pÐÄ°QçÄ2P -z¬7žXûL{IÔååÏ×ûáms(ꆔ«ÃÆ©„'õ0Ï¯É -se-æ*,Œ¹)m²`xýç|'ã°*k¬†¹„BûÜdáx¨›ÒWŠ:ZŠóuXg¢Hè«›û#wv›ö¸eòŠ¹äh–N‹p2ô§OÊa_DøtT%¢tE¡Óºl" ú~; -»ãz]yÈJµ[¼÷ŸòPÔ±I³ýÒ2ª1k}½œyB“R¹a缡ùŠg/C½+êílîú?¬Be}Τ³l¼kì„é;Ò!v{S…ççꊃº–;öôÜÅl -?žãšgòø‚c>W§óØÑ<¡âƒžmsǧƒŸd»m?ÍÞ.àÅG‘Ô±>@Úä7ªG7%
è÷®¦{'Mc\¨m"ø*&`ËÔø¢ŸlèCøÁ‰áДâZ¹~Òîçôº«;¾FÈó¡÷ÀÙ4Œ -åÕç+æ¡LgôxzJ<Ï -Ë0ŠJ=@Q™aÓßýN’A%5ȤqÌzYnCÔÕ#Ñ8uL¹t8‡C¾8bœíy8r£ß¿à#0ç
úÅ -û9¶ë2úMŒ/aÎ#I_tÕiwuõ‡&†’ga"wB"žF‰Á ó …cÖÆV€ñ.(,ÛåO®Æœ®?Âð…Aû›QyÔÆóRj‚kz›Æ—>hÅÁí0-7¾š?ì §ñ;Á -!0‰w"C)L]/Ã_f 0|øXøÌÌ
ûLâ=mÏÀÔL/jcFè’윤$þT,õK˜ú–*&RO—
Ž'›&,P€™û½”Ä);Nä\ȪÜ(Þò6©œ~ï‡ÏˆêÐ^TwÎUø†S10ñ<þ0ånþ©ˆ‰ÉÇð¾3¿pÕFàÏRgl6‰uÙÿûׯý¯|SÌ4r5oþ*3>¶)ä^ÚôÔßùw²§¼ÿ;…Eendstream +xÚ¥]sÛÆñ]¿Bo¥&&„û7%VR'µãZò¤Ó$ ™¨I€!@Ér&ÿ½»·{‡ªÛŽGÆaoq··ß»GqÃ?qnld3™'™ŽL,ÌùzwŸ€¹ïÏã,=ÒrˆõÍíÙåw*9Ï¢ÌJ{~{7X+â4ç·Å/‹o"¡¢X"^¼¹yÿöåÕE¢·×K)µ²‹«·o¯ß¼|õx71 f/^_½yõ7‚½½Èäâêû뛋ßn8»¾
d
I±Bš~?ûå·ø¼€üpG*KÍù¼Ä‘È2y¾;ÓFEF+å!Û³›³¿‡³îÓYVˆ8’ÊÊ^H9Ç“EVIåx±*×ù±-á\©Xt7‹v“.Dº(šhË5½w4_µ?î÷ÛŠ°ä"ghNu³Ûå5Ïm«š7¡•?weíW«ùƒm “Ô•Ÿ:`¼ŽA0¿Û.¤Ù/u_µÕj[†U@À’¥QfŒtç£#Ìšc·?v4¾s$4;zÛ·¿ÆÀ5øO0ꞎ.xæô +’[뱚Á)Ü!È#Ú8Š¥JÇòC…*ª6_mé8Ùà8#¾[¥`ÐÞQOO¡Êd‰
¨ç´dŽ¬Ì4!!› +ƒœ·`{4"å†Á]s¬ÙÿTõlD‘€äYqyŸ.ÇúÒ…ÖËÎ +TG'¢¢1@^"OxDK†„äqÔó
@ì/e?à-gÝ#¤ª2z3‰Žº9¹ê(Í„w„%•AÐiÀ\VPŽìò¶CÁ"øsƒÉ6Ž6˜“ã +–ðˆÞL£#o¿åÏØÇH +þˆ„±ÛU +êT¾¹y"²pßÏK_ª +˜{L¼©ŽÂ…!ÞѸhü.\úJŽvÍ}U”¡$òÌŽY7׫K"©½ò\±/‰´¹D9bJYd‚¬À¨í-SДûjíªxåõÎA½þÀ'#¦À»c + õL!xÅOÈW
å[aBv${vrÓ>²„HÈ|NœZgQ¢˜xå‘,UâMH·Ò +:HíS“øðPÕ…ëµ´×ë°ÏD16«éú=ý¦9n¼b*9›¥há#C}4§}ÁÃëQ—ˆÊ‰F›MÇ0¨ÚoνíûCÑ5ˆT‰Ñî³WoÞ¾¿¥o¾ûéÝë+¼1»ï+IÅZè/¹‚¡2¼‚iàCXzê¿™Ìë;^%85R–…–ÓKX²í@ùz™ø]]v/®s—£±†{/Da7eH]MÏòØ5¹2öý +ûÚýP 7?]pìzi²¿·B`¸{ôKñžþ\ì/ÐÓM£…™&×Íñ˜=¦/ªœ±{2`à[ÀzÐw2˜V>Ý.K#õ%êiÁ¢„öÚñ°){‡3Ø»èý¦¸Kó¤cn\ÚeŒsØ·IÍÍãÔ:…$Ÿ&Qlõ¤'7l¬ùÆó ¸¾x®S¼ú|ËÜ÷éŒ/O•ç ‡ŠuqbÅóþt€tÚz¤þb‘<{Q¨
rÚ“jkõ³Ä¤§ÔȉO0:IFä°•IL~T&b ÷d&1•;Îr*’ø.ÀW§cÿ)‘Ìp#àOÿ%¿ˆƒå¦[9} +û8ó’á§o Üfz%Ç.Thr¡BýGšÊH‹ì‹¨H’±ÿÚûO¡þShÏ0ºkßé¯1h¢ )3â¬ñw_5AWã¢Qs×0:õƒ^e"üîŒæÄ¡ òÿØ·ÿQ³Æ¨žÊy”‰‰àcë‰Bž kŸš ÿ,ø)íÿ_uÌ.endstream endobj -2613 0 obj << +2621 0 obj << /Type /Page -/Contents 2614 0 R -/Resources 2612 0 R +/Contents 2622 0 R +/Resources 2620 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2603 0 R +/Parent 2592 0 R >> endobj -2615 0 obj << -/D [2613 0 R /XYZ 56.6929 794.5015 null] +2623 0 obj << +/D [2621 0 R /XYZ 56.6929 794.5015 null] >> endobj -2616 0 obj << -/D [2613 0 R /XYZ 56.6929 412.0325 null] +2624 0 obj << +/D [2621 0 R /XYZ 56.6929 337.8412 null] >> endobj -2612 0 obj << -/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F53 1313 0 R >> +2620 0 obj << +/Font << /F37 1026 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2619 0 obj << -/Length 2935 +2627 0 obj << +/Length 3120 /Filter /FlateDecode >> stream -xÚ½Z[oÛ8~ϯðÛ:@ÍáU"3h§è`¶è6)fN”XI„ÚRj)I³¿~Ï/eJNÚÁ @DSGäá¹~‡$[PøcF.r#‰¢L-®¶'tqïÞž0G³òD«!Õ¯'¿ü&ò…!&ãÙââz0–&Tk¶¸X^ž}øðæýëwÿ=]qE—¿’Ó•¢tùï³÷ŸÎþ°}N
_ž½}s?¹1t]¾?ÿôáõÙi.—oN¿\ü~òæ"°5dQ<};ùü….Ö°‚ßO(F«Å#ü „ÃÛ©QRß³99?ùOpð¶ÿ4% -©4Q\f‹•âD+XxR`”PXå’‘LjÆYJ`ž -vµ)ÚÖJ¦oÖŶ/)ET.Åb8þ*Á°Á2J”RYÌÇù]yU]?YNºÛÒ6Öåuq¿éü¦£Ëw׶¯nÙ_~Sb8ƒÄ˜ØÚ¯°§Šøœˆän©*'„ùø‹R^®_eÆ6«6ÉCFrX¦þÝûŒ£w$äÀâœZs ËÉÍè~@5£{O…3vÝÆ-º¼jêu{ w£”¹œç P%XˆV+4‘\똇½Þ©r¢†Æ^ÔØ[m]w×Øç¦zè{äòºÙÙ®Ý)ÓKXFÿ\·1ý¥û¾X¯Ë5X7jyáçz(6÷eBƒ\Kb¸1N=uS— r:äÌ=V›õjS»‰UÁ(‹•†0 3§’I;È2C4ËŽÄ€!Õ´*œôkéü®w~o»²;9Q„g9ñD Nâ0À‰bzÄÊyp?T¡Fï+:Û*zÑBãþn]tþ}aïˆû¼t¿/Îß½]µÕM]®Ý§mUßø“J‡ Æu®>A2N&ðüØ‹e¼ÊçÔÛÁ]Qí0«kI
¤(°øHמƒHCÌ–åfÏ@j6Îhá\³ÝõÚ*®y(w»j]ºØTÔNµAǃ -٣ɥt²jùç©R˪^7}Ã)¥ö8q[õƒîæÚv”Ã4¶×)8ð@ùT{å}ªXùáPù+²8Ø+åqÀš´ -Ò›m?VÝ›"ru³œ0*Ô‘ŒFËT³B_j&¹`^·Cªiݪ±nŸ^¢[a¨žg+P%øëVäÐ16Ö°º=·2$×ú™ÒÎIj½RÅò/ªèmá~„goJr ¾×v¶kÕ¾‘2+12«W.ã+J´áy`šëQ!Öl°i[uÄT36à©ý{·kËîÐlïwg¾ì>°”°|žÙ@•à6N œdÞFìÆ–Áóµ,´úÏCõì{÷^}Þ -°Ýë¤Ï}0Ù GJ´ÜWN^³)ãUbœ•PÈp3Ò{Æöš¯°žLÀC„ÊÅ"<Hi‰Q%$J™ÿÐö_³º.lý½{oŸèvUÝ•»ºìÐöã¤ãßogž¤”ÈœIxCª‡ðT‡Añ§‚QðùYfU‚Û±CP¨çcvm!]ÎÀ‡î!©w|_ɆޱïÝ{~ŠïzÀÆ u£žåòÁF ìŸr
PTú=§í}ëÔßÇŠ9Á\dÔ³$ûDà)Gž³yRM;H úY±tEWrÀ87P– u„ó@•`=4eD²lÄûEz*f|lCöÒ%ŠPÜ]÷ŽÒ`Õ!3ÀìW·Ø‚j…]è<Øqg=+8g[õ»¬C’®waì¹nv[‡`cÉG…I{[ìl‰˜)ôgH‹}•ßÔ‰UéKõ³îâ¦úر7Dë°¿ -v,B%}œÛÐ<ž/‚ßê°Áv¥qõ°ì˪߂F!àfööì{ -Ûaõ^ØÐÿñ#žveJÚÈi…-{J3’uoÖÆX` -‡Ôñ<Ïc„óB\"©˜r^ELnØçÑÐ;âš-wzkû£rO+kh´¬©_•ßÝщÅùw[Ö]ÑÙÝEíÀäp &ÕcLú/gŽŒiHÅöøѡ㿳ɨŒÍò#°hH5õNo·?ý™í¦íƒ ßu›/‰øÿyŸ -¦íìÈù߀h&ª8¢qP)Ö뉈nT¼OfFªYÞÑ!óc4™åJGÜŸÑhEnÁ<êò*aïøz\caŸÝPÄ–ÝކƑ*‹ ÓbÞbXNŒXõ9Û{5I"¸9im%¦fÍmH5moÊèæñàŒ‡"Ê,3;k JL¨K"2Ããy_WíݦxB¿Ì3‡ - qu¿³FÑBǶlÛâ¦D‡ÖÏ!:pFὬ‘ÛÊ!h¢Êè?ê£4ö7<àG|U}UîGµéãÎè¸rSø‚ Ïtõ‰gqL³#û•Cª
z*ËõÅ'Æ[/³³ªÄ´± `ȉѼçe½nǬ‘ú éïÅJÌcVͪߨÁÇ妨¿îï‹L‹š ¨^ŽÝÍR͈ÚSY?oËÝáÕŒœd:Ëçç
T‰‰ùè3Ët<ñÀ[†âvüø@)YhA -¯Eûé`/Nz—%×Á¶l¾XY[n««fã‡ß×Fî˜f;‚Í +xÚÅZYoÜ8~÷¯è·miOI|ô ™ ‹Ý {0dò w˶nÉÓ’íxýVñ’¨«íÉb,Šª&‹u~E’(ü±U¦Z®R-‰¢L¶‡3ºº…oïϘ£Ùx¢MŸê竳Ÿ~éJðduuÓ+#4ËØêj÷e}ñéÓ»o?üû|Ã]ÿLÎ7ŠÒõ?/>þzñÛ÷é\óõÅûw—ðÊ¥H€ˆ ¤Kèúã察Þ^œ§r}õîüëÕßÏÞ]¶ú¬3*§?ξ|¥«¬àïg”©Õ¼P´æ«Ã™T‚()„ïÙŸ]žý+Øûj~:% +%2¢2žNÈB‰ž,…¶LV©Ò$\YÜ×ÇWñÓ/œ÷hyB4LjH¶yu¾T¬óÝ®l˺Ê÷ûgÛs]ØçCSìl«íósߎç,[<MÛ`\oëƒûvc>Ö7¾}4÷ŶüR¾µïÈ"È^&zýáÆvUu÷Éõ<®‹£m—
®hµ±‹Ø0F´Rܬ%Œ]ìÞXU·w…m4ÏM[lû©Üïm+ošò¶²íº*ÈHã”Pv•²”¤d8i¬ŽhÓ§2 +âlÊX=rü˜ÕN*Ñ
X`J‘„I¹ÌC š`¢¯y–P¢´Êb..ƒÜ@‡<Q ¶¼Å–\çFTÐõp¿Ë[ÿ=·jwĵ%½vï‡|}QN@b–kì1²].^g’}Qø—)É8M!ØPÒØ
Nv31¶&ðÝzÚ!”DM+=Uk
M€æ”Ìtlk%Š"Óë{käåÎÝW»Jã‰ç¸j¬§–&Áž™t„ÎFa‚¼fî[û²+Úâx(ÑÀ«,4¶õѪdëa!MmŸnbÓ¾ÎKc³®CÙq7N}Ó}6Ò`”9s·Ò°A·¬îÚY÷IA²4]öžÑ¼óx"¹öà¾ÖyLsÎ{T*Å"hÌÃÈw”J"&ŒëÜ<¢Í®¸Éöm94UF©Bߤ©2!ˆÖÞìòÆv"8)$Ú™!Æ·ùÐ7fÆ6Ëf’‡„¤°J7ü‡x7ðN8§u\Ž +•¿ • D‡8!ÍÚ@½Lx8¾©gÍBÿˆYÈ4à ¼l=¢y£ðDÈʱÈ÷®„ýbÛCÓ +Ø¥„ËPFs°Û£]7 +êU¡N,I!DÉSÅhŸjA¯žj¨Øç×(Vhš-³¨&øªV¤Ð16Ô°º‹[i’fÙ¥’$ÔRÅúwªè]î^ÂÓ˜’\ƒ×5í2ÛRؘ2+10«7.¿¼Ì4n÷CK}3(ÐÚ€
6kP¶ò?´{Dóà‰Æž}<6E;Ö¿MÚfóåkÇíÈ,P¼ +€ô§hÌjœ8I„T¯±MpÁ|µ +-vá9VL×Ûù;öyýcÛhÃŒç~ÐÓS;¾w\}mä…±˜&ÞLŒ³‘ +glFáû³4Ãù+q‰¤bÎyÑ©f'œDCGvÄ3¶~:bèìKéžî(™áAzµËdÄOÅww8bGqþÝU›·v1s`²?Ð&͆˜ôoÎË b*¶ÇÏîRþ»˜ú”ƒ8q"ê÷¨¢¾§ÂéÃá»9Ý¡= +úm»ÿ:ÿ¿t à‹Ë endobj -2618 0 obj << +2626 0 obj << /Type /Page -/Contents 2619 0 R -/Resources 2617 0 R +/Contents 2627 0 R +/Resources 2625 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2603 0 R +/Parent 2592 0 R >> endobj -2620 0 obj << -/D [2618 0 R /XYZ 85.0394 794.5015 null] +2628 0 obj << +/D [2626 0 R /XYZ 85.0394 794.5015 null] >> endobj -2617 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F53 1313 0 R /F41 1218 0 R >> +2625 0 obj << +/Font << /F37 1026 0 R /F53 1313 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2623 0 obj << -/Length 1959 +2631 0 obj << +/Length 1965 /Filter /FlateDecode >> stream -xÚíYÍs㶿û¯ðÌ»ØÓ˜á‡>/ñn¼ûÒnòòjïL;mŠDÇš•%¯$'›þõ H‘lÙ»msìø@Aøe1æðc×c^(ñ:ÌåÂÇÛ?ÀØû‘ ™Y#4ëJ½Y.ß)²Ð“Þxµîè -1^%¿NÞ0¡ØTðÉíòãÝÕ|ê;“Õb:“ÒQÞd~w·¸½ºþú.aä|r3¿ý8ÿ€¼»i('ó÷‹åô÷գŪ5«kºàÊØôyôëï|œÀ~q¦ÂÀ?A‡3†r¼9®b®£TÃÉFËÑÿ[…Q;uЂ3©<9à)ÆB°ÐueÏnÈ<%•uÆâçùÍÝÜ -LçññL†,ðºmµÑ°ý@Mô—h»Ëtezrr¯³â ª
RrbT(: -…#™ë;>h6 -ój¿K¢Z,í8°®`\ì³—¸×¸À¾ÒÄ©ä¤y¥ËyQNƒ‰ÎtMSÊ©&º*ö–ˆi3ÈÛ&´§µí[ZacMÏDà3Ç‘.PWÁ:r‹¼ïNþ(r
¨Q7¹-êÔ®ìzÕ
E¬4ßí-ÏY:Š7D¡^ìÄE^G°EìE¤§ŒÒ,ÍPÃ}åŸp -±¥qþç½®hªi7$±ªZ—Hƒ’vò±á®":ngˆ GôÁ«œ‹ -YSÛUZhÅÆ:!m²ž7»no š6
B Å— †¡d&—{M.îÕír¹x‹tJ’ÖC†®r‘2Ñ´Qf+G£ÂšUõ‡7Ñ£&?-¯ß_´kü¸ø…ädÁYvÀòƒ³ÉLFnëÒNeÓ)á{vڻ뵽`¾ÞX9‚)îû'jqšu¥l)îÏ’Vʬz©ëø²„ü’=ÂáÏׇW2Hê¼Ô± ½¼+\6ìz}¨¬î”fi…^º¦/ÑëhŸÕ' -´SãðøòBç+ëHñX#e=ö•—å>¿4–$—”p-°OúùÐ) 6\œ·¥•:6¦ç;)|ÆCáô©ð"ê–³=w -ã -üÛê¼#u¡ß ÞþÂf‰¤ÅÝ~H -ÙjÚT=HWz•øB„<‹$Tý0Õ¼ÊàUH¯23¹B¥vÁI•yJæöá|{ïÀ@ûáÂr÷^LfÕÍàsâj¹¢'½/£ò°J›**.ŸwuñPF»Mó1±Øi0j¼ê‚>ÌäIóá°¹î6QþpPL÷õ¾ûíéLCŽ«Ø©oø¬Í‡÷ÔÊÛÿãïû/ÿc8PŽ<‘£}¸C É(ãFáyÇW5ýplûŸè6=Ñendstream +xÚíYQoã8~ϯp/ ¶Q%K²å—²ÓÌ\wÛ^o›ö°»®í$Æ$v&vÚéþú£DÚµ'-îúx( +QERä'ŠrÄßjŸù¡ƒP1Í…Æ›.aîË@Ϥfš´¹~œ.?Ë`²Ð÷üá|Ñ’e7FçÉl"øèîá×û«é8P£ùl<ñ<%ýÑôþ~vwuýô5fàä|t;½ûuzƒc÷ãÐM¿ÌÆÎÌæYmÓ—Ö¦oƒßÿäÃvðÓ€3=|†g"½áf ´dZIY¬ƒ5[³niŸ+”6L{ʧ(ø"ìw˜`ÀÈÁ¿ß8Ì}«¹¬Ã¢¼|Nw‡›5!“ +6Ùx¤¶fêQëµÔ‚¿¤ÖuÔ^eåv½”èôj•"AÖ@ÌØ‘ÿi“˜ …yÃ-®3ž¨¹¬IIú¸_9B3¨ð¼Öš©GkÇœ)í{]óqÈGû]Žû/¨u¶,³|éÜ0œH ѨLDK=ôáM–§äÀǘsàÇîsVÈ¡Ø”é&‹‹u->Ú…‘Ïãb³Ióª¬#ôðd˼À~â,rþ‚…Z{vk *˜ïûÚY6ûmz{ƒgèÀ ÀéÁö=Žœsy#Gé÷h³]»ýö³.žq¢\!å,Që~(”Çt læå~›DUÚ£Z)füÀc\ì× ªxLQÁ¾Li¤*p$ËËtWázˆ$]§-A§”ÅÞ1mGctYB{Z¸^±!
«C+LÀ”ò4PΟ˜ÇÈ,vüýUä)¤+iüÑ]QeNW«¨ª)ÊòíÞù@âPÅ+¢P.vâ"¯"Ø"ö"’³‹²5" $<®£ü+NÀ +‹Cår/q‹ûÛ¯·ä¹-‹W¼/˘•€C.ëASÉK†±C!v4®ÿ¶OKZêb×N*›¨¬ ©8„4ºvOõè¢ ¢åv¹]ðJÁŒ +ðìþm<ñáúhCîpÓG–Ú`K×ð±t±NVEY±N¸íÄô¢$!#Òç~IÆWœ×B]# Ÿ &ºJD[ „"é?¾mLóÀ$—V´mŽ€/¹‡Þµ³½»µ
lýyf¢|âÉ[š¼M8Õ(êu†p‰±Ç³×÷»$¡Møkù +aÙ0:¥à”ô‹Áúeâ¦ÚØ|5ÒŽjhSj&ÁIô‚Ä|N•È\s +âŽkR¨øPhnwé.ýFìß“bÙ¬ázYüÕž—ŽO#¦–}2qùénz;#Ø›ô(t§J1@Ÿ¶:edeV½¦Â$«2wAÚD–ºû¨ª^K™Ã¦¿:sØéÛx•Æ_ë”Üd7˜ˆÚœö\ °òøV—@{蜦—mod)™^ï[ÐJ5ºvÙ8ìØ+ÈÆèùM +5„k®-àÂ(XMb
¬Ä“bšŒû(Òz¬ ¥é÷¬¬HY„!NîÊÀ¬¨-±Ï¢âB]¦€}r.P\€z^¥6ÎFÐMÁ#±Ö6c•q”£í–.ò?8—Y\KÅ¢ËÔnñPp-'e·½P{ŽÎn¾u×±O·5´¿|þ„<3Rd;P6äU 6û’¦Ð2 œW‰½¤ÖaˆÂÜ‘GÙÉ'H¡5jÛBË©Ø8ç1¤mÖÂóæ4àöz¢éÒ ôm©gƒa)™Íå~Ëaôêîáaö éŒ8‡,ái©‘²Ñ¶ÑÚUŽV„3«ìN¯¢§”düòpýå¢Ññóìß$ 'î¬ÚËÎ&³ùlM¬Ü²Ï×7=Jz¯xPÄJîëóš6—{^(Óó¨i¸¬ÖË´Š/w_ÖOpøóÅ¡B³Tò¼
×± ¼+tÀ¤Ð~×*«[¥Y–@¡—-^êÇÎ"Ú¯«Ú) ûš2ÁkqñXÍå<öí.wûüÒZ’\–P +ÀµÀ¾¦/‡¦xjÁÅy[®cc:¾óDÀx(Tך2ßÈwÍÄHY»Å,øÜMϾuGëI‘¯‰sS$é)ÿŠÀ0_ð7>8´¹Nû·á²;úÏ +l´ÅÈ ðéa¶ ê¦-I±ÐY?ñ,DŽ…x’…‚+bZ¾%…ý`ÑúC eK)ÞkÎ2)r¤†÷¦ÖoT[Ü1n˜ðà²8Ž†ë8“LpÈG€<Fe:ñ=€ò¸Hšïõ“í·ÓO“Û+}€´S!&m÷¢>Ñy åê—iîêئlíÅšòíç7 öÊtiÄô Úv—=Ñ£ 6é1.µ:†é( ]¨IÈfÂ7ˆ4Hai¶g‘fÛW¤ÙžCš%:H³4qi‡÷ñDΤ'Ãî½ü0›!h§7ÿÄuÀròƒg¡Áaòû>2^¡ô#W_ôÔL]®jÄI΃—ˆúHqFéç +Û´ÎVÿµ8ÿH\(Å;ÄÁS¸‘4¸»À rb«6&/èK®§mê
ºï€÷&LJspàí=ç“7ˆÿŸŸxýFAUgŒwâ¤Tí'i2Ênþq®ç̃úºÇöÿ endobj -2622 0 obj << +2630 0 obj << /Type /Page -/Contents 2623 0 R -/Resources 2621 0 R +/Contents 2631 0 R +/Resources 2629 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2603 0 R ->> endobj -2624 0 obj << -/D [2622 0 R /XYZ 56.6929 794.5015 null] +/Parent 2636 0 R >> endobj -2625 0 obj << -/D [2622 0 R /XYZ 56.6929 750.8373 null] +2632 0 obj << +/D [2630 0 R /XYZ 56.6929 794.5015 null] >> endobj -2626 0 obj << -/D [2622 0 R /XYZ 56.6929 374.3309 null] +2633 0 obj << +/D [2630 0 R /XYZ 56.6929 638.1898 null] >> endobj -2627 0 obj << -/D [2622 0 R /XYZ 56.6929 186.4801 null] +2634 0 obj << +/D [2630 0 R /XYZ 56.6929 273.9392 null] >> endobj -2628 0 obj << -/D [2622 0 R /XYZ 56.6929 98.3442 null] +2635 0 obj << +/D [2630 0 R /XYZ 56.6929 96.9537 null] >> endobj -2621 0 obj << +2629 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F48 1238 0 R /F14 964 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2631 0 obj << -/Length 3033 +2639 0 obj << +/Length 2606 /Filter /FlateDecode >> stream -xÚZKsã6¾ûWè¹j„àMâ8¯Í:µãÌÆNj«&9Ðe±F"‘²ã¿Ýx -#g™‘DQ¦fËÝ=ÂÚOWÌÓ,Ñ"¦zwõã?D63Äh®g÷ëˆWNhž³ÙýêËüíçÏo?ÜüçzÁ¿#×EéüÓÛÛßÞþËÍ}¾6|þö§wð(s#ˆI¤Ótþëí‡÷×Þÿ|õñ¾'™Q²üuõåO:[ä?_Q"L®fÏð@ 3†ÏvWR ¢¤af{uwõïža´j_R9Q9Ï&tÀÙäRóD ÊžgÜ*¿èzÁ(|ù¡^-ñ‹€íB(Âx¦-Ém±+qøñH§@Å
Ýƾkuöç™Õøžµåá©<¸ñ²©»Ã5ËçÍÖM»j[u/~˜£÷[MXÎ w/u³o«v¬v
º -¨šw›Ò
š}y(ºª©ýãÚýîÇyCÊä¢2‡ -…4Dzj¾Zù ½=WÝÆM×› ¶a'·U]ºéfâY4÷[Xi»²îÚ7×A}ç^Ø*˜ôtî§Ý {ÚÕö»^<»µÓH& T§.í¬ÓÈqîm%W½
·îÉIƒž¼x*ªmñ°õƒü#êÊg¦ä[È´‘ƒ5p%øE•Ã70&z#ßíŽuµ,:4E‘)¯pYIE¦½AãTÈ”8núQá~îßvôà9u¹ìªk6ojк¤¼Y¯ªúÑQª±¯a§º³B¬¼éy!˦ ç«ê±ê -LÐdªë¢;:»´&)Åü¦v”NÛ@µ<Eݹ¾
£ü ýϵ|Õ†%ÕA¡qÔŠ¼Ô`å¨ÌÕA‰1}´¶ªƒøô¸}q£ØÊL¢<ŒGÞq5‘¹©¯Ø>6PáXka½
ÿùéíûŧ -w4lþ¼©–·rlKOS¸Ÿvãl÷¶ÏåÒ=wîã!þ–E`QÖ–TډΦ`l¤©áÄ´4óûM( -Rm -uÝiQÒSá¾}%¢â ÉHn”8[‰Ä2Ø]sj.‹ØSMȘ‚(E4…©DÈßÚrus -èS«õR¼Fä*!…My,¤VnßGó\–n¹Øâ)] Jÿ -‹"§çÕŒFž„j€•ç25¤OÇmWíü¨ê¶+êeÙÆ`ïíÑþ»Ø×-¶[çè¼]g³»
mk¤›¯c'¿ùü$G¦´géÂ’º(à™´Q¬”¯ØhDuÁF•µÑå”R@€ìLM›¨f„r).Ë×SM˜(Ø%¥`F‰„ÓŠ›?Sv'|u´™Œ¬“oIÌLÄHœ1Çh5YÝž;3bx}U®0²7S/…“ÉXòDz[þˆÁœ ¼Sn”´Î€u¨‰©¹l1Õyc詬1|}5`ňĤ>J^®§š.±¨ 3@%©xg-Ád’OvJ¦P«Q™™È8Ø™Ÿi`¦O\GÖåyH0qáè™ÊIÎM~rôÅŒdË2’Ñ\÷'¸˜XôûxÑPœ‰”—&ÓñN."ö!„ÄQi{^ -кÉYù¹B°ÇYæÀüB¾]¹‘ŽðW58£ã‚e -Fo8å±pâ¸Z‹É(Deì[}Ý0Bת)½ uÓ¥0"u&R´]þ]µÝy‡†hû\v¸ˆê‚Ã*ëpí«ÑwhÓ%î&aPr\§:•-u!DK,ËRáâaZÄiËÞã\CÄ*ÎP#× 0i¾·ëÑ;½1ÀØg8ÜÝrSú—ŠSRÈæ]¹óÕ®qmž˜-ØÊ»õ3eÒSOþȇ°/rJN1zΈÎ^©•<ebðåŒ*ìY¦ØßÁúÌÙ’ç èÝV¶î„''R@QyÔÂYl aÓ…Ìm[èåÜ—ßv‹(œò® - œ09*›}$[$—Û> -óâ–hbËää(Àäܤ[~¬‡æ)xæC<rÛ<>B1r^ `ÔèWªÚ˜ê‚•UÂË´‹!æMtj“˜3žÈõ]šžãéGŒDH@uúî’&õACrÍøeÅõTšKÎRH¼P鮿ÙÃÓáŽ=Ko+ñ¾˜ªw^ð"úöÿM›=Ç m&XÐIF¹˜Rç ˆ'Ê耷×Îw#œ†v˜t¡LÆ!N3ÙyÕØ憌ö{UÓs|E5xÊDþ¿«ÆwAáÂYø"N!ô×:¤tœòWZ
I!r–›Ñ-VëÛs*n‹ÛG—
TÒܶÏÝÁw8ü¥™’ˆâ€bå`r½Œbµšï -j¯Åõü¶±525ýu.ÛÍD„Õâ:‚®¨ì†°_RáêàÇž Q°6t9aÞ—ð(DãY9hˆ„'W”£;©St6 &Çÿs„ו‚Q÷£>ìèÄ[7q3Ëu;ØO~걬ËCá7·]úŠåB\h«B”i'ú©¡ªþsÅDŠ§ýEÂwÿãØðqûãùÜ'(¤{aX -5Ítv뿘Êþ_1ƸHendstream +xÚ¥YKsÛF¾ëWðª*σ£ly½Jm$§¶ÊÉ"Ae`ЊþývÏÀ€ åªÌ4zzz¾~’Í(üØÌ(BE*gI*‰¢LÍ–»+:ÛÀÚ§+æih1¤zÿtõî_"™¥$Õ\ÏžÖ^†PcØìiõu~óððñþöî×®èü=¹^(JçŸoî¿ÜüÇÍ=\§|~óéã#¼J“J bé4ÿvûáúϧ_®>>uâEfT ,]}ý“ÎV ù/W”ˆÔ¨Ù¼PÂÒ”ÏvWR ¢¤a¦¼z¼úoÇp°j?R†(Ó p6cŒ¤JñH *%Zpa•ðþ˧G<óÂè@Ò4á–êi›ƒ +@O×lþx÷ɽ|Ë_qÀæEã&×ÌÌóÕ±ZeU[úŦý¼#**÷lÕKíÆM¾ÏYë7ùƒR^æ°Ü€®¥P°}ØÁ=Ù<s¯Ëºjò¿ŽyµÌÝ|½vUsܯ<C6?6Eµñ»ÂIà¸x@§‡…ÛÇ'wåeñ|ȯîe
’ÛAÑ6n°<¼îÛzsÈöÛbé¦ê}¢ ÉÏn"«Vn°Ë<Ÿå6«6¹gUyÞÇöèôâÞݸ̳&‡c»ë“DHÍý•HN´NŒ»8€âõ‚Q€ì¡Z-á„" 0 É}¶ËÏÜmJ¡,‘ýØJðç‰Uø¡5ùá{î• +ª™–.D£Í;šà¬<ÓÌo÷’ù}öî@ß‹•
T0S„3”~âýÝýõ³ 0%àJxŒàØ…Cä2ó»õ„ðàƒŒäAøsD˜ pöˆô½þéKÑnÝtU‡pè°a'Ë¢òñ´ÞÛðä¦mHƒgf¥ÝwyÕbäØ·îƒý¡¨ZOŸ¹G³EótÁú»Ø‰ìÖN#‰$\PGU‡ +#Ç=šw¾ +‘ÄÊÙŒâeGž}ÏŠ2{.óaƒü#êÂG¦è,däˆÅÔE•ÃÈw»cU,!‹€E¢¼Âqd%‰ö€Æ©)q\w£Ì=ž><8z°œ*_¶$7uZ—4/«•ÍO²Wýü;Ubå¡ç…Œ ç«bS´èd*6UÒI)æw•£tÚªåñà(ªÖ€ôM +«°Í±æ°æë2Kà$óUÞæ‡50½_ܼ[·ŒÚlÙúÉ'†<¸vdº„»ñ‹Õ¸ÜY©3eŒE]tpµ©-ݼ·õ±ô‹G„楪Å%N¿Úœéñ¤Ê÷%Ofrær]2¤ +Eùi]ÒQá¾]1¢†~’“*q¶JÈ`wÍizYÄŽjBÆ8RDS˜Š„üÒä‰7§€ju¡dŠXƒÝ£B’Ù¨ÇBtåö{„ç2wÈȹOé|YÂÃ'là<=¯zD0²$TD)cd¤ÏDz-öeW´7mV-óf˜oøµ=â¿ír›`ºYY:[@ãm[×€@ï¶ö~ª¶!{häwßå(É)í™taIz]ø†Á$F¡|S—1: º€Ñ@e1ºœÂ(…$)k#€jF(—â²|Õ„€@µ&”Œ" §ŠþQæÏTÞ_`»EÐÉ|ÉN|$ë{WvŒ¨Ïê^ðÞY*úÏWù:ý<UóR¸™„)ßåíò:s‚òN™QÔy8*á“sÔª`TßÞtXÃfD„)¡TWò²pÕ„t$6¶t‹w i"ùd³$bŠ-#™¤pÒg.|¤™.<rÑ_=.X“ç!üÁÄ…«gʃ>v|õ>‘É–$$¡Fw7©1óÝZØÇ‹†âLl¥ ÂÄþÃ`'ç!û! ¸ÄQu{^ +ÐzjXù¥À|³Äågð„x»r#ëá9,lpFkB–„lpð…SësNë~q"%‚¨„ý¨§L×µªs/HU·A)ŒHŒ*‡üï¢iÏSå7¤:op•5¸æMïÛwê"sŒ0¨:.‹ÖQʛЄ±$‰…öã: -;‹s=4riH +aäziïíÂzôMûú‡»¬]nsÿQvJ +ѼÍw¾àMý_¶€•…»v
êg*o=vûÂôn_—”œæ膼Q.ƒÑÛrB6,SlñàF]›Á¸¿]ìÔ½eaKOxs"…,ʺB8‹]!ì;°ÐÄ€¹mmk=Ã}n'±ŽÂ©ð‡É‚QN˜5¼'[Dÿ”|üoG—ãD½œá5R£3-?u™o¨Š-’ÞäÇUT14¸ªA)‰®ê¬=§Š¤Ü5vÏ›ó€è¼5"kÌû7£gèG¦Ì±¨. +hN…Š¢&‡ê‘ëXªÇ¼šìÖ…üÖ¶´lþÛõícßÀS"’®kÓSÅ÷¥‰¤ÁC÷As endobj -2630 0 obj << +2638 0 obj << /Type /Page -/Contents 2631 0 R -/Resources 2629 0 R +/Contents 2639 0 R +/Resources 2637 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2603 0 R +/Parent 2636 0 R >> endobj -2632 0 obj << -/D [2630 0 R /XYZ 85.0394 794.5015 null] +2640 0 obj << +/D [2638 0 R /XYZ 85.0394 794.5015 null] +>> endobj +2641 0 obj << +/D [2638 0 R /XYZ 85.0394 752.0715 null] >> endobj 898 0 obj << -/D [2630 0 R /XYZ 85.0394 769.5949 null] +/D [2638 0 R /XYZ 85.0394 700.8318 null] >> endobj -2633 0 obj << -/D [2630 0 R /XYZ 85.0394 748.1323 null] +2642 0 obj << +/D [2638 0 R /XYZ 85.0394 667.6704 null] >> endobj -2634 0 obj << -/D [2630 0 R /XYZ 85.0394 713.0047 null] +2643 0 obj << +/D [2638 0 R /XYZ 85.0394 631.9578 null] >> endobj -2635 0 obj << -/D [2630 0 R /XYZ 85.0394 648.4882 null] +2644 0 obj << +/D [2638 0 R /XYZ 85.0394 565.5242 null] >> endobj -2636 0 obj << -/D [2630 0 R /XYZ 85.0394 577.9033 null] +2645 0 obj << +/D [2638 0 R /XYZ 85.0394 493.0222 null] >> endobj -2637 0 obj << -/D [2630 0 R /XYZ 85.0394 396.1161 null] +2646 0 obj << +/D [2638 0 R /XYZ 85.0394 308.5213 null] >> endobj -2629 0 obj << +2637 0 obj << /Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2640 0 obj << -/Length 2232 +2649 0 obj << +/Length 2135 /Filter /FlateDecode >> stream -xÚ¥YÝoÛ8Ï_aàNÙY~ô-MÓ½,ڴפÀÛ}Pm%N–r–ÔlþûjHY–ém‡ -ÛÞçuŸWþÔÅ’'Að,#N)>œ8l×îÎmÖ× -%”þ%8…‹žÊnÓô2ΑúmQw-’ºŸ¨&Ê8³)ªGm‹¶Í -2J4 -}ž‡ã,µ‹¥0„ -.‡Sß]¿¿¾Ôÿ»»þps›P‡‚!1V‰ïëc‚>ë¦òÕMÐ깃Aת -n‚f“¨·!–¦ÓÁ0²© -þ±l`bé'ŠÚÏÙÉ\o‹u’˜dœ&‹±Æ¹i4Y Lc~ìÎMf8 -¤9Ži£s?kK8„C`Ÿ†+©¨_äyñùî_>ý•qÝuÝ»:âÍísÛÛàÕ˦n|Ê~»?W!utžä„Y¥Æ~!¤›.“ŒXiÌàC§8.ãÚ%Ôhܰ圓Èc¯†#Š‘d<«ÐÜÚ؇|áÜìã$Æï<C€ˆ’®ãaø>×ÍcP7ÇÖÖb)
æb.Õm -Ø!ÜU8yXø–šA°A½èDr–mò@̲R -e=L?×]þŽ¡6û…I -i£e¬ã#˜¥ÅÏ(;âÉR •Ýv9$=6PÃÑS9 -·ç5®k=Dµ³U/p2&9ăzv÷‰€‚ÖC'-žãÃw¡‡ëHÊ›^¥DþƒöBGCEy$¡¥<¶û‰5âå¥×Ó¿y“}+Âf£ÏËN‰ %žZÅMqŸ÷U·8Åjb¤Š·><O+ƒ÷MU5O’Ðá<<ÇaP‡¦ -—@!f7MÛáè©ô·0?úvöanSÔoãŸô€(/0Ž\ÊoqCHy|ŸÜk‘±~ßœbÑ”D¯›T'É
±†Û™Ã%iÆUÃթщpSCýÜÔ‰@œï%žã‚W,zÅb:xúÓ¦ô1å ×Áº+}€Îù&o{Žfôì¶77#œJ7MŒ%—„Ó(u›æ§¿Íe×^pm½¿„Û ØŸ¼Ë A”rjÚ+éÉí¢r=h -Ä¡UÒÑ‚p,v°ž¾ Ùã·ï|œ
ÅY»´„œ6ß3¦RÌý¬]Ö‚ŸûxÌÐ hô$¼nónµ Æ«™=4¦¿®& -V€ÖX[Ãf=Ä#@6b¬1'RS3ÿyQÎRsø:tl#}E<ÊMªÀª€Õ`UXáW'?ê B‘¨‹U¤7¸eJ{l ºÛ¦¬BšÃ(˜,~ +xÚY_oÛ6ϧ0°e‹’"%±oišnÚ´k\`ÀºÅ–ca²”Yr2ûÝñHY²™fÅŠ5u<ïïwŠ˜pø'&:a‰‘f’Å4z2_ŸðÉ=ìý|"ÏÔ3M‡\¯g'çoãtb˜Id2™-²2ƳLLf‹?¢×Lhvúçì×ó·:0K`\ÂÈõéæÍ%»üpó–8Gbeš²TÄƱ^|üxuóæú÷Ó©ÔÄŸN5çÑû‹›ÏïˆöñÔÈèâç«[vr5ë
+xŒVü}òÇŸ|² +`Jg&S¢w±!{.ôÈtçü«œB°XÁaä´¿ŠÝ¡3²„锧“á/yCg–…}1õM)–¦µIÆ&”‹Cõà-5ÖïÈm=WÀorè
ž0e1>õs[@Æ$:êVnáüt«Z/¹~Þ—"5,N¾£/½À€/‡Š‰L²¼ræ¡ rMâ‹h¹9YԬ̟7õÎåýv“weS)Uªa!áxaÒçÇ)Ë Ò¾›c¼Àáb©Ù7;f½m;2ûΧDÝ<9OÜíð7‰ê|],ˆôTv«½Aúd*Ó˜¥™Á( +f´–Vpï <é(¯î›
¼¶võ‚m1·Q):÷ÜmÊúžÖ%j UÔXŽE±!ò²q\G!ˆ°.Ú6¿w'>æU¹ð…ç®q'lçó¢X +«,”@q ûö VU~|m»²*»Ý©"òéXkðºrùOÅ<ó•ÇKC8 +¿óíÆ¥PWíˆdQ~ŸrGè0·y,Vˆ‡3Øá“4ãVž œa‘“Ajdµ6,å:ùZ—§Ð/0dp÷qóº<8J´ÿH3lH³ýÁ_ëòd ÀämK]:Òûëþ8èƒ'xÍЉ£ Þ{P,(r¾ ]µ>{̽ó©Y.J›ÓTEÁJã¾ÄR:ïêŠÞ½xwû!`u ¸Ø¶üÂ5×ðŸ8s`SÜ +$
˜iš7Ãl‚‘…sîëc_pÆYr€£@:ÄQ íqô0ΠТûH‡áJiŽLfŒWŸg¿|øô²¯ë®ØÔonw-ô?.ª—Ђ +”Lª³O¦:ÖÑzZwôP@©ª±}},Ím@½Ûäó¢=ЀÐÎö÷öÙ~Mp^àÆm9ns]ÐñëàºjjÐGÅ*º´£‘~$}+0ÂÏFr?¢µ´±Ÿ@ð¡jÇÖKuï÷ʹSf^à¶ÝÚK˜°Ÿr3èÕí*¯…?$0„õ½ú«~wp‡^º>e½¢IåüG¢ýx>~Ä]þôSà•óqkKSÕ å«Êºÿ¹.ÿ9÷Ôv endobj -2639 0 obj << +2648 0 obj << /Type /Page -/Contents 2640 0 R -/Resources 2638 0 R +/Contents 2649 0 R +/Resources 2647 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2649 0 R +/Parent 2636 0 R >> endobj -2641 0 obj << -/D [2639 0 R /XYZ 56.6929 794.5015 null] +2650 0 obj << +/D [2648 0 R /XYZ 56.6929 794.5015 null] >> endobj -2642 0 obj << -/D [2639 0 R /XYZ 56.6929 703.1515 null] +2651 0 obj << +/D [2648 0 R /XYZ 56.6929 605.5421 null] >> endobj -2643 0 obj << -/D [2639 0 R /XYZ 56.6929 603.3192 null] +2652 0 obj << +/D [2648 0 R /XYZ 56.6929 504.7499 null] >> endobj -2644 0 obj << -/D [2639 0 R /XYZ 56.6929 540.5015 null] +2653 0 obj << +/D [2648 0 R /XYZ 56.6929 441.2539 null] >> endobj 902 0 obj << -/D [2639 0 R /XYZ 56.6929 501.6992 null] +/D [2648 0 R /XYZ 56.6929 401.9804 null] >> endobj -2645 0 obj << -/D [2639 0 R /XYZ 56.6929 468.7497 null] +2654 0 obj << +/D [2648 0 R /XYZ 56.6929 368.8239 null] >> endobj -2646 0 obj << -/D [2639 0 R /XYZ 56.6929 433.2488 null] +2655 0 obj << +/D [2648 0 R /XYZ 56.6929 333.1161 null] >> endobj -2647 0 obj << -/D [2639 0 R /XYZ 56.6929 367.5092 null] +2656 0 obj << +/D [2648 0 R /XYZ 56.6929 266.6983 null] >> endobj -2648 0 obj << -/D [2639 0 R /XYZ 56.6929 307.6563 null] +2657 0 obj << +/D [2648 0 R /XYZ 56.6929 206.1673 null] >> endobj -2638 0 obj << -/Font << /F37 1026 0 R /F53 1313 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F39 1161 0 R /F48 1238 0 R >> +2647 0 obj << +/Font << /F37 1026 0 R /F53 1313 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F39 1161 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2652 0 obj << -/Length 2228 +2660 0 obj << +/Length 2593 /Filter /FlateDecode >> stream -xÚYYs7~ׯ`ù%TˆàëʃlËŽœHVbeË•ãaDÅYÏÁp†âÊ[ùïi s0µ[z ¦Ñèn|è˜qø³D3®l436bš=[–'|vs¯Nñ,ÓbÈõìöäë—ÊÌ,³±Œg·ë¬„ñ$³ÛÕ/óó››‹ë—ïNRóù3vºÐœÏ¯Î¯:ÿi7§VÎÏ_]¼…O™˜„f§¿Ý¾þú¥VùÊZf"íÌr’¼~ñœ=sýÒ±ž\Üvö÷$¸rÆþ~òËo|¶‚½>áLÙDÏðÁ™°VÎÊ“H+¦#¥¥8y{òC'p0ë—Na¤UÂt"ÍH‘˜I[+©üVVÙ:Ýí¢©÷»e¶HW«]Ö4‹‡Qr @hÉDÀ -Ë"Ý7YØ™h~Øä˪ù2v—!¸VHik¤4YK„M†ƒË›‡çÒjÕ‘bbãNE2_³³Ò}ƒ¥ -:ÛB0«µô&×6[¶ùCV<ž -!æþ€a‘0+4âp¾n³Ho“ßü½H0“˜àM¶{ -%ÇQ1y¸‘; -' ›r&áž&I0/ ‘>»»A{¨ñ|"ÉL94fw6„²Ðª¨à–iq_ï`7åTCr*øî0¤"¥()%çYµÜ=n[œè…úÏupf9rf£™p"ŠßU«åÔ‘@J‹9‰°·§0‚Z¸ÜïÐ3ª¶xÄɺ‘œ{uþ|qõB#NÒj%lj«wìC";[ùض€?ΘŽc]E}ðÞÔ»G¤¦øÙdK´£Er—aÜõ -Æ¥è6õnä&¨c -8TÔ]pç$nUï}áÆ¿ïë–|l"&ô>ý‡ñŽë©Ëº,½Ë -K‡ó=ÃOì6MßAc.g’›Òeé}-›Š}ÉdÂC=€‡ô¤EC¾¯êCEæ5S:yÂ"Qeþ¥Š Õ)=#ˆµ`\»»Õ0lº˜:ÓÕ! `;d‡ÐÁ|JìÛǃ†æ׸Åg¦b×€l÷-›Ø˜Œ5Ó]Áþ8–Œ‰qUc+Å nQw³É·HÂÂâFè¢nÖ’åû–ê1·RŽ}.„múæEÚÅhHeZQEn¡¡*Êo³ì¨P_¼;¿ºùþ‚˜]¹
2|„yjZnƒÄ]E/ò*ÔëŽ9ƒ^¬‡¯3yíR†»ªYƒ)#è¨Xp“ˆÝýÈßì¬ÅVÆç8Ps>ÿ¯G&ÈáÒÝ®©Sø‹z™îšöt*…†%xa€x¥
Ã÷SºêŽ5¡KþÑ ƒŠœÀ%jxMõfvj?iµWm’ÿŸjHÔíð{R·èuˈuš@êo$oj‡xGq#´zŠÃ?¦w"'w÷&ÅC4>‰à ‰Ü‘oÊt¹(Wzr3®Rdh)Ÿ?‰_^ÿ©7͇¨x¼“Ñ›ËLæ¯.>Øb-Šâõ›ž|ùitFª_²ƒøï7 FðÇöäGõíer?ûî`>¼;\«ýüÝþ‡o¾yòiäR×¢=Î÷&Çzéó}È -nYwõC†´ì?þˆÎ&&#Dô‰† Ó6Üöéfr}¿ª(8‘ˆ-–êÞtx!tV×À)ùW®¹†qøð!“ØPP`y…Ù{ Õ~!Ó®Ë#É=CËÇñ3¤¿ëJ¬NþqÆ_´ÄÈ: ÷7ZÑÝ‹%mt¸l ’7B M×r½fÀªÙ@»#!«Ìõó^%6y¤dÒÉÐ4h»¿òoŽ¾Ÿuî÷Ph±N˜„Þ7 -š1á1q–ÓdÕèÅñ¨gS–z6Ç‚[5ã§: çÕ*_¥ jü±£Bh"âéÙtøl×ݨÁk€žRQo–·Mx@6ýÉ éOF¾é•:ýdÔé'ÔéOô7«Sý¥ÝúÔ{9º{äžxÝæ]zúŸßÒû&D†©$‘Ý3ù¸Kæ‘+ô"å6,b{lz÷êþWÛÿgyÌendstream +xÚ¥]sÛ6òÝ¿B“—Ês‹o‚—郓8©ÓÆqßM¦½>ÐeñÂU¤¬q:ýï·‹(R¦ìdnô@`ì.ö{!>aðã«#&5‰iÆõd^ž°É-¬½=á~Ï,lšõw½¼>ùþŒ'I”a&×Ë.1kùäzñûôìêêüòõŧәÐlú2:iƦïÏ.ÿuö3Á®N1={{þ¦BÅ6qþqýîû7ZöðË$‰b¥‘-ÄüëåëWÑ«—opëÉùuÇoÿNœIdöÏ“ßÿ`“\íÝ ‹dbõdñ$“òDii%e€'O~éöVÝÑ1ii#mE<"$!Æ„¤“ÈH!ÝU®WÝWñÞVוFøëÖë6¯«†ö
P*%L„}M›¶Y™UíéL²x:¯«6Í᜛ý‡1q—ù•"Ý6YQ–cÁ¨ˆi£=îE¶L·E;k²Í]¶aÅÔP`…(µÜs°¬‹¢ÞešÝÜÓ·]ùmUZ:>&3 F Ñr%:)l`ŸàÓt±Øœr;Íš† +G1ÓñSâ1LÉC=NbÖ‚ž·L^(¥i™¶ó•&è(²†Û¡ÉæÕíXLì :‹$£¶ü0¨ÁÕ— %ÇŸåÁŽiBÆeYpfëÙvÎkmMt²{›j‚ìaKphˆßy:^ ~F¢‡„¼tD¬f
Q›ÂlqMÃ1¨×\×›vD2±Šâø¡o2ãc¬ÄXãc¬1ÖL^7j}4ƒ!ä‰*›xMGœQ✎jݲn=*ïæ0ò"s1Ö ƒK)f‡îå|Šñ)¹FÉ ŽÜ^€ãAî$EÂ2Lç^ä[°vtYÆû€ö¾Åö¾%Ä´ƒáT]Øý*V÷Š²½d¸
trÏcJ+ιÆý3 ÞG.ñ¤'i¨GÆ< *1ïI1ëyÆ(²‘¸s%9W‚¯w¥Ø»|ÉxÀ˜\ìÀ‘vžÈ®€ëª‰z»™g3Lé˜ÎÞ€K
eþº‹ƒ3˜b'2»3ct´ˆ¸ÑÃpÒ`Õ>]‰XNç˜È†A +;xªöõ –õ†g¡¤Z"%/UŠ„/(³`ZéÕÓpdEÕœ +Þ +h„ÌA>,·Xq#)ÆÑ´k”ׂ°nÄoJ‡}[‚7{¤kqŠØ“šâƒR<ÃQµ-oœ]".pª7›,a¿wi€t Òí«=HhÁÙzn b¤î‘3,ùIÐIr˜á… ª¿Ív½.ru¨ê†‘Ã(€ãèÆoòñ +ñUM›¥~â$ŠxG%¸0ŒQ1xg&§ç©SÛ©ú®Ø³Q¼ ÊôsF#‚hÌß5 …§PîŽwµ‚ß;&LÅ¿Õí“)Úî„w"7c(±îìû«ò“‘Õ]P{†ûÊq êF¤&M:!'‘1¤gqP9;Méjqä̾Îd—÷¸òû|ve¤Ÿ]pËhö
yäHfgÐK)ñx¯!"Æûð™B14Í[÷Hã]Þ®°ÌgÎLBáòÞ%P²À&¤„RðÀªtKÈÝi[Kq
ØpÑí®mbu`Ðáåä¡ °Ø²2˜eZÜÖ¸M9æ䜹¶Ók}1¿HŠ¤Ó¬šoîC{¤nºÆ<x<à1”L¶ëŸŽ=@HßorÕœtå̬ëÔt¾ÝeTmqO‹uE#1ýñýÙ«Ùûךä$
Õ—Ã@HÙÛ8— +Ž´Ôò
ÿþv!:–L_OÞ¢W‚(TùªLç³r¡_Œ5C˜(2â”MŸ™7ï—ÿUòCóE÷7B}¸ÈDþöüKR,yQ¼ûðâ˳o×FÇ´—ê·ÜÀ¿€\À©íÙ¯òÇ{e^þ´K~Û}Ú]ÊÿöÓö—~ ®Çþ‡Ã?Gþ5dsÿ÷”û?iUIkÅøß endobj -2651 0 obj << +2659 0 obj << /Type /Page -/Contents 2652 0 R -/Resources 2650 0 R +/Contents 2660 0 R +/Resources 2658 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2649 0 R +/Parent 2636 0 R >> endobj -2653 0 obj << -/D [2651 0 R /XYZ 85.0394 794.5015 null] +2661 0 obj << +/D [2659 0 R /XYZ 85.0394 794.5015 null] >> endobj -2654 0 obj << -/D [2651 0 R /XYZ 85.0394 513.4321 null] +2662 0 obj << +/D [2659 0 R /XYZ 85.0394 420.6717 null] >> endobj -2650 0 obj << -/Font << /F37 1026 0 R /F53 1313 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R >> +2658 0 obj << +/Font << /F37 1026 0 R /F53 1313 0 R /F22 961 0 R /F41 1218 0 R /F21 938 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2657 0 obj << -/Length 2274 +2665 0 obj << +/Length 2225 /Filter /FlateDecode >> stream -xÚ¥YëOãHÿÎ_í§DÚôöûqß²ÀαÚY`V'ÍÌã°Æ±s¶Çéþø«~9NÒF+$ÜÝ.WW×ãWU2ÁðG&B"i¨™(ÑÀDLòÕ ž<À»'$ÐÌ#Ñ|LõëíÉ/¿151ÈH*'·÷#^aÉävùeú+"Í€ž^_žÎO¯.ûp~9›ÃŸ.>}:¿<»ø×lNb Äxúqqùyñ‡_û43tºøp~3ûvûûÉùí ÖXt‚™•éß'_¾áÉNðû FÌh1y† FÄ:YpÁàŒÅ•êäæäÏáèû4© -‚e’&tAiJ É(sº¸¸·g -$9;²Ü¬…BB (¿bL«âçÙœƒ²Ë:¯6Kg»³ÓA32]U/~!*{é £±ï2öÅ]áŸÏmÙ÷pP϶³‡A×ÿÌgÌM¢`s;BFêdm6ýzÓP0‚§§ÍjUÔ Â– -!®Ê°xN+bÂÕ1â”E)F1¡¢‰A©}ÛT]J±à x „Cõ…•°óîvß´ æ’#À›ku¶*–¯ÙMRD¥Œ¤^]ÑÛ«.DÁº-NBÔ0 ->ÄùÁ¨¹Ëºb.ù†DBkij¶É›e‘87Hªß -b$â`wä.òGZB’øé{Ý<×~¼®2{äÿô~jÕì™Xñ‹þ'?ùŸì G&ƒ“¹Àcie¼Ë].>žûsßœ_Ï ký7·ÙìâÃçë…ÕæíÅÕe:Š©@TiãïžHgg;|ÚÕÕÆ"¦Ý…·à 6>6ÞKÿÖÅ<³</Ö½§ôÙî”.›ºdõÒÓÄï<³¼y¨Ëÿ|(Ã`»Ò‹¼´›Ç]KS˜œ¶|Ž·&BF"äy%Q`Ĩ‰)‚Åc>ú¬ø6ÝÊf~ZÖIq 2…~OAΆÔ%¨áÆLoŠbOŽn¤aæò^|"‚ãê8€Ì9HQ˜ìÀÞèˆÖñÊÚ?}Þ´¥ÓÅå™ÿX,We]v=¶»t]ÜÞîu>û˜Õ›¬Ú‚“,‹>+«½#4nÎCd,þ¸¹:îüÖ¾b5ü#?‡ô<J‚ûïbÚuâ×ÝÌŒu«l2£ÿž&@¤¶˜+wHheÎ8(…Rv´³ø|ûÏ«ëãj¹ -‚ xƒoW)c*§˜ªRª_·´· †è··ŒD‰-w"† -ÒÞΖg -16#S0„Y¬™p¸¡q„UÕ<§³<# +xÚ¥Y_sÛ6÷§Ðô¥ôL„ÿàú¤ÚNêNí¤¶rÓ™$´[œP¤*Rvss÷Ýo)R¢-g:z ¸\,‹ÝßîBtÃNdBÃÌDAdLåd±:‰'ðíÝ
<Ó–iÚçúe~òÓ[®&†˜„%“ù}O–&±Öt2Ï>E¿šSG7×çgÓ³÷×oß]\ŸN©JD³.®Ï/ÿ<23pÆqt5»þ8ûiN
‹fï.nO¿Ì;¹˜wjõU§1w:ýuòéK<É`¿Ä„-'Oðj›¬N„äD +Î[Jqr{òG'°÷ÕO5 ã ±… =[F¤Ôb¢¤! gÜÛâ?»=üô–±ç”K¢)a‘0éY/Kؽˆ£fiaÀM”ÞUiöïtµ.ì› l°¬&ŠRº:!›2[Œ¬ÈÑÒÈÀô”ʽû†Keö>Ý
·uP +\EµH‹eU7Hþƒe˜"1ü(¼PäJËlOÖWÖ„é…ÍÂéjêÔžL)£Dª<Rb¤d^cØ»›G)À_8øËYµZðæ35UxúUhônð)쨸Ñþ´Ú›Uz»æ÷ª¢§e¾Xâ—ÕEÓ(-ê°ø]’ÙÏqÌJ¿7 çån·Å¸ÝFK«DÆn7JE‹ªt¶›´É+7]éÈQ +‹Oy³ÄjŸAóð±ìFh|÷Ñ.6§TG¶qÖƒàš/nÕ±4icW¶lž—Y¾ +¯#ò&LÝ)‹ï‹"ŃrãªlÒ¼ôœj·È]ZÛi"ðÅ–‹*ËË|«îŸShDÿÁÒ +ØD`þrÝÇwB5} ú¹ñ{‘ª +6„C,韱â·Þ_U7Ͳë×[ 9*r±ÜTU“åcuôaTvîÒ Ý +Þ˜<& +0!•èì€è%†ü3§É|Û·¯£l/Ž}‡zhn@ˆÌý*—ŽiwW³WVC°W6¾qmyîÏ@c¹#GÜ¡í?þ#b÷‡‹pè¢YW»Íåjã ”ÛUì@õö/‹CÝÿ'y”endstream endobj -2656 0 obj << +2664 0 obj << /Type /Page -/Contents 2657 0 R -/Resources 2655 0 R +/Contents 2665 0 R +/Resources 2663 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2649 0 R +/Parent 2636 0 R >> endobj -2658 0 obj << -/D [2656 0 R /XYZ 56.6929 794.5015 null] +2666 0 obj << +/D [2664 0 R /XYZ 56.6929 794.5015 null] >> endobj -2659 0 obj << -/D [2656 0 R /XYZ 56.6929 613.6539 null] +2667 0 obj << +/D [2664 0 R /XYZ 56.6929 513.8248 null] >> endobj -2660 0 obj << -/D [2656 0 R /XYZ 56.6929 528.5855 null] +2668 0 obj << +/D [2664 0 R /XYZ 56.6929 427.0967 null] >> endobj -2661 0 obj << -/D [2656 0 R /XYZ 56.6929 467.4275 null] +2669 0 obj << +/D [2664 0 R /XYZ 56.6929 364.279 null] >> endobj 906 0 obj << -/D [2656 0 R /XYZ 56.6929 429.7784 null] +/D [2664 0 R /XYZ 56.6929 325.4767 null] >> endobj -2662 0 obj << -/D [2656 0 R /XYZ 56.6929 393.7775 null] ->> endobj -2663 0 obj << -/D [2656 0 R /XYZ 56.6929 362.3409 null] +2670 0 obj << +/D [2664 0 R /XYZ 56.6929 288.9693 null] >> endobj -2664 0 obj << -/D [2656 0 R /XYZ 56.6929 298.261 null] +2671 0 obj << +/D [2664 0 R /XYZ 56.6929 257.0263 null] >> endobj -2665 0 obj << -/D [2656 0 R /XYZ 56.6929 228.1126 null] +2672 0 obj << +/D [2664 0 R /XYZ 56.6929 191.2867 null] >> endobj -2666 0 obj << -/D [2656 0 R /XYZ 56.6929 131.089 null] +2673 0 obj << +/D [2664 0 R /XYZ 56.6929 119.4786 null] >> endobj -2655 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F41 1218 0 R /F39 1161 0 R /F53 1313 0 R >> +2663 0 obj << +/Font << /F37 1026 0 R /F41 1218 0 R /F22 961 0 R /F21 938 0 R /F48 1238 0 R /F39 1161 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2669 0 obj << -/Length 2734 +2676 0 obj << +/Length 3036 /Filter /FlateDecode >> stream -xÚ¥Z]oÛ6¾Ï¯ð¥Ì,¿Eâ½J×´èÐfy›°íB±äD¨,y–Ü,ûõ;‡¤dI¡ìCŠ¦ŽÈÃsžóÉ°…la¡ÂÊEb%Q”©Åz{AðîÃ4«Žh5¤z{ñæ½H–XÍõâ~3XËj[Üg¿-¯no¯oÞ}üõrÅ]¾%—+EéòóÕÍ/WŸüÜí¥åË«×w—+fe"ˆi¤ÓtùåæÝ«¾yÿáúæòûŸ.®ï{¶†¬3*§?/~ûƒ.28ÁO”kÔâ~P¬å‹í…T‚()D7S^Ü]ü¿_pðÖ}…†(Óˆ,8È‚QK½H”%ZpádñåPUEõˆr6 —ŒPÅ-ìtû*[¯ÖuµyÌ+”Q²\¥á£á‰ ‰Htø(-Ëú¹ñäo?޼Ñ^Z?‘VYdW£ ×J
v숙š@ÔÖ~Á‡Ü¯hò,löÎö—Ì,ëݪ¼»ßù®L×ù6¯ÚƸ©÷c^“¥ÁÝ+Î%ÀG›ÅŠ1b•âþxÑ0K„JD`.~ -À,ÇÏ2ÿâá%"i.-I¬3µó5Iž¢ñ¤žç?…d¨Í;HÀ9þJ·»2÷b -žbðM˜²"°ÑjHå4‹¬žÊ‰üÁ3 -ö;¹±½Â¿æ/Mñw>eAlH@ûIÞzªs#-K°eÙ˜»»]¾.ЪÑS ɽ‡ÂãÈêÍäUz€aÕëàpÎàE˜x(Ú£®ÑËχ¦
“y÷lŸó<P²°ªã8n‰ÿÁÐôÈŒ b˜˜@,Ë7é¡l½º‹ vÆͼ¶¹&–ssFÛªÚ¶×1mƒy¦ŽÚÞeDÛ aLžf#Š°6Ö5'ñ5âí—[‡Ñ*î1´„€Ó»Ù¸Ó à‰š8a¬kZ›ÿ#
/Ó²Í÷U)tYÖëôø%:ìˆýAFq‚ Ö^s$b8íÜجêäYZÎe¦ê‡Tóªï©œ˜ž¦[Â[)å™-;¢È–ÃÓYK$W“-o÷EH€¨‹à(õ§z¡9l·é>( ÞL2¯²îã* #u®òñÐgVNŸñðÍ9O¾3daÆ!øYÕ€ÿšò3ªPPMGåTóõ{|0†–Y|’·£~Í\Ô¸ù`ÌeƒŽ´wª8p¬¹‘×ã€Æg,8šºånÌKˆÛ÷OEØcë|2ŽºÔ;õoiYd~˜ÕÛ´¨Ž.ø¾ÃÕÔ¿6h8»2rX&¬NY´>fãP:ž†Í€êl:*›ÝYØìÐÚ¦˜Ïw’¯Ž(Â×1\ô„±qÔ¶
8X×`ó.ZåJ*/ýÇ©=?å!ËØ5…Žk1̶"š’XÑ×I%Ô2yXqY·g6_'ƒìl|%·Õ]*h*å™Ò‘Ùo -ˆN¤q¸s¨”bÇØx63 -Û!Õ¼Cë©œCkΖ:i–íœc¥ÎIÖúRç5kÑRgÄÛ8¥âþ9[~¼õÈš‚M 8Ä;*Yr.* -ÂŒÑÓ¨ˆ«û^ìßhœí´û1Œ—î›ùx YáVü»xé])T„LêïLÞÆ%CY×»‡tý5” -# º‚;!€'Â汈Ž\š3e÷ê;*‡Å6\!{êt¶~Ú×u‹ )!Ë´ -Ì“ÌõTîƱ•+A¾#öBåmmWy[;WyCº'Œ:Ӯ㉖ÓÊ—¬ýóXy[ßÙµfЫ÷áÍIÄCŽ@™dçoÆû^dYú¥C«ÓAòǵk¿$¸ù«ð*ÍV¡¤`¬ØLzôYgó^Y€}ì^†SE8Žvà61©9Û0@'-zs
Ìò>¤ˆåó¾h/Á]»Ž4üöÂ*!/ù(|BFœ` Ÿˆ^6=‘wûbY„'l ëOvÝÔçpêå Êf z³ -8ÖþMH¢ùYßE‰µâlN»±ì´©æ-¸§rP?œµ Ìíçj“|õµÖk¾¢µÖˆ±`»N]Îvµœïš%‰bgºf–3;µÝJÒwÚ;p»Aý\¹t -‡›ÉþãdVpÈ©ý>äôG·D~‡þê$ÀÖÇMä ‰"Šöuyç{Çí*xåÃ{X<-›î”}|΂P˜âS;†x]•/“tÌ鲨&/–0ìfå¡5öÔ]]k«m]—‘þ¸½#Ú -´‹&¦þÑô×tS—Έ#\Ïß'9ŵÛÁõD(VûµìjHË£·çŒºWçw°HÙ×eóš€Ú„ËéýÕôNÙ2=(b~Á}¼ãjZ°ÀÐEžÛ ±‡p¯L4
üUT]åS»InN³íp¯#â…TEÒïº`+gÇwßóÈÁ¿Z` Ô×#DšÅ#s£c;»»¾öû\}ºûù¼±áê¿SE
üÇ:;Èà5xá; v«ÒÆõ3ªÃÔñ¦Þ¦²-Ô¯M¶TWò%߄ĪZÓüìÍ/öÇXRêù¸Ûe»Šà_’D¢íE÷Ÿÿ`åø‡9í -cfúG‚J4GÖ1…Œ³„MYïÿ´å5ïÿ +xÚ¥Z[Û¶~ß_áG/pÌð.ç)iÒ E»ÙÓlm´–±%×’³ÝþúÎð"KZÊNqàQÒˆÎ|s¥Ù‚Â-Œ"TX¹È¬$Š2µXïoèâ3¼{ÃÍ*†Ton^}/²…%Vs½xØæ2„ÃÅoË×÷÷ïîÞ~øõvÅ]¾!·+Eéò§×w¿¼þÑ?»¿µ|ùúý»O·+fe&ˆi¤ÓtùóÝÛïVß}¼ûþý»»Û?~¸y÷г5dQ<ýyóÛtQÀ~¸¡DX£OpC ³–/ö7R ¢¤ñÉîæÓÍÿú oݧ)Q(aˆ2<KÈ‚³cÄ*ÅGÂP–hÁ…ÆÇû‡ï>½Ø %T¼2Îà#˜<©„@´RÅ…JˆT¸î*Ÿ.iÂðËKF¢Ä’|°$¨[0«ÆK¾m@»F/óS×ìó®Z#^5'&“Ã/Žu‰†³s`‚sˆÖMý;¥üóés65ÀD2³|ØV_n}¼…û2ïÊð ÷ühWúéå&‘™æ&È—ò9Áˆ¢DgTªNMÆ +¦Î÷e‘˜IpbÏâkÂ6Û.?v§€ˆƒzئð²äzˆQ‚T e€}&ÍDÊiè0öL,®8•Ë¢Ä»Ú¡•*‡V÷t“Ÿv¿Y7û=îݬ·y]—;ÿ¦ +FvË– >°3gþ12ã w»æ©ª?'ä'˜"FZuUŠÚ¨®®9svªqÉ2ÈD+à™Š2ñ!à©Jc€ƒü¤¼¦9A¤‘b 9ŒÝ¶ôƒ]³Îw~¸mÚÎÜ‚nT7þº9á“£¿yáCïJÎ
8vPµÜ³þó©®Ór“àëTï–Pl+4ÉÏ¥ã0.w²™LLdLN+'÷Ç•^Zÿ vLj¥®zL*ÀüÊ‚ K?ÿ©E»wK„µgºÍaUÞ½)vùºÜ¦Zÿáƹ©¯ÙÒxÑq.!àë‰)ÌØ«%BeQŸé
@øW6ËÍ攊¶ðÙY"¢™ £ü«j;ÔO<ÏÔó<õÛp•õruX$¨Îs´À¨‘-ñ,CÆÇú°Áu3mÈhö—®XîòÇæˆöãn'ÈôÁÕžGŸ`Vâg…ñøœ²/iIf…˜¨‡¨É"x\XRÏóŸ§Ê +ԉ氿òýa½ +Þ¬änÁ}Ó•»ç[ÆÂAH³|nNž Ý6§]O_×)Y0Jø9”Œd‘P1ðoûÀkÀÁz^cMÑ,N*æZE@7¯\œÏ¹p·2¬p:„7 œÂÎ1 9‹–Ÿ£Ò\Ñ™>ôô6)_Ú¤ü÷èσñk@$™Ën2Ÿ¨Ïg·Cªù춧r"ôŒ‚ýŽDnl¯pˆ„mõw9eA6Ÿe€ö‹¼õT æFZ–`;ʲ1wŸútá.¹÷P8p¹Q³™¼‚€>ŠæøÌEsTáÁcÕµX'AæøÓ cŸ{XÆk÷T–’…YØ` ÇpSü†¦G6`LÃÄbçŒÔ]µ3næµ-2B5í²¶T´©œ¶×)mƒyC&sÖö¦Ú%´ÆäeÖ"Q‚µ±®9¸xÀ׈·_BlF«´ÇÐNïfÓNƒ‚'î³è4†±Îeò›g“‡—ù®+u)>A:‰;aÿ½ëÌ ¦ÑÍ«žjB9ÕWT? º úHåÄ´}QÆJ)ä•%#QbÉQk‰äj²äý± + u¥¾mŽÁÚ¤æÇ €f3É@¼ÊâÇu@Fî\åçSŸY9}¦Ã7ç<ûÆE!ñüšjd&‰ÍÄ<¤šWMOåTóå[|0†–Y|‘·³~É\Ò¸ù`ÌeƒŽt(‘`àXs#¯ÇÏXp4uËqÌKˆÛ¡/ö'_è>õÎýåk¾« +?,š}^ÕgÈüq5õʼn¢Ê5#‡eÂê’Eë«°ÀGFíب.À&R9Ø®Âæ€Ö6ŧ÷w‘¯H”àk„®°ÂŸ06ŽÚ6 }9.ì Ç7ŽS7zÂZÓeù »¦Âq-®Õ½ +,¾NÙÙøJnŸª»%Œöåö\éH‰ìDgÒľȑBÌã¯f ¾Y0A²ÝuLCªy0õTLǘ,ÑFô– +Ñ\Î1‡BËUÞ*H#Pýµo0*ç#:1¡¢—gácPµài'æ쀆BtY¦¦>zÁ}hÁ“ª\ä…ìeÓ§§ âK
µtHV]¯h@Ÿ§T·•Kõå0‘G
én¼dºïSÔ…kCˆž%Â;§ÃЯ±ªi#&¨
ôc!äâÞçC×z-ßR]ph‘Ê9´öj©“Å1À9Uê\d/u^²–,uF¼S*õÏÙòý€¬¹ ØŠKQ‘A¼£’e×»ÁÌ=Š8»ïEÁúç~9§ƒ~9§ãxé¾™—nÅ¿‹—Þ•rM˜Ôߘ¼MÛÙÍá1_ ¥ÂH‚®à†b~l‹\……ÁE,©æ±ØS9,vÉà +ÙSÔÙz{lš.œIÀY¦ÕŠ_d®§Jp7ŽœX ò±*okcåmí\å
éž0êJ»ŽgZN+oœ²ñ×såm}gךA¬9†79e’]G¼Íï{‘»Ÿ:´:Ý$ïpܸöÛJ‚›^åÅ*”L ´Ì8ÔîÍ{eöqxLqá8ÚÛ4Ù·™JÑ›k`¦õ!E,ŸŽ\u®#
÷^X;ÈK¾ +„g+è'b†—mOäݾXVá +KÂü“U7Íɹ|ô|Ž„ +®'B±â8†¬åÐ@Zž<=gÔu¸Äù_=ݱٵ)¯ ¨Í¸¼ü2=(ÒÁÐç3®¶Xä¹{›ñÊDÓÀ»ªŽA”3Lí&¹8Í.âÞ$Ä嵤ßtÀV +.ΎϾç‘Ã(®ÌÚЙùÛœPD¦›´·Ìÿû/uç¿Bv'Œáé¸ ¨Dø±ÈîebÊzÿç»—¼ÿžÈô?endstream endobj -2668 0 obj << +2675 0 obj << /Type /Page -/Contents 2669 0 R -/Resources 2667 0 R +/Contents 2676 0 R +/Resources 2674 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2649 0 R +/Parent 2636 0 R >> endobj -2670 0 obj << -/D [2668 0 R /XYZ 85.0394 794.5015 null] +2677 0 obj << +/D [2675 0 R /XYZ 85.0394 794.5015 null] >> endobj -2671 0 obj << -/D [2668 0 R /XYZ 85.0394 229.9393 null] +2678 0 obj << +/D [2675 0 R /XYZ 85.0394 751.8648 null] >> endobj -2672 0 obj << -/D [2668 0 R /XYZ 85.0394 85.432 null] +2679 0 obj << +/D [2675 0 R /XYZ 85.0394 153.4294 null] >> endobj -2667 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F41 1218 0 R /F55 1321 0 R /F48 1238 0 R /F39 1161 0 R >> +2674 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F55 1321 0 R /F48 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2675 0 obj << -/Length 2590 +2682 0 obj << +/Length 2296 /Filter /FlateDecode >> stream -xÚ¥YÝoÛ8Ï_áG¨Y~‹¼{êö벸M»›,p@·Š¥ÄÂÊ’kÉMSÜC)K6í8øA5çã734›Qø±™ÒD[ng™•DQ¦fËõ=À·,Ð,"ÑbLõËíÅë"›Yb5׳Ûû/C¨1lv[|™ÿBXF.¿{w}³xûéúÃÇ÷×—f•âó7Ÿ?¿¿~wõŸËWˆ’Òùoo®ÿ|óoœû|iìãû›Ë¯·¿^¼¿Ä‹Î¨p2}»øò•Î -8Á¯”kÔì^(aÖòÙúB*A”"ÎÔ7¿G_ýÒ¤*%\hžÐg3ƈ;ÕDÊ-¸ðÊxóçí¿>ýáä|¤::[pM„Ô¨´«¦/·MÙ£nžº¾\wøò¶mºvÛW»u`»J·’>RxáƒòAÓTZM·X¶ÍýCÙ¸•ŽThB5œÀ‘^çë2-˜ `Mé‰&L¼8qžáÈ}ÃÑß倪Üæ}Õâ¾më½Ô{]¹MÔâéožšvÓUÝ¡Á#™Ñb¦@¥”™2ѹž°ÉÓ0±ðÆ“,áÈÕñÙ5¨ôË"ÇÓÀ~ûÅŒ2¢™±°£[–×í¶êWÁ\Ó}±2ÓòkäºF'økE22á"Ðu3XnÂ\2b¤`‡Ì· –B£• -¤Û¼)Úõ}U§¸‚F²L™C®Ý³\OHÉ-1&²û/²[üLp[¤DÞà9°ägÛ$Ù‚f&ˆù-Žœ4_S®¸†¦íÔ#ß½¿yûÇÕçÛ«O×âDðûÉq@ù„†S d!BJ9FÎs÷!€àý¾Ýâ`וøéî)! -ü3¢Kó€ï9>PyîN3ßl/™™·ß«b íWeâäœr@Æ^ GE¨ ÏêÑHiÆz$Î/ì -(ñÙ”eQ®Eí ÉЈA{è¿è>€ÀUÿ*še½ú€×< tù#Ë¥tÃÀÅUùeDÍ,6m]-ŸÒn>¢îz ^—MOPJf9a¼ -®ç€AyÕà”?YÁÏt›r‰Và‡6:ËúÁ²]¯½¸¯uÕ”prˆQPN¡>å]XZ -äÕ”™È¼Ïº™aŸÂ¾:÷éul”Á³†'®7|ÞҸѼ7{‘ÿd„s!&þ!™Q3ÿà ÄmLû*e[HYÌÆåÓD7Z -»¯›3î€ÙF lwu8kT
¾åÁC3(W2©¦ñQ«Ály]{§ÖÆÒKsÉ<ˆ!#aÜwçÏÁëOª“C*e/ŒGšEŒÉ±ñÂ-ᜠWÕǤŽ>äFÎÐî‹7´›ˆ©ÊAšPˆLUP”Ο›j_/!üc•%ÎM/sBèºí˸+Èy¬À¡žÇvA´°½ê»²¾‡Î›xúˆç[æ9>ꌈCWòã(Ø„CÁ -NÅ»¡3“ˆxƒ½T8ßâÃNÄ@¯¸½¹úèFÙmÁϨž¿q=ø÷¼írÕV˸gŽfu^Iå|µÎ—‹u¡œ3J†¯!f$ -Ê¥……g/D^2« Ž'MA¨’ϘfDuÆ4‘Ê›æïTÄC;m•8n»'ñl ççe¨ÂMâ)"hm"Ý$à“¡’„O±‚©X2ì°&4˜Q¾ƒÉ¦¯–!ÝD!ì>n~÷Ru‰†[@·Ã¬œäÖP -fihªÅU¸ŽZH -=»+#ò) X¹E`é¡ÞZ%o%˜»pŒ<ãmÄT™’Øl¨q›v›`¥³ÑIã-Ä.([²u8õ&ÿ„ÑãÎðXu¾a±¯ cÅ‚º“Šˆ˜FÎI½ŽÚÍ<È’#ë®Ü䡇I€ñ²YZBUÌ”jý¾ëöÑ·4Êß9ø'J
ƒqØãŒ÷³1 ªÆ7³ó’<W©[š¹ËT{p¸q‰ORFÂAÇúä6î‰þƒàÿ0Zïº>j +„š–#«ü{y€t×y?…Á€–ßóº -È»S7vÛ…ä ÖU]?ôÕ‘A]ö}¹íUQ=@QóÙÓbàY7å¶j‹î$ø1 ÑbTvüÆT§Áo ònÿíT^:»å—Ž·Lå¥É–¿ïªxÕ½n_E@îöÙ*hÑÝS+E¤ -Jô-£7›:oò¾)/Dv¡«ÚuùC9¹÷8£o&“08¯ïÕ}G*¯ïm"Ù@Cm†þkz;-/¡ÄV\œ—n JˆwVL=•ošn"ŠRó®ÅÖoYâ4"€Ò"
´9ÎúZÓ
Æ—vŽ$ -$cº;à‰;7e×…Ë3£Iv”(±¨Õ.0îZègªf³ëIâ”ÆýÝÅÙÄÍ@Î÷“rhÅ»IË¡tŒÊxMæF|‘SC· -‘:4áÿ÷?ªûŽ¡Ì€Ž•§‘‡gŠÀb…rb?Æâðßë±ìÿИ®`endstream +xÚ¥Y[oÛ¸~ϯð£Ô<¼ŠäÙ§l“öd±M²µX íƒjɱP]\KnšÅþøÞI¦“ +@ö P#IHZ°°˜æ$âß=ÕñÝÐé§Eênç
à JXÒÁ#-ï›}Ñm½½Æç0¤¹@ú¸nûÑ·ÿD )÷›@×uoºsNâŒL™ï#,™@*“îÓ:kªMQƸ +c§Þµz®í‹\OHI5R*°ûDZ[üáø"À‹9°å年²ÍšP9ó{i¾D—+¤ÀÝ#ÒÅöË«åÛ×w«ëÛ›~Ó)çzÚÄ£À|Ì@ÊIæ=$7ž£ø<5?Ì;Ì76>ÁàÐæîÓ×Lj +5”_ýP“'/ÆÌ’^ +϶¶LVÄ%v<¯š^[0ËËôkãÜÃL#)’¸cá£Û÷ýP¸Aö_p) +sׇ+"™¬0ÅCñ’¿@—`ä&x¾Úz˜eù&=”¾£.Ú#Þè¬H ßÂ/ÀjHuV=•…Õvz$øÖò…#QäÈ!T$ؤ&GÞ틺ówO½ûm›½×J{€4·÷»-ÍMËØìLPj'wv¿?˜Ú®
M~,”s
+•¯Œ¼ &Fq<jFO{Á4ªgL¨¬i¾Å<úi-Øqß=òwóìÃ{^¶ž*"ÜÈ߉@œ€ÖFÒžî+IØˈÕ*q-ÖˆÆ%dC”`±îŠµO7ƒw{™s³Þ»™m¤ãfP†ÍG¹Õ—ÂÓ,
£ }µ¸õRŽ¡i7eä$ŸBË÷.°tPom£ÏÄ<Äžá9b¬LŽ´ìkܺÙGØ@Mt +'[²µn8èM~ÞcîðP´¶!¡¯ÀCÅ‚º£Š ¾“¯Òë ßL½,©cÝæ»ÔWâ°a</}–æP¡ÇÕø¦)ËæÁ¶4Â>:Ø_'5†nïV,Ά$N5æºRÏstÞÄži°4Ìzr¹a‰bF`¼¶]…3þaàñ£êÐvþ¢L!ÍØ^ÛôG>‰t«´‡A-¤eá#_èNÓ´ONÔÚ¢íúÆ:0(ó®Ë÷§ÊŠ{(ªC>{ÜL#ë.ßMÖž~找•žhN>OcÿýTFzæ°>M‹e£ÁaŠðÀ]5™ _Ûå5g +í±eBtòŠ³mƒ3@ž/veZ›gý°5ÿØùNêЦ÷ùè±#¢c¯á—EC8îëÔÿû1OtOdJѸ +©6'A(£C"ù1<üŸmŽeÿëÿ±Àendstream endobj -2674 0 obj << +2681 0 obj << /Type /Page -/Contents 2675 0 R -/Resources 2673 0 R +/Contents 2682 0 R +/Resources 2680 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2649 0 R +/Parent 2691 0 R >> endobj -2676 0 obj << -/D [2674 0 R /XYZ 56.6929 794.5015 null] +2683 0 obj << +/D [2681 0 R /XYZ 56.6929 794.5015 null] >> endobj -2677 0 obj << -/D [2674 0 R /XYZ 56.6929 751.9601 null] +2684 0 obj << +/D [2681 0 R /XYZ 56.6929 751.7548 null] +>> endobj +2685 0 obj << +/D [2681 0 R /XYZ 56.6929 684.9927 null] >> endobj 910 0 obj << -/D [2674 0 R /XYZ 56.6929 711.8811 null] +/D [2681 0 R /XYZ 56.6929 643.4496 null] >> endobj -2678 0 obj << -/D [2674 0 R /XYZ 56.6929 674.813 null] +2686 0 obj << +/D [2681 0 R /XYZ 56.6929 605.7386 null] >> endobj -2679 0 obj << -/D [2674 0 R /XYZ 56.6929 642.3093 null] +2687 0 obj << +/D [2681 0 R /XYZ 56.6929 572.5919 null] >> endobj -2680 0 obj << -/D [2674 0 R /XYZ 56.6929 574.7324 null] +2688 0 obj << +/D [2681 0 R /XYZ 56.6929 502.9079 null] >> endobj -2681 0 obj << -/D [2674 0 R /XYZ 56.6929 501.087 null] +2689 0 obj << +/D [2681 0 R /XYZ 56.6929 427.1554 null] >> endobj -2682 0 obj << -/D [2674 0 R /XYZ 56.6929 314.9678 null] +2690 0 obj << +/D [2681 0 R /XYZ 56.6929 238.0538 null] >> endobj -2673 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R /F55 1321 0 R >> +2680 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2685 0 obj << -/Length 1425 +2694 0 obj << +/Length 1802 /Filter /FlateDecode >> stream -xÚÅXÛnÛ8}÷WèQ*†w‘ûæ6N×EëdX éƒÉ°¶äµä¦é×ïð"Y’•¤‹¶Q3ÃáÌáÌ!e`ø#3̓Xs$0ÁÝv‚ƒ¯ {;!Þ&jŒ¢®ÕëÕäì‚ÅFZR¬Ö_ -a¥H°J?…³««ùò|ñç4¢‡¯Ñ4‡f˳÷Nv5Õ4œ½ßÀ+Ñ1#¢ŒÄáìÚi—³óéçÕ»É|Õ†Õ
`fbú{òé3RÈàÝ#¦•à#¢5
¶.œ±F²™ÜLþhv´vê\($(—A$($®Ô8`a - „u±´ëÚÁ-¥ÜL5O'1oõã.ƒ&à±ö¨‚<ÍÖÉaS»—¿²Ç£µå•·K‹*2zBHˆFâ¦J"Š…|!p†´i,gdƒQᲬ³&¤vȱX#FTƒœk|›•ÔæWe›µËJÖæçôwIQ”µÓ|ñ²C•¥¯ÌP†€Ø]æ´K—²•NòÅ¿»íNp›<:iš¯§D…ëlïë½y-··Ò&@‹äÞ+‡Õ½ÁØ°V¹«ó²pã6Û@ài2p£‡¼¾w#_jg¼×#ŽeÓÑ‘ q oâÖF'„èYGÆIBÅóÔÔµzššZ«nhCjŠ•n¨éGYŒRSÌ€nŸ
¬µ‰lHM1o?4».€L:b„¹Æ¡‚<GG„AòSt$ $éñ‘YÑó‘YÈò‘‘Ùºå##H -÷løÈ(>2rËGFèªÑ¸}–z"¢ =Ù¯üO9ˆÐ8î³¥MíS×¥fruøâ•Õ´"Ua²Ù”~j“Iåý”N&N -ÓÏž?]–åùØùÓZõP;e¸ºÃgõu”ïb€ÖHã:Ë–6Ð
‰c$´ÔÜùüæÍõâjµ¸\Žœ%ƒÂëGÛ«#×ëæ$i6Ý^ßü®k=Üu£2½º¸úƽA‘63¾IÓÁNlï¸)
Œ”†µŒfççרS"`lïÅÖ§<j·ú¨{Ž(ô3%uJf=¦ ÷K˜¦5úEL7L£=Ó|Í -(8H{TCŠi˜µ:zP
(²}Ë4‰WÃucÓJQÃùÝ2I×
3ÉSßã +xÚÅXÝoÛ6÷_áG˜Y~ˆµ7wɶkš%0 ݃jÉ0[ò,9Yú×ïŽGÊ’¢$lRÇ#yŸ¿;ZÌ9ü‰¹ÕŒ«4ž'iÌ4z¾ÞÍøü3¬ý0žg˜}®·«Ù›ïU2OYj¤™¯6½³,ãÖŠù*ÿ-¯¯/®Î/;[HÍ£·ìl¡9Þ-¯~]þL´ë³TFË.náS¤ILÂ"ŸáÑò†V¯–ï.Î~_ý4»XubõE\¡LÎ>üÎç9hðÓŒ3•Z=€ÎDšÊùnkÅt¬T lg·³_º{«në”)bm™–±™/€Ù$tíSƒqÆ5`‘ÄœY%dg0)¦¸Ð`‹*úæ{{œ)3Vi89Y•×»M¹-Æ&:fqjí¼ïé:® ñdïR¡S[.†òÝî‹uù‘sY4g¥ã(ÃAGM}<œ "×IZâɳ6#ê¦>ÐäsQ‡¬-«ÏÄÒÞùýÙ±½«åX«+#UtéÏôL:ª÷a3X¼“2bTQ°TkŠÀæ±i@å5J-ˆªº%ÒÞI]ß—yA„Œì÷=% "Ušz¼É‹û7^/Ç;0›VóPO<µøóXÞgÛ¢jé~8¢\ßà‡WÚÉWl²ãÖ³ô-Š‹hQéæªhÒZXÃê 6ù©DEµ‰þ(?Õ™;('JYí-›ÐÒbüK13sBGm˜Š“`¦xé“*Ûù™ÆŒ†õ]vÈÖmÖÁÀpÖðœñÀ§ëªÍÊÊE ~ŸŒJ«”Ùt¨<±qäѧ‚¾M‘¥¬ .²œÈd[<!‚' ðT,£‘9©šm‰üy,&ì(cË`=„€÷@>eGÎba¬g,«¼\gmÑö.kéÖ‘aÍùô— +CLÅ:º«›–f»:/¾¥:åüŽ´â¯l·ßzgt±b¢âž*9ƒxÝL§ÏÙùÁWMâ&·nðLYEãqÁí¥Ú×ÛrýHsBÔ˜À„C$ j2ÌŒS®úxÔª'`Æ9!@pËHi`êYŽ
!7÷I“RƸG¢àWû¸/ › +_]6TÄv£cIƒ€În û VwT'8”R,´4ï4ÍÊöŽf>ÔÆÅÒ +½+·$ÁòçÛ÷Ç6¶R˜”b·!|äðæ„âÚ}Ši\Ñã$Z"º+TÚ× ôP6t®o/¯Îikê%ËwÐf6-¼*(~ytS ̼„Û@z—UGh'd°ó3¦ïÃ'¶ +¼¢sÈ61i»üuõãû›×rYA×\ÞÏ·îqãƒá»ºjêC[w§{chÔôçÄ +š ÿ0ÇWöÙBpèr²Ã>%Ùà‚’Ô"]M—R +¾tlWw‚“ò-ñ¡z³õøÀ£Ëk³<'‹6Máe'|
8Fs}ð<ûúbêüO¿œÞL™ï±ª÷MÙŒB^ àJº$ÂLá8 x +
#Ì_¬>ý#ÆÇSÕ§ãí)^hÅ’ÔÊð.Ø£Áü{ot2qv ÁžIGž0=°ÊùÅíw7—׫Ë÷W…¤;;!ì â„YèC .w½›÷yšŽ}ŽK˜©—×÷±g¨ò°ãÞ`þÙ5Â<&ÃíºZ,ÏÏoX/@€Ù5ÅîLsZ!`õRª‹'öõÉ032Þÿ3S_ð×QÆþ3”™úEðF›ÈÞIø¯;ý* žTÖ>ó#– *A(TN$z,ºiPðTö¿Œs<Xendstream endobj -2684 0 obj << +2693 0 obj << /Type /Page -/Contents 2685 0 R -/Resources 2683 0 R +/Contents 2694 0 R +/Resources 2692 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2649 0 R +/Parent 2691 0 R >> endobj -2686 0 obj << -/D [2684 0 R /XYZ 85.0394 794.5015 null] +2695 0 obj << +/D [2693 0 R /XYZ 85.0394 794.5015 null] >> endobj -2687 0 obj << -/D [2684 0 R /XYZ 85.0394 608.7316 null] +2696 0 obj << +/D [2693 0 R /XYZ 85.0394 526.0765 null] >> endobj -2688 0 obj << -/D [2684 0 R /XYZ 85.0394 547.8766 null] +2697 0 obj << +/D [2693 0 R /XYZ 85.0394 461.8446 null] >> endobj 914 0 obj << -/D [2684 0 R /XYZ 85.0394 510.4382 null] ->> endobj -2689 0 obj << -/D [2684 0 R /XYZ 85.0394 474.6444 null] ->> endobj -2690 0 obj << -/D [2684 0 R /XYZ 85.0394 443.1856 null] ->> endobj -2691 0 obj << -/D [2684 0 R /XYZ 85.0394 379.4087 null] +/D [2693 0 R /XYZ 85.0394 422.0598 null] >> endobj -2692 0 obj << -/D [2684 0 R /XYZ 85.0394 321.5186 null] +2698 0 obj << +/D [2693 0 R /XYZ 85.0394 385.2356 null] >> endobj -2693 0 obj << -/D [2684 0 R /XYZ 85.0394 248.7084 null] +2699 0 obj << +/D [2693 0 R /XYZ 85.0394 352.7463 null] >> endobj -2694 0 obj << -/D [2684 0 R /XYZ 85.0394 187.8534 null] +2700 0 obj << +/D [2693 0 R /XYZ 85.0394 285.5926 null] >> endobj -918 0 obj << -/D [2684 0 R /XYZ 85.0394 150.415 null] +2701 0 obj << +/D [2693 0 R /XYZ 85.0394 224.3257 null] >> endobj -2695 0 obj << -/D [2684 0 R /XYZ 85.0394 114.5065 null] +2702 0 obj << +/D [2693 0 R /XYZ 85.0394 148.1387 null] >> endobj -2696 0 obj << -/D [2684 0 R /XYZ 85.0394 83.1624 null] +2703 0 obj << +/D [2693 0 R /XYZ 85.0394 83.9069 null] >> endobj -2683 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F53 1313 0 R /F41 1218 0 R /F39 1161 0 R >> +2692 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F55 1321 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2699 0 obj << -/Length 1821 +2706 0 obj << +/Length 1183 /Filter /FlateDecode >> stream -xÚ¥XßsÓ8~Ï_‘·Kn°Ð[’s”Io˜\GM<Û!v¹¿þVZÙ±S·…»ÉƒWÒJ»Z}ûi6¦ðcãHóx¬âD”Eã4Ññ -ÆÞŒ˜× ¥ «õb1zþZ¨qLbÉåxq×YKª5/–Ÿ'/§d -KÐÉlþ2xûþâeðzöéæz°8|rq}}yõjöiðˆ‚:èR:yqusñö]OcP{s9Ÿ~]¼].ZǺÎ3*¬WßFŸ¿ÒñöðnD‰ˆu4>@ƒÇ|œÂH(¢éÙŒæ£?Û;£nê`0%\H>
ÎÆŒ‘8Šx/QL¤àÂ…c~,Êm•Uç[Œ(-ÅX‰HFåi¡æ8÷€_D1&ÁÎÎ
R£e½Z™b—Ë2Ÿ‚ÿ9(¬Ï_ƒ±ÓL-ˆÔ°oê¦ûüÖìPg@HÂyȼÚ×…š¡F•ýcÐì]¶1E’œÒfÀ BZFÑ8á±ÝäW—ó—g׋ه«vÖÉ~åì|—¨Ê»a‰ˆÖJxŸ@Óì’ÚTÓ@h5IìGN¾PÊ7»Ê]gHM*S£Ny‡¨ëç§eQ'Y‘+Tj&mMšYE³ÄŽoû¤¨³úØ_j[™ý²š²]ˤNžÙ]À±{ǃ6Xàÿa¥kLž4)P¸5øÝWÖœ•’ÊñS•ûÝ”éIê}û5EíúËí;îìæF½6^LË<ýŠ¥·Y«Úä¾óÕÞ§¢Äo³%+/Í÷,5dèìiÿÌ/>¾¹yyµ¸O>¢˜ªN“®V“½÷Ó¤Õ²–Û´ˆúhÖq$î¥E×3FCÜ¢wÕð‹UFcŠˆõ›Ù˜[¸lw‚A¶ËÃÙá϶ËÂ+ JŸA#–ÐßOj¦9‰´ˆ’¿çšÐDq¦½ÚÑ;ÄNŽ–9ÚKlÆ ÁPô ã}I¶[S,þ׋Կæ˜tùZ
㨟0 -CV¥Á:OÒÀžÃýÖ¥¸u/$J(,@¯NŹs@QŒ‹Þ[ —su:èÆ»k‹XŸ -æXõÁßœ¥¿+ËͲ¹"¿›]•ÁFû©öbvõê'‚üTÝÈ…€xÛý÷º±»ÄÃuc«Õ‹Ú]æ£^3Bé+EÃÁÉfU¶×¶ÌdMéà0„òfÞÅÞ Ú”SþkÊ›´!C.xŒ!w=1~ìqÛ›µ¶
)€BV¤›ýë¶þD"QX'^5A•Ûý -Ûi²¯p¢@Àó·¿£Òb>{ƒˆ+!Sxüb(¿ã2ÓrƒŒ'›²X9@\¯]mç$?¼ÌV¦ª½ª)V®âÙ¡«¸N*?äeÊ&ö\lMþŒb™A…ð›á€Gûƒn0IQ¸Íêê4›G²¿1¼sýjaxZ-ŒšÕ ×Ns]Íj š:õ%ƒU-QÑñ&|}e#pnåÖ֛£ƒ‚_¡WA;Á¹¹©ªdåJö'¨ÄSÐs¥,è¥åÒ‚‡5ö’jhcÖz¾…¹·ÍÕp*};%ó««¹¿.òíÆä`Й«H»¦‚ëI57NfÂ¥Gë¤é1¦@ɲä÷ €væû=pAŠ‰²/l¡'o˃JšÂAh„½}ÜðÉõó䈂ųiVmö—mðµâœ¨žõ¬hsi F…9à‰«./†¾f…^ëò3kSà O)Ûi1ƒ’ÅxýqƉŽ”çž¡«âŒA¤&:ÔÍ»4/—ø8«ÐL½.+ƒn4ÈU‚j‚X«ê²ÍUPóQ -°ð䈖Âö{qð!´ +xÚWMsâ8½ó+|„ª±VÖב$l&S’
¤j«29xÀ×b›±ÍdÙ_¿-K66vvg‹¶ôÔÝzzÝjÃx\ ¡©ö¤Ç„{‹d€½7˜»‡ñkßF]Í¿üʤ§‘TxóUË–BX)âÍ—/Ã+D4 <¼LŸÆÓ›‡û‘Oa^
Ç“éÍÝïðÎ1 †ñð~<}¶c#M‡ãÛÉlô:ÿ4˜Ì›˜ÚqÌL@ß/¯Ø[BøŸ1¸÷/ÐÔKgˆŒÕ#›Álð[c°5[-íå`D™ =DPâ‘ +”G»<ÕçH)É\LµŠ‘Ï”4R`J4R0CYÞš’Ã"*-&[Ù‹uëÛº1 zÑ6ZÄ-íÀ·]˜–q¹ïšÚÑn™ùõ™!#¶Uøuà¾%ËVŽ÷u¼X;͆©}øêD¼+Œ»JáEGéE¶ËGD
hü›ÿ(-«ñl»·+³ù +Q®£¼N$ +2CNζnñ¦`Uú^´h‰þ4©‰¢ˆ+Æ{’¿SHR¢ìæxeµ“XÏÔú-3ûªAì£KK¸ÝFéÒÜ£pG +õïb—U¾¦Ššw„ì¤ õQˆ¨€þƒ°Z¨ÂªQM
<r*áNÔ"¸ì´õ8mS!5bRÊ®Óy½g[Û)ßÐq¼Ä.«ÿˆ7Ù×}iË ³îýy–?¨jˆv™¾è<{5ȪÌÄX_m¿š#èG‚‹~kÌ©ßnÊABvÏ»,TÓUÓ*Ç'-ƒ=u¶Û,»uú=Ë2J{+¢ˆÊªR´{‹ÉÄ.ž=ô÷Aö:´Ã„b2”™$tGÚ °a6³?R•Ÿçž.y®L•QžšëÒø›µ/ˆë,-²¼ŒwÉÁß¡14þ‚×RìZ¸Xøë$\øæþÜmÿsgxbè¨A¬†#íÇûñµË‡h_t3 >Jwaf›e}O~ò"†}vóíênzó4zþ3ccàBãh1¾V±£ý¸eÔHV—àpó–¨×¦Ë$z¦E:8óuÂ82Ÿ=á↡Ÿþr9|ž1¥Î”O*¡HhxvA™Í)NËœûÆ9ýoÓà^Žendstream endobj -2698 0 obj << +2705 0 obj << /Type /Page -/Contents 2699 0 R -/Resources 2697 0 R +/Contents 2706 0 R +/Resources 2704 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2710 0 R +/Parent 2691 0 R >> endobj -2700 0 obj << -/D [2698 0 R /XYZ 56.6929 794.5015 null] +2707 0 obj << +/D [2705 0 R /XYZ 56.6929 794.5015 null] >> endobj -2701 0 obj << -/D [2698 0 R /XYZ 56.6929 749.4181 null] +918 0 obj << +/D [2705 0 R /XYZ 56.6929 769.5949 null] >> endobj -2702 0 obj << -/D [2698 0 R /XYZ 56.6929 692.0679 null] +2708 0 obj << +/D [2705 0 R /XYZ 56.6929 743.9119 null] >> endobj -2703 0 obj << -/D [2698 0 R /XYZ 56.6929 619.7977 null] +2709 0 obj << +/D [2705 0 R /XYZ 56.6929 710.2666 null] >> endobj -2704 0 obj << -/D [2698 0 R /XYZ 56.6929 475.6873 null] +2710 0 obj << +/D [2705 0 R /XYZ 56.6929 638.9488 null] >> endobj -2705 0 obj << -/D [2698 0 R /XYZ 56.6929 415.3723 null] +2711 0 obj << +/D [2705 0 R /XYZ 56.6929 573.5178 null] >> endobj -922 0 obj << -/D [2698 0 R /XYZ 56.6929 378.309 null] +2712 0 obj << +/D [2705 0 R /XYZ 56.6929 493.1666 null] >> endobj -2706 0 obj << -/D [2698 0 R /XYZ 56.6929 342.68 null] +2713 0 obj << +/D [2705 0 R /XYZ 56.6929 337.618 null] >> endobj -2707 0 obj << -/D [2698 0 R /XYZ 56.6929 311.386 null] +2714 0 obj << +/D [2705 0 R /XYZ 56.6929 269.222 null] >> endobj -2708 0 obj << -/D [2698 0 R /XYZ 56.6929 248.1492 null] +922 0 obj << +/D [2705 0 R /XYZ 56.6929 226.5437 null] >> endobj -2709 0 obj << -/D [2698 0 R /XYZ 56.6929 190.799 null] +2715 0 obj << +/D [2705 0 R /XYZ 56.6929 188.4488 null] >> endobj -2697 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F41 1218 0 R /F53 1313 0 R /F22 961 0 R /F55 1321 0 R >> +2716 0 obj << +/D [2705 0 R /XYZ 56.6929 154.6889 null] +>> endobj +2717 0 obj << +/D [2705 0 R /XYZ 56.6929 83.3711 null] +>> endobj +2704 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F41 1218 0 R /F53 1313 0 R /F55 1321 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2713 0 obj << -/Length 1682 +2720 0 obj << +/Length 1946 /Filter /FlateDecode >> stream -xÚÝXKsÛ6¾ëWèHÍD( NOŠ£ÄNcǵä™v’(’’8‘HE¤ì¨¿¾,‘2mg¦·ŽÄc±Ï»±!…*I¨ˆüaùDR&‡Év@‡+Øû0`–fÜÛToçƒßÞ‹p‘(àÁp¾lñR„*ņóô‹7¹½Þ¼»úk4æ’zoÉh,)õ®'7÷“O¸v;Š¸7ù0Á”…B -ý|ùF‡)¨ÿq@‰ˆ”>„E|¸øRéѬl³ÁŸŽak×íóƒŠHÅÃGpÞç‘@pa±8ÖY5ʽe¹×æÍ.'Bù¸©[”Œ¥’½&½z¸#i‘=â Ê’ýˆ)/«qÿ1ßlpg‘áÊ*+²}\g).'eQåU+œ—Ëãu\q!ÍWYU·‰¸ÖC‡|1fŒDRrcX¹I1'mˆVœz`½Zâ¦>|F…ó4·Ç‹Ò®àöCŽ\Ͳ}•—ÅÇ°ÀQnÏ¡õz´°‡vû¼0¶ãv½.–v[¦ùWJy×À’hokÛ lèŒ[jS…OB!1†€Æû»«ùßÈãâóÍìêÝôn¢<¿‚™eÑÆpà>‰|æ#g=`SfÄZ%ãü‡×™1
Fh5š £ztJž$0°ÄQZB^%ãõ6NÆÚ¼Ÿ‡]N">£Ìˆ›A`µ.A\‘¥ÚË$‡ÁF\¡ -õ:·š7ßuùØlY&—דíï².“rc°3æ\‚p.a–x,÷ßõå`¡—k¬ëC;
\.ÇÅñ1>Žcž¾Bš°ë´4÷ -Žâ¥»Ì;ÌöyÇuja»{›œQßÏ*ÃÝ÷¾rîÿ‘R›²Xe{¤‚ˆY¾‹õš½.=·c“«zý
·'I¶«ãÅÆÎ
6ÝUÉ~Öû‡Èƹ<lÎïL•¯ -è¢ÞíÅ(,Øâ*;c½< :ל®‘NË Úò_ºS<<ù4ûŒô"zøo¯nÞ!}d¥Û¼€\AÖéP/ÝeËÌ*’X=¯ãâoz0Ì -dº›x›=£•"A¡ö'Fˆ}ˆ£¦pàÌÔa6ò^ƒÇ±(wPkÎw -¸«ÐêÛÄKCJ@A/ðÛN@}™:Ï<lØ[@ZHqXZò?•©^_âYdžy»xÈ'TºÊCŽŸcE -Í#ÚwkÞÑ-3}E‡¹ã‚vêdŒåaƒcH‡³v‹Ë¦a°Í¨ë¬V‡-H}†LB•”/ðMõ<•é¹O5á ¼6ÃWd;ªá] -ÂBu&ÝÝ_‡ÄVÆŒSÈ¢ YlŸFu¾Íªg¯2´ÿ®·t¨lßféó~Õ`‹Â࿶¨^ðkC¥-;ÕÖŽOu@•ÿ²\GÕ#¸ãS®]…]ÉΧVô¯n©:ÙpÑò uГ.@7o’ŠÿG÷,™”¿Ö=÷ý[#àí'D_¸¨sÙþ'çôw•¡ï» Ðb¨™V)8å¹êî?Ÿ§ºÿ4›± endstream +xÚ¥X[“â¶~çWðsjÑÑÅ×Gvf²C’e7›Ê©Í>xŒ +VÃZ—zŸ6&48NiíV×uº¶ŠÒø©lò䪒ä²jigÁ†xÇ´¾<U,î¾ÝÁÚçBS…s *м'ò~6'"ßî +½…
Ív5kuÆ,ä é\lrLÚBh9Z—H9.ÿB' ;/ék³¨„E*ö«£~C @àeü®;:H~›žˆÀdÖN«;\^äÍÉYСWK<"’XH=‘/õ‘Ây/m…J?¤4.šü†ÈãF—4ië ™˜0Da1‹¢ƒRHa[›ÔÙx³M³±9Ôû-~„1‹ýXÙÛj™£¬®iŸfSÕšìpyÙŒ<Ê´º©ÚJ1릱qÀXÆ‚EΑ)Ö‡˜žýQGd7›pcÑêD´IZ–œS[‚±w({œ‘HD€µÿÆQ¬B»ÀÀ!n[ïtÖÚ@PBVüP[»Kø¼³Pg䚆ÆTTà¬m+]䥆<U<ò¦+rŸS赋<¢åñ•~c€Ç½PÍa-¶Äü¼²L [ÀŒé®èŠ‹£12ô‰~>5&M€\U{",hšMiÕlYoˆG ˆa‹#¯²Ö ÷¡‰Õ®¸$튛õ*ö‰I—1!±¤…)é’¦R…º#¢ë/œ?æEA3ˆ¥È±0i°Ø”h^jâØ\¥gÅt› Ãùó,${P +Èa†îj{ÓcÏ’X¸>ÀD5šhßêóƒNЕë;?ÔƒÏüD]BÂäÓâñÃÓ÷ +@´/èÍOu£·µÅ +XpßÈÍÒ~Å*xôD2¦®Ua,ÐGD¹{ƒFæõI¤Ûï{Hy*«\5×ÏÕÞœ +ŽRЦA_×ó¼`®Ïzßàœñ +óôôEϼ•º<®9A :à…EAl3 NUÈ/z¡P êXXªizYmÓ¼ìͧñÂ1·_ñzÒ\Ù{™±ÐÛEqdíuñ”RpŸ—ôuSp½ŒÌ5/<l˜{Né¥õqÊÌã§6iŠümÕo—î!³À µií”}Ñ Tæv5×/|í¦Ã†o¶ÑÙW˲ÝÄØäâBxI‹|iÞ%æµµºÉCû*¤V}Y;À³ÐzEwûÿ]a3úýÄ<½ûôþa¶˜ßüÑbó.˜’<ùvnv„Ü¿"·©é„Ú|»Ú®hÆ£äÛ[¶B·{^à%ù妋¶'3ÙN“¹°_ò¥sœ ]÷ê8ÃE[ìµ¥ endobj -2712 0 obj << +2719 0 obj << /Type /Page -/Contents 2713 0 R -/Resources 2711 0 R +/Contents 2720 0 R +/Resources 2718 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2710 0 R +/Parent 2691 0 R >> endobj -2714 0 obj << -/D [2712 0 R /XYZ 85.0394 794.5015 null] +2721 0 obj << +/D [2719 0 R /XYZ 85.0394 794.5015 null] >> endobj -2715 0 obj << -/D [2712 0 R /XYZ 85.0394 705.7181 null] +2722 0 obj << +/D [2719 0 R /XYZ 85.0394 752.0914 null] >> endobj -2716 0 obj << -/D [2712 0 R /XYZ 85.0394 622.1311 null] +2723 0 obj << +/D [2719 0 R /XYZ 85.0394 555.924 null] >> endobj -2717 0 obj << -/D [2712 0 R /XYZ 85.0394 562.4544 null] +2724 0 obj << +/D [2719 0 R /XYZ 85.0394 468.7059 null] >> endobj -926 0 obj << -/D [2712 0 R /XYZ 85.0394 525.9492 null] +2725 0 obj << +/D [2719 0 R /XYZ 85.0394 405.3981 null] >> endobj -2718 0 obj << -/D [2712 0 R /XYZ 85.0394 493.8436 null] +926 0 obj << +/D [2719 0 R /XYZ 85.0394 366.2553 null] >> endobj -2719 0 obj << -/D [2712 0 R /XYZ 85.0394 459.1867 null] +2726 0 obj << +/D [2719 0 R /XYZ 85.0394 333.1561 null] >> endobj -2720 0 obj << -/D [2712 0 R /XYZ 85.0394 396.5882 null] +2727 0 obj << +/D [2719 0 R /XYZ 85.0394 297.5057 null] >> endobj -2721 0 obj << -/D [2712 0 R /XYZ 85.0394 339.8764 null] +2728 0 obj << +/D [2719 0 R /XYZ 85.0394 231.276 null] >> endobj -2722 0 obj << -/D [2712 0 R /XYZ 85.0394 268.2446 null] +2729 0 obj << +/D [2719 0 R /XYZ 85.0394 170.9331 null] >> endobj -2723 0 obj << -/D [2712 0 R /XYZ 85.0394 83.0386 null] +2730 0 obj << +/D [2719 0 R /XYZ 85.0394 95.6701 null] >> endobj -2711 0 obj << -/Font << /F37 1026 0 R /F22 961 0 R /F21 938 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R >> +2718 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R /F41 1218 0 R /F53 1313 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2726 0 obj << -/Length 312 +2733 0 obj << +/Length 807 /Filter /FlateDecode >> stream -xÚ¥’MOÂ@†ïû+öØ:ÎGwÛ=¬€QD[ÂIИXˆPcü÷nÁB
x2{šw'Ï<YÒèicÁ:v:q1$£Ÿ*…úÅ÷Š~2QŠº©^©.®$Ñœe«Ëçά0MI—‹YÐ&ýÆEÞ—aVÈ) ²É$_Ž}mÐ'}1¸ÍÆÓìf7 Ù /ÂyyòòÀÔå&”è]Íæ¨ÿZ!ˆKþô9ǺR±0±H{ó¦ -uØéîžžõ@,–ψ`ÒDàŒá_&Œ+,;Ù´Þ=4‹ø8w¼¡Ž8S¼ËVõr³ZÖ{Å׶^VÛ}Ñ_¯¶ëMýúQýåC4Kœ¡Çà¿]?Dœ€¤)5t÷âÄ€l[¨f9Jì zkõ”ýÄ ¯endstream +xÚ¥UMo£0½ó+8©ñú¬=Ñ4ýR·í6©´R·H‚
°UÿýŽ±¡$¡ÙÃ*RÛãyožglâbøWH$U®¯8˜w‘9Ø]ÁÚ…C¬Ï¸u÷½Nçηsæ» +)I¥;_öbqçñ“wŠ(A#½ÛÙtÂ.ÃÙåhL‰Ï˜ÞßOoÏ®~ÁX`ð7Œ½áícxcæîGŠzáÅt6zž_;ÓyÇ©Ï›`¦ ½9OÏØþµƒSpßa€QŠº™ÃC‚3ÖÎlœ™ó³Ø[m¶éÀE€å¡(ÀtX,‚|BÀÇç8ªO±(«õÒbE›U±M«u¶Ÿ.ÁD#3·ô +ûÇ¡[§èÝ*ä(`tzÞÔ +(Е!ØÅҪǩ¦m¬^i–”tvŸ-%°ÊuQobc¿ØÕ×djgIüµ¨Ðã@æ_¢ö¼ŽˆÚzéÌâ"‹Òü@PèXIÔqØÖi +›Þå„›çàêöÌø+»-ÎÒ<-+(¸¶
’ebï…¥õ#Êk8uÃj§ˆd€¨”ptø“€@u‡‡ó‰‰(ˆñàB¤\ë=¬%qµ§Cø8¿¼{ˆ¸'ÀUÍ•'•a1û(«$³5<†ƒK1³¯^; endobj -2725 0 obj << +2732 0 obj << /Type /Page -/Contents 2726 0 R -/Resources 2724 0 R +/Contents 2733 0 R +/Resources 2731 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2710 0 R +/Parent 2691 0 R >> endobj -2727 0 obj << -/D [2725 0 R /XYZ 56.6929 794.5015 null] +2734 0 obj << +/D [2732 0 R /XYZ 56.6929 794.5015 null] >> endobj -2728 0 obj << -/D [2725 0 R /XYZ 56.6929 752.4085 null] +2735 0 obj << +/D [2732 0 R /XYZ 56.6929 615.679 null] >> endobj -2724 0 obj << -/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R >> +2736 0 obj << +/D [2732 0 R /XYZ 56.6929 555.6269 null] +>> endobj +2731 0 obj << +/Font << /F37 1026 0 R /F21 938 0 R /F22 961 0 R /F39 1161 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2053 0 obj +2059 0 obj [930 0 R /Fit] endobj -1887 0 obj +1908 0 obj [930 0 R /Fit] endobj -1590 0 obj +1589 0 obj [930 0 R /Fit] endobj -2729 0 obj << +2737 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj -2085 0 obj << +2094 0 obj << /Length1 1628 /Length2 8040 /Length3 532 @@ -13208,7 +13199,7 @@ endobj stream xÚíte\Ôí¶6Ò ˆtÃÐÝÝÝÝ¡Ä000Ì ÝÝÝÝ’‚R"‚´t ÒÈ‹>ïÞûüž³?³?½¿w¾Ìÿ^×Z׺î7¶‡Œ5Ü ¬‡¹rðpr‹t´P(ÐWç…CfL9g0ЇÉ]Á¢ -Äü{fXE +Äü{fXE 0Üú÷äè¹aÖÃöOÃoäæìüØã?ûÿxýœÿŒ=ì a.ÌÁAb¡ö™9Y®
Ä£ò/z{xÂœ*Þè—ÖÁ»2#×Dj,ïêÃ8›ÇEµyÍî;Ýoª²n
öA™ºÓÁß‹(üèX>ã.3v±ms™W`gÅúϨ¯"› rnêèš—ß¡RŽwð9£_²Ò¹Ð_8=óe4%v>oFÀk(Ù?`LÙ½¼`êú4ð±ûåÃ&9[~ƒ˜;26cLà«|r)Sƒj…×Íl(ßÛ b¬Å7ÎßÊçÏVð™h9Žù,¢I‚°RÊ• e®äß·RÆ%=²ìÙ
êt›œ(†Ì%³LÇî)®Ž>1Ù¥‘„µ…^Ñ2¼éˆO£Ý %õ‰>•pjÕr{2–ÂwÍ<–g¬™-j—!3cäáakIè,AŒ$ÁLˆÇÆ‹J¯³nöùU»Ïm›Þ‰D3 @@ -13231,35 +13222,35 @@ $OíœàÅ€DÈ t‡Í=žÝbóÆÃwî6ß"£“˵?”JËOP2RÐoQo+†â1)©w†¦ÜèådîI½ÈZ¿VÍ(e÷åû È"[vQÔüFØs(úF$'‘qL ®/¶!õÔ
¤HvkÖ‰Œh¼È‰¬ê؉á¶o?Ùa:Šÿ±qêcŒ°gã!_QÇ~ÏWê¡1üaœ¯UÝGmã§Yñmn%ìRãr9÷¬ß0qˆ5†/‚E…(êÚ“†,W‚˜$Ù½ï¶åçLxËÎÔ|ú奕£w†Z|ÂV€ãž÷,éOd ÞyŠGÝ
ŽÎ¨Ý3lÍ4©¿Î\×T2Zª½Ag—.7Ù#ÏPæï™v¼eŦQLÞ»±Oþ¼Ô\’ ¬ÿĵJÅñ¾(š3Ç].Å*,MÎ>ÛBx(ÃSÃó|D³uû‚Þ¡ï†{:Ò‘Á¨2G9¡Cê{É•<|?ÒK áéá@F)Ø,êw÷ó?È ¸¢Ëa„Çh%Ù±o^Œñ{‹6™Ý@¥-«ä%Å~jÉwXjz1îi´·î¬%uÕ3^¿±g¸`d+ÎK[ŽDe—„]âò†YèÖýÇ?Ï>£³HjË,èkѸÍhÔ8Š”™v_Å
[ªJÖ®²9m=·âú?\‹k>¼à¬‡¤*³Ñ³ž,Y
ê<‹ý¹uÓZ/ZV$S·é#ƒmNOš¨5M@¿§rãÝ0Hõ7¬&7[àçŽAØñêOõƧÈêÚ5±pE6~d»Ž^.x¨T1¬µ¤$£Í7¿ÿ4òÆêüj§‹G1¬èípoóÌ3³QýÐZ:œNÍÆéç,0½‹Š‡Zg‹ðâ£à)‹Q©¯³‹X""œÛÆ0ÏÁ¾äBvFA‚)Y9(ÎYÖý…ì¬S…|¸Ôü¾“qbæÇN.LÔX§…_ï‚¿œ%%½¥åŒìé|°D>W²7}C–Í#—ZR¸$º`bÛGο…a¿9gÝS%\”Á/œîñhC|?s§Ø…šg¯ÎÙÈ)ª¬m}ÐvÖËk†Ÿ.bÉ&O üõí+uqfº`Îa‡„°£â,I§ã¯½/‘˜÷ÇÝ›Á¤'P6ߢH‚Ú?÷›½šÙ¹˜Žà9¦ŠmHr7:pMRYŸ#£ 'æW¥¿ðKCß|-¡mWÝ躖nᲶË0–«ÞÐ3äÛÙ=j’¸Ë-,n–³e±€¢üb½iÙ;‘˜Hâ°l<)žL.ßÐYÖÿ°Ú·)wL=(‚Œ£± L|)=å'ÀÆ-Å@²öò¾µ<ÃNrä³6îµEôʃ3±d¶kÓ»¬ÿ‹%ôµøü·(kD~ô(¬_yñ‡Í;¯åä²fùOî{&*‰äyÒ¯9ÛB±T¨d>è.<Sâ¢éX3p7«Á~ª"럽Ÿ“lË´ÍÔDQÿfŒ°Ì -*s"}Y
;Ò‰¢ú{YÌÝÇí]p¶Òݯ€Ž¶Xo³êÙ} +*s"}Y
;Ò‰¢ú{YÌÝÇí]p¶Òݯ€Ž¶Xo³êÙ} endobj -2086 0 obj << +2095 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 67 /LastChar 85 -/Widths 2730 0 R -/BaseFont /ZZAPBD+URWPalladioL-Bold-Slant_167 -/FontDescriptor 2084 0 R +/Widths 2738 0 R +/BaseFont /YHDCUL+URWPalladioL-Bold-Slant_167 +/FontDescriptor 2093 0 R >> endobj -2084 0 obj << +2093 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /ZZAPBD+URWPalladioL-Bold-Slant_167 +/FontName /YHDCUL+URWPalladioL-Bold-Slant_167 /ItalicAngle -9 /StemV 123 /XHeight 471 /FontBBox [-152 -301 1000 935] /Flags 4 /CharSet (/C/D/E/H/I/O/R/S/T/U) -/FontFile 2085 0 R +/FontFile 2094 0 R >> endobj -2730 0 obj +2738 0 obj [722 833 611 0 0 833 389 0 0 0 0 0 833 0 0 722 611 667 778 ] endobj -2066 0 obj << +2076 0 obj << /Length1 1630 /Length2 6133 /Length3 532 @@ -13271,85 +13262,84 @@ xÚíVuTÔí¶VA!¤†n†n”.IéΆ˜f(‘N)én$†FJ Á!¤[:%•$.úÝï|g}÷üuÏùë®;kͬ߻Ÿ½Ÿýìø½ Òy¦§aáèha
…«pJÕŽ H ±@Bá0Y$D¤±ÉB¬@¼¼ µµC‚XnxXÙÙ9þ²ürYzý‰ÜD" ¶0Ó̓;Äîì!o(þ×ZiÙ@! u
%5‹‚šHƒ¸Þ¡áf鵩@ 0„dw9þq -³rt³þ%àÆnÿ-ÈÙ~ãátƒÝiÀH„•+Ô ºÉª!+ÿ‡N¤òWnôÁmn<áVn¿JúÝÐÜ H(BB<‘¿rYB@ÖP„³£…×Mî2gWèon(Ìö/ Wˆ…«µ#¸¡¹áþÕ¿êýSõÎÎŽ^¿£á¿½þ¡ŠD@m¸ -šÚ²2ìÿúvýí«q³Hm/gè¿é©ÂÿqøÅ$-
÷ysòqƒ8ùnäðpñDø|þEÖßD<U-®PO777èæ÷Ïï_'“¿ÑÈÁ¬àÖ¿öFi³¾Yµ~ÁVn®®7þýößþçù÷ÒC ž+ÀôÜJ,Ø>5#
YEžÓÓ/kô¡ƒ£'ŸFûu¾¼Ý/5|Q¤Ìü¢2„«vPôªÉk|ÛùrU™m·ƒÌ‘¹=²—GåCÏú>ŸhžéûZ Ø´?í«^”÷þ˜Ê¦¡ ·îÚR¿æ3Ó¢‹{ÀÁw|®Øû§¬þôîùþ¤'ξV)o_=h!¬½E\U°ý•)aóô„¹«ïcOwûáÝ÷«”ìÙ¯pÅÜ1ñ™"ý]²)Ÿê”Ê•¿U»—w„ÄêÄ‚‡_)x¾¼–‹ À:7ÒD/–²‹óP'òÆ€,?
N¸vðIn+\£š}§Z(Åç^XrˆL©GXrŒMß—ìdc§ õÕwÑÏíK -ïeë[ă»4fÖ)Æ»'c£»¶*2‡Ìu•ÙÖ£™øM×E; -at -½’•sJÜkŒ"êC3ó®cUÉÙ4eHÎH~0+¾÷ì -£Šà> ä>-e™÷CL\¸³Äù¯“7ôwÂI:HÁ®óÚÊüÄRö*gTréïI(J‹ÕÏÀÒˆª1!øRb’>¹`ÕÕâ13W@‰MÔïÒ335,Gƒ÷îÃ'V? 9ZŽfjW]èUªŠÛ¬[ßÑY@ÞCLAíŸjÙÙ*+òæÅõÁÉÏ5~šj}‰Ûy]ç¼cñvË‹Bxi9]'±|¤“²w/±2X®‹‚8w^+ÐKºDœ~$ìl‚Ý‚I®J5`žV¯ipw/¢6’ -}ˆçãõF´£ögºts£ng]á„Ö|Õ`ˆksÕ8;¾Ï»´²?…&@È™!*¦54[«*/„“¶sÈo?87Æ…ÑS)ê¿{=ܼP‚+»Ñho†lMe$—ü¬NRž3(Þc½4ûô.¨’õ©ë~FZBô¾Y5““_ªßþÎhd%\N+œ2‹ÐèÛ—ˇ)™¼¢{ás9͆·ß¡’½¨™”qá
'N_Φíc%}#0~?3¸¦fSwß2œ]aµo1ŸJ(Ïá®óc¨ƒ~ P ʽ]HϨ}æKU«Ù0¼Q[»SÊvåg à¶"hÉþÄêYáÿ/¤g¹iŠWœeM¬”…¨AˇêžÒGªrÌ,ÒÔ‡Øn¹äV¥õ†¡¯ø]mÔÅbüÒ&‹’j´¥‚LsNù£97œ{xØ4()Ûó’:ÍÕJ QɉÓ4âQxŸ6êw´êú|©:T™$·Ü½Ê·ƒ -Õý‘–”øц1öã9ã^Ìæ‰ÍDqf -pR°‚šL\(<uØÔûÐéV‘‡á£©
ež¨ÓE§vìA7nEŸbü¤6ÌÑ
ä¡ÁDÈ;Cŵ½AŽcήšÏêYcg)äµU4ø&š˜,9D -V1-S¸`_3ÄÝËú%6BëbØ
r¨Ãt©a*Óغ0ɼ•uï´ñï¨Î)y©@[gbL¦Ç)Ä?ÊDâÐ÷*éԒꟲGê«àI÷_â‚R§—«·>noߢiŒ!L½<©35¢$2MIÝw™ôäs¢¨bâ<ûVÇ–DT£ì¶"Y \FÉ…Cóuø9TcÝI¥zÒ³€‚*lõ™s$a`FéúÀµ
(X×Ñ |
| -5ÌÄ÷
o榯‰‹ûȯg¥Ï.š%~2Œþ
Í“ 60×Ò3îeÐiÁeø¬O3KG·l¯„šÊé:ÐgyÐóud6pD‰+v°Ìb¦Nf‹Mh¯Ëaˆ>.`È.kŠI¡iøòØ"ÌSˆå0ÙÒ—ûbûj¹Dä§ Éj§×òáøg”ŸV0½Ð -½c–$îSÓ5¬´0ÏÚEdÊŒ0ƒh(‘©ðñôä‚Iµ±¾»Ú» :—2´Ä!<|^Þ‚X2›/¾5obÿd¬ë¥KºÃwƒø‰Õ˜ÞMG0C&ÊØjãž;áÔ+=ÃÜãÍEXr#à]Cg
"}Yá¾.¶aýìY³ÆIˆ/^Y»}$oί8lU†ø„=O'aFX²Åï9hRÔ¤[ÞÞ[ù~ˆ[ró—M~“j…<·ÑVG½‹Xî//¨šá‹ÉVà²hÑi·¢·æÉå6I?,·%F\œÖô™–@êõ~ø†YýE>eUλGwü^‚}«
2ë$¶Íð‚ -ïcñ•ñZ×™b”[DÌÛ³>Â&Õ—ÂaY
Kê{@”¹¸’QeUSæX6»ð¯CvòàªÇ£hœ½a¢ª§é›ßôóƒòêªÎ1‡(‡(-Ô±ßV”ÓyCC..& -®Æã -7/ƒ[\ÉcçtFqóÍÍhF4®¾¡õz»Bö¯ ÐØóÜE™Œ®
#ôÃëÅš[È -ŽM®Aµì)ÅŽ¡ArjgWLØ;'·p -²R -Øêa³!ß™ŠxW_FÅyë"3Lêû¸Ž>ê‚*8VŠí_ŠÀÊëó<"•{•îÛá[w õ(FïVqQß¼óq–QõvÕ’Tw͇\÷Yd›fÜÞ>ÄO¯Þû9÷aZjümµ=!À›œÝ>ÜüïQ3Ù¹åÔ«^ ü9â@"ñF/h•>þl`|ò\ÕIh=n‚ÜL'¿õkµf9VÒjt‹ƒS~÷Ò¤&ÀŒTú'§$à3ã!Ê5vÿÃJ -ƃ>³ÖÕ;À'uãá`:?Ó+Ôx`ïq–΢vIÀr= -ȘóiÀù ÿK1â Ýc‡É…ã9áU¦ -ÐíC¡Ówï»ëÉ“º¿Zèp½÷äOô>/¨lÝ4nlŽ°U-oMôÙ“ˆ
o:œ©Í|y„7MT{õ ¯=i3RÇVHA9jQ¾rÁ3ãaÂ3œ´X_¿ÆdhÚ—E/Oö\ìKɬÝOõš_·—&†÷ê$ÀuæbsAƒytN.`.šâb™Ê¥Ü†€ð6é瘯l¾}êÈg|ëwRŠžhXŠs×L84ØGê} 1Y³mgzÑìÅÓŒ$»9ñNh‹Í”ŸâÕ÷ºXsm{Ôg"'H±¨ª®RU\O¹<Š>ÊlSñ" -‰ôt.CB±|…—(z?п)|Æö…›‡8csa4«ªy=~U»+jð*Ì8Ó“«&ÐÐåÇw?´,IpöÛ7oå¡#½Ëõqw¾}eüJü¢šïUølœ]Rçm‘LغÂ=Îk¡·ÐóKJ;œuY8:B.²åžðŒC\„0&õê®X¨ÕåsÊ;2•©`‡¬#¿Ê"ÿÿátökä -¹Ø+`‹ï—Rp 36‚FŊݹÎ%:b‰»•¯·0Î&SwjÒV‹C%#N^©Û™KuÓÏy,ÅEŸq&¨ãò8¿ªÊ{DLGÌ8½UTmÚ5leUÍ?6¹6ÞÒ6!-+ÁöŽ·¶¯T(wu9eQ–éáö:Jmš»4
û_}ö~N†ŒÁOkôÚ‹Ö»µ§½Mìð}íîɲư™qÀ“ë`Á+–»5ãéö×d[%˦×÷[M–ŠÁÃ#ߦT\Ú*wqªÝ¯¢Øg”‰˜÷Õžà$²dß]Í|®yó9¾è?)ì#IiwñùŠ€%z :õÔÝ3°ˆKzW†Fc¾òm={‚ú³8uL‚ÂôwÌY«|í»U&›±”n{ÀeóbL=Xûy*áwSYø"FžN†j×'›<ºÚyÍ7Ì4`u¹§h‚Žï›Ô -M0 V”µ@¦ØRšÁSÇ8${^™æÒu”œqÿ›ÀÿüŸ °r„X¸"áN®€ÿjRy—endstream +³rt³þ%àÆnÿ-ÈÙ~ãátƒÝiÀH„•+Ô ºÉª!+ÿ‡N¤òWnôÁmn<áVn¿JúÝÐÜ H(BB<‘¿rYB@ÖP„³£…×Mî2gWèon(Ìö/ Wˆ…«µ#¸¡¹áþÕ¿êýSõÎÎŽ^¿£á¿½þ¡ŠD@m¸ +ÿóü{é!Oˆ`zn%lŸš‘†¬"Ïéé—5úÐÁƒÑâ\\£ý:ß¿Þî—¾(Rf~QÂU;(zÕä5¾í|¹ªÌ¶ÖÛAæÈÜžÙË£ò¡g}ŸO4ÏôNˆ}-lZŒŸöU/Ê{LeÓP[wm©_ó™iÑÅ=àà;>WìýSVz÷|R†g_«”·¯´ÖÞ"®*ØþÊ”°yzÂÜÕ÷±§»ýðîûUJöìW8Œbî˜øL‘þ.Ù”OuJåÊߪݎË;BbubÁï<_^Ë¿Å`i¢KÙÅy¨yc@–‰Ÿ'\;ø$·®Q;S-”âs/,
9D¦Ô#,9ƦïKv²±SÐúê¿»èçö‰%…÷²õ-âÁ]3ëãÝ“±Ñ][™CæºÊlëŠÑLü‹¦ëÀ¢€5‘ؽrô›ìç3üÜ°˜üDÑSjÛðôä)Wï8Ž*öÜŸèž“3@'}~+ÏÝ6‘žˆ•Ø\Žpµ<züuÚ>AbåPóبLbZ÷a3ÒYÍEœVÁ= ¾‹{·^®2<¿}5aq€©ÿ_5¹Ûðòµ÷>›À¥´ê$C}ÀXŠ¹œÕ÷ji—û€G‡/§Œdû-!j¹;Ë6#ÔÜŠ.Oé×ôÎc´¼$z¾I(ñØÇ/Wj®½"¹ßKÒÿ¾ð{Lš¿ÞH¥hÔ»Ã:iÓFRF<g]Û39}—ÞÞF™8|à0‰å +b݇a›yKÜ£%t×TcaÖËF˨?B:äÐ 3ÚZP‚ÌÆŠ}
fñφôˆƒTU‡J鉽žj:»«Ï‹ºôN)/ÂÕ äE½¬^gº‹ ^/«k¯&6Ö7%³"”-ήQËòÍ“ñÆ‘r¾“'# +ñÀèHvo»Vüy½¼Òç³³”ÎjÁÕŸ,_Âh^§–p³/â#Ó„HÊÀç„»ûÄŒ[‡¤Ê»B8Ò¬’%PË ™#¹&}Ô7uo(à–îu•úµÒ95ÀŒ¾?ËêcÕ8—ÄñâθÑ,™ê:f”†.‡Ðà¡ÝõÁ41hÀ›3):«;Ícƒ·ú‘¶Þ,èðY½:Nç5u…QEð‰rŸ–²ÌûŠ!&.ÜYâü×Éú;á$¤`×yme~b©@{•3*¹ +·³®pBk¾j0ĵ¹Žjœßç]ZÙŸB dŠÌÓšU• +ÂIÛ9ä‚·œãƒÂè©õß½n^(Á•Ýh´7C¶¦2„K~V')Ïï±^š}zTÉúÔu?£F-!z_‚¬šÉÉ/U‚og4²Š’.§N™EhôáÍÎËåÔŒL^ѽð¹œfCÛïPI†^ÔLʸðˆ§/çÓö±’¾¿Ÿ\S
³©»ï™Î®0‰Ú·˜O%”çp×ù1ÔA?P(åÞ.¤gÔ> +ó¥ªÕl^Œ¨Ý)e»ò3Pp[´dbõ¬ðVŠÿÒ³Ü4Å+β&VÊBÔ eŒCuOé‚¿#U9fiêCl·\r«ÒzÃÐWü®6êb1~i“EÉ5ÚÒA¦¹§üÑœNƒÇ=<l””íyIæj%‡¨äÄiñ(<ÈO›õ;Zõ}¾TªL’[î^åÛA€Z…êþHKJühØûñœq/fóÄf¢8³?€æ¢%K]TkcÑøKEÄL1‡•·FÆîšÃºåØ KCÂCkÇxG®ï[v“ +‰ÌÙd%JWܽóµÈT¿È$ÿ$H~@²&jM¤Iòüé.‡¿÷ywúÜB½ÐÛŠFög„”p¾áÚÀ7sº‰&RDî(ŠpÅ3¯ƒgƒL«Œ˜–)\°¯b„îeý¡u1ì9ÔaºÔ0•i
l]˜dÞÊNºwÚøw T甼T 31&Óãâå"q
è{•tjIõOÙ#u‰Uð¤û/qA©SˆËÕ[7Š·oÑ4Ʀ^žÔ™Q™¦¤îŠ»Lzò9QT1q†}«caK"ªQv[‘,P.£d¡ù:üœFª±î¤R=éY@A +‡¶úL9’00#†ô}à…Ú¬ëè¾>€à)…fbˆû†7sÓ¿×ÄÅ}ä׊³ÒgÍ¿?FІæIP›˜ké÷2è´à2|Ö§™¥£[¶WBMåtè³<èù:28¢Ä;Xf1S§³EŠ&´×å0Ä0d—5ŤÐ4|ylæ©@Är˜léË@È}±}µ\"òSÐd5ŒÓkùpü3ʇÏÎ ++˜^h€&9I‰òÝ3¥–\—qaâ)&J™NBb0šNí`Ò.'39ë4^€îg(}*v–õ +d ¯òˆ¦:ôw +ýL¡T÷Æ{ši®G3È¥ã"y+â3’§[cͽ<å†Q@òæì+}·÷¼Íñ0þ’Dâ%ßéfL¹7®‡SìDnŸe‹ïãF
cé¯ÿäφ=jýúÑ…fìÁµAÌ^He±œÆÌ€PP‹@Sò˜ÈÈ5D7Âþ˃¯íãìoÎ64ÒŽY›]l_o%а¤ÒÉSŽšŒæ©óAüŸhöUù»ÐyèvíS¬ÐD=ËOÃxýa“²I;ÊÃÖ‰do“LÈÁd<±~ŒÞg®¨ÙÏØÃîpðzÕ±5õ*¨2Ò1·2BÏ`«ùñG8nå^{bh…Þƒ1K÷©éVZ˜gí"2eF˜ˆA4”ÈTøxzrA¤ÚØ?ß]íÝÇKÚ +ö”bÇЃ 9µ³+&ì“[8Y) + ‘x£´J60>y®ê$´7An¦“_ƒúµZ³+i5ºÅ‡Á) ¿{iR`FªFý“Sð™ñå»ÿa%€ðeå÷uì†Ò*ড়ÅÊÎ9
|ÀÑå|,´Hƒèn_ÙË%i·˜³¼Ã'µ+c%ü麖‘Ý@;¶zu@
Ëf#[2aPàØÄë üSÑò“ëùIý1›„túÉb¯Mˆ·gÃÞç+kÚ:ÙîSRc;¦ EKZªâ¤ØjU¡ª†ziRûRž2ã ¾~æ9 ¶hKI<üORdÑ*ãAŸYëêà“ºñp0Ÿéj<°÷8KgQ»$`¹dÌù4à|ÐÈ¥ñ„î±ÃäÂñœð*S +(Z¢`‘®~VpùEaAzy÷UwJs÷Œ?´½‹š|: }ÒH»a‚º¾g)o}³=‹rrµM3v-ï€Ä@Ùì'pÅXßÒ–× +ÕB¾ª\h~8©$‰¼¼·ý˜7!g;É¥ƒ\®cf>}7›ùâžÐÙZسãÁÖ–Ü^-Už&( +ÖËÓ»ÜIFÙØS˜õOV_ºhýÐn-® +X{$¢½‰¼û£@–rlZ™âɞˊ1o(¶¨mèö¡Ðé»÷ÝõäIŒ]Œ_-ô‹¸Þûò'zŸT¶n76Gت–·&úìIĆ‹7ÎÔ‰‰f¾<B‡›&ª½úŒ×ž´)„Æc+¤ œ?µÆ(_¹à™ñ0áNZ¬/ˆ_c24íŒË¢—'{.ö¥dÖî§Çz̓¯ÛKÃ{u`‡:s±¹ Á<º'—0— HMq±LåRnC@x›ôs̈W6ß>uä3¾õˆ;)EO4,Źk&l‰#õŽ¾„˜¬Ù¶³ ½höâiF] ‹œx'´ÅfÊb\ñê{Ý?¬¹¶=ê3¤XTÕW©*®§‰\Ee¶©x‘@†Dz:ƒ!¡X¾ÂK”G½èß>c{BŒÍCŒ±¹0šUÕ¼ƒ¿ªÝ•5xfœéÉU“Nhèòã»Z–$8û훎·òБÞåú¸;ß¾2~%~QÍ÷*|6οÀ.©ó¶H&l]ážçµÐ[èù%¥ÎºÆ¬!ÙrOxÆ!.B˜“zuW,Ôêr‹9å™ÊT°CHÖ‘_e‘‰ÿð:û5r€û3.ñ4v—W”ò]ª[)ïó–äÙÀ—݈H¾ÌûùSŽ¸+¹ºfS4çHõ¿ÞzyàÂ*/ç%Šâ×»Í Ï8ôæãmº'7…\ì°Å÷K)8ÐÁ@£bÅî\ç±ÄÝÊ‚×[g“©»5é«ÅÖ¡’'¯ÔíÌ¥ºégˆ<‚â¢Ï8TŠqùœ_Uå=¢¦#fœÞ*ª6í¶²*æ›\oi›–•`ûlj[ÛW*ˆ»ºœ2Ž(ËtŒp{ˆ¥6Í]š†}„¯>{?'CÆà§5zíEëÝÚÓÞ&vø¾öŠ
÷dYcØL‰8àÇÉu°à•GËÝšÎñtûëV²ˆ’eÓëû&KÅàჃ‘oS*.m•»8ÕîŒWQì3ÊDÌûj OpHY²ï®f>×¼ù‰_ôŸö‘Ƥ‰´»ø|EÀ’=PzêîXDƒ%½+C£ˆ1_ù¶‡=AýYœ:&Aaú;æ¬U¾öÝ*“ÍXJ·=à²ùˆ1¦¬ý<ð»©,|#
O'Cƒµë“M]í¼æf°ºÜS4‡AÇ÷Mj€“Ò·ÐökxõÊáž™ËG‡ÞÕéú,óÔ92‚¬
߸gp0o9)ÁM£«&ChVF=Vv¯ñõÅž¡üÜÈT·Žïvä(Ê´ãé¿7jzä ¾¹Â6]E³ÚŸÉÞeIGOIùç…&˜+ÊZ Sl© +Í`ƒ©c½G¯Lsé:JθÿÍàÿ þOX9B,\‘p'WÀOÓy©endstream endobj -2067 0 obj << +2077 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 66 /LastChar 78 -/Widths 2731 0 R -/BaseFont /KGQTDC+URWPalladioL-BoldItal -/FontDescriptor 2065 0 R +/Widths 2739 0 R +/BaseFont /CYFTJP+URWPalladioL-BoldItal +/FontDescriptor 2075 0 R >> endobj -2065 0 obj << +2075 0 obj << /Ascent 728 /CapHeight 669 /Descent -256 -/FontName /KGQTDC+URWPalladioL-BoldItal +/FontName /CYFTJP+URWPalladioL-BoldItal /ItalicAngle -9.9 /StemV 114 /XHeight 469 /FontBBox [-170 -300 1073 935] /Flags 4 /CharSet (/B/D/I/N) -/FontFile 2066 0 R +/FontFile 2076 0 R >> endobj -2731 0 obj +2739 0 obj [667 0 778 0 0 0 0 389 0 0 0 0 778 ] endobj 1450 0 obj << /Length1 771 /Length2 1151 /Length3 532 -/Length 1712 +/Length 1711 /Filter /FlateDecode >> stream -xÚíRiTSבª¡¬2©¤j=,Œy5„„
£soÈ-ɽôrID¨¤*Ë"6ºd¥Âª"P”Zb^'Ò*Â#,ŸEªVEÀ©¬««ôgûëwΟ³¿ý½¿óMs‹”1D¶ÆP‚Áar„ P*•pØ€<³Ù-‡å‚¡ArŽ@à´jÀ]Ø|!o…ǧÐ@ –®Ç‘T<é“$>i`QÈQ •*XCÖPÈÕ@†)˜Ð3Hk'od€µpŒg“Âá -BÐTÀåy9ŽËõrˆÈˆ²9 -#°zß×Íç×Ò.ýeö`7]0èf|·GR[+‰]p´ÒIQ»@íRCµ†ÚÖµjüÐ…–†5Ni
]\ßNzÓÚÚ”ñ—´_—ì˜ù$éùó¾g¯
ÔÖŠl7+×ã3b=½÷ûgzxÓ;ØTÛ«Ÿ™Üâåª/î"ÿÐ>»U†vÍ¿ýrZƤ Np=ßåÆ‘ÏÜÍ\Ê=á¸foÅ¿¤ë<¿n6íNë¬ñѪþ|±Õ°Ÿ›˜Ð—r&ê¦ç¥ºÆóÕAÎu…3“LÍÁÁÕKšgc½ƒóÝüœúÌu%Z¢€j§ùB®ø¾êlŽob|Ñ1¡×ž>C?”F›šF{-ʳڼ m'ó~Ôòlï_l΅ץ軼ëN˜¾Ÿ·l/•ÃX³7íXmxí6þ‘`Ξ£‚†‡›Šœ³ODÍß)ËñbPï¾ñérz;mýåºG„Cqäóª&例
ÅQËññìLî™Öó|S_õø^{°&{×Æn®\´}=Eh7Ð;( ¦‹?-Í{½e´7Dkç(nîH0£woß7Ÿ=è¨u÷ûj©_+µþüÆVap•QÙlu¼g‘õÀ
j©ÒԹР˥ -©Rú:A¶'e¾2K¯ëš—ÕÜ]¶À¡BÈðØrú£ìϹ_œ24m²š‡¯–DBßX«:¶]s¾c¯álŽè¸ÏŽÄuؼ›[F¥~‚–ÖéöÕ‡–Yú츘ý~¡éŽGŒk™¸ô•u|LýP‡uyâ!®Ð©IÑÔ`Ø}¡ªÄþÃu ^U h¿•¼9lXZßx|—ÝvÎAUNI÷Ü–YwlúÑåѲLYå—ëüÎñ2cÎóúýç|뾸XE@ɹ'†ŠÅ5RïŠ{Csžù÷ôŽmÐè’DZgŒE…Ï-ª¾ÓÞ%’áË]¢›m»iuÝêæš²ÂÝÒ¹µNëß q8ÔqYxÕÁwWGIï“öqê2âÅ«„“Ë]¾Ö§s‚zCZ#² ôp+d¿º¯É©ÝŸ™Ÿ/*è¾¾sD•ÜØy<ÿ'4ZÖHh¯Þ7‡ÏòkŸ…/Ø̺÷Á•øO¿I©áŽ·&]íý|tÍþs‹žTÌ«zxóÌždE*¨¦Ö
°ÿæ¢ü¿ÀÿD…–㦑ãi”ß +xÚíRiTSבª¡¬2©¤j=,ŒiF
!¡€D¢až$æÞ[’{éå’2ˆ8PIU–EltÉ(*J…UE (µÄ*´€iá–χTŠ€Ó»`]]¥?ßûõÖ;çÏÙßþÎÞßùΦ¹EÈ"Ûc(Áà09B(•J8l@žÙl +ˆÃrÁÐ 9G ð«µjÀ]Ø|!o…ǧÐ@ –®Ç‘T<é“$>i`QÈQ •*XCÖPÈÕ@†)˜Ð3Hë'od€õpŒg“Âá +ÇÈn0©å¿!kzñ`Z.×L–Ÿrêoy¹Qëÿ``št-ã@ŠA0ŽN§ÆÀoÅIaÑj¦g%„\(DhªÎJ&{å[ÉFt0 +PÊÕð£Ðt%¤S:X’øµáqž|íT2BŽ D¤>ì?ÙS1çϘ4 Gt Íd³9$‘ÜïNIÓš‰Q!h*àò¼€Çåz +9DdÄÙ€ ¬°ŽTÌb¢A^¤3¹@‰á”Éõb–ÎȘDß\ÀJœ=Ò½IìïOÀtÙŒ\ÀàòÈVì•Þ€Ïcçþ…¨Ðâ8ŒSãCô.V"¤§0¬ƒóMLá³õÓ}§·×扫»ŽÙÒ3lí8¿í”ч9Üçãtoú9þèwÇmŽŸ"ÇJG¾aAJ^?õ´(Ç”-cmëu4Ù»Ð+÷Ëf=T'&ϸ\ÞÞöæàŽ{æÅ–ô&χ¿¸?»›yÞ¶~Í}¿Š:R4³öÖÍWOòÒ6uö›í¾†Ü‡J)IågÖì…£ÿy·øêă¬3×\žŸ¸ÿ™ók3µíNOÚm{£ÀP.µ¹aô}9‡M×):)œi‹Í±e‚Õ2áì…^×£+ŒÀêC_7c¬_Ks˜ô·ÙƒÝtÁ ›ñýIAnihŒ$jtÁ±J'EíµoH
Õnh‹oÕø¡-
ë +œÒº¸¾%œô¦½´õ)ã¯h¿/Ù9óiÒ‹}ÏߨÙnV®'fÄxzðÏôð¦w°©¶×¾0¹ÅÉU_Ý#Dþ¡}v«íšŸürZƤ Vp#ßåæÑ/ÜÍ\Ê}á¸f_ÅÇÒxÏo›M{Å:+AÜ%ô“ªGÿºÔj8ÀMLèK9yËór]ã…ê çºÂ™I¦æààê%ͳ±ÞÁ€ùn~Î}æ:ˆ-‘@µË|±GWü@u.lj71¾è¸Ðë`ÏKŸ¡ŸK£LM#G¼åÙmY¶‹ù ry¶÷o6çÃêRô]Þu'M?Î[¶ŠÌa¬Û—v¼6¬v»FÿX0gï1AÃ#ŽMEι§¢æ”åx1¨÷Ûôl9½¶áJÝc¡8âEU +ó?ÛÚ†â¨åÄxv&÷ìÚ
<ŸÄÔ×=~GÖªÉÞ½éáã[+íØ@Ú
ô +¨éâÏKóÞlí
ÑÚ9Š›;Ìè½cÆ;?ö#‚Á-ç9jÝ}c¿Yê×J¿ð±Uë\Ged6[çYd=0AƒZª4u.4ÈÅr9@žêav5I¿—<uEM-é†íÁíð«“եѬ<KïªS^nÄš±*!*[*9^n5ãÎ̱'¥®–gøæƒ×Bù» ÿÛ•ñ£•¾w»'´ùÎWFŠ:=³Bª”¾IíM™¯ÌÒëºæe5w—-p¨Ð2<¶žY›ý%÷«Ó†¦ÍVóðpIôµªcûuç«¡ÑöΖŽûühlgÍû¹E«©ÔÏPÃÒú1ÝþúÐ2KÿÑ—²¢>,4Ýõˆv-—¾¶Ž‹®ê°.O<Ì:5)š{.V•ØÄË"í·“·¬–Ö7žØm·ƒsH•SÒ=·°eÖ›qy¼,SVùu¼ßy~Afô¹`^¿ÿœïÝ«(9÷äP±¸æ`ê=qohÎsÿ>€Þ³
]ò$欱¨ð…EÕwÆ»¢D2|¥Kt«m®[Ý\SV¸G:·ÖiÃ{!‡;®¯9øîî(éà}Ö>N]F¼|pj¹Ë·ú”bNPáQHëš,=ÒŠÙ‡÷59µû3óóEeÝ7v¨’;¯—çÿŠFÉ©íÕûçp¢òY~í³ðÅ›Y÷?º÷ùw)5üÁ±âÖ¤k½_Ž®ÛÉiNbÑ“ŠrbUožyãÓ¬ˆÃÕÔºö¸(ÿ/ð?Q@¡†å8iäxåß7“Œ«endstream endobj 1451 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2732 0 R +/Encoding 2740 0 R /FirstChar 60 /LastChar 62 -/Widths 2733 0 R -/BaseFont /LJYLGY+CMMI10 +/Widths 2741 0 R +/BaseFont /IZONYB+CMMI10 /FontDescriptor 1449 0 R >> endobj 1449 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 -/FontName /LJYLGY+CMMI10 +/FontName /IZONYB+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 @@ -13358,10 +13348,10 @@ endobj /CharSet (/less/greater) /FontFile 1450 0 R >> endobj -2733 0 obj +2741 0 obj [778 0 778 ] endobj -2732 0 obj << +2740 0 obj << /Type /Encoding /Differences [ 0 /.notdef 60/less 61/.notdef 62/greater 63/.notdef] >> endobj @@ -13373,35 +13363,34 @@ endobj /Filter /FlateDecode >> stream -xÚíWWXSÙ”(AŠô„R‚@ -¨ÔÐ`è ’“ ¤P¤ -‚ÂHSŠ"ˆ¤)Ø¥ˆ`!Š‚Tv,)‚£÷€£ÞñúvßîwÏy8{¯õ﵎†*ž gEf€vLGƒDcgZH -¥AȆdSƒÒ†Šµem˜!Klø’~8$AE¡~¥a0ƒÁˆþ%D¡1ÈË푹¡(w-Œ:âþ€Lð6*ÈŒÐúh3´) -â™lÚÒ‡BŒ0?an4R0d³¡CY†@ù§¤¶“LcPQ"‹üÝ°“¸,¤ÓòIA±ßöT"F‚$8€IÚ´7¨aoÓüi+Žw
ÚÝg¿pUáét¤`›³|ðIEÃ’ÓÜ"þv yïJ§•)YŠ¶é&ÁfÖÍÈÕ’RÉ’‚© -og6;c×N¬AtO¢Û²È翶‰ºáð^µzÖ[ÃÜæŽ$!…)¿~Þçå«0˜¢ruY°Ë«m3Ù…Äw.ô8W,¬×‚C%îËÙzåü½Z[}Dο™“ªm–ôï¸f-jß—bç4L(zŸ4Á¶Ü¹¢¿XÕHY8Í-3Új°#tX·ëŒ'"ý}b‹µÎéÓÜ—o䓼öT«µ•ÇV•¿k|Xr眶慦òýÅÖ}¢’üæV!è@M¿|ÔXá%ïØž2o‹3Úlµ`Ô'äŸ:áwBþ¨ò‡übX˜²ejQ§]Gf‡:û¢GœýyñÂ~‹kº…=OǽÖ;Õ˜¾âMS0—ó`“q掘~øR˜¢XrÅíÑ/|-7¢½Õ8gèÌ>Xª(YívÃÙ#»§ä›÷~‘H÷F׊Vû‰¸Ï&y´%¿½ï»þY1KÀs㛵Æs3ãÍe‡×êÁì/_-CÖCŠÔyç¡šI-ýáÄ”’km*xkù1㥦ü‰íb‘GQf·…¨Í¬Öð¦pa_ÿ·;§Íõàþ0¶Ó¬vOË?xzÒqǼsåùgÙ/÷Ì<Í|}Ž_Øæ•¥39¶×ïÆ{¨k?ß#¼èrS§JîLý:9ýÍŸý½½^[\È+·|Ž–¿ÖõÊnòfáU²£gíjî¬*¯H<˜ÂY4ý£^Ø1ú -œ?Ž(àï},—¦5e,Щ1^–q¿XþîÊcÛ9ŸF‘Ò[ûìŽå_µ„;.Ö™þŠ°'¾ÁZíºw·Sö»
;=ŽRÒŸVÉmÒ3—ÐëZìZ]¢¦0¶x€'¡}Õ»^u6‚Wõ×Ó}G¬Œz8ŠfÏâTD³éoN×`'çÓ±9Ͻ´|>ÄQáž_ú1sãwŽúTÕZ¥gž‹sYgÖ•Š€¿~‰µ»Ìüp"ͯ\RiàÏ?U†ìMñ lÃåWƒMLKÃ禵dž†oÌõ6°?+ôůFÑÊgq‰¸¢ªÌÁw’¢}ÄVˆy^X§§›¾mNÒ
zx ºkwÁÎáJŒ,/•÷ÛóÕ§ -ì³À1æà‰4;z -(Ë·àGuÿ2Î-X/BMÀHL6Yïv¾wÞª"¢c¸ë²Xn‚@6¨KÞ”Ó¬¶s°:Â?,ÍR4ú·M–:iÌ©2Žƒz§Üª’FeˆòKÎ OÍPq®/¬¦Ë3DÈ3‹#;ý$J±Ý½©Ñ -IuÅ)CàýÙ9˜ð„×7e琉æ {ƒvHF=½T–íG¨Mó}ÕvŽI¸zH)þF¥äù#›y*¯íÛ$X+a4óÎŽ3}I±~DœÞî7óëíŽ=¢Û.µ=ÒëpÊB«—˜?õ:'lH( “ñ4ÖúšÙ·òW4Î΢†f€šäÛðùHƒN¯•1!-¡7×,̶eÚ8òú†ê¦Ñüš³øñ+EÒ§,Œïóó$,|¶¤>>“õgs
|ƒÒK%‡‰sf2Ï.#[™"d·õÄÉù‡1--*BäðOÂŒžv~õéÜAg9l.óVþnÏC¹æ[rÑÔw¹jëÝÏ—«…›€6\“ßZo:âus:xð$<3ßµãSGçåu½ïù:íU.wÑZRSÝæìOjó§Ì-“:‘?Àñâ«|´î,¼¯Aµ
•¬ha%™
Ù½-ùüÑöYFaòÕâÃÜ€;A¥°J@K^c‹T–S&•¨±¾+íàÀŒy÷€Û˜jS!æÙ=ÉKC~*)‘“ÚÒ{ô†x VnW¿h©¡…wð¹¢E]„d¿yçÆgêÊé'mÓT"p«³¶kÖlÀ.ª´D”½l\…ÈWâíÉäÙßÏ'Œ>m9®I<¦Ü6 ë:©èöé™A¥Þ±¬#ÙòÈG›p --ô³:Ë5ŽÈ¨¾ÍÐ|RO8þåâ=çç"nT.B(p? -óÜ~•/²ß²w×cÁ{n4e²~וŽC³ÀÝs™y{]?ÄímBH8ßBìð/͹˜°à:ÈõWÎt7|.èzýø½&ÞêùŠôTÕä]êÁFσºvh_L¨ã#o$uÁœGIÕsÂO¦Æ}rÑæ:–ø֖Ǽè1œ5݉¶y>j±
9é^tû¦ÔxÑœÒÐ]Þ&«gæaÉÆõi»ª5Znú2ì*ÎVÍ7%G¸ˆxÛ‡‡{>‡·‹+<W -Ø£¹m½ÕÅ+™çýr®ŠVq‹-A«Kݼ‚¼†iôŒSf\?ÊÃI“hëñð”佩ô4õ¥ûBòÁÊT÷QAïëÚ£FÕî'•#Ú1=6ˆ¸°¦²ÊØž=îÝÄçÑ'¹
ßËïeeeHPAeØ禩„S
"k*¾@¸ñpúÊ2NÖkŸêܳâ5dSž]|x,Qº¿üÜ™/ùúï/0”º˜'e„"OToë`ž>šÑ+êÛCÌ'¾Œ‹¨ºeh<&n¦?–&iá’@–ÜXÄîÞ—h+UÄ’ÇS\Ò~Ÿx[l#(Þ*וÔkßtéÁAl~Mwß•
ÁÇâ§ìDǪ]‹‰þã]ì™´âRYD\¶¶)+¦./'Æ©À¥>¹¿Îg…keÍÈÆéÒx½"K†b΄a)+Uö¶Äp‰ñáGê…xª[½zp‰ôlݺØ-nZw#×P×eeZÒr-’§ö…]Ë}S'ï7[òt«ýŒ8ñ)äË7|Av®•+‘õ©Þ®óûéÓ¼öCÞ–1»”£á5Êd˜œïõ¥ökž/5_¯â®ÙU)|kP5C¨¿¤Sý_>ðÿüOè ‘Åa†YÁðhȆ~(—þÍàÿ;@µendstream +xÚíWi<Tm2e$"˃8daÌØMe_{ÂhìTÆÌ™q3Ìbß"Š'[YÚ$KÙ*EeK´˜("4Ú)‰’%KôÔ{ÔS½OoßÞoïï=çùïë]ÿëºþ÷u8*Šx‚–9™áÚ0èl-,ƒ¡ ?‹@¤ïÐÚ R9öl"
€}"REÅbÓÀ_ºÀ %$²!݊Ȇ}\ü9€‘ è` +š²µÕábédKFÐ2¹¬ŸÄIpcÚ¿Ò0ΣGý¢@tò—öÈœ`mW:Âíþ€MÈ6*Èô1:cŒ +HÞ8êoßSØTµi¾N•ñâôÒwW6XÏ{5õßÞosê(= +Vî8YdøÊ"žyšªµ•jÞÝI9àòÐáIÿ†9‰œF-É0Íu]KÝ«•dÆ–rEÕ¯yžWœã–ÿõ|ÿQsý¶ì£¹‹Vh*ªÉè7‡ëˆ3i¸ìj^ïc©H÷Ï}Øy”Á„½NV»|ÜûÒ|æÅšõÅï_álêébïO§ú”ˆÉõÿù§¢Ã Dlªhd˜éݬ³›Q|oËo¾·†õIæ~Üjt +ÞëxÓˆÚ‚íI•¸¤èqÀûÂe=l‚{Œ²¹d~Dó/ƒœcë㤂¨ñXÑ©F‹HÇ{uæ¥a'Øz{ê×åÈðešäMÙMJ»*Â|CRÍ„£~Ûf榑ʘ.fÛ)wJ*¼¤_Œ*¹âÿÜX;Öyñ¥ùLñRºyvix·h‘®»7%J&±º€.®¼»Ø#…¼ÿèºÿ–¬”‘lLoÀ.±ˆçUWŠ³|U©Þ£µÂµÃrq7ËĶIÝÊUxmÛ*Ê\y"™t¶_¸ŸãC´ÒŠv15¹Ñfß#¼ãJkÀÞ0‡LŒr¡ÉaZAC@TNô„«²ÖWÏض…·¢anN{p¶¨Lê`»….„ëvz¬ô‹êo6½µfq®u,ÃÒž{°z뼈¿š¿á¬©ÁÓ=Ã`^®¨©7߶”G2ÿlªDn’{%g7Yk,1Tna˜ +±ÑÝ“gG77ó¥+C? +þ1r:Ðqôcí!G¾y\ãv^¤ûá•m9˜ƒÊ‘G¯Y{öÆñ¤ª† %Çð·Gü[ŽzÜÚ† 8ƒÌÈsnÿØÞY¿¾÷OÃÜé.FM|ºÛ„õQi!ý¬‰YbçIò{$^d•—ÚÅw¥AhÂáÖÁÂÍÌDãA›·…Ÿ>X¥ŸHºVp„ãw' 1KñkζoÏtÈ U6v¥æïŸ5鞬6§ØD—®sïžâ¦¢?J‰oë=~SÄŸ…(D¶)_6SQÃÛy=8ݬ,D²Ýº{ó²|Úë#B˜Õê̪•ÛKqKŠ5!¹'oÃV¡òä¸{3¸¶ò|#Ï›O©OÊ7„ôK:Oɺ|Ò-Ó:™y4Kýd‹•ÌSSÌÎ’“
ÊoÓUŸ'œú¬íä9ïã$¢_"D8æzá¾óOè€Yü÷\ø ,eêüž«íÙzÆþA‘ó¸ûœßÇîkD‰:ÞFíò)ʾ¿è<Àñ—ÏpÕ{Êï|ãÔ½Fîê…ҴŤ=ʦú/ºö«_Ž¯ã¡žn&çw!
FHó‚Ϧ~b?»lyG|ë…K¢ß +sò´
2ul‘y!ç·WuÇFóËW3ê|²¯ —p +Ì@ ó+ÝÜc¹53˜Y)†Ä^©>m7U¢µÛã³b÷¦“13ÔW®‹I‡ÊR\Gø=o¨cõ»Ÿ•
«G÷X¢bC‹Ëbzöºú}pIXÀœáÔ|xz/¯—™™¾á ‚vºmNªB(U7¼²¸ï4x˜¶²˜yçúÇj×Ì8Éä¡ËO&lè+©}/ñ9OçÝ%º\㌄@øéŠí̘×ÇÓ{…½{ˆyÄW±aå·õÆDŒåâÆRÅLâÉ¢ü›óYí‚[¢E²8òx²³Lêï“o,ùEZ¤º{m¯ŒìÖ-¬é¾uSà©þ¸iá± +çâ¤ïxk¶?µ H’/Á*K݈]›ípÌé|R_µ× +ç² +ó_>ÈÿüOh ‘Éf™È(&È‚(—ÿÍÿìÝ@¼endstream endobj 1440 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 97 /LastChar 110 -/Widths 2734 0 R -/BaseFont /NQJRHU+NimbusSanL-ReguItal +/Widths 2742 0 R +/BaseFont /KSHSXN+NimbusSanL-ReguItal /FontDescriptor 1438 0 R >> endobj 1438 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /NQJRHU+NimbusSanL-ReguItal +/FontName /KSHSXN+NimbusSanL-ReguItal /ItalicAngle -12 /StemV 88 /XHeight 523 @@ -13410,72 +13399,64 @@ endobj /CharSet (/a/c/n) /FontFile 1439 0 R >> endobj -2734 0 obj +2742 0 obj [556 0 500 0 0 0 0 0 0 0 0 0 0 556 ] endobj 1363 0 obj << /Length1 1608 /Length2 7939 /Length3 532 -/Length 8789 +/Length 8790 /Filter /FlateDecode >> stream -xÚívgPTݶ-HPPÉ™&çÐÉ™–œƒº–††î&K(HÎQÉH’sÎ 9#$ˆ€øÐïžsn}ïüº÷üzõvÕ®ÚkιÆsŽ¹VmVF-]^Yª„p@óùž4`ö–Î(]°ƒ¯ÜEXYå‘P0†pP -G8ÚCзÿãºP( -²BÂÑ€Û¬Z -JñDÛ‚Ñ¿s£`·n -œ6B†NšVµúz9S,nq2BÙYÒ_+Ÿ¦Þsà›`n'.@b%iî§ZüwœJ¯îsúð{^¥’¸úCHW—Z“èŒÁv,!ieí1«¥O˜–©í[oF‹£‡y‚öƒÛ¢Aùx@”SÜeMIƒZ| -úˆJý€•<.%sõJŽÅ?ANïÝy¯2}oÁ[+B”z1’áž ‚`Ïtf¶¢tÈwŒ°ÏŽ·xÀ©þ™Ììè)‰ë{çqéœÅâêsn¹ÁâÑÈ!áLâ|®Å–êjÙµXùPüðáæN…:ÍâŸiËÉ#V -.¡Þ&ä±.µÙ:á%%¯ÆƒÀ+Ùì£àrÒôdxå ~åj}vøñÅ -E“õî
÷*\ÔíÀ5´Êµ³nÝ¥¿ìv°¦Õ°“@<˜ÐÀÁæ„|º‡¹Uº–ÒSCö¡•Z„þîýÐni¯0q¡~‘ -5¿Õ¬g-Í=¥á`8Z4~ iN6ý”@}!ôk °)„COÊ,”úP¹EÞ}/šòÜ:o«4QßФháôBlågË”O„á1
QÏ—=GÖíÎ2‹$ö"Ä‚B5GmÞœ!kÊ€ÅÁFþ9¡Ë+TdùGô“Àû"6®ld&Zíeí{4BQãÛ£xæ -Çžó,g½Ã!‰âŒOòpÓª¥øℱ—ê¨,«é•¨’/+U²ðN\ú_øHîÙ;š2™´@r•zPÆœ±¹ú™5¿,Oì°v^=³ŽÐŽrûÊ`ÉØÒd±‡U”£'„/,&z‰â£óõ¾ÔáÌÚ_'z8ƒ^»‚!OUáö:§˜VeÞö¨|BVvÔ0ó+·–0ûÖÓ¶Ú,V¿š J,â^´S´+kNï¯s¥8¡ËÐ f´“[„wO¹¹Ržáè.ÁFFM„l-¿?®f$i½*Z§g´É-@$ˆð‰´…G©3ªV;eW„ôÆwœÃðÇkÝüÓï«Ï0¾B¸9lZàâèàø3x?Üßj¼¼ß· E=_a^ñêu(ýv --gھ蟖¤§I„²kZKéä”ð -›û,¥ñº“ÛýÙU@žXÒÖrÝ}Â;´w`D.à™Œ«ž¥ÅÇ3\™»ølð…Ébñƒ¥‚U³¢ÌöMÌœÞÎÛJ”…¶WkÓhý j¢’«qµD¹Kz瑳³B|óG\Caî+þ¹*ÊÛ~¡ñ¥ÎGÙ§}–ΪJæÄäû§ W÷HíÚ>ÛÀaòœúò4ó üN$ÕYYšžÇï_œ••W+vqƒÛSš:± 0ZÌ©„›a‚â[‹”%sˆ{¬Þd?zä7~ÞÛsý3M{öži17ÍÖ‚\"éýGeã3mì7 -Kygm/®SÉçÍÄ\ÊqÈbO;z¸‰ð«-4'¤§€+k=ž~(6¸hLìÈÒúô<6»¯´yjÊ^"þxNLÝ°Ç%3jz˾‘e2 ÃÏfĺEÎ>_žÝ(¸š¤²uy•“®ƒ›{!Þ4l"ùíóQtñÚIÝE°ºÙu²¯‡Ån¹¹ÄùÂGˈÃÄ › -?y“w¾G$ÜË×ß™‹<Ê™2ãtÏ¢Þ}ÿ†@´yIGbc‚²Kê·HŸ|ëÖ
x°–Ñx½Ùþ2—€_M”+=‘Û~d˜„“•/tŸ†ò³vLFd*°Ä¾ù±b«&}¢¥çË/à¥2?‘©"B¾,|BÊ1û楛æŽÈkf}°¿Åø«þŒ„g“IÆÞyã8‚©.ͲmhïF`”ÜN‚”ƺʨjÊéž=wþ¼æuußÆ?ÀTÓˆ½~.%º·2¢_½¥’()“5”ôe-èÍÜhxlšŒS+é\d®ýÞ¢Ïd=ºñbfýFÇO¹!3‚"Ž±6÷'íjCœ´¾X‰Œ]Š*ÅÂBùwK‡õiŽ€hn"d²¦…Œ·âg쎓š™Îë`ÎÓp¦»²'UJfaþ»f[Ĉ]ˆ•á®þÍz´&—À$ñZ¼¡®i¾—fG‹LßÇzbÕû\dÊÅï격|X“Ý\sÉ•ŠØÊ+¾ÿfÜŸ|>„%ýHÎÌÚ`=6"æ’P«ô9#Ñ\Ó#3z-Rô|%ñ¨$¾Gc^¤‹M]÷²³Ôú{'¢_ýDÊû1éÍ*õ,θÈêÝþ²â³Gƒg¸LMa2B Æ»é»*+M[TÏ•´lm§2!ž7V¦Ôˆ·nŠæ‘’¸†pj7ŒÙ>ò"$›XêÐ:{—¶^˜u^9Ì’„‡DW¬9%%^ÑËå,W0ß²¦ÜÝ™ZÒ×ý/õ{øúÆ>²Ý” à/"ŽDkúmù0§_ì>WTxìÑéƹœ ‹› -zƒ½Ê-%¯Oà¸L5“‡û’ªV,î½øÊáÃz‡>ò&ïw¼´rY6Ç—ÆJwŽGƒ±Â*ÜA5ƒ -ëšSùSÕi…Ÿ*z~Öå{OrÛÎâ¿z»—’M®læ|Pû„î"‡ãüi®WêæˆOâ›Ð'ñëgÏbíbœŒÉQùb³ 3.ã…ñk›ÌBd¬ilüÖw_ãcÂŒ´¾,ã
Ž -¢&tG÷ü©Ï¾2¤ûôþÌÓ(v'«.Š -òôÿÑü0íû¾€Žˆtß -sožbrÌûvE ²ÁÅ/ÍWRÙu/w¦ØÒÕÛïòxœ‘h<LšøÖ‘píÇâa
®”Y -Kqh|>6œÊ³(æÀ’ßë. - a‰ñµoWkrŸÔgÔÅÖº›Ð˜wÜ6îÂÞN¾Ùö
i± XüÐ~ýÅ´á´ÙÞVóÞ³6÷³Ý>EŽ -‹^±Šî±nl#šñ‰65%,ç_°Oê”+µNý%Ùz¯>W7¶]•fzã}A}H›ÎÀSÝÀ~ƒQrNÉ)îs¬þr]Lf¸á“ -<á¼ØËûò
Aê)¡³k¯×ývuSøGlVªs#Nu¥¬·OŠE•?.j?øÿ©ÓwGä“øݺ23oªkvSÛë>Ñ=¶ Ðz¸^"èÁ8¡-òo*N¡žº3Xl‰eÓk‹þœ%¿_> -Ý‘o•~~æHj¦ä=ß‚§§Øç÷üÁ4fA|Nç“ž@íD2ÏJªÏ ªßãfœêvæ_ïùQÎ`œTäUí`Ø@–¶Y™i"Çø¡Ñ=¸M×g•Õ´1š:Uпƒfèò©ü¢hçˆ Šl`‡N¤·èç«s¼„klbhL˜:g6(皊…KQ}ÈÞ]Ÿjƒ+ÅÁ7„,IL$¥<³
Àãyª1ÕÓ¬^Ubó¥s¼=õ¤¯æ-_ãº"/·ÒøìX¸¶å¤)"<XŠxÜ*%Å•€,Kß‹?¯‘¬’ÿ„Ç#8,Gi§ñ -D¯°4Õ4øO‰h§ª‚Ã*÷)É›%ŠØb~ø-GÈs“I»øNà9-ŽSqÈÓºD
{Ú½S\pzùÃuyjD¡«†k!ÈÅ¡ùð4yªQemˆÿÉX‡Fiomß¿»jÑÄŒŸ*m—´Ã”8Fèc…ךÆàAÔÉÜî°’Z¼5è篫a¸”dñF~²á)ž!“F³ò±Ëâ7£gªØjB}X€‰/‘'™“š"ZtÍCöEqË’¼R7ö¿Õð®ÒÂö@.)¨F…t ‘½uŸ¬®%Qò«§µEp˜Çd€™ÑÛkï#ÝýFø‡‰0A³KE*3Æ€F ‚é®0BÖLqÄ`nÿ‚Š%P爉䅟Ú*›X‹²Å·jÔi÷b¶‹ôRáó"¿¬žû6vTZRœÌ°T3Séèv\ã«%øÜýI¯”Þ¯é¡ëæ®ZÖ·mpßú”Qn?ø&Å—Â#Ôߟ›ì}ÅÀ^í° ª"Á"çt{RH:†×¼woŽ¸ÏhFO°™§éç€oÊC£B÷~”… - sœçã¸!q?Oƒ¶•G¯îW̳ŒÔ)HænÉøoÌF–A£Êå{Ç‘æä8£jýäUu;W+Aà¢ïóÇ;X;{¥ð”ÇÎwÆ}x"
Æš=×N¿nc}&±Éy[µ~œ ¿öµh¨»š«¢³ñ©"Ì‹üEmÊ`;µ -Lj -â³ß -Ì Q=w¾?‰¦6ª~ûá¤àõd‰xW/aéÒÛ‹†Cú\»UÒâàfÒ~…¶‡Í -¤´HNú2HBÃ8—GÂ+zq(6|£}h`wŽXn‘ÉÖ\ƒd0ÖŸ9yEúQ§lõ8þ4»G“‘Èh(1›‚#Tšl8ùñ\^ß/Jö\¥H§¼¿Õž‹r2Σ}‰RÕ»Y€|áCžÓ|ƒi
xCªÝªÌZ-›Çð0ÜJLÕ—D9dkùåΞ‹üÀu!!‘}U?³9Ü«eŒiÒF̦ì½Äõ–çwNRi¸Ž~ÑqÂzÊ—eh)¶M#±M¤µ.?¶%aÿ5ßóÀ€L]t“ö´ƒÓÈÙ‹CM³Sꣲlµ^÷³²ÚfÉÔë'7±‹÷bqÛG2®K œ¾’j…Ã×?“ vœ:Û¤~í^~ŒÓ}ü>[6ï¥Ô‘Uïi!~£óú“á{±±?Gywuîj>S–µ¿ƒÆçò8CëD?¯‹{ÇéëˆLŠ"X?¹ÒPÌÔÜìô|/*_6fñfw -=ÂRŸó>ÍjóðÔv)Ùyÿ¹[G¼Ü5)…ðwÃä¼Ar«òqsV -…üЦ^o{<´p–…p¤(„¬Ý¡òž#% -o–›.%§ª¿ƒàêÕÎ*4Z®÷„&§xás=G‡ü<ṼǕoÜRŠÂò7ð|lä”güâ(l€Â(Ù‘(8Å|)ÿ¿wÆô/þQL™uG«ØâÐÏœÎÎ~N*{cÀt(û6HÝB=viˆÀ%ŒÐ/ÌÐà>^P䶊ŧ¡¯ÕrȈ=ÂÆé2¾ldÔD4“kêœÐw§3\Wd†@$B}vÓmwÝK&à#ýÁ?¡e6êœÿ¸¥*IÖÔ*Àií¨²Q„É¿åAFÜd@+íy‡íj¡×Ré¬üž±àV{ñ)„ÓÜy¸KþÍç*ï¬%3Ã6ÄÐqO®Vîz -Pdž·ÕŽÝKcì" ÂñקÃ߸Ð|÷”:
úaAÞffñ~þµGµ³+ìMk{çg1Û»tîO±¶)0ÞÊœ<vŸj5Uq"¯}h‘ïÎ[
ã^ýŒwXcsÝX YVW³Zxg/ÁÍ&YÜÔŠþ6¾ÿ„×ÔĈäUu&S·+0›Ý)§LI4îÄR°vò[_•(ÉëOJ¼‡ŽÛXÄbÉÛú󅟃HÙ¾üª½[!+ØÑ™õd¶¶¹c
¡µìÉŠaüð L²ëb_Àå¦RnMúY6F¿ÅýíÕ<úx*¸÷â&?ñiÛJÌ¤éŠ Žô·Î±¯‰Ò%§¤+Žpñýïê=Ú02á=o !“®…-‰NØ ží2_Ûš,l|%ÕvW”v¨q$M1‘]–OmÍöèÂg®eÝ/Ý»ÈÔß1x±]Ô'ÎÝíÎ<±úa’'0x{&¿µx¯ùí©wÏ.o†l¬AÁ +Øο>Ú²Ê.ÔZlvp‡k³g¤…æ[FMIÁ‹£÷0ê¹³ÕvœøæhPKò´ ûäx´!vyÚ³×eœï?uúfK¿ŠÈ+>ªX'·[ò&&ÇŒÈSm"~Ê\mŸ$¯GÊ-ˆýJo%ÛÞêdyž†õJ-»Û¼`~DÒ]FB´§Aäû¹xx²Ãò`}fZ%±ÆÈr™6³Á‡å_Êf -í&2PƒóuíIŸ[^|uÊàïíŽl«0x¦ŸøpÙ(ÈÅ%mé…ÆÃð½/¯±sqØo -ŠÉËQfþNÒúðÄCzòÛgêg_åD6ºq¸I“ª¸ÊFØ2ËvÖ¦™˜¤Pé¿g¦Uu䂱~Õ#ÉUz$¼ -ÇHÄ•vËÕ$«x-‘–ß™š¦#{eöòÓ`ÐhšDŸâ°º ë«×^9ÁB0¤ñ뫽‡í»˜m×ÖÜ¢Ò ¯-‘+ÖŒ!ÇBPŸÕvî¦è ·?§¡ºƒ¼E^$‡ý…’*O*n˜.—Çw2wÏ5N¨°xNÂø,†éõG#ËÕ€ª“ŸêÅUOr3~\Å[kÒ¸!9×0ϵ -CÝ_‹{™éÉYŠúð["šgì2eàß$‹îy;Þ;Ú -_ƒ
ÃižòÆv==·%!Ãd2KVûBàùü€ÿ' +xÚívgPTݶ-HPPÉIhrM‘œirNlèZº›,Q@¢ 9G%#A2HÎ9ƒäŒd âC¿{ιõ½óëÞóëÕÛU»j¯9çsÌ9æZµY´tyd K¨"ÂÍäåЀÙ[:£tÁj<²8pk&`a‘CBÁhÂAŒ†>B! + ³‚: +uû
€¡ + sDn³jÉ+þÅmFÿ΂ݺëÛHÂÊùwI|·0·^4æ€ ¡nèß¹,¡ +‰zý›|€€ÿZ«ƒÑH˜àùmÑüÀ?¥ÿ×û¯•Ùß`¬ßs¢‹;@nG럆ßn+g$òVÑ?§ý¶ä¬ÿ9êµ"ø2…°x™˜’„.£ÈèÞÖÄê +tÌû¤÷>Û÷#¢Ù'1xY´èÅui oåг›:÷ÉÇŸë*œ=-äp¶æxèAGkö£Ö®
>ó<¤]ÃpÏà µ%l“'ü+Ú:æ¹×w5"ñ¿sø2¹dû’2Ÿ;y[%TD’5>¬Ä .ËÙÙeùúýœ£·»«³ù§u†+=ŸEÌ›5Ì×)FÊD¿È3Â2Óñ1¶%¨UŸ]pa昼jI`²…ÿ©ÐjÖs·Zôó÷T¾2ŸÛ¿“õ¡ÅM³ÓKèÍì‡8@ý,ÍÚUBœu³ +w^™YËí§‡¼ÕùÆ!}i¡Õ2@{OºEÜwò¡ ™Úâe«H`¨Þ“m=JõbF?–àhIì ‹µ(t€7¦\ŸÎ™°B.júÈW“ýÂ"áå‘Ç3Ÿ²·ZëÄŽ³[‡9÷‚{AÇšGOÂBeíú4Wò’–‘Q0A´–£;,7¯.Ÿáã«b÷´yS¸‰Jï*írñqg +ò¤
²Nl¼iB¦Z;D§
`wœCb>¼T÷yelc¾s¡)¨oWpHÖË˳†jQ%ÍyýÜ6÷œ>ï õ±z¤MW%òi~A´¯îS/È +¯š±Ôöcxu-¢¨’8ïÔ™‰ÄK¬³";±]âÕ4—A©æñi¦uÅ{µ*Ï^àœø}IͲjz¶u1-勸ƒÈš©»Ä_
(PÈâü¡]Vââ,í2åÒW,îÿh¤¡=@*Ðyª^ƒ=±joµnÚShðµüÀ2¬÷l¹Lh‚+*±ôQn¶î#§Å‡˜o/Öo'2+^JÒUjàsqÄæ0ÿ3"^ r÷–Çs…ˆ€Žcû›žŒ9°-M=ÿðïÊ&ŠÀòŽ¦¢û_Àº#K´Ä•{Ê][-Ûþ´‘?°•®‡R%Qó[ÍzÖR\S†£EãòšædÓÏøÔB¿ +™BØõ$Í’A©•ZäÜ÷RÁ¡)Ïó¶Jõ
@ +N/DW~¶LùDÞ£Ññ|سpdÝî,½xAb/L, XsÔæͲö¨È_\Ìo䟺¼BE–D1 ¼/\asáÊJf¢¡Õ^Ö¾G#5¾=Š×j.Ìï9Ï|ÖË>’(Æð47ý Z’7ž^{©ŽÊ²Ú‘N‘*ù²R9ïÄ¥ÿ…øážm°£)‘I$W±eÌ›«ŸYóËòÄkç•Šu„v|ÛWzK†–î$‹=Ĩ²€,!|a1ÑûH¯—@èôe öpohdÖþ:ÑÃôÚy¦ +·×ù8Å8°*ý¶Gùâ°²£€™_¹µ„Ù·ž¶-ßf±úÕQb÷¢Š =Xž\szå˜3Å ]†N0£Ü"¼{ÊÅ)Ÿ¢‚£Cº5´µüþ¤š¤õªhŽÁ&· +áæ°iE€‹£ƒãO?àýp«ñò~ß‚õ|…yūסtÛX@WzÂTeö´îc´L„Ù›“NQd +štü–ž/¿€—JÌx|D¦ +¹²ð IÇì›—nš;¯™@öÁþã¯ú3T&“Œ½-òÆqR\šežØ$ÐÞ*À(¹+”0)u•VÕ”>Ò={îüyÍëê¾€©¦[ý\JtOeD¿zK9QB:!k(éËZ"Л©ÑðØ4ÿ§V Ò¹È2\û½EŸÉztã;…Ì6nº+ŒŽŸ²CfEìc)¬îOÛÕ†8h'|±º”‹…óï–ëÓÑ ÜDÈdMOÅÏØ'53×Á§áŒweNªÍÂüwͶˆÉ»+Á]ý›õhM.IâµyC]Ó|/ÍŽ¿õĪ÷¹H—‹Ý7ÔeUþ°&³¹æ’+±•W|_fØŸ|>„%ýHÎÌÚ`=6"æW«ô9#Ñ\Ó#3z-\ô|%þ¨$¶Gc^¤‹M]÷²³Ôú[¢_ýDÒû ñÍ*õ,θðêØãüe•Gƒg¸ŒMaÒ‚ †»é»Êü+M[Tϵlm§2!ž7V¦Ôˆ·n +摸†pj7ŒYù?ò $š˜ëÐ:{—¶^˜u^9L„‡DW,9%%^ôÑËåÌW0ß²¦ÜÝ™ZÒ×ý/õ{xûÆ>²Þ” à/"ŽDjúmy1§_ì>WPãâÑéƱœ ‹› +zƒ½Ê%%
¯O`¿L5“ƒû’ªV,î½øÊîÃr‡.ò&Ïw¼´rVÇ—ÆŠwŽGƒ±Â*ÜA5ƒòëšSùSÕi…Ÿ*z~Öå{OrÙÎâ¿z»—’M®dæ|Pû”î"‹ãüi®WòæˆWü›#Ð'ñëgÏbíbœ´ÉQùb³ .Ã…ñk›ÌBd¬ilü–w_ãcŒ䵾,ã
Ž +`2ý
¯dà ÇÅ^vÈØ—oROq]{½î·«›B?b³Rqª+e¼}RÜ)ªüqQûÁ_Xù¾Hž¾;"ŸÄÀïÖ•žyS]³›Ú^÷éñ‡ëU ‚ŒÚ"ÿ¦â*à©;}Å–h6¶ÈÏÉPòûå£Ð¹Viè—aGR3Eïù<=…>¿ç¦1âs:Ÿöj'’±{VR}NPý7ãT·3ÿzÏrã¤"¯jkÅ +k=n²/Š[–xà•º±ÿ†g•¶rIA0ȧ ìûdt-qˆú“_=«-‚Ã<&ÌŒX_{éþàçï7Â?L„ ˜]*P™14åMwp…2f +#sûTÌz8GŒ$/üÔîTÙÄZ”-¾U£N»³]¤— +Ÿ¯þeõÜ·±£Ò’âd†¹šIˆJG·ã_-ÁçîOÒXx¥Ô~MÏãn®ªe}ûÐ÷Oåöƒo™}Ù(<Býý¹ÈÞWìÕ¨*,r<E·'…¤cHrÎ{÷æˆùŒfô;yš~ø†¡44*xïGYØci³IG + +ï«ú™Íá^-c„L“n4b6eï%®70?¿sºJÃy”ð‹ŽÒSº¸„,C[H±õh¹™‰m"uù°- û¯yŸ”`ꢛ±§œFÈ\jšjU•e«õºŸ•Õ4K¤^?͸‰]¼‹Û>’q]åð•P+¾þÁìH°ãÔÙ&ùkgðòcüˆ¨î“÷Ù2y/%¬zOñןߋµø9Êí¸«sW³0PEIÆþŸSÐãý¼.#2)Š`ýäJC1·Rs³ÓóA®¨|Ù˜Ù›Í +]ÁvþõÑ–U†CEgw87{FZh¾eÔ”¼8zÓ©ž;[aÉoŽµ$O›°MŽGb—§©¼.ãxÿ©Ó·0[êUDæXñQÅš¹Ý’71~8dDŽ"hñSnäjû$ye8RvAôWz+ÙöV'óó4¬WjÙÝæóðà ’Öè2¢=ù"ßÏýÃÓ–ë3Óʉ5®ˆ@n£ð´™
Þ8Ü(ÿR&H +ýÄ×€ËFNN)K(4†ï}i|]pˆ‹»ÀvûèšÏûñ¼ö®‰ÙzKôçpåf‚Ã,sQm1ùÜþ®:±_ÁrRÔúü–â¹â%DK †ÉŽ5ŠÄà1õû.”òg´[ºœ|…%c$Ž°Þ•çÊòNùÿhéx<С´43¾–´À9P®EÓ@¾Æ +›Ø6ÓæxEОÉr°%¯¼eæï$5¬ûO,¤'¿}¦~öUNd£»K‘ùw Z«L„-=±L×jmš‰I +•þ{&ZUGNËW=’\ÅABð=Ÿª´§Ùþ¢TÙuó{J:ÓâwÀW`šN:À9ª²üÍ¥´ÜDÜKǨgÚß¼iZ”µ,ÜÙÞ&¬Eˆ9zˆ8à4¹hàYœáüêç)@Ò)‰v’ù‡âV©ûèJŽ°6¨f’Ÿsê3ÊåOL«G²Aǘå´c‚'Xì¯RÛ’¼Hè Îp-Œ‰F—Í2DzR,‹•$ù=””zʼn/^_õ«{]ˆí…Q¼¾µqßñq+êYë
ˤæÚ“"n{Š£4Áza«ðòç_ìk›Ì•n’äNÏ„½~*{‘hNò»+’f6aï×UÕ¿Í +³Æ~LVõ—9Sà!õ§‹n¸øŠ®wÁT}æJñ=MoÁÓ¶nÉùÙô`‡¶ûZ¸›ïïóNGã(Œ>ñRÎø¦a
ô1#7Øq$[d¤ßÖ?"¯=¢/$iNx¼aLÚ¬s¯R’a't¼É9õ3£eoUfÖd¿b¨ üáÃ=‘©ºt™—Sz[8žf£^® à>Ç+ü˜Õ½Æö8M9®Ô¦ +)_ò¥¯tIYº²ŸzIܤŽ¾ÙïT3Š +Þ…«F{RlˆBí…Ôˆš(hœÿÚÞÙió_½Ò‡ð +†ÞY˜¦øc@·‹Ž/_U‘Dš§øû†Ìe‰X§£êmì+»ê<£ÌÇ£&g=ò¾Ît=íóž×H§•$:ͯßåµÀû€÷¦5†õ3pi€µ/).¦¹£DÙT
…™ñÞzoåÊûÇ0D6UÐg·kË'¡;uf"ûA¯pŒÄA@\)·\M2ÑŠ×âiù©i:2Wf ?½¦It)«º¾zí•ÌC¿¾Ú{ؾ‹ÙvmÍ-*ðÚ¾bÉ(t,õYmçnŠ‘pùsª;ÈYäE²Û_(z òd bö‡é"qy¼'s÷\ƒá„ò‹ç$,*1Œ¯?Yþ¨TüT/®zš›ñã*ÜZ“ÆYxȱ†yÆ U°pêþZÌËLOæÈRćïÛÑ<C—)=ß&Y4pÏÛñ~Øù³ˆ’©ÿóâ§àõgp!üˆ¼qÓšrOÅ8”'nñA¦€‘Èï—qìU•}þÔWø¬Nó”7¶ëé¹- &“Y2Úüÿˇàÿü?`‡‚‘h„=iGð endobj 1364 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 36 /LastChar 121 -/Widths 2735 0 R -/BaseFont /CBGEIZ+NimbusSanL-Bold +/Widths 2743 0 R +/BaseFont /IJNFNJ+NimbusSanL-Bold /FontDescriptor 1362 0 R >> endobj 1362 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /CBGEIZ+NimbusSanL-Bold +/FontName /IJNFNJ+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 @@ -13484,7 +13465,7 @@ endobj /CharSet (/dollar/hyphen/semicolon/C/D/E/F/G/I/L/N/O/R/T/U/Y/a/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/w/y) /FontFile 1363 0 R >> endobj -2735 0 obj +2743 0 obj [556 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 722 722 667 611 778 0 278 0 0 611 0 722 778 0 0 722 0 611 722 0 0 0 667 0 0 0 0 0 0 0 556 0 556 611 556 333 611 611 278 0 0 278 889 611 611 611 611 389 556 333 611 0 778 0 556 ] endobj 1360 0 obj << @@ -13499,7 +13480,7 @@ xÚízU\\kö%‚»înA‚»»;PHî®!x 8îîîîîÁƒ<$ýý¿ÝÓ·{žæm~Sõp¾o}ÖÞ{}ûœz) U
1Kˆ9Pveá`e „8 l)qøCÀùÏ$AÎ@‹×¦¼Øþî›âöùØ -¶ü³%K7G6-0ÈÉ
('ù?Á¯ò¿0k +€‡“Ÿ +¶ü³%K7G6-0ÈÉ
('ù?Á¯ò¿0k +€‡“Ÿ qýñ$X8x8þÆiÚ€,ìÀ@—׳ø“‚-ÿ–R l±®¯SiælùOàÚÂÍÙùÕž?èõÞ¿öV ×@O òÊ"ÄB0Ô¶6´ý¡ZŒØƒe’«Wëî·97rŒ=ô7V˜^e»bîÜÛwŸ³$UÇl„+
`•`¡Ã㉥bø<ìøÅ;X°°Ã°`d#‰NYë„”P/駯Øûˆ¢ R¾Kx
Ê^P”ÝéÑKL`i„CpHôœTà‰ÉÊò+TŽøñž‚ÏUdíýÕàçG:%Ùmƒ#RPä»géäõQOï±+:°LûÅÑxæÃe]k/͉õJø:'º8ŸlJÛ¬žªGóy乌טòQK6‡
Ñ+íLvþ˜ð‰Å16(ÎñkX„Éßš†+…¨pœº–QÄ´Ôß^î)RêÔ[W,,¨Þ‘õÉ»ãp%n×)iuGYÖǚπñZ¬Õˆv4¹›îµ:®uľõ«GZýÖ:„<=Ÿ@‡ª˜yÝ—l:GBÎÚOAs½À:rÁUuiw™ª¨,w‘ʽVç±ÌwZ6ç]ºš½žWßÆe͹„縤h£öÙ8âØYWÑtÔ¸c}ü5æ?°5&Jt”ùËÞ¨—OÉËÛòÁHÌîZ‚pr_‘\OœÅ±„4šß²~òIÝbâí‡y"ûÊ“¬4òŽZ¦¿;‚Àždz™RÑt[^cíÆ=ðàæ÷Ÿ‘øÜÏ•ä
=X}§^ÍóâÓÌ:Ë;}ß%[µ, ýÉЛ>µÞܱ^4AXç%ä#¬wÛ±W:eÅNã¥S¶SÈ“Hf÷ÖϦŠKuP·}.óF!Ö§•"k¯“/ågö«ÉФÁ ê2³Õ°"Ý ÝkÇÃñJ @@ -13529,23 +13510,23 @@ g~nM"up^ÅÃÓíÓêè” ,{!5ÿ8¿UËn Ðú‡ä9¬PjK¢!zóÙ!ñHaŸ´Þãïÿ¼£êOß,?€úVÐz¾’¢Œ¤ñ¸gTW-Š«XÑèƒðN¨PÊ94X}chAc~‡^ÅûI8Y½-°Ji¾á.˜<®¯ÇIâšo,¦ÙNì¥#ÊͽÊûÊàùk¤lùnýh2³ÒþÝu<Aíâ$FŒþ¦ÏD!þ:ƒêj%FDõŠ‚QúPÀ„´èÖ#מbG¡³°ï\ùe%mËf›‘g'CÕ䦨Ñ)Ê$‰‡x`A%*›H«¶#Ì'å;…p‘ûÚ9ß/iÔ¤N…ï#‰yàE×Óz˜8ƒÄÛ¼êpXe€N®Ñ †µ§r%ç˜û7¯¼Çé&ï`Foùª’׬ó›}tW™ë',4Ó‘õÊ™‘8‘À`Z*\-šðú[Ü‚JåÕ®{i!Ux„T
û•ˆ¼‘‡ômÙ85û)îÛ¼e¢ý¾KµÔÌ;¨žè{ÜÈ¡¾è{´Ñe¼Žò»~!–±l˜×R¡^n`žTG?ÂŽÎCMž—û[©s¬ ;ZWÀá¤ì`±3iSw-iUÉCW ÚVâ>xj„E‹ŒwêIo³}‚üH—ã Örú ãkÑnT‚e¿S< ¢x
K»«-1…‹54ËÆa«÷-ÕÜ@ÚUóªîÐsL/}8ÀѶ›Ñl¡ò‰ó9È+ß©O¹È¨qD‹£RKˆ7hëÀûÚë,l³Ž[‹x³#‹³ÆÒ4 -¶ÿÚ®½–ZJS•ñ~´õÓp+S!¨yWC6Æjy.Lä“X5^g˜Â£˜ýÿòƒüÿþŸ°°š9»BÌœí}œ.®ç?þ€‡ü¿ +¶ÿÚ®½–ZJS•ñ~´õÓp+S!¨yWC6Æjy.Lä“X5^g˜Â£˜ýÿòƒüÿþŸ°°š9»BÌœí}œ.®ç?þ€‡ü¿ endobj 1361 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 2 /LastChar 151 -/Widths 2736 0 R -/BaseFont /MNZWGF+NimbusSanL-Regu +/Widths 2744 0 R +/BaseFont /ZVQCAF+NimbusSanL-Regu /FontDescriptor 1359 0 R >> endobj 1359 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /MNZWGF+NimbusSanL-Regu +/FontName /ZVQCAF+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 @@ -13554,80 +13535,74 @@ endobj /CharSet (/fi/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/five/seven/eight/nine/semicolon/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/W/Y/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblright/endash/emdash) /FontFile 1360 0 R >> endobj -2736 0 obj +2744 0 obj [500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 333 333 0 0 278 333 278 278 556 556 556 556 0 556 0 556 556 556 0 278 0 0 0 0 0 667 667 722 722 667 611 778 722 278 0 0 556 833 722 778 667 0 722 667 611 722 0 944 0 667 0 0 0 0 0 0 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 556 1000 ] endobj 1320 0 obj << /Length1 1624 /Length2 9769 /Length3 532 -/Length 10632 +/Length 10633 /Filter /FlateDecode >> stream -xÚíveP\í–.î xÒ¸»;ww4t5Æ5¸Á=×àÜÝ‚»k°>äûî™3uîüš9¿nÝ]Õ»ö»žµž¥ïª¦£ÒÐf“A-ÀrPG;§0@
â`áê¢ -uTa{µ©[ØC -ÈÉú¬áðŒ=“i@]`.–Î'àÙ«†ŒÜßqÂl€°?¾] Ï0 -ÃÕâhýÏXÎ`k 3ÈìâòLóÌý§:ÿÌð_²:9Ù{þe
ýKë?c€À\ÀöVì\ÜÏ>-aϾ!Ž†EÑÑ - -àâü[ruúævþ«@Œf†é9 êhï -ktòó* íþ)áëB¥æ÷•!ìµcÂMž3‡NÛJÌ;/íÚ“À'¹¾4Lyø+ô-,;¦…Ø©GúÑÞ§ßUÖŒø9õv6F4µLîQ(ÇZxœÑN¯™hÜòi¯œpü,“¿Æ}ë…{Qõùðˆ>aÿúŠ¡g°¿¯·ý¹s›œ%+NÄ
›>*à]¹„‘n©w¸ìà0>¦I‚Ôõ’7¶_„›üë%^ÍœKüÉâWöIñ‘ë¨âx&CêŒm -ä¿àh×ñ€F3>ÒaáÓ®GÀÇíí3IúYbɘ¨•šâÓ,&ÿ$ˆ)66ï7¿ï†%ër¾Ê_îoj_Yüíl§¾v‹w'J‘ñwÛàÎ}¾ÇÁú„l±•÷êµÂœé7ƧøêjܪŸl±Óä½ -™ç -™zçFˆoxDÔŠ -’ÆýŸ
ò¸K`º•ü~O3¶Û•Äd2.›ïÈ"oÓª›+sÅ¡9&˜qèLÄä÷,Ä”U´Æ—ÀÃâÂ.©éÔ–ÉâEƒ€"~ j´ xÙ -ÛrɱÐ×_[Ú)±£öô-bݸ=ñÍ —öˆÞXi†šÄʨ}— )Y§(ŽRìº0U²Î<©¨m.[*ÓÖ)EûšÆŽG±W_óâšîÅœ^sÆ•U*âCw-ib|Lñl±œt‚z•ìqz«ç£©•´:lÿ#Xæb¿ÈîmÍ«akÔÊÆ¥is¯Iq8?#33¬YÁ±æ–Ö -U£p¨íùz槗÷7§DË\Ô2éª^ €4¹œ¢Ë0i΃@©”NtiôV øÑ-{î- ^ÒßúCŠQRæ—?S„›P·Öh
÷DUÅ•ôm| m«QR¬Û|Œ¾ÄCún§¯yè…Å>p>7ðÝÀoì#O!ÿë˜V©Ã¥ÉBMb˹ëgj„“ñ¹ü·]Ìį?y¿ZìtpKqtŸáçí¨84Îd‹Syþ¾¬Ÿtv´‰ß®U—^òȧò
²®4-íÌ’ÏŸDáYÜ›wöjt¿Âî}Ä{µóÉŸü^9ƒ›‚'¦Ežbõè>ÝL»âï¹8j¯(¸¿Ò10#·ŸÞy¨”¯_Q˜qÊýªRM¶#_ì<Ð'Þ:^ìö³¾#ý½¨¡&QZz±ÆÓnš -0L_ÅÈ™a攣×w¾js¾ƒ¯kc‰ÓoÌòAoÔH”¾•Ým<ìè·WpÔ
Ç>£E/óMæ¨ -¢Ãü)Ä‘‹™”!‚¬QMžZVçü£ÅÙ?f t˯f'+jÉ
2& Ÿí¬1~»3Ù]*¦eæPˆÁà -´(®×áú7¾õu³°XDsÎФ-ÃŸæ ‚ä< ]¤UO_CÑ÷ßC}Þ„©Õ7ã«$³$~©T)*üſתŒ?p3Q©}ÇéÉ“h†Ì ?‡'²½KµƒgòëÎA¸t,´ïG—½Æ2ÕqJv¶"ùÄÓ/$zÀ¨Âo>Óxùå„?æe“`µl˜&eo^äkbMšn«Ä6-ý…ù.Ìúo$KÅž
=_Í@Ÿq¿úܳ}ïð¾)
î†QZ}GN޾Ȁ"Ÿ× k¾Åš{7&H¢ñ©5ÞbTü®ãÔw6”ˆø×g¬F¼×ØNF´b¸ú ¢L¥p1–Eñ‹ -[=@{TÌÏ à¹ä„á£úVBØW -e?«ïÀï9Ìüï†LßÓ;Rñ÷†yá ZEåÍ´%
¢ÕÚeªÄ&Ù—dwàšÂ#ºŸ1X*Bè$XË5Qt*Ñ"ŽNÙ²”äÞÆx©º…”éÙ)Ÿà7,5Í<²wážÿð€¿($ò/ öý²ÉG -©^0?J¹Þ%S0F½¹a[A3ª_NáÒŸ5VÿBÏ~ -þm!u‚±Ý.óû<¥X¸L-åÀ£~Næ;9äWh·¤ý/"Ù+‹bˆJú;ò®Ùf—ùMØÅÆ©ƒ’™Š”µÔ›ãÂYO±"X{6´¸8ÑO YÊd–`+…þµQ¦ÞáÍ–éŒÕae±ÁwmÚÉlSäæøFBîÕÛ‘GšR™Áëxù¯Ÿ<ýö‡é/ûR#¶*w
©"/@€P+JcÞ‹¯_¨L$¿mìS
©—áV瘛hòÈüÀÊ[†;{Øå\I±Ú>k¸ŸÍ6ò®LèWhÊÛ§d¨n%ôÛB%ÎK÷78äÇ©)ˆ¹S‘£ª/OjÛœSNÕ[7’•ªq®÷ç„ñ'Æ°88<ÉŽê
Æóß>q`™“a
Î*($}RÚTžPÐio£·f›oa?ÖxXž“`gôß%î;P»®ùÜ°R>)5Ë5)ÀÚPoX`¢ø`*7…ÛÄ»'´«®5ùÇ+Öúuïno¬ï®Ÿ9`Ó<´»ÐÜëOÌÄpâ’ÞÀæO!&vœÝTéR~býî¤á’ŠWQ|Œ\!EÐ:¸ çB«eV>*EÔOþÂÁs
º -µ‚ˆVžÍ¼Jæs=Q‹•]28m*~)„2…ß<òY§ó‘˜ -D츜£/3à¹LÜZ‚(1±»wéµM ÓyKMØjY,XpjuG£äŠ3UMx9½gèOl´zÛ~‰ïß4û/}è´÷tUj»^É0Ô.½¤ÄÍ6fø¨·ÏÇ´ÉöH¯ƒÔ³˜-«Eƒµ™6y]Î(.öˆCŒú› -þbXïýÖî——UçNâô7&#ú³yź)¤µ¤*›=A+Õ/µwªY|§î«Itô^¨œÞýøŠ kc!@Ìâ×Îoé–TÐÂKª¦ÅY&ÉŒåʹÃI -“Z#ω,VÚ(œ”MÕÛ‚apa®šR虶¡#ÖqW3¹©aþHï«Û‹P>koQÙYvÓ}y»´7ˆP%¤o&Ê5ëÉFpJX¿šG™sÈè’ºñÑ Ìã‹AøÖzŽcøáC ô5slì‹vRuÆê=|aOLÙ!ePÇyLŸ<ïíïaàŠ)æ¥:K,…_îãþ+t2†:Šu’&½ïë‰ÚxÀCÒÄüTœîS$°#géDèxúl+ÍãÌÍqä]‡çÏsº÷=5¸Ù³˜–ŸÎÕ{À¥pYqBx;µDj/YØ—ý–3¿¯&„¬¥d±ìTâ”qÙ+W{|°[TNôƒñ—SÿP¶§Äh™ïE?ÐC–Êt#½l -Ëc$9h -XGô.£Œ1Õ“MáX<´¼¢y¢Ñ½â ÞÃÐÓò™wN7¾·ªûTÂW¤
.Î/ Dxh!Öw·%ãTÜHævŒMië„»t*‰‡Šm-õ'œ¨²Exz/s…‘e³Œ£ë›'>À&.`Å:¡Äíy¶*9Âï¼s*q$x°ë®L˜L}ÍÏ3û„ýÆæ—Âo¼–N#Õ¨åc¸ „iÞY·S÷¡#ÕÎt@ -æ@à§ÃÍ[tWa¦Oc³%r"|”É åoxªn‡8àÅ•Ô6úÞwuÉ^ oG„$®Ðè{9³IÈêÊ£¦9]ÏÛ/FVÊ,‡2§Kv¥mLA†Ü`£ùvÒÞä«ß>ìÌTF”‡OhÏ‹#¬É}D¡j«Ä>ÔwLæEUý•œSm×òm Õ˜_©C=D4É"Û†,QVJ;2IÖ'ËÆ°jW?EçÆpë«iœŸëÔÊ(ŒlÉ—km?\æ]«ü+ô»¯òOõRÑÜhImV‚ÜÖvÞžÓJ–¬«i†˜’®ü9~.Åò?AEWðZQ†ú2Šo]’˧Ž¦¯F$PEy¸>¦ëD’à€q’_Ï•o[¤KƒægK+Óq¥õ{MÁŸÚyª¡WÎT°ÞW -ÛÚy—ÚnvI]Íd¤L%úk(““¬Àj@bÙñó0µ§ÕŠ)'ýÇŒ³Rf•±åE*Ýç-å®}€)W
ùR Wôœj»•ð±Cÿð81fôêôq®úø×'DÎßÃîÓ.©Â¹U´ûÅKmM™úŒÜÒ¹d¬âyd”„è™Y~¿ôÊ@=/jÉR½è¥ö.5SØGäšl‡e‘ÓŒm -ÈOâÙ~Ù'V«™S0‡xÓ™8C‰œ†d£Çýsûž"¯¸±]¸ê´î>œ³æÐ|ñ‡™ -Jünqèèרô§Ty½šƒÊ¿¥I·Aq—õá‹Z%9?)¥§üŠp¢#^lÌáŒðÖ„„I’³ÑÉ!´ðKˆ«åWü–¾UÇCÛ¹†’º‹×®z*®éhíç&îÝÔˆ¦ÒpXNƒéÁc¾ù."”ôÃmPU›AJÒàäÝ -Uf’å¤<k}Ì8’„›åy1eª«‡¤7óÈu’p¬®¥s(OeTh—{ÀbÿýßS.…ˆKÞ”PJ=ËjgóÜê-Ô_h®*!Ô†—óXÒûìfÈ“7æÂ4{í]ùÉÚÒ‚oyâߟ0EY.FœÍKŠô@LUOŠi^w/Üê7¼C(˜ÞÚ÷‰éƒÛ~õ¨ºØØÕÔë’K‚qbHØÔX˜‡+…Ù¹=€ž£Zgk·„¹ž³gú²¹ÕpW-;ÏùzƒÎñ7°eO›âðy~⢾ï´m*Œê30V.o ¼/ƒ«ëŒF¨±L¡Ø65<_w¦âchĨGNŒ}tƒ®ÛzIXÈŽ«‡ü¦³ÅƒP†P^è2Õ(È—ÖÖL:u¹6—qéÍq‘Æ”7œ·Ö“íû“¢Œ—oŽ£å†më/û6ª9r~¼xtM—ÙlЮƳ¤Ë4¯†‹30ËI(o³ÔIäÈ@¶Ô„Î<©´U'T9Eí”㦷™{²ÿ|Ð\¢ˆ÷4ÊNó>
ÏÒê(HvÏÆ-nÂíÌìä`Þ0DEâÌ -ð¥ªT Žºù&¡‰àëvHìÅÎø—â—¨|2#‹ÈûjàÍ~ v ]_¤sË–¸÷£dLý¶‰¬óªl?@7~ÕìÁf/Ôý]ŒéB¾ˆúT-êS“H¾Zª[Ã,›ìÁD#wÛLøÍ”PÀ68I…ûs—t5\œB¦Ïq
G)fŠ…îÇÂŒ}”ðª4,m¶Ï]ÍŒš£±éŽ@·Ç"4BËý˜ïÎ÷oŸ¿ˆ9uK…é‚V¨‹Q2dY’㇕oÐXë\\ÁT7ôéL§ æ“Å=„«ßKì»×…ãåÞB^¼ïñ:e:ºûA¾ºÖˆ…Ø×%YäÜ´évJ÷\«æØYûùJV},6>Þšv½øÈÏi÷°6™’^¸OøM–!kÚ^Ù»<l‚'ƒvØCÜZ{óâË!3’î‚UDpì廚ŽgŒ}ÞLªzî…’b_V©ò-DÔ7™h~úÐcÅn»aV¼þŠäãôî´Ô8Të/Añ^»»£öQÁ*I9ŒëMö|±s£[CËÈP¿Üù†«Ëeõ+tÐÍ ^‹$¾qobC!,cˆqÕÇ_ÎÌuMÔÌß`ÒÔ0Ù˜ú¦BÃညàŸJ}!éGs19lÏñ»Ö—³˜ZéGÓ*HËH"$o—¿Ub-;¶e;žÑœôGé?Õ¥AÉP§ãè}/¸½B
°}¬<‰6Çz«ë=ƒS`ü¤4#\žÀÁhRoÜ;½¡ó”sTocíLÀä¤MøX÷ÓÃQ‰ -½å>V·.— -ÒÜîªQè]‹*ðåVäIw8¶ñÂi›M‰œÌ¿$a|
ÙòȱV¼ó i×6\…¼“Dýð¹¢\ý£¡J©ÔK•¹¡áXl¥ÝöVƒoÓÞ$âbÌegž#ñò¢ïF’pÌ
¯Úè‰Ñ^rÅ -¥›S+YÊ;Ūìâ?¬_§IÅ>Ø7!ÒÇÏ£ûQ -aÑF"$²¯Ö|3ß!i#ÌT<ÆK[tô p;w»Ô.Š[° - £M~Ñg<ÇÿšâNÜ~¬Š$’ -œ\7±?·-ï¿ý÷¥“ MEo,ÖA„&±}â÷ÂE¥§Þ[:Ö¢•P’º‹qݼ¡©Ù¾u¾1b’0W—¦‡WG&Ù¼2ª¡t7· ,Îĸ—Áw¾Î”…uÑÎŽÕý9f8xºH]*ùY=ŤÔ\">_xÞä¾dB²a×/Ë—œ{íÓ›ã¾p‹Ä#åN³Œ„„×ÙZ¿5ð -‹¢T4ƒ %ŠÑÔfjÂÅ4L7¹ág¿«“qàïÖÈ@¨DDF‰šO`„®vÓ(…dE^€É0Þ±½ßO{_õÌ¢„Îú‡Rô¤ê quâat¼ÉXe²Ì¾ÎKä£^´¹î¯é,’Ôªy–„ø<œ§c9\`9[B½‹º‰¬ÍDªc£ø,̅ò=åÃÄ3ª"&‚Œ™ž :XKdÓNBl|ÂXy‘|$F¿¼EcL;×Sü¾g*›EHç8’‰¾óűŸôûNYµ]¿FiS_q³;¾‚AiœôÂÑÅúÈÝÃNÞ‹Üwæ¬J¯@Ï“¡–ËG±M·3% ÍÀ·°XÄ
óv¦18+M“wÉâý÷8K‡ó–ŒÀ:ÉÉ/Œ-y$"£âµ°S]{:‘)EÜYíkN -Ä¢ƒ7Ó*e¿§Ô¥Ä‚¦o‚¶n»éPà:m;Zd%«xc¥Nâ™aÔŸ?¥=€ýZuxçY+¤ó^¡Supã}ÏC£Õ,ô\r”xW)<çK qm’E+Ëç‘‘DÂó_ïŸÃñÆ@V7³îÒ³3›”a¤)dÚ?·Ý‰@xäÄÀc”´Ï0̓ºÏó"óâ½û™µrJóòZ˜JÅ›=2Ónñgkù"áz@éóa⵬彵?ÝæöP¤!}•-ҾфýG¨ÈVËsRñ²aTRïäËâ‚k\Ãb¿U¶.ÁãgößvQ¼h-aó•âœrfAÞ€ÊUÁèDZ$ù('€»¯LM£/hj¸ÒRöâfòg¶ËŽ§ÝÞ»'ûêºn ³XÍw‡W×6>y~ëF—Æ”§üŽÓúÝ—HÒN•Ûë{Bk}ÒLþo†ô&‰¨¶ßgÎ~Á¼Ù„¨;¥rÁΑ½‚ãi?:±{Êc<ű26ÏÞSˆS¯ÉIy¸z/´Oœ*kYi‰ÙË6lRºQÜqà -8¾÷z³ž“pTÞC»e1—´}FyèAò%Ó¼&Té³ ÌPæsî'éÄÕH]†ÌBøÓõöa"unáQaÝ,«N”:FÝÑû£i'Ñ£1»Ö[¤$ëêj€þFuÙ¡dò–MÏ~Ÿõ½bœ¶¹k½žØMƒGµ*‰ÃG”0õé™ØЀBBVÅBZ_Âë/y LæBÀkˆß–œ2}Â)<ª2{2nUb^=èΗx¨oDÒš6ž_›ÊXÒÙÜêÚÐ×x¢–ÌnM¢É'¦WÍäŽî$ 9Jœ )o¥ÇH—ð“q\£ÍÃ/Ïîí3 -†µËÏú蟥çf³ÖõÄ›M÷|!¶g#=êŒ.wtCìz¶u¥'}ò°˜_¦*›PtÜaŽw’ëöR\v^èTª(Õ:¢_ àT·Q¥´æd…úê’ƒŽCð×F³î>{ÄÉúÌÕ‰&Ž]bÑØ›Ë+jžÅýr¨gt2fÄêÚ+ÏÞ›í–j_€âY^ -ë1£äª
.WÁPxjSÞI#Üʪ֊ çtûuiš!Çî½ÝSo·×íÓ8€+zqõSÈ¡,È!ë*T¶CÌ]ˆX9v]&8S/¤ê`諺aÄcmHê–ELL.&Í·c_ƒ²ÍçˆSÈ<:~¦¹OÅ;E¥5Íq˜ÙŽà¶?ñv—nŽÓŽQ|oyèNÕïo磞YHºÜÈ÷”L¨·½ÛìC$?Màc¡"ÇN7ÎâbLnÙq: -§¬ì:9§ËY×ûM¹6È"Ù~ÝßïJ™uz¢ƒÏCz ©aÞÉ!âÚª8µs¨•<Ä×
Òð쳯†²Å³XcÄ*3å²›Ëj†Gˆ4£j2Æ÷Q@\}’Tyž¸¢i¼á8t‚ê·ý†ó`gh‡M£ïBD¸ëÙ›0Âp^*•-ºkjÚ·Z»æãÜd¨ÅüîÇ&n»$q‡˜,[ijK„½½%¡“îe6eS.Ââú˜ˆfÄ®ý>e¾î–â ¹¶«ŠØ£>;–¢‚/MòI”¡øi1-ƒ -¯‹3ÿ²]inÁàÞËDÒ>{ÓЈ dx—v³©lò9 ‰N‰+¶¦zöÍñÔ#é)ó\M£[s@Z›ÉR'õRÇ}ËAÕNQ¹IuÒ.8þÌÀˆ‚;a?ú“‡ö8ζÜ8ùx ÐxoAy橵"wðõçÆÛƒã)ï¼àì…ŒÞΊ@ÌcKÚ_Ù¼Z‚{+ˆ•\£\hr‹v·ñjÉæǸ((%Õn¹ð·
V•BòÃ{9y¦gN°œ
fµv*Ûï›s**o™^þ(Ú‘r)`lV3°ð‘öTÇãèή hYmš´0”ÚÊ÷8K¯6ù€›§vóÉy“Æ 7D倷»ò§1
\eÌ}¯ø§5ˆòþ[%fvÄÕ'œbÛ©ö¦&©"òƒõ4ìË*Ã5[Dô`1käý¶Õ•Ïê`•rM<4{áôUC÷øwݲðãT5cï¨ûët©„U0í¶»©kµG#G”Ä~}±yôd¹üÄI!ß©¬ÐGÀEîn‡NOí¬PË$‰šÍµÃ‡WgÞú©é!q@¥{ß®ê7ö$¹UÔî¸ò¡Pšè¾Ð›ÍA©a•bg¿fD(s¥ùv®gZÙZP€=NÕòä9èÕ&çýw…$H›Àì×Eg—ó¹-}>LÁ•Ó¦4üF¸pâX•*À¢„ƒ0¸LM+ª[‹Àãco®OóbÖŽÓ%Hé.. Ê X;éôN~'R‘`&‹¤óH–$Ѹ½¤[*¶–›<
ZG„‹m8Blà‚`•‰ -&ùf¾±<£>W†2<퀔ã*õˆ¦¸ïÞºÑbï)£(]|Ͳ7.ÅBêOo_™íí—I>Ĺ=à[väÍ$ø¸ºBÎk[œy¸;ª$Ô¶VÔ¶¨ì+Qý †$·fø‰AÙuõ€•ô퇚|ÄS)¬ß©ãb -ÞëÇáØ(>§"´Ô?"¸ÔvÂj“øÓ‹©OïDkº§«wèKêfhÔuÐàÕ–®L~vsÜLðw~ùŽø›f÷ÀGY¯y²™)¿ÓbOú©ogɺeÁ]ñ¡—êÅÇêá0·H—c<ØÔrZ
:ÁÀ]>Ùã‚!ååÅÈؤüð¹‘c›€ù«ð#®QÆÂùOsYŽ\$yÓ&ˆ³±Ò„} ÏK÷ØÈó¢ä(ä&&¶¬SÊŠ¡ÊÛË4öË(d®NÏpT¸#;®±õæü_>ÿŸàÿ K{0Ðu +xÚíveP\í–.î xÒ¸Kã.ÁÝ +T!æ®.*PGe¶7P{K5s{ààÅ £“rƒ`¨£4è-Ò` +bH©©(¨ÊåTu +…=»0þϺÌþïkò¿¡Åÿ–ÿ[Úû¿kî¿öè¿\âÿí}þWjYW{{UÃó +PüÙ3€?‹æ+øÿ²9@ì=ÿ«UÔÿé²Å` çrH:Z?·„
ÈÅÎù·â"ñ +Š,ÿÝnýKSýy`ÚžN`Àÿq£§µüÏÞ7o +Ÿv==noŸIÐßÈËKÄDÔŸf1ù'ALа™°y¾ù}ï4(Y—
ôUrüBpSû +Äâog;ðµ[¬;QŠˆŒ¯Ûwîó=Ö¯ ¼`ó¼W¯åçL¾q3>ÅW‡èS{àVýd‹&ï•Ï<—ÏÔ=7D|Ãý ¬ZTô0èÿ”¨ŸÇUÓ©äó{š±Ý®$&“vÙ|G~ðy›VØ\™+ +Í1ÆŒCïÈ`"&¿g!¦¬¢5ºvIN§¶L/òëñ‰S£MÀËTpÛ.KŒ…¾þÚÒN‰µ§gCèÆåa€hFظ´GôÆJ#Ô8VZõ»tHÉÚ8Eq”B×…‰¢uæI-?msÙrP™–v)Ú·Ð4v<Š½úš×t¯(æôuƒœ;0®¬RºkIãcŠg‹euÁ–'¨'QÉn§·º>š‰A«Ãö?‚¥/ö‹ìÞÖ¼¶VOl\š6óšƒó345ÅškniP1‡Úž¯g~zysJ´¤–æOWñ²H“-À !º“rá<”LyáD—Fo•€Ý²çÞbùÂKê[H±3JÊüògŠpcêÖZÂÍឨª¸’Þ ¤íoÕKŠU¢s›Ñ—¸IßíÔá5½0ßç +’Q(øf´ÕÆv»Îîócqà25•:Hø8™ïd‘_¡Ý’ö¿ˆd¯,Š!*éïÈ?ºf›]æU +cíÙÐââD<%d)‘Y€äû#TG™z‡7[¦3BV‡•Dßµi%³M‘›á +ê»WosDVhHd¯ãå¿~òôÛ¦¿üíKýت@Î5¤Š¼ +—±wOhW]k(òW¬õëÞÝÞX!Þ]?sÀ&yh7v¡¹×Ÿ˜‰á<Ä$½AÍŸBŒí8»©ÒÍ%ýDûÝIÃ%®¢x!EÐ:¸ çB«eVc^*mÔOþBÁs
:òµˆVžÍ<Šfs=Q‹•]Ò8mÊ~)„Ò…ß<òY§ó‘˜ +„í€ÎÑ—ð€\&.Mý˜ØÝ»ôÚ¦„é¼¥&lÕ,,8Õº£Qr…™ª&¼œÞ3ô'6ZÝm¿Ä÷ošý—>tÚ{º*¶]¯dh•Þ +Pâf1|Ô݇çå;Úd{$ƒ×FêY̖ѤÁÚL›¼.g“J{Ä!Æ@ýM1¬û~k÷Ë˪s'1ú㑽ټbÒZRåMýž… •j—Z;Õ¬N>ÈS÷Õ$Úº/”Oï~|EÐ1†± fñiå·tKÈkâ%UÓâ,“ä@ÆreÝá$„H‘ç„+mäOʦêmÁ0¸0W
IôLÛÐ븫™ÜÔ0¤÷ÕíE(Ÿµ¶¨ì,:wQØé¾¼¿]ÚD¨Ô3Îz²œÖ¯æQæ\ +Œ¡Žb¤I÷ûz¢è4ñ +×Å>zÙ/=Ü›m an¬3m WÎ…ªKd;8±¹Ž“~ÛÖzåXkNëþ5 ,±u«°<F‚ƒÀÓðíGqOZù²ÙØc9•xrL¿d'Ë«Áv»;»n}C|×`-Õ‡U\ïñŠÆLÿìHíbô°²ƒ‹¢c¶¦¸xsñi«GB72û¼âW`c컦éÇp¤˜RMÆ…´4)äTIrûŸcÈ‘¢¦]ç|QG®««{y-CøMózã±(™ho'>Äž“
,'8Ь›áµßaÀ¤Ò]ˆc·_e–K¤ÓdS~z˜Àl2 Sù´©ëÓ 4•nThS(²loŸ®´fSYSÀ:¢{e„©–lÇâ¡éÍýˆîõ†ž–‡<H¿sºñ½UÙ§:ø°¾"¥q~I ÌM±¾»-§âB2³clJ[/ Ü¥SN|<Thk©?áDÍ)ÂÓ}™+„|(“e]ß<ñ0iu+Ö%nϳUÎzÿãS‰#yă]weÂdêk <÷ìö›_ò¿ñZ:
U¢–ႦyfÝN݇ŽT:Ó@ƒøYš‡—{ÝŸ—ÚBèÙ~³Mc +Z:•¾LçlçDUr"´2Uú…癉{JÖvEãÖã¦Çõ ûDÃD„…ÔOŠ9ÄÎX\ç.–6ÝŽôþÝ
äüR8¹’ð½c +ôõ¸¥)•3Øß{•ÈñªwÏ·¼ƒ‘Ïþ»õ’ÑzÏ“
¬e†?Ó³:›Šãír s èÓáæ-º«¹¾0Ó§±ÙÙa^Êä„òˆ7ÜU·FCòðbŠj }ﻺd.·#BWhô¼œŠYÅetäPÓœ®çí#+¥—C™Ó%ºÒ6&‰ Cn°Ñ|;)oòÕovf*#J‡ŽÃ'´f„D‰HÖd?¢PµUbê9&ó ªüJÎ)Œ6kù6jħء"’džmC–(#©™$cŠ“ecPµ«—¢}c0‰õÕ$ÎÏujeF¶Šä\ÛÏ—ùÂc×*ý +ýîë£ôSG$7ZB‹• ·µ§ç´’%ëêDŠ!¦¤+Ž¨P^à' à +^+êÃP[FñKrùÔÑôÕp‚ªà/—ÀËtH0Nòëù¯òñm‹”siÐüLcie:®”^¯ áS;Sõ/ôªÑ™ +ÖûJ!x;ïRÛÍ.É«™Œ”©$CBu%’`’X¥Ç„¾hvü<LµÁiµbÊIï1ãìC ¤éDely‘r÷y‹F¹k`ÊU]®TÜ}#§Ún%<DôÐ?<N”ý£}œ+‚þõ ‘ó÷°»ûGèë´Kªp®FeþF±R[¦þ#C·t ´A<·ƒ´¢ =3Ëï—^h£á%C-Y*½ô"ÑÞ¥±ú¢ò;ãˆÀÉvX9ÍØÖ!¿Ü$ží—½qbÕš9y3ˆ7±s0”ÈiH&zqÜ?·ï)òŠÛX§y÷áœ5‡æ‹?ÌD@üw‹CG¿æ@…€?¥òëÕÔT¾-
º
Š»¸¬_T+ÉùÈH)=åV„ñbcg„¶&Ä“œ
7HÞ¢…_B4YÕ)¿â·ô:ªßöÈ6”4øÐ-˜¿vÕUvMGk?0vï¦F4Ñ—‚ÃrLóÍw¦¤&˜hƒªØR²X"
NÞPe&YLʱÖǼðˆ#I¸YžU¢ºŠpHz3\'ÇêZ:‡òd~QF…vy°*ößÿ0åRˆ¸äM ¥Ôµ¨v6ÁÞBý…æªBmp9%u±ÏnŠ<yc&ä@³×ÞuŸ¬%%Ðñö—'þý S”ÅbÄÉм„p´`ÁD夘æÕx÷Â^Ã;„‚é}¯‘˜>¸íW*‹]M½.¹$'戄M…y¸"X˜Ûèù(0ªu¶v˜ëù1{¦/›[
Wղ󜯷å9þ&¶ÌiS>÷O\Ô÷¶M…Q}füFJå
„÷áÅ¢puÑ5);B&çëÎT¼5°ñÈiþ±nе`[/qsÙÑqµßt¶xªÀ€ʦy¹ÒÚšI§.צó2 î4¦ì°¸á¼µžlߟe¼|ëtÝ07l[oÙ·QåÈ¡óãÅk¤k¸ÌfývUî]h$]¦Y5\œ¾iNBy›…vÊ G²…tæI¹:¡Ê)j§7½Í¬ØË2ñ'‹ÐÏ%ŠxOÃì4ïÓðÜ!ÍŽ‚d÷l¬Ñâ&ÜÎÌNÐ
CT$Î,?oªr•À¨›oš0¾N‡ø^áŒ)~ù€ò'S²ˆ\ѯúÞ\j—`ÚõEú1·lñKp?JÆÈŸ›È:¯ÊötãWÍlöBÍßň.䋈OÕ¢5‰Ä«¥º5̲ùÁL4r·ýÁÔŠßL lƒ“T¸ï1wùFWÃÅ(¤û×pcö§Xè¾p,ÌØG JÁÐfûÜUM©9›îtzÌC#4Ýy?à|ÿöù‹¨S§‘¤a˜ŽåÊ +£4+@bÂ_`±:Þï¯dÞÎ8/ë†xcJœ†I™žëµv°¶‰!ÞOðˆVñúajB³Ð÷r‚&óF¦ìô0Iî3ë/6°÷¥ñ,y0&¹>jxSñú_7úXêáõóä~„ÁÂD§°BsëN¢·p4
ñzãöRe©ŠÈΧD7áG÷ˆ!©K²b‚Ú}RŒŠê|v¨]£¿HšR¿z«]åjdmÎN|ïÌ$ Ž>¸¬êš&Q4ÑV%_øv0:ÐÀäÐÎ>¹¤5Çà“ŒŒ}ŸU;™ ìŽc9”_=¾1õŒWŽá©ƒ¥™¡›ŠJŸÚèÍÚ Æüæw@üøš'þ–º#Fñ”9'$Û
IÙ€drÍ݉aáuY†M¡tsj&Kz§XU€]ü‡õê4¨Øûà&„Ûàø¸u>J",ÚÈB…÷U»•næ;$l„˜Š'Ãxh‹Ž^#A +vi´×®Ø®(OÁή<'ð&öç¶Åý·ßã¾4câ¤é¯èD;ˆÒ$#¶ïCü^¸(÷´À{KÅš·JPw1®;‚744Ú·Î7FŒæêÒÔáðêÈ$šWFÕïæ„ÄXâ×á2xÏ×™²°.ÚYØqø 2?ÇC©K%> ¡—:€KÄòÏ›\׌I6ìúex“s/°±}zsÜn‘¸%=Ði–‘ð:[ë·^aQ”Šd0¡D1šØLA€LÃäq“¾qö»Úþnˆ„ZIDd”¨ù†èª1RXHVtà˜4ãkÐû
‘ú´÷ÅQßÉÌKè¬(FOªü˜#P#ÎBÇ›ŒU"Ëìë¼D>êE›ëþšÎ"A’gAˆÏÍy:–ËÚê^ÔMdm&rSîÀoda.”í)½&ž˜Q6`¬0ÏôLÐîÀZº ›vdãÂZÈ‹ä%1üå-cÒ¹žâ÷=SÉ4B*Ç‘Lä/Žý¤ßwʪíú5J›úŠ›ÝñJ£¤Ž.ÖGînvr^ä¾3ï`Uººžµ@…6.Ì”$4}ßÂba7ÌÛ™Æà¬4
ž%ó÷7Þã,Î[Òüë$'<t0¶ä‘ˆŒŠ×BNuíéD&qgµ¯9Xû÷÷ÖŒE¬l&«ùÛL_SòŒÆƒ./ýJ=‰Å~êó5Éá}|;s~àÔš†óÓÑ]+VÔB|~†óZT»æçq4ŠÖØ"ûeÖ¤s'm¼Ù`룿õÅPh7¾ Y‘>!H«“oà~d™øóóiÁM†*æ0‡Ä/öR¼M\”ÔÖ:š^_•¿áS‡[~èžÚXò/Pûqú×U;“_UWÆ,Ù8*ݬ±¼–C·§·ôÝQj¸ø¢ò°|šœùa£dHÖ4ã} +Ä8ü.)>³"äŒãÇë]°¤ºÜˆÁœ,:x3RÑù{J]J¬åôMÐÖm7 +\§mG‹ŒDO¬äI<3Œúó§´°_«6Ï<k…TÞ+"tª.¼ïyÈa´…ž’Žâï*…æ|)!®M2heùÜÒâ¢Hxþëýs8Þ8(ÿêfÖ]zvf“Œ4…Lëáç¶;q +R`«å¾V®xÙ0*¡{òeñ Á5®a±ß*[‡àñ3ûo»(´–°ùJ1NÙ‰ +žØ=å1žâX™eïÉÇ©Õä¤<\½Ú'N•44Eíe6)Ý(î8pùß{½ÙÏI8*ï¡Ý2ŸKÚ>£<ô ù’iVªøÙf ý9÷“Tâj¤¥]†ôBøÓõöa"unáQaÝ,«v”FÝÑûÃ)'Ñ£»æ[¤$ëêj€ÞFuÙ¡>dò–M×~Ÿõ½Bœ–™k½®èMƒGµ +‰ÃG”0µééØЀBBV…BZ_Âë/m9Lú‚ßkˆÏ–œ2}Â):ª2}2jUd^=èΨoDÒœ6š_›ÊXÒÞÜêÚÐÓx¢šÌnM¢Á+ª[ÍäŽî$9Jœ )o¥ÇH÷“q\£³œ‡_žÝÛg +,^?yŽÁI×Ïú\³ì'´A›C4îs_çj%Râ„*ßã£3ëúµ|”²Œ$ßÔ•¦9yóY½7-áB”[—^çÎv5u$®MžÚE¢ˆârBvŒt2jLArôvCÒìzAŸON¿_ä‡t©Ï°Ò‹šâ=Êíµ"ËŸÞÜîár–ý%*<#ö¡îˆ¼'!éJY^GjŽÞ`¢!’+”¸yx,å„èò1ý=,ö@Pí€*þÈÛ +ÓL=M{*ä)qÒ(iI"\ÄuSý6[þËÕ¨±Ób¦eˆ
UγÔnºÅÂÑB4:èuDé…$“dtevö0¸¸ÑéÕÑg¶³¼¥NN2îƒi@6´š<-Ótfù·@Èjã¬Í׸>Ïš/|YMV©Mù¯Ta"cw,\†êÔþõÞ*˜÷Ý~U¢Ò’Žr{^ý·U™”ã6ÄÕÉ©ÞE\5$¥fX²A…aíÁr³>zgé¹Ù¬u=ñ¦Ó=_ˆíÙHÏ@ÚãË]Ý»žmD©IŸ<¬æ—©J¦kw˜ã¤Ç:½—ƒÚ•ÊŠµŽè8ÕmT)-‡9Y¡¾:ä–Ç!øŒk£YwŸ=âd|æêDÇ.±hìÍä4Îb¹Ô2:HH3buì•fïMwKµ®õ-ãY^ +é2£äª.WÁP¸kSÞI!ÜÊ¨Ô +#çtûui˜"Çî½ÝSk·×éS?€+xû)dQd‘uä+Û!f.D¬Ö».œ©’u0ôU0â±6$5‹¢&&ãæÛ±¯AÙfsDŒ)d?Óܧâ¢Òæ8LmGpÛŸxºË6ÇiÇ(¾7<t§êõ·óRÏ +/$]näû?J$ÔÛÞmö!’Ÿ&ð²P‘c§e“[v$Â)+»NNçérÖuÓ_®…Í@+²H¶_÷÷»Rfžhãs“^Bj˜wrˆ€[‡–íª%ñuƒ4Ü»Fì«¡lñ,Ö±JL¹ì¦Ç2áÂͨŒñ}WŸ$î'`47‡vP]à¶Ápìí°iô]ˆ0W +El‹RŸKRÁ—&ù$JSü4Ÿ–F…×Á™Ù®8·`ðLïÀå"i½ihDÈG4¼K»ÙT2þD§Œ©ž}s<µÇHzÊ<WÓèÃÖÖf¼TãI½ÔqßrPµSTn\´Ž?3 p¡àNØþdÀ¡=Ž³-7J>4Ú[PšyjÈ|ý¹ñöàxÊ;/8{!£…gÇœ³"ÐóØ‚öW6¦¹ÀÞJb%°`ˆ&»x`w{A¯šlvŒ‹‚RRí–[Û`U)(—A1ܹ—“waræ4ëÀÙ`Vm§²ý¾9§¬ü–éå¢I—ÆfU}s)O5<Ž¡ì +Š–Õ¦IsÉ|³±jã¸yª7Ÿœ7‰a²CTx»+ß¹ÓÀUF\÷ +/qZƒ(ï¿UbfG\}Â)¶jo +iRŸ*"ß‘Ö_Hþ¬2X³EDµFÞo[]ù¼ æP.×ÀC³JOQ1pßŠ× ?NU3öŽº¿N‡JHÓN»›ºVk4rDQ¬á×›GO–ËOœrJòíp@rw;tzjgùZ¶ Ôlà/^eœY{è§F¤‡Äåì}»ªßØ“äVEP»ãÊ„‚i"û‚o6%‡•‹ýšý¡Ì-”fÛ¹òœiekAö8UË“ç–¯69ï¿Ë'AÚøg¿.:»œÈnéñb +¬œ6¥á7Â…Ç*WÅDA‘
djjn{3=˜³ntœ.a°ÀxDúKw1 HPÅÚI§wò;áŠS$-íG²$ñþÀí%RѵìÜäi +½T/>V‡™»EºãÁ¦–ÓjÐAúî²ðÙȯ –Q^^ŒŒMJŸ9Ö¹X +?âf,œÿ4“áÈE’3i‚è;++ÞˆÛ—p°tl1/JŒBnbbÛ ÁÚ¥¬*<½Lc¿üA‚ú éjôG…» endobj 1321 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 35 /LastChar 122 -/Widths 2737 0 R -/BaseFont /MCRCVV+NimbusMonL-BoldObli +/Widths 2745 0 R +/BaseFont /OFGDIJ+NimbusMonL-BoldObli /FontDescriptor 1319 0 R >> endobj 1319 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /MCRCVV+NimbusMonL-BoldObli +/FontName /OFGDIJ+NimbusMonL-BoldObli /ItalicAngle -12 /StemV 103 /XHeight 439 @@ -13636,7 +13611,7 @@ endobj /CharSet (/numbersign/hyphen/period/slash/A/C/D/I/P/R/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z) /FontFile 1320 0 R >> endobj -2737 0 obj +2745 0 obj [600 0 0 0 0 0 0 0 0 0 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 0 0 0 0 600 0 0 0 0 0 0 600 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 ] endobj 1312 0 obj << @@ -13652,7 +13627,7 @@ xÚíteT\ë–mpw÷‚àÜÝÝ-@€ www4Xp×àNp×à®yœs»ûö¸¯u÷¯7^±kìo͵撹öGC©¦É"nî` ’q°‡°°³² ° -˜Î K ³¹-ÈÅåæû¯éü³OÀêèèhëùw´Ãß^ÿQâ²µ`EfçxËiyËm ¶GþðײÈÛ[8 +˜Î K ³¹-ÈÅåæû¯éü³OÀêèèhëùw´Ãß^ÿQâ²µ`EfçxËiyËm ¶GþðײÈÛ[8 Œ»C]ø¶ti ÓRß÷Ý…X«´m¼L»AŒJÑ2uc¼Ïf•ÖaõyØtv7GÕ5ŒJžáÉÆÛ8ÏîÞ»àRß:¢û™¥×Åãµc6¼Ãþöåè˜6ùàî–®oxp ¿ó®{‡„)7‰FÐ
6:À)—DT_»Â;’iºv—"®;)ˆmq*ó‚?˜1û5_ÝN[ë’ǯ=×ç³"/LIê}Ä£›k¼¶lBñ«¨¯¾-š|oRkÜó&[Þ&±ÝñreéòDQnßô?ª[K79Ð7/Ù/–_!ýmÛÑŸ ·¥Ê“žHÕ]Çy÷A8\¼ÙŸ.¶h¬æèú†ô“Bj£Öè®{ŽúÈ£÷ öÖt=¿ !æ¢DÚ–¶bO„t8&óïû·ù#¿-L.Ii§¼µ\’îžhRºª®
xïN ®°V (Š0¢™PÁ´i—µ…½g`
äÒWDWN=%&jc6–K…Á×M囑êæ>vEÂëÁ|Ž¹Eʯ#«îu€U•ý9å™x¼.dávÈ!ý:8ò¾€Ù€;pñJ#WT ¢Âª^Ûà'áHðmAFr4”,=gK3M¨Ì(R @@ -13684,23 +13659,23 @@ L„³Â”%$6$n”% I1YÈcó³:Áì/÷HÅ uÎÂüÕÏÍ{1T¨—t+jªNìpC4ç@ÖîÅfÙä:)0ýôðt<P‹b¥7ŠÔÒ·š‚ù(23¬õÙMö+&cÓl.^85^Z£Luü‰ ê EªÊqÓëTéCòâ¯yÇõ•+«ûv©FZpÇZòU1ì´‚îâD¨4ùÓ£Bªg9Œ¤ÁÆ{¾Púé™S›vÑ$‡¾\ñxllË5çÍiéõ$éTlFÚ—}GÈØf<üÈ -ü%ë2bh{açògôCÿ£ÜïW{e1¯éF¾'GŠ)Æa.¨³BG=(”ˆüªCÞÛjHk_×iêPtkºé7ïze›¶ý“tå9¬)U1M¯ž6¾¬ 4*k?¦‘<ꮢ±²àN|×P’.n¹||£ÜU+¶3F”MhÆœ¡¦9Ÿ?hHû›ç—nrÞ-ä0±Å‡ÝÖà’U·¢PA7ÄÜFwæ°'ŽÁìÓÖ‘–º@çPú)B²àFpéœ=ç(®é…àÎÂL„N·Í-þÄYØÒ.ŽF¹ÏîÀ1ÇN4.ì—{œH¶/ªB¥0¿Næ%@»&ZëÑ»BhÙœæ¹áí„WèºÑ$Kí[Êit9œßë;*ø¢FÜíƒPk—×xøOyŒüøŠ¼ÂÛ/¯OwÙóp»B"6àl:ˆ›ŠÕ‚U‘eP -Ç^;áµ³†˜¸ÔÕñXðÞŸÀ»b’¨®k€*G/·O3(|ýhÉ›ÐÅØ%§Yæ6ÈËM‘~OŽ¿Æñÿü
½}»—%Kƒï¦|º9W¼ø+[Xìè¤P˸—úòbhê~ƒÐT¥:J‹ìÛÔ +Ç^;áµ³†˜¸ÔÕñXðÞŸÀ»b’¨®k€*G/·O3(|ýhÉ›ÐÅØ%§Yæ6ÈËM‘~OŽ¿Æñÿü
½}»—%Kƒï¦|º9W¼ø+[Xìè¤P˸—úòbhê~ƒÐT¥:J‹ìÛÔ endobj 1313 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 34 /LastChar 122 -/Widths 2738 0 R -/BaseFont /AOETMX+NimbusMonL-ReguObli +/Widths 2746 0 R +/BaseFont /UZLPVW+NimbusMonL-ReguObli /FontDescriptor 1311 0 R >> endobj 1311 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /AOETMX+NimbusMonL-ReguObli +/FontName /UZLPVW+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 @@ -13709,7 +13684,7 @@ endobj /CharSet (/quotedbl/numbersign/parenleft/parenright/plus/hyphen/period/slash/four/six/colon/B/C/D/F/I/N/O/R/T/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 1312 0 R >> endobj -2738 0 obj +2746 0 obj [600 600 0 0 0 0 600 600 0 600 0 600 600 600 0 0 0 0 600 0 600 0 0 0 600 0 0 0 0 0 0 0 600 600 600 0 600 0 0 600 0 0 0 0 600 600 0 0 600 0 600 0 0 0 0 0 0 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 1237 0 obj << @@ -13720,7 +13695,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬µc”¦ÍÒ%\¶»Ì»ªË¶mÛ¶m]¶.vÙ¶mÛ¶ñõsÎ̼³Î7¿fÞ×ZWFDîØ;2“„P^‰FÀØÎÐDÔÎÖ™†–ž kacèâ$cg+M#hgmøkd!!r41p¶°³6p6ᨙ„MŒ +xÚ¬µc”¦ÍÒ%\¶»Ì»ªË¶mÛ¶m]¶.vÙ¶mÛ¶ñõsÎ̼³Î7¿fÞ×ZWFDîØ;2“„P^‰FÀØÎÐDÔÎÖ™†–ž kacèâ$cg+M#hgmøkd!!r41p¶°³6p6ᨙ„MŒ Ú¹¼h˜™ ÿßtþFÄÖÈÎøŸ)Qr6°5þ;XÿËðÛÈÅÑñ¯žÿ:ëþŸë¸‰‰»‰Ìê’W°eZfºs
FîЄ°V_èPˆ}I½rQ•]·_Ú¯Ž ýêÚ†)ίVÅ3ûÏIÊÑtk²î“«|\ŸŸ½È›¤ílT‡tº%ðéçjQ^×ÒÛ`š¬ôª‡» @@ -13780,23 +13755,23 @@ Z®ËoÛ4ëŠ*s³°ütg†©NeÔú#‡ßìF¹¤¹K¸]C•f/ZЪ}¿@ôFêbM̼¦K´ØËJ®?L›^ëåɼo¬àÜ^Såõš¾q VÍ]êAy³XH±ÔŒèyÒLåýkoù"-Õ6_XŸs(GÕjØwOÎÃIÕÕ\‘›"NÚGvB<dÎ2æUøõÇͨa'nœ"dáõj›K†·…éÀaµ*»Üz^YCOs´’âUerÕ3“®©¿*̶^qèåSømÄ“—´¿Ìm+V#.MïäîuS³°¢º ½7Rz·Ú•DÊ£{ót§UYEzØ”Qù-t²y˜’…[ O[UÜW¨‡³!¨ï5ý
¹yK=n¸±u».5®°Rë¡fð¨,¸V2›è>ÓˆŽ…¤Yô·ØfàÄØ(ßÁx‰!´à‰%žM>¯Z) å"UØð;z¯Ãg«Ô«¼L’"¤Ú-Û‚ Ÿ‚xwÒ×~ e]bþL‚¸=V›Ïóð¨-ÁÅû”Cª³;ÓÖoä®Í ¨ÐÒ&CdÊÜÞ<_}9Ížsßú–M©’£ê˜Eä‡S+ø{ðåÅ1Kg¥V£2¾ÒÁ5«È–eéýê õÏŠ½SÅöÁ…®ÙK¼TùГ®°zc†\wír,Ö™yÆTôfDÇãF^±–ýtÚ|¶«w]’ÂйP ¿,:Fp\îŽr|0`Ï!ÛÍéy¾.Nïè^(%×½ñ>Ü0Ø]^ÒC ‘$®Çž5~<ðrpÊÃz>ŠPãuÍx{¿šècAÊûß·™ÍZÆ~œe·9^|Ø™ª´:öÛ9½0 *ÿ}ôõW'¼D>½³}=à -zžûcêÈ^‡õsa`ÔúþçBº&¿¯ÈÀ}Ü–#üÝ×õ,¶…ð€5nXœ`KÃ|Úªup´ëqª£¦Ws•³Fþ»‰ûë»ÕnË·+1§!NqM;Ú¦”+1Åôä@2Z
œXÞ%ÉŠû:bj -XãÙS9´½ AÄŠ›˜ì \¿j‹Gq‘ñ
YÔ4Ûûª2x"…þ€¦Æ">5IåñOù¼Ðù)þþbZòZj÷Ö›ŒEŒ×©8Œ†–BY‡tç÷]Ü þ×™¢Ë€9£ýd%ut o¥tÃØ_‹Òs¼#Žp9Ä RsˆNóÊAα›‘my_êB[öéNU9Wɶ¿~›ê? +XãÙS9´½ AÄŠ›˜ì \¿j‹Gq‘ñ
YÔ4Ûûª2x"…þ€¦Æ">5IåñOù¼Ðù)þþbZòZj÷Ö›ŒEŒ×©8Œ†–BY‡tç÷]Ü þ×™¢Ë€9£ýd%ut o¥tÃØ_‹Òs¼#Žp9Ä RsˆNóÊAα›‘my_êB[öéNU9Wɶ¿~›ê? endobj 1238 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 34 /LastChar 125 -/Widths 2739 0 R -/BaseFont /AXOYUR+NimbusMonL-Bold +/Widths 2747 0 R +/BaseFont /SKQYOC+NimbusMonL-Bold /FontDescriptor 1236 0 R >> endobj 1236 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /AXOYUR+NimbusMonL-Bold +/FontName /SKQYOC+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 @@ -13805,226 +13780,231 @@ endobj /CharSet (/quotedbl/numbersign/quoteright/plus/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/at/A/B/C/D/E/F/G/H/I/K/M/N/O/R/S/T/W/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) /FontFile 1237 0 R >> endobj -2739 0 obj +2747 0 obj [600 600 0 0 0 600 0 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 0 0 600 600 600 0 0 600 0 0 600 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 1217 0 obj << /Length1 1612 -/Length2 18760 +/Length2 18918 /Length3 532 -/Length 19672 +/Length 19829 /Filter /FlateDecode >> stream -xÚ¬·ctåßÖ&›£’Û¶mWœT²cÛ¶m§bÛ¶]±*¶[ÿsºûíqnß/}ß{Œßšxæ3ç3×c“)ªÐ ÛþŠÛÚ8Ñ1Ñ3räÍ:;ÊÙÚÈÒ)Mlpdd"@C's[QC' 7@h˜™L\\\pd -ŠšRò -üªm{|ÓÂv¸*Þk‚駹?ÛÜ—Ní>ö¥©F{1(zR€—ùøÞ$T}¨›ä4z%ˆégQžW‹²ÛZìŒê»“JÊzÅïPߧ;X`®ž¨üH\ -üÐIí|ŒRëc1:QA¾Õžž‘'?=RŽõÜ@öíãÑäÄÂ’ñ¸@ ’GúÙçà h©Ux†SA¥7!àÝ´_}jt{êå‘‘â’FX˾*šæ¯Ù´Ë¾'A¦·ð&Ê9H¶îWþÀ¼žŸŽäJœæšËýZw&sÄâmŸ -쿵$
œÉ„®'~ -j8+¼="HOló‰à|V”LôIŽÅ_y·1A‘T5dSoEy%|Dm3N†Á‡P¥{ú¼ÞÆÙˆ -šÔ0ã#¢DËFwˆ(¤ ÙÓ§~¾f%ž©Y·˜"<Ø™Él¶‹Ç¹ÿúä2Ý©²HˆîKöÿ¢Õê’2|Cu˜Äï4‡Ùb -dÇ$[ß4˜h3iï*#§†]Y·6_¡$l¥—\5Š´ -ÖƒGÒgÏt7êz \ÄØSÂèÑÝá Kz¬Å~»šF£¦s>y{)ÕCóaÑýû²Ú7× Ý#ÓF¾o¯Q2v3äòÔן¼xÒ¾#x9s¬(ÃÇÊÒ÷öUX7Žqb‘ŠŒHö;QºÙö³ˆÊëí:²5p,sÍŠ˜VÚÜýXQý3j.jWô…¼¬[Ç2#oîä2’«²6¢£yé0O ÙÓËø8³)Kz¡l„ïzä^骟|‚gOH)àY îó¸¢e¾,Ùê›Ì,ðŒ‚þ²Êsźy&Ê⥄ñϤì*“@bKiyäúk@WÁ»¾/ÿë÷îÆ5
Ï##êáù@¹‡ŽRƒ;ÇË6ÈV|¶å9{<)¼ç QU+ó؉¬@"9ãå·¾9Ì-–†Æ¬»î³ØŽÈ³¼…„e†tY.ž±áWËÔÀ;žš¹„PfÙWÐBNûŠX÷a|nÓd5ÕR©¡Ûo÷¿]fǧ_$¿å0[^ž‚IpƒVzrEÄsÜó^Á¤ÑÏJó„½Ë®Ïô—qŠž€3«Çþt¿ipôøɼïÆ/ÑøµÑ7d™§©M’°{<1†/ß{€"Ãg'”Dnnë«J0VkÜ„},j6ä²6”ª’nå'Ž`gâ[ö -õ Ò””d³3þˆA*ú<ì;»ãçëȈÏÞr‘U¦Îžƒ ¸R64yEIÝ#ب[@“4ÂS»Ð¯«±÷è(pÖg/ä/ÄX»ÐÖ@Å»b¾äcŠÅIî n¿¿„îçç3Ã"çU=^ó»\XºwV¯”¡ûB:Ï‘ -[—ÒØ$ ´zEø}:µ`s(éHô‚Å+X—³÷¶*5Â^ÁmøÆÊ$¶ïÉéGH ->êò:Û†ç-àñwN‰ -3“7º]Ç }"}xt¿-i7Ÿè¹½‚• -üƉ¾ÏÑüІž@S&_#‰= ]Œ% ešPŠ†¼RŽ”oQÈJt{¸œñàº0ê8&ò½A"zXXª‰„^i$º@õÁh0škm}…“u@îK/²OÊ\®zOóu#«"ùÈR.¯AÇ„ŠòÙôÐJ©4I°muþ`*?섨0V2 -p‡÷/ó¢nD(0ÂD -[Õ%:P+t¦*5Gil@ÐvmY‘ ‚œÁ‰~¦S JÖjn5£ë—ðys¬Ø0ÒÉð¹¼tOC»¯‰æ÷™ÄiÐDX¯Ð -Ù¿®;ªôŠD™r]9@èšÌˆ“ÖS|æ[Û,
('|f¤~}Ã!Ónëw¦©®n”Š\8ÖgK½Uz:'=*"Ô›%FWHO´Ú³ÒèÒõÖDÐ_|ÌÎ\ê\Û -qá‚ú a¾ýGŸºî“•e -™âîÑ~)Ü“U‚™$¹ß“ñA=‡C“ü‘:³œW•Pv Æû§hbÖ¼ð»AàlmoÎUÁùË7…¹í\~3È -ÂÏå±äÑs‰TNŸ +Ã<ˆ•9O¶¥fÈËDˆF§‹ÑÉöY廙l›¸·°6¿33ïáð\1ôb° a÷ Á{ó|³m«é*Ê›}½"é?Yš,µÔ¹‹e§úPh‹ŽŸXEô¸º\©çÜ[ëgøV3C^à ±çSø¥$š ƒÛáÃ:“É»®’´ð¾ˆïÅ^ƒÑÁ´‹¶ù´ë¬†)à!jáìKøGR~ŽCkCœùŒBΔí!$ÐdÕˆV`¨\ ©n¿»Gó§æHðnêÚïvœ&ëÌŠ":—íÞÕ^"Æ;bÊz³N¾0UÅÕ–ûÖ1ÃÁ,Ծ㢫|7ßoV};º:Mý³éØc£ôÂà¤=™MhüCÔgaì‘7¨²Âˆ±b®5_¡·¸/ÂH:L«
>r>Õ²"™y£6o„Aù±RQ ¼“_;N\¾L©µá%7¸àÀ‘¾g$µc [ž Ü80›=~Øü.¥T¿†ñ¥™^šW`/ž$8¢%S>ô”æý XÞ$'ñ.ά¡¥„2Éÿoƒã;At«!Äò‚´žÖ&\Åžã™dn£˜kjÓ¥³< -YRç˜oiæUìÚÆ‘ÌY Kî%?ê5TXrz¶ë[È/¨£=gU0‰Ü„€UShW´1ûºzcw™>ÔXê1§†S\»²3Š‘ÎBaʉ@,ŒëÂ?/ßu3u¤ð;…®MXÛ;Í0¾z“ƒE9–T¨ÕÖ[x,ÐÏsô1Æ÷Ìó–Q£×©VNcÌ…ËrÖs,¨ ³“eeµ‚l€N0j—;î -??zÜ…¤Ÿ'PìE¶e6¹-Vƒú£ò>áÂPe†–½Í•Gèf5©{AuÔ¦JÑø^V¡ÌP -:Ù‰4GÌCe*Z:?ß"íÖŠS$`ë¾*~=QîFf†£¾d5 ?Užaú9v¢÷"“T!KÈ
õð;[ùÛ -ðþ¿$vCÎÛš,Ù‡¦_¡ÌÐpvœY4Ô}ay=,”¸Ý -׌’üïa,ZÆ¢O>c!Ö’&,î—AØ$l‹ˆ4`¿Ì™é„G‘9h{±IKàôáî·3ÂF£Ýйô±Peûw -
8ø=ÇC¦ñÙ"ê®ÒL¨ì:0%»¸vÕ´HƒŒ?˜ø¾âù¢õ3™VF_?Òí)Û÷³qoTŒ²>ô£‚ùvî[±~á+Ó
ñ¢øøhÂ…ª>çV©Ã{‰iÜÁɾ,ÓPhF°1J4‘÷Ò.’×l"ü<KÑ*ÊûY•eûÊ]XODÏ^,@+Ý4‘‚èbiœüÙÄÛù§ô¥‘mJ÷e g§÷H9×-7,z3’ '‘nKÜ‹)«ZÞu¯,Ú.«9¡²ûÚ3Ö¥$¯Ü šc -9P“½¥Þ8€Fl‘…RÜ⎩r«'¶&ÍÖr+v¤Ì•³7_¾‡ßm/!ÚûÑ9òÌÀæAVÔ•I°ÃL"ö„O]á²Â!³™¦WD§w<·¿
`Ÿœõ[A°)!䛽'2Rj:PCøÄfűbü]–¬L¡ÅpÝ·mñª}pÜf†Ë ÑSYá‚ë^0Ñx‘Ê·€ýÍEÛÝöEô7N‚)ÕmÑŒªæÀ á7Š•U÷ↇK›—ß²9¯É,‡…ŒŸX¨<™¡ÌÅ…cÆ"ûgÚùÏ=j³é b«*"ìëLZaì{oFðÂ{¹†âMAÆ ßQƒ(°Á0ÖkøcÇǦŽtDþ<`N%ìy0ÉB´¨þ•PPˆ?Ĭ‰…šåxùVày»—.Jª“ÈÌë/vg`ž0zðõà~¬ |ôiÄlTªœXöA¥j–çW¸ӷôµœñø€l/^ôŠ^ÿ‘XÕH6«3d"Èî:¤úá_T`‚¨KÆ÷Xž³¬¦€À›†ÚÐt¨bØ×82ºÙ‹°Y -g–w¸Ò_ÍÑf4…,lÕF¯tçÜ äÊåšv…è0‚Z„•åIÝX®E˜w²b!ZhÙ”áÉTëkS¸¼SÉômз}P¼½ËiGýÖ´b
Â/ÚãzNÓŸylQ]*+ ºÞ"†V!™s¾Ð›Íáüô¸Hм‘ôCÕ93Š+-q¤Õ01=*ã±ù¬uŸrÀeÂËÇ -{ÃbFg#‚˜–lyù>.i¾™?#E¬4*872lºGÝ›ü”òóÕƒ¹óšAúa§¢+lµh›¹cÿ[ÅU‚·_Q'ï–íMÇ7&U6æØ‹{tÍ3_ŸÔ_óerˆ$q¿E½â>$zr,¾.ÄBËëDÒ‰ú@û‡ÍDü”ÄwPL+w1xàKDTjã_žKU÷‡Š¿÷ðN€úè±=©C;]‹‰ØÑ\z©r¸úÕ~ÈK*¼Æf:²}䥳ý]°¤Bu›B<+2¦ø¥Ø×Iÿ§½²¿S©ôûü¨·zM<ƒïˆn1•ùu›Ó÷^Vú#:.æ?¿yÙž®ïµá§ðƒ£|`q^Iš©åâ:kÓãZFMd§Í‡ˆ¨><…÷Å4I)'16TØ͆Nß°`‹ð` [€r óz‡ÅÜl8±§’¹Ll[@Æh_ëí; Hk¢ÉjLÁf'‘Ö%З&så@µTýb[Ojöß 0®šm-Z‡µ<"ÂVçwSp#H¸Í°ÿ,3L\g*±Ý¾–Ýçpg¡’^uІªH%a€ÃuQlàÎZK‡B£vHÕqe·lAW`¬úÑ–îxüFÁŽ¸“Õ7º¼ÎIhB($y{³ÓËòMSô~¥ã# Z|Ѻ6Æ×c>ÁB’Y”ï‚*¤ÓµEkèið„ûܲ²ê6ë#¥ÊxNÛµqqŠ®k%:ЂÃÏý0{Â4Û¤8¿ŸJØTá‡ð~UâjçµDg,Vå|ÌÙ)îmÛÁÎn$;ùâßÎWûË)6{ô2÷Å1§ßÿ2_Q.4ÓZxWG)ûqŠ·óGŠõ{RÜh¯ºÎW¦ãrzÞõÈÐKËDä]Üw¹Qöº¯G…\å#n—ë{aæÆŸð»Â¯U"¨k;`aEw}øŽ¦¢´Äætf µŒu &ßéæsÜk¶Qk¥pxNšnL’v’Ô(|)²FðcˆÇY£0c…‚Ø0cX{Ò}hƒ¸eÐúƒKŸ:†ohÁhdYÔ}îw¼Vj¾]½¹cû¦wní†PžQY@V)[7ôU5:Ò³ûÑ
-¢ðBîBZYø ¡QÚ÷¥Ä:_}ÒbeÚ*r³9ò”¯Ô¿åÏ{ݘéËáªÝ]1÷WšeÂ…5âo#”‰Nb… ¨ô>¶ïÓAÎì·¼žíÉzàá]M¸Q»„)ˆ'°&má"²‡8øg+Gž‹-¯ðJÁÙ¶(!‚d%šò÷F¨é’‹Íü0ÓK^žŒð§.Úf9Õºi"‚Bœ‘תÂh<MÆOOìu h9ž&ZO{èìxö6"÷rWNÕ6Ù$Çøâ0™…´žUîÇ>‚0æ£Þ·/Dž¿V™¹6j©Û̇‡o— -_0ß9ø™Ü®Á³@3&i¯)BBD‚Òr8ª¯sÿ’¶þø¶6ù5EåÇÁ‡›3§ŸÒûišI©R«‹ª]S¯Ðeÿzý!KþãÑÑÛ7çÙ96@:áO´ˆE(Q`¡W¡ÐêgÉCIචœ7·@ªÁ×N~ðOÎÏL ÔšîÑ„6t>æ€ñtFt&QòŒõk©ú¡Ì: ZBw˜0.•Ö -X˜DöBà矉uƒRá±êëŒãù³"‹‡»½øS,VëUgÈÓÑ×Hë‡
Ö•Ø®ôh3ßõ½@gYa°«¯ÃK}\)ÚÖ„èoô}7dÔ{Â+ä’רþ‘ǟúiæpC8[bk%u‘I0: ]¯úíŽI*]¬NꌕԲî<'âÌ€Dq¥1öYßþù4ˆù;4Ù´Ô˜¥^ðžöE›:ãZ”¢‡ÖãßhSÁÒ"”‘æeGq ¿¸ú‚Ò®ˆ÷ñ"‰v=}ç¾ÌÅ%ű;>RÕw´ºÊuú)DãPèñåVÂ-{
i¢87£rC~zIu(a=/åÓ`éÇ -`JVæ€ÝM?Ë-*\šFì\q¬w÷4³Ç"Ây'LÜi
æI²úвTxÝCxEåÇ7#Í=䬯šÐ]ÏÂ)9™šj^wpŸiuØ•°I/9c½šÙ;ˆ†YÂV%íÇ’:ðgEFÙÒ·O(–qS”•=ŽM.A¥ó¾5Æ·ôŸ·¸PF×/ *ÝXåï·Dê,oö°`ÐO„&ÄÓú1¢ç)ã”au§4‚x¦"ô£šVKnþ?af¿½ðÒâº-©Þ(äM×4jý€‘âª[ Âx06Ä–3±ÊbV®gG¬$¨ˆX”£þÙ]0ML]B@! !k“ö'9iH„%7ØdÇýý³ê«VÂiH€ð‹Lêõº«§ÜTÉMÓ´1=1TäöÅ¢ÕæûH&LÏ5« "ŒúÞ¶jªÏa1¾5e‘ׯŠ9³dfƒC|—fS}½Á¢^3²Ry€!©ìcÊ^Ù±•CyÞ>æäŸGY›µöLˆ²Í+ðüw…¯‰‡›]E™†ÏIœº#½Á”“W¿ig/€¶0@hçnlÊäª5Áç®ýF6PI¥pKˆÈKUëqßoÁÎJôƒED=§É*óS½PlBø±a` -^ñ2Ý9á4GÌMdHä:a,h&y að;!Ù$õÖaÖ8|Z2ÃdÞ‹J‰Óc—…6‘Ñ}Äu"åÈÄ7)õ)ÚÞ”L#mõ0n—Ü^žÇl¡~c[øïz¡AèÖЕ–êÍ™qùÐEm)PF½÷¢xŠÔ–ŒisØ€ç³D6
&œ<ÝÍYï’Úl¥ç¬œs·ÚCò£ypKWFsš£jƒ“ÃÉs ÈÚË~ -¸š4?æ·q|CÇÂ[9ËÞnÑŽ¯U…”kCWvܾOøHBÔfGpÊñ¦Ú™uw"£Û¬‘M+<ÂREÍœËâ`Ôщ) SßêÓk3—ÌŒÊy‰m:ãs‚êf“BܲþàĨÙþ†¨4ÃJ´§¹=µ¬l%Ž»Wa*ÂÎK6#º=\{œ˜{áÒBz[òaey}1i%œ1ˆpÊeDNi±`à6^¥ -“V-Á …ê©>Zw>î^’:ðëÖ£,AÎó=a¼PP?N}“8s3zxC4-áÙ'Ð@¢¯Äa0½ÌåŠ&vù& Ê«¹jÐ-OB;ó¹bîAl/äÝÈ»÷
#o«²#yÁ?.¶Ü詮ϲ -sf"7íȘ'z½½Aܬù;˜-Ø„º5½ŸPoö’RnÃã—§cÄd>Õ‚ëmOévXš}Ý…["äC»Îµš Ú·ñfº ?jÊ…Šs$!ϧmAb÷yg‘Õ3–ã¾ú©Ÿ™ì‰YÊIÚÓjû[«Òaîë—e·Ù{/ûÀjÂé‰õÙÊZXÀüì˜à äa.ð–Ïæ\àß›¶üؼ¾~
ê¶Éþ¶ü5öZ š‘X’oJQ˜iOÎãÅ[=Z)é!³»&ç–ÃîIëBå\Ý;»"B7›§ c)Œ—†Þa%ó‡ŸTÚÅLn_´´i·‘c•udg/U†Å=7 -BÎA>ȨÅt»î„ÞñMt7¡Š:»ùœ=2>ï((Ÿ!{GÅo’8DiåGÍlœ
ÊãVÍÒUŒÖº‘jÜ”Õíë -ÞÐõ)δ¨ŠP=¥ŠúçÇ ºÚiÓNRŠÓ€„™m:ô¹¾@1??¡–”x!MÕT•ÛŸAsË•-&I˜·ö@ãݪƒêE!F_Õç5²î´ÛT²«ô±.è-ó°{m”´YÐßžëÈC&ÐöºoÕ¬ìêW5iø·Š ¹Ž–ðûï~dÏFœöN{uÍUg¿a`BFtCÙ¾VØ-¯Vâe*ï@ì @uòQµ
ä8L°4§2Ir©¶Ð“†¤o§¿Ù §¥ëÁIÆtPÕ'ÆiÎâsëŽÉÇTЃF`Þ™0Úu5hJ»½
Ù‡,KíÜкÔP¡f|éO7§Hf|dÑr^kç
Žß¼¥'@>¢íð@‘…„—Ä”ÄÄJÄÞ¿Ý>3„Œµ¬èZˆ›Ù¡R^XÚ9ÈÍjÕy0”Nš¯s„gA‚îWˆ™[Uú £™2õÞzבl‡KØ6`ñ -î†Å×°æËùß'™+¹O?àªH‡q@… -…eȤ½øÛ ]Ûq};—¼¿ý%W[J¨÷¡¼–Þè aÁþ[Ò-@^ŸFðGH¿ ìÏÈÜ°<·eÕ@wô¨‰Îy«(‘«xd;{”«‰U¸otÁªDÕL -˜ªˆÍ|Îóp—aÜ^§9Lî÷‹¥¨`=1OþL -^ú”ãh@RÄfíÁ•6—U -×qóp&+yPå°1¦àÙÂ¥å Xˆ|¿ð$6Uç»’ÄŽ¸%¼ûm'v»!†æ^™íç Åä.°¥6q2Œ\õº«CÛ7E.ÄÔ—¨lwBÂæ8=÷_so09Fµtéf²ÅoÊRaáÜJýèb;†xŸ)ォGœþW¤ÈùQw¤ØØV„K˜7µºy$•o5MåÐà,=²æ_³4¥ñ3ž•÷°Ÿ -áB«¦¨Û$EZk°`ë¥Y
5qÁ[œù¥ëÂF…:ÁƒN„´®jîܨ€›JV[‘ -ü™±8Ébº¢¾9àѲœ&Â&9h°¼§!`Z„ù“½M$¨'Ìé·Ç ˆ‰b|ö]·[EÍ\çtHL”.=MSeî{F"ä(ËfIÜ -ˆ4ƬÆx»ák&ªˆü•“KѡڪƎ5soõUKæU6Û‹m™³Ó<{WûFgsü2‘“+tëÑɇ¡ˆ§Ç—–Fë¹mù¨ö9¥ûŒí¬ ( Q«¿˜?©Fߧ$‹OÌr?ãZJŠM¿{m9ùœÄ1+É°‡!¨Ú‚§¨næòY:ŸAÈ‹Wv¿˜iq“~ˆRŠ -íqÃoØ8\"ÉÄø‰m~'8
£Éùª¤\"~Ķº…puX‚8R±·ù;¤‡,qÞ\;1´L AÈ›œ>lϴʘƒš¶ü¸\UÆækèK¬ôó(29÷ðJ3ôûõrï˜O²âåMçÑñBu”蓼!þ*²‰ñØx“–ãfðÔƒªáFb6ä([N£+þe÷#Ìó,+CðÇUÓ3Mcf‘ÐAñn0Ja¸Þ.H”#ÓJ>U³ÂåbFµîV?4™;> -Û Ì_÷cvDMÄȺ„‘)˜3,fÅ·„@sž?X³¡˜ò\ªå$@Š$ÈW;ö=W!za(NGv È(èᇓÃY†CõdQ1”On?S9Ç>Oµ -dõ›#. -óÕu«ðaxÍ'¢T´Æ49¿} -„¹ƒ°yeàêÙÔSYãæœjî×]…)Å’ÀY¡vSWòÀ¢ÒGÕîUê£ ãþh4×
¯DTÚè¢Ë ¾ŠŒ}dœœ'.ßñ»c)sùÂ4E©”€cr'L’q!2XdêFÒ±!NMi€âñ¢ÂdÖ |H—^ÉuÞõ“ù¦?aÈísNfBèÈ(û;Ÿ>§[Q-„- ï$àKor§ËûI’;G¸],˜úJâAžXÚ€àvÞ9g•0žh}[ü £Å‹—T€%/WHþî×Dªÿ~Å!¬„ŒµWJQ;dZUüÁˆo 7êU
‰iT†dGà!y×"?αLÛuº·Ô~¡šŒ{U#[Ö÷g_SÚ®s·ßñs=„Ñý}Ž´þ^W@ƒ¨IÙ9¼£ýè@‡}Ó$0_>)’¤Èz®Ep,—ðóõè¦ -ÈïQš4Zl’€AÍMNÒ1B.NèL·YÏ¥£ÌÊ©“0d›±)š„¢«ëOØF'Í<I('Ó.DÁ=Œ”³‡pEdùØøõmQÜÛÓ -~z#ë6 å˜Mmné©^«ŠÒŽ†y§×ù{?¤¾ó
ÃN[„!H-Èâ–‘Ôyúê³Ból«nsªYòU4Mö¤
©0lÕÜ´~µÇê½æ` -chô„, 3 ‹
ï‘“#•ÃùG ÖÑŠ9$5à »l|ëQλM}ž¥’>‚ÈÔ!¦}™n¿°B=…_½' qŠ=ò¼²D½JQ:|4ù "V&71¢‡»Ê´XGŽÌ˜Û6¸XÉLjðD^«Pìˆ,0ª°>«ÇŒzK„Uê• Á;ð#
zJí™ÛGÃLtåk
' , 2ýòô™ÏªÍÑk|Õ[~>'}A–žh¦M$™O¤{É™™aý|Fo¾á¦›\basmç‚‹ÝjM߃½€—RÚ·Ž¤`W<Tº;ˆˆ³õì&> 5YC¶]Þœ}ËA… IñFÝi„—¤>4Å1 <ÏÜïQ»ÔäJ!¼@ïµ/g”Æ -¹?¯²YÉLµOÿº“oc€ùÃ^vu?ÂYáQbâÔò%hñ£›Þ|ù:µ˜Âôʼn "¶®œ%v ¾õ -U¨!š»N}œ Ñ“;æJ›ªÙCĵ?ûœôý+¼<¹è¾ŒÐp—³[»õþAN -ç´hô@ª{âN'H_È9S(rÚ·kEü&ßÏ•tÛª.Ü,çx>A(wYœÐ% - ±(ø'E5 Í0Á{'WÈÐÐlûù
4·Oÿæþk¨ÕÏÙ€œ“æ¬)Tlý¼SM¢ÌºtÙö:ʇOI[|¹,™á -¸}³i¼<nU·ƒÊ'D†7Òz;%s}S°l<•’y°46Ê–TZ¹eÛ]DÕ\Y¹ñ}˜en|(xèn)<¸ËŒ¢G/Çê‚«þf$'„ƒ":èuë ìðx/’<€Â?‰CòSÁ064qcZŒz¸ÙÝü\! ;‰^¼·'PZÖ‰EvdŒ¢bòjGYþ=Ñh/«¹È´®ŸË $8éÈ'kê¼²à -%gsðùB§*÷Ä•TÝþô¶VÔ½~Þgÿ°s-Ãê¾ù¤‡I3ôÀâʨbŠÅ4ZŨǾdzçÏ—à Áç‰÷ø׳ŠX]"ïe‰¥?ÂÛjš…<®ÛsÒfÔAgV+¢ÔŸ8ýdÚ¥_ÜÌl:ɶ™q -L!
…a¥,C-CŒ}M¾~šÞƒÔCzâë—ò'|;¦DÜ‹ Ž‹¼”ýû·NsŠŠô
c‹Ð9T#qY%%ËGð 0Ù¥*÷f’ -.³ã׋ÏLH]DÒ.½Å¦œÈçûNcxï*ÿÍRŒõjHGmwr$Æ›~üzXÉõ½c7G9±fRpÂÔ›õñ`ç¾/ŽFöøÍ¡Sësöe‘Ä¡ûůjrv±K±‚º‹—li¬@bÁ̧òÓµ¬FÁ§”L¡s¾´_úm\9G›8+¥£XmK‰^γ³æ&„m©œtðÞì]ª_l„Š@O3º] q—ÃX;Ü3œåá› -kƒãåxÄüÁ‡¹C ¥"QPf¦CY_vŠÓÑô|‚ŸŽîdœîÃ:
eФÛw‘éûe« VÑê–†P-o‰ã¶*‚½—€:GçMøŸ¥ÀOr¿/CîlMk[6qÉŠP·eÙ0ÿ¸•Ëzý?TRÈõó·—Ï(ªå8“j$27BjߺÌèÖ–õ¦òãȹÿäâÌ-:N
^TüÚO`bŒvï ×o(<>yýeþðHó‚Tƒƒ2¸¹ÁíåÞ(å2Çæ¬9½³g¦F³Ùå’Ë?q…ÃNßJšPZØcš¹ÔiΑ88›ï…wäD&oô\<朕çÞ‡.'cve‰kÎþšØuôI¡]Èš‡þý+‡¨§Ä ~¸db D:{‹ÛÖq •¢j+˜ZÖ+·?ÜT±æºŸÀÜÀ! -û:%é5¾¯åV¾çu™J°5Jòb´â"2jþä³àí=j¹òüÅÍ·½OÖ±¼×Ñi¥Réqødoeל}½j(áIaRFT¼‡{°˜Të‰n°‹W÷'½y@,}H5»A¬8ÑLØÑ]ƒ5ævYÛÐD"ßïŽÊDʺ°z¡Ž »z}ð…ˆÇÄ_@ïO>s0<#gr¹ñ´»f!bºÛèÊ5ƒ¢Ã–x¦ÐJÚ./°A>x»! jm–²sÞ7vÁßC}AœíÁ÷}Žn4XìÅVÄés¡%›†¹¢{Pû< ´éÔ Ì7¹d±·ÝÖ.´?²s1‹t¯}¼;¯±Ý½’×Gû»{UÔ.!ó!T-ºž¸9Çݯ~_’*gûkèŽvª»¦$û¦ÝU‰ô¥5Sü¼ -¨ïÃÌ'l¿:¦ðè;{3¦Íäeµ—Ä;»¯McÕÒÚ-ÿXON´Â½²ùr0‘õC€ƒºÆ…L9ꉱSWËñÛÖþN2¼‹ÆvÃñ’ýÐ È*ö{ä•k^‡jogÊ"oØÊglÂóIüPÚ}tq(½Ÿ -QCm6õ -Ê’¸È˜”m€¿™»_–pÛD‹KÅ|iVWeeÀÀ«‰
„lÐÁôÿê4èT0Éëë]Ïd‹;PL¹£¥e!D*%)fоì {ÄùíÐîòsÃÕ|0ŠLï-ûÈØÀªY‚èZ`ä<Üu´N!ìÆÂçaæ¨ÞôIJE OÕFÚØÙ‚™O¥ì鲟‹„œ*+aB5*êëˆYš0MŽŒ£>ÂãðSΚb¤³(=nìj‘·æÑ4WÁÂ-ÕÏ·_ѱîíô‡Çº™·`î%âg›«ïW‘iІJmøª º¢Ô††ß‘$1½ÑØ“](snr…„L¹Rœ±¹UbµVfn3]ú‘ÛÀáˆÿ3È9ÆTÄk›“¯Bšž«µW¯ôoäˆ9u“lܲ‡vxvèô3Õ ÖÞlQ;,
ÿ®w½ß,Öf9z ïï‹?ŽJ¬äl*+pË(ÑMÁ™ž eF×gº‡@‰<·5ð˜MêÍ jmòÏ °ñksŒ]VY:zÅPÆ]•a£¿u_d„‰ê`”]&6ú‚–2#³ëb…S–ä|_'UBÉ9ÇØÔ*+‹©´ËY[–µ²zŽ’w -Áë±(`°1BøÍéÑ÷kL»;B„/ˆ,àG70“›(Y:¥ö -ùµi¸ŸÔ§îwX\Ÿy=rû„7"¬ˆiÝe6ÕÈý`Cõì¥oØ?g`ÍF朌‹ÀH‹†ò×ÓÕÏ‘`ñ»
‚ƒT~65Î.96,`³xõµôlë Ä\θ;&¦!kÇ×å ÆæÁJôV>ÓÛnQ3‹c…8¤„½aGãÐ$îÉ(»çf†A*"CÛï}„:¾¹Ìl{‹7nN^ÐÊ`„påƒå˘ÌV—Ûyþ2>÷{Ή =½"ž;ôl`¦GS=)ÅhhR:êbÞ°ã}µ;íYÏHey~aN'¡¦o¦NQ»ð%`\ô?G°2™9×Á>ìSŠ¬7…¾»Ù6ò_qÛ§ÍȒΊŽ¤¦vغä.Ù#*Íõ¹²G-–à°Ã~3º½øÕNôdàÐH¬|ò€Ò>I6]ñs˜öüåÛ{ñ7cÌ a8d?‡ÉNV¦æWíûê^ÙŸ\W’é†;ˆwÒ`–v0zA…füA©‰õ§$=›Ò¥˜ÖÒGVöašMŒs*(±Ó8üì¹äô¶^d•àŒ1÷·»s®ÛCºDdq -I¢BŸîÙ¿¿²ÊXãÞLbÁcÔÅã‡Î0¸±hÿŸvæû -‡ -ïÔ2AÆìöâ©eîÛ›Ó¦;»ŠÞ¹‘°!¸„è`Ò]åU-YñÌëŸò¬ùM5ÁF³·&RGßw´+ùûè8šŒÁÈfïyFW
OU£wÀº$¾¿@i¼ù9ºùr¹>ÒHÝÂö§õÆe¢Íw{˜¡Ù -,ùÌçÖ6ºþ‘ß‘—§ìä*ƒšA>SxÏå’ò§Oœ•Ãøjäwcâ]o¸‡´×ç?e•é%IômßÞl)·œ?Þ4‹™æI¿´—.¦Äì Ê×AÖŒqh}Ä_J¬Qêõu‘¦ZX´y7³xÄ,i’¸«^飯\µ1)Ík„ÝÅ TÅ>¹Þðô3¥Ÿ¦õ1!}KGf³[ZdɦÚ^Ýs>¶ì¨¹…ç›ý˜“]û·çÁ ~V\Yƒ°ÕæÆÐ¥–tQrÿ=<e¢w†|hó$¿åÜ£ëØÁSä<þxØI'è÷¤ïëÚ_tšd¯„§wòÒs_×àdI#ØÙÒ¿˜ -ogÓƒ1GC6E®Í]cdv®l}©µžÆÍE*û‚Xí
øVr,À8è–>7%×5/ÔQz 6@^î$Æ -Ìkª¸â§hDlU¼v7X}ñÂúZ%fòb+†Î5ƒ;TÅHÿ$IÀÒR.X/+ùeÌö2¸Õ4•õ…6È(z¡ØîõÉìg,Í¢ÛäZ}~û JmÕg(±èe{u›"&Œ›Å?c -áò¼\¶¿ûë¦n -Ý)¥ÀÓ,Ú €ž–ñ;Þ©x%ŽÇ*:GïÌ‘bàÞšÈÚ±ÓÀ'“('
ø·&ᦗ„Bfs^0©^T -i¿5xÑ@>,Ïu> w?tiÓ¶0ûôIÏä#%(ù‰ö -©«ˆ|LO†D¨Å÷¦gîÑå¼Þ8vÉC÷I~®O–ÙÍ>mŒáõÞ¢‰‘}‚ -^hâŒð·¹ œ£“hZ™Í/øÅ_à7œÀ+P¸¸&&êåî$+Nȶp®Ô
~I(–»c¹ÚŸYªÓÅg¶%ø¥p%ö>’H¾iL¿\ÚõÐß(¦µâ_«8Cƒ—R{‹ -Žµrð¦ëØíû‹0Ê{‡˜ÊQê¸2‰«Zœa‰ƒ†*7Äc¹äJî„I›ÏüìÒ]©æÁ 1=Š¡å©òñS€MX¡¥GMøªéþP¢‹:*½ÙOT9†ÜD¨*ÀzÞÃ*Úž“¬ÿ°Ë_hg -‚œ«ê9ŸjˆŠ"J7Þ®(ðhT(ìâ ª¦¼ÜðÊ™§Ä‹V¬áÝq -oò]ç}£¯9B‘7õ· öœH{È’ëæi`T&éVÇãs"¹‡‡ªÃßÛçVMo¼iá÷׈â{C„^×;¿_g¿`,·÷þ2
Ún“
RÂɫǶ]ÅjÍuib°ƒãÏV!QÏÆ>²¦aO<ö”ñOÁxƒªH²$áófe°§Åû›ê¥úКxÇÑiêÅà>ò$–Ìy"-Ú-ŵ ôý‰¤Ëq¸ŠÖˆÕ"™[Ø m¥cA¸¶¹"t8Q+PK¥ìó÷Ñ”¶ëÛãh_“ ®$+ƒº‡¼S¾ÎúÜþµ$áØ™éezv~7EhÅZÞ‚¥ÓªãHÝåûm®Ý‘(ãŸÄ"Þïòwnúê›»ÉÕ”^«¦ +xÚ¬¶eTœÝÖ%ŠCpw),¸www÷ +wNpww÷ +økd‡§¤u»€ìíÄŒ]€< +`e°pssÃSDí<@–. +tøÇEp +ÐÖ¿¶qÒí2”"¥ŸjFy_ÎÉmBép0kìo)«”¼ÁM´}s‚»|¤ñ'w+ðǤxp@ö5Mý‹ÕŽÚ†^Wxrú5ñèñêÏðà@×5tÏ]NìJ^7(¤¯‘þŽ9‚:ê•Þá40éMˆ×—$šÞy”ø¶r/Jù+vroIÐé‚|‰òNR-{UZØW3‘|‰ÜÓ¹Ÿ«®”âÎ8|M„ãA½7SÖA“™°?‰î!®¨{üëlkh_zsg'•ÛKº7ÃìQ23†»V!‹¶88Szé-ŠÈZßʲÃìb“ÿ<Ìišð·uO[מʙåê;Õeâ*1žü +=Æ:nâ(4n¼ë—jºÒQ•"/>Uöló½ˆtë% ˆ/÷€{`‰ÔÒE¨N»cj,Uoo–›U{Lê,þòÛ’`>8[œÂ—;1Œ"ŽÛd6k$T÷ó¤ï0ÃcÃ=ò8Àëø‡ël2ø©ÙB ÿ-NE>…°VQ?SÛ׊Û_ZßjcxÊSH£k‹_G–‘'²Âøøc±£~´½ Àë5ر3ìä=Í’ù9õC[¿êŽX? Cz!‹YÀGóµgàÝzŽD7 8’(GD¹‚Hñ%.fjM +ýÈ#§:Ð YœƒNo‰ÓûFp=)I%ú&Ç.½Ù™£J©³k´ ¾< ý6K†#„Rcxü¸ +ÙÀ[‹ +Ó´ä'¥ÆÈÆtŠ(¤"ßž6¤}ºb#›¬]uŒ'ÙßšÌüå;ƒw÷ùÁm±Um•Ý“ðI¯Ó!mü,Žæ4FØBÝ`Kÿ±4û
m¡[SPk<¶)óÒ +ƒq-†)åÔ\†µp¤ +–Þ•4âϵ[Š•€M—EäÇCÊ%£ŽíAT-o|Ø–yf +xJÅxQí½…jûk2Æê¹”ygZn™E0±¹¬"rõ%°#žØèÍÐOà…¨³qEÎûДv`æPᥧÜàÉù¼ ¶Ÿm}ÆOà}LZÝÂ:|,'˜Hõ•ù½g{ã[CcÖ–ç®3Ê”_!qI¹1Ãl–›wløeû"-ð–·v:!”UËñžêG¬ç +Ýû„`²<y x᤯ {?5âˆJ|³&<Ø#1Ë~·•þT°üp Ds¿Œ˜°¦¤$»‘, +±§¿©-?gfBŽæó¬Jü0HŽlÀ¥Š±ùjê.ñZý,†(˜@ýÜ°¾ÖÑ«ÀMÄ£P kå\Wq¨Žà’÷‚Ÿ%/¹¶õò¶W€ßç+ŸÚYÈŠÿÅìü«F•,Ã'òYŽtت´æ:1µmÿâÂÉø¬Ý”3é3ŸP}Îîëb¨ôÌG%ñ+_(‹øž7—? d( ä°Ãçt¯B÷»„{tJT˜¥‚éÍ* +lL¨¿ýÈ‹^æPc$°I’}£]‹¥â ªÒ¼FÙR÷eàBIÔb ©Îˆžáòú޷‹³ªÊHÆA¦ô»{ÿYw˜Š+¹¨ª¶ DÇùgÚƒ€Á³Uô9qS±½?×Bx«õ¿ñ¿kJMÄÙ™ðÄWÊ\²t—¼ÑŒƒ½°Õ¦’”pSÿpgrIô¿ ùªZ‡ä+%V õŽó‰ì«£®˜s•WDéôö *îD‚ I0ÿñùB–«œD‹×jA+jGŒ;Ó¹8&ˆé1Ýú“çŠÏù^3¡™¶"íÁ:š·eWÕ6^#—ÎBõ¨,^Øs<NDŽÕfDÁ£Ð°;¿5æè—¶úp€Je¾bùG¿Ë0³Øgä×ÿû̦¬Å^KØÒ;œ‹›‡B²
ó˜ù¾0ÒLøæ sÛEOŽ¸Zê4¸:ò=Íuó¥„Áõs2ì]ãä‹Ceµ¿lbøådçÊ(·y¥ËÖ½ßôìöœ…“Ñ/úÅtÂ?Bs®Ð
qEœ"¯N§YµÆJå¯ÏLzB•>õ®‰¢3|«´{ëõšÕ4¼:ªEßn‚¢!!×ܹ~ńﶵÝû-aÿà¥.jýÈóøʺžQQ9½‡¹š‡Œ‡4®Ow@›ÜÇ0¦wÞò¼«\M(ÓC…åP"×jGU½þìØ ·kÒ³[ІrÆ{è—~ +ázÑ…cÈß?æÚÝz´éÖ+i€hO/%—QÈÍËÒÝÍžHtNã²ú¡P˜@þ“‹i”ø‡:=»(-;%ç—kÁ§µÔ}Q[²“•L¡q«nód01ÙLÑåB7éoU`;N÷0×ràjnv’;Ýn÷i<BÒÎÁÂ%èóŠ½ü… )ÇÙ`aQ² ¿-ÄH77EúqÕ½Ö/‰ž¢á^¹å,ËJ–ŒÁà ¬4Á
è7«CnLÎÐV¼½N ©± +õª*J ð¥)½?—Ä$úï):p.„ÌHÃ`Ɔ–í"–ñŽNÔÂIª\x¶'kƒeFbR´ëyf=whoŒºÓ²èŠÕ–Dð"~VWn
îMŸp!Cð÷° ¿Þ‚Ã}Ï1ΪrÅLM# DÏhÿ”ž±j¡Lò\¢dBpïФ +¬%’„ud+úÓ¾ß+U4ÉKîÀÇYC44—R'ìð58¿G—³‰“@-ΊÁÒÛ…«:r>‘O¯•p¯»µWþN–Ò;⟟¼G¿ò¤sf„p•@Æ‘ÎÏ…)¢e‚ KNÏvýQs¸k¤èŠªá$™›¸Œgë.‹1ìXÿÓÌ3@¶-V•vØ¥áß¡ü”ªA´½P„ú½p4ëªpç¹H?SOšð¡]øÊüÛAk»%Ögwrˆç|Ÿê=FߊP3߬æYŽ!ÖÒ.(o-z•Ö¤jk:\Žë'ç¬* +eVfØø(³n…ó`¡»LŸÕÂvs8È-7†²HŠÊmUøfnmo1K±xí[J{ϛѕTË0<8i*_×/³bY»ïIý‰P¡ö5,4‰ßWÓwkõÄCóÂ܈ë[9œ†H.áê;pÂ϶¡gˆ•Ú†PìYÍoJÔavQßFݘª-1²7¹óH<lÆôÏi«Q5¾•G¨0•5s!O“ñÒØ€‹Õ¨ÍÌ4Ëxô‚ãÚ{.K\õCUxPZâiÌ&ÙôNEUdX|<ƒÉ&UÊ‘|‹†¹_ÈAÄFAïcªñX4C(½x e(±â‘ƒ:äj£ž]a·cøÆ$cò)ÈD€wZxi2Ñ›ÅyIêYžÁŠv€;²¾òÆåÍžã‡cl$/"BÀC‘TÁvâ³ßMÖý/0–x[®ß45ü¾ð2;{%öY)óx®˜&ù;ßÁY+6GÄBÌ&ZÝ-‚±KÎÚ!“j~ù±2ˆ%¢pÒwã’—ÙÀÂßmf„
E#y`râ Éõnq +xü˜ d¨¿L3§qhÖêàÞVס6{gáÿŒç6ÌdA^r2~yOw¤nÝËƺV5Íz7Œ +áߺSjÂ)"TaèçCõ#)ðÕ†UzÊVAð×¼†W0~ž5££ÒŽdg–l¢ì¦Ý¤®ØExç£UUö²ªÊ÷ÚU:pIŸ|¾môÓxI¢Kdðò§oj"\Òç7©=%½ž\Þ"äÝ7<p-ɃE;ñ¬Æmêø®5|²è;l¦…ËïféOÙæ“|rƒk¨äÁ±ÌÍÁæ»ãTš±ÅVÊqs[V(-Þ¸Út‹-¸‘²Ÿ4®ßù3½üoºI0ÞÏP&ûÖ?‰³¢.ÍCœ&qG}yë³H§ŒY…-µ}"Ú¿ÇóØö¾²¡wO"‹X C¿:z£ §¦5EîÁì–œ+GÞä(Ë›Wý~Ï]¶þ±ë‡ãvAòVQ<çôù)”‡d6GãWÀñê¦ëiÿ,¶€—`AsÓC:©¦Ý÷ÇjiÙ³¤áþÂîyA.ç%ùÛA!óof(kI¡Õ°™èÞ©nþS×¹úèT:˜ø²*qßN„c½…`œc÷Âz¤<¤{(Á(±04IœÈ--˜"û—柚¸ñ±©ƒm‘&û¬©¤€í`/9¨f51IEeÁØøìÊÑà0SœÏèÞ7ëqébz‰¬|â·V „¡ýÏ{Ï#mà½P +îkÀþ¨ë*|%.ê@wá£Æéî_÷® ¥bô›éÌvøž—Î^$(6kM-Œæ1ŽtZlFU¤ÔÓθÓZÕÛ®\F4sIþ]#˜®NÉoP¿„‰tõÛ…¨›œñ¬žÛ—ugýñêàNaœ0$Ê÷Þ³1ʼn¥z.¾«.#¾±uÔhvÚÌQõƒûýÇðž˜&S•$æ†J‡©ÐÑ’»‚o¸bļ8"VàÜ"|ßÃb®×\8Ò…(ÝF7 ct¯öœPe´1ä4Ç¿d'QÔ'0…•%sçÀ4W±¯&ý +Ø +4«žj)^ ÿb}HŠ¬É[í(¡â&C'N¸ÉpD–'®²”Úo^ÉmBrz~£‘Yú8l£U•1M‚üPÒGµƒ?m)ëÚ¢ÐÀ—=´?Z‚³™íŘ¿åõº‚8äIÖXGìð95ö%a£ž“çíNµM,*40ú—0
‚éðGëÛ™]õ
sú†KeQ¿ ©RLÔ¯`¦!ìñÈÉiØ–©D¹lÖIÆÅ)¹·I®”êÁ +
<õ¾ÃíŠÐmRà-<–²«!ôÎUáëæ5GgÌUç¼O;(ín: +™†ZKvñ#¼™© WúåÕÍÚ\Ì$’~WZR)´Ô™}Ó@-׺'ØÚ‘f#JŠêÖÐûÌt^LÏ»Úínüdˆ#’â¨ÿ|PÌU9´âq»ºam4AØy©E[Ù‚ ++¾í!t¶£'µ1X&Ô1Ö'˜1ÌäxÖn¢ÕIãñ7]›'m%©SùQe
Æ°Ea‘Ä +ï³cÇ°u¥ûíÓó Ébô†8—=¶
\ÓCÐÉ}Óð½ý³¥è³Tw~ùê‰%â—Þ¾±ýƒú”Æ +¦ðOµŠmCOu£3ã73߯Ç}ÀõÚH©e釯ÞæZ[ù¾ë¾E1"]°ÓMwÑí’³Ÿ¥6–·I’)°qߌ¹pèŠ×6W°}h '¢py<‹vA‚Šµ–(s7Ø,´ÏˆxbÆB¦Ü4m-qCG +G)´r»zoÜ8ãôúÙgö9¹ãF¨ÖcöŠüÐCÄ;0OW¾Ýñ}¥0^wyr÷Oü-U>¹ùæd!j}Š¾zu?ºðu·izý#¥rzV¾‚—ê!H¹iBÒ”„0(óÊ4w¿#ךBz¶Ój(O˜é}JîgúÔ–5g•h}›÷YÆß½'1x„Ìž'ðöBçKH?6#s>ÝeÄÛé£ywüFxçgHQ-ëÄ„ZÓN ¤úLÆ…{ø]w˜£ÕA‹ÇÛÂT“öïY2%‚Oý:{Τœ·ù¹mf%Ii +¨_Ðʾâ\¬_;‡÷¾”|#@ªF¤œq®# +w¦héRs¿4á&æ}¼™˜NÜt-÷sjôÓD…„¹"¯ÔD0x›Ìwõ`è9G[Nºxw×"ws—Õ×Ù¥†ùã°Y…ug…TïŠNCbÀ˜óÑîZg#Ï^ª-Ýu4ìfÂÃ7ËODΉYoüÍoV¶NZ¿Ã2'iþ YíW‚†Ý §çtÖXå1Ûé–±}G_û†¡ñçdÊÃÏ™6LéFgY‚eQ®Òé i•Á6(tÛ»Z=GÌRxwfþî‹Ÿóä(“°-jdJTèS(<ŒöQz_´)ÿG0Õès+?Ä„ë#(½¢8ªË›Ýg6‘„Mš<iûR¦q » +FŽ‘Ð&‚Oã ó"B2{6ècgôXè‹Â¸¸æ*ãhæ´Øêþv7þ‡—ÍvÙúä^ì%ÒöþY“m)¶#ýÖÒou7ÈUTNÄ
âòóàÂ_Z–~V³-!±çš’vWd©í«ÔZ@äÑÇ€~¾ŸoC|%¨´>2 N¼ ãÅ°Õ9IµƒÍEƒ¹ŠVΓ×êX‚(¡<Ì1å×;“5s‹!—–3ß
9ÈÛ:gWoV‡Z|ߧÈv´€1r/#J *?ŒK(âî N»$Û#ˆ&:tõœù±–”–ÄnùJ×ÜÒë«Ô¦ŽÀ`ÆW؈4ï¶5¤Y‰á]É÷Ïú$Õ£¾‡u=WL@¤)B(Û€ +ó‘wÂ33¨º…j˜"iQÖ}(‡|Rb–+{ý€ù6b‡º´ë„ʹV Í-¤œêYa¾÷H7¹éÇ1½zWõêÄѬx»!Õøöêåøö‘ÄœlÂ0Fì,e„:¬þ„Nˆ ÅB”qHÛ¦}Þ#ÀäËì”ú3=¾Ç¼Úµ¢QÞDm£Žœ4wý,)Ö½™1®¼¹up~«ÊO¤*âÊØ8Á9yZ“΂ 2ÚRb*AI9»´ä¤~Ño¹!æ[^žÕçø8u’.ý² +em‹ÆŽÄPÃÁ›g[¨;"HTlï›`R¬ŸÝ¿kh>ÄùWTD_º|*§-“XÀÝ~Xü™%Õò™”“ÎôK¿ãQwË
/(ðõ°&›fs¾×9² ÉýZŠ@¸-Ü?I<X÷ÚïX+ÎŒÀ2~JâÒì¡~»\ Oœ:ÚÃa];q©“«W„žú:öÙÁ¥è”á"/ÔlGüÐB\•ÿ÷‘v$«ÎŒwðƆAh*ú8ÅËvæ„Óí²6Q"Õ‹û†mž— †°õ#›ü§mØ»-¿Žì +h²ë”Ÿ)ºß©Yÿ„ó¸àññ>bõ7ÊÞ |«4
Æ´…²Öø•—«Yü;%¦Ý´ûNŒà]‰Öš9m0ëzšÈ®É‚—G®¿>õ½´.[ùé'GkúF·_á~(~þÒTpZ{HýÏØ@ò4Š®Õ¢¿"¾6ÖÌ&ž_èpxWùë
ÆÑ•š°J]èBePÛÍÛ¨¯T_]v—Â'_ªƒeg; +Ñ+ÃfP\Zá!ŽZæt'³˜^LE ƒÆF¾øoÜXfTÎslÓ)¿L'»4Ò†í;Ví&:’ò$é® +ôæø¢ê üÝJQ>ÊI±Íº£ÄÜ÷fŠ›Òwë+Üó±H‘Œ?ˆ'ܦT˜ÔV³F#Õjpi5’LÒhN‘ÚACõg#ž¥©}E7^å òæØo?G +… +ÿ¤VÕøxÿCƒ©~Ò´•”âÒ'ié`Ÿ{¦C(XÂ) +ŽÜ¿SB¿’(è“ì½&Ý +<ÖÅ4}Áߣ‡ÌõÎZÄHÝ%"[9¢ÜÍm ý¢–%«'S ÔD=èfrž:IâvÛAp¹DçóQ!âÞ™ +ü‚09nÞO#qzÀñ‹TØu¡/)…2ßšo˜"Gþ†x˜Rš0»ä\ˆuvØDà—¯è~д×ÅúG„/Ý+™± ‚Ö9=>òL4€‰ßÑ#-™éDWÎÍ>Š¤©
Ïž!†'wĬñ áB .—ùöOõÞ,,³Šãr ¿AâÔH|®CÍ.¹nÍ16"aóÆÙS8awY!½{ìbùÌ|[¯fvƺk@#2Ýá{kdÏãµQs¸ Ûº55Ö5a«F=Þ¿ŸòÝPÖ—£MÕ!ôƒ?ÖX3½…O!ù_wvCó²1h~ÿJ°¶¸SägÜÂ+º*ï%:{šÍª'r(E%$ÅwþÞ}xnƒ»ùˆ3ø⛧M¢¨ÊÐIj¿éÇêýå‡5yHdõ²ç^úÑsŽýßø¼TêâÀ<— +’ÃüŒÑL +Ò*‘z^®de/švæÔ{ø´¼T+Q¢k +OsJx±«{’ŸiˆçÊ„4¡¢Kšksˆg>Ç!<L+ó»Â +üÑâÆõ9ýÅi$ïy‰Er«ƒÜ‡Ù}ÕX*±». ¦fƒJPaneÔ ½Ç˜aw¨Aᨯ];QjÇ:¹OÛWd„bâ\¸ødà”ò«øàmga™Ý”"AP0IXç
"¯&§ô +¢#ówó$Mz„Mu7I1ËtWµ±›ÚM]óq[ã¥s|b &¡fº˨ֹä82Õƒ_gc¿R…í§R€K¸;]Ÿ½mÝ Ï“ÌZ5Ìñ½Ë+Ê96–‘]6 À{®v±SiÕ•Ë|AÕʵ±b½@yiy6
¨<¿â&ŽNÒrJŽ«?mÉd¡Z"ž“¼öhP¶âù}$³ –OHéW•ë{pÒä×msñy~y‡–
ÎÜ<XŠ^¤…â`}I‹ºq#eq,wå®n¿$œdmC«{·É +wá^oŽÆØÆéçŸ'vUÜÙÁ§-Œ¶áËÇzNëD/Ùq geC¢»¼Ÿ7y9·‹ßY¢Ákâ`ü<?OÌw“߉úÎk#©,y½¾ñŸ~¹k‹dƒýÂN„5¯@xÕ÷œ`ª‘XÝÞq¦lª:þSÊÛó¦Ò\YÓgSY>œŒ.‘Lñ2¥Ï0ñUFÓöFu5ìaÆû‹îò ÏÏÓ¡ô{q¯|©S©¥/æ0¯mÕ³˜Ïf½[64 È}çúµY’ÔEVÛ$*ý¹¶WGû•»“![/ÔŸmáËÀãKC|¿»OÞh¼¸ŸåôéxN|ËÔËH-‘ œq©äuEóo+|ÈG¼WÅ£A+ùÝÄnSG§¨Í¾Ÿk¼·½ë‡Fp±Ó,ìÃøáÍÂ¥.<_jÏJÖØû‡Xº~¶ópEZh7Í\‰Î) +
»>|~Å]Z´ëvm Æð¨IË4ïÞîn>Wèdͬz3Íi[˜%<²Å–úð7a3Qˆá3Œù±R¹›iÕ¦2yÓz±¾ÏP{àK±úÉj¢õ…LÙRTê†që_å°ŒñŽ™>W§¶Q…è}½[ãnï´'™ËH=ks•þžðë\Œ‚¡Ð‘rÌéž`àƒøV”øÓÂÇ/Ca´í¡—xvÄïâdÅçÕÅFH®KlçMàZº},c®6qa+Àí
fuýÖÄ•Q¤ÜÕ†ñ nh’×ßÅoßÝgxZÍ8Ò>DÜ™‚ç{JÝ>zNl‰–òM̱°;MLVü¼GõåŠÑcâ›Y*ø.—I܆”Éþ’¥2kÇ›V(…K·Ò +ʉ;¦^ /Ós$ýM½'ŒÌA¬-cU²~YÞ„µ~Ý¿Fê{È_å_×@.Z$ÑößE_ù*š!’Ë™cõ–p隀Á«“–¢Í ÕÜÂyýØÐ˪Mt×Ådàýä§×>§ÕY4·ðjSâMÀ¬f‹Âæ{Qì|$dÚJmâ“…¤ þAèôHm¯|[À@#_ìã<éÎýyj0_1ÆP»UÙÏÒ%ÂQÍGžyõ¤‡ežCn|ã«|ÖZŠ}‹Dµmo¾6Ý<(ãÓx
MŒžœV*5û£ÞI# iK_ꩶr.ØA +ùõg!e&S» +:£çèÒqÿíjžoCãëCjOQÑ”o:¦…^NómºÒd‹VætI‹¸¤j±ãf}á¯ÑüÙ³_›uÁ-îWtï¨*à/
‰ï²ûÄjD-Ö´at©ÓŽî]*ŸC +ÕÏõ°~RЖõâ©e‡Â¨`îô«á„ö௓§æoPÐÁ`ŸS¡uyØuçöw˪Xðm©¯Þš¬à, «Ç”ƒÛj¡·ÊI÷Òž®˜•°R
R]§L¹ûwØ“x#xæÄ¡¥Èª÷8X\ðéцRò/ó‘.}Ey Îz„“”Òr-J}ò–{K*6«ZxV‚6:5"åß(m—ƲªëmîÎWq¸Ê“¤—1Õy¾ÆÁd‚Ÿû‘µ¾'Qnî~Šò3‰æ)•@+ë8e\|)úJN=qCeIÅ×DêͲùÈ@qØìü4ÀI#¯o=éüÙ)R9iI#Ò¶‚Uéî¸à…Æ©'3ø aÅÒB-‡ÿ²Ô%6n¸?_CpLC;iœ~³¨À9ߤZär1J6³&Þ½%{4Þ7c·Ù•°¼óÚ oË~¦c÷Þ*ô[K¨à×ì¡èÜ$~|”aº&ñÈv{kù‰ÃH ÈÛâÆ;ó2ði†ÊŸXæ)ï¡nÓ¯EØl¸½möÙî¿ôeñ‹X Z4øhKjž¾’/8ôì¸ònÉòPUÓê0~Þ¥ÿ&ê‹~¾F4ò$[èQšá~:,´4@×il眗Dqd^#!OÊ#8š/€ö#æõ¬¨õÛði€Šú4{˜[ëôK~žÇ¢ÁõW{ô³¯*=ÑŒ?˜üqÃHkã©AÝø£æ¤“PÓ¤ùËÏÊ‹Á* u3áIýùÉÃ]g¢¨2NÒšdkÇlÛÁŒÞoàóÖd#ÌÅ$x´‡`äÂuóKè7·(’ÿ¡üòöC…}]A)AùàIóýµ· Vû7ŸÓj%‹µ–¨Bܯ@%”èŠ:îI•ò=î‘Ô9Ürµá
ê¨*gˆxæ…ˆ7HJȸՃ³Ù
Çèý’»~1«/×úGí)HÃ"Uî0QŒ@‚[ü©Ûù¥ýÁ®Ü¶ÓÉRWüÃɆ_Ç@Bk\’iX'U°?º¥k2Ö´p7&ÿ.¢Ü¶åÈMX;eö“¢oÛ2È–gÝ %ûi0/ˆQ¥ìEÞ ;EÞí
Y¢l·ˆ&H×F~ÛðÛòÔ[ £(i’™ýÖˆ×äj_ç‡s‡¡œø¥ëÅ"$-FT¦ +?–>=£Ù~$eºd Š00…ü×gÙ±B`–š>åÐð ÿÔ¥DAü¼l
UõÀ] +qGØbÚŠÆêÞÀŸ×fçQûŽF¨]E¿!t—9f!§8ý*.îƒ:¤b1“áîJ6âqÇ)•P—ANV°d{!áS?ž˜œ£/5W³åš
[RÈa;ü¾U¿a£ÅNY¯ +H8ú)ö_ŸáaTÁÝ;Æ¢Ís÷í“qüèÏ¢5¿ÛÐ@îÑåf9'w‰-jÖL¦)ÉÐW©ßÞé_‘ dï^ãŠüŸí,„i× +ü—žŸ‡4sض_S§Ç‹ ï@>2¼õ®±?=šU²rúZú±#z{¿žt‡¹þNs_±II"TÑÔNôŒÎAenHEÛqu¡C–XžZAFN–ñè¬7Í~Av‰ +¥)qõÍm—Ôï.úñXx[d£E¹•3¿¬¿£¨Žñ$èÓ_'Í”,„2ÏGãRØ:<•Â±ÄJ‡6i¥Ìö˜,Ç.‡{ÕúÑÅÒ"CqJ"ˆlã`z‚.ƒðüÚæ_ˆiœîÁÑýl…`CPPkÖÌ÷~ćõÈ}âµ1ñKº+GÂ\Ú²·5ÂQ`Ž—ØŸlŒ>¦ÆÒÍ6&® *P»p¾»°¹‚t±Ï.
áêªøy•Æ¸:J|a +3»„˜$?‰J¸öÅ«ÝQþžp´N•Ã²Ð+Xd¾o£š“CvØ9¿ÙÓÀ?ÃJŽK'ñ[Pì~U³.·34ŽrPu,•C<w”Lí0¡7 +ÝËïË
·Ä2E.œ€ÍuN¢fxŽcȧ=´@j„•¦r 4ƒ®ùRqîÄ®—ÂPÕÁa*ýº}œ]ÆKàôF ûI‘OPe¶ª)ÿçkt£—‰DŠšÓŠ´´·„±{„§eE+w½«N(e"Y._.³{s…bvÈñÂwÐúAá/àwŸiIãÜ6ƒÖ7ç"a:ž‚i½šÜ$ôŠ’0šý%)zË?Ñ!Ûp:£Ò?ÖÌ…•l +º&ŠWîaê¨2)Ö×yPu/|K<l ›õ~¿ªŠ¯ü>ÏÝõHüäæúÇ"gm{y×j¹ážz²LÅ«åÏóý:Õš0ôMT¤õÛ%ÄT¹›4Š‘l¯±Ñ}†³TÕq‹G>‘7¨ž!ït–rÞ‰5¼÷$™™§‹#zZÞ<)Úz/…ǬþÜyÆ1 â÷ åoÄ—]l)Hüã*_g²ïॾù‹Ø>¢¶V;_‰òî’ΪBg^ÿ—eóÀÊpEù”û:ÉÒûeÌìËþè™m8²t€6û´]þ–WEh6B[©uíRŽŠ +S’k+Â]‰GE§zætwq³Àæ¡ÐCéç\K/§Ö0ÿŒö–S."¯7ë•;/aAñzü^ÑÒˆ€?7;eöÏ®ooö1ԽᷟkÆ|o±Žy[¤‹¤8¯ûEÅ%Þ[þ÷¿ÌYx˜M +5ñ×êÔHE£½kæ–Qˆ†êìŠ'D]OmSù$‘íuÈ:LYüœtˆÒÀ–¦Ih¹ï°/f4¨ÀglãA +¡`‘¾úÙöP-ÔzèUã¯ØÅn{©ô*L¶n“é,‰„ ÷~2PÅ&]E©õÕ%·"b¢>u±‘5åÖJ§ò¸i·!.Þýúû‚ùHQòÆØPøzm%eÊ +þÎ!ANsÐL’Írl
?Ùy‡Ã$4MgÖ:LF±QÞ°XqgÕY +v‘o$ðS^F4§!@Û~Yxr™Ãúœ_¿ecyú@Mòs¤ÆŸÃ$Cÿ±\¡ +XûY$µö‚ÞŸPotÛa,pBÇþdÔÙ²þ)/^Úeºlš‰b|kk±YÀõm>?ÄÇ‹SBêÆU§æyôܲqEBÞWwU9´\+Åÿ(C +a¶±vmøº´ï\vZíßa¥«B)%UlÖñÖ}ô³ŸÂ3ø,|ñ‘òÈ’›p9îì "¢¨CznÎ{Qò4¾öXœ+ó_ˆ,#n¢òî9ä-ãn—²:¥6!¬½ûvü?íšW?Ž@k•ÚAí¥ˆÕ ´6µ+©MÍÄŽR[iíP£Ô5jUÔÞ{Ï5‹U;Ô(uŸîý÷íþîy?çœ
¾ØÄÂjƒ(èãECI¡Ma†p¢ã<æåÖïQ×NvìG´.w`v¤`¬}žMø
ÅÓÝ:]¤ŸcЇ¿¢¸äÙ–¢QÛ’Øß
|”4ŸK(°÷¶¤›Šñ_üžàB8EÉIgòŽÙµ5ô7¶_´Ò׊ûuŠÈ`QË]ÿH_aOÁ^ÕÏúASˆG†‘˜ÆN,ý˜œ½<º%kCÜà"ÙÚ”¶Qbºw¢ÕyÜŠ&Š}RÙL%J} +¥*ªÌAŠ®"„ï…ýˆ‰½æ[‹,å$t<úøZ%Œìj_܉GÍ·¯žÆÔíÃe—hºÝŒõ(:üJPžÈ[eZ°àîÿɯv…®Ý#sŠ}
ÉÞ®³É{ãn÷¬fAëN:\®¢}‘¦~(¸_ª—"piùÜ'gxä½Z‹Ž|ýAîgKô£¸dae9–óÉÍk[ž|Ø ‰iA=ÓOEw@énŸZM?|IihÄ,É8ÉÆ”“ÚÜ
s9^bXzpôbÛRóÔsçHñþ–T+wVyb+Žš;×r¯Aà=æÉÕØ{ì +mÃN—›¤x…¿ZlÌIN 2:î’Òm>çú¯Ú¬4Ú*PÄI’s,R¥ÁÃ]€$öÓÈ'[¢mƯÞjŠg¢Ô2í(}î ×,f¯•YIãÝÃ:åصôÅ®bT,y«†xr +åNUðrÁŸ fDc‡·Ðj‘rK +ó)ÔÁböZ%åóAôPû)ß(ú®[ÁúŒ»b˜SÃùÖžV)àu©wAµÞh”'&Ÿã+¯£±M¢ÜBê
¿õÁ/ÕÀ¼ÉöfaZª<ßæ%V¬ž´ëb8ŠA×+O4°’Äm¯Ðó‚¨÷ŽÈLÚ•ËÅím&m%qßAë9DZ¸Ð¥þ™±öl˜Ã}eSŒhÕsdçºqƒ„™Ç(:üNåÊš\~yõ¾<¤ÙEXëng*r†óqS‘M×w¼-oÜÏÉMLvšÂ%Ÿê,ž˜Õ]nOHä7åÓSì&ï(“F<P÷ ˆ“³ƒZœ×ÔöW>Ù*Œ§›wHm䙼bˆ
ëð8ÿ²çÏË£ 'k³ç›1L8_A…>áŠvp1¬ªuiÔ9AÅ÷Rœ„’ОÂÈÀn“µ:)?|Ü= ºHlOÉ~M·QúŸJnÆýâôŠ"Çe^5 +M¡„£ÉãB¤&vIA{}ɨüØ?òXcçR&YØÜ„*3cµ,;S˜©fKnLXӌȊeL§KSü,‘Ó.ýï)•òýX©"pnüÁúþµ¾îÛžU1¨ÙVv¥~UŸXÐßs$gúaÄ9Ò³¤Çnï¿ã½Hú1™ÐÈžùº)ïæãÙ=d†Ôõš³¹~~,Ä!OΔ¯ ¡ÃJúbŒ…’Y›Ÿ8gƒÄh5•.ı.ׯ‡Å2F™1˜$’«©š2yx°6Ãò7%ë~t@Ü&)HÊûh?HuÕgOÀ^(¦!ÚéX]ÐäWL.C{_zÑäÅ@Þ#›(ÈôE˜O¼ê ÓD€cßä Ú!}±~#Ý®S²N[€ùáãjR”^bÿçnx)\æI% +á’ë†)†°sµ‰,(³÷zÌS‘)åãø§I²%?õÇ:.©M9ø˜²
xaPÊe6éÔvàHÒ#Þȶ{›Ciq{a +î_æ7KbËͤ\Þâ?MÃòõ¬Î±Iž9ˆSïfâúó’Í¢qÖcU…D”R&ºP8ÐÌÉq‘púÛS¦™¾ì§Ó@K¹¥í2y4,ànzñ~†ŠùÝB‡âw¡8²X7Õ…VËƶê
ÿ/HñÛ‡8ž4ŸŒ[½‰;[ ]άT ¼HŠ¢oŒRUÚ÷q§X ‘ôö}‘÷S·‡¨õ`Yœød2¦ÐyÔ¾õ\¼Ã1?a#ò£uÄT!šÃZG=Q’›ü×Î]ÐÖc›9/±§dÒœ…i¬¬ +õZ§¯‘6’4Lv+åÆËÈ/¾{Vsü¡æ;¥5Þ‹ÉÙ“÷°KqÐ@-Âú¥˜UJð¹;ÑÓn ïŽéU/"%ó<ÄÝ{ŸÉÖéFq+£¿
+ªÎòêžëÍxì¯÷ŸQg›a+q%²½[ƒFe$™Mí%¸³År@]CÆ"pI“:%?0F»X¸_¥fÌN1¶Î®HŒ¹\Y2¾{Íï!"¹´èÊ6fB®“»Åõè¤ÑO0–0¿Hú^˜4WíagUv;Ö—FñIôüzçõYˆØýÂè`²ËÁ¬€óÈ5è”CPWžà¾2‰ssFHâzS汕˳ŒÍ¤ }<.ëÙiµD{ä\Ì£º9!özד!î0Š²÷V;Ö&Ké¯(MœV}îüøQècL“ÈÒÎ3ïAT‹ëêןÌ&Ê'g®çÅVÆ´FÚÞùÊy¢tc¬óºøÒ-yfgA‘zTz¼ì®øŽ-:y@ƒ¥±ÿ\¸"•?PVÏWÕE†È3Ê lDK\$UÔw¬>rß©Dè%<»ÕìÚW”åv\ÏÓŒ ø¿€§Jœ‹ê¸ +A}Ü[®L¼«#²GŽ_aâÍ¿KH¤ŸŸ‰‚h
¼ª»,_&½òîoy£pB7vKŽ£¬NhÄO1û_¦¾¶®rD™91Üð)ÍÞºsùTAÍöæ÷Ý¥éëc5?Í‚ÒÚ.îçþy;4Ûú/¡üà"€ps°óòñxeç…¤ühq?endstream endobj 1218 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 33 /LastChar 125 -/Widths 2740 0 R -/BaseFont /SQDHVH+NimbusMonL-Regu +/Widths 2748 0 R +/BaseFont /FFPUNJ+NimbusMonL-Regu /FontDescriptor 1216 0 R >> endobj 1216 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /SQDHVH+NimbusMonL-Regu +/FontName /FFPUNJ+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 /FontBBox [-12 -237 650 811] /Flags 4 -/CharSet (/exclam/quotedbl/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) +/CharSet (/exclam/quotedbl/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) /FontFile 1217 0 R >> endobj -2740 0 obj -[600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] +2748 0 obj +[600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 1160 0 obj << /Length1 1620 /Length2 20127 /Length3 532 -/Length 21035 +/Length 21036 /Filter /FlateDecode >> stream -xÚ¬ºct¤]·.Ûv*I§cul'[£b§bÛ¶mÛ¶Ží¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ø%ìlA,ŒÌ< -šþô¯œtGLz¥ÈéQž7K²;P?8˜Õö¦””õJ>`ˆg:Yánžiü(\ -ü°¾<Ù£ø§6Äbw¡5aÔž_|M<}~¢î½…î?$¤Ë‰…§äuBþéçC(øCB¼ªùÕi{Ju¡glŸÏÏìC(»ƒ¢ÈbÓËZÁçjð§fÌÁpC@¶ -¦éÂú”/é„ÐaF)¹ìÉT_Äü AÇDF@’_²–
z¿IÂ>^"ò“£œŸpÖj×Ñm¡HNZ¬¹Šù—;Ão{ô«OŠ—©š}¾ŽÈïqM gÀÁõ@‰Î -vÌó_ŸäsýðKÞ`zŒ—6$Aïܪ“³ÖUªÔ¼qTÉŒ!ÝNë”›Å/˜4ú#pöpò>ÙMBˆÁrêM<õlb®‚‡é‹à\jÑhŽ!··qèš–í:—…u>5±“ª——‡³›G¿:×MÎ{òεÁéKœJC·Ò@µ¾/)qpgŸ”µí‚ ¨•Šgý´»Û]^ÕÞƒÛ1Ü ½û߬Dþµß™á…°ä]xŠ©9 -b¤H#øÕVh@û€€Æjý)ûƒe{’Ó -3 á"Å8a¶ÌýhC©Š‚¡|«ßÎ[ÖGÏ3“GDBI‘Z8«µ¯öºÛK -’wi¡´NºóoI^0Õ–ÎÈ!C6פ AÅjc›a˜LÁýäü>wiúÁЧ('Q_´d¶lAS¬Ôæ‡äaíøîyNM×iÙòD³."KÂ.38°n -ݱÍAïOÇ4å|cåžä½Ë™à˺_…¤Bcbœp%ÉU™xíŒ`#Ë}Cºûð¥H"¹ºå)çØÑYi#,ج¿ßÁ;QÝqç·Äjí(^&+
MÌøkRÐ,7÷u¾!+o¹-}iC¼HBbÛ*1'O. Íþ~6'jïý˜ñ+gt5û¢PVÔÿ¤˜¿T?ÚãÔR¨s(S¡šq¹"yV‡ôî@v¨„3ëÔHG¹çòšu´ÉÅQ›8Ô%âÛV†w>ðÛeã‘[‹}H}öA÷4OöÖgí -„7N•{œP¾©3¹¥Œ/Ä[Ö]ªpCƒ’½f±eB8|*ÿá´%Q0d’hyŽÏË9€œH7þ5'i}=½ó{LXwÜëaä6Aº„ï5Ëo7F—Aµbñ#¹‰…O[?ˆny=¯7…³¾ÏÆ_žMSÑÓ<Ÿj²¹O-ÄËOrlºÈ|!•¡ÀºüV„,y©+¥,ßê¹2š_Sûà£#üåž·${qÛF2<üm=àmûS}ü{/°¥ÖÌ:i‚ƒ‹\’³¦ææŒ"×îS©ÄÙM>?gЀñ¤kMí!,£sê-Ð@‘œm -ï™°H¯Ñq<)XÍe.vUÀŒ‹Ææ6¼j÷(OóÈŠ¨ð"AÏ@ä_ÞžX$#–alxUeh[fdþ.Þ_lÔæ8-®(˜ÙÉë¾—©)ZóÕŸ -Ôû´Þܼõz2‹÷¤#‚JÇ_N‚aºäYCÏ>\z…„–gĈÏs³Ìjd¨¦!X¸ˆÓwÜ2mö8Ùp!os´C?yTÿ@[Qc×Üÿq…ÒŽ¥Á=5(æΡm³× ÔIìÑ/Ôa1VGKj]Ø w´Ú}oä¿8A#çÁ°\SêœM,ZkyÀºHí(¨ ·³ÔŠSñçöš]MC~ÌTŸÜ¤Pg}÷p€‡€
J¥'Þ fØ‘Vý"‡øíbÇdsªÝë~£vz-t±~ŸU²ôn5\±ìÕµIýS«Uÿ >¢KóHšÃmµ[»nKYݼ øËÈ|(ÚÍs@w³™ >sϽ°V…–šü ®ÙÞÇ+×Xª‰‘†€9õUW«K8†?é
`(zšŒÜ›×Io_eîÁ‘Í>&p×$ÏoLòŠJß´/õý…›R-“ÃOÃÄ,Á‰ þØFáÒÓýâùu.ÍŽ©X€²£ÝF:ûL@¥å߸‰+¸CVçD§›î$2ܘ±¤‚Tô¦:‡4Oòü?ŒÙì7ØC*™VBÆò6VjóšÛ¾§
÷fÝÆ1÷ídž
¿ô|ÒÞÞ@OBG À§˜«T ˜Ã1=Úuø1&\ÛTĉº(Ð64Ï›§¼ì¥—¿ž6ÇnÚ4~ÆcÅÛ[zFbÆ’RJ»žƒ.¶¡ÖkŽãÃÞDþÈÉ+GâzƒîÔ¹m_C|øþ0/–Xµ³-`_1+Rå¬Ë¸ƒðžM*&`*ó|ÜTF-ò\<óãT¢ - - -à+N‰Ø5ÚNjÔÐY›€¨áàݵiï+Zf;ˆ?Çåe³ÙvWà·kŸÒÅüµ—¢I¹ë´“F4{½*-5 …)<m‰‘·iîúó…sA€fÌTljò‰¹^›]¿w›H.’îŠI†m¸_|óÚ»b \ÝÛè#Úžƒðž1Êê
×åã–μmœh³fË]Ú¸¤„ž¯\ÇišÒ}EK¶
õ»›õx}3sŵÈûÔM¿=i‹ƒ)»o)=26¢QžÉªËC†;ß5T]hQ€Ð^šŸmúà|‰Z›!ç˜8ºs±S°È¾J¬f?ÝëÞìoåCˆ€ßlOŒ‰¯¸1]§Uxœ<Šzæ᥀•áç=ˆÎmòò‰¿½PÓ1ú”¢>2x¤iÎ#§·5ž.‰©sVñº^ñ¼ëÓýªÀ›`õVÙÅ¢UR¸¼ûpœ“åæ41$ûFÐ8ªŸ8lV{v”ƒîÞw©³î~¯ìýý«&À꾃~èôÓEKå½ây
Dj”¹÷-vá'†H=~€Œøä“þܦð!UMÌÆ‚qzÝKs"œÏòçžNIZÇ&s™/í}‡•‚ðQE´¶åï¼1àE˜»×AÖö¹›€Ú8!ZŒ%©u4¶7×)-¹¢þxÏÌŠi#Ò},V{ 3ê™Lk0Ûd±À1èÙýåÇN@ˆ<E¾=\Ðwö\#·Sä‡ó ̵ì¬j‰um‚Þ>ñ€ÖXzdöi¢ð»†¢”YµÇÙ¹þÕ‚ÅmË.»ÎÅ)6>NSã"jú¦HËèËLnE™ƒ¦üÂKh°ï_ŽÆˆ\RÙßC* 5¦
T(´eLjÔ9úÞÓ…eñrWtA…¤ÙlõtŽcKª¿ÔL©ÓšïÃÍCm á‚cÆó7ªÓû:³HAÁÏÑ×$k!å8Õ#[;mñW¨$¥„ÊQã]T”PpÎÊ©j0)¤p)8H‹Ûä—4ÞÌd9ãYVä]mze;ûµª.ò+ÜôÖƼ9+C…ŒµÍ7ÈÀaÀõñú%B{PçÑó²ŒG>¦ï\8ÞÓ>\ùë -¾07ÙtîRÝçP{myZí2÷<ijœçâzxÒô£'2ºñÉþD–£,9tÞ±¾vR§ðSpCŠ%è²³O»¢‘χæhÇeUfL†öH)”éßѦ"¥2¦TVÞ¤Vx/>’^Ž³Š$pEÚŸºþ<˜÷|š‡+œüäî˜j -º.F5|EKÖ_kßU†Ä&“ó"÷•€äûdÎ…#æ›5åØK"20¬.Fí¢Jà(2\࢚z~"‚*X¸×”•›¹-=‰Œ!‹2ZK
…‹3…~`ÊòJ&qðmvpˆ;¢¬¬Õ¼}ÜtЈD½N¸Q/pÏÐ@Øy)diDÿD¡ -ÛIX¨_QW:ÿµ
]úÐÀï9Lœ`]fd„ú1ØñœÖʨó™¢r -EþØÜlgøÕ_:jûìe‚¡¡¬ -M
q‚8IoÜ•ªÅö›ÍL-Ô…`€ToÞ½*Pvz:N“x›ÝžÜ™3*IŸeÀ4µô -;S9Á%]9Ao¢ÁN©‡’p6/€ôJš6:7õ"élÈ2îqœÞ܃A«ñ)Û«Â!F—?+ÍõÙV³d$7ÁÌ&áýWW(Þg0 ÎÜ#Úž8¤;ßJì¯ý‰Ù¡L¹ŒÙOÝ5oYÖᘠ-AÒà}…a™5‚>ÂÃNFØX4²–€žÞri¸™½‹…:'é‹NÎXªËQ±lC#Ë4’w‰ùŸÈ>ßOºÒLZx¯dTH‘™‡Ø*:ÑP=<Ylc<¢„%Vù3nË
½H¼!›Å.raìþ“¼ù÷Y:›Îxf‘…H^#ü¡ æh -ø>@[›CQƒi«m®þ²´! -ÚÕìΨWtŠã?oAZdævò6I›¼)’þ‰èRUÛÌ(Á@Ú”µ²âa»¦Ð£ñ Ûå²ÛšÖ/ì¬ý&Å%é¾ACF÷êÏa¶šƒ;öùZjûâÛQBÙ„ãljÎYIN«ä…{Ïy|—hX®t²RML‡WK&q¨aEPjÍ–_ê›Í2ÒÙmYL¡£Ý§ÎŒrêgsÓ¯NãÚ‹+A׃²„7g¨ëÞÊN óké…%¦~aÝ–o¥~F¼».û#3{9D«Áä1;â´æÍôQôÃZÏú8w&_a†¶j¡ã÷q ´r©>Ý}~9ÃQ‡“¹ýñQËöš‚¸¸ÅÒRß -nº_Ø;úáW„ZÏ(œd ÆÅÕ>¤õ„‹ÁêÍ¢*qöŒ‚#röwQ;£œjÚÆ^kNÿyŠÕzÁ<S€\ìæ¬# -)¬¹YQkfb -<Æê> tjY×rCD[")Q’£#˜Øn]Ìcõ(ð(»CÈ=g}¶F`³k940ŒÜ§k¤ÿe:ä#_tRáYL©£½N‡íAKZ' KLH§£tvH¶ÐSÑe6óSò<ø]©k>¿2 GÇNê#u0UóQŽÅÕòK»/ó<'\`ÛyæÒ5êLZ íèÄn™çšz‹ˆÆL²˜)ÏvŒX¡[M5þÉž„¤´‚o®HõÌLg‡œQäzä<¸±5î6Ýc²±ï.U¨vÉM{bUWåL¼Ù¾Î,mxÙ*û+‚ikX‚â{uõ<„NZ'8ƒ,T¥~Xè%{2Ñ/f>[µª¦Dîïö|Ý¡±šöœ©.q´Ÿ›l¢”„AMãSæKæí3r,ÁãZ<Ë›¬ïám)œ+h¯zìÏa~¥^Ø‹Yºxà½M67 -}¾Q@<gäÍd}ßÜ-âãf††Çª§è·à^.@uz¥@”M|Ý°Ìì4ÒÊ -à™<=²!>°ë_Â!¡nÒ
q£^c7Nh?–Dbk]z‘Zøù·Íà[ÛX=mÅ›P
:žž‰ÍW½G°tC#<áß×VÂ'¦ŠÒyÞÄ1ò\ðÎòˆ¿ƒˆ§9&åŒÂT«âÞ°;¯oQ -Äd²’Ø[EÜ°¿ÈÇ`n—ÅædþǦiBŠFtù£¿
mŽ<{töJD|Ï;±Æ&G‚iþco§Àå²-çaA3©±W(æ‚2MYÕô(mò¤ œFã³{gþz&V__éa6ÎÇp›¯ØalĺÃuwðnæc"8¡n‡:Ñ!1w‡Í‘˜Ý¿g•Ã
ˆ%ù[ÛÃÞI‘nÓåÙ–~gdº/~û¬ugÉp¡`ÁPþôTiHŸì2\)ÜЙÍàÿ®ºþ0æ‡zx)œE½ Úéq;7,¦ýs¸ƒ,ª‡izÕéü*ið¾\~]•mî§Æ Æ
K•!ì†ß!ou4›¿›û‹†«ðw<«^UG‰/)cy¯$Ë‹>täCÔž•6rеð‚jåº)×ä;æC'17'IÙŬõ1:Ï–¼pV%¤»Ã -2°ÅѦyWýö¾¥jÖÎŒUËü«üÂ@¹,íðÊ&©¾JèS"§oóZ²,¢t -’úC¡ãa4Ÿ—7C‘ªÜ݃~Z¨‹ˆÃ©µ»*‡‚s·@qp![~_£Œ¿:[8&‹”ŽËNp€0ËtÃ"¤ü4q%¬i¨•F³høð¡<uÖñ¾î7iÞßÐäS)–óãIÌ)¶é¿Õ+[ò5L\Ö*ãÍZóÊgDسö@WÎìÖ1üÊ,o>HÁ81äј=Þü2¶ã³âL˜lƒK¯:ÏÂiåsB¢/]ûP6 -Q+ª''a¯¥¯óm@6úâçòg}»°4ï N–³š¬0ìHñëà´Po|®RÎhkÏ–T…£¿» ”àá€#V‰YR³ŠÅ·Rßx°îV&£Ìy«úEê¥Äyêî‰;|0üŸ¸Opˆ`Ôæ:5 × -dž°Åû€{ò$#ïˆÚrþ÷øúø -Ažˆ+‰o徑ù^ÄWòó -þ¤a;åR6¨¹;áD]ëVsGm½˜¤îý‚(Œ3î}
ìfˆ¦»ÖÔÊËÅ!’uÒPPÝöF5ñ;êO"•—ni2õˆbg+€ã–¦ÜÛ%çŸoÚˣǦÅ|É)–C¹,Å‹ñìSÑ.”Qƒ—#l )tæúnÙ‡')ó×LMšýLsi|¼n°Q!gZŠƒp2Äòf;|d·sJ5[èOú»·r• -¹0>“Q80ƒÁ˜jU¥9Ãüró5½C£öñ²·Ëä—A<Õ¦¡1RÁgó[¼X- ?¼§µebÑ×k^6*ÙJ¬(І¦7Ü1)ºPïNଛ/r§tªX¥õø&™ ¥ƒÆôÏážµÓfÇHöõŒ’°.ÛJó9øP>µe't§l†ƒì1M¾#,Çä1¾#ÜÕÄš#[ÀN).·E¶/°6~ª§ˆÄ•T1˜ôY¶#ß:a³áI]ï¡‘g=㟗ì26®HZÄ+ØÃîk -z|~ÝX!ö×½’F`à[m”Ý»”}«SqÁM÷]»&ÃÍÝùԛꚥ‘ü…@ÏHÈúûÓnê -c—™XúAÒœü.;
®¯˜›'·Œ©½C›ˆ^zºnõâ塳ýæzI‡• -RÐ%åØWÔ糖Î;ÇOÏØŒI“ëöL%Ç’,úÛ¼F¬>žÜÁ|á™ôaײÍ4˜m?3’V=·_L=Rx;`‚i<’kav`Äóè·¶²ú0 -pºs*Å"øVŸûå¦ä!¥`˜nƒ³ß+ó+ŽµÐ -çøx£ƒ®Ñãz#ú€½ãJÿy‘ÃEäºF•“Róª»ÿø†D¯11tü@Ct´Y$Á¼šGj™¯%?¼äX+å•?L¤ÔÛ˜‡Í”_´Ò#(?Êô\˜ã@¨nw"àYl™À<”w„ÙY)ª5avQÿÊ%éömŒ—êÆ5=–AâŒ*$$–-Ò{OcŒËüŒÖ3n¡÷j¦&•3ì£Ç€ÄY+÷U&‡Zg\'ãMnÿ@÷W¢4’:zvlAÚ”‘…‡’>é„Üo¦˜Vü_Ù¹šÇ};*ˆux’ÆC,(¨ƒ|ýÜñ¹Ú÷zw¹ -£fÍ6•9í]ØTÉ°bµ÷áú1K/š&‘9€‡e×¢hœj4Šß.Î[)Z -dCŽREm46¬8Ó¥N¸ «Ô6<É,ÆÐÍÉÎæi:ýx(¥Ët8ÐËn ÿ`’®! -¼ë0å ®ÏØ¿îZïܪc~[Q7µê4è©Hšñq‡Ôø°7ò=³ž‰’§™òÆú˜“duˆ?ÎÕ+r^9kæÖq槜a^NžbÁ:ÐÞ“ªC=>JÅЕd›dg‡¼]ÕúˆËz@øeaªCšs5z Q/FÐéDú÷8È«âX²D›íŽO@Ñ%
U÷Méd>kZ|èdü%ÎÐ?,cYÎMw5ÊÃÃP|øTëZBŒåæxM~`Ô•ä×P -Ïoé†-Ë»ç² ¹
Y¶ñα‹èÞÛ°ëÙC¼aŸèß7嶸מ -뜻%CAÌ‚¬UV´‰Maü€¤Ï¹uñçó„áÜêÀ:œð؃CÛ(|#ºÉ&ÇëéòɼÏÈ8GÙx被Š³p<BÌýÀ«›[¤Êñ+ÇÕ˳ž8b׈×[ÍT|¥#NùæQߧCW;Gˆ|SmÿFÞÖil±^õãþ™ef C¹‡¸·á¢y JòëL;˜L]¸îÙÙeÂAÚbˆPAIÛdðIÔPîÅ -×·³÷ŒAÿÞ]ÿ¹:#¥µIä -ÑÅÛ±åprkBÙûCzÆaÑÓ3ëÌ"!²2ö]3¾v{ÌÆY»G«Œs»Oå×náR¤C2¾&`ñNƒ§Eƒ“\ÙÍ9È&Bê.üŒ¶Ù· nRV'“BV’äýáú%h:¾.l¶CÑy%4KÉÂTÙfÝ4„T·:ùÔÖ4_'áULšj€žXËÜý¤öiûÃÆûêç”´c§=`²¨øqªe˜ßC´Ü¥îóÚlméòù -H¦Ö¼9Gž¸M‡ôº„þP¼¡ïÒ4Š›µ.¾êJøiˆG•Ä$…hÎX÷lÕ-DÞßÍ›á/c;§Ü?‚Ë¥9‡l®Ñ{ÄÆ»òni†n½$›B×:õÒ©~’Xv - w/¼ÞU·O§”~EÁÏAç8Q•|ðŒGÇ=gý9,?YÁ2Ë<må,*]ß»¹5HN”¤mf`!”uåIì¦uþÕÕ>2L"ôÄEñK‡æPüÚ÷AÍí"I1„'{†§³
úº¿¯c¼NøŒß_lbéøûö—
m„nĜɫí÷Zäo£‚³|t0ó>ú>S‹Â™ÔRú—°zaI¿ î%ÕA˜">©
•N~ú‚×-†®2-QVçh-‰úó
ýÞpܹâÛ/–¹"5vÎf—GWnT66þ8éô^úÞu¾4+k‹O -Òo)³S™2áØ¢c—¶FäKa·\®ó*‡©‘@èž›XsIÅXðûh‰ðeýÖ8%W6¤¹¤‹»Ü²yÕŠ½¢uoUêJP'mͧésŠêø?¹ÄÆŽÞמ+Ü¿eB*£HH:`rÀL]¿ºH.âØð~}Êη¡>¼üHÇ8š½D ýâ.ºQÞùÎ_]Ì—%×Ïت3©W$@2?d…°Õã¾Â`¾²ß³Þ׆>xÊ:ªÔý°™9•YæÒÊßÞñ˜¥ãë^:?Ü'°‡eIº¼¨-„~ä˦MÕ7W¥_ÓÞàÁ¥MxqÅß)w¾€Ì}®+È Á‘ÄâGu™.Y6¸D£‰ý}KCîý§WçRPn"8U+Sœ÷ÂøÌûyvÝôL½3ìüî3QÁš\É–ä>¨UHC{ϊѼ•€Q¹!÷Å“÷.¼?;L9§ZšÒE¾é«v¥Ž}03|˜6þ–ˆ¶9£,whœ-ÇËŸ×;?zøpÙÍ„y8àŽ9Ë¥H»Ñ<TÒ>HîÍÄû-q˜˜\—1άÄ.5HLUcß|{¨8óŒòZßÔç`äô³ÁPß½Q5åŽèz”=ûŒW0zúU÷Þ r còRˆžÿžDCh-&¦)¬u#Å>"1™k–ôÿ»žÍÌÃá±N”vD#¹¢Açª ›`_ÝxXÒÈwgÞ„ÏÙå솋ÛÈK+´CܦA"Ê -âc§x~XÃJo(¦cé;‚÷ÿ¨š#1âŽøé}SUx °f=”4+ÿ䎧õZ›…H -—€_úØî*Ý– ·£ý7<³Y6ªãvl¤ÎݱæŒú‹Ù¸™‡ÈÈc?m·Ò†h¡ˆÕ©Åç•¥RäÍ×”»L|âÊLwõø
Ρò°¤¼AçYKr¼Ï¹ÙÖJÑkW½b%òyQ·ŠTæ9æ‹Ló"$N¬½ôž‡9ȯòL¡åùö;û¿ZÆMú›¦Ýj{wAÆILTI¨£%èÔ&ëö…ôâÞ %§½(1ã:«/h•¶µôÕ9óUÖô”‘Í¡i¬rÝxUæ¸ÂÝPÂ#á61”#,*@Š
–üb±·Tx8ÙÄç{ëG79yçÐê°ÀCþ“væ$Põ`Ò匀V–ƒÿþu6®%…Ùqc†¬Ó:†wtÎì•NôwØÒPÄv©*û&<û'ývýЊâ¹!ÔA"OýMBð¼"ðÛQܸ…ÍK) z²>Ç'áØóô-oâŠÌ#°±ÛÓÀD/&Ësgk7/;ô^D÷‡ÞKÉÁ¤ ŸCH-²oS<ÛõCoõšÂÛw˜´øŒª"ØK–_Š"H‘¬ûVpÆsáõpa¡£_Ì×SÈÚua¯õ°Ü±l|ÚV±{+ wókÎ:¤6=s÷(HfUôRê¸zP¢[E ïcYÄEùºŽsûr~3§Ÿ°3ŸMÆ?å¦T‚°ÍZ5ÕèR˜±˜rL‰buO[ˆ`×w\ÁU·?‚‹œWà&ó+Дzu(“ Ø!ÌìÅûR% 2ú§8xdßÿó <ÌЃ|Šˆîç}®rw‚RÕ:Mp’òÛBÿÉ]˜RòöÖ„½®íX((gÿ¶Ä?ɸ‹e»¿èÚXÄ -ܯ*ù V}ÒD¦ÿôð¥ÎÈ -}ˆÒçq=G/¦8õ6ÙüÍ/]Z?ó{P>yêU•œµú}éË2&@žÊå:Þä®þ;TÆ -݂Ư9ÎÖïSftt7,-–‘hV©©<
®ÙÒ]+,àŒA‡Ø •;…ÔzEå]þ<Ïßý‹ÌɤC™Ñ6ïðÖR®{ÒºsŽyZÍÒ+±êÈÜôÄk´Ñ¤FÈZ‰!FÝmP€×:%•éd -Ü)„lk2'¨á"€”Öó±âµ|syùͱÕe€\ûÊJ;YýMªI‘_£ƒ~Æ1bfÓõÝd=–ÙþÅ|SÅ=UkΫ -S‚DÍ0 -G7ôæøÆnuÒ{«ýef‚‰@ÆÚJt'D©Ñeèb
ÕÓþÿkŸ,Ûš -ÅGÕkX:gׂ še£¤xu®ôØ\CùqKå1¦g¡lø 7[Ù²Ì4Òÿ¹[PÞÿøç¥ÏFÔ´²ÿšûI#pŒ"ªºóöWwxN¥&ÿÊYGúéÆ„¾åoK?\aùt@½=¥¢D#UŠ&ÐmÂ΃:Kó#˜´ÏÙf`ÃN¯Ú¬5}=ÿúfy$V·‹Id”-é%#©¾¯{z²5…رF’oö¾!²’»÷ØIáMØïä†H}ØÝÖR´x`î/Æ]è›Òª^3±Í7é¶ûñâ¬Â^µñŠ -·(FLH³~å¶ÞÖ@Õ6Jäó¾xÌ0V?K£ÈÕJÑ}gy,‹¨†/ã©$þ¸Ì~“Æp\!#…þö/»-ñæ
–Ú3Uv+l•EM ´Dýý_O‰uò!÷¶:)
G‚·Ñ é91¬ÄdÐ~í@§q&±ÑŸ<¹¥ËŠ)üÁžjÄÆpîp ãO`6ÿÓaÌ€“Ê ‰bœ›³ƒø*Ln<rüME‰J¬#Å<ÝþŽð»Z–êÞ§é -Ö/y³¤¥6f,¹yK@ðcõÏ’bÖ3Jca~Äï¬]+)T!¿hê (ò‹gÙ׺Ñ9QÀî/LÆ. |ºy‹ÔOIûè{£dç*ÇU6j—áÅ+”S•ÙÏ=¡ …–› öHL -ú¼ÌìÝÂYÛ…(tf¦ƒ>•OA‚+«ä¿dWÍXäøkÚ— ÞÎÓÒU±?*›¢jžêß_ -+µ¸¹Cíu†Æ…¥v‹øò¬WU˜}öÔ“LÂØÏÚ(kœ¾¨RoiÍ^$Hé~ÒøÈz’Tñ׿·xû0®Åψ_ShúÜ2\oEŠã¦=U´ž$¸_N Ó–jz͉Q -Žò2Oa}=AÀmãUv”'·ýÆû9û¨,Yó‹Äg“ˆÐ‰$¥°®ÇªÍ3|Zí-Ä -ïùnS;ÝŠM‚fˆðÓ%¸<%kDpu47û95%–T+G“¢æ×*T‹J<Èü«˜t‡'On¬ÄÂ. -ðž¯ÔÏ´ZÕ׈‚œâ^ž>ñ·!eÖ²ØäÛ¶(¥/J‹@Ëz¼–F]¢wò¿ÝÓÏõwÁ/…=£ÆhŒcsËtö„t˹¢Æ1|Pú1—ŠR,·²ÖÑï„$8É -,f¬S¼‚Ô·Nï¡Ó¡›¾¼xœñÏ‚È¥éJ#ìKÛ1íü±SŸä{årsê,<+ö‰ÙöÙœ¼U1*µþôD'î¿ð|ÂBÕF5Ç .‰Õ+‹f¬æ-åuÝÓ±oFã”’zeíðÓ„A Ç«á±™—KØ+·,V cšðôŽ/EþrË<g{³™$ÇÜ-+ÓxYt3É°¯‹çq¬¸”‚û@k{#lŠŠBäƒûO€Ä¦ù%ÛèúCÝt@AÎ]7DXÒþƒÅuOî¾[©ÞÌ
m_'y…,ÒÈŽAìÊxi -K› ÀöYt^¬evQ&57Ñ„t9Æ©‘;ØQLV2²ûËI2U^¹¨%Ô~ŸŒ×ˆzW -—wyÑ7a﨑Ýâ‚\Ð8Ó}`\%êp‡có'Æü-ú稛ù2ü@/øç0´âs]1Ñ“ì³ h«Ñˆs.:5üókÔLžQdBöǺs+úof´Ôë§hÖ"³ÍÞ„ôî¥J¬°aÿì·µid´¯<îûöÞŸpÖ=×&¸ùï|A½WKÏÓ}‡õ2yÐ2f:oü0Á¹=}”%4€%³ì~46¬“âNÑq›äøáõéí”Ú,VÞyš0ÐYjš¿c\êàøªà躮´Cg6Çh¥8=’Š%hU åí™Sî·’|Ì¡)‡{—zBÅŠº¿ð"qج5å§\ -p -íSß»bò7+Ö˜ß áænÍwˆ'£#µE°nx‹¢PšL~|ö4KQ¦–!¯jn£ÕªîØãVBGE”}œœ ŽýÐ{ƒéV³”Vã0¾ô.¶Tv‚Ì|`°SU[¸U!&ýø7 >hI£YÉì0…òÇ*껪¦úݳj€í¨ž¨ß`Ù?8sGx9g3ÎîèñÙt÷:n:—SúluHx‹œ›ÍÉPo·«ÃJAüÕh€ß¾ÅW'ˆÃô´B ¶q…¡Jˆ`“ý kaæ®´bg>–MO”¶æB8uk—ÄþÙ7)Çê®Ü¿5GVQ(ë¿Pm-FG*åTA¸¡WK2z)· Ž×?3Ì›QOl -s¹ -¹ƒ%ÔÕÝÙêjýÀâendstream +xÚ¬ºct¤]·.Ûv*I§cul'ÛFÅNÅFǶm۶͎í¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ú%ìí@,ŒÌ< +ükì{ýÒÂv¹+
?j06Íðün÷X>wø<”¦=ëñ¡êM^çùPÐô o}íä¤; +dÒ/EN¿ÐˆòºY’ÝÒæ`V?Ú›RRÖ/ù€!žédu‚»y¦ñ§p-ðÇúòä€âk’Ú‹Ý…Ö†QWx~ñ5ñôù‰jh|td¸÷ºÿ.'ž’× +ùk¤¿c¡ ¶Z…xUó«óö”ê&BÏØ>Ÿ¿ù‡PvE‘妷‚ïÕàO͘ƒá†Àl¬„ÔÈW"æþx²
ãŽïIx%Q¼Kâf†Îo¿møWcwúŸò‚‘ßÄÎ׊ü;L§Ö‘;æT°£6®ãGvíÌÓ.õ=n¾Õ.7èX¬JÌ[ÃZUýùbªÜÁ+_®›xF»-b¨À(¥ã©ƒw¸ÜÄ$ÌÓ…
(_,Ó ¡Ã4ŒS4r-Ù“©¾ˆ3‚2Ž‰ŒŽ$¿ dô“„}¼Dä9%G¹<á¬;Ö6®£ÛA‘œ´Øpÿ(wßöìWŸ.S?62=ú0z‘ßãš@΀ƒëì˜ç3¹>9È%æÒðOÞ`zŒ—6"Aïܪ“³ÖSªÒ¼qRÉŒ!ÝMë–›Å/˜6 pöpò>ÙOBˆÁrêO<õlb‚‡ˆà\jÑhŽ!··qè™•íº”…u=5±—ª——‡³ŸG¿:×KÎ{òɵÅéKœJC·ÒBµ¾/)qpgŸ”µí‚ ¨•ŠgœuºœÚ]_ÕÞ´c¸Cûô¿Y‹ü n¿3ÇaÉ»ðSr +o(:¨Ñ_‚å¤ñOFõØI)Q’l¤®‰Í;TÜ*kÀ2ñ´Ò(ÏË2+Õ»ÐÝé¾›äAM¾×Q?A"tto¯$ÏÊAœÇ;tÎB¾ã¢ü1jþUxq¨eÓÒäþtþcÉTI€3!š@X芆eÎ^í'a‚†:U+“òÀÅ$˜ ‹EÕùÆ +a®;?o®åü+L7O7¹uv¤ÓuÞ̸¶çŽNóæî™Éñ¢ÊÏC°¶ŠæЂÚ\„P¼®ˆ™ß¢’1âÊ¢Þ zO&É·c튩ȗ©7•Á¼G}Žúäñʬ!FŠd1‚_mÅ€th¬×Ÿ2°?X¶'91îî»(RŒæËÜF1”P (Ê·úí¼eô<syôA$”¨…³Z‡j?¡»½¤`y×Ê ›¤»€–ä…@3éŒ2äaMÊàT¬6¶†ÙÁÜßñÁ.ïs—f}ŠrõEKæË–4ÅJmþHž6î€ï^çÔtV-O4ë"²$ì2ƒë†`zê%ž¦,"þ¢ý_…Ù÷4Ô›øãö•÷ï¼f=hR àˆ¼®<|Ó$ddð£Ì…ÌËÖá‰ñq¸WœQÈGðdȾ×-&üäJ6fëÏurþq^KÐk\#º“4”ÿ8rÝäRlºQ +Æ9vrQÚûaÞßïèóQÝiç·Äjí(^&+
MÌäkRÐ<7÷u¾!+o¹-}iC¼HBb×*1'O. Íþ~6'jïó˜ñ+gt5û¢PV4घ¿Ô ÚóÔR¨s(S¡šq¹"yV‡ôîHvhp„3ëÜHG¹çòšu¼ÉÅQ›8Ô%âÛU†w>ðÛgã‘Ûˆ}H}öE÷2OöÑgí +‚7I•{œP¾©3½¥Œ/Ä[Ö[ªp«Cƒ’½f±cB8|*×vÞ’(2M´:G‹çeƒÀü‘H7þ5'is=½ó{LXwÜëiì>Aº„ï=Ëo?F—Aµb©ÜħcL·¼ž…×›ÂY_‰g Ï¿¦©èe‘O5ÙÀܧâí/96]d±ÊPàH]~+B†<Ô•R–…€õ\ͯ©sðÑþrOŒ…[’½¸m+þ¶ø¶ý©>þ½ØRkn„´VÁÁE.ÉYSssF‘kÿ©Tââ.ŸŸ3hÈŽxÒµ¦ö–Ñ9õd¨HÎ6 +á]ô +ØI:ý}Ÿð…îŒr\Òv-`÷’¶»j³œ³·í} +]rSÓ|¬U]Iƒsuoé$½9¢c÷U¹“äx°Ð¶¾Ø¤Û‹«bÜIÅQ¶?³…á6.S¼à‡n|ÑG{×BõwK¢»™(‡§òq°4Nqéåé»iÁ;í¶¹öU‘PÈœ¯æxÊ&ô•¤1S¶2ó¥w\·+zê›DJ´v¸$ÌLßòÈîk>^µ².L±¿²!ð4^¸“PÔ¿¦.¬äïŸ(¿'Ú¶£Pb¥i‘÷êzÝûDUoÀõQ +0E†IÃZ^ŠÿŽ¦Ö‚0›2%“ýJ§^ˆVÄÉk"y +4ÑÃ¥Ë2š=¥«UkW3G{—ð̪K¦¾(ÞØ–WŽÓÓüý®9’ã‘<džâö—ŠäÓ^Rƒÿ°PŠÊ·Zl—›Tj5¾9.¢"¥³f>89ùIÆvp3Ýé9çáCDq
€¯¹/W4=¹¶dopso´‘‡À1¶¬´’møÚÉ6]ó|"쮘V»ÃJhO5‚°2Ó˱‡7Nß¼hC; +®@ê#^>«\×Ȳp‹Ç*, A_ÓðtÅ
âqÙb1?&}=Ä2ãÒ]óð€ÆžoÑG¡PL.]Bª¢E3ý7z®Æn¸c<®žepNwd¶\ñú"¯kÑ;ïX¨‹Ð€BgN}®²ûàóÃÌòhkrŸÀ¶Gâ{°l:&j‘ñ™û
^òÕPkNÉ«±LÖñü«DÙj‹+Y9‚dÌœòÖ„Ê—6<€ôVcŠ§‹Íš‘Ýþ³¥SÕsiÚÚ¤Ûò>vü[Âë +Ð"$©p@zŸÖÐGƒ›‚·^_fñžtDPiÂñøËɘ.yÖÆÐó†·ÅDã^!¡¥ 1âóÜ,óšªiÖc.â4£÷LÛ}cN6\ÈÛÐC•Å?ÐÖÔØ5÷Ü tbgipO
‹¹shÛtƒt{J'uYÌ„ÕÑ’Z6è¬wßù/NÐÈy0¬Ö‚;g‹ÖZ0….R; +*Èí´âT¸žfWÓ3Õ'7)ÔYß=á!`ƒSé‰7ˆv¤U¿È!~{£Ø1Çœj÷àºßŨžG]¬ßg•,½[
W,{ukRÿÔj•Å‚èÒ<’…æp_íÖ©ÛRV·((þ22ߊvóÇÝl.ˆÏÜs/¬U¡¥&‚ko¾÷ñ@ÆÇÊ5V…jj¬a
`N}ÕÆêŽáOú +–ÙýÉvuöù‹ª¥'NP +SèÇ´FÞ¦…ÛÏΚ13±©É'æztƒÞm~ ¹Hº&¶Ñ~ñÍhŸŠpu¢h^Âc0xÆ(ë7\×[:‹¶q¢Íš-µj“’"z¾r§YJ÷-Ù6ÔïnnÔãõÍÌI·n ïS7ýö4¦¦ì¾•ôÈ@؈F9x&«sî|×`pu¡eF`{i~¶ÙƒË!$jmJt†œ/üaâ\èÎÅNià"û*±z˜Ãt3¬Gs€µ/Yn ~³1&¾âÆ0tYœVáqð(ê™w†—V†Ÿ÷ :·ÉóÇotxøí…*˜®ñ§õ‘á#Ms9½C¨9ðtIL³òXˆ×íŠçÝ€îWÞ«Ê.’Âå݇Ӝ,7§©Ù7‚ÆQƒÄéèd`³Ú³“t÷¾k
œM÷ûx}Pïïo\5Ö÷ôC§Ÿ®Z*ïÏkm Rã̽oÙ°?1DêñeÄ'ŸÆ à6…©jb6LÒë¦Xšá|—?÷tKÒ:6™Ëühï;¬p€Gˆ*z µ-Ox—oÂܽš°¶çÈÝÔÆ Ñb„,I£±½é¸NiÉõÇ{^èd–PL[‘îc±Ø™Q¯dZÃÙ&ËŽA¯î/Ú;!òùpÁBßÙsÝO‘΃3ײ³2¨%ÖuzøÄ[cé‘Ù§‰ÂïŠRfUÔgçúW·ºì;§Øø8ÍLŠ¨ék˜"¢¬tµ2¹ešòK¬ Á¾9c$rMe©€€Ô˜6T¡Ð‘1QçTè{O–ÅË]Ñ’f³ÕÓ9-©þR[0£Nk¾·ýµ„ŽÏߨNïçÂ"?Gw~\“¬…XH”ã\lã¼Å_¡’”*GwQQBÁ9+§ªÁ¤Â¥à(-n›_Òx3“mì‚gU‘wµéíâߪv6ºÈ¯pÓ[óæ¢I´2Ö6ß ‡×ÇëŸíIGûƒ—e<ªð1}xçªÀéž~ôá*@O€ô…¹É¶s—ê>‡Ú{#ØËz߈¹ç!žå<×Ó‹¦g=‘ÑGHö'²Ôe ȱóŽõµ“:…Ÿ‚ëR,q@õû´ùüqhŽN\VeÆdh„ɘB™Ám*QZ!cJeåMj…Ïòá#éå8;¡H‚ +¾zT…¢gôOÿ’‹Óo0-šÎ०²ÂŠ˜hÈ›9ÉÈ%m-ÜC7‚µ$©OãzAp9%mëƒf7ìÄîâºÞNÍíOKB¯Wˆà/°´e¡ìÔáo~f›]{ˆðEŠ˜*ƒûN·G®²ÎÏ«Eô[‡ðQðu1ªÑÃ(X²ÁZû¨Âx5¤ 6™œ¹¯$ß's.1߬)Ç^r‘au5nUG‘áŸÕÔ÷TÁzÀ½¦¬ÜÌ
léLdi\”aÐZj(ô ¬õ\œñ,ôS–W2ƒo³‡CÜ`eæí㦃F$êuÆz{†ÂÎK!K#$ +bÉbðúuÙ9ðeÞWsS†ÚINñE$ŒcD3>ä:ÝÔ%žÐçIr<Û½;åµV}$1â°ðô£õmõ“¶)L£BòùP-PîÀ™ÑD|=ÜF—dã;õ…R^jºßsÒcþRÖ'šîϳH¥¹¼+jìF+ò˜ªB~ÈCgÙ5ûë €UÓ(6û˜Ý#̼vÀ£Äòq¥þ…äž“ZrtjŠoe|‚+ gÈb
ÇXxÞÈÍGŸÆÜ/bøc§èüv+ø²òkbˆ BFÛ;l'a¡|E]éü×6téC¿×0q‚M™±I0êÇ`ÇsZ+£.ÌgŠÊ)ùcs³½-ãVé¨Ý³·††²¼&D̘ô”@¶Ý”ï³Oœöø]¥ÿ]ƒÒ˜,±Î +qœ +Çp\=Nü¬4·· +d;uÌ’‘ÜsÛ„÷_]e pxßÁÀ:Ïhâî|k±·¾ö'nTdÇ2å2fu·0¼e}XÇc*IÃoô}xFe6;acÑÈîXúúË¥áær,–êœh¤/º9;`©®GÅ–°
,ÓH>%Oà"û|?éJ3iὓQ!Efb«èDCõñd±Mðhˆ–Xµæϸ6ô#ñ†l»È…±ûsLóæßgél;µñÌ#% +‘¼GøCAÌÑð}¾€¶6Ç¢³V»þ\ƒ diKB´«ÙQïè.§~Þ‚´ÈÌ=ìäm’yS$ý-Ñ¥ªŽ¹P‚´)keÅÓnM¡Gã¶Ëu·5%¬_ØEçMŠKÒcƒ†Œ8î5€Ã|5wìóµ Ô"öů£„²3ÇŸ³’œVÉ÷ +žóø.Ѩ\éd¥(š˜>¯–LãPÚ Ôš3,¿Ô16še¬»Û²˜BG»OåÜÏænPƵW‚®eoÁP×½'”@çßÒKLýº-/ÞJ[ýŒxw]öG8förˆVƒÉsvÄþh;Ìšé£HÛFÏæ8w&_a†¶j¡ã÷q´r©Ý}~9ÃQ‡³¹ÃñQËöš‚¸¸ÅÒRŸv7Ý/샃ð+BgN2ãâjÒz ÂE‡`õfQ•8{ÆÁ9û»¨½qN5mc¯
gÀ<Åj½`ž@.vS;눂DÊknDÔš™˜±ºOZÖµÜÑ–HJ”ää&¶[óX= +<ÊîòÈYŸØìZ
Ê£÷íé™ùÈTxÇSêhD¯Óe{Ð’ÖMÂÒé*’D#ôTtهͼÔ<~WêšÏ¯,Äѵ—úHLÆücœcyµ¼‡ÅÒîÇ<Ï EÇvž¹tú“H;:±[æ¥@B³CoјI3åÕŽ+´s«©Æ?™À“0”VðÍíÉ ¾¹Ùìʃ¼ãAœ'7¶ÆÁ&¢GL6öÝ¥ +Õ.¹YO¬êªœ©Û×™¥
o;å +ˆçŒ¼™¬ï›»E|ÜÌÐðXuãý–üÂ˨µÎ¯ˆr ‰¯ûV™ÆZù +ÙòsøeìÕÙÂ1Y¤tYv~ +³L7,òH +É_AWš…*QÙk4‹†ÊSgïë}“æý
ÝH>•b5?þ‘ÄœbÇ‘þ[½²%?QÃÔu2NѼ5¯|F„=ktåÂnïìÈòæ‹ô'†<³Ç‡_Æn|Vœ “mpéU÷YX |NHô¥kÊ rO6ágÌf +SS˜K" +Ï~~C®x®'ñ0yÉ#ñÚºƒ.UŠq/öÑŸ˜*Îö¥ýµ4Çï`àImŠ´¦Ç”Ní.zßF6ù‰‘¡Dž³¢,t°Í(¸™8é±%iXK{Ëlò\‘Vñ}gx7wÏbðb¬½‰jÁ½`û'üNf ÌB ̴Я1fBÈŒ+%¹7¾CäKvÇÑŽŠ¨'¶,³jvZÛÚ•¢lD¤È½Å‚…U?/rªìuGш¤59+òúøF´'Éûu£÷ÁO^C.¶ºó×?D¡ú +Ë!«O$!*_—‘} qufÖä2¿ÐAQ”¤ÂâWH,‘Z8gmÈÞ¨gA‘¸¶vaõÈ”YÖ¹›‘k ( +á„%F<5Ÿ¼K»ç´Åö Û3Ó΄ÕÁŠÂ~çD7/âšÅ Œˆ¼êÇ™©E½ŽîûFí<gðSL2R\”˜um’|Ø¿I"-‘ÊQ:‡‘w˜°ƒ„~U—ÒÛãäÚ"(ùy—k1WÀqr±·}§MNÉðɆa0’~åBnJèÔ$¶\
áyq!~Y!Ê`Eõâïá$ìµòs¹íÒfØT\à\þL +Pb”<pÂ*1oAjV±üVªñÖÃÚt”9oÕ H½”8OÝ#q‡æ€ÿ÷ ŒÚ‚€@·äV̶xxOždhìQ[Îÿ_¨£òDà1Ös?õ~-e^¹Š‡ºêëé¢>3vŽ,€ +Ôù´6Š8äÔÔs‡ÎCý—ó<n!äö™…ãÖ…T«Ðùê“—J8R…’Ðæ(Qå|?Ç:¹6ê<™úÈüÙ:ò‹G8çü;k»Z[·É}ñ b¦ND‰)Ÿ_ÚT jÄØ*à+5µÐ.‹j´aµ”n^@ì]•yE}±Ï» Ÿù¬w©…ò;ô'ÓÛéû#N䪦(…Yògvì™%c·ëµIˆÛÖ$J×E+¬ÂVbx*5uÃl}¦öKZ#Èóq%ñÜ72ŸÃ‹øiXu€á•©~Öá
œÑð\?"«§Ó-ªˆ„ƵKÑQˆÔÀMH@}ÎîkVÉP" ñZß4l§\Ê7w'œˆ£‹cÝjԽ?P…qƽ¯ÝÑtךY{;¡8FÒ£N ªÛÝè&~GýI¤ò’Á-M¦Qìb
pÚÀÒ”{»äüóMgyôجؒ/9…Áj(—¥x1ž}*Ú•ò£"jðr„-!…ÎÂÀ=ûð$eþš‰¢©c@“ Ÿi.÷Ñ6*älBK±cn +‡fð¦ZUiÎã0$¿Ü|MïШC¼ìí29†ÀeðOµY(FŒÔ³ù-^¬–ŽŸ>Ó:2±èë5/•l†%†ÖhCÓ˜]¨w'hX6Í—¹Sº†U¬Òú|“LAÒÁcçpÏ:i³ˆc¤ÖûúÆIX—m¥ù|(Ÿ:²zS¶ÃÁ˜¦ß–ãòßÆîÖjb- +ৗÛ"ÛX›?ÕSDâJªÌGú¬Ú‘o°Ùð¤®÷ÐȳžñÏKv×F$-ã`÷5 +a-‹PšêÊi^(5aò÷Þ8œÆ—†rmëÜ0Û™//UªŸÑbVPp©ûÉ`i.‰ –§Á’¤Þ¡áû ÇϺ»ijì‘"f[ºtköÁŠ”È|^g†Í„ZÏš¥2ÝDÜyÓ—À>ü¶6•thâàoì\Á +z¤ûŠâuÐyçøé›1irÝžã‘é£äX’Eßa›×ˆÕÇ“;˜/¼’>ì[ö±™³FcFÒªgãö‚á‹©G +oL1MFr-ÍŒ™a=áÖVVFÎwÎ¥Xߪâs¿Ü”<¤Ómpö{g~ű +Ϊ¶yY5Tl´«œ+Ã2Ê$WÄ0Ñ3˜K_Óm£âç¡^‚Ü<çëþ,õ˲
šDÐ)ôà”2Ÿå\[EªâW&Ç'ÒN³…Í(JJÚØ~;Î×ÚÍ+噞¼ULJ;Œ¤3ä%…Óô
X¼©ê+ÎbTØ+E¸¸Ä ßpzeÅ^÷.Ê“ îìÚA–£Ì‘lH¸“iM«™Àþ(ÊnS1¢e…•,vû©œ+½Ôä0euT¯w}Ý.8 +^ÝúãÝ9ÑF˜.ÛgÛ«q\Vßr_g|œx[D&w—=€wÑ6ÊÐE’tœ>-LEøbµ˜öbo…ç
m»7oÕ–7æWÀG»JáoÔbÐ5z^oDB°w\<à /r¸Š\רrRjþBõâÿÂèù!&†Žh„Ž6‹$˜WóˆB-3ã½ä—K`¼ò‡‰”zó°™ò‹N`zd åÇB™£+sÕýN<‹-8‡òŽ0;ë)Eµ&Ì.P¹$ݾM€ñ’@ݸ¦/Ã2HœQ…„IJEzïe‚q™ŸÑzÆ-tàQÍÔ¤rÆ‚}ô˜8kí±ÊäXë‚ël²iÀDâñJ”FR‡AÏŽ-H›2²ãXÒç+Ý"ÃðûÍÓšÿ+;Wó¸_G±.OÒxè"ƒ%u°¯“¿>Wû^ï.7 åòƒ ž0ôuS¼2 ©'w²áÁ™ãi¨šFNù6ýUv“-«>]
xñÕ—*æ®çÅÔv‘?‡Ýâ–Ü©.M +0·dæ´ëžÿÇTcz¡JÍÜæŒ.5aö$¿¥Ê°D
ÜE…q3„f›ÊœÎ.lªdX±îÚûp}˜•7M“ÈœÀÓªkQ4N5Åç-…@²!G©¢6š
VœiˆR7\ÐMj„dcäî€doû4~<”Òe6äm?Ð0I×€ŒÔK›ÛS£ò£Ê%Šv¥Õï^+„¬Æ³ÒÛø!&à1:¥Çã‚'„D=ìà«&€©IãY
¯€äÂWƺ¥„RÒŠHw²ˆsë.üÙgäè÷mïyoµ©ltxebmH÷fïêïo&Hì*âj]¦Î¾kÒrX›0 —
ó=ø^‡,›.Âõ˜/Z—[’áXýõ~™?4ÒdÈÅ7€äñq´¤ª^JÙ[K™†OøDÊW÷ãºò"îf/’’u.3éªZšœ˜Â9µÀµ”…”Û±†mùlË—‡Ï³'´4/Éu×µF±‹gGŽ‚Ç;`Žøç:í·úGj¹ÃÊH‡Íi¤Î@É÷²ÇÖiFèÅžoºÃ‹…õXWAúŒF˜g =çÇ$¥¶¸i\üh¸Ôè¢ë9ÃËñüw<d;BvŠÄŸ„Œï6È™*cf[š—ÇImAÌžëIdM8R«DVUê‚úx×aÊÁ]Ÿ±þ%ܵ>¹UÇüv"¢îjÕiÐS+4ã%⎩ñaoä{Zg=!$Î3åõ1'Éê\ªWä¼sÖ†Ílâ4,N9Ã4¼½þÄ‚;w ½'U‡z~”Š¡+É6ÉÎù¸©õ—õ€ðËÂT‡4çjôA¢ÞŒ Ó[‰ôïqWűd‰¶ÛŸ€¢Kªî1šÒÉ|Ö´øÐÉøKœ-`@XƲœ»Þj”§§¡øð©Öµ„ËÍñšüÀ¨É¯¡žßÒ
#ZVöÏeÁr²lã[cѽ·aײ‡xþѿnÊí"p¯½6Ö8wK +†‚™!Y5ª¬h›Âø +Ü`¹}ÊWÆÖý&_cWs£åÔlÓ¿› +.«þvÐŽ–%u‰ ¯¤’¨]5H4Øe"›ƒhQ‰‰ôM“ªRM-D>í¡)rüˆ(Ëê©è¥ÔYÇ9ÓQHŽÝ\(] +Öð5,(x J)ÜÀÞÁg0ý{wýçêŒx” +Ô&‘#àfîÉ×kBq‚ÂõÅ{à1æˆè#žwKH×\’Ëœ!w[‰‹Ë)ƒ?q[ø,YçÔYÿª²‡¶Ë•:Žè“tG½3èÔ*þmèÊžÜ`m +(¯-üü2ÉòFM:ãM¨sv¶Ä÷Ðv"¥}kædJî +×cºŸËã+DoÇ–ãÉ)ýe¯¶ôŒã¢—WÖ™eBdeìºf|íö˜-Œ‹Zw4Vçvž&Ê=®ýÂ¥H‡,d|Làâ3N‹'¹²,šK°#L„Ô]øm³)n-@Ü´¬N&…¬$ÿÈçÃíKðt|]Øl‡¢ËJ>h– +’9„©²Í¦i=ÿ¨nuþò©'x¾N»˜4Õ07<±–¹ûIíÓî†ÏÕ=Î)iÇN{à$dQñãTË0¿§h¹kÝçµùÚÒ9äóÌèÍï ¢ËG¢$éðf+vHÀÑ:ÓÝ&îûAoÐ `ž®³DGO?Ìd¨Î3ìŒ+Â̪Y¢ì'Y"-¨öíG3qŸZê…[|i<B‡{5mäši’ù%ù— DqërŒh¤c碫Z´BÁGE y"Ïž·Ü‰ü¼ tu¦…³´Ü¸ŒHþ›Zó-%bˆ9S‚®;…þŠG‹ŽÄÇ0¢æÑP±TôÕ••¿|P(×ïVŽ38áôQülõâóüý÷}ΦPÔÃsM’È6¢±dRŒ<ÅBq´—áHW¡°XŽ0ÌQðê5e8ç tKÌÂÔ«UÑ\XîH£WƘŽ+úe@Ã\
+~º8Çùˆê¬ä{„W<:î9ëÏaùÉ +–YæikQ9èúÞÍ…¬Ar¢$sCK¡¬+ÏHbwó¯n‘aÉ çÀ$.Š_ºœ0‡âÐ~jîI²Øˆ!<Ù3<í˜mÐ×µø}ãuÂgü>øb£HÇß·¿lè t#æh'¯¶ßk‘¿ +ÎòÑÁÌûøjTL, +gRH`\Âê‡%Aþ‚¸ÿ•LTa†ø¤6T:ùQè^·.¸Ê´DYAž£µ$À<ô{ÃiçŠKl¿XæŠÔÄ%ã»<ºr£²‰ÉÇI§ßðÒ÷®ó¥©XX;|¨‰êbuÊ X‡jÂÕX£Ô†ØÒïI7Ù¡™
G;³*‡Òe÷ŽnInî‚(¿æ2ÞÅ¡æbE§4!0{šÕ?ÞñŠ”’nô0g™²ä}»O4,ä]Èhö3g"l˜\¡Ì±Óp•Í»6²Z“šÿêŠ/¦¶ƒûeÝ$³®"tÕ¤È:ôƒòõ
‰›îxÿœŒ¥?Àh[MND.ÇðL7|SɶtÑð„ö&øyDZÌû*Gmpr8\UÛ¬gTÀX +h†“Ì]õ5ˆ%?»â'º˜M¾×ž/•[C2°‹ð}j…Ž.ˆ&•µ7ˆˆÁõÖ
ÿ‰r¸‰*½Æ¡rsC¥‡Áà¼qãl§ž_€Ôv¿vwŒSX~K™Ê” Ç›¸´5"_¢»åzW‰8LB‡ôÚÄš+H*Ƃ߯@K„/ë·Á)¹²%Í%]Üå–=È«V,è
{«RW‚:ik>•HŸSTÇÿÉ%6vô¾ö\áñ-R•@BêÔ“fÊø²øÕUrÇ–÷ëSv¾]õáåG:ƉÐì%* +ÖäJ¶$÷AB:{~PŒ|ˆÊ
©¸/N˜¼wéàý‰ØaÊ9ÕÒ”®òM_u*u~0Ã׊éào‰èX0Êr‡ÖÁÙqh[ýl½®ØÑîáÃe7æMà€;æ,—"íFóTIû ¹²ÐŽ÷_â05#¸.cœY‰]j˜ª:Ç¿ùö:Qqæ!å½¾iÀÁÈéo‹¡¾{£6jÆÑõ({öû^ÁèéWÝ{ƒHÈ%ŒéK!zþox
µ˜˜¦°ÖûˆÄll¡Y:Ðÿ3ìvz6G0†Ç&QÚ äŠ«‚n‚}uãaI#߃y>g—/¨`.n+/Ð^q›‰t*+ˆâõa+uF¼ý} ˜Ž¥ï>à£jŽÄ˜;â¤ÏLUáÀ˜ÍPÒ¬ü“žÖkm",Á(\~éGP»Oªt[‚ÜŽŽ6nxf³lTÆíØH'ºSÍõw<²qs)‘‘Ç~*Ún¥
ÑBëRËÏ++¥È›!®)™øÄ•™þîêñþœCåaIyÃγ<–äxßsG²)¬•¢×®8zÅJäó`ãn©ÌsÌ™æEHœX-zoè=O!å™B?Êóíwö» +†»·=z/¢ÇCï¥ä‡`RðÏ!¤Ù·)žíú!Œ·zÍáí;LZ|FÕGì%«¯ˆÅÖ¤H6}+8ã¹ðú¸°ÐÀÑ/Žë)díˆz°W‚úXƒX¶¾m«Ø½•„»ù5gR›žF¹{‚$³*ú)u\=(Ñ-‚"Ð…÷±,â¢|]ǹý?9¿YÐOØ[L‹&ãÀŸrS*AØfši +t)ÌXN9¥D±z¤‰-D0Œ8àª;ÁEÎ+p“ùhJ½:–Éîföâ}©PýSücd?àó <ÌÈ“|Šˆîç}®rw‚RÕ:Í$å·=„~mÉ]]˜RòöÖ„½®íX((—€¶Ä?Éž¸‹e»¿èœ¬ÛXÄ +ܯ*˜Œù¢V}ÒD¦ÿôð£ÎÈ +}ˆ2àq=G/¦8õ1ÝüÍ/]Z?ó{P>yêU•œµú}éÇ2&@žÊå6Þä¡þ;TÆ +Ý‚Æo +©õŠÊ§üyž+¾û™’i†2£]Þá•\÷¤Mçó:µš•wbÕ‘…Ùˆ×hg¢Iµ#ŒºÛà@ïuJ*³É<¸S!ÙÖdNPÂD )×cÅkø2æòò›b«ë +JÎtŒ.a½AöB¿×n
8b¦”w»VŽn$øÍé)4Üú¤÷VçËÌŒµµèN‰R£ëÐŪ—Ãÿ×>Y¶5(QD‰!%ÝHîfà¨Ñ9º‘n i’"]Ò-Ý1ºKÝݵ÷þ‡÷Û}îùçÃyžã•”4|œ"ïñ`Ûý]_€ßÿ¼Ý²í\£$«:ê¯{¶F†Æ»lìÏ3¢?ÑL$G@Öóå×vmôãŠ#Žª×°tή4ËFIñê\é±¹†òã–ÊcLÏBÙðn¶²e™i¤ÿs;<¶ ¼ÿñÏ7JŸ¨ie/þ5÷“FàEZUuç!í¯îðœJMþ•³ŽôÓ }Ëß–~¸ +Âòé€z{JE‰FªM Û„u–æG0iž³ÍÀ†^µYkúzþ'ôÍòH¬n“È([ÒKFR}ÿ^÷ôdk +±5b$ßì}Cd%#vﱓ*š°ßÉ
‘ú°»¥8hñÀÜ_Œ»Ð7¥U½2f +b›oÒm÷ãÅY…½jãnQŒ˜fýÊm½ªm&*þ8”Èç1|ñ˜a¬~– F‘«•¢ûÎòXQ;(_ÆSI0ü+p˜ý&á¸$BF +ý1ì_v#ZâÍ,µgªìVØ +*‹š@i‰úû¿ž8ëäCî3luRŽn£ÒsbX‰É ýÚNã0Lb£?yrK—Søƒ=ÕˆáÜá@Æ žÀlþ
¦Ã<˜'•AÅ87gñU˜ +Üxäø›Š•XGŠyº'üá9vµ,Õ½OÓà¬KÏýØIC`”¿¸9Âò§é¸ˆßcZ”Âh.RÕŒI8¬_$òfIKmÌXró–€àÇêŸ%Ŭg”ÆÂüˆßY'ºVR, ¨B~
ÐÔAQäϲ¯u£s¢€Ý_˜Œ\@øt-ò©Ÿ’>ö‡Q÷FÉÎUŽ«l$Ô.ËW(¦8*³Ÿ{>B7@-7쑘ôy™Ù7º!„³¶QèÌL}*Ÿ$‚WVÉÉ®š±Èñ×´//2ZA$¼§¥ªb;>~T6EÕ<Õ¿¿Vj3ps[‡Ú[ë#.JìñåY¯ª0ûì©'™„±ŸµQÖ8}Q¥ÞÒš½.HÒý¤ñ‘õ$=¨â¯oñöaZ]‹#6ž/¿¦Ðô¹e¸ÞZ‹ÇM{ªh=Hp¿œ¦-Õôš£åežÂúz‚€ÛÆ«ì(Onû÷söQY²æ‰Ï&¡I(Ja]U›-fø´Û[ˆÿÞóݦ6vº%š.[Íá§KpyJÖˆàêh2nösjJ,©VŽ&EͯU¨•x9øW+0éOžÜX‰3„\ +‚¾¡ÉzŒ:s[+ž:[´‚r7À«_ó熈ÑFÂ2Õ:¨Ù˜-Aè +œÆâOŒ,Eß÷;XM«âU†æüìeçÎ&¾¸cë2“.D£T«h8&Ëe7nV"ÎCøpÁ¨Ö#}&_ot-ç2ÃæXL¦ºŠðï"’‚Áf&Ñ탔w¤éʼŽE9Ãê¶Y|t\dà=_©Ÿiµª¯9ÅÝU5½<}âoCʬe±É·mQJ_”–õx-ºDïä»3¦Ÿëï"‚_ +{8þFÑÇæ–éì é–sEcø ôc/
¥Xne£ß Ip’XÌ,X§x©oÞC§C7}yñ8㟑KÓ•F<Ø—¶cÚùc§>É÷"ÊåæÔYxVì#³í³9y«bTjýé‰NÜáù„…ªjŽ\«WÍX!Ì[Ê뺧b'ÞŒÆ)<$1ôÊÚ[,ৠƒ@ŽWÃc3/—°WnY"¬Æ4áé[_Šüå–#xÎöf3I¹[V¦;ñ²è2f’a_ÏãX;q)ö&Öö4FØ…È÷Ÿ +=X¤9ƒ:Ø•ñÒ +†*Nñ(ßc“À“ +ÎQÓp/6è~ +ê™ã2ú»‚îY$óµÉ•ßª2^IÑPYm3ïÜÚ×Juý¼=ÕùÌ~9Äÿ 2©”pmPkDÉ Ç¥)DcX¨Ù콘ûk*+ÇMCÆ{Ù´~͵)²è5¿¯ÅL|yÿ1ª5u‡Êëñ÷Òc9„ÍrU¶óBDøò3TyÈ嘙 SzH1ß+`Îð¶+§`½°W5Ó㎎²ÁÑÃiÁ™,÷ò}cýö3!§ïÒƒŒ‘PuaÛ›”Ë tòÍ|T\ÅL,pÈBHðì9çÑô)8H-úäjj*ê=êOŽ +Œ†<\a/r¼ˆvÈxµfíÉCvP€ÕóuóföÈy§Åm4ÍÛÆajùlW¤JÕ4pñûZ¢Aÿ6Ñ®–B][¢µš×´B©®¦Ö +åUÔwUMõ»gÕ"& +C•Á&ûA×"4ÂÌ]iÅÎ|,›ž(mÍ…pêÖ.‰ý³oRŽÕ]¸kŽ¬¢PÖ¡ZÛZŒŽT2Ê©‚pC¯–dô.Rn®f™7£žØærðk®–-!OõŽž1t¿9~‚ó–‰æ·q¼mxYæó”9gK’}ÃÜÕè×å HéÏAf™\pCÊˬM‚._óBâÚjq
À¶]qL÷‡Âa¯¡n—ˆ›´¢('â¥&Cvpñf–¿‡OFÙ2ö +# ð:øF(‰¥YäsäLèÆùxÂJßÓ%ÌgæÂîˆñe:‡¯#0®ÿëÊ»3¯‡óíLM¤\“wŒgßRkHäŽÅ_KØwÓªÂìni–ŠØ±
¨wŠlNþjsßÑ8v<o¸ÞâÖ²ãU8^ë|Wš +ÆúÁÿ%ž†ëÿ öÿÿsK¨«»³#ÔÕûÿ endobj 1161 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 2 /LastChar 151 -/Widths 2741 0 R -/BaseFont /APNYSM+URWPalladioL-Ital +/Widths 2749 0 R +/BaseFont /JHLZNM+URWPalladioL-Ital /FontDescriptor 1159 0 R >> endobj 1159 0 obj << /Ascent 722 /CapHeight 693 /Descent -261 -/FontName /APNYSM+URWPalladioL-Ital +/FontName /JHLZNM+URWPalladioL-Ital /ItalicAngle -9.5 /StemV 78 /XHeight 482 @@ -14033,7 +14013,7 @@ endobj /CharSet (/fi/fl/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/emdash) /FontFile 1160 0 R >> endobj -2741 0 obj +2749 0 obj [528 545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 0 0 0 0 0 0 722 611 667 778 611 556 722 778 333 0 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 0 0 0 0 0 0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 ] endobj 1025 0 obj << @@ -14049,7 +14029,7 @@ xÚ¬¹eTœm“-Œ»kðÆÝ‚{pw×Æ¥qwwwBpwwwwn‚÷/Ïûž™9kÎùu¾ùÕ÷U»jW]µë®^½š’TI•QÄÌÁÄ\ÒÁÄÈ R ššÛ»˜Ó,œ¶ÿ> üfîajîøÄ -hjcÿOó9ÿ
™Û›ý÷úÿÊô¯ê™U4´t$¥èÿ½Ê¨jûw¾Y¹¸ÿ¡ôw@jžŽæ€ÿ•NSÞÁì?ÿð‰Š:x +hjcÿOó9ÿ
™Û›ý÷úÿÊô¯ê™ÕµDeéÿ½Ê¨jûw¾Y¹¸ÿ¡ôw@jžŽæ€ÿ•NSÞÁì?ÿð‰Š:x 2¶7û;nÿiø6uuvþ«ò¿6ÀßëÿÇù_ƒonîanŠ°¾â`Êb‘ ªÃÍ™×èc… u,mT+*¨qèõψØå4z«
ejšáûh÷\>s|?üFw4Ö‡cKÝ›f~ùЗœ¶¿ý'U'7ýQ³A)ræ¹fŒ÷Õ’Ü”‹ÆÑÞ”²ŠAÉÑL'»3ÜÕ#m ‰ªV¶ý^]n?É÷oŠ üÐìæÇÕQÿÑŠ´Këñ¯0AÙ¬ŒÚ#Ûõ½ü¶Sz_“Ò¶Âæ°Â¯£Z¬4¦×âÚpj~¿H]c}jÇyŒ{ì|yz0Òä$·‘×ù³›'È úKåWµ0wïèåóä»÷ ¦¤†®ßëÓôäNg@«ÔËfR~7øX3X¯§º<†ž‡:;D݇Y‹’‡±ÇƲ ¾qv"©Î.嶱8Á[Ö†¸gÛyŽ ‡Ø @@ -14103,23 +14083,23 @@ T S!õ\¶ZãÒJ)¡#¢:sÌæÀŽ_îR·è¢#Ô¦Bò êOqÚô¡9U¤$Ö=6Ððü|Hò‹°s%nS,{¨üˆ&õÊ’—8$²cå’6¿p[Žx7íj£\k@?®ð¶"Ü<4s=3Ña½BÚ_Z¼–âç0h^×IÓ¡gÀDFÌû"O,v}V%t ïæûüH¦¼¯¸Êi¹ò¢Œ Vº<3ÿiúü`+zв±ƒõ¤âBy¿e5m¨á^[ÄyaS©aŠ€()ÞŸíÆÜ=7w3ÔV³Md& ðÑÈå’½Teöä´þe¢QŽh¬õäØîαÿ”øg´>»6¹”¼g´(>\PóÔkºßo†‘vÝ8‹¥‡HZR¯±˜(rÔs•Ì7R¶s×»LíªøŠæüz!ÁÈ
U[–Õ²69§QŽƒ.[¿’6çÏhüS—Wse®÷±dßbfïyîI‡dÁFbNþ%ÕgÔÆGœ¢,bœrü(šÙÂ%+'‹
Òl£g"îuªrC`Wro¦1€5ÇCÈ…çpû¶šÍÄ]sG¹ÑOnäàrqœìZI=…M}…)äCQÊ~ ê!µŸ¾Dz9·%eÞ!û©ÆÁ”,Ý,>׿¿âb‰lGûrs
RøV0'uV·ƒÔ)É ²;^%!#úㆹå"à÷È“µ‚i4Í p#Öo·¤_Œä%±!¥Óæ`…(`¢ix¸ü={Pìr{[£3þÝɶ*\ÔvµvÈÆe~0{zŠJ"É®Ñc µÄÀ‹í_~ …U¢÷íýwõœÅ6o¸JÚè¨OÊÿ7E®Õ?ÿm]~»úàD¾?œñŽ¹,à¾$ôƒc2‹™‹ãé¸æß‹M|&ìšp{³×Ó\Ì «e
•Œ¤·Æý:®s”CrªÞr±[G^…_x[´?ÒØæå'®Öܬž¥Škv5‰GlŸë½º>QÄè5ó†…¼~šÒÙŽÝÙvnÂ|*ÑÐaòÝ¥ÉÿÞ^á=tønÚÖ•_ÎïxPðdòùCß•bRæwWbgÖJ?~årοþC¬[BýädƯ{ñ h§úÍwÓ‰Ï'}2~Ñ]Ø6å°âÙŒ9û²&ÜÔîNÖñûö¡î±`luî‹)G2O=ßùEßCùä”Õùù[ -¹ÓÏ™wŸ˜sìÇÆâ@•»¯M·åöMXvºóEÿÿu9~Û¤k²¹¶…꼪?yÉg“º”òÌÜ{ç;OÛ«YŸ$3iÕæ#ÛÏn•8²oväóŽ7¯ã}ËÏëÕýÜá?÷þ¹ësÿ„æÕäÈ©Ù÷pö.Õ`¹fýO©a›K<ÛNîêè=|ˆuÖïD©â¹µßýÝ^Ú(šDªM?T¹CÂxÝ;)ñ´g¥ÙENÓ/Û¾}õ%×ÊÛJ®Q†…É9©‰E%ù¹‰EÙ\ +¹ÓÏ™wŸ˜sìÇÆâ@•»¯M·åöMXvºóEÿÿu9~Û¤k²¹¶…꼪?yÉg“º”òÌÜ{ç;OÛ«YŸ$3iÕæ#ÛÏn•8²oväóŽ7¯ã}ËÏëÕýÜá?÷þ¹ësÿ„æÕäÈ©Ù÷pö.Õ`¹fýO©a›K<ÛNîêè=|ˆuÖïD©â¹µßýÝ^Ú(šDªM?T¹CÂxÝ;)ñ´g¥ÙENÓ/Û¾}õ%×ÊÛJ®Q†…É9©‰E%ù¹‰EÙ\ endobj 1026 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 35 /LastChar 90 -/Widths 2742 0 R -/BaseFont /RVXZFG+URWPalladioL-Roma-Slant_167 +/Widths 2750 0 R +/BaseFont /UXBIOO+URWPalladioL-Roma-Slant_167 /FontDescriptor 1024 0 R >> endobj 1024 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /RVXZFG+URWPalladioL-Roma-Slant_167 +/FontName /UXBIOO+URWPalladioL-Roma-Slant_167 /ItalicAngle -9 /StemV 84 /XHeight 469 @@ -14128,43 +14108,39 @@ endobj /CharSet (/numbersign/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/X/Y/Z) /FontFile 1025 0 R >> endobj -2742 0 obj +2750 0 obj [500 0 0 0 0 333 333 0 0 250 333 250 0 500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 0 667 667 667 ] endobj 963 0 obj << /Length1 862 /Length2 1251 /Length3 532 -/Length 1861 +/Length 1860 /Filter /FlateDecode >> stream -xÚíUkTgnõJÀ+Õ€€¸T -æ2¼%X4-@TPLuH&H20I0rY bQDƒ -UQ ÒJi½ - VÀh,, â@HøJ Iä8Ò”#–\ˆ -pÃL~`ˆ\ª°G -B°½`ÌÉÃÔÌæþ*©4’MµŸNé/<$“H5oˆ,Z¥„Q À¨|¦4~m.HT²™,K I%|†\$…èE${R_…¿D
8%_!©žÆa¹`¦,¾i#$nÐÖm®Ç›¹N“H"WnÒDà -ña),ü3ìù~=ôw¸7†Cè; -)¤OÃ
ŽÉDÔñŠ@ðñÆ~½šðoB¾ -Ea¹rúlbñ¿…ld0¬†ù¸Îv„ï›™W±»4ñ³S׿ÿ€dõ¬©ÌÜiÙV•˜/$p©Ç‚EÊ¢þBã…ý:|”Áîs¾ï![ô¼}fо/GOÚž¹q¢$ì@2µžØÁÅkR3´s^z¬ègéb¶.øÚè@¯GïýfùÊÎÑåIM6Ç&æ¶Su=íÖÝCº»,¡už¶ì~1^Óý°uÙpURÞåÕü¡k·X¼Â?c…A¸Æ:b€ã c
à>FãM“q—`r>{_}¸ú‘Ó—t×'zn‰z,#Ñ!þ÷«Ñ–ø{2Ǿb[áꘗº¯ëÒ.IYÉꜛî{ŠŸ/iòÒ~$"÷xÎ:ÛWeßù`óÏå`ú+“å’âħ%PTAe®ÓúGq1ßÕ¬žØŒÏL ~Qqxëã¢u{Í"ÐvíÍN¿¬gÇ‚Z,2(ªãÚ*ñþ¾wЫ¥ýú†¢ûɲ÷lì¿ý*˜W‰ËdCþ/-2{{ö^Š¦X¹hÛhŽ+¾Üòœ5»d®â¤ÛbÅɳɩôÛ»Àò+mà]Ó`æöœDÖ0+cQ®èb -Œ#'û”»7,ÔV/ê¨<ªÕuÙ8YÞ6ˆ[dpÖ–)wJ„G¬Ç³öerxAÁa_X$moÈKã±yOÌ殧¥‹‘£«–¦„šw³öëŸõyŒ(¹Öô³mEaé+4ðÙÚ5^c–Œ’£óM,’Ó|…vfS›øøîlqÜÈžc¿¹<Kêùcø»…'" ?ƻ߲@®nÌKê´?X,~bdWûV;9;}ii‘±¸5¨6Ù8çþŠçÎÖmïRœb’ìˆpæXزK´ç}SRdfqÀRÊ‹¬ö¨¡¨œ–FåzGêÇœLpNç²Uë‡?´>WÒwhÕfŠ»Jÿmå&Áλ£›¿ÊÚò¤…i—ûQÔ?lÇÃÌÏcò&wôš÷šØÚ.Ý9ÜûùuêïeüíNÑpÌüü‹WuuD‚~Hûê oªa×½a㥲˪Ú+¾+´$ã5Êæ”#áEy¡g~0³5üó&·åõuÕ“é;{/¢¡›†ò铨ð±ÿ`©ïpYQ8ýSîÆ_“¨JáAÆÓ_‘^¥¶?µ¨Ö«‹C™åé#£'ô¯–q4ßa÷,ÒNx¸3)sT@†ÏºÛ«Ö'Nÿ®öiœ7jH÷± ÕùáÜ?´yôÓ†u/Åù÷ZħëzO0ñ©óÂo™f™Ì‡£é·t¼ÒbõñŒÓ¿=nLß=»4ÿÎ¥ºÒµ[òX
ÜÆ{´½Æ럧º™¾É*ç¸Ìv*ìzq²`.ï-4t@R®,#ôÓùCŸžH©m‰átO´©rjsSr‚tçãÈY‹Â0½—M ¾°#þœ¢}çØTYË»þ÷=kvµÍ»qÞSs\;`šoÙeo{£Õ¿¸ßVÿ¢J°®ñZÿšÈ;Œ‹Vªi“åO/´Ûêy a[hÞ>Ë1¯©ˆsÎ>Þ`{ÁJ;‡yÙŽHBi8>º~ÿzo|Yp÷àH6‘_¿%3<ÅŸrþá븦¾ð¹1ý?w5Ú™ª«wnmÛšà2ѬN?bY¸º¹°m6ûë`×çÌ€#·'tV³ÓJ-‘5^hÒVUGBvˆE§V\0wggn©ð=òøàþßà¢vuC¨‘Ahî_EÖþ}endstream +xÚíUkTgnõJÀ+Å€€¸ +æ2%(Ë©É„’LP.(‚€`P¡r¨´RZ/Àåb°¢à©¡ 7‚ V®º¢î +°ÀL~`Ùˆ °aŽä†`{Á˜“ÿ†©åÍ%|¾$Xh¿˜Ò_xHÀãG¾U ‚0‰FW„
£ÂåR_xÉœ+ÌæIËY¦âóXŽÂ`>@"ÙšºDðDÎ<)Ìöà‰Y\€ñEð"ÙË`ñ-!íscøìÞmõv®‹¤ÄŠ÷G†Á +ø“‰d2ˆ ±÷ÝWÀ²ÍvY›'(T[ +4ËϬU1HNû
†ß…ý]ÜÂälnÔTêÙßL_Ä
þ1ùÝú¢ÂÑ–CÈͽÙ3q#®'ʸϔîuöÕeÆ&Ä^»qZROHΕ%µ+W=Áß°ì<´÷>Å8<.ëHø˜‰‡†®{¹ì²½vB‚@ÍuÙDy•Ù:šóÏJÅ´°Õˆú©G¸ªwó¶]“k_*ð9¹íG5ÅRÒúmÍ~vàýéjŸ
o2<ë`èç~úÝY?õËð¼ù#Ãêc*wYŸüîÃüFé÷‚?þ6T:¾6ÿêMùU9Ñ™Ð:ÑڳȖª8ú`Ryòú˜¤á†½¹Œ¤¼EñI8Åö/Íó½ðƒÚ=’uYeñ¨ª©±§n>%pPô*º«¨ú”>rž:WØOV–úÓ?÷ÞûkUÌ9áøü—“¤7‰ÝÏ5êZ¥Fe¾Œª”©éÖ7›=²Ú‡ÜõdsV–Jõ*ÉÞff·³ßpÛ.ÎÜùߥv-kÆ}‰Ñv:^ÁN8Ëužüt§yçknþÓcÑ)òá">qÿ=Õ +•ú”Qýž< bŒXW˜vþW·…Ê”äùˆMùC×+vÈc6{·< [7Ûô2ÑBõMf•‡éJãâ¾W%• endobj 964 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2743 0 R +/Encoding 2751 0 R /FirstChar 13 /LastChar 110 -/Widths 2744 0 R -/BaseFont /SNYZAS+CMSY10 +/Widths 2752 0 R +/BaseFont /JNBUEE+CMSY10 /FontDescriptor 962 0 R >> endobj 962 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 -/FontName /SNYZAS+CMSY10 +/FontName /JNBUEE+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 @@ -14173,10 +14149,10 @@ endobj /CharSet (/circlecopyrt/bullet/braceleft/braceright/bar/backslash) /FontFile 963 0 R >> endobj -2744 0 obj +2752 0 obj [1000 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 278 0 0 0 500 ] endobj -2743 0 obj << +2751 0 obj << /Type /Encoding /Differences [ 0 /.notdef 13/circlecopyrt 14/.notdef 15/bullet 16/.notdef 102/braceleft/braceright 104/.notdef 106/bar 107/.notdef 110/backslash 111/.notdef] >> endobj @@ -14188,7 +14164,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬ºc”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶»lW—mÛúú}ïܹ³î̯ùæG®õœˆ8;vÄ>'Öz2“„@^‰FÀØÎÐDÔÎÖ‰†–ž ¢¨&o`mm`la'M£hgc +xÚ¬ºc”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶»lW—mÛúú}ïܹ³î̯ùæG®õœˆ8;vÄ>'Öz2“„@^‰FÀØÎÐDÔÎÖ‰†–ž ¢¨&o`mm`la'M£hgc áàUûZRRŽ_&½þ’ÞŸfx¯%Ê3® ôEþsÈC®”ô“‘Bå0²TU’?…šÜ¡ˆhÍÒVùòýåm»TúÃ8Z§ä‚Û°ý ³:I?Ôöz"6›Èbœ^% yá×h}×¹Z ypÓ‚u=jëé 3\xœa(74nŠïRýƒ&cx£aYKÜ¿‰~ػբÉI·XiêS¨“2ø ú›G²¨†lkÕ›$ñé³øIñƒ<½*;:̽¤PœT1]š«ÚowŽ0~,A¸ÕO˜Ó%/‡ìdccÅ÷‹k×{GKÌ‘›j™(+ÔBUÞD#¡6ª:Mð%¿s¾†I¼;v#wïRUèB&%Ô øªÕ(cÊïZB™ª³/7í¿'|8¾—}Z£6Ã*DLi´¯kâ'/rn¶èXÐ60µ!~Èaïގا*\Dxc(uè³?^NWù±CVØñ Áá´ÅÚQ[´¬5üŠvȈ0Kïø^•vµÚ*V¦°cœ
(p3“¸µMÖiÒ|#Óƒ}5ãByE¦Ç•yÖÌÞ¢º<^×<;>3ý ÎÈ;V<g5j‡ùôIH›C„ÿæaTÓ€ @@ -14291,23 +14267,23 @@ PÔ3)lmŒ;œ¸—ü“5|—î”+ÀTÅv‰¼Ô_òF^›bQãLT?yÇ¥ðb²èewïA© !ÅdYò]mÝÏÈÍ[Ÿ ‡)Í1p’}l‹ÈÙ¤û¨¯šð1ônQ“Öü:”ƒ‘96êì(…+õƒ<“4Ã7Q|ÿF1°²¨üñ#\õl1ï,äÝ?7Âeì7®Œ½nØ<É„3ÄÓ›rhNBRòÂÑC ^[ÜÀ!ÄŠxMcOÝ—ÙPFt>l¿‹JF¢‡ßÂöð1’£†°åïxDÑv hÇÚ ¥åã—r¢fY—òU·zifÁUÆz*JfU¤ËÞ ½ýä|ÿ:Ð(Pk<’¥WÝìo*Á]ö…gP³Šþ,ÚFjî¶%™;ɘ¹á9L9.DœÇǦÝ@sOµhòÚ³BãtÑsÒ~ˆ®›×)-ÉA -ÇГöÞVMýͲ:“®³m›ÓWBÖþü/ùÁÿ ±©¡“‹½¡“5Ìÿ +ÇГöÞVMýͲ:“®³m›ÓWBÖþü/ùÁÿ ±©¡“‹½¡“5Ìÿ endobj 961 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 2 /LastChar 216 -/Widths 2745 0 R -/BaseFont /KNFIKS+URWPalladioL-Roma +/Widths 2753 0 R +/BaseFont /XZMMFL+URWPalladioL-Roma /FontDescriptor 959 0 R >> endobj 959 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /KNFIKS+URWPalladioL-Roma +/FontName /XZMMFL+URWPalladioL-Roma /ItalicAngle 0 /StemV 84 /XHeight 469 @@ -14316,7 +14292,7 @@ endobj /CharSet (/fi/fl/exclam/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/circumflex/quotedblleft/quotedblright/endash/emdash/Oslash) /FontFile 960 0 R >> endobj -2745 0 obj +2753 0 obj [605 608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 500 500 840 0 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 0 606 0 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 0 333 0 0 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 500 500 0 500 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 ] endobj 937 0 obj << @@ -14327,7 +14303,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬zcteß³mlÛN:¶“ŽmÛö‰mÛN:¶mÛ¶ŽÙq^ÿþWoÜ÷>½w?ì1öªª5kVÍZkœ3Æ&'VP¦4™Šìœé˜è¹‰T•ÔmlM,2tB +xÚ¬zcteß³mlÛN:¶“ŽmÛö‰mÛN:¶mÛ¶ŽÙq^ÿþWoÜ÷>½w?ì1öªª5kVÍZkœ3Æ&'VP¦4™Šìœé˜è¹‰T•ÔmlM,2tB Ѫ&ðëöÜ(ÞÃÇ‘œåRMyû©i¯MH>c¸¤bq›‹bgÜë㤸>·+Zµ‹¥{ü‹q=v¾™«O¼—«Ñ)X!íÁ/$ä±)$§ÁØ^‘w?í¦‘ù]€§“X.2)§©Êer[¤ .©»¹™ ;þÄýI‰ŽBÃA¦¸¯»àÐaÁôÞ®|û³ 5ï8sêÓ† "ŸÍëã-ö .TÞ;”Ïè*Yp§«© ‹ÕÀKÀk"!œÑE¾[OžKA3æTv7‰.ѧü™"ÇS"V™bIÆ@Ζӧ @@ -14430,23 +14406,23 @@ V‘<}6j]'»EVîhû‚}6¡ÝÀ6àÛ·o÷CfÀ¿ièﬕò1e·)(+‚§l¦…ãƒÖˆç\àíÈìk}/y»—ìǸoÕ ¥`M/\oõÛþJXSù6”¿ü'ŽOØLaà¨oÍZNõµáø÷P³¬æ#À«-’·^=èCp§“´ñ»wÓ^»±òž,àìÎ-3à rg‡lÖ:G> ‡û$Ëú*Ï[¾'е5Ø̽þ^¿‚@rG{XÎN3?Ü&Óvj½ìÖfl3OˆÐ¥\á"ÝJ)P\°7À«J&zgT‘š|†ñhÝh^r×X&âhŒç]CŠÒ÷ˆÂú%#ÅŸß’ïçUUÒÙ$ïRDäü¾Rk¤zwŒñã—Z UßD„j%‘{7¹’&LoÅLó´T0‰* -Ë—ÌF+uå| ã_ìŽ'¬gk"¸qáD]² +Ë—ÌF+uå| ã_ìŽ'¬gk"¸qáD]² endobj 938 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2729 0 R +/Encoding 2737 0 R /FirstChar 2 /LastChar 151 -/Widths 2746 0 R -/BaseFont /YHPRZJ+URWPalladioL-Bold +/Widths 2754 0 R +/BaseFont /CUGYHF+URWPalladioL-Bold /FontDescriptor 936 0 R >> endobj 936 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /YHPRZJ+URWPalladioL-Bold +/FontName /CUGYHF+URWPalladioL-Bold /ItalicAngle 0 /StemV 123 /XHeight 471 @@ -14455,237 +14431,237 @@ endobj /CharSet (/fi/fl/exclam/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/question/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblright/emdash) /FontFile 937 0 R >> endobj -2746 0 obj +2754 0 obj [611 611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 500 500 889 0 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 444 747 778 667 722 833 611 556 833 833 389 0 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 0 333 0 0 0 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 1000 ] endobj 939 0 obj << /Type /Pages /Count 6 -/Parent 2747 0 R +/Parent 2755 0 R /Kids [930 0 R 956 0 R 966 0 R 1021 0 R 1085 0 R 1148 0 R] >> endobj 1226 0 obj << /Type /Pages /Count 6 -/Parent 2747 0 R +/Parent 2755 0 R /Kids [1210 0 R 1228 0 R 1240 0 R 1253 0 R 1264 0 R 1271 0 R] >> endobj 1287 0 obj << /Type /Pages /Count 6 -/Parent 2747 0 R +/Parent 2755 0 R /Kids [1283 0 R 1289 0 R 1297 0 R 1306 0 R 1316 0 R 1329 0 R] >> endobj 1337 0 obj << /Type /Pages /Count 6 -/Parent 2747 0 R +/Parent 2755 0 R /Kids [1333 0 R 1340 0 R 1347 0 R 1352 0 R 1373 0 R 1383 0 R] >> endobj 1392 0 obj << /Type /Pages /Count 6 -/Parent 2747 0 R +/Parent 2755 0 R /Kids [1388 0 R 1394 0 R 1399 0 R 1408 0 R 1417 0 R 1424 0 R] >> endobj 1433 0 obj << /Type /Pages /Count 6 -/Parent 2747 0 R +/Parent 2755 0 R /Kids [1430 0 R 1435 0 R 1444 0 R 1458 0 R 1465 0 R 1479 0 R] >> endobj 1489 0 obj << /Type /Pages /Count 6 -/Parent 2748 0 R +/Parent 2756 0 R /Kids [1485 0 R 1491 0 R 1497 0 R 1504 0 R 1512 0 R 1517 0 R] >> endobj 1530 0 obj << /Type /Pages /Count 6 -/Parent 2748 0 R -/Kids [1523 0 R 1533 0 R 1540 0 R 1544 0 R 1554 0 R 1559 0 R] +/Parent 2756 0 R +/Kids [1523 0 R 1533 0 R 1540 0 R 1544 0 R 1554 0 R 1558 0 R] >> endobj 1573 0 obj << /Type /Pages /Count 6 -/Parent 2748 0 R -/Kids [1566 0 R 1575 0 R 1584 0 R 1592 0 R 1603 0 R 1609 0 R] +/Parent 2756 0 R +/Kids [1565 0 R 1575 0 R 1583 0 R 1591 0 R 1603 0 R 1609 0 R] >> endobj 1620 0 obj << /Type /Pages /Count 6 -/Parent 2748 0 R -/Kids [1615 0 R 1622 0 R 1626 0 R 1633 0 R 1641 0 R 1648 0 R] +/Parent 2756 0 R +/Kids [1615 0 R 1622 0 R 1626 0 R 1633 0 R 1638 0 R 1648 0 R] >> endobj 1655 0 obj << /Type /Pages /Count 6 -/Parent 2748 0 R -/Kids [1652 0 R 1657 0 R 1661 0 R 1665 0 R 1671 0 R 1676 0 R] +/Parent 2756 0 R +/Kids [1652 0 R 1657 0 R 1661 0 R 1665 0 R 1669 0 R 1676 0 R] >> endobj -1686 0 obj << +1684 0 obj << /Type /Pages /Count 6 -/Parent 2748 0 R -/Kids [1681 0 R 1688 0 R 1693 0 R 1703 0 R 1707 0 R 1711 0 R] +/Parent 2756 0 R +/Kids [1681 0 R 1686 0 R 1692 0 R 1703 0 R 1707 0 R 1711 0 R] >> endobj 1723 0 obj << /Type /Pages /Count 6 -/Parent 2749 0 R -/Kids [1716 0 R 1726 0 R 1734 0 R 1739 0 R 1743 0 R 1747 0 R] +/Parent 2757 0 R +/Kids [1715 0 R 1726 0 R 1732 0 R 1738 0 R 1743 0 R 1747 0 R] >> endobj -1758 0 obj << +1756 0 obj << /Type /Pages /Count 6 -/Parent 2749 0 R -/Kids [1751 0 R 1760 0 R 1767 0 R 1772 0 R 1779 0 R 1786 0 R] +/Parent 2757 0 R +/Kids [1751 0 R 1758 0 R 1766 0 R 1771 0 R 1779 0 R 1786 0 R] >> endobj 1796 0 obj << /Type /Pages /Count 6 -/Parent 2749 0 R -/Kids [1792 0 R 1799 0 R 1807 0 R 1811 0 R 1816 0 R 1821 0 R] +/Parent 2757 0 R +/Kids [1791 0 R 1799 0 R 1806 0 R 1811 0 R 1815 0 R 1819 0 R] >> endobj -1829 0 obj << +1828 0 obj << /Type /Pages /Count 6 -/Parent 2749 0 R -/Kids [1826 0 R 1831 0 R 1836 0 R 1842 0 R 1851 0 R 1856 0 R] +/Parent 2757 0 R +/Kids [1823 0 R 1830 0 R 1835 0 R 1839 0 R 1844 0 R 1850 0 R] >> endobj -1864 0 obj << +1863 0 obj << /Type /Pages /Count 6 -/Parent 2749 0 R -/Kids [1861 0 R 1866 0 R 1870 0 R 1874 0 R 1882 0 R 1889 0 R] +/Parent 2757 0 R +/Kids [1859 0 R 1865 0 R 1870 0 R 1874 0 R 1878 0 R 1882 0 R] >> endobj -1922 0 obj << +1893 0 obj << /Type /Pages /Count 6 -/Parent 2749 0 R -/Kids [1909 0 R 1924 0 R 1935 0 R 1951 0 R 1957 0 R 1961 0 R] +/Parent 2757 0 R +/Kids [1890 0 R 1895 0 R 1910 0 R 1925 0 R 1937 0 R 1957 0 R] >> endobj -1976 0 obj << +1969 0 obj << /Type /Pages /Count 6 -/Parent 2750 0 R -/Kids [1971 0 R 1978 0 R 1984 0 R 1994 0 R 2006 0 R 2014 0 R] +/Parent 2758 0 R +/Kids [1964 0 R 1971 0 R 1975 0 R 1987 0 R 1991 0 R 2000 0 R] >> endobj -2025 0 obj << +2021 0 obj << /Type /Pages /Count 6 -/Parent 2750 0 R -/Kids [2022 0 R 2027 0 R 2035 0 R 2043 0 R 2055 0 R 2062 0 R] +/Parent 2758 0 R +/Kids [2012 0 R 2023 0 R 2030 0 R 2036 0 R 2043 0 R 2052 0 R] >> endobj -2073 0 obj << +2067 0 obj << /Type /Pages /Count 6 -/Parent 2750 0 R -/Kids [2070 0 R 2075 0 R 2081 0 R 2092 0 R 2096 0 R 2100 0 R] +/Parent 2758 0 R +/Kids [2061 0 R 2069 0 R 2080 0 R 2084 0 R 2090 0 R 2100 0 R] >> endobj -2114 0 obj << +2107 0 obj << /Type /Pages /Count 6 -/Parent 2750 0 R -/Kids [2111 0 R 2116 0 R 2123 0 R 2133 0 R 2192 0 R 2248 0 R] +/Parent 2758 0 R +/Kids [2104 0 R 2109 0 R 2120 0 R 2124 0 R 2131 0 R 2141 0 R] >> endobj -2336 0 obj << +2255 0 obj << /Type /Pages /Count 6 -/Parent 2750 0 R -/Kids [2302 0 R 2338 0 R 2346 0 R 2354 0 R 2361 0 R 2366 0 R] +/Parent 2758 0 R +/Kids [2200 0 R 2257 0 R 2311 0 R 2346 0 R 2354 0 R 2362 0 R] >> endobj -2375 0 obj << +2373 0 obj << /Type /Pages /Count 6 -/Parent 2750 0 R -/Kids [2372 0 R 2377 0 R 2386 0 R 2392 0 R 2397 0 R 2401 0 R] +/Parent 2758 0 R +/Kids [2369 0 R 2375 0 R 2381 0 R 2385 0 R 2394 0 R 2400 0 R] >> endobj -2416 0 obj << +2408 0 obj << /Type /Pages /Count 6 -/Parent 2751 0 R -/Kids [2406 0 R 2418 0 R 2423 0 R 2435 0 R 2444 0 R 2453 0 R] +/Parent 2759 0 R +/Kids [2405 0 R 2410 0 R 2415 0 R 2426 0 R 2431 0 R 2443 0 R] >> endobj -2466 0 obj << +2460 0 obj << /Type /Pages /Count 6 -/Parent 2751 0 R -/Kids [2458 0 R 2468 0 R 2474 0 R 2478 0 R 2484 0 R 2495 0 R] +/Parent 2759 0 R +/Kids [2452 0 R 2462 0 R 2467 0 R 2476 0 R 2482 0 R 2486 0 R] >> endobj -2510 0 obj << +2502 0 obj << /Type /Pages /Count 6 -/Parent 2751 0 R -/Kids [2505 0 R 2512 0 R 2522 0 R 2528 0 R 2532 0 R 2536 0 R] +/Parent 2759 0 R +/Kids [2492 0 R 2504 0 R 2514 0 R 2520 0 R 2530 0 R 2536 0 R] >> endobj -2556 0 obj << +2543 0 obj << /Type /Pages /Count 6 -/Parent 2751 0 R -/Kids [2546 0 R 2558 0 R 2565 0 R 2569 0 R 2581 0 R 2585 0 R] +/Parent 2759 0 R +/Kids [2540 0 R 2545 0 R 2555 0 R 2566 0 R 2573 0 R 2577 0 R] >> endobj -2603 0 obj << +2592 0 obj << /Type /Pages /Count 6 -/Parent 2751 0 R -/Kids [2592 0 R 2605 0 R 2613 0 R 2618 0 R 2622 0 R 2630 0 R] +/Parent 2759 0 R +/Kids [2589 0 R 2594 0 R 2600 0 R 2612 0 R 2621 0 R 2626 0 R] >> endobj -2649 0 obj << +2636 0 obj << /Type /Pages /Count 6 -/Parent 2751 0 R -/Kids [2639 0 R 2651 0 R 2656 0 R 2668 0 R 2674 0 R 2684 0 R] +/Parent 2759 0 R +/Kids [2630 0 R 2638 0 R 2648 0 R 2659 0 R 2664 0 R 2675 0 R] >> endobj -2710 0 obj << +2691 0 obj << /Type /Pages -/Count 3 -/Parent 2752 0 R -/Kids [2698 0 R 2712 0 R 2725 0 R] +/Count 5 +/Parent 2760 0 R +/Kids [2681 0 R 2693 0 R 2705 0 R 2719 0 R 2732 0 R] >> endobj -2747 0 obj << +2755 0 obj << /Type /Pages /Count 36 -/Parent 2753 0 R +/Parent 2761 0 R /Kids [939 0 R 1226 0 R 1287 0 R 1337 0 R 1392 0 R 1433 0 R] >> endobj -2748 0 obj << +2756 0 obj << /Type /Pages /Count 36 -/Parent 2753 0 R -/Kids [1489 0 R 1530 0 R 1573 0 R 1620 0 R 1655 0 R 1686 0 R] +/Parent 2761 0 R +/Kids [1489 0 R 1530 0 R 1573 0 R 1620 0 R 1655 0 R 1684 0 R] >> endobj -2749 0 obj << +2757 0 obj << /Type /Pages /Count 36 -/Parent 2753 0 R -/Kids [1723 0 R 1758 0 R 1796 0 R 1829 0 R 1864 0 R 1922 0 R] +/Parent 2761 0 R +/Kids [1723 0 R 1756 0 R 1796 0 R 1828 0 R 1863 0 R 1893 0 R] >> endobj -2750 0 obj << +2758 0 obj << /Type /Pages /Count 36 -/Parent 2753 0 R -/Kids [1976 0 R 2025 0 R 2073 0 R 2114 0 R 2336 0 R 2375 0 R] +/Parent 2761 0 R +/Kids [1969 0 R 2021 0 R 2067 0 R 2107 0 R 2255 0 R 2373 0 R] >> endobj -2751 0 obj << +2759 0 obj << /Type /Pages /Count 36 -/Parent 2753 0 R -/Kids [2416 0 R 2466 0 R 2510 0 R 2556 0 R 2603 0 R 2649 0 R] +/Parent 2761 0 R +/Kids [2408 0 R 2460 0 R 2502 0 R 2543 0 R 2592 0 R 2636 0 R] >> endobj -2752 0 obj << +2760 0 obj << /Type /Pages -/Count 3 -/Parent 2753 0 R -/Kids [2710 0 R] +/Count 5 +/Parent 2761 0 R +/Kids [2691 0 R] >> endobj -2753 0 obj << +2761 0 obj << /Type /Pages -/Count 183 -/Kids [2747 0 R 2748 0 R 2749 0 R 2750 0 R 2751 0 R 2752 0 R] +/Count 185 +/Kids [2755 0 R 2756 0 R 2757 0 R 2758 0 R 2759 0 R 2760 0 R] >> endobj -2754 0 obj << +2762 0 obj << /Type /Outlines /First 7 0 R /Last 843 0 R @@ -14839,7 +14815,7 @@ endobj 843 0 obj << /Title 844 0 R /A 841 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 751 0 R /First 847 0 R /Last 927 0 R @@ -15005,7 +14981,7 @@ endobj 751 0 obj << /Title 752 0 R /A 749 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 731 0 R /Next 843 0 R /First 755 0 R @@ -15042,7 +15018,7 @@ endobj 731 0 obj << /Title 732 0 R /A 729 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 707 0 R /Next 751 0 R /First 735 0 R @@ -15086,7 +15062,7 @@ endobj 707 0 obj << /Title 708 0 R /A 705 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 363 0 R /Next 731 0 R /First 711 0 R @@ -15701,7 +15677,7 @@ endobj 363 0 obj << /Title 364 0 R /A 361 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 351 0 R /Next 707 0 R /First 367 0 R @@ -15723,7 +15699,7 @@ endobj 351 0 obj << /Title 352 0 R /A 349 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 131 0 R /Next 363 0 R /First 355 0 R @@ -16120,7 +16096,7 @@ endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 91 0 R /Next 351 0 R /First 135 0 R @@ -16194,7 +16170,7 @@ endobj 91 0 obj << /Title 92 0 R /A 89 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 67 0 R /Next 131 0 R /First 95 0 R @@ -16237,7 +16213,7 @@ endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Prev 7 0 R /Next 91 0 R /First 71 0 R @@ -16346,965 +16322,965 @@ endobj 7 0 obj << /Title 8 0 R /A 5 0 R -/Parent 2754 0 R +/Parent 2762 0 R /Next 67 0 R /First 11 0 R /Last 23 0 R /Count -4 >> endobj -2755 0 obj << -/Names [(Access_Control_Lists) 2079 0 R (Bv9ARM.ch01) 1230 0 R (Bv9ARM.ch02) 1274 0 R (Bv9ARM.ch03) 1292 0 R (Bv9ARM.ch04) 1355 0 R (Bv9ARM.ch05) 1536 0 R (Bv9ARM.ch06) 1547 0 R (Bv9ARM.ch07) 2078 0 R (Bv9ARM.ch08) 2103 0 R (Bv9ARM.ch09) 2119 0 R (Bv9ARM.ch10) 2380 0 R (Configuration_File_Grammar) 1570 0 R (DNSSEC) 1421 0 R (Doc-Start) 935 0 R (Setting_TTLs) 1999 0 R (acache) 1281 0 R (access_control) 1721 0 R (acl) 1579 0 R (address_match_lists) 1552 0 R (admin_tools) 1314 0 R (appendix.A) 750 0 R (appendix.B) 842 0 R (bibliography) 2127 0 R (bind9.library) 2335 0 R (boolean_options) 1370 0 R (builtin) 1802 0 R (chapter*.1) 969 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 350 0 R (chapter.6) 362 0 R (chapter.7) 706 0 R (chapter.8) 730 0 R (cite.RFC1033) 2254 0 R (cite.RFC1034) 2139 0 R (cite.RFC1035) 2141 0 R (cite.RFC1101) 2236 0 R (cite.RFC1123) 2238 0 R (cite.RFC1183) 2198 0 R (cite.RFC1464) 2276 0 R (cite.RFC1535) 2184 0 R (cite.RFC1536) 2186 0 R (cite.RFC1537) 2256 0 R (cite.RFC1591) 2240 0 R (cite.RFC1706) 2200 0 R (cite.RFC1712) 2296 0 R (cite.RFC1713) 2278 0 R (cite.RFC1794) 2280 0 R (cite.RFC1876) 2202 0 R (cite.RFC1912) 2258 0 R (cite.RFC1982) 2188 0 R (cite.RFC1995) 2146 0 R (cite.RFC1996) 2148 0 R (cite.RFC2010) 2260 0 R (cite.RFC2052) 2204 0 R (cite.RFC2065) 2308 0 R (cite.RFC2136) 2150 0 R (cite.RFC2137) 2310 0 R (cite.RFC2163) 2206 0 R (cite.RFC2168) 2208 0 R (cite.RFC2181) 2152 0 R (cite.RFC2219) 2262 0 R (cite.RFC2230) 2210 0 R (cite.RFC2240) 2282 0 R (cite.RFC2308) 2154 0 R (cite.RFC2317) 2242 0 R (cite.RFC2345) 2284 0 R (cite.RFC2352) 2286 0 R (cite.RFC2535) 2312 0 R (cite.RFC2536) 2212 0 R (cite.RFC2537) 2214 0 R (cite.RFC2538) 2216 0 R (cite.RFC2539) 2218 0 R (cite.RFC2540) 2220 0 R (cite.RFC2671) 2156 0 R (cite.RFC2672) 2158 0 R (cite.RFC2673) 2298 0 R (cite.RFC2782) 2222 0 R (cite.RFC2825) 2266 0 R (cite.RFC2826) 2244 0 R (cite.RFC2845) 2160 0 R (cite.RFC2874) 2300 0 R (cite.RFC2915) 2224 0 R (cite.RFC2929) 2246 0 R (cite.RFC2930) 2162 0 R (cite.RFC2931) 2164 0 R (cite.RFC3007) 2166 0 R (cite.RFC3008) 2314 0 R (cite.RFC3071) 2288 0 R (cite.RFC3090) 2316 0 R (cite.RFC3110) 2226 0 R (cite.RFC3123) 2228 0 R (cite.RFC3225) 2172 0 R (cite.RFC3258) 2290 0 R (cite.RFC3445) 2318 0 R (cite.RFC3490) 2268 0 R (cite.RFC3491) 2270 0 R (cite.RFC3492) 2272 0 R (cite.RFC3596) 2230 0 R (cite.RFC3597) 2232 0 R (cite.RFC3645) 2168 0 R (cite.RFC3655) 2320 0 R (cite.RFC3658) 2322 0 R (cite.RFC3755) 2324 0 R (cite.RFC3757) 2326 0 R (cite.RFC3833) 2174 0 R (cite.RFC3845) 2328 0 R (cite.RFC3901) 2292 0 R (cite.RFC4033) 2176 0 R (cite.RFC4034) 2178 0 R (cite.RFC4035) 2180 0 R (cite.RFC4074) 2190 0 R (cite.RFC974) 2143 0 R (cite.id2512276) 2333 0 R (clients-per-query) 2053 0 R (configuration_file_elements) 1548 0 R (controls_statement_definition_and_usage) 1338 0 R (diagnostic_tools) 1262 0 R (dnssec.dynamic.zones) 1441 0 R (dynamic_update) 1365 0 R (dynamic_update_policies) 1327 0 R (dynamic_update_security) 1732 0 R (empty) 1804 0 R (historical_dns_information) 2121 0 R (id2466567) 1231 0 R (id2466590) 1232 0 R (id2467233) 1405 0 R (id2467243) 1406 0 R (id2467280) 1411 0 R (id2467337) 1412 0 R (id2467481) 1233 0 R (id2467491) 1234 0 R (id2467731) 1244 0 R (id2467752) 1245 0 R (id2467786) 1246 0 R (id2467870) 1249 0 R (id2467963) 1242 0 R (id2470268) 1256 0 R (id2470292) 1259 0 R (id2470390) 1260 0 R (id2470411) 1261 0 R (id2470441) 1267 0 R (id2470476) 1268 0 R (id2470571) 1269 0 R (id2470605) 1275 0 R (id2470632) 1276 0 R (id2470713) 1277 0 R (id2470739) 1280 0 R (id2470749) 1286 0 R (id2470781) 1294 0 R (id2470797) 1295 0 R (id2470820) 1300 0 R (id2470837) 1301 0 R (id2471242) 1309 0 R (id2471248) 1310 0 R (id2473363) 1343 0 R (id2473374) 1344 0 R (id2473876) 1380 0 R (id2473894) 1386 0 R (id2474464) 1402 0 R (id2474481) 1403 0 R (id2474519) 1404 0 R (id2474896) 1414 0 R (id2474909) 1415 0 R (id2475027) 1420 0 R (id2475163) 1422 0 R (id2475310) 1427 0 R (id2475392) 1428 0 R (id2475612) 1442 0 R (id2475786) 1447 0 R (id2475822) 1448 0 R (id2475905) 1454 0 R (id2475942) 1461 0 R (id2475955) 1462 0 R (id2476056) 1463 0 R (id2476083) 1468 0 R (id2476092) 1469 0 R (id2476170) 1470 0 R (id2476183) 1471 0 R (id2476220) 1472 0 R (id2476230) 1473 0 R (id2476336) 1475 0 R (id2476358) 1482 0 R (id2476528) 1488 0 R (id2476692) 1494 0 R (id2476761) 1495 0 R (id2476878) 1500 0 R (id2477097) 1501 0 R (id2477106) 1502 0 R (id2477138) 1507 0 R (id2477174) 1508 0 R (id2477222) 1509 0 R (id2477253) 1510 0 R (id2477588) 1520 0 R (id2477634) 1521 0 R (id2477825) 1526 0 R (id2477955) 1528 0 R (id2477976) 1529 0 R (id2478009) 1537 0 R (id2478225) 1549 0 R (id2479049) 1557 0 R (id2479077) 1562 0 R (id2479351) 1563 0 R (id2479366) 1564 0 R (id2479396) 1569 0 R (id2479539) 1571 0 R (id2480073) 1578 0 R (id2480116) 1580 0 R (id2480263) 1582 0 R (id2480622) 1589 0 R (id2480640) 1595 0 R (id2480663) 1596 0 R (id2480686) 1597 0 R (id2480845) 1601 0 R (id2480971) 1606 0 R (id2481024) 1607 0 R (id2481649) 1618 0 R (id2482477) 1629 0 R (id2482539) 1630 0 R (id2482997) 1636 0 R (id2483070) 1637 0 R (id2483134) 1644 0 R (id2483178) 1645 0 R (id2483193) 1646 0 R (id2486510) 1684 0 R (id2488830) 1714 0 R (id2488957) 1720 0 R (id2489509) 1731 0 R (id2490718) 1754 0 R (id2490778) 1756 0 R (id2491132) 1765 0 R (id2491703) 1783 0 R (id2493307) 1814 0 R (id2493498) 1824 0 R (id2494690) 1846 0 R (id2494829) 1848 0 R (id2494876) 1854 0 R (id2495234) 1859 0 R (id2496921) 1877 0 R (id2496929) 1878 0 R (id2496934) 1879 0 R (id2497474) 1886 0 R (id2497507) 1892 0 R (id2499730) 1954 0 R (id2500393) 1964 0 R (id2500480) 1965 0 R (id2500500) 1968 0 R (id2500668) 1974 0 R (id2501838) 1981 0 R (id2501966) 1987 0 R (id2502056) 1988 0 R (id2502419) 1990 0 R (id2502555) 1992 0 R (id2502573) 1997 0 R (id2503114) 2000 0 R (id2503239) 2002 0 R (id2503254) 2003 0 R (id2503366) 2009 0 R (id2503388) 2010 0 R (id2503404) 2011 0 R (id2503465) 2012 0 R (id2503534) 2017 0 R (id2503571) 2018 0 R (id2503646) 2019 0 R (id2504226) 2031 0 R (id2504661) 2039 0 R (id2504666) 2040 0 R (id2506134) 2047 0 R (id2506140) 2048 0 R (id2506517) 2050 0 R (id2506522) 2051 0 R (id2507607) 2058 0 R (id2507639) 2059 0 R (id2508049) 2068 0 R (id2508222) 2088 0 R (id2508372) 2089 0 R (id2508432) 2090 0 R (id2508512) 2104 0 R (id2508517) 2105 0 R (id2508529) 2106 0 R (id2508546) 2107 0 R (id2508744) 2120 0 R (id2509052) 2126 0 R (id2509172) 2131 0 R (id2509174) 2137 0 R (id2509182) 2142 0 R (id2509206) 2138 0 R (id2509298) 2140 0 R (id2509334) 2151 0 R (id2509361) 2153 0 R (id2509386) 2145 0 R (id2509411) 2147 0 R (id2509434) 2149 0 R (id2509490) 2155 0 R (id2509516) 2157 0 R (id2509543) 2159 0 R (id2509605) 2161 0 R (id2509635) 2163 0 R (id2509665) 2165 0 R (id2509691) 2167 0 R (id2509766) 2170 0 R (id2509773) 2171 0 R (id2509800) 2173 0 R (id2509836) 2175 0 R (id2509901) 2177 0 R (id2510035) 2179 0 R (id2510100) 2182 0 R (id2510108) 2183 0 R (id2510134) 2185 0 R (id2510202) 2187 0 R (id2510237) 2189 0 R (id2510278) 2196 0 R (id2510283) 2197 0 R (id2510341) 2199 0 R (id2510378) 2207 0 R (id2510413) 2201 0 R (id2510468) 2203 0 R (id2510506) 2205 0 R (id2510532) 2209 0 R (id2510557) 2211 0 R (id2510584) 2213 0 R (id2510611) 2215 0 R (id2510650) 2217 0 R (id2510680) 2219 0 R (id2510710) 2221 0 R (id2510753) 2223 0 R (id2510786) 2225 0 R (id2510812) 2227 0 R (id2510836) 2229 0 R (id2510893) 2231 0 R (id2510918) 2234 0 R (id2510925) 2235 0 R (id2510951) 2237 0 R (id2510973) 2239 0 R (id2510997) 2241 0 R (id2511043) 2243 0 R (id2511066) 2245 0 R (id2511116) 2252 0 R (id2511124) 2253 0 R (id2511147) 2255 0 R (id2511174) 2257 0 R (id2511201) 2259 0 R (id2511237) 2261 0 R (id2511277) 2264 0 R (id2511283) 2265 0 R (id2511315) 2267 0 R (id2511361) 2269 0 R (id2511396) 2271 0 R (id2511422) 2274 0 R (id2511441) 2275 0 R (id2511531) 2277 0 R (id2511557) 2279 0 R (id2511582) 2281 0 R (id2511606) 2283 0 R (id2511652) 2285 0 R (id2511675) 2287 0 R (id2511702) 2289 0 R (id2511728) 2291 0 R (id2511765) 2294 0 R (id2511771) 2295 0 R (id2511829) 2297 0 R (id2511856) 2299 0 R (id2511892) 2306 0 R (id2511904) 2307 0 R (id2511943) 2309 0 R (id2511970) 2311 0 R (id2512000) 2313 0 R (id2512025) 2315 0 R (id2512052) 2317 0 R (id2512088) 2319 0 R (id2512124) 2321 0 R (id2512151) 2323 0 R (id2512178) 2325 0 R (id2512222) 2327 0 R (id2512264) 2330 0 R (id2512274) 2332 0 R (id2512276) 2334 0 R (id2512432) 2341 0 R (id2512441) 2342 0 R (id2512466) 2343 0 R (id2512497) 2344 0 R (id2512642) 2349 0 R (id2512668) 2351 0 R (id2512677) 2352 0 R (id2512768) 2357 0 R (id2512821) 2358 0 R (id2512885) 2359 0 R (id2512968) 2364 0 R (id2513099) 2369 0 R (id2513300) 2370 0 R (incremental_zone_transfers) 1377 0 R (internet_drafts) 2329 0 R (ipv6addresses) 1531 0 R (journal) 1376 0 R (lwresd) 1538 0 R (man.arpaname) 2689 0 R (man.ddns-confgen) 2678 0 R (man.dig) 2381 0 R (man.dnssec-dsfromkey) 2429 0 R (man.dnssec-keyfromlabel) 2447 0 R (man.dnssec-keygen) 1455 0 R (man.dnssec-revoke) 2490 0 R (man.dnssec-settime) 1456 0 R (man.dnssec-signzone) 2518 0 R (man.genrandom) 2695 0 R (man.host) 2413 0 R (man.isc-hmac-fixup) 2706 0 R (man.named) 2575 0 R (man.named-checkconf) 2542 0 R (man.named-checkzone) 2554 0 R (man.named-journalprint) 2597 0 R (man.nsec3hash) 2718 0 R (man.nsupdate) 2608 0 R (man.rndc) 2633 0 R (man.rndc-confgen) 2662 0 R (man.rndc.conf) 2645 0 R (managed-keys) 1477 0 R (notify) 1356 0 R (options) 1326 0 R (page.1) 934 0 R (page.10) 1318 0 R (page.100) 1959 0 R (page.101) 1963 0 R (page.102) 1973 0 R (page.103) 1980 0 R (page.104) 1986 0 R (page.105) 1996 0 R (page.106) 2008 0 R (page.107) 2016 0 R (page.108) 2024 0 R (page.109) 2029 0 R (page.11) 1331 0 R (page.110) 2037 0 R (page.111) 2045 0 R (page.112) 2057 0 R (page.113) 2064 0 R (page.114) 2072 0 R (page.115) 2077 0 R (page.116) 2083 0 R (page.117) 2094 0 R (page.118) 2098 0 R (page.119) 2102 0 R (page.12) 1335 0 R (page.120) 2113 0 R (page.121) 2118 0 R (page.122) 2125 0 R (page.123) 2135 0 R (page.124) 2194 0 R (page.125) 2250 0 R (page.126) 2304 0 R (page.127) 2340 0 R (page.128) 2348 0 R (page.129) 2356 0 R (page.13) 1342 0 R (page.130) 2363 0 R (page.131) 2368 0 R (page.132) 2374 0 R (page.133) 2379 0 R (page.134) 2388 0 R (page.135) 2394 0 R (page.136) 2399 0 R (page.137) 2403 0 R (page.138) 2408 0 R (page.139) 2420 0 R (page.14) 1349 0 R (page.140) 2425 0 R (page.141) 2437 0 R (page.142) 2446 0 R (page.143) 2455 0 R (page.144) 2460 0 R (page.145) 2470 0 R (page.146) 2476 0 R (page.147) 2480 0 R (page.148) 2486 0 R (page.149) 2497 0 R (page.15) 1354 0 R (page.150) 2507 0 R (page.151) 2514 0 R (page.152) 2524 0 R (page.153) 2530 0 R (page.154) 2534 0 R (page.155) 2538 0 R (page.156) 2548 0 R (page.157) 2560 0 R (page.158) 2567 0 R (page.159) 2571 0 R (page.16) 1375 0 R (page.160) 2583 0 R (page.161) 2587 0 R (page.162) 2594 0 R (page.163) 2607 0 R (page.164) 2615 0 R (page.165) 2620 0 R (page.166) 2624 0 R (page.167) 2632 0 R (page.168) 2641 0 R (page.169) 2653 0 R (page.17) 1385 0 R (page.170) 2658 0 R (page.171) 2670 0 R (page.172) 2676 0 R (page.173) 2686 0 R (page.174) 2700 0 R (page.175) 2714 0 R (page.176) 2727 0 R (page.18) 1390 0 R (page.19) 1396 0 R (page.2) 958 0 R (page.20) 1401 0 R (page.21) 1410 0 R (page.22) 1419 0 R (page.23) 1426 0 R (page.24) 1432 0 R (page.25) 1437 0 R (page.26) 1446 0 R (page.27) 1460 0 R (page.28) 1467 0 R (page.29) 1481 0 R (page.3) 1255 0 R (page.30) 1487 0 R (page.31) 1493 0 R (page.32) 1499 0 R (page.33) 1506 0 R (page.34) 1514 0 R (page.35) 1519 0 R (page.36) 1525 0 R (page.37) 1535 0 R (page.38) 1542 0 R (page.39) 1546 0 R (page.4) 1266 0 R (page.40) 1556 0 R (page.41) 1561 0 R (page.42) 1568 0 R (page.43) 1577 0 R (page.44) 1586 0 R (page.45) 1594 0 R (page.46) 1605 0 R (page.47) 1611 0 R (page.48) 1617 0 R (page.49) 1624 0 R (page.5) 1273 0 R (page.50) 1628 0 R (page.51) 1635 0 R (page.52) 1643 0 R (page.53) 1650 0 R (page.54) 1654 0 R (page.55) 1659 0 R (page.56) 1663 0 R (page.57) 1667 0 R (page.58) 1673 0 R (page.59) 1678 0 R (page.6) 1285 0 R (page.60) 1683 0 R (page.61) 1690 0 R (page.62) 1695 0 R (page.63) 1705 0 R (page.64) 1709 0 R (page.65) 1713 0 R (page.66) 1718 0 R (page.67) 1728 0 R (page.68) 1736 0 R (page.69) 1741 0 R (page.7) 1291 0 R (page.70) 1745 0 R (page.71) 1749 0 R (page.72) 1753 0 R (page.73) 1762 0 R (page.74) 1769 0 R (page.75) 1774 0 R (page.76) 1781 0 R (page.77) 1788 0 R (page.78) 1794 0 R (page.79) 1801 0 R (page.8) 1299 0 R (page.80) 1809 0 R (page.81) 1813 0 R (page.82) 1818 0 R (page.83) 1823 0 R (page.84) 1828 0 R (page.85) 1833 0 R (page.86) 1838 0 R (page.87) 1844 0 R (page.88) 1853 0 R (page.89) 1858 0 R (page.9) 1308 0 R (page.90) 1863 0 R (page.91) 1868 0 R (page.92) 1872 0 R (page.93) 1876 0 R (page.94) 1884 0 R (page.95) 1891 0 R (page.96) 1911 0 R (page.97) 1926 0 R (page.98) 1937 0 R (page.99) 1953 0 R (page.i) 968 0 R (page.ii) 1023 0 R (page.iii) 1087 0 R (page.iv) 1150 0 R (page.v) 1212 0 R (pkcs11) 1483 0 R (proposed_standards) 1381 0 R (query_address) 1737 0 R (rfc5011.support) 1474 0 R (rfcs) 1251 0 R (rndc) 1590 0 R (root_delegation_only) 1887 0 R (rrset_ordering) 1304 0 R (sample_configuration) 1293 0 R (section*.10) 2263 0 R (section*.100) 2595 0 R (section*.101) 2596 0 R (section*.102) 2598 0 R (section*.103) 2599 0 R (section*.104) 2600 0 R (section*.105) 2601 0 R (section*.106) 2602 0 R (section*.107) 2609 0 R (section*.108) 2610 0 R (section*.109) 2611 0 R (section*.11) 2273 0 R (section*.110) 2616 0 R (section*.111) 2625 0 R (section*.112) 2626 0 R (section*.113) 2627 0 R (section*.114) 2628 0 R (section*.115) 2634 0 R (section*.116) 2635 0 R (section*.117) 2636 0 R (section*.118) 2637 0 R (section*.119) 2642 0 R (section*.12) 2293 0 R (section*.120) 2643 0 R (section*.121) 2644 0 R (section*.122) 2646 0 R (section*.123) 2647 0 R (section*.124) 2648 0 R (section*.125) 2654 0 R (section*.126) 2659 0 R (section*.127) 2660 0 R (section*.128) 2661 0 R (section*.129) 2663 0 R (section*.13) 2305 0 R (section*.130) 2664 0 R (section*.131) 2665 0 R (section*.132) 2666 0 R (section*.133) 2671 0 R (section*.134) 2672 0 R (section*.135) 2677 0 R (section*.136) 2679 0 R (section*.137) 2680 0 R (section*.138) 2681 0 R (section*.139) 2682 0 R (section*.14) 2331 0 R (section*.140) 2687 0 R (section*.141) 2688 0 R (section*.142) 2690 0 R (section*.143) 2691 0 R (section*.144) 2692 0 R (section*.145) 2693 0 R (section*.146) 2694 0 R (section*.147) 2696 0 R (section*.148) 2701 0 R (section*.149) 2702 0 R (section*.15) 2382 0 R (section*.150) 2703 0 R (section*.151) 2704 0 R (section*.152) 2705 0 R (section*.153) 2707 0 R (section*.154) 2708 0 R (section*.155) 2709 0 R (section*.156) 2715 0 R (section*.157) 2716 0 R (section*.158) 2717 0 R (section*.159) 2719 0 R (section*.16) 2383 0 R (section*.160) 2720 0 R (section*.161) 2721 0 R (section*.162) 2722 0 R (section*.163) 2723 0 R (section*.164) 2728 0 R (section*.17) 2384 0 R (section*.18) 2389 0 R (section*.19) 2390 0 R (section*.2) 2130 0 R (section*.20) 2395 0 R (section*.21) 2404 0 R (section*.22) 2409 0 R (section*.23) 2410 0 R (section*.24) 2411 0 R (section*.25) 2412 0 R (section*.26) 2414 0 R (section*.27) 2415 0 R (section*.28) 2421 0 R (section*.29) 2426 0 R (section*.3) 2136 0 R (section*.30) 2427 0 R (section*.31) 2428 0 R (section*.32) 2430 0 R (section*.33) 2431 0 R (section*.34) 2432 0 R (section*.35) 2433 0 R (section*.36) 2438 0 R (section*.37) 2439 0 R (section*.38) 2440 0 R (section*.39) 2441 0 R (section*.4) 2144 0 R (section*.40) 2442 0 R (section*.41) 2448 0 R (section*.42) 2449 0 R (section*.43) 2450 0 R (section*.44) 2451 0 R (section*.45) 2456 0 R (section*.46) 2461 0 R (section*.47) 2462 0 R (section*.48) 2463 0 R (section*.49) 2464 0 R (section*.5) 2169 0 R (section*.50) 2465 0 R (section*.51) 2471 0 R (section*.52) 2472 0 R (section*.53) 2481 0 R (section*.54) 2482 0 R (section*.55) 2487 0 R (section*.56) 2488 0 R (section*.57) 2489 0 R (section*.58) 2491 0 R (section*.59) 2492 0 R (section*.6) 2181 0 R (section*.60) 2493 0 R (section*.61) 2498 0 R (section*.62) 2499 0 R (section*.63) 2500 0 R (section*.64) 2501 0 R (section*.65) 2502 0 R (section*.66) 2503 0 R (section*.67) 2508 0 R (section*.68) 2509 0 R (section*.69) 2515 0 R (section*.7) 2195 0 R (section*.70) 2516 0 R (section*.71) 2517 0 R (section*.72) 2519 0 R (section*.73) 2520 0 R (section*.74) 2525 0 R (section*.75) 2526 0 R (section*.76) 2539 0 R (section*.77) 2540 0 R (section*.78) 2541 0 R (section*.79) 2543 0 R (section*.8) 2233 0 R (section*.80) 2544 0 R (section*.81) 2549 0 R (section*.82) 2550 0 R (section*.83) 2551 0 R (section*.84) 2552 0 R (section*.85) 2553 0 R (section*.86) 2555 0 R (section*.87) 2561 0 R (section*.88) 2562 0 R (section*.89) 2563 0 R (section*.9) 2251 0 R (section*.90) 2572 0 R (section*.91) 2573 0 R (section*.92) 2574 0 R (section*.93) 2576 0 R (section*.94) 2577 0 R (section*.95) 2578 0 R (section*.96) 2579 0 R (section*.97) 2588 0 R (section*.98) 2589 0 R (section*.99) 2590 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.10) 274 0 R (section.4.11) 286 0 R (section.4.12) 338 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) 354 0 R (section.5.2) 358 0 R (section.6.1) 366 0 R (section.6.2) 394 0 R (section.6.3) 618 0 R (section.6.4) 674 0 R (section.7.1) 710 0 R (section.7.2) 714 0 R (section.7.3) 726 0 R (section.8.1) 734 0 R (section.8.2) 742 0 R (section.8.3) 746 0 R (section.A.1) 754 0 R (section.A.2) 762 0 R (section.A.3) 770 0 R (section.A.4) 786 0 R (section.B.1) 846 0 R (section.B.10) 882 0 R (section.B.11) 886 0 R (section.B.12) 890 0 R (section.B.13) 894 0 R (section.B.14) 898 0 R (section.B.15) 902 0 R (section.B.16) 906 0 R (section.B.17) 910 0 R (section.B.18) 914 0 R (section.B.19) 918 0 R (section.B.2) 850 0 R (section.B.20) 922 0 R (section.B.21) 926 0 R (section.B.3) 854 0 R (section.B.4) 858 0 R (section.B.5) 862 0 R (section.B.6) 866 0 R (section.B.7) 870 0 R (section.B.8) 874 0 R (section.B.9) 878 0 R (server_resource_limits) 1763 0 R (server_statement_definition_and_usage) 1701 0 R (server_statement_grammar) 1834 0 R (statistics) 2030 0 R (statistics_counters) 2038 0 R (statschannels) 1845 0 R (statsfile) 1669 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.10.1) 278 0 R (subsection.4.10.2) 282 0 R (subsection.4.11.1) 290 0 R (subsection.4.11.2) 306 0 R (subsection.4.11.3) 322 0 R (subsection.4.11.4) 326 0 R (subsection.4.11.5) 330 0 R (subsection.4.11.6) 334 0 R (subsection.4.12.1) 342 0 R (subsection.4.12.2) 346 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.10) 258 0 R (subsection.4.9.11) 262 0 R (subsection.4.9.12) 266 0 R (subsection.4.9.13) 270 0 R (subsection.4.9.2) 226 0 R (subsection.4.9.3) 230 0 R (subsection.4.9.4) 234 0 R (subsection.4.9.5) 238 0 R (subsection.4.9.6) 242 0 R (subsection.4.9.7) 246 0 R (subsection.4.9.8) 250 0 R (subsection.4.9.9) 254 0 R (subsection.6.1.1) 370 0 R (subsection.6.1.2) 382 0 R (subsection.6.2.1) 398 0 R (subsection.6.2.10) 434 0 R (subsection.6.2.11) 450 0 R (subsection.6.2.12) 454 0 R (subsection.6.2.13) 458 0 R (subsection.6.2.14) 462 0 R (subsection.6.2.15) 466 0 R (subsection.6.2.16) 470 0 R (subsection.6.2.17) 554 0 R (subsection.6.2.18) 558 0 R (subsection.6.2.19) 562 0 R (subsection.6.2.2) 402 0 R (subsection.6.2.20) 566 0 R (subsection.6.2.21) 570 0 R (subsection.6.2.22) 574 0 R (subsection.6.2.23) 578 0 R (subsection.6.2.24) 582 0 R (subsection.6.2.25) 586 0 R (subsection.6.2.26) 590 0 R (subsection.6.2.27) 594 0 R (subsection.6.2.28) 598 0 R (subsection.6.2.3) 406 0 R (subsection.6.2.4) 410 0 R (subsection.6.2.5) 414 0 R (subsection.6.2.6) 418 0 R (subsection.6.2.7) 422 0 R (subsection.6.2.8) 426 0 R (subsection.6.2.9) 430 0 R (subsection.6.3.1) 622 0 R (subsection.6.3.2) 634 0 R (subsection.6.3.3) 638 0 R (subsection.6.3.4) 642 0 R (subsection.6.3.5) 646 0 R (subsection.6.3.6) 666 0 R (subsection.6.3.7) 670 0 R (subsection.6.4.1) 682 0 R (subsection.7.2.1) 718 0 R (subsection.7.2.2) 722 0 R (subsection.8.1.1) 738 0 R (subsection.A.1.1) 758 0 R (subsection.A.2.1) 766 0 R (subsection.A.3.1) 774 0 R (subsection.A.3.2) 778 0 R (subsection.A.3.3) 782 0 R (subsection.A.4.1) 790 0 R (subsection.A.4.2) 794 0 R (subsection.A.4.3) 798 0 R (subsection.A.4.4) 802 0 R (subsection.A.4.5) 806 0 R (subsection.A.4.6) 810 0 R (subsection.A.4.7) 838 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.11.1.1) 294 0 R (subsubsection.4.11.1.2) 298 0 R (subsubsection.4.11.1.3) 302 0 R (subsubsection.4.11.2.1) 310 0 R (subsubsection.4.11.2.2) 314 0 R (subsubsection.4.11.2.3) 318 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 374 0 R (subsubsection.6.1.1.2) 378 0 R (subsubsection.6.1.2.1) 386 0 R (subsubsection.6.1.2.2) 390 0 R (subsubsection.6.2.10.1) 438 0 R (subsubsection.6.2.10.2) 442 0 R (subsubsection.6.2.10.3) 446 0 R (subsubsection.6.2.16.1) 474 0 R (subsubsection.6.2.16.10) 510 0 R (subsubsection.6.2.16.11) 514 0 R (subsubsection.6.2.16.12) 518 0 R (subsubsection.6.2.16.13) 522 0 R (subsubsection.6.2.16.14) 526 0 R (subsubsection.6.2.16.15) 530 0 R (subsubsection.6.2.16.16) 534 0 R (subsubsection.6.2.16.17) 538 0 R (subsubsection.6.2.16.18) 542 0 R (subsubsection.6.2.16.19) 546 0 R (subsubsection.6.2.16.2) 478 0 R (subsubsection.6.2.16.20) 550 0 R (subsubsection.6.2.16.3) 482 0 R (subsubsection.6.2.16.4) 486 0 R (subsubsection.6.2.16.5) 490 0 R (subsubsection.6.2.16.6) 494 0 R (subsubsection.6.2.16.7) 498 0 R (subsubsection.6.2.16.8) 502 0 R (subsubsection.6.2.16.9) 506 0 R (subsubsection.6.2.28.1) 602 0 R (subsubsection.6.2.28.2) 606 0 R (subsubsection.6.2.28.3) 610 0 R (subsubsection.6.2.28.4) 614 0 R (subsubsection.6.3.1.1) 626 0 R (subsubsection.6.3.1.2) 630 0 R (subsubsection.6.3.5.1) 650 0 R (subsubsection.6.3.5.2) 654 0 R (subsubsection.6.3.5.3) 658 0 R (subsubsection.6.3.5.4) 662 0 R (subsubsection.6.4.0.1) 678 0 R (subsubsection.6.4.1.1) 686 0 R (subsubsection.6.4.1.2) 690 0 R (subsubsection.6.4.1.3) 694 0 R (subsubsection.6.4.1.4) 698 0 R (subsubsection.6.4.1.5) 702 0 R (subsubsection.A.4.6.1) 814 0 R (subsubsection.A.4.6.2) 818 0 R (subsubsection.A.4.6.3) 822 0 R (subsubsection.A.4.6.4) 826 0 R (subsubsection.A.4.6.5) 830 0 R (subsubsection.A.4.6.6) 834 0 R (table.1.1) 1235 0 R (table.1.2) 1243 0 R (table.3.1) 1302 0 R (table.3.2) 1345 0 R (table.6.1) 1550 0 R (table.6.10) 1969 0 R (table.6.11) 1975 0 R (table.6.12) 1982 0 R (table.6.13) 1989 0 R (table.6.14) 1991 0 R (table.6.15) 1998 0 R (table.6.16) 2001 0 R (table.6.17) 2004 0 R (table.6.18) 2020 0 R (table.6.19) 2032 0 R (table.6.2) 1572 0 R (table.6.20) 2041 0 R (table.6.21) 2049 0 R (table.6.22) 2052 0 R (table.6.23) 2060 0 R (table.6.3) 1581 0 R (table.6.4) 1619 0 R (table.6.5) 1631 0 R (table.6.6) 1685 0 R (table.6.7) 1784 0 R (table.6.8) 1880 0 R (table.6.9) 1955 0 R (the_category_phrase) 1613 0 R (the_sortlist_statement) 1775 0 R (topology) 1770 0 R (trusted-keys) 1847 0 R (tsig) 1397 0 R (tuning) 1789 0 R (types_of_resource_records_and_when_to_use_them) 1250 0 R (view_statement_grammar) 1805 0 R (zone_statement_grammar) 1724 0 R (zone_transfers) 1371 0 R (zonefile_format) 1797 0 R] +2763 0 obj << +/Names [(Access_Control_Lists) 2088 0 R (Bv9ARM.ch01) 1230 0 R (Bv9ARM.ch02) 1274 0 R (Bv9ARM.ch03) 1292 0 R (Bv9ARM.ch04) 1355 0 R (Bv9ARM.ch05) 1536 0 R (Bv9ARM.ch06) 1547 0 R (Bv9ARM.ch07) 2087 0 R (Bv9ARM.ch08) 2112 0 R (Bv9ARM.ch09) 2127 0 R (Bv9ARM.ch10) 2388 0 R (Configuration_File_Grammar) 1570 0 R (DNSSEC) 1421 0 R (Doc-Start) 935 0 R (Setting_TTLs) 2008 0 R (acache) 1281 0 R (access_control) 1721 0 R (acl) 1579 0 R (address_match_lists) 1552 0 R (admin_tools) 1314 0 R (appendix.A) 750 0 R (appendix.B) 842 0 R (bibliography) 2135 0 R (bind9.library) 2344 0 R (boolean_options) 1370 0 R (builtin) 1802 0 R (chapter*.1) 969 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 350 0 R (chapter.6) 362 0 R (chapter.7) 706 0 R (chapter.8) 730 0 R (cite.RFC1033) 2263 0 R (cite.RFC1034) 2147 0 R (cite.RFC1035) 2149 0 R (cite.RFC1101) 2244 0 R (cite.RFC1123) 2246 0 R (cite.RFC1183) 2206 0 R (cite.RFC1464) 2285 0 R (cite.RFC1535) 2192 0 R (cite.RFC1536) 2194 0 R (cite.RFC1537) 2265 0 R (cite.RFC1591) 2248 0 R (cite.RFC1706) 2208 0 R (cite.RFC1712) 2305 0 R (cite.RFC1713) 2287 0 R (cite.RFC1794) 2289 0 R (cite.RFC1876) 2210 0 R (cite.RFC1912) 2267 0 R (cite.RFC1982) 2196 0 R (cite.RFC1995) 2154 0 R (cite.RFC1996) 2156 0 R (cite.RFC2010) 2269 0 R (cite.RFC2052) 2212 0 R (cite.RFC2065) 2317 0 R (cite.RFC2136) 2158 0 R (cite.RFC2137) 2319 0 R (cite.RFC2163) 2214 0 R (cite.RFC2168) 2216 0 R (cite.RFC2181) 2160 0 R (cite.RFC2219) 2271 0 R (cite.RFC2230) 2218 0 R (cite.RFC2240) 2291 0 R (cite.RFC2308) 2162 0 R (cite.RFC2317) 2250 0 R (cite.RFC2345) 2293 0 R (cite.RFC2352) 2295 0 R (cite.RFC2535) 2321 0 R (cite.RFC2536) 2220 0 R (cite.RFC2537) 2222 0 R (cite.RFC2538) 2224 0 R (cite.RFC2539) 2226 0 R (cite.RFC2540) 2228 0 R (cite.RFC2671) 2164 0 R (cite.RFC2672) 2166 0 R (cite.RFC2673) 2307 0 R (cite.RFC2782) 2230 0 R (cite.RFC2825) 2275 0 R (cite.RFC2826) 2252 0 R (cite.RFC2845) 2168 0 R (cite.RFC2874) 2309 0 R (cite.RFC2915) 2232 0 R (cite.RFC2929) 2254 0 R (cite.RFC2930) 2170 0 R (cite.RFC2931) 2172 0 R (cite.RFC3007) 2174 0 R (cite.RFC3008) 2323 0 R (cite.RFC3071) 2297 0 R (cite.RFC3090) 2325 0 R (cite.RFC3110) 2234 0 R (cite.RFC3123) 2236 0 R (cite.RFC3225) 2180 0 R (cite.RFC3258) 2299 0 R (cite.RFC3445) 2327 0 R (cite.RFC3490) 2277 0 R (cite.RFC3491) 2279 0 R (cite.RFC3492) 2281 0 R (cite.RFC3596) 2238 0 R (cite.RFC3597) 2240 0 R (cite.RFC3645) 2176 0 R (cite.RFC3655) 2329 0 R (cite.RFC3658) 2331 0 R (cite.RFC3755) 2333 0 R (cite.RFC3757) 2335 0 R (cite.RFC3833) 2182 0 R (cite.RFC3845) 2337 0 R (cite.RFC3901) 2301 0 R (cite.RFC4033) 2184 0 R (cite.RFC4034) 2186 0 R (cite.RFC4035) 2188 0 R (cite.RFC4074) 2198 0 R (cite.RFC974) 2151 0 R (cite.id2512742) 2342 0 R (clients-per-query) 2059 0 R (configuration_file_elements) 1548 0 R (controls_statement_definition_and_usage) 1338 0 R (diagnostic_tools) 1262 0 R (dnssec.dynamic.zones) 1441 0 R (dynamic_update) 1365 0 R (dynamic_update_policies) 1327 0 R (dynamic_update_security) 1730 0 R (empty) 1809 0 R (historical_dns_information) 2129 0 R (id2466570) 1231 0 R (id2466594) 1232 0 R (id2467484) 1233 0 R (id2467494) 1234 0 R (id2467734) 1244 0 R (id2467755) 1245 0 R (id2467789) 1246 0 R (id2467874) 1249 0 R (id2467966) 1242 0 R (id2470272) 1256 0 R (id2470295) 1259 0 R (id2470393) 1260 0 R (id2470414) 1261 0 R (id2470444) 1267 0 R (id2470480) 1268 0 R (id2470574) 1269 0 R (id2470609) 1275 0 R (id2470635) 1276 0 R (id2470716) 1277 0 R (id2470742) 1280 0 R (id2470753) 1286 0 R (id2470785) 1294 0 R (id2470801) 1295 0 R (id2470823) 1300 0 R (id2470840) 1301 0 R (id2471245) 1309 0 R (id2471251) 1310 0 R (id2473366) 1343 0 R (id2473378) 1344 0 R (id2473879) 1380 0 R (id2473897) 1386 0 R (id2474398) 1402 0 R (id2474416) 1403 0 R (id2474454) 1404 0 R (id2474472) 1405 0 R (id2474483) 1406 0 R (id2474519) 1411 0 R (id2474577) 1412 0 R (id2474626) 1414 0 R (id2474640) 1415 0 R (id2474893) 1420 0 R (id2475098) 1422 0 R (id2475177) 1427 0 R (id2475258) 1428 0 R (id2475479) 1442 0 R (id2475653) 1447 0 R (id2475689) 1448 0 R (id2475840) 1454 0 R (id2475877) 1461 0 R (id2475890) 1462 0 R (id2475923) 1463 0 R (id2475949) 1468 0 R (id2475959) 1469 0 R (id2476037) 1470 0 R (id2476050) 1471 0 R (id2476087) 1472 0 R (id2476097) 1473 0 R (id2476202) 1475 0 R (id2476225) 1482 0 R (id2476394) 1488 0 R (id2476558) 1494 0 R (id2476628) 1495 0 R (id2476745) 1500 0 R (id2476964) 1501 0 R (id2476972) 1502 0 R (id2477004) 1507 0 R (id2477041) 1508 0 R (id2477089) 1509 0 R (id2477120) 1510 0 R (id2477523) 1520 0 R (id2477569) 1521 0 R (id2477623) 1526 0 R (id2477685) 1528 0 R (id2477706) 1529 0 R (id2477876) 1537 0 R (id2478023) 1549 0 R (id2479053) 1561 0 R (id2479081) 1562 0 R (id2479424) 1563 0 R (id2479438) 1568 0 R (id2479468) 1569 0 R (id2479611) 1571 0 R (id2480077) 1578 0 R (id2480120) 1580 0 R (id2480267) 1586 0 R (id2480627) 1594 0 R (id2480644) 1595 0 R (id2480667) 1596 0 R (id2480691) 1597 0 R (id2480850) 1601 0 R (id2480976) 1606 0 R (id2481028) 1607 0 R (id2481721) 1618 0 R (id2482482) 1629 0 R (id2482544) 1630 0 R (id2482933) 1636 0 R (id2483006) 1641 0 R (id2483139) 1644 0 R (id2483182) 1645 0 R (id2483197) 1646 0 R (id2486685) 1689 0 R (id2488853) 1718 0 R (id2489048) 1720 0 R (id2489609) 1736 0 R (id2490819) 1754 0 R (id2490878) 1761 0 R (id2491233) 1769 0 R (id2491872) 1783 0 R (id2493699) 1826 0 R (id2493825) 1833 0 R (id2495157) 1854 0 R (id2495297) 1856 0 R (id2495344) 1862 0 R (id2495853) 1868 0 R (id2497417) 1885 0 R (id2497425) 1886 0 R (id2497430) 1887 0 R (id2498038) 1899 0 R (id2498071) 1900 0 R (id2500110) 1967 0 R (id2500842) 1978 0 R (id2500860) 1979 0 R (id2500881) 1982 0 R (id2501049) 1984 0 R (id2502424) 1994 0 R (id2502552) 1996 0 R (id2502573) 1997 0 R (id2503004) 2003 0 R (id2503141) 2005 0 R (id2503159) 2006 0 R (id2503563) 2009 0 R (id2503688) 2015 0 R (id2503703) 2016 0 R (id2503815) 2018 0 R (id2503837) 2019 0 R (id2503853) 2020 0 R (id2503914) 2026 0 R (id2503984) 2027 0 R (id2504020) 2028 0 R (id2504164) 2033 0 R (id2504675) 2040 0 R (id2504973) 2048 0 R (id2505047) 2049 0 R (id2506683) 2056 0 R (id2506690) 2057 0 R (id2507066) 2064 0 R (id2507072) 2065 0 R (id2508156) 2072 0 R (id2508188) 2073 0 R (id2508598) 2078 0 R (id2508825) 2096 0 R (id2508906) 2097 0 R (id2508966) 2098 0 R (id2509046) 2113 0 R (id2509051) 2114 0 R (id2509063) 2115 0 R (id2509080) 2116 0 R (id2509142) 2128 0 R (id2509382) 2134 0 R (id2509570) 2139 0 R (id2509572) 2145 0 R (id2509580) 2150 0 R (id2509604) 2146 0 R (id2509627) 2148 0 R (id2509664) 2159 0 R (id2509690) 2161 0 R (id2509716) 2153 0 R (id2509740) 2155 0 R (id2509764) 2157 0 R (id2509819) 2163 0 R (id2509846) 2165 0 R (id2509873) 2167 0 R (id2509934) 2169 0 R (id2510033) 2171 0 R (id2510062) 2173 0 R (id2510089) 2175 0 R (id2510164) 2178 0 R (id2510171) 2179 0 R (id2510198) 2181 0 R (id2510234) 2183 0 R (id2510299) 2185 0 R (id2510364) 2187 0 R (id2510429) 2190 0 R (id2510438) 2191 0 R (id2510464) 2193 0 R (id2510532) 2195 0 R (id2510567) 2197 0 R (id2510608) 2204 0 R (id2510613) 2205 0 R (id2510739) 2207 0 R (id2510776) 2215 0 R (id2510811) 2209 0 R (id2510866) 2211 0 R (id2510904) 2213 0 R (id2510930) 2217 0 R (id2510955) 2219 0 R (id2510982) 2221 0 R (id2511009) 2223 0 R (id2511048) 2225 0 R (id2511078) 2227 0 R (id2511108) 2229 0 R (id2511150) 2231 0 R (id2511184) 2233 0 R (id2511210) 2235 0 R (id2511234) 2237 0 R (id2511291) 2239 0 R (id2511316) 2242 0 R (id2511323) 2243 0 R (id2511349) 2245 0 R (id2511371) 2247 0 R (id2511463) 2249 0 R (id2511509) 2251 0 R (id2511532) 2253 0 R (id2511582) 2261 0 R (id2511590) 2262 0 R (id2511613) 2264 0 R (id2511640) 2266 0 R (id2511667) 2268 0 R (id2511703) 2270 0 R (id2511744) 2273 0 R (id2511749) 2274 0 R (id2511781) 2276 0 R (id2511827) 2278 0 R (id2511862) 2280 0 R (id2511889) 2283 0 R (id2511907) 2284 0 R (id2511929) 2286 0 R (id2511955) 2288 0 R (id2511980) 2290 0 R (id2512004) 2292 0 R (id2512050) 2294 0 R (id2512073) 2296 0 R (id2512100) 2298 0 R (id2512125) 2300 0 R (id2512163) 2303 0 R (id2512169) 2304 0 R (id2512227) 2306 0 R (id2512253) 2308 0 R (id2512290) 2315 0 R (id2512301) 2316 0 R (id2512341) 2318 0 R (id2512368) 2320 0 R (id2512397) 2322 0 R (id2512491) 2324 0 R (id2512518) 2326 0 R (id2512554) 2328 0 R (id2512590) 2330 0 R (id2512617) 2332 0 R (id2512644) 2334 0 R (id2512689) 2336 0 R (id2512730) 2339 0 R (id2512740) 2341 0 R (id2512742) 2343 0 R (id2512898) 2349 0 R (id2512907) 2350 0 R (id2512932) 2351 0 R (id2512963) 2352 0 R (id2513108) 2357 0 R (id2513134) 2359 0 R (id2513143) 2360 0 R (id2513234) 2365 0 R (id2513287) 2366 0 R (id2513419) 2367 0 R (id2513434) 2372 0 R (id2513565) 2378 0 R (id2513698) 2379 0 R (incremental_zone_transfers) 1377 0 R (internet_drafts) 2338 0 R (ipv6addresses) 1531 0 R (journal) 1376 0 R (lwresd) 1538 0 R (man.arpaname) 2698 0 R (man.ddns-confgen) 2686 0 R (man.dig) 2389 0 R (man.dnssec-dsfromkey) 2437 0 R (man.dnssec-keyfromlabel) 2455 0 R (man.dnssec-keygen) 1455 0 R (man.dnssec-revoke) 2498 0 R (man.dnssec-settime) 1456 0 R (man.dnssec-signzone) 2526 0 R (man.genrandom) 2708 0 R (man.host) 2422 0 R (man.isc-hmac-fixup) 2715 0 R (man.named) 2583 0 R (man.named-checkconf) 2551 0 R (man.named-checkzone) 2563 0 R (man.named-journalprint) 2606 0 R (man.nsec3hash) 2726 0 R (man.nsupdate) 2616 0 R (man.rndc) 2642 0 R (man.rndc-confgen) 2670 0 R (man.rndc.conf) 2654 0 R (managed-keys) 1477 0 R (notify) 1356 0 R (options) 1326 0 R (page.1) 934 0 R (page.10) 1318 0 R (page.100) 1939 0 R (page.101) 1959 0 R (page.102) 1966 0 R (page.103) 1973 0 R (page.104) 1977 0 R (page.105) 1989 0 R (page.106) 1993 0 R (page.107) 2002 0 R (page.108) 2014 0 R (page.109) 2025 0 R (page.11) 1331 0 R (page.110) 2032 0 R (page.111) 2038 0 R (page.112) 2045 0 R (page.113) 2054 0 R (page.114) 2063 0 R (page.115) 2071 0 R (page.116) 2082 0 R (page.117) 2086 0 R (page.118) 2092 0 R (page.119) 2102 0 R (page.12) 1335 0 R (page.120) 2106 0 R (page.121) 2111 0 R (page.122) 2122 0 R (page.123) 2126 0 R (page.124) 2133 0 R (page.125) 2143 0 R (page.126) 2202 0 R (page.127) 2259 0 R (page.128) 2313 0 R (page.129) 2348 0 R (page.13) 1342 0 R (page.130) 2356 0 R (page.131) 2364 0 R (page.132) 2371 0 R (page.133) 2377 0 R (page.134) 2383 0 R (page.135) 2387 0 R (page.136) 2396 0 R (page.137) 2402 0 R (page.138) 2407 0 R (page.139) 2412 0 R (page.14) 1349 0 R (page.140) 2417 0 R (page.141) 2428 0 R (page.142) 2433 0 R (page.143) 2445 0 R (page.144) 2454 0 R (page.145) 2464 0 R (page.146) 2469 0 R (page.147) 2478 0 R (page.148) 2484 0 R (page.149) 2488 0 R (page.15) 1354 0 R (page.150) 2494 0 R (page.151) 2506 0 R (page.152) 2516 0 R (page.153) 2522 0 R (page.154) 2532 0 R (page.155) 2538 0 R (page.156) 2542 0 R (page.157) 2547 0 R (page.158) 2557 0 R (page.159) 2568 0 R (page.16) 1375 0 R (page.160) 2575 0 R (page.161) 2579 0 R (page.162) 2591 0 R (page.163) 2596 0 R (page.164) 2602 0 R (page.165) 2614 0 R (page.166) 2623 0 R (page.167) 2628 0 R (page.168) 2632 0 R (page.169) 2640 0 R (page.17) 1385 0 R (page.170) 2650 0 R (page.171) 2661 0 R (page.172) 2666 0 R (page.173) 2677 0 R (page.174) 2683 0 R (page.175) 2695 0 R (page.176) 2707 0 R (page.177) 2721 0 R (page.178) 2734 0 R (page.18) 1390 0 R (page.19) 1396 0 R (page.2) 958 0 R (page.20) 1401 0 R (page.21) 1410 0 R (page.22) 1419 0 R (page.23) 1426 0 R (page.24) 1432 0 R (page.25) 1437 0 R (page.26) 1446 0 R (page.27) 1460 0 R (page.28) 1467 0 R (page.29) 1481 0 R (page.3) 1255 0 R (page.30) 1487 0 R (page.31) 1493 0 R (page.32) 1499 0 R (page.33) 1506 0 R (page.34) 1514 0 R (page.35) 1519 0 R (page.36) 1525 0 R (page.37) 1535 0 R (page.38) 1542 0 R (page.39) 1546 0 R (page.4) 1266 0 R (page.40) 1556 0 R (page.41) 1560 0 R (page.42) 1567 0 R (page.43) 1577 0 R (page.44) 1585 0 R (page.45) 1593 0 R (page.46) 1605 0 R (page.47) 1611 0 R (page.48) 1617 0 R (page.49) 1624 0 R (page.5) 1273 0 R (page.50) 1628 0 R (page.51) 1635 0 R (page.52) 1640 0 R (page.53) 1650 0 R (page.54) 1654 0 R (page.55) 1659 0 R (page.56) 1663 0 R (page.57) 1667 0 R (page.58) 1671 0 R (page.59) 1678 0 R (page.6) 1285 0 R (page.60) 1683 0 R (page.61) 1688 0 R (page.62) 1694 0 R (page.63) 1705 0 R (page.64) 1709 0 R (page.65) 1713 0 R (page.66) 1717 0 R (page.67) 1728 0 R (page.68) 1734 0 R (page.69) 1740 0 R (page.7) 1291 0 R (page.70) 1745 0 R (page.71) 1749 0 R (page.72) 1753 0 R (page.73) 1760 0 R (page.74) 1768 0 R (page.75) 1773 0 R (page.76) 1781 0 R (page.77) 1788 0 R (page.78) 1793 0 R (page.79) 1801 0 R (page.8) 1299 0 R (page.80) 1808 0 R (page.81) 1813 0 R (page.82) 1817 0 R (page.83) 1821 0 R (page.84) 1825 0 R (page.85) 1832 0 R (page.86) 1837 0 R (page.87) 1841 0 R (page.88) 1846 0 R (page.89) 1852 0 R (page.9) 1308 0 R (page.90) 1861 0 R (page.91) 1867 0 R (page.92) 1872 0 R (page.93) 1876 0 R (page.94) 1880 0 R (page.95) 1884 0 R (page.96) 1892 0 R (page.97) 1897 0 R (page.98) 1912 0 R (page.99) 1927 0 R (page.i) 968 0 R (page.ii) 1023 0 R (page.iii) 1087 0 R (page.iv) 1150 0 R (page.v) 1212 0 R (pkcs11) 1483 0 R (proposed_standards) 1381 0 R (query_address) 1741 0 R (rfc5011.support) 1474 0 R (rfcs) 1251 0 R (rndc) 1589 0 R (root_delegation_only) 1908 0 R (rrset_ordering) 1304 0 R (sample_configuration) 1293 0 R (section*.10) 2272 0 R (section*.100) 2604 0 R (section*.101) 2605 0 R (section*.102) 2607 0 R (section*.103) 2608 0 R (section*.104) 2609 0 R (section*.105) 2610 0 R (section*.106) 2615 0 R (section*.107) 2617 0 R (section*.108) 2618 0 R (section*.109) 2619 0 R (section*.11) 2282 0 R (section*.110) 2624 0 R (section*.111) 2633 0 R (section*.112) 2634 0 R (section*.113) 2635 0 R (section*.114) 2641 0 R (section*.115) 2643 0 R (section*.116) 2644 0 R (section*.117) 2645 0 R (section*.118) 2646 0 R (section*.119) 2651 0 R (section*.12) 2302 0 R (section*.120) 2652 0 R (section*.121) 2653 0 R (section*.122) 2655 0 R (section*.123) 2656 0 R (section*.124) 2657 0 R (section*.125) 2662 0 R (section*.126) 2667 0 R (section*.127) 2668 0 R (section*.128) 2669 0 R (section*.129) 2671 0 R (section*.13) 2314 0 R (section*.130) 2672 0 R (section*.131) 2673 0 R (section*.132) 2678 0 R (section*.133) 2679 0 R (section*.134) 2684 0 R (section*.135) 2685 0 R (section*.136) 2687 0 R (section*.137) 2688 0 R (section*.138) 2689 0 R (section*.139) 2690 0 R (section*.14) 2340 0 R (section*.140) 2696 0 R (section*.141) 2697 0 R (section*.142) 2699 0 R (section*.143) 2700 0 R (section*.144) 2701 0 R (section*.145) 2702 0 R (section*.146) 2703 0 R (section*.147) 2709 0 R (section*.148) 2710 0 R (section*.149) 2711 0 R (section*.15) 2390 0 R (section*.150) 2712 0 R (section*.151) 2713 0 R (section*.152) 2714 0 R (section*.153) 2716 0 R (section*.154) 2717 0 R (section*.155) 2722 0 R (section*.156) 2723 0 R (section*.157) 2724 0 R (section*.158) 2725 0 R (section*.159) 2727 0 R (section*.16) 2391 0 R (section*.160) 2728 0 R (section*.161) 2729 0 R (section*.162) 2730 0 R (section*.163) 2735 0 R (section*.164) 2736 0 R (section*.17) 2392 0 R (section*.18) 2397 0 R (section*.19) 2398 0 R (section*.2) 2138 0 R (section*.20) 2403 0 R (section*.21) 2413 0 R (section*.22) 2418 0 R (section*.23) 2419 0 R (section*.24) 2420 0 R (section*.25) 2421 0 R (section*.26) 2423 0 R (section*.27) 2424 0 R (section*.28) 2429 0 R (section*.29) 2434 0 R (section*.3) 2144 0 R (section*.30) 2435 0 R (section*.31) 2436 0 R (section*.32) 2438 0 R (section*.33) 2439 0 R (section*.34) 2440 0 R (section*.35) 2441 0 R (section*.36) 2446 0 R (section*.37) 2447 0 R (section*.38) 2448 0 R (section*.39) 2449 0 R (section*.4) 2152 0 R (section*.40) 2450 0 R (section*.41) 2456 0 R (section*.42) 2457 0 R (section*.43) 2458 0 R (section*.44) 2459 0 R (section*.45) 2465 0 R (section*.46) 2470 0 R (section*.47) 2471 0 R (section*.48) 2472 0 R (section*.49) 2473 0 R (section*.5) 2177 0 R (section*.50) 2474 0 R (section*.51) 2479 0 R (section*.52) 2480 0 R (section*.53) 2489 0 R (section*.54) 2490 0 R (section*.55) 2495 0 R (section*.56) 2496 0 R (section*.57) 2497 0 R (section*.58) 2499 0 R (section*.59) 2500 0 R (section*.6) 2189 0 R (section*.60) 2501 0 R (section*.61) 2507 0 R (section*.62) 2508 0 R (section*.63) 2509 0 R (section*.64) 2510 0 R (section*.65) 2511 0 R (section*.66) 2512 0 R (section*.67) 2517 0 R (section*.68) 2518 0 R (section*.69) 2523 0 R (section*.7) 2203 0 R (section*.70) 2524 0 R (section*.71) 2525 0 R (section*.72) 2527 0 R (section*.73) 2528 0 R (section*.74) 2533 0 R (section*.75) 2534 0 R (section*.76) 2548 0 R (section*.77) 2549 0 R (section*.78) 2550 0 R (section*.79) 2552 0 R (section*.8) 2241 0 R (section*.80) 2553 0 R (section*.81) 2558 0 R (section*.82) 2559 0 R (section*.83) 2560 0 R (section*.84) 2561 0 R (section*.85) 2562 0 R (section*.86) 2564 0 R (section*.87) 2569 0 R (section*.88) 2570 0 R (section*.89) 2571 0 R (section*.9) 2260 0 R (section*.90) 2580 0 R (section*.91) 2581 0 R (section*.92) 2582 0 R (section*.93) 2584 0 R (section*.94) 2585 0 R (section*.95) 2586 0 R (section*.96) 2587 0 R (section*.97) 2597 0 R (section*.98) 2598 0 R (section*.99) 2603 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.10) 274 0 R (section.4.11) 286 0 R (section.4.12) 338 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) 354 0 R (section.5.2) 358 0 R (section.6.1) 366 0 R (section.6.2) 394 0 R (section.6.3) 618 0 R (section.6.4) 674 0 R (section.7.1) 710 0 R (section.7.2) 714 0 R (section.7.3) 726 0 R (section.8.1) 734 0 R (section.8.2) 742 0 R (section.8.3) 746 0 R (section.A.1) 754 0 R (section.A.2) 762 0 R (section.A.3) 770 0 R (section.A.4) 786 0 R (section.B.1) 846 0 R (section.B.10) 882 0 R (section.B.11) 886 0 R (section.B.12) 890 0 R (section.B.13) 894 0 R (section.B.14) 898 0 R (section.B.15) 902 0 R (section.B.16) 906 0 R (section.B.17) 910 0 R (section.B.18) 914 0 R (section.B.19) 918 0 R (section.B.2) 850 0 R (section.B.20) 922 0 R (section.B.21) 926 0 R (section.B.3) 854 0 R (section.B.4) 858 0 R (section.B.5) 862 0 R (section.B.6) 866 0 R (section.B.7) 870 0 R (section.B.8) 874 0 R (section.B.9) 878 0 R (server_resource_limits) 1763 0 R (server_statement_definition_and_usage) 1701 0 R (server_statement_grammar) 1842 0 R (statistics) 2039 0 R (statistics_counters) 2047 0 R (statschannels) 1853 0 R (statsfile) 1674 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.10.1) 278 0 R (subsection.4.10.2) 282 0 R (subsection.4.11.1) 290 0 R (subsection.4.11.2) 306 0 R (subsection.4.11.3) 322 0 R (subsection.4.11.4) 326 0 R (subsection.4.11.5) 330 0 R (subsection.4.11.6) 334 0 R (subsection.4.12.1) 342 0 R (subsection.4.12.2) 346 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.10) 258 0 R (subsection.4.9.11) 262 0 R (subsection.4.9.12) 266 0 R (subsection.4.9.13) 270 0 R (subsection.4.9.2) 226 0 R (subsection.4.9.3) 230 0 R (subsection.4.9.4) 234 0 R (subsection.4.9.5) 238 0 R (subsection.4.9.6) 242 0 R (subsection.4.9.7) 246 0 R (subsection.4.9.8) 250 0 R (subsection.4.9.9) 254 0 R (subsection.6.1.1) 370 0 R (subsection.6.1.2) 382 0 R (subsection.6.2.1) 398 0 R (subsection.6.2.10) 434 0 R (subsection.6.2.11) 450 0 R (subsection.6.2.12) 454 0 R (subsection.6.2.13) 458 0 R (subsection.6.2.14) 462 0 R (subsection.6.2.15) 466 0 R (subsection.6.2.16) 470 0 R (subsection.6.2.17) 554 0 R (subsection.6.2.18) 558 0 R (subsection.6.2.19) 562 0 R (subsection.6.2.2) 402 0 R (subsection.6.2.20) 566 0 R (subsection.6.2.21) 570 0 R (subsection.6.2.22) 574 0 R (subsection.6.2.23) 578 0 R (subsection.6.2.24) 582 0 R (subsection.6.2.25) 586 0 R (subsection.6.2.26) 590 0 R (subsection.6.2.27) 594 0 R (subsection.6.2.28) 598 0 R (subsection.6.2.3) 406 0 R (subsection.6.2.4) 410 0 R (subsection.6.2.5) 414 0 R (subsection.6.2.6) 418 0 R (subsection.6.2.7) 422 0 R (subsection.6.2.8) 426 0 R (subsection.6.2.9) 430 0 R (subsection.6.3.1) 622 0 R (subsection.6.3.2) 634 0 R (subsection.6.3.3) 638 0 R (subsection.6.3.4) 642 0 R (subsection.6.3.5) 646 0 R (subsection.6.3.6) 666 0 R (subsection.6.3.7) 670 0 R (subsection.6.4.1) 682 0 R (subsection.7.2.1) 718 0 R (subsection.7.2.2) 722 0 R (subsection.8.1.1) 738 0 R (subsection.A.1.1) 758 0 R (subsection.A.2.1) 766 0 R (subsection.A.3.1) 774 0 R (subsection.A.3.2) 778 0 R (subsection.A.3.3) 782 0 R (subsection.A.4.1) 790 0 R (subsection.A.4.2) 794 0 R (subsection.A.4.3) 798 0 R (subsection.A.4.4) 802 0 R (subsection.A.4.5) 806 0 R (subsection.A.4.6) 810 0 R (subsection.A.4.7) 838 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.11.1.1) 294 0 R (subsubsection.4.11.1.2) 298 0 R (subsubsection.4.11.1.3) 302 0 R (subsubsection.4.11.2.1) 310 0 R (subsubsection.4.11.2.2) 314 0 R (subsubsection.4.11.2.3) 318 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 374 0 R (subsubsection.6.1.1.2) 378 0 R (subsubsection.6.1.2.1) 386 0 R (subsubsection.6.1.2.2) 390 0 R (subsubsection.6.2.10.1) 438 0 R (subsubsection.6.2.10.2) 442 0 R (subsubsection.6.2.10.3) 446 0 R (subsubsection.6.2.16.1) 474 0 R (subsubsection.6.2.16.10) 510 0 R (subsubsection.6.2.16.11) 514 0 R (subsubsection.6.2.16.12) 518 0 R (subsubsection.6.2.16.13) 522 0 R (subsubsection.6.2.16.14) 526 0 R (subsubsection.6.2.16.15) 530 0 R (subsubsection.6.2.16.16) 534 0 R (subsubsection.6.2.16.17) 538 0 R (subsubsection.6.2.16.18) 542 0 R (subsubsection.6.2.16.19) 546 0 R (subsubsection.6.2.16.2) 478 0 R (subsubsection.6.2.16.20) 550 0 R (subsubsection.6.2.16.3) 482 0 R (subsubsection.6.2.16.4) 486 0 R (subsubsection.6.2.16.5) 490 0 R (subsubsection.6.2.16.6) 494 0 R (subsubsection.6.2.16.7) 498 0 R (subsubsection.6.2.16.8) 502 0 R (subsubsection.6.2.16.9) 506 0 R (subsubsection.6.2.28.1) 602 0 R (subsubsection.6.2.28.2) 606 0 R (subsubsection.6.2.28.3) 610 0 R (subsubsection.6.2.28.4) 614 0 R (subsubsection.6.3.1.1) 626 0 R (subsubsection.6.3.1.2) 630 0 R (subsubsection.6.3.5.1) 650 0 R (subsubsection.6.3.5.2) 654 0 R (subsubsection.6.3.5.3) 658 0 R (subsubsection.6.3.5.4) 662 0 R (subsubsection.6.4.0.1) 678 0 R (subsubsection.6.4.1.1) 686 0 R (subsubsection.6.4.1.2) 690 0 R (subsubsection.6.4.1.3) 694 0 R (subsubsection.6.4.1.4) 698 0 R (subsubsection.6.4.1.5) 702 0 R (subsubsection.A.4.6.1) 814 0 R (subsubsection.A.4.6.2) 818 0 R (subsubsection.A.4.6.3) 822 0 R (subsubsection.A.4.6.4) 826 0 R (subsubsection.A.4.6.5) 830 0 R (subsubsection.A.4.6.6) 834 0 R (table.1.1) 1235 0 R (table.1.2) 1243 0 R (table.3.1) 1302 0 R (table.3.2) 1345 0 R (table.6.1) 1550 0 R (table.6.10) 1983 0 R (table.6.11) 1985 0 R (table.6.12) 1995 0 R (table.6.13) 1998 0 R (table.6.14) 2004 0 R (table.6.15) 2007 0 R (table.6.16) 2010 0 R (table.6.17) 2017 0 R (table.6.18) 2034 0 R (table.6.19) 2041 0 R (table.6.2) 1572 0 R (table.6.20) 2050 0 R (table.6.21) 2058 0 R (table.6.22) 2066 0 R (table.6.23) 2074 0 R (table.6.3) 1581 0 R (table.6.4) 1619 0 R (table.6.5) 1631 0 R (table.6.6) 1690 0 R (table.6.7) 1784 0 R (table.6.8) 1888 0 R (table.6.9) 1968 0 R (the_category_phrase) 1613 0 R (the_sortlist_statement) 1775 0 R (topology) 1774 0 R (trusted-keys) 1855 0 R (tsig) 1397 0 R (tuning) 1789 0 R (types_of_resource_records_and_when_to_use_them) 1250 0 R (view_statement_grammar) 1804 0 R (zone_statement_grammar) 1724 0 R (zone_transfers) 1371 0 R (zonefile_format) 1797 0 R] /Limits [(Access_Control_Lists) (zonefile_format)] >> endobj -2756 0 obj << -/Kids [2755 0 R] +2764 0 obj << +/Kids [2763 0 R] >> endobj -2757 0 obj << -/Dests 2756 0 R +2765 0 obj << +/Dests 2764 0 R >> endobj -2758 0 obj << +2766 0 obj << /Type /Catalog -/Pages 2753 0 R -/Outlines 2754 0 R -/Names 2757 0 R +/Pages 2761 0 R +/Outlines 2762 0 R +/Names 2765 0 R /PageMode /UseOutlines /OpenAction 929 0 R >> endobj -2759 0 obj << +2767 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20120720044330Z) +/CreationDate (D:20130516011107Z) /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref -0 2760 +0 2768 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000000009 00000 n -0000348639 00000 n -0001182928 00000 n +0000348651 00000 n +0001188206 00000 n 0000000054 00000 n 0000000086 00000 n -0000348766 00000 n -0001182856 00000 n +0000348778 00000 n +0001188134 00000 n 0000000133 00000 n 0000000173 00000 n -0000348894 00000 n -0001182770 00000 n +0000348906 00000 n +0001188048 00000 n 0000000221 00000 n 0000000273 00000 n -0000349022 00000 n -0001182684 00000 n +0000349034 00000 n +0001187962 00000 n 0000000321 00000 n 0000000377 00000 n -0000353308 00000 n -0001182574 00000 n +0000353320 00000 n +0001187852 00000 n 0000000425 00000 n 0000000478 00000 n -0000353435 00000 n -0001182500 00000 n +0000353447 00000 n +0001187778 00000 n 0000000531 00000 n 0000000572 00000 n -0000353563 00000 n -0001182413 00000 n +0000353575 00000 n +0001187691 00000 n 0000000625 00000 n 0000000674 00000 n -0000353690 00000 n -0001182326 00000 n +0000353702 00000 n +0001187604 00000 n 0000000727 00000 n 0000000757 00000 n -0000357987 00000 n -0001182202 00000 n +0000357999 00000 n +0001187480 00000 n 0000000810 00000 n 0000000861 00000 n -0000358115 00000 n -0001182128 00000 n +0000358127 00000 n +0001187406 00000 n 0000000919 00000 n 0000000964 00000 n -0000358243 00000 n -0001182041 00000 n +0000358255 00000 n +0001187319 00000 n 0000001022 00000 n 0000001062 00000 n -0000358371 00000 n -0001181967 00000 n +0000358383 00000 n +0001187245 00000 n 0000001120 00000 n 0000001162 00000 n -0000361356 00000 n -0001181843 00000 n +0000361368 00000 n +0001187121 00000 n 0000001215 00000 n 0000001260 00000 n -0000361484 00000 n -0001181782 00000 n +0000361496 00000 n +0001187060 00000 n 0000001318 00000 n 0000001355 00000 n -0000361612 00000 n -0001181708 00000 n +0000361624 00000 n +0001186986 00000 n 0000001408 00000 n 0000001463 00000 n -0000364559 00000 n -0001181583 00000 n +0000364571 00000 n +0001186861 00000 n 0000001509 00000 n 0000001556 00000 n -0000364687 00000 n -0001181509 00000 n +0000364699 00000 n +0001186787 00000 n 0000001604 00000 n 0000001648 00000 n -0000364815 00000 n -0001181422 00000 n +0000364827 00000 n +0001186700 00000 n 0000001696 00000 n 0000001735 00000 n -0000364943 00000 n -0001181335 00000 n +0000364955 00000 n +0001186613 00000 n 0000001783 00000 n 0000001825 00000 n -0000365070 00000 n -0001181248 00000 n +0000365082 00000 n +0001186526 00000 n 0000001873 00000 n 0000001936 00000 n -0000366147 00000 n -0001181174 00000 n +0000366159 00000 n +0001186452 00000 n 0000001984 00000 n 0000002034 00000 n -0000367806 00000 n -0001181046 00000 n +0000367818 00000 n +0001186324 00000 n 0000002080 00000 n 0000002126 00000 n -0000367933 00000 n -0001180933 00000 n +0000367945 00000 n +0001186211 00000 n 0000002174 00000 n 0000002218 00000 n -0000368061 00000 n -0001180857 00000 n +0000368073 00000 n +0001186135 00000 n 0000002271 00000 n 0000002323 00000 n -0000368189 00000 n -0001180780 00000 n +0000368201 00000 n +0001186058 00000 n 0000002377 00000 n 0000002436 00000 n -0000370638 00000 n -0001180689 00000 n +0000370650 00000 n +0001185967 00000 n 0000002485 00000 n 0000002523 00000 n -0000373976 00000 n -0001180572 00000 n +0000373988 00000 n +0001185850 00000 n 0000002572 00000 n 0000002618 00000 n -0000374104 00000 n -0001180454 00000 n +0000374116 00000 n +0001185732 00000 n 0000002672 00000 n 0000002739 00000 n -0000374232 00000 n -0001180375 00000 n +0000374244 00000 n +0001185653 00000 n 0000002798 00000 n 0000002842 00000 n -0000374361 00000 n -0001180296 00000 n +0000374373 00000 n +0001185574 00000 n 0000002901 00000 n 0000002949 00000 n -0000389227 00000 n -0001180217 00000 n +0000389238 00000 n +0001185495 00000 n 0000003003 00000 n 0000003036 00000 n -0000394851 00000 n -0001180084 00000 n +0000394862 00000 n +0001185362 00000 n 0000003083 00000 n 0000003126 00000 n -0000394980 00000 n -0001180005 00000 n +0000394991 00000 n +0001185283 00000 n 0000003175 00000 n 0000003205 00000 n -0000395109 00000 n -0001179873 00000 n +0000395120 00000 n +0001185151 00000 n 0000003254 00000 n 0000003292 00000 n -0000399481 00000 n -0001179808 00000 n +0000399492 00000 n +0001185086 00000 n 0000003346 00000 n 0000003388 00000 n -0000399610 00000 n -0001179715 00000 n +0000399621 00000 n +0001184993 00000 n 0000003437 00000 n 0000003496 00000 n -0000399739 00000 n -0001179583 00000 n +0000399750 00000 n +0001184861 00000 n 0000003545 00000 n 0000003578 00000 n -0000403459 00000 n -0001179518 00000 n +0000403470 00000 n +0001184796 00000 n 0000003632 00000 n 0000003681 00000 n -0000406613 00000 n -0001179386 00000 n +0000406624 00000 n +0001184664 00000 n 0000003730 00000 n 0000003758 00000 n -0000409558 00000 n -0001179268 00000 n +0000409569 00000 n +0001184546 00000 n 0000003812 00000 n 0000003881 00000 n -0000409687 00000 n -0001179189 00000 n +0000409698 00000 n +0001184467 00000 n 0000003940 00000 n 0000003988 00000 n -0000409816 00000 n -0001179110 00000 n +0000409827 00000 n +0001184388 00000 n 0000004047 00000 n 0000004092 00000 n -0000409945 00000 n -0001179017 00000 n +0000409956 00000 n +0001184295 00000 n 0000004146 00000 n 0000004214 00000 n -0000410074 00000 n -0001178924 00000 n +0000410085 00000 n +0001184202 00000 n 0000004268 00000 n 0000004338 00000 n -0000413537 00000 n -0001178831 00000 n +0000413548 00000 n +0001184109 00000 n 0000004392 00000 n 0000004455 00000 n -0000413666 00000 n -0001178738 00000 n +0000413677 00000 n +0001184016 00000 n 0000004509 00000 n 0000004564 00000 n -0000413795 00000 n -0001178659 00000 n +0000413806 00000 n +0001183937 00000 n 0000004618 00000 n 0000004650 00000 n -0000413924 00000 n -0001178566 00000 n +0000413935 00000 n +0001183844 00000 n 0000004699 00000 n 0000004727 00000 n -0000417784 00000 n -0001178473 00000 n +0000417795 00000 n +0001183751 00000 n 0000004776 00000 n 0000004808 00000 n -0000417913 00000 n -0001178341 00000 n +0000417924 00000 n +0001183619 00000 n 0000004857 00000 n 0000004887 00000 n -0000418041 00000 n -0001178262 00000 n +0000418052 00000 n +0001183540 00000 n 0000004941 00000 n 0000004982 00000 n -0000421944 00000 n -0001178169 00000 n +0000421955 00000 n +0001183447 00000 n 0000005036 00000 n 0000005078 00000 n -0000422072 00000 n -0001178090 00000 n +0000422083 00000 n +0001183368 00000 n 0000005132 00000 n 0000005177 00000 n -0000427212 00000 n -0001177957 00000 n +0000427223 00000 n +0001183235 00000 n 0000005226 00000 n 0000005294 00000 n -0000427341 00000 n -0001177878 00000 n +0000427352 00000 n +0001183156 00000 n 0000005348 00000 n 0000005408 00000 n -0000431146 00000 n -0001177785 00000 n +0000431157 00000 n +0001183063 00000 n 0000005462 00000 n 0000005513 00000 n -0000431275 00000 n -0001177692 00000 n +0000431286 00000 n +0001182970 00000 n 0000005567 00000 n 0000005621 00000 n -0000431404 00000 n -0001177599 00000 n +0000431415 00000 n +0001182877 00000 n 0000005675 00000 n 0000005721 00000 n -0000434522 00000 n -0001177506 00000 n +0000434533 00000 n +0001182784 00000 n 0000005775 00000 n 0000005817 00000 n -0000434651 00000 n -0001177413 00000 n +0000434662 00000 n +0001182691 00000 n 0000005871 00000 n 0000005922 00000 n -0000434780 00000 n -0001177320 00000 n +0000434791 00000 n +0001182598 00000 n 0000005976 00000 n 0000006025 00000 n -0000437878 00000 n -0001177227 00000 n +0000437889 00000 n +0001182505 00000 n 0000006079 00000 n 0000006136 00000 n -0000438007 00000 n -0001177134 00000 n +0000438018 00000 n +0001182412 00000 n 0000006190 00000 n 0000006245 00000 n -0000438135 00000 n -0001177041 00000 n +0000438146 00000 n +0001182319 00000 n 0000006300 00000 n 0000006356 00000 n -0000438264 00000 n -0001176948 00000 n +0000438275 00000 n +0001182226 00000 n 0000006411 00000 n 0000006472 00000 n -0000438392 00000 n -0001176855 00000 n +0000438403 00000 n +0001182133 00000 n 0000006527 00000 n 0000006573 00000 n -0000438520 00000 n -0001176776 00000 n +0000438531 00000 n +0001182054 00000 n 0000006628 00000 n 0000006671 00000 n -0000438649 00000 n -0001176644 00000 n +0000438660 00000 n +0001181922 00000 n 0000006721 00000 n 0000006777 00000 n -0000438778 00000 n -0001176565 00000 n +0000438789 00000 n +0001181843 00000 n 0000006832 00000 n 0000006878 00000 n -0000442370 00000 n -0001176486 00000 n +0000442381 00000 n +0001181764 00000 n 0000006933 00000 n 0000006980 00000 n -0000442499 00000 n -0001176354 00000 n +0000442510 00000 n +0001181632 00000 n 0000007030 00000 n 0000007087 00000 n -0000445659 00000 n -0001176236 00000 n +0000445669 00000 n +0001181514 00000 n 0000007142 00000 n 0000007182 00000 n -0000448354 00000 n -0001176157 00000 n +0000448364 00000 n +0001181435 00000 n 0000007242 00000 n 0000007315 00000 n -0000448483 00000 n -0001176064 00000 n +0000448493 00000 n +0001181342 00000 n 0000007375 00000 n 0000007448 00000 n -0000451264 00000 n -0001175985 00000 n +0000451274 00000 n +0001181263 00000 n 0000007508 00000 n 0000007565 00000 n -0000451393 00000 n -0001175853 00000 n +0000451403 00000 n +0001181131 00000 n 0000007620 00000 n 0000007678 00000 n -0000451522 00000 n -0001175774 00000 n +0000451532 00000 n +0001181052 00000 n 0000007738 00000 n 0000007815 00000 n -0000454016 00000 n -0001175681 00000 n +0000454026 00000 n +0001180959 00000 n 0000007875 00000 n 0000007952 00000 n -0000454145 00000 n -0001175602 00000 n +0000454155 00000 n +0001180880 00000 n 0000008012 00000 n 0000008071 00000 n -0000454274 00000 n -0001175509 00000 n +0000454284 00000 n +0001180787 00000 n 0000008126 00000 n 0000008170 00000 n -0000454403 00000 n -0001175416 00000 n +0000454413 00000 n +0001180694 00000 n 0000008225 00000 n 0000008265 00000 n -0000460723 00000 n -0001175323 00000 n +0000460733 00000 n +0001180601 00000 n 0000008320 00000 n 0000008388 00000 n -0000460852 00000 n -0001175244 00000 n +0000460862 00000 n +0001180522 00000 n 0000008443 00000 n 0000008514 00000 n -0000463643 00000 n -0001175126 00000 n +0000463653 00000 n +0001180404 00000 n 0000008564 00000 n 0000008611 00000 n -0000463772 00000 n -0001175047 00000 n +0000463782 00000 n +0001180325 00000 n 0000008666 00000 n 0000008727 00000 n -0000463901 00000 n -0001174968 00000 n +0000463911 00000 n +0001180246 00000 n 0000008782 00000 n 0000008852 00000 n -0000466343 00000 n -0001174835 00000 n +0000466353 00000 n +0001180113 00000 n 0000008899 00000 n 0000008952 00000 n -0000466472 00000 n -0001174756 00000 n +0000466482 00000 n +0001180034 00000 n 0000009001 00000 n 0000009057 00000 n -0000466601 00000 n -0001174677 00000 n +0000466611 00000 n +0001179955 00000 n 0000009106 00000 n 0000009155 00000 n -0000470871 00000 n -0001174544 00000 n +0000470881 00000 n +0001179822 00000 n 0000009202 00000 n 0000009254 00000 n -0000471000 00000 n -0001174426 00000 n +0000471010 00000 n +0001179704 00000 n 0000009303 00000 n 0000009354 00000 n -0000475692 00000 n -0001174308 00000 n +0000479434 00000 n +0001179586 00000 n 0000009408 00000 n 0000009453 00000 n -0000475820 00000 n -0001174229 00000 n +0000479563 00000 n +0001179507 00000 n 0000009512 00000 n 0000009546 00000 n -0000479413 00000 n -0001174150 00000 n +0000479692 00000 n +0001179428 00000 n 0000009605 00000 n 0000009653 00000 n -0000479542 00000 n -0001174032 00000 n +0000479821 00000 n +0001179310 00000 n 0000009707 00000 n 0000009747 00000 n -0000479671 00000 n -0001173953 00000 n +0000482354 00000 n +0001179231 00000 n 0000009806 00000 n 0000009840 00000 n -0000482523 00000 n -0001173874 00000 n +0000482483 00000 n +0001179152 00000 n 0000009899 00000 n 0000009947 00000 n -0000482652 00000 n -0001173741 00000 n +0000482612 00000 n +0001179019 00000 n 0000009996 00000 n 0000010046 00000 n -0000485722 00000 n -0001173662 00000 n +0000485817 00000 n +0001178940 00000 n 0000010100 00000 n 0000010147 00000 n -0000485850 00000 n -0001173569 00000 n +0000485945 00000 n +0001178847 00000 n 0000010201 00000 n 0000010261 00000 n -0000486109 00000 n -0001173476 00000 n +0000491302 00000 n +0001178754 00000 n 0000010315 00000 n 0000010367 00000 n -0000491291 00000 n -0001173383 00000 n +0000491431 00000 n +0001178661 00000 n 0000010421 00000 n 0000010486 00000 n -0000491420 00000 n -0001173290 00000 n +0000494901 00000 n +0001178568 00000 n 0000010540 00000 n 0000010591 00000 n -0000494897 00000 n -0001173197 00000 n +0000495030 00000 n +0001178475 00000 n 0000010645 00000 n 0000010709 00000 n -0000495026 00000 n -0001173104 00000 n +0000495159 00000 n +0001178382 00000 n 0000010763 00000 n 0000010810 00000 n -0000495155 00000 n -0001173011 00000 n +0000495288 00000 n +0001178289 00000 n 0000010864 00000 n 0000010924 00000 n -0000495284 00000 n -0001172918 00000 n +0000495416 00000 n +0001178196 00000 n 0000010978 00000 n 0000011029 00000 n -0000499302 00000 n -0001172786 00000 n +0000499115 00000 n +0001178064 00000 n 0000011084 00000 n 0000011149 00000 n -0000499431 00000 n -0001172707 00000 n +0000499244 00000 n +0001177985 00000 n 0000011209 00000 n 0000011256 00000 n -0000506252 00000 n -0001172614 00000 n +0000506045 00000 n +0001177892 00000 n 0000011316 00000 n 0000011364 00000 n -0000513361 00000 n -0001172535 00000 n +0000512785 00000 n +0001177813 00000 n 0000011424 00000 n 0000011478 00000 n -0000516958 00000 n -0001172442 00000 n +0000516012 00000 n +0001177720 00000 n 0000011533 00000 n 0000011583 00000 n -0000517087 00000 n -0001172349 00000 n +0000518850 00000 n +0001177627 00000 n 0000011638 00000 n 0000011701 00000 n -0000519024 00000 n -0001172256 00000 n +0000518979 00000 n +0001177534 00000 n 0000011756 00000 n 0000011808 00000 n -0000519153 00000 n -0001172163 00000 n +0000519108 00000 n +0001177441 00000 n 0000011863 00000 n 0000011928 00000 n -0000519282 00000 n -0001172070 00000 n +0000519237 00000 n +0001177348 00000 n 0000011983 00000 n 0000012035 00000 n -0000524428 00000 n -0001171937 00000 n +0000526974 00000 n +0001177215 00000 n 0000012090 00000 n 0000012155 00000 n -0000544388 00000 n -0001171858 00000 n +0000543721 00000 n +0001177136 00000 n 0000012215 00000 n 0000012259 00000 n -0000565985 00000 n -0001171765 00000 n +0000569340 00000 n +0001177043 00000 n 0000012319 00000 n 0000012358 00000 n -0000569620 00000 n -0001171672 00000 n +0000569469 00000 n +0001176950 00000 n 0000012418 00000 n 0000012465 00000 n -0000569749 00000 n -0001171579 00000 n +0000569598 00000 n +0001176857 00000 n 0000012525 00000 n 0000012568 00000 n -0000574175 00000 n -0001171486 00000 n +0000577092 00000 n +0001176764 00000 n 0000012628 00000 n 0000012667 00000 n -0000577523 00000 n -0001171393 00000 n +0000580658 00000 n +0001176671 00000 n 0000012727 00000 n 0000012769 00000 n -0000584483 00000 n -0001171300 00000 n +0000583787 00000 n +0001176578 00000 n 0000012829 00000 n 0000012872 00000 n -0000592253 00000 n -0001171207 00000 n +0000591012 00000 n +0001176485 00000 n 0000012932 00000 n 0000012975 00000 n -0000592382 00000 n -0001171114 00000 n +0000595490 00000 n +0001176392 00000 n 0000013035 00000 n 0000013096 00000 n -0000596338 00000 n -0001171021 00000 n +0000595619 00000 n +0001176299 00000 n 0000013157 00000 n 0000013209 00000 n -0000596467 00000 n -0001170928 00000 n +0000599456 00000 n +0001176206 00000 n 0000013270 00000 n 0000013323 00000 n -0000599686 00000 n -0001170835 00000 n +0000603805 00000 n +0001176113 00000 n 0000013384 00000 n 0000013422 00000 n -0000603538 00000 n -0001170742 00000 n +0000603934 00000 n +0001176020 00000 n 0000013483 00000 n 0000013535 00000 n -0000606956 00000 n -0001170649 00000 n +0000606805 00000 n +0001175927 00000 n 0000013596 00000 n 0000013640 00000 n -0000610967 00000 n -0001170556 00000 n +0000610188 00000 n +0001175834 00000 n 0000013701 00000 n 0000013737 00000 n -0000619337 00000 n -0001170463 00000 n +0000619248 00000 n +0001175741 00000 n 0000013798 00000 n 0000013861 00000 n -0000619466 00000 n -0001170370 00000 n +0000621682 00000 n +0001175648 00000 n 0000013922 00000 n 0000013972 00000 n -0000626008 00000 n -0001170277 00000 n +0000629226 00000 n +0001175555 00000 n 0000014033 00000 n 0000014089 00000 n -0000626135 00000 n -0001170184 00000 n +0000633711 00000 n +0001175462 00000 n 0000014150 00000 n 0000014197 00000 n -0000634312 00000 n -0001170105 00000 n +0000638026 00000 n +0001175383 00000 n 0000014258 00000 n 0000014326 00000 n -0000640547 00000 n -0001170012 00000 n +0000644384 00000 n +0001175290 00000 n 0000014381 00000 n 0000014432 00000 n -0000640676 00000 n -0001169919 00000 n +0000649443 00000 n +0001175197 00000 n 0000014487 00000 n 0000014551 00000 n -0000649330 00000 n -0001169826 00000 n +0000653172 00000 n +0001175104 00000 n 0000014606 00000 n 0000014670 00000 n -0000649459 00000 n -0001169733 00000 n +0000653301 00000 n +0001175011 00000 n 0000014725 00000 n 0000014802 00000 n -0000649588 00000 n -0001169640 00000 n +0000653430 00000 n +0001174918 00000 n 0000014857 00000 n 0000014914 00000 n -0000649717 00000 n -0001169547 00000 n +0000653559 00000 n +0001174825 00000 n 0000014969 00000 n 0000015039 00000 n -0000654026 00000 n -0001169454 00000 n +0000657599 00000 n +0001174732 00000 n 0000015094 00000 n 0000015151 00000 n -0000654155 00000 n -0001169361 00000 n +0000657728 00000 n +0001174639 00000 n 0000015206 00000 n 0000015276 00000 n -0000657626 00000 n -0001169268 00000 n +0000662082 00000 n +0001174546 00000 n 0000015331 00000 n 0000015380 00000 n -0000657755 00000 n -0001169175 00000 n +0000662211 00000 n +0001174453 00000 n 0000015435 00000 n 0000015497 00000 n -0000659509 00000 n -0001169082 00000 n +0000663928 00000 n +0001174360 00000 n 0000015552 00000 n 0000015601 00000 n -0000665970 00000 n -0001168964 00000 n +0000669438 00000 n +0001174242 00000 n 0000015656 00000 n 0000015718 00000 n -0000666099 00000 n -0001168885 00000 n +0000669567 00000 n +0001174163 00000 n 0000015778 00000 n 0000015817 00000 n -0000670336 00000 n -0001168792 00000 n +0000678489 00000 n +0001174070 00000 n 0000015877 00000 n 0000015911 00000 n -0000676258 00000 n -0001168699 00000 n +0000678618 00000 n +0001173977 00000 n 0000015971 00000 n 0000016012 00000 n -0000691898 00000 n -0001168620 00000 n +0000699552 00000 n +0001173898 00000 n 0000016072 00000 n 0000016124 00000 n -0000702584 00000 n -0001168488 00000 n +0000709763 00000 n +0001173766 00000 n 0000016173 00000 n 0000016206 00000 n -0000702713 00000 n -0001168370 00000 n +0000709892 00000 n +0001173648 00000 n 0000016260 00000 n 0000016332 00000 n -0000702842 00000 n -0001168291 00000 n +0000710021 00000 n +0001173569 00000 n 0000016391 00000 n 0000016435 00000 n -0000713443 00000 n -0001168212 00000 n +0000717446 00000 n +0001173490 00000 n 0000016494 00000 n 0000016547 00000 n -0000713832 00000 n -0001168119 00000 n +0000721226 00000 n +0001173397 00000 n 0000016601 00000 n 0000016651 00000 n -0000717686 00000 n -0001168026 00000 n +0000721484 00000 n +0001173304 00000 n 0000016705 00000 n 0000016743 00000 n -0000717945 00000 n -0001167933 00000 n +0000724939 00000 n +0001173211 00000 n 0000016797 00000 n 0000016846 00000 n -0000720718 00000 n -0001167801 00000 n +0000725197 00000 n +0001173079 00000 n 0000016900 00000 n 0000016952 00000 n -0000720843 00000 n -0001167722 00000 n +0000725325 00000 n +0001173000 00000 n 0000017011 00000 n 0000017056 00000 n -0000720972 00000 n -0001167629 00000 n +0000725454 00000 n +0001172907 00000 n 0000017115 00000 n 0000017167 00000 n -0000721101 00000 n -0001167536 00000 n +0000728083 00000 n +0001172814 00000 n 0000017226 00000 n 0000017279 00000 n -0000723553 00000 n -0001167457 00000 n +0000728212 00000 n +0001172735 00000 n 0000017338 00000 n 0000017387 00000 n -0000723682 00000 n -0001167364 00000 n +0000728341 00000 n +0001172642 00000 n 0000017441 00000 n 0000017521 00000 n -0000727997 00000 n -0001167285 00000 n +0000735453 00000 n +0001172563 00000 n 0000017575 00000 n 0000017624 00000 n -0000731503 00000 n -0001167167 00000 n +0000735582 00000 n +0001172445 00000 n 0000017673 00000 n 0000017713 00000 n -0000731762 00000 n -0001167088 00000 n +0000739025 00000 n +0001172366 00000 n 0000017772 00000 n 0000017819 00000 n -0000735194 00000 n -0001166970 00000 n +0000739154 00000 n +0001172248 00000 n 0000017873 00000 n 0000017918 00000 n -0000735323 00000 n -0001166891 00000 n +0000739283 00000 n +0001172169 00000 n 0000017977 00000 n 0000018036 00000 n -0000738678 00000 n -0001166798 00000 n +0000743058 00000 n +0001172076 00000 n 0000018095 00000 n 0000018159 00000 n -0000738937 00000 n -0001166705 00000 n +0000746825 00000 n +0001171983 00000 n 0000018218 00000 n 0000018274 00000 n -0000743094 00000 n -0001166612 00000 n +0000749876 00000 n +0001171890 00000 n 0000018333 00000 n 0000018391 00000 n -0000745115 00000 n -0001166533 00000 n +0000750135 00000 n +0001171811 00000 n 0000018450 00000 n 0000018512 00000 n -0000747283 00000 n -0001166400 00000 n +0000752303 00000 n +0001171678 00000 n 0000018559 00000 n 0000018611 00000 n -0000747411 00000 n -0001166321 00000 n +0000752431 00000 n +0001171599 00000 n 0000018660 00000 n 0000018704 00000 n -0000751446 00000 n -0001166189 00000 n +0000756231 00000 n +0001171467 00000 n 0000018753 00000 n 0000018794 00000 n -0000751575 00000 n -0001166110 00000 n +0000756360 00000 n +0001171388 00000 n 0000018848 00000 n 0000018896 00000 n -0000751703 00000 n -0001166031 00000 n +0000756489 00000 n +0001171309 00000 n 0000018950 00000 n 0000019001 00000 n -0000751832 00000 n -0001165952 00000 n +0000756617 00000 n +0001171230 00000 n 0000019050 00000 n 0000019097 00000 n -0000756431 00000 n -0001165819 00000 n +0000760876 00000 n +0001171097 00000 n 0000019144 00000 n 0000019181 00000 n -0000756560 00000 n -0001165701 00000 n +0000761005 00000 n +0001170979 00000 n 0000019230 00000 n 0000019269 00000 n -0000756689 00000 n -0001165636 00000 n +0000761134 00000 n +0001170914 00000 n 0000019323 00000 n 0000019401 00000 n -0000756818 00000 n -0001165543 00000 n +0000761263 00000 n +0001170821 00000 n 0000019450 00000 n 0000019517 00000 n -0000756947 00000 n -0001165464 00000 n +0000761392 00000 n +0001170742 00000 n 0000019566 00000 n 0000019611 00000 n -0000760388 00000 n -0001165331 00000 n +0000764833 00000 n +0001170609 00000 n 0000019659 00000 n 0000019691 00000 n -0000760517 00000 n -0001165213 00000 n +0000764962 00000 n +0001170491 00000 n 0000019740 00000 n 0000019779 00000 n -0000760646 00000 n -0001165148 00000 n +0000765091 00000 n +0001170426 00000 n 0000019833 00000 n 0000019894 00000 n -0000764328 00000 n -0001165016 00000 n +0000768774 00000 n +0001170294 00000 n 0000019943 00000 n 0000020000 00000 n -0000764457 00000 n -0001164951 00000 n +0000768903 00000 n +0001170229 00000 n 0000020054 00000 n 0000020103 00000 n -0000764586 00000 n -0001164819 00000 n +0000769032 00000 n +0001170097 00000 n 0000020152 00000 n 0000020214 00000 n -0000764715 00000 n -0001164740 00000 n +0000769161 00000 n +0001170018 00000 n 0000020268 00000 n 0000020323 00000 n -0000789557 00000 n -0001164647 00000 n +0000794003 00000 n +0001169925 00000 n 0000020377 00000 n 0000020418 00000 n -0000789686 00000 n -0001164568 00000 n +0000794132 00000 n +0001169846 00000 n 0000020472 00000 n 0000020524 00000 n -0000790075 00000 n -0001164450 00000 n +0000794521 00000 n +0001169728 00000 n 0000020573 00000 n 0000020623 00000 n -0000792896 00000 n -0001164371 00000 n +0000797343 00000 n +0001169649 00000 n 0000020677 00000 n 0000020715 00000 n -0000793025 00000 n -0001164278 00000 n +0000797472 00000 n +0001169556 00000 n 0000020769 00000 n 0000020806 00000 n -0000793154 00000 n -0001164185 00000 n +0000797601 00000 n +0001169463 00000 n 0000020860 00000 n 0000020898 00000 n -0000793283 00000 n -0001164092 00000 n +0000797730 00000 n +0001169370 00000 n 0000020952 00000 n 0000021004 00000 n -0000796519 00000 n -0001163999 00000 n +0000800966 00000 n +0001169277 00000 n 0000021058 00000 n 0000021101 00000 n -0000796647 00000 n -0001163867 00000 n +0000801094 00000 n +0001169145 00000 n 0000021155 00000 n 0000021200 00000 n -0000796775 00000 n -0001163788 00000 n +0000801222 00000 n +0001169066 00000 n 0000021259 00000 n 0000021325 00000 n -0000799761 00000 n -0001163695 00000 n +0000804208 00000 n +0001168973 00000 n 0000021384 00000 n 0000021472 00000 n -0000799890 00000 n -0001163602 00000 n +0000804337 00000 n +0001168880 00000 n 0000021531 00000 n 0000021606 00000 n -0000800019 00000 n -0001163509 00000 n +0000804466 00000 n +0001168787 00000 n 0000021665 00000 n 0000021750 00000 n -0000802928 00000 n -0001163416 00000 n +0000807374 00000 n +0001168694 00000 n 0000021809 00000 n 0000021890 00000 n -0000805389 00000 n -0001163337 00000 n +0000809835 00000 n +0001168615 00000 n 0000021949 00000 n 0000022033 00000 n -0000805518 00000 n -0001163258 00000 n +0000809964 00000 n +0001168536 00000 n 0000022087 00000 n 0000022131 00000 n -0000808347 00000 n -0001163138 00000 n +0000812864 00000 n +0001168416 00000 n 0000022179 00000 n 0000022213 00000 n -0000808476 00000 n -0001163059 00000 n +0000812993 00000 n +0001168337 00000 n 0000022262 00000 n 0000022289 00000 n -0000826443 00000 n -0001162966 00000 n +0000831153 00000 n +0001168244 00000 n 0000022338 00000 n 0000022366 00000 n -0000834001 00000 n -0001162873 00000 n +0000838711 00000 n +0001168151 00000 n 0000022415 00000 n 0000022455 00000 n -0000840285 00000 n -0001162780 00000 n +0000844995 00000 n +0001168058 00000 n 0000022504 00000 n 0000022547 00000 n -0000846820 00000 n -0001162687 00000 n +0000851530 00000 n +0001167965 00000 n 0000022596 00000 n 0000022633 00000 n -0000860111 00000 n -0001162594 00000 n +0000864820 00000 n +0001167872 00000 n 0000022682 00000 n 0000022719 00000 n -0000862987 00000 n -0001162501 00000 n +0000867695 00000 n +0001167779 00000 n 0000022768 00000 n 0000022806 00000 n -0000869773 00000 n -0001162408 00000 n +0000874480 00000 n +0001167686 00000 n 0000022855 00000 n 0000022894 00000 n -0000883267 00000 n -0001162315 00000 n +0000887974 00000 n +0001167593 00000 n 0000022943 00000 n 0000022982 00000 n -0000886248 00000 n -0001162222 00000 n +0000890955 00000 n +0001167500 00000 n 0000023032 00000 n 0000023072 00000 n -0000895738 00000 n -0001162129 00000 n +0000900381 00000 n +0001167407 00000 n 0000023122 00000 n 0000023152 00000 n -0000904634 00000 n -0001162036 00000 n +0000909494 00000 n +0001167314 00000 n 0000023202 00000 n 0000023245 00000 n -0000908923 00000 n -0001161943 00000 n +0000913381 00000 n +0001167221 00000 n 0000023295 00000 n 0000023328 00000 n -0000922876 00000 n -0001161850 00000 n +0000927209 00000 n +0001167128 00000 n 0000023378 00000 n 0000023407 00000 n -0000926106 00000 n -0001161757 00000 n +0000930342 00000 n +0001167035 00000 n 0000023457 00000 n 0000023491 00000 n -0000932020 00000 n -0001161664 00000 n +0000936585 00000 n +0001166942 00000 n 0000023541 00000 n 0000023578 00000 n -0000938780 00000 n -0001161571 00000 n +0000943343 00000 n +0001166849 00000 n 0000023628 00000 n 0000023665 00000 n -0000941136 00000 n -0001161478 00000 n +0000946092 00000 n +0001166756 00000 n 0000023715 00000 n 0000023748 00000 n -0000941590 00000 n -0001161385 00000 n +0000948156 00000 n +0001166663 00000 n 0000023798 00000 n 0000023832 00000 n -0000944356 00000 n -0001161292 00000 n +0000948673 00000 n +0001166570 00000 n 0000023882 00000 n 0000023921 00000 n -0000946966 00000 n -0001161213 00000 n +0000951550 00000 n +0001166491 00000 n 0000023971 00000 n 0000024005 00000 n 0000024378 00000 n @@ -17313,10 +17289,10 @@ xref 0000024058 00000 n 0000289175 00000 n 0000289238 00000 n -0001155435 00000 n -0001129350 00000 n -0001155261 00000 n -0001156473 00000 n +0001160695 00000 n +0001134610 00000 n +0001160521 00000 n +0001161733 00000 n 0000025809 00000 n 0000026002 00000 n 0000026082 00000 n @@ -17332,1818 +17308,1826 @@ xref 0000104827 00000 n 0000170417 00000 n 0000236007 00000 n -0000290731 00000 n -0000290546 00000 n +0000290741 00000 n +0000290556 00000 n 0000289401 00000 n -0000290668 00000 n -0001128114 00000 n -0001101495 00000 n -0001127940 00000 n -0001100810 00000 n -0001098665 00000 n -0001100646 00000 n -0000302473 00000 n -0000293782 00000 n -0000290816 00000 n -0000302347 00000 n -0000302410 00000 n -0000294336 00000 n -0000294490 00000 n -0000294647 00000 n -0000294804 00000 n -0000294961 00000 n -0000295118 00000 n -0000295280 00000 n -0000295442 00000 n -0000295603 00000 n -0000295765 00000 n -0000295932 00000 n -0000296099 00000 n -0000296264 00000 n -0000296426 00000 n -0000296592 00000 n -0000296754 00000 n -0000296908 00000 n -0000297065 00000 n -0000297222 00000 n -0000297378 00000 n -0000297534 00000 n -0000297691 00000 n -0000297846 00000 n -0000298003 00000 n -0000298165 00000 n -0000298327 00000 n -0000298484 00000 n -0000298639 00000 n -0000298800 00000 n -0000298967 00000 n -0000299134 00000 n -0000299296 00000 n -0000299452 00000 n -0000299610 00000 n -0000299768 00000 n -0000299931 00000 n -0000300089 00000 n -0000300247 00000 n -0000300409 00000 n -0000300567 00000 n -0000300730 00000 n -0000300898 00000 n -0000301066 00000 n -0000301229 00000 n -0000301392 00000 n -0000301555 00000 n -0000301717 00000 n -0000301880 00000 n -0000302036 00000 n -0000302192 00000 n -0000315981 00000 n -0000305912 00000 n -0000302558 00000 n -0000315916 00000 n -0001098077 00000 n -0001080656 00000 n -0001097891 00000 n -0000306562 00000 n -0000306726 00000 n -0000306889 00000 n -0000307053 00000 n -0000307212 00000 n -0000307376 00000 n -0000307540 00000 n -0000307704 00000 n -0000307868 00000 n -0000308032 00000 n -0000308196 00000 n -0000308360 00000 n -0000308524 00000 n -0000308688 00000 n -0000308853 00000 n -0000309018 00000 n -0000309183 00000 n -0000309348 00000 n -0000309508 00000 n -0000309673 00000 n -0000309837 00000 n -0000309997 00000 n -0000310162 00000 n -0000310332 00000 n -0000310502 00000 n -0000310672 00000 n -0000310836 00000 n -0000311005 00000 n -0000311175 00000 n -0000311345 00000 n -0000311509 00000 n -0000311674 00000 n -0000311839 00000 n -0000312004 00000 n -0000312164 00000 n -0000312329 00000 n -0000312494 00000 n -0000312651 00000 n -0000312810 00000 n -0000312969 00000 n -0000313125 00000 n -0000313284 00000 n -0000313448 00000 n -0000313617 00000 n -0000313786 00000 n -0000313950 00000 n -0000314119 00000 n -0000314288 00000 n -0000314447 00000 n -0000314611 00000 n -0000314775 00000 n -0000314939 00000 n -0000315103 00000 n -0000315267 00000 n -0000315431 00000 n -0000315593 00000 n -0000315754 00000 n -0000330136 00000 n -0000319588 00000 n -0000316081 00000 n -0000330071 00000 n -0000320256 00000 n -0000320420 00000 n -0000320589 00000 n -0000320758 00000 n -0000320926 00000 n -0000321090 00000 n -0000321253 00000 n -0000321417 00000 n -0000321581 00000 n -0000321745 00000 n -0000321908 00000 n -0000322077 00000 n -0000322246 00000 n -0000322414 00000 n -0000322583 00000 n -0000322752 00000 n -0000322921 00000 n -0000323090 00000 n -0000323259 00000 n -0000323427 00000 n -0000323597 00000 n -0000323767 00000 n -0000323937 00000 n -0000324107 00000 n -0000324277 00000 n -0000324447 00000 n -0000324617 00000 n -0000324787 00000 n -0000324957 00000 n -0000325127 00000 n -0000325296 00000 n -0000325460 00000 n -0000325624 00000 n -0000325788 00000 n -0000325952 00000 n -0000326116 00000 n -0000326279 00000 n -0000326443 00000 n -0000326607 00000 n -0000326770 00000 n -0000326934 00000 n -0000327098 00000 n -0000327262 00000 n -0000327431 00000 n -0000327600 00000 n -0000327768 00000 n -0000327937 00000 n -0000328095 00000 n -0000328257 00000 n -0000328425 00000 n -0000328592 00000 n -0000328755 00000 n -0000328918 00000 n -0000329081 00000 n -0000329244 00000 n -0000329412 00000 n -0000329579 00000 n -0000329745 00000 n -0000329910 00000 n -0000343318 00000 n -0000333744 00000 n -0000330236 00000 n -0000343253 00000 n -0000334376 00000 n -0000334539 00000 n -0000334697 00000 n -0000334865 00000 n -0000335028 00000 n -0000335196 00000 n -0000335364 00000 n -0000335531 00000 n -0001079765 00000 n -0001058431 00000 n -0001079589 00000 n -0000335697 00000 n -0000335864 00000 n -0000336020 00000 n -0000336177 00000 n -0000336335 00000 n -0000336498 00000 n -0000336661 00000 n -0000336819 00000 n -0000336975 00000 n -0000337133 00000 n -0000337296 00000 n -0000337454 00000 n -0000337612 00000 n -0000337769 00000 n -0000337927 00000 n -0000338090 00000 n -0000338248 00000 n -0000338411 00000 n -0000338569 00000 n -0000338732 00000 n -0000338895 00000 n -0000339058 00000 n -0000339216 00000 n -0000339379 00000 n -0000339542 00000 n -0000339705 00000 n -0000339868 00000 n -0000340031 00000 n -0000340194 00000 n -0000340362 00000 n -0000340530 00000 n -0000340697 00000 n -0000340864 00000 n -0000341032 00000 n -0000341200 00000 n -0000341363 00000 n -0000341519 00000 n -0000341677 00000 n -0000341835 00000 n -0000341993 00000 n -0000342151 00000 n -0000342309 00000 n -0000342467 00000 n -0000342625 00000 n -0000342783 00000 n -0000342939 00000 n -0000343096 00000 n -0000346157 00000 n -0000344278 00000 n -0000343432 00000 n -0000346092 00000 n -0000344506 00000 n -0000344665 00000 n -0000344824 00000 n -0001057463 00000 n -0001037493 00000 n -0001057288 00000 n -0000344982 00000 n -0000345141 00000 n -0000345299 00000 n -0000345458 00000 n -0000345617 00000 n -0000345776 00000 n -0000345933 00000 n -0001156594 00000 n -0000349280 00000 n -0000348513 00000 n -0000346258 00000 n -0000348701 00000 n -0000348829 00000 n -0000348957 00000 n -0000349085 00000 n -0000349150 00000 n -0000349215 00000 n -0001036676 00000 n -0001018211 00000 n -0001036501 00000 n -0000353817 00000 n -0000352676 00000 n -0000349408 00000 n -0000353178 00000 n -0000353243 00000 n -0000353370 00000 n -0000353498 00000 n -0000353626 00000 n -0000352832 00000 n -0000353026 00000 n -0000353752 00000 n -0000702777 00000 n -0000764779 00000 n -0000358499 00000 n -0000357441 00000 n -0000353945 00000 n -0000357922 00000 n -0000358050 00000 n -0000357597 00000 n -0000357760 00000 n -0000358178 00000 n -0000358306 00000 n -0000358434 00000 n -0000374296 00000 n -0000361740 00000 n -0000361165 00000 n -0000358627 00000 n -0000361291 00000 n -0000361419 00000 n -0000361547 00000 n -0000361675 00000 n -0000365198 00000 n -0000364032 00000 n -0000361854 00000 n -0000364494 00000 n -0000364622 00000 n -0000364750 00000 n -0000364878 00000 n -0000365006 00000 n -0000364188 00000 n -0000364341 00000 n -0000365133 00000 n -0000626071 00000 n -0000366275 00000 n -0000365956 00000 n -0000365284 00000 n -0000366082 00000 n -0000366210 00000 n -0001156719 00000 n -0000368318 00000 n -0000367615 00000 n -0000366375 00000 n -0000367741 00000 n -0000367869 00000 n -0000367996 00000 n -0000368124 00000 n -0000368253 00000 n -0000370897 00000 n -0000370267 00000 n -0000368418 00000 n -0000370573 00000 n -0000370702 00000 n -0000370767 00000 n -0000370832 00000 n -0000370414 00000 n -0000607020 00000 n -0000374490 00000 n -0000373785 00000 n -0000371011 00000 n -0000373911 00000 n -0000374040 00000 n -0000374167 00000 n -0001017528 00000 n -0001005466 00000 n -0001017349 00000 n -0000374425 00000 n -0000379097 00000 n -0000378207 00000 n -0000374618 00000 n -0000379032 00000 n -0001004893 00000 n -0000993960 00000 n -0001004714 00000 n -0000378381 00000 n -0000378536 00000 n -0000378706 00000 n -0000378861 00000 n -0000524492 00000 n -0000691960 00000 n -0000382462 00000 n -0000382271 00000 n -0000379266 00000 n -0000382397 00000 n -0000387241 00000 n -0000386843 00000 n -0000382604 00000 n -0000387176 00000 n -0000386990 00000 n -0001156844 00000 n -0000491355 00000 n -0000389484 00000 n -0000389036 00000 n -0000387397 00000 n -0000389162 00000 n -0000389290 00000 n -0000389355 00000 n -0000389420 00000 n -0000389953 00000 n -0000389762 00000 n -0000389612 00000 n -0000389888 00000 n -0000392648 00000 n -0000395238 00000 n -0000392483 00000 n -0000389995 00000 n -0000394786 00000 n -0000394915 00000 n -0000395044 00000 n -0000394291 00000 n -0000394453 00000 n -0000993054 00000 n -0000983034 00000 n -0000992880 00000 n -0000982470 00000 n -0000973384 00000 n -0000982295 00000 n -0000395173 00000 n -0000394615 00000 n -0000394120 00000 n -0000394178 00000 n -0000394268 00000 n -0000544452 00000 n -0000584547 00000 n -0000399868 00000 n -0000398932 00000 n -0000395409 00000 n -0000399416 00000 n -0000399545 00000 n -0000399674 00000 n -0000399088 00000 n -0000399254 00000 n -0000399803 00000 n -0000768810 00000 n -0000403588 00000 n -0000403268 00000 n -0000400024 00000 n -0000403394 00000 n -0000403523 00000 n -0000405164 00000 n -0000404784 00000 n -0000403729 00000 n -0000405099 00000 n -0000404931 00000 n -0001156969 00000 n -0000406741 00000 n -0000406422 00000 n -0000405265 00000 n -0000406548 00000 n -0000406677 00000 n -0000410203 00000 n -0000409367 00000 n -0000406855 00000 n -0000409493 00000 n -0000409622 00000 n -0000409751 00000 n -0000409880 00000 n -0000410009 00000 n -0000410138 00000 n -0000414052 00000 n -0000413155 00000 n -0000410345 00000 n -0000413472 00000 n -0000413601 00000 n -0000413730 00000 n -0000413302 00000 n -0000413859 00000 n -0000413988 00000 n -0000418170 00000 n -0000417593 00000 n -0000414193 00000 n -0000417719 00000 n -0000417848 00000 n -0000417976 00000 n -0000418105 00000 n -0000422201 00000 n -0000421753 00000 n -0000418312 00000 n -0000421879 00000 n -0000422008 00000 n -0000422136 00000 n -0000424201 00000 n -0000424010 00000 n -0000422329 00000 n -0000424136 00000 n -0001157094 00000 n -0000427470 00000 n -0000427021 00000 n -0000424302 00000 n -0000427147 00000 n -0000973109 00000 n -0000969750 00000 n -0000972930 00000 n -0000427276 00000 n -0000427405 00000 n -0000431533 00000 n -0000430596 00000 n -0000427641 00000 n -0000431081 00000 n -0000431210 00000 n -0000431339 00000 n -0000969395 00000 n -0000967397 00000 n -0000969230 00000 n -0000430752 00000 n -0000430917 00000 n -0000431468 00000 n -0000846884 00000 n -0000863051 00000 n -0000434908 00000 n -0000434331 00000 n -0000431661 00000 n -0000434457 00000 n -0000434586 00000 n -0000434715 00000 n -0000434844 00000 n -0000438906 00000 n -0000437510 00000 n -0000435022 00000 n -0000437813 00000 n -0000437942 00000 n -0000438070 00000 n -0000438199 00000 n -0000438328 00000 n -0000438455 00000 n -0000438584 00000 n -0000438713 00000 n -0000438842 00000 n -0000437657 00000 n -0000654219 00000 n -0000442628 00000 n -0000442179 00000 n -0000439034 00000 n -0000442305 00000 n -0000442434 00000 n -0000442563 00000 n -0000445788 00000 n -0000445468 00000 n -0000442742 00000 n -0000445594 00000 n -0000445723 00000 n -0001157219 00000 n -0000448611 00000 n -0000448163 00000 n -0000445958 00000 n -0000448289 00000 n -0000448418 00000 n -0000448546 00000 n -0000451649 00000 n -0000451073 00000 n -0000448768 00000 n -0000451199 00000 n -0000451328 00000 n -0000451457 00000 n -0000451586 00000 n -0000454531 00000 n -0000453825 00000 n -0000451763 00000 n -0000453951 00000 n -0000454080 00000 n -0000454209 00000 n -0000454338 00000 n -0000454467 00000 n -0000457225 00000 n -0000457034 00000 n -0000454645 00000 n -0000457160 00000 n -0000459732 00000 n -0000460980 00000 n -0000459606 00000 n -0000457339 00000 n -0000460658 00000 n -0000460787 00000 n -0000460915 00000 n -0000464030 00000 n -0000463271 00000 n -0000461151 00000 n -0000463578 00000 n -0000463707 00000 n -0000463418 00000 n -0000463836 00000 n -0000463965 00000 n -0001157344 00000 n -0000764521 00000 n -0000466730 00000 n -0000466152 00000 n -0000464158 00000 n -0000466278 00000 n -0000466407 00000 n -0000466536 00000 n -0000466665 00000 n -0000467171 00000 n -0000466980 00000 n -0000466830 00000 n -0000467106 00000 n -0000471258 00000 n -0000470492 00000 n -0000467213 00000 n -0000470806 00000 n -0000470935 00000 n -0000471063 00000 n -0000471128 00000 n -0000471193 00000 n -0000470639 00000 n -0000475756 00000 n -0000475948 00000 n -0000475501 00000 n -0000471358 00000 n -0000475627 00000 n -0000475883 00000 n -0000479800 00000 n -0000479222 00000 n -0000476076 00000 n -0000479348 00000 n -0000479477 00000 n -0000479606 00000 n -0000479735 00000 n -0000482910 00000 n -0000482332 00000 n -0000479941 00000 n -0000482458 00000 n -0000482587 00000 n -0000482716 00000 n -0000482781 00000 n -0000482845 00000 n -0001157469 00000 n -0000486235 00000 n -0000485531 00000 n -0000483067 00000 n -0000485657 00000 n -0000485786 00000 n -0000485914 00000 n -0000485979 00000 n -0000486044 00000 n -0000486170 00000 n -0000491548 00000 n -0000490760 00000 n -0000486349 00000 n -0000491226 00000 n -0000490916 00000 n -0000491067 00000 n -0000491484 00000 n -0000948376 00000 n -0000495413 00000 n -0000494142 00000 n -0000491689 00000 n -0000494832 00000 n -0000494961 00000 n -0000495090 00000 n -0000495219 00000 n -0000494307 00000 n -0000494459 00000 n -0000494645 00000 n -0000495348 00000 n -0000499560 00000 n -0000499111 00000 n -0000495541 00000 n -0000499237 00000 n -0000499366 00000 n -0000499495 00000 n -0000503466 00000 n -0000503087 00000 n -0000499688 00000 n -0000503401 00000 n -0000503234 00000 n -0000506316 00000 n -0000506511 00000 n -0000506061 00000 n -0000503580 00000 n -0000506187 00000 n -0000506381 00000 n -0000506446 00000 n -0001157594 00000 n -0000510072 00000 n -0000509881 00000 n -0000506625 00000 n -0000510007 00000 n -0000513619 00000 n -0000513170 00000 n -0000510186 00000 n -0000513296 00000 n -0000513424 00000 n -0000513489 00000 n -0000513554 00000 n -0000517215 00000 n -0000516432 00000 n -0000513733 00000 n -0000516893 00000 n -0000517022 00000 n -0000517150 00000 n -0000516588 00000 n -0000516741 00000 n -0000519411 00000 n -0000518833 00000 n -0000517329 00000 n -0000518959 00000 n -0000519088 00000 n -0000519217 00000 n -0000519346 00000 n -0000520991 00000 n -0000520800 00000 n -0000519525 00000 n -0000520926 00000 n -0000522519 00000 n -0000522328 00000 n -0000521092 00000 n -0000522454 00000 n -0001157719 00000 n -0000524556 00000 n -0000524237 00000 n -0000522620 00000 n -0000524363 00000 n -0000528083 00000 n -0000527892 00000 n -0000524670 00000 n -0000528018 00000 n -0000532444 00000 n -0000532075 00000 n -0000528225 00000 n -0000532379 00000 n -0000532222 00000 n -0000731826 00000 n -0000536380 00000 n -0000535998 00000 n -0000532572 00000 n -0000536315 00000 n -0000536145 00000 n -0000540898 00000 n -0000540533 00000 n -0000536508 00000 n -0000540833 00000 n -0000540680 00000 n -0000544646 00000 n -0000544197 00000 n -0000541040 00000 n -0000544323 00000 n -0000544517 00000 n -0000544581 00000 n -0001157844 00000 n -0000548947 00000 n -0000548581 00000 n -0000544774 00000 n -0000548882 00000 n -0000548728 00000 n -0000554031 00000 n -0000552898 00000 n -0000549075 00000 n -0000553966 00000 n -0000553081 00000 n -0000553237 00000 n -0000553422 00000 n -0000553596 00000 n -0000553781 00000 n -0000640740 00000 n -0000558307 00000 n -0000558116 00000 n -0000554229 00000 n -0000558242 00000 n -0000562260 00000 n -0000562069 00000 n -0000558421 00000 n -0000562195 00000 n -0000566114 00000 n -0000565794 00000 n -0000562374 00000 n -0000565920 00000 n -0000566049 00000 n -0000569878 00000 n -0000569062 00000 n -0000566228 00000 n -0000569555 00000 n -0000569218 00000 n -0000569684 00000 n -0000569813 00000 n -0000569388 00000 n -0001157969 00000 n -0000659573 00000 n -0000574304 00000 n -0000573613 00000 n -0000570035 00000 n -0000574110 00000 n -0000573769 00000 n -0000573939 00000 n -0000574239 00000 n -0000751896 00000 n -0000577652 00000 n -0000577332 00000 n -0000574432 00000 n -0000577458 00000 n -0000577587 00000 n -0000580605 00000 n -0000580414 00000 n -0000577766 00000 n -0000580540 00000 n -0000584611 00000 n -0000584292 00000 n -0000580776 00000 n -0000584418 00000 n -0000588170 00000 n -0000587979 00000 n -0000584768 00000 n -0000588105 00000 n -0000592511 00000 n -0000591697 00000 n -0000588341 00000 n -0000592188 00000 n -0000592317 00000 n -0000591853 00000 n -0000592446 00000 n -0000592014 00000 n -0001158094 00000 n -0000596595 00000 n -0000595971 00000 n -0000592668 00000 n -0000596273 00000 n -0000596402 00000 n -0000596118 00000 n -0000596531 00000 n -0000599815 00000 n -0000599495 00000 n -0000596723 00000 n -0000599621 00000 n -0000599750 00000 n -0000603666 00000 n -0000603000 00000 n -0000599972 00000 n -0000603473 00000 n -0000603601 00000 n -0000603156 00000 n -0000603317 00000 n -0000607215 00000 n -0000606574 00000 n -0000603837 00000 n -0000606891 00000 n -0000606721 00000 n -0000607085 00000 n -0000607150 00000 n -0000611096 00000 n -0000610593 00000 n -0000607400 00000 n -0000610902 00000 n -0000611031 00000 n -0000610740 00000 n -0000615678 00000 n -0000615303 00000 n -0000611267 00000 n -0000615613 00000 n -0000615450 00000 n -0001158219 00000 n -0000728061 00000 n -0000619594 00000 n -0000618956 00000 n -0000615806 00000 n -0000619272 00000 n -0000619401 00000 n -0000619103 00000 n -0000619529 00000 n -0000657690 00000 n -0000622185 00000 n -0000621994 00000 n -0000619721 00000 n -0000622120 00000 n -0000626264 00000 n -0000625817 00000 n -0000622355 00000 n -0000625943 00000 n -0000626199 00000 n -0000630269 00000 n -0000629906 00000 n -0000626378 00000 n -0000630204 00000 n -0000630053 00000 n -0000634441 00000 n -0000634121 00000 n -0000630397 00000 n -0000634247 00000 n -0000634376 00000 n -0000638406 00000 n -0000638215 00000 n -0000634568 00000 n -0000638341 00000 n -0001158344 00000 n -0000640805 00000 n -0000640356 00000 n -0000638533 00000 n -0000640482 00000 n -0000640611 00000 n -0000645519 00000 n -0000644988 00000 n -0000640919 00000 n -0000645454 00000 n -0000645144 00000 n -0000645295 00000 n -0000649846 00000 n -0000648964 00000 n -0000645619 00000 n -0000649265 00000 n -0000649394 00000 n -0000649523 00000 n -0000649652 00000 n -0000649781 00000 n -0000649111 00000 n -0000654284 00000 n -0000653835 00000 n -0000649960 00000 n -0000653961 00000 n -0000654090 00000 n -0000657884 00000 n -0000657435 00000 n -0000654426 00000 n -0000657561 00000 n -0000657819 00000 n -0000659638 00000 n -0000659318 00000 n -0000657998 00000 n -0000659444 00000 n -0001158469 00000 n -0000661250 00000 n -0000661059 00000 n -0000659752 00000 n -0000661185 00000 n -0000662636 00000 n -0000662445 00000 n -0000661351 00000 n -0000662571 00000 n -0000666358 00000 n -0000665779 00000 n -0000662737 00000 n -0000665905 00000 n -0000666034 00000 n -0000666163 00000 n -0000666228 00000 n -0000666293 00000 n -0000670465 00000 n -0000669957 00000 n -0000666472 00000 n -0000670271 00000 n -0000670104 00000 n -0000670400 00000 n -0000948343 00000 n -0000676387 00000 n -0000673480 00000 n -0000670579 00000 n -0000676193 00000 n -0000676322 00000 n -0000673753 00000 n -0000673915 00000 n -0000674077 00000 n -0000674239 00000 n -0000674401 00000 n -0000674563 00000 n -0000674734 00000 n -0000674896 00000 n -0000675059 00000 n -0000675219 00000 n -0000675380 00000 n -0000675543 00000 n -0000675706 00000 n -0000675869 00000 n -0000676032 00000 n -0000681485 00000 n -0000679568 00000 n -0000676501 00000 n -0000681420 00000 n -0000679796 00000 n -0000679957 00000 n -0000680125 00000 n -0000680295 00000 n -0000680456 00000 n -0000680618 00000 n -0000680780 00000 n -0000680942 00000 n -0000681105 00000 n -0000681259 00000 n -0001158594 00000 n -0000686017 00000 n -0000684655 00000 n -0000681613 00000 n -0000685952 00000 n -0000684856 00000 n -0000685010 00000 n -0000685164 00000 n -0000685318 00000 n -0000685472 00000 n -0000685634 00000 n -0000685794 00000 n -0000692025 00000 n -0000689661 00000 n -0000686145 00000 n -0000691833 00000 n -0000689907 00000 n -0000690068 00000 n -0000690230 00000 n -0000690392 00000 n -0000690554 00000 n -0000690708 00000 n -0000690871 00000 n -0000691026 00000 n -0000691191 00000 n -0000691357 00000 n -0000691519 00000 n -0000691673 00000 n -0000696120 00000 n -0000695799 00000 n -0000692153 00000 n -0000695925 00000 n -0000695990 00000 n -0000696055 00000 n -0000698894 00000 n -0000698703 00000 n -0000696262 00000 n -0000698829 00000 n -0000703101 00000 n -0000702031 00000 n -0000699052 00000 n -0000702519 00000 n -0000702648 00000 n -0000702906 00000 n -0000702187 00000 n -0000702357 00000 n -0000702971 00000 n -0000703036 00000 n -0000706552 00000 n -0000706232 00000 n -0000703229 00000 n -0000706358 00000 n -0000706423 00000 n -0000706487 00000 n -0001158719 00000 n -0000710040 00000 n -0000709719 00000 n -0000706653 00000 n -0000709845 00000 n -0000709910 00000 n -0000709975 00000 n -0000713961 00000 n -0000713252 00000 n -0000710155 00000 n -0000713378 00000 n -0000713507 00000 n -0000713572 00000 n -0000713637 00000 n -0000713702 00000 n -0000713767 00000 n -0000713896 00000 n -0000718202 00000 n -0000717365 00000 n -0000714075 00000 n -0000717491 00000 n -0000717556 00000 n -0000717621 00000 n -0000717750 00000 n -0000717815 00000 n -0000717880 00000 n -0000718009 00000 n -0000718074 00000 n -0000718138 00000 n -0000721229 00000 n -0000720527 00000 n -0000718330 00000 n -0000720653 00000 n -0000720780 00000 n -0000720907 00000 n -0000721036 00000 n -0000721164 00000 n -0000723939 00000 n -0000723362 00000 n -0000721428 00000 n -0000723488 00000 n -0000723617 00000 n -0000723746 00000 n -0000723811 00000 n -0000723875 00000 n -0000728126 00000 n -0000727806 00000 n -0000724124 00000 n -0000727932 00000 n -0001158844 00000 n -0000731891 00000 n -0000731131 00000 n -0000728253 00000 n -0000731438 00000 n -0000731567 00000 n -0000731632 00000 n -0000731697 00000 n -0000731278 00000 n -0000735582 00000 n -0000735003 00000 n -0000732005 00000 n -0000735129 00000 n -0000735258 00000 n -0000735387 00000 n -0000735452 00000 n +0000290678 00000 n +0001133374 00000 n +0001106755 00000 n +0001133200 00000 n +0001106070 00000 n +0001103926 00000 n +0001105906 00000 n +0000302483 00000 n +0000293792 00000 n +0000290826 00000 n +0000302357 00000 n +0000302420 00000 n +0000294346 00000 n +0000294500 00000 n +0000294657 00000 n +0000294814 00000 n +0000294971 00000 n +0000295128 00000 n +0000295290 00000 n +0000295452 00000 n +0000295613 00000 n +0000295775 00000 n +0000295942 00000 n +0000296109 00000 n +0000296274 00000 n +0000296436 00000 n +0000296602 00000 n +0000296764 00000 n +0000296918 00000 n +0000297075 00000 n +0000297232 00000 n +0000297388 00000 n +0000297544 00000 n +0000297701 00000 n +0000297856 00000 n +0000298013 00000 n +0000298175 00000 n +0000298337 00000 n +0000298494 00000 n +0000298649 00000 n +0000298810 00000 n +0000298977 00000 n +0000299144 00000 n +0000299306 00000 n +0000299462 00000 n +0000299620 00000 n +0000299778 00000 n +0000299941 00000 n +0000300099 00000 n +0000300257 00000 n +0000300419 00000 n +0000300577 00000 n +0000300740 00000 n +0000300908 00000 n +0000301076 00000 n +0000301239 00000 n +0000301402 00000 n +0000301565 00000 n +0000301727 00000 n +0000301890 00000 n +0000302046 00000 n +0000302202 00000 n +0000315989 00000 n +0000305921 00000 n +0000302568 00000 n +0000315924 00000 n +0001103338 00000 n +0001085917 00000 n +0001103152 00000 n +0000306571 00000 n +0000306735 00000 n +0000306898 00000 n +0000307062 00000 n +0000307221 00000 n +0000307385 00000 n +0000307549 00000 n +0000307713 00000 n +0000307877 00000 n +0000308041 00000 n +0000308205 00000 n +0000308369 00000 n +0000308533 00000 n +0000308697 00000 n +0000308862 00000 n +0000309027 00000 n +0000309192 00000 n +0000309357 00000 n +0000309517 00000 n +0000309682 00000 n +0000309846 00000 n +0000310006 00000 n +0000310171 00000 n +0000310341 00000 n +0000310511 00000 n +0000310681 00000 n +0000310845 00000 n +0000311014 00000 n +0000311184 00000 n +0000311354 00000 n +0000311518 00000 n +0000311683 00000 n +0000311848 00000 n +0000312013 00000 n +0000312173 00000 n +0000312338 00000 n +0000312503 00000 n +0000312660 00000 n +0000312819 00000 n +0000312978 00000 n +0000313134 00000 n +0000313293 00000 n +0000313457 00000 n +0000313626 00000 n +0000313795 00000 n +0000313959 00000 n +0000314128 00000 n +0000314297 00000 n +0000314456 00000 n +0000314620 00000 n +0000314784 00000 n +0000314948 00000 n +0000315112 00000 n +0000315275 00000 n +0000315439 00000 n +0000315601 00000 n +0000315762 00000 n +0000330149 00000 n +0000319601 00000 n +0000316089 00000 n +0000330084 00000 n +0000320269 00000 n +0000320433 00000 n +0000320602 00000 n +0000320771 00000 n +0000320939 00000 n +0000321103 00000 n +0000321267 00000 n +0000321431 00000 n +0000321595 00000 n +0000321759 00000 n +0000321922 00000 n +0000322091 00000 n +0000322260 00000 n +0000322428 00000 n +0000322597 00000 n +0000322766 00000 n +0000322935 00000 n +0000323104 00000 n +0000323273 00000 n +0000323441 00000 n +0000323611 00000 n +0000323781 00000 n +0000323951 00000 n +0000324121 00000 n +0000324291 00000 n +0000324461 00000 n +0000324631 00000 n +0000324801 00000 n +0000324970 00000 n +0000325140 00000 n +0000325309 00000 n +0000325473 00000 n +0000325637 00000 n +0000325801 00000 n +0000325965 00000 n +0000326129 00000 n +0000326292 00000 n +0000326456 00000 n +0000326620 00000 n +0000326783 00000 n +0000326947 00000 n +0000327111 00000 n +0000327275 00000 n +0000327444 00000 n +0000327613 00000 n +0000327781 00000 n +0000327950 00000 n +0000328108 00000 n +0000328270 00000 n +0000328438 00000 n +0000328605 00000 n +0000328768 00000 n +0000328931 00000 n +0000329094 00000 n +0000329257 00000 n +0000329425 00000 n +0000329592 00000 n +0000329758 00000 n +0000329923 00000 n +0000343329 00000 n +0000333754 00000 n +0000330249 00000 n +0000343264 00000 n +0000334386 00000 n +0000334549 00000 n +0000334707 00000 n +0000334875 00000 n +0000335038 00000 n +0000335206 00000 n +0000335374 00000 n +0000335541 00000 n +0001085026 00000 n +0001063691 00000 n +0001084850 00000 n +0000335708 00000 n +0000335875 00000 n +0000336031 00000 n +0000336189 00000 n +0000336347 00000 n +0000336510 00000 n +0000336673 00000 n +0000336831 00000 n +0000336987 00000 n +0000337145 00000 n +0000337308 00000 n +0000337466 00000 n +0000337623 00000 n +0000337780 00000 n +0000337938 00000 n +0000338101 00000 n +0000338259 00000 n +0000338422 00000 n +0000338580 00000 n +0000338743 00000 n +0000338906 00000 n +0000339069 00000 n +0000339227 00000 n +0000339390 00000 n +0000339553 00000 n +0000339716 00000 n +0000339879 00000 n +0000340042 00000 n +0000340205 00000 n +0000340373 00000 n +0000340541 00000 n +0000340708 00000 n +0000340875 00000 n +0000341043 00000 n +0000341211 00000 n +0000341374 00000 n +0000341530 00000 n +0000341688 00000 n +0000341846 00000 n +0000342004 00000 n +0000342162 00000 n +0000342320 00000 n +0000342478 00000 n +0000342636 00000 n +0000342794 00000 n +0000342950 00000 n +0000343107 00000 n +0000346169 00000 n +0000344288 00000 n +0000343443 00000 n +0000346104 00000 n +0000344516 00000 n +0000344675 00000 n +0000344834 00000 n +0001062712 00000 n +0001042585 00000 n +0001062537 00000 n +0000344992 00000 n +0000345151 00000 n +0000345310 00000 n +0000345469 00000 n +0000345628 00000 n +0000345787 00000 n +0000345945 00000 n +0001161854 00000 n +0000349292 00000 n +0000348525 00000 n +0000346270 00000 n +0000348713 00000 n +0000348841 00000 n +0000348969 00000 n +0000349097 00000 n +0000349162 00000 n +0000349227 00000 n +0001041768 00000 n +0001023303 00000 n +0001041593 00000 n +0000353829 00000 n +0000352688 00000 n +0000349420 00000 n +0000353190 00000 n +0000353255 00000 n +0000353382 00000 n +0000353510 00000 n +0000353638 00000 n +0000352844 00000 n +0000353038 00000 n +0000353764 00000 n +0000709956 00000 n +0000769225 00000 n +0000358511 00000 n +0000357453 00000 n +0000353957 00000 n +0000357934 00000 n +0000358062 00000 n +0000357609 00000 n +0000357772 00000 n +0000358190 00000 n +0000358318 00000 n +0000358446 00000 n +0000374308 00000 n +0000361752 00000 n +0000361177 00000 n +0000358639 00000 n +0000361303 00000 n +0000361431 00000 n +0000361559 00000 n +0000361687 00000 n +0000365210 00000 n +0000364044 00000 n +0000361866 00000 n +0000364506 00000 n +0000364634 00000 n +0000364762 00000 n +0000364890 00000 n +0000365018 00000 n +0000364200 00000 n +0000364353 00000 n +0000365145 00000 n +0000629290 00000 n +0000366287 00000 n +0000365968 00000 n +0000365296 00000 n +0000366094 00000 n +0000366222 00000 n +0001161979 00000 n +0000368330 00000 n +0000367627 00000 n +0000366387 00000 n +0000367753 00000 n +0000367881 00000 n +0000368008 00000 n +0000368136 00000 n +0000368265 00000 n +0000370909 00000 n +0000370279 00000 n +0000368430 00000 n +0000370585 00000 n +0000370714 00000 n +0000370779 00000 n +0000370844 00000 n +0000370426 00000 n +0000606869 00000 n +0000374502 00000 n +0000373797 00000 n +0000371023 00000 n +0000373923 00000 n +0000374052 00000 n +0000374179 00000 n +0001022620 00000 n +0001010558 00000 n +0001022441 00000 n +0000374437 00000 n +0000379109 00000 n +0000378219 00000 n +0000374630 00000 n +0000379044 00000 n +0001009985 00000 n +0000999051 00000 n +0001009806 00000 n +0000378393 00000 n +0000378548 00000 n +0000378718 00000 n +0000378873 00000 n +0000527038 00000 n +0000699616 00000 n +0000382474 00000 n +0000382283 00000 n +0000379278 00000 n +0000382409 00000 n +0000387252 00000 n +0000386854 00000 n +0000382616 00000 n +0000387187 00000 n +0000387001 00000 n +0001162104 00000 n +0000491494 00000 n +0000389495 00000 n +0000389047 00000 n +0000387408 00000 n +0000389173 00000 n +0000389301 00000 n +0000389366 00000 n +0000389431 00000 n +0000389964 00000 n +0000389773 00000 n +0000389623 00000 n +0000389899 00000 n +0000392659 00000 n +0000395249 00000 n +0000392494 00000 n +0000390006 00000 n +0000394797 00000 n +0000394926 00000 n +0000395055 00000 n +0000394302 00000 n +0000394464 00000 n +0000998145 00000 n +0000988125 00000 n +0000997971 00000 n +0000987561 00000 n +0000978474 00000 n +0000987386 00000 n +0000395184 00000 n +0000394626 00000 n +0000394131 00000 n +0000394189 00000 n +0000394279 00000 n +0000543785 00000 n +0000583851 00000 n +0000399879 00000 n +0000398943 00000 n +0000395420 00000 n +0000399427 00000 n +0000399556 00000 n +0000399685 00000 n +0000399099 00000 n +0000399265 00000 n +0000399814 00000 n +0000773256 00000 n +0000403599 00000 n +0000403279 00000 n +0000400035 00000 n +0000403405 00000 n +0000403534 00000 n +0000405175 00000 n +0000404795 00000 n +0000403740 00000 n +0000405110 00000 n +0000404942 00000 n +0001162229 00000 n +0000406752 00000 n +0000406433 00000 n +0000405276 00000 n +0000406559 00000 n +0000406688 00000 n +0000410214 00000 n +0000409378 00000 n +0000406866 00000 n +0000409504 00000 n +0000409633 00000 n +0000409762 00000 n +0000409891 00000 n +0000410020 00000 n +0000410149 00000 n +0000414063 00000 n +0000413166 00000 n +0000410356 00000 n +0000413483 00000 n +0000413612 00000 n +0000413741 00000 n +0000413313 00000 n +0000413870 00000 n +0000413999 00000 n +0000418181 00000 n +0000417604 00000 n +0000414204 00000 n +0000417730 00000 n +0000417859 00000 n +0000417987 00000 n +0000418116 00000 n +0000422212 00000 n +0000421764 00000 n +0000418323 00000 n +0000421890 00000 n +0000422019 00000 n +0000422147 00000 n +0000424212 00000 n +0000424021 00000 n +0000422340 00000 n +0000424147 00000 n +0001162354 00000 n +0000427481 00000 n +0000427032 00000 n +0000424313 00000 n +0000427158 00000 n +0000978199 00000 n +0000974840 00000 n +0000978020 00000 n +0000427287 00000 n +0000427416 00000 n +0000431544 00000 n +0000430607 00000 n +0000427652 00000 n +0000431092 00000 n +0000431221 00000 n +0000431350 00000 n +0000974485 00000 n +0000972488 00000 n +0000974320 00000 n +0000430763 00000 n +0000430928 00000 n +0000431479 00000 n +0000851594 00000 n +0000867759 00000 n +0000434919 00000 n +0000434342 00000 n +0000431672 00000 n +0000434468 00000 n +0000434597 00000 n +0000434726 00000 n +0000434855 00000 n +0000438917 00000 n +0000437521 00000 n +0000435033 00000 n +0000437824 00000 n +0000437953 00000 n +0000438081 00000 n +0000438210 00000 n +0000438339 00000 n +0000438466 00000 n +0000438595 00000 n +0000438724 00000 n +0000438853 00000 n +0000437668 00000 n +0000657791 00000 n +0000442639 00000 n +0000442190 00000 n +0000439045 00000 n +0000442316 00000 n +0000442445 00000 n +0000442574 00000 n +0000445798 00000 n +0000445478 00000 n +0000442753 00000 n +0000445604 00000 n +0000445733 00000 n +0001162479 00000 n +0000448621 00000 n +0000448173 00000 n +0000445968 00000 n +0000448299 00000 n +0000448428 00000 n +0000448556 00000 n +0000451659 00000 n +0000451083 00000 n +0000448778 00000 n +0000451209 00000 n +0000451338 00000 n +0000451467 00000 n +0000451596 00000 n +0000454541 00000 n +0000453835 00000 n +0000451773 00000 n +0000453961 00000 n +0000454090 00000 n +0000454219 00000 n +0000454348 00000 n +0000454477 00000 n +0000457235 00000 n +0000457044 00000 n +0000454655 00000 n +0000457170 00000 n +0000459742 00000 n +0000460990 00000 n +0000459616 00000 n +0000457349 00000 n +0000460668 00000 n +0000460797 00000 n +0000460925 00000 n +0000464040 00000 n +0000463281 00000 n +0000461161 00000 n +0000463588 00000 n +0000463717 00000 n +0000463428 00000 n +0000463846 00000 n +0000463975 00000 n +0001162604 00000 n +0000768967 00000 n +0000466740 00000 n +0000466162 00000 n +0000464168 00000 n +0000466288 00000 n +0000466417 00000 n +0000466546 00000 n +0000466675 00000 n +0000467181 00000 n +0000466990 00000 n +0000466840 00000 n +0000467116 00000 n +0000471268 00000 n +0000470502 00000 n +0000467223 00000 n +0000470816 00000 n +0000470945 00000 n +0000471073 00000 n +0000471138 00000 n +0000471203 00000 n +0000470649 00000 n +0000479498 00000 n +0000475963 00000 n +0000475772 00000 n +0000471368 00000 n +0000475898 00000 n +0000479950 00000 n +0000479243 00000 n +0000476105 00000 n +0000479369 00000 n +0000479627 00000 n +0000479756 00000 n +0000479885 00000 n +0000482869 00000 n +0000482163 00000 n +0000480091 00000 n +0000482289 00000 n +0000482418 00000 n +0000482547 00000 n +0000482676 00000 n +0000482741 00000 n +0000482805 00000 n +0001162729 00000 n +0000486202 00000 n +0000485626 00000 n +0000483026 00000 n +0000485752 00000 n +0000485880 00000 n +0000486009 00000 n +0000486073 00000 n +0000486137 00000 n +0000491559 00000 n +0000490771 00000 n +0000486316 00000 n +0000491237 00000 n +0000491366 00000 n +0000490927 00000 n +0000491078 00000 n +0000953467 00000 n +0000495545 00000 n +0000494145 00000 n +0000491700 00000 n +0000494836 00000 n +0000494965 00000 n +0000495094 00000 n +0000495223 00000 n +0000495352 00000 n +0000494310 00000 n +0000494462 00000 n +0000494649 00000 n +0000495480 00000 n +0000499373 00000 n +0000498924 00000 n +0000495673 00000 n +0000499050 00000 n +0000499179 00000 n +0000499308 00000 n +0000503601 00000 n +0000503222 00000 n +0000499501 00000 n +0000503536 00000 n +0000503369 00000 n +0000506109 00000 n +0000506302 00000 n +0000505854 00000 n +0000503715 00000 n +0000505980 00000 n +0000506174 00000 n +0000506238 00000 n +0001162854 00000 n +0000509440 00000 n +0000509249 00000 n +0000506416 00000 n +0000509375 00000 n +0000513040 00000 n +0000512594 00000 n +0000509554 00000 n +0000512720 00000 n +0000512847 00000 n +0000512912 00000 n +0000512976 00000 n +0000516141 00000 n +0000515821 00000 n +0000513154 00000 n +0000515947 00000 n +0000516076 00000 n +0000519366 00000 n +0000518325 00000 n +0000516255 00000 n +0000518785 00000 n +0000518914 00000 n +0000518481 00000 n +0000518634 00000 n +0000519043 00000 n +0000519172 00000 n +0000519301 00000 n +0000520863 00000 n +0000520672 00000 n +0000519480 00000 n +0000520798 00000 n +0000522420 00000 n +0000522229 00000 n +0000520964 00000 n +0000522355 00000 n +0001162979 00000 n +0000523887 00000 n +0000523696 00000 n +0000522521 00000 n +0000523822 00000 n +0000527103 00000 n +0000526783 00000 n +0000523988 00000 n +0000526909 00000 n +0000531230 00000 n +0000531039 00000 n +0000527231 00000 n +0000531165 00000 n +0000535702 00000 n +0000535154 00000 n +0000531372 00000 n +0000535637 00000 n +0000535310 00000 n +0000535467 00000 n +0000739089 00000 n +0000539952 00000 n +0000539553 00000 n +0000535830 00000 n +0000539887 00000 n +0000539700 00000 n +0000543850 00000 n +0000543530 00000 n +0000540094 00000 n +0000543656 00000 n +0001163104 00000 n +0000547691 00000 n +0000547371 00000 n +0000543978 00000 n +0000547497 00000 n +0000547562 00000 n +0000547626 00000 n +0000552917 00000 n +0000551623 00000 n +0000547819 00000 n +0000552852 00000 n +0000551815 00000 n +0000551969 00000 n +0000552126 00000 n +0000552311 00000 n +0000552485 00000 n +0000552669 00000 n +0000649507 00000 n +0000557284 00000 n +0000557093 00000 n +0000553088 00000 n +0000557219 00000 n +0000561443 00000 n +0000561252 00000 n +0000557425 00000 n +0000561378 00000 n +0000565121 00000 n +0000564930 00000 n +0000561557 00000 n +0000565056 00000 n +0000569726 00000 n +0000568784 00000 n +0000565235 00000 n +0000569275 00000 n +0000569404 00000 n +0000568940 00000 n +0000569533 00000 n +0000569662 00000 n +0000569110 00000 n +0001163229 00000 n +0000663992 00000 n +0000573118 00000 n +0000572738 00000 n +0000569840 00000 n +0000573053 00000 n +0000572885 00000 n +0000756681 00000 n +0000577221 00000 n +0000576709 00000 n +0000573275 00000 n +0000577027 00000 n +0000576856 00000 n +0000577156 00000 n +0000580787 00000 n +0000580467 00000 n +0000577349 00000 n +0000580593 00000 n +0000580722 00000 n +0000583916 00000 n +0000583596 00000 n +0000580901 00000 n +0000583722 00000 n +0000587963 00000 n +0000587772 00000 n +0000584073 00000 n +0000587898 00000 n +0000591141 00000 n +0000590640 00000 n +0000588077 00000 n +0000590947 00000 n +0000591076 00000 n +0000590787 00000 n +0001163354 00000 n +0000595748 00000 n +0000594940 00000 n +0000591312 00000 n +0000595425 00000 n +0000595554 00000 n +0000595096 00000 n +0000595683 00000 n +0000595270 00000 n +0000599585 00000 n +0000599265 00000 n +0000595862 00000 n +0000599391 00000 n +0000599520 00000 n +0000604062 00000 n +0000603266 00000 n +0000599756 00000 n +0000603740 00000 n +0000603869 00000 n +0000603997 00000 n +0000603422 00000 n +0000603584 00000 n +0000607063 00000 n +0000606423 00000 n +0000604233 00000 n +0000606740 00000 n +0000606570 00000 n +0000606934 00000 n +0000606999 00000 n +0000610316 00000 n +0000609997 00000 n +0000607191 00000 n +0000610123 00000 n +0000610252 00000 n +0000614779 00000 n +0000614236 00000 n +0000610501 00000 n +0000614714 00000 n +0000614392 00000 n +0000614553 00000 n +0001163479 00000 n 0000735517 00000 n -0000739196 00000 n -0000738301 00000 n -0000735696 00000 n -0000738613 00000 n -0000738448 00000 n -0000738742 00000 n -0000738807 00000 n -0000738872 00000 n -0000739001 00000 n -0000739066 00000 n -0000739131 00000 n -0000948310 00000 n -0000743353 00000 n -0000742903 00000 n -0000739310 00000 n -0000743029 00000 n -0000743158 00000 n -0000743223 00000 n -0000743288 00000 n -0000745244 00000 n -0000744924 00000 n -0000743481 00000 n -0000745050 00000 n -0000967116 00000 n -0000959832 00000 n -0000966936 00000 n -0000745179 00000 n -0000745727 00000 n -0000745536 00000 n -0000745386 00000 n -0000745662 00000 n -0001158969 00000 n -0000747539 00000 n -0000747092 00000 n -0000745769 00000 n -0000747218 00000 n -0000747347 00000 n -0000747474 00000 n -0000751961 00000 n -0000751018 00000 n -0000747653 00000 n -0000751381 00000 n -0000959511 00000 n -0000950298 00000 n -0000959325 00000 n -0000751165 00000 n -0000751510 00000 n -0000751638 00000 n -0000751767 00000 n -0000753320 00000 n -0000753129 00000 n -0000752202 00000 n -0000753255 00000 n -0000753761 00000 n -0000753570 00000 n -0000753420 00000 n -0000753696 00000 n -0000757075 00000 n -0000755849 00000 n -0000753803 00000 n -0000756366 00000 n -0000756495 00000 n -0000756624 00000 n -0000756753 00000 n -0000756882 00000 n -0000757011 00000 n -0000756005 00000 n -0000756177 00000 n -0000757530 00000 n -0000757339 00000 n -0000757189 00000 n -0000757465 00000 n -0001159094 00000 n -0000760775 00000 n -0000760197 00000 n -0000757572 00000 n -0000760323 00000 n -0000760452 00000 n -0000760581 00000 n -0000760710 00000 n -0000764972 00000 n -0000763753 00000 n -0000760861 00000 n -0000764263 00000 n -0000764392 00000 n -0000764650 00000 n -0000763909 00000 n -0000764088 00000 n -0000764844 00000 n -0000764908 00000 n -0000771862 00000 n -0000768034 00000 n -0000765128 00000 n -0000768160 00000 n -0000768225 00000 n -0000768290 00000 n +0000619376 00000 n +0000618867 00000 n +0000614893 00000 n +0000619183 00000 n +0000619311 00000 n +0000619014 00000 n +0000662146 00000 n +0000621810 00000 n +0000621491 00000 n +0000619518 00000 n +0000621617 00000 n +0000621746 00000 n +0000623518 00000 n +0000623327 00000 n +0000621923 00000 n +0000623453 00000 n +0000625620 00000 n +0000625429 00000 n +0000623618 00000 n +0000625555 00000 n +0000629355 00000 n +0000629035 00000 n +0000625734 00000 n +0000629161 00000 n +0000633840 00000 n +0000633295 00000 n +0000629498 00000 n +0000633646 00000 n +0000633775 00000 n +0000633442 00000 n +0001163604 00000 n +0000638155 00000 n +0000637835 00000 n +0000633968 00000 n +0000637961 00000 n +0000638090 00000 n +0000642066 00000 n +0000641875 00000 n +0000638282 00000 n +0000642001 00000 n +0000644513 00000 n +0000644193 00000 n +0000642193 00000 n +0000644319 00000 n +0000644448 00000 n +0000649572 00000 n +0000648913 00000 n +0000644627 00000 n +0000649378 00000 n +0000649069 00000 n +0000649220 00000 n +0000653688 00000 n +0000652807 00000 n +0000649686 00000 n +0000653107 00000 n +0000653236 00000 n +0000653365 00000 n +0000653494 00000 n +0000653623 00000 n +0000652954 00000 n +0000657856 00000 n +0000657408 00000 n +0000653802 00000 n +0000657534 00000 n +0000657663 00000 n +0001163729 00000 n +0000662340 00000 n +0000661891 00000 n +0000657984 00000 n +0000662017 00000 n +0000662275 00000 n +0000664057 00000 n +0000663737 00000 n +0000662468 00000 n +0000663863 00000 n +0000665611 00000 n +0000665420 00000 n +0000664171 00000 n +0000665546 00000 n +0000667071 00000 n +0000666880 00000 n +0000665712 00000 n +0000667006 00000 n +0000669826 00000 n +0000669247 00000 n +0000667172 00000 n +0000669373 00000 n +0000669502 00000 n +0000669631 00000 n +0000669696 00000 n +0000669761 00000 n +0000673491 00000 n +0000673300 00000 n +0000669940 00000 n +0000673426 00000 n +0001163854 00000 n +0000678747 00000 n +0000676904 00000 n +0000673605 00000 n +0000678424 00000 n +0000677114 00000 n +0000678553 00000 n +0000678682 00000 n +0000677282 00000 n +0000677444 00000 n +0000677606 00000 n +0000677768 00000 n +0000677930 00000 n +0000678092 00000 n +0000678263 00000 n +0000953434 00000 n +0000684108 00000 n +0000682015 00000 n +0000678861 00000 n +0000684043 00000 n +0000682252 00000 n +0000682415 00000 n +0000682577 00000 n +0000682740 00000 n +0000682903 00000 n +0000683066 00000 n +0000683229 00000 n +0000683391 00000 n +0000683554 00000 n +0000683714 00000 n +0000683875 00000 n +0000688921 00000 n +0000687351 00000 n +0000684236 00000 n +0000688856 00000 n +0000687561 00000 n +0000687731 00000 n +0000687892 00000 n +0000688053 00000 n +0000688215 00000 n +0000688377 00000 n +0000688540 00000 n +0000688693 00000 n +0000695218 00000 n +0000692326 00000 n +0000689049 00000 n +0000695153 00000 n +0000692608 00000 n +0000692761 00000 n +0000692915 00000 n +0000693065 00000 n +0000693219 00000 n +0000693381 00000 n +0000693543 00000 n +0000693704 00000 n +0000693866 00000 n +0000694028 00000 n +0000694190 00000 n +0000694352 00000 n +0000694504 00000 n +0000694667 00000 n +0000694822 00000 n +0000694987 00000 n +0000699681 00000 n +0000698842 00000 n +0000695360 00000 n +0000699487 00000 n +0000699007 00000 n +0000699170 00000 n +0000699324 00000 n +0000703134 00000 n +0000702814 00000 n +0000699809 00000 n +0000702940 00000 n +0000703005 00000 n +0000703069 00000 n +0001163979 00000 n +0000705928 00000 n +0000705737 00000 n +0000703276 00000 n +0000705863 00000 n +0000710410 00000 n +0000709211 00000 n +0000706099 00000 n +0000709698 00000 n +0000709827 00000 n +0000710085 00000 n +0000709367 00000 n +0000709537 00000 n +0000710150 00000 n +0000710215 00000 n +0000710280 00000 n +0000710345 00000 n +0000713613 00000 n +0000713422 00000 n +0000710524 00000 n +0000713548 00000 n +0000717704 00000 n +0000717125 00000 n +0000713700 00000 n +0000717251 00000 n +0000717316 00000 n +0000717381 00000 n +0000717510 00000 n +0000717574 00000 n +0000717639 00000 n +0000721743 00000 n +0000720905 00000 n +0000717832 00000 n +0000721031 00000 n +0000721096 00000 n +0000721161 00000 n +0000721290 00000 n +0000721355 00000 n +0000721420 00000 n +0000721548 00000 n +0000721613 00000 n +0000721678 00000 n +0000725583 00000 n +0000724748 00000 n +0000721871 00000 n +0000724874 00000 n +0000725003 00000 n +0000725067 00000 n +0000725132 00000 n +0000725260 00000 n +0000725389 00000 n +0000725518 00000 n +0001164104 00000 n +0000728470 00000 n +0000727892 00000 n +0000725796 00000 n +0000728018 00000 n +0000728147 00000 n +0000728276 00000 n +0000728405 00000 n +0000731874 00000 n +0000731553 00000 n +0000728655 00000 n +0000731679 00000 n +0000731744 00000 n +0000731809 00000 n +0000735841 00000 n +0000735262 00000 n +0000732001 00000 n +0000735388 00000 n +0000735646 00000 n +0000735711 00000 n +0000735776 00000 n +0000739542 00000 n +0000738653 00000 n +0000735969 00000 n +0000738960 00000 n +0000738800 00000 n +0000739218 00000 n +0000739347 00000 n +0000739412 00000 n +0000739477 00000 n +0000743317 00000 n +0000742681 00000 n +0000739656 00000 n +0000742993 00000 n +0000742828 00000 n +0000743122 00000 n +0000743187 00000 n +0000743252 00000 n +0000953401 00000 n +0000747083 00000 n +0000746634 00000 n +0000743431 00000 n +0000746760 00000 n +0000746889 00000 n +0000746954 00000 n +0000747019 00000 n +0001164229 00000 n +0000750264 00000 n +0000749685 00000 n +0000747197 00000 n +0000749811 00000 n +0000749940 00000 n +0000750005 00000 n +0000750070 00000 n +0000972207 00000 n +0000964923 00000 n +0000972027 00000 n +0000750199 00000 n +0000750747 00000 n +0000750556 00000 n +0000750406 00000 n +0000750682 00000 n +0000752559 00000 n +0000752112 00000 n +0000750789 00000 n +0000752238 00000 n +0000752367 00000 n +0000752494 00000 n +0000756746 00000 n +0000756040 00000 n +0000752673 00000 n +0000756166 00000 n +0000964602 00000 n +0000955389 00000 n +0000964416 00000 n +0000756295 00000 n +0000756424 00000 n +0000756552 00000 n +0000757778 00000 n +0000757587 00000 n +0000756973 00000 n +0000757713 00000 n +0000758206 00000 n +0000758015 00000 n +0000757865 00000 n +0000758141 00000 n +0001164354 00000 n +0000761520 00000 n +0000760294 00000 n +0000758248 00000 n +0000760811 00000 n +0000760940 00000 n +0000761069 00000 n +0000761198 00000 n +0000761327 00000 n +0000761456 00000 n +0000760450 00000 n +0000760622 00000 n +0000761975 00000 n +0000761784 00000 n +0000761634 00000 n +0000761910 00000 n +0000765220 00000 n +0000764642 00000 n +0000762017 00000 n +0000764768 00000 n +0000764897 00000 n +0000765026 00000 n +0000765155 00000 n +0000769418 00000 n +0000768199 00000 n +0000765306 00000 n +0000768709 00000 n +0000768838 00000 n +0000769096 00000 n 0000768355 00000 n -0000768420 00000 n -0000768485 00000 n -0000768550 00000 n -0000768615 00000 n -0000768680 00000 n -0000768745 00000 n -0000768875 00000 n -0000768940 00000 n -0000769005 00000 n -0000769070 00000 n -0000769135 00000 n -0000769200 00000 n -0000769265 00000 n -0000769330 00000 n -0000769395 00000 n -0000769460 00000 n -0000769525 00000 n -0000769590 00000 n -0000769655 00000 n -0000769720 00000 n -0000769785 00000 n -0000769850 00000 n -0000769915 00000 n -0000769980 00000 n -0000770045 00000 n -0000770110 00000 n -0000770175 00000 n -0000770240 00000 n -0000770305 00000 n -0000770370 00000 n -0000770434 00000 n -0000770499 00000 n -0000770564 00000 n -0000770629 00000 n -0000770694 00000 n -0000770759 00000 n -0000770824 00000 n -0000770889 00000 n -0000770954 00000 n -0000771019 00000 n -0000771084 00000 n -0000771149 00000 n -0000771214 00000 n -0000771279 00000 n -0000771344 00000 n -0000771409 00000 n -0000771474 00000 n -0000771539 00000 n -0000771604 00000 n -0000771669 00000 n -0000771734 00000 n -0000771798 00000 n -0000778510 00000 n -0000774946 00000 n -0000771976 00000 n -0000775072 00000 n -0000775137 00000 n -0000775202 00000 n -0000775267 00000 n -0000775332 00000 n -0000775397 00000 n -0000775462 00000 n -0000775527 00000 n -0000775592 00000 n -0000775657 00000 n -0000775722 00000 n -0000775787 00000 n -0000775851 00000 n -0000775916 00000 n -0000775981 00000 n -0000776046 00000 n -0000776111 00000 n -0000776176 00000 n -0000776241 00000 n -0000776306 00000 n -0000776371 00000 n -0000776436 00000 n -0000776501 00000 n -0000776566 00000 n -0000776630 00000 n -0000776695 00000 n -0000776760 00000 n -0000776825 00000 n -0000776890 00000 n -0000776955 00000 n -0000777020 00000 n -0000777085 00000 n -0000777150 00000 n -0000777215 00000 n -0000777280 00000 n -0000777345 00000 n -0000777410 00000 n -0000777475 00000 n -0000777540 00000 n -0000777605 00000 n -0000777669 00000 n -0000777733 00000 n -0000777797 00000 n -0000777862 00000 n -0000777927 00000 n -0000777992 00000 n -0000778057 00000 n -0000778122 00000 n -0000778187 00000 n -0000778252 00000 n -0000778317 00000 n -0000778382 00000 n -0000778446 00000 n -0000784685 00000 n -0000781247 00000 n -0000778624 00000 n -0000781373 00000 n -0000781438 00000 n -0000781503 00000 n -0000781568 00000 n -0000781633 00000 n -0000781698 00000 n -0000781763 00000 n -0000781828 00000 n -0000781893 00000 n -0000781958 00000 n -0000782023 00000 n -0000782088 00000 n -0000782153 00000 n -0000782218 00000 n -0000782283 00000 n -0000782348 00000 n -0000782413 00000 n -0000782478 00000 n -0000782543 00000 n -0000782608 00000 n -0000782673 00000 n -0000782738 00000 n -0000782803 00000 n -0000782868 00000 n -0000782933 00000 n -0000782998 00000 n -0000783063 00000 n -0000783128 00000 n -0000783193 00000 n -0000783258 00000 n -0000783323 00000 n -0000783388 00000 n -0000783453 00000 n -0000783518 00000 n -0000783582 00000 n -0000783647 00000 n -0000783712 00000 n -0000783777 00000 n -0000783842 00000 n -0000783907 00000 n -0000783972 00000 n -0000784037 00000 n -0000784102 00000 n -0000784167 00000 n -0000784232 00000 n -0000784297 00000 n -0000784362 00000 n -0000784427 00000 n -0000784492 00000 n -0000784557 00000 n -0000784621 00000 n -0000790204 00000 n -0000787808 00000 n -0000784799 00000 n -0000787934 00000 n -0000787999 00000 n -0000788064 00000 n -0000788129 00000 n -0000788194 00000 n -0000788259 00000 n -0000788324 00000 n -0000788389 00000 n -0000788454 00000 n -0000788519 00000 n -0000788584 00000 n -0000788649 00000 n -0000788714 00000 n -0000788778 00000 n -0000788843 00000 n -0000788908 00000 n -0000788973 00000 n -0000789038 00000 n -0000789103 00000 n -0000789168 00000 n -0000789233 00000 n -0000789298 00000 n -0000789363 00000 n -0000789428 00000 n -0000789493 00000 n -0000789621 00000 n -0000789750 00000 n -0000789815 00000 n -0000789880 00000 n -0000789945 00000 n -0000790010 00000 n -0000790139 00000 n -0001159219 00000 n -0000793412 00000 n +0000768534 00000 n +0000769290 00000 n +0000769354 00000 n +0000776308 00000 n +0000772480 00000 n +0000769574 00000 n +0000772606 00000 n +0000772671 00000 n +0000772736 00000 n +0000772801 00000 n +0000772866 00000 n +0000772931 00000 n +0000772996 00000 n +0000773061 00000 n +0000773126 00000 n +0000773191 00000 n +0000773321 00000 n +0000773386 00000 n +0000773451 00000 n +0000773516 00000 n +0000773581 00000 n +0000773646 00000 n +0000773711 00000 n +0000773776 00000 n +0000773841 00000 n +0000773906 00000 n +0000773971 00000 n +0000774036 00000 n +0000774101 00000 n +0000774166 00000 n +0000774231 00000 n +0000774296 00000 n +0000774361 00000 n +0000774426 00000 n +0000774491 00000 n +0000774556 00000 n +0000774621 00000 n +0000774686 00000 n +0000774751 00000 n +0000774816 00000 n +0000774880 00000 n +0000774945 00000 n +0000775010 00000 n +0000775075 00000 n +0000775140 00000 n +0000775205 00000 n +0000775270 00000 n +0000775335 00000 n +0000775400 00000 n +0000775465 00000 n +0000775530 00000 n +0000775595 00000 n +0000775660 00000 n +0000775725 00000 n +0000775790 00000 n +0000775855 00000 n +0000775920 00000 n +0000775985 00000 n +0000776050 00000 n +0000776115 00000 n +0000776180 00000 n +0000776244 00000 n +0000782956 00000 n +0000779392 00000 n +0000776422 00000 n +0000779518 00000 n +0000779583 00000 n +0000779648 00000 n +0000779713 00000 n +0000779778 00000 n +0000779843 00000 n +0000779908 00000 n +0000779973 00000 n +0000780038 00000 n +0000780103 00000 n +0000780168 00000 n +0000780233 00000 n +0000780297 00000 n +0000780362 00000 n +0000780427 00000 n +0000780492 00000 n +0000780557 00000 n +0000780622 00000 n +0000780687 00000 n +0000780752 00000 n +0000780817 00000 n +0000780882 00000 n +0000780947 00000 n +0000781012 00000 n +0000781076 00000 n +0000781141 00000 n +0000781206 00000 n +0000781271 00000 n +0000781336 00000 n +0000781401 00000 n +0000781466 00000 n +0000781531 00000 n +0000781596 00000 n +0000781661 00000 n +0000781726 00000 n +0000781791 00000 n +0000781856 00000 n +0000781921 00000 n +0000781986 00000 n +0000782051 00000 n +0000782115 00000 n +0000782179 00000 n +0000782243 00000 n +0000782308 00000 n +0000782373 00000 n +0000782438 00000 n +0000782503 00000 n +0000782568 00000 n +0000782633 00000 n +0000782698 00000 n +0000782763 00000 n +0000782828 00000 n +0000782892 00000 n +0001164479 00000 n +0000789131 00000 n +0000785693 00000 n +0000783070 00000 n +0000785819 00000 n +0000785884 00000 n +0000785949 00000 n +0000786014 00000 n +0000786079 00000 n +0000786144 00000 n +0000786209 00000 n +0000786274 00000 n +0000786339 00000 n +0000786404 00000 n +0000786469 00000 n +0000786534 00000 n +0000786599 00000 n +0000786664 00000 n +0000786729 00000 n +0000786794 00000 n +0000786859 00000 n +0000786924 00000 n +0000786989 00000 n +0000787054 00000 n +0000787119 00000 n +0000787184 00000 n +0000787249 00000 n +0000787314 00000 n +0000787379 00000 n +0000787444 00000 n +0000787509 00000 n +0000787574 00000 n +0000787639 00000 n +0000787704 00000 n +0000787769 00000 n +0000787834 00000 n +0000787899 00000 n +0000787964 00000 n +0000788028 00000 n +0000788093 00000 n +0000788158 00000 n +0000788223 00000 n +0000788288 00000 n +0000788353 00000 n +0000788418 00000 n +0000788483 00000 n +0000788548 00000 n +0000788613 00000 n +0000788678 00000 n +0000788743 00000 n +0000788808 00000 n +0000788873 00000 n +0000788938 00000 n +0000789003 00000 n +0000789067 00000 n +0000794650 00000 n +0000792254 00000 n +0000789245 00000 n +0000792380 00000 n +0000792445 00000 n +0000792510 00000 n +0000792575 00000 n +0000792640 00000 n 0000792705 00000 n -0000790331 00000 n -0000792831 00000 n -0000792960 00000 n -0000793089 00000 n -0000793218 00000 n -0000793347 00000 n -0000796904 00000 n -0000796147 00000 n -0000793539 00000 n -0000796454 00000 n -0000796583 00000 n -0000796294 00000 n -0000796711 00000 n -0000796839 00000 n -0000800148 00000 n -0000799570 00000 n -0000797031 00000 n -0000799696 00000 n -0000799825 00000 n -0000799954 00000 n -0000800083 00000 n -0000803057 00000 n -0000802737 00000 n -0000800262 00000 n -0000802863 00000 n -0000802992 00000 n -0000805647 00000 n -0000805198 00000 n -0000803227 00000 n -0000805324 00000 n -0000805453 00000 n -0000805582 00000 n -0000806088 00000 n -0000805897 00000 n -0000805747 00000 n -0000806023 00000 n -0001159344 00000 n -0000808800 00000 n -0000808156 00000 n -0000806130 00000 n -0000808282 00000 n -0000808411 00000 n -0000808540 00000 n -0000808605 00000 n -0000808670 00000 n -0000808735 00000 n -0000813140 00000 n -0000812820 00000 n -0000808914 00000 n -0000812946 00000 n -0000813011 00000 n -0000813076 00000 n -0000816743 00000 n -0000816488 00000 n -0000813296 00000 n -0000816614 00000 n -0000816679 00000 n -0000819994 00000 n -0000819803 00000 n -0000816885 00000 n -0000819929 00000 n -0000823715 00000 n -0000823459 00000 n -0000820122 00000 n -0000823585 00000 n -0000823650 00000 n -0000826700 00000 n -0000825992 00000 n -0000823857 00000 n -0000826118 00000 n -0000826183 00000 n -0000826248 00000 n -0000826313 00000 n -0000826378 00000 n -0000826507 00000 n -0000826572 00000 n -0000826636 00000 n -0001159469 00000 n -0000831369 00000 n -0000831113 00000 n -0000826842 00000 n -0000831239 00000 n -0000831304 00000 n -0000834388 00000 n -0000833615 00000 n -0000831497 00000 n -0000833741 00000 n -0000833806 00000 n -0000833871 00000 n -0000833936 00000 n -0000834065 00000 n -0000834130 00000 n -0000834193 00000 n -0000834258 00000 n -0000834323 00000 n -0000837301 00000 n -0000836786 00000 n -0000834544 00000 n -0000836912 00000 n -0000836977 00000 n -0000837042 00000 n -0000837107 00000 n -0000837172 00000 n -0000837237 00000 n -0000840674 00000 n -0000840094 00000 n -0000837457 00000 n -0000840220 00000 n -0000840349 00000 n -0000840414 00000 n -0000840479 00000 n -0000840544 00000 n -0000840609 00000 n -0000844126 00000 n -0000843870 00000 n -0000840816 00000 n -0000843996 00000 n -0000844061 00000 n -0000847078 00000 n -0000846434 00000 n -0000844254 00000 n -0000846560 00000 n -0000846625 00000 n -0000846690 00000 n -0000846755 00000 n -0000846949 00000 n -0000847014 00000 n -0001159594 00000 n -0000850719 00000 n -0000850398 00000 n -0000847247 00000 n -0000850524 00000 n -0000850589 00000 n -0000850654 00000 n -0000854310 00000 n -0000854119 00000 n -0000850847 00000 n -0000854245 00000 n -0000857776 00000 n -0000857455 00000 n -0000854438 00000 n -0000857581 00000 n -0000857646 00000 n -0000857711 00000 n -0000860434 00000 n -0000859725 00000 n -0000857917 00000 n -0000859851 00000 n -0000859916 00000 n -0000859981 00000 n -0000860046 00000 n -0000860175 00000 n -0000860240 00000 n -0000860305 00000 n -0000860370 00000 n -0000863311 00000 n -0000862601 00000 n -0000860590 00000 n -0000862727 00000 n -0000862792 00000 n -0000862857 00000 n -0000862922 00000 n -0000863116 00000 n -0000863181 00000 n -0000863246 00000 n -0000866883 00000 n -0000866562 00000 n -0000863467 00000 n -0000866688 00000 n -0000866753 00000 n -0000866818 00000 n -0001159719 00000 n -0000870032 00000 n -0000869387 00000 n -0000867011 00000 n -0000869513 00000 n -0000869578 00000 n -0000869643 00000 n -0000869708 00000 n -0000869837 00000 n -0000869902 00000 n -0000869967 00000 n -0000873563 00000 n -0000873242 00000 n -0000870188 00000 n -0000873368 00000 n -0000873433 00000 n -0000873498 00000 n -0000877146 00000 n -0000876955 00000 n -0000873705 00000 n -0000877081 00000 n -0000880631 00000 n -0000880440 00000 n -0000877274 00000 n -0000880566 00000 n -0000883525 00000 n -0000882881 00000 n -0000880773 00000 n -0000883007 00000 n -0000883072 00000 n -0000883137 00000 n -0000883202 00000 n -0000883331 00000 n -0000883396 00000 n -0000883461 00000 n -0000886438 00000 n -0000885733 00000 n -0000883681 00000 n -0000885859 00000 n -0000885924 00000 n -0000885989 00000 n -0000886054 00000 n -0000886119 00000 n -0000886184 00000 n -0000886310 00000 n -0000886375 00000 n -0001159844 00000 n -0000889643 00000 n -0000889258 00000 n -0000886580 00000 n -0000889384 00000 n -0000889449 00000 n -0000889514 00000 n -0000889579 00000 n -0000892945 00000 n -0000892754 00000 n -0000889785 00000 n -0000892880 00000 n -0000896127 00000 n -0000895353 00000 n -0000893073 00000 n -0000895479 00000 n -0000895544 00000 n -0000895609 00000 n -0000895674 00000 n -0000895802 00000 n -0000895867 00000 n -0000895932 00000 n -0000895997 00000 n -0000896062 00000 n -0000899375 00000 n -0000899184 00000 n -0000896283 00000 n -0000899310 00000 n -0000902534 00000 n -0000902149 00000 n -0000899588 00000 n -0000902275 00000 n -0000902340 00000 n -0000902405 00000 n -0000902470 00000 n -0000905086 00000 n -0000904313 00000 n -0000902775 00000 n -0000904439 00000 n -0000904504 00000 n -0000904569 00000 n -0000904698 00000 n -0000904762 00000 n -0000904827 00000 n -0000904892 00000 n -0000904957 00000 n -0000905022 00000 n -0001159969 00000 n -0000909247 00000 n -0000908732 00000 n -0000905242 00000 n -0000908858 00000 n -0000908987 00000 n -0000909052 00000 n -0000909117 00000 n -0000909182 00000 n -0000913463 00000 n -0000913207 00000 n -0000909375 00000 n -0000913333 00000 n -0000913398 00000 n -0000916798 00000 n -0000916607 00000 n -0000913591 00000 n -0000916733 00000 n -0000919416 00000 n -0000918966 00000 n -0000916926 00000 n -0000919092 00000 n -0000919157 00000 n -0000919222 00000 n -0000919287 00000 n -0000919352 00000 n -0000923265 00000 n -0000922685 00000 n -0000919571 00000 n -0000922811 00000 n -0000922940 00000 n -0000923005 00000 n -0000923070 00000 n -0000923135 00000 n -0000923200 00000 n -0000926430 00000 n -0000925720 00000 n -0000923407 00000 n -0000925846 00000 n -0000925911 00000 n -0000925976 00000 n -0000926041 00000 n -0000926170 00000 n -0000926235 00000 n -0000926300 00000 n -0000926365 00000 n -0001160094 00000 n -0000929151 00000 n -0000928895 00000 n -0000926586 00000 n -0000929021 00000 n -0000929086 00000 n -0000932407 00000 n -0000931634 00000 n -0000929279 00000 n -0000931760 00000 n -0000931825 00000 n -0000931890 00000 n -0000931955 00000 n -0000932084 00000 n -0000932149 00000 n -0000932214 00000 n -0000932278 00000 n -0000932343 00000 n -0000935697 00000 n -0000935378 00000 n -0000932563 00000 n -0000935504 00000 n -0000935569 00000 n -0000935634 00000 n -0000939167 00000 n -0000938524 00000 n -0000935853 00000 n -0000938650 00000 n -0000938715 00000 n -0000938844 00000 n -0000938908 00000 n -0000938973 00000 n -0000939038 00000 n -0000939102 00000 n -0000941782 00000 n -0000940815 00000 n -0000939309 00000 n -0000940941 00000 n -0000941006 00000 n -0000941071 00000 n -0000941200 00000 n -0000941265 00000 n -0000941330 00000 n -0000941395 00000 n -0000941460 00000 n -0000941525 00000 n -0000941653 00000 n -0000941718 00000 n -0000944675 00000 n -0000943840 00000 n -0000941938 00000 n -0000943966 00000 n -0000944031 00000 n -0000944096 00000 n -0000944161 00000 n -0000944226 00000 n -0000944291 00000 n -0000944419 00000 n -0000944482 00000 n -0000944546 00000 n -0000944611 00000 n -0001160219 00000 n -0000947419 00000 n -0000946580 00000 n -0000944817 00000 n -0000946706 00000 n -0000946771 00000 n -0000946836 00000 n -0000946901 00000 n -0000947030 00000 n -0000947095 00000 n -0000947160 00000 n -0000947225 00000 n -0000947290 00000 n -0000947355 00000 n -0000948210 00000 n -0000947954 00000 n -0000947561 00000 n -0000948080 00000 n -0000948145 00000 n -0000948409 00000 n -0000959753 00000 n -0000967342 00000 n -0000969642 00000 n -0000969611 00000 n -0000973329 00000 n -0000982769 00000 n -0000993504 00000 n -0001005199 00000 n -0001017916 00000 n -0001037150 00000 n -0001058046 00000 n -0001080194 00000 n -0001098450 00000 n -0001101297 00000 n -0001101067 00000 n -0001128715 00000 n -0001155981 00000 n -0001160317 00000 n -0001160442 00000 n -0001160568 00000 n -0001160694 00000 n -0001160820 00000 n -0001160946 00000 n -0001161026 00000 n -0001161136 00000 n -0001183038 00000 n -0001207231 00000 n -0001207272 00000 n -0001207312 00000 n -0001207446 00000 n +0000792770 00000 n +0000792835 00000 n +0000792900 00000 n +0000792965 00000 n +0000793030 00000 n +0000793095 00000 n +0000793160 00000 n +0000793224 00000 n +0000793289 00000 n +0000793354 00000 n +0000793419 00000 n +0000793484 00000 n +0000793549 00000 n +0000793614 00000 n +0000793679 00000 n +0000793744 00000 n +0000793809 00000 n +0000793874 00000 n +0000793939 00000 n +0000794067 00000 n +0000794196 00000 n +0000794261 00000 n +0000794326 00000 n +0000794391 00000 n +0000794456 00000 n +0000794585 00000 n +0000797859 00000 n +0000797152 00000 n +0000794777 00000 n +0000797278 00000 n +0000797407 00000 n +0000797536 00000 n +0000797665 00000 n +0000797794 00000 n +0000801351 00000 n +0000800594 00000 n +0000797986 00000 n +0000800901 00000 n +0000801030 00000 n +0000800741 00000 n +0000801158 00000 n +0000801286 00000 n +0000804595 00000 n +0000804017 00000 n +0000801478 00000 n +0000804143 00000 n +0000804272 00000 n +0000804401 00000 n +0000804530 00000 n +0000807503 00000 n +0000807183 00000 n +0000804709 00000 n +0000807309 00000 n +0000807438 00000 n +0001164604 00000 n +0000810093 00000 n +0000809644 00000 n +0000807673 00000 n +0000809770 00000 n +0000809899 00000 n +0000810028 00000 n +0000810534 00000 n +0000810343 00000 n +0000810193 00000 n +0000810469 00000 n +0000813317 00000 n +0000812673 00000 n +0000810576 00000 n +0000812799 00000 n +0000812928 00000 n +0000813057 00000 n +0000813122 00000 n +0000813187 00000 n +0000813252 00000 n +0000817651 00000 n +0000817330 00000 n +0000813431 00000 n +0000817456 00000 n +0000817521 00000 n +0000817586 00000 n +0000821399 00000 n +0000821143 00000 n +0000817807 00000 n +0000821269 00000 n +0000821334 00000 n +0000824561 00000 n +0000824370 00000 n +0000821541 00000 n +0000824496 00000 n +0001164729 00000 n +0000828205 00000 n +0000827949 00000 n +0000824689 00000 n +0000828075 00000 n +0000828140 00000 n +0000831410 00000 n +0000830702 00000 n +0000828347 00000 n +0000830828 00000 n +0000830893 00000 n +0000830958 00000 n +0000831023 00000 n +0000831088 00000 n +0000831217 00000 n +0000831281 00000 n +0000831346 00000 n +0000836079 00000 n +0000835823 00000 n +0000831552 00000 n +0000835949 00000 n +0000836014 00000 n +0000839098 00000 n +0000838325 00000 n +0000836207 00000 n +0000838451 00000 n +0000838516 00000 n +0000838581 00000 n +0000838646 00000 n +0000838775 00000 n +0000838840 00000 n +0000838903 00000 n +0000838968 00000 n +0000839033 00000 n +0000842011 00000 n +0000841496 00000 n +0000839254 00000 n +0000841622 00000 n +0000841687 00000 n +0000841752 00000 n +0000841817 00000 n +0000841882 00000 n +0000841947 00000 n +0000845384 00000 n +0000844804 00000 n +0000842167 00000 n +0000844930 00000 n +0000845059 00000 n +0000845124 00000 n +0000845189 00000 n +0000845254 00000 n +0000845319 00000 n +0001164854 00000 n +0000848836 00000 n +0000848580 00000 n +0000845526 00000 n +0000848706 00000 n +0000848771 00000 n +0000851788 00000 n +0000851144 00000 n +0000848964 00000 n +0000851270 00000 n +0000851335 00000 n +0000851400 00000 n +0000851465 00000 n +0000851659 00000 n +0000851724 00000 n +0000855429 00000 n +0000855108 00000 n +0000851957 00000 n +0000855234 00000 n +0000855299 00000 n +0000855364 00000 n +0000859020 00000 n +0000858829 00000 n +0000855557 00000 n +0000858955 00000 n +0000862486 00000 n +0000862165 00000 n +0000859148 00000 n +0000862291 00000 n +0000862356 00000 n +0000862421 00000 n +0000865143 00000 n +0000864434 00000 n +0000862627 00000 n +0000864560 00000 n +0000864625 00000 n +0000864690 00000 n +0000864755 00000 n +0000864884 00000 n +0000864949 00000 n +0000865014 00000 n +0000865079 00000 n +0001164979 00000 n +0000868019 00000 n +0000867309 00000 n +0000865299 00000 n +0000867435 00000 n +0000867500 00000 n +0000867565 00000 n +0000867630 00000 n +0000867824 00000 n +0000867889 00000 n +0000867954 00000 n +0000871590 00000 n +0000871269 00000 n +0000868175 00000 n +0000871395 00000 n +0000871460 00000 n +0000871525 00000 n +0000874739 00000 n +0000874094 00000 n +0000871718 00000 n +0000874220 00000 n +0000874285 00000 n +0000874350 00000 n +0000874415 00000 n +0000874544 00000 n +0000874609 00000 n +0000874674 00000 n +0000878270 00000 n +0000877949 00000 n +0000874895 00000 n +0000878075 00000 n +0000878140 00000 n +0000878205 00000 n +0000881853 00000 n +0000881662 00000 n +0000878412 00000 n +0000881788 00000 n +0000885338 00000 n +0000885147 00000 n +0000881981 00000 n +0000885273 00000 n +0001165104 00000 n +0000888232 00000 n +0000887588 00000 n +0000885480 00000 n +0000887714 00000 n +0000887779 00000 n +0000887844 00000 n +0000887909 00000 n +0000888038 00000 n +0000888103 00000 n +0000888168 00000 n +0000891145 00000 n +0000890440 00000 n +0000888388 00000 n +0000890566 00000 n +0000890631 00000 n +0000890696 00000 n +0000890761 00000 n +0000890826 00000 n +0000890891 00000 n +0000891017 00000 n +0000891082 00000 n +0000894348 00000 n +0000893963 00000 n +0000891287 00000 n +0000894089 00000 n +0000894154 00000 n +0000894219 00000 n +0000894284 00000 n +0000897778 00000 n +0000897587 00000 n +0000894490 00000 n +0000897713 00000 n +0000900769 00000 n +0000899995 00000 n +0000897906 00000 n +0000900121 00000 n +0000900186 00000 n +0000900251 00000 n +0000900316 00000 n +0000900445 00000 n +0000900509 00000 n +0000900574 00000 n +0000900639 00000 n +0000900704 00000 n +0000903964 00000 n +0000903773 00000 n +0000900925 00000 n +0000903899 00000 n +0001165229 00000 n +0000907006 00000 n +0000906686 00000 n +0000904177 00000 n +0000906812 00000 n +0000906877 00000 n +0000906942 00000 n +0000909882 00000 n +0000909109 00000 n +0000907233 00000 n +0000909235 00000 n +0000909300 00000 n +0000909365 00000 n +0000909429 00000 n +0000909558 00000 n +0000909623 00000 n +0000909688 00000 n +0000909753 00000 n +0000909818 00000 n +0000913705 00000 n +0000913125 00000 n +0000910038 00000 n +0000913251 00000 n +0000913316 00000 n +0000913445 00000 n +0000913510 00000 n +0000913575 00000 n +0000913640 00000 n +0000918032 00000 n +0000917776 00000 n +0000913833 00000 n +0000917902 00000 n +0000917967 00000 n +0000921552 00000 n +0000921361 00000 n +0000918160 00000 n +0000921487 00000 n +0000924111 00000 n +0000923726 00000 n +0000921680 00000 n +0000923852 00000 n +0000923917 00000 n +0000923982 00000 n +0000924047 00000 n +0001165354 00000 n +0000927598 00000 n +0000926953 00000 n +0000924266 00000 n +0000927079 00000 n +0000927144 00000 n +0000927273 00000 n +0000927338 00000 n +0000927403 00000 n +0000927468 00000 n +0000927533 00000 n +0000930666 00000 n +0000929956 00000 n +0000927740 00000 n +0000930082 00000 n +0000930147 00000 n +0000930212 00000 n +0000930277 00000 n +0000930406 00000 n +0000930471 00000 n +0000930536 00000 n +0000930601 00000 n +0000933766 00000 n +0000933510 00000 n +0000930836 00000 n +0000933636 00000 n +0000933701 00000 n +0000936909 00000 n +0000936200 00000 n +0000933894 00000 n +0000936326 00000 n +0000936391 00000 n +0000936456 00000 n +0000936521 00000 n +0000936649 00000 n +0000936714 00000 n +0000936779 00000 n +0000936844 00000 n +0000940503 00000 n +0000940182 00000 n +0000937065 00000 n +0000940308 00000 n +0000940373 00000 n +0000940438 00000 n +0000943732 00000 n +0000943022 00000 n +0000940645 00000 n +0000943148 00000 n +0000943213 00000 n +0000943278 00000 n +0000943407 00000 n +0000943472 00000 n +0000943537 00000 n +0000943602 00000 n +0000943667 00000 n +0001165479 00000 n +0000946545 00000 n +0000945771 00000 n +0000943888 00000 n +0000945897 00000 n +0000945962 00000 n +0000946027 00000 n +0000946156 00000 n +0000946221 00000 n +0000946286 00000 n +0000946351 00000 n +0000946416 00000 n +0000946481 00000 n +0000948931 00000 n +0000947965 00000 n +0000946701 00000 n +0000948091 00000 n +0000948220 00000 n +0000948285 00000 n +0000948350 00000 n +0000948415 00000 n +0000948480 00000 n +0000948545 00000 n +0000948609 00000 n +0000948737 00000 n +0000948802 00000 n +0000948867 00000 n +0000951937 00000 n +0000951100 00000 n +0000949073 00000 n +0000951226 00000 n +0000951291 00000 n +0000951356 00000 n +0000951420 00000 n +0000951485 00000 n +0000951614 00000 n +0000951679 00000 n +0000951744 00000 n +0000951808 00000 n +0000951873 00000 n +0000953287 00000 n +0000952967 00000 n +0000952079 00000 n +0000953093 00000 n +0000953158 00000 n +0000953222 00000 n +0000953500 00000 n +0000964844 00000 n +0000972433 00000 n +0000974732 00000 n +0000974701 00000 n +0000978419 00000 n +0000987860 00000 n +0000998595 00000 n +0001010291 00000 n +0001023008 00000 n +0001042242 00000 n +0001063304 00000 n +0001085455 00000 n +0001103711 00000 n +0001106557 00000 n +0001106327 00000 n +0001133975 00000 n +0001161241 00000 n +0001165595 00000 n +0001165720 00000 n +0001165846 00000 n +0001165972 00000 n +0001166098 00000 n +0001166224 00000 n +0001166304 00000 n +0001166414 00000 n +0001188316 00000 n +0001212549 00000 n +0001212590 00000 n +0001212630 00000 n +0001212764 00000 n trailer << -/Size 2760 -/Root 2758 0 R -/Info 2759 0 R -/ID [<56A51CE89D72B9E1A2B24B6DA534816F> <56A51CE89D72B9E1A2B24B6DA534816F>] +/Size 2768 +/Root 2766 0 R +/Info 2767 0 R +/ID [<AB7D8FE7604A610EE0A87A3E923B9339> <AB7D8FE7604A610EE0A87A3E923B9339>] >> startxref -1207704 +1213022 %%EOF diff --git a/contrib/bind9/doc/arm/man.arpaname.html b/contrib/bind9/doc/arm/man.arpaname.html index 814e0b8..c57540b 100644 --- a/contrib/bind9/doc/arm/man.arpaname.html +++ b/contrib/bind9/doc/arm/man.arpaname.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,20 +50,20 @@ <div class="cmdsynopsis"><p><code class="command">arpaname</code> {<em class="replaceable"><code>ipaddress </code></em>...}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2618405"></a><h2>DESCRIPTION</h2> +<a name="id2617315"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">arpaname</strong></span> translates IP addresses (IPv4 and IPv6) to the corresponding IN-ADDR.ARPA or IP6.ARPA names. </p> </div> <div class="refsect1" lang="en"> -<a name="id2618420"></a><h2>SEE ALSO</h2> +<a name="id2617330"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2618434"></a><h2>AUTHOR</h2> +<a name="id2651272"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.ddns-confgen.html b/contrib/bind9/doc/arm/man.ddns-confgen.html index 3724304..3555d51 100644 --- a/contrib/bind9/doc/arm/man.ddns-confgen.html +++ b/contrib/bind9/doc/arm/man.ddns-confgen.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">ddns-confgen</code> [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>keyname</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomfile</code></em></code>] [ -s <em class="replaceable"><code>name</code></em> | -z <em class="replaceable"><code>zone</code></em> ] [<code class="option">-q</code>] [name]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2641910"></a><h2>DESCRIPTION</h2> +<a name="id2645394"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">ddns-confgen</strong></span> generates a key for use by <span><strong class="command">nsupdate</strong></span> and <span><strong class="command">named</strong></span>. It simplifies configuration @@ -77,7 +77,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2641997"></a><h2>OPTIONS</h2> +<a name="id2645481"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd><p> @@ -144,7 +144,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2642608"></a><h2>SEE ALSO</h2> +<a name="id2653328"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">nsupdate</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, @@ -152,7 +152,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2642646"></a><h2>AUTHOR</h2> +<a name="id2653366"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.dig.html b/contrib/bind9/doc/arm/man.dig.html index e5796ca..b2d2b54 100644 --- a/contrib/bind9/doc/arm/man.dig.html +++ b/contrib/bind9/doc/arm/man.dig.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -52,7 +52,7 @@ <div class="cmdsynopsis"><p><code class="command">dig</code> [global-queryopt...] [query...]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2609644"></a><h2>DESCRIPTION</h2> +<a name="id2610344"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dig</strong></span> (domain information groper) is a flexible tool for interrogating DNS name servers. It performs DNS lookups and @@ -75,9 +75,10 @@ </p> <p> Unless it is told to query a specific name server, - <span><strong class="command">dig</strong></span> will try each of the servers listed - in - <code class="filename">/etc/resolv.conf</code>. + <span><strong class="command">dig</strong></span> will try each of the servers listed in + <code class="filename">/etc/resolv.conf</code>. If no usable server addreses + are found, <span><strong class="command">dig</strong></span> will send the query to the local + host. </p> <p> When no command line arguments or options are given, @@ -98,7 +99,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2609808"></a><h2>SIMPLE USAGE</h2> +<a name="id2610515"></a><h2>SIMPLE USAGE</h2> <p> A typical invocation of <span><strong class="command">dig</strong></span> looks like: </p> @@ -109,22 +110,29 @@ </p> <div class="variablelist"><dl> <dt><span class="term"><code class="constant">server</code></span></dt> -<dd><p> - is the name or IP address of the name server to query. This can - be an IPv4 - address in dotted-decimal notation or an IPv6 +<dd> +<p> + is the name or IP address of the name server to query. This + can be an IPv4 address in dotted-decimal notation or an IPv6 address in colon-delimited notation. When the supplied - <em class="parameter"><code>server</code></em> argument is a - hostname, - <span><strong class="command">dig</strong></span> resolves that name before - querying that name - server. If no <em class="parameter"><code>server</code></em> - argument is provided, - <span><strong class="command">dig</strong></span> consults <code class="filename">/etc/resolv.conf</code> - and queries the name servers listed there. The reply from the - name - server that responds is displayed. - </p></dd> + <em class="parameter"><code>server</code></em> argument is a hostname, + <span><strong class="command">dig</strong></span> resolves that name before querying + that name server. + </p> +<p> + If no <em class="parameter"><code>server</code></em> argument is + provided, <span><strong class="command">dig</strong></span> consults + <code class="filename">/etc/resolv.conf</code>; if an + address is found there, it queries the name server at + that address. If either of the <code class="option">-4</code> or + <code class="option">-6</code> options are in use, then + only addresses for the corresponding transport + will be tried. If no usable addresses are found, + <span><strong class="command">dig</strong></span> will send the query to the + local host. The reply from the name server that + responds is displayed. + </p> +</dd> <dt><span class="term"><code class="constant">name</code></span></dt> <dd><p> is the name of the resource record that is to be looked up. @@ -144,7 +152,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2610055"></a><h2>OPTIONS</h2> +<a name="id2610641"></a><h2>OPTIONS</h2> <p> The <code class="option">-b</code> option sets the source IP address of the query to <em class="parameter"><code>address</code></em>. This must be a valid @@ -248,7 +256,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2662690"></a><h2>QUERY OPTIONS</h2> +<a name="id2663207"></a><h2>QUERY OPTIONS</h2> <p><span><strong class="command">dig</strong></span> provides a number of query options which affect the way in which lookups are made and the results displayed. Some of @@ -579,7 +587,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2663772"></a><h2>MULTIPLE QUERIES</h2> +<a name="id2664290"></a><h2>MULTIPLE QUERIES</h2> <p> The BIND 9 implementation of <span><strong class="command">dig </strong></span> supports @@ -625,7 +633,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2663858"></a><h2>IDN SUPPORT</h2> +<a name="id2664375"></a><h2>IDN SUPPORT</h2> <p> If <span><strong class="command">dig</strong></span> has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. @@ -639,14 +647,14 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2663886"></a><h2>FILES</h2> +<a name="id2664540"></a><h2>FILES</h2> <p><code class="filename">/etc/resolv.conf</code> </p> <p><code class="filename">${HOME}/.digrc</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2663908"></a><h2>SEE ALSO</h2> +<a name="id2664562"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, @@ -654,7 +662,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2663945"></a><h2>BUGS</h2> +<a name="id2664599"></a><h2>BUGS</h2> <p> There are probably too many query options. </p> diff --git a/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html b/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html index d63d6da..6d8eeab 100644 --- a/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html +++ b/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -51,14 +51,14 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-dsfromkey</code> {-s} [<code class="option">-1</code>] [<code class="option">-2</code>] [<code class="option">-a <em class="replaceable"><code>alg</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-s</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>file</code></em></code>] [<code class="option">-A</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] {dnsname}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2611633"></a><h2>DESCRIPTION</h2> +<a name="id2612124"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-dsfromkey</strong></span> outputs the Delegation Signer (DS) resource record (RR), as defined in RFC 3658 and RFC 4509, for the given key(s). </p> </div> <div class="refsect1" lang="en"> -<a name="id2611646"></a><h2>OPTIONS</h2> +<a name="id2612138"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-1</span></dt> <dd><p> @@ -120,7 +120,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2611835"></a><h2>EXAMPLE</h2> +<a name="id2612327"></a><h2>EXAMPLE</h2> <p> To build the SHA-256 DS RR from the <strong class="userinput"><code>Kexample.com.+003+26160</code></strong> @@ -135,7 +135,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611872"></a><h2>FILES</h2> +<a name="id2612568"></a><h2>FILES</h2> <p> The keyfile can be designed by the key identification <code class="filename">Knnnn.+aaa+iiiii</code> or the full file name @@ -149,13 +149,13 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611913"></a><h2>CAVEAT</h2> +<a name="id2612610"></a><h2>CAVEAT</h2> <p> A keyfile error can give a "file not found" even if the file exists. </p> </div> <div class="refsect1" lang="en"> -<a name="id2611923"></a><h2>SEE ALSO</h2> +<a name="id2612619"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -165,7 +165,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611962"></a><h2>AUTHOR</h2> +<a name="id2612659"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html b/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html index 38cba98..b691828 100644 --- a/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html +++ b/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-keyfromlabel</code> {-l <em class="replaceable"><code>label</code></em>} [<code class="option">-3</code>] [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-G</code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-k</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-y</code>] {name}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2612614"></a><h2>DESCRIPTION</h2> +<a name="id2613242"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-keyfromlabel</strong></span> gets keys with the given label from a crypto hardware and builds key files for DNSSEC (Secure DNS), as defined in RFC 2535 @@ -63,7 +63,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2612634"></a><h2>OPTIONS</h2> +<a name="id2614013"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd> @@ -183,7 +183,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2613344"></a><h2>TIMING OPTIONS</h2> +<a name="id2614859"></a><h2>TIMING OPTIONS</h2> <p> Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as @@ -230,7 +230,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2615080"></a><h2>GENERATED KEY FILES</h2> +<a name="id2616323"></a><h2>GENERATED KEY FILES</h2> <p> When <span><strong class="command">dnssec-keyfromlabel</strong></span> completes successfully, @@ -269,7 +269,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2615447"></a><h2>SEE ALSO</h2> +<a name="id2616417"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -277,7 +277,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2615480"></a><h2>AUTHOR</h2> +<a name="id2616450"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.dnssec-keygen.html b/contrib/bind9/doc/arm/man.dnssec-keygen.html index 3a3a839..2852022 100644 --- a/contrib/bind9/doc/arm/man.dnssec-keygen.html +++ b/contrib/bind9/doc/arm/man.dnssec-keygen.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-keygen</code> [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>] [<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>] [<code class="option">-3</code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-C</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-e</code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-G</code>] [<code class="option">-g <em class="replaceable"><code>generator</code></em></code>] [<code class="option">-h</code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-k</code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-q</code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-S <em class="replaceable"><code>key</code></em></code>] [<code class="option">-s <em class="replaceable"><code>strength</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-z</code>] {name}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2613979"></a><h2>DESCRIPTION</h2> +<a name="id2615154"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-keygen</strong></span> generates keys for DNSSEC (Secure DNS), as defined in RFC 2535 and RFC 4034. It can also generate keys for use with @@ -64,7 +64,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2614068"></a><h2>OPTIONS</h2> +<a name="id2615174"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd> @@ -269,7 +269,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2666124"></a><h2>TIMING OPTIONS</h2> +<a name="id2669210"></a><h2>TIMING OPTIONS</h2> <p> Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as @@ -340,7 +340,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2666314"></a><h2>GENERATED KEYS</h2> +<a name="id2669332"></a><h2>GENERATED KEYS</h2> <p> When <span><strong class="command">dnssec-keygen</strong></span> completes successfully, @@ -386,7 +386,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2666422"></a><h2>EXAMPLE</h2> +<a name="id2669508"></a><h2>EXAMPLE</h2> <p> To generate a 768-bit DSA key for the domain <strong class="userinput"><code>example.com</code></strong>, the following command would be @@ -407,7 +407,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2666478"></a><h2>SEE ALSO</h2> +<a name="id2669564"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 2539</em>, @@ -416,7 +416,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2666509"></a><h2>AUTHOR</h2> +<a name="id2669732"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.dnssec-revoke.html b/contrib/bind9/doc/arm/man.dnssec-revoke.html index e1ff637..b1eb691 100644 --- a/contrib/bind9/doc/arm/man.dnssec-revoke.html +++ b/contrib/bind9/doc/arm/man.dnssec-revoke.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-revoke</code> [<code class="option">-hr</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-f</code>] [<code class="option">-R</code>] {keyfile}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2614416"></a><h2>DESCRIPTION</h2> +<a name="id2616000"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-revoke</strong></span> reads a DNSSEC key file, sets the REVOKED bit on the key as defined in RFC 5011, and creates a new pair of key files containing the @@ -58,7 +58,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2614429"></a><h2>OPTIONS</h2> +<a name="id2616013"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-h</span></dt> <dd><p> @@ -96,14 +96,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2614550"></a><h2>SEE ALSO</h2> +<a name="id2616134"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 5011</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2614574"></a><h2>AUTHOR</h2> +<a name="id2616158"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.dnssec-settime.html b/contrib/bind9/doc/arm/man.dnssec-settime.html index cd14fe2..541223c 100644 --- a/contrib/bind9/doc/arm/man.dnssec-settime.html +++ b/contrib/bind9/doc/arm/man.dnssec-settime.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-settime</code> [<code class="option">-f</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-h</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] {keyfile}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2614758"></a><h2>DESCRIPTION</h2> +<a name="id2616615"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-settime</strong></span> reads a DNSSEC private key file and sets the key timing metadata as specified by the <code class="option">-P</code>, <code class="option">-A</code>, @@ -76,7 +76,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2614817"></a><h2>OPTIONS</h2> +<a name="id2616742"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-f</span></dt> <dd><p> @@ -109,7 +109,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2615184"></a><h2>TIMING OPTIONS</h2> +<a name="id2616836"></a><h2>TIMING OPTIONS</h2> <p> Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as @@ -188,7 +188,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2615322"></a><h2>PRINTING OPTIONS</h2> +<a name="id2616974"></a><h2>PRINTING OPTIONS</h2> <p> <span><strong class="command">dnssec-settime</strong></span> can also be used to print the timing metadata associated with a key. @@ -214,7 +214,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2615607"></a><h2>SEE ALSO</h2> +<a name="id2617123"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -222,7 +222,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2615640"></a><h2>AUTHOR</h2> +<a name="id2617156"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.dnssec-signzone.html b/contrib/bind9/doc/arm/man.dnssec-signzone.html index 3132c54..4f73bf4 100644 --- a/contrib/bind9/doc/arm/man.dnssec-signzone.html +++ b/contrib/bind9/doc/arm/man.dnssec-signzone.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-signzone</code> [<code class="option">-a</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-d <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-e <em class="replaceable"><code>end-time</code></em></code>] [<code class="option">-f <em class="replaceable"><code>output-file</code></em></code>] [<code class="option">-g</code>] [<code class="option">-h</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-I <em class="replaceable"><code>input-format</code></em></code>] [<code class="option">-j <em class="replaceable"><code>jitter</code></em></code>] [<code class="option">-N <em class="replaceable"><code>soa-serial-format</code></em></code>] [<code class="option">-o <em class="replaceable"><code>origin</code></em></code>] [<code class="option">-O <em class="replaceable"><code>output-format</code></em></code>] [<code class="option">-p</code>] [<code class="option">-P</code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-S</code>] [<code class="option">-s <em class="replaceable"><code>start-time</code></em></code>] [<code class="option">-T <em class="replaceable"><code>ttl</code></em></code>] [<code class="option">-t</code>] [<code class="option">-u</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-x</code>] [<code class="option">-z</code>] [<code class="option">-3 <em class="replaceable"><code>salt</code></em></code>] [<code class="option">-H <em class="replaceable"><code>iterations</code></em></code>] [<code class="option">-A</code>] {zonefile} [key...]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2616228"></a><h2>DESCRIPTION</h2> +<a name="id2618290"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-signzone</strong></span> signs a zone. It generates NSEC and RRSIG records and produces a signed version of the @@ -61,7 +61,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2616247"></a><h2>OPTIONS</h2> +<a name="id2618309"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a</span></dt> <dd><p> @@ -397,7 +397,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2667564"></a><h2>EXAMPLE</h2> +<a name="id2672630"></a><h2>EXAMPLE</h2> <p> The following command signs the <strong class="userinput"><code>example.com</code></strong> zone with the DSA key generated by <span><strong class="command">dnssec-keygen</strong></span> @@ -427,14 +427,14 @@ db.example.com.signed %</pre> </div> <div class="refsect1" lang="en"> -<a name="id2667643"></a><h2>SEE ALSO</h2> +<a name="id2672709"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 4033</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2667668"></a><h2>AUTHOR</h2> +<a name="id2672733"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.genrandom.html b/contrib/bind9/doc/arm/man.genrandom.html index 0b72a6e..596ddda 100644 --- a/contrib/bind9/doc/arm/man.genrandom.html +++ b/contrib/bind9/doc/arm/man.genrandom.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">genrandom</code> [<code class="option">-n <em class="replaceable"><code>number</code></em></code>] {<em class="replaceable"><code>size</code></em>} {<em class="replaceable"><code>filename</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2642837"></a><h2>DESCRIPTION</h2> +<a name="id2653420"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">genrandom</strong></span> generates a file or a set of files containing a specified quantity @@ -59,7 +59,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2642852"></a><h2>ARGUMENTS</h2> +<a name="id2653435"></a><h2>ARGUMENTS</h2> <div class="variablelist"><dl> <dt><span class="term">-n <em class="replaceable"><code>number</code></em></span></dt> <dd><p> @@ -77,14 +77,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2642913"></a><h2>SEE ALSO</h2> +<a name="id2653496"></a><h2>SEE ALSO</h2> <p> <span class="citerefentry"><span class="refentrytitle">rand</span>(3)</span>, <span class="citerefentry"><span class="refentrytitle">arc4random</span>(3)</span> </p> </div> <div class="refsect1" lang="en"> -<a name="id2642939"></a><h2>AUTHOR</h2> +<a name="id2653523"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.host.html b/contrib/bind9/doc/arm/man.host.html index dd70d66..f4f0ef8 100644 --- a/contrib/bind9/doc/arm/man.host.html +++ b/contrib/bind9/doc/arm/man.host.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">host</code> [<code class="option">-aCdlnrsTwv</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-N <em class="replaceable"><code>ndots</code></em></code>] [<code class="option">-R <em class="replaceable"><code>number</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-W <em class="replaceable"><code>wait</code></em></code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-4</code>] [<code class="option">-6</code>] {name} [server]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2610871"></a><h2>DESCRIPTION</h2> +<a name="id2611090"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">host</strong></span> is a simple utility for performing DNS lookups. It is normally used to convert names to IP addresses and vice versa. @@ -202,7 +202,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611317"></a><h2>IDN SUPPORT</h2> +<a name="id2611877"></a><h2>IDN SUPPORT</h2> <p> If <span><strong class="command">host</strong></span> has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. @@ -216,12 +216,12 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611346"></a><h2>FILES</h2> +<a name="id2613954"></a><h2>FILES</h2> <p><code class="filename">/etc/resolv.conf</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2611360"></a><h2>SEE ALSO</h2> +<a name="id2613968"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dig</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>. </p> diff --git a/contrib/bind9/doc/arm/man.isc-hmac-fixup.html b/contrib/bind9/doc/arm/man.isc-hmac-fixup.html index d089af0..9c2a961 100644 --- a/contrib/bind9/doc/arm/man.isc-hmac-fixup.html +++ b/contrib/bind9/doc/arm/man.isc-hmac-fixup.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">isc-hmac-fixup</code> {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>secret</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2619705"></a><h2>DESCRIPTION</h2> +<a name="id2617529"></a><h2>DESCRIPTION</h2> <p> Versions of BIND 9 up to and including BIND 9.6 had a bug causing HMAC-SHA* TSIG keys which were longer than the digest length of the @@ -76,7 +76,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2643899"></a><h2>SECURITY CONSIDERATIONS</h2> +<a name="id2653602"></a><h2>SECURITY CONSIDERATIONS</h2> <p> Secrets that have been converted by <span><strong class="command">isc-hmac-fixup</strong></span> are shortened, but as this is how the HMAC protocol works in @@ -87,14 +87,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2643915"></a><h2>SEE ALSO</h2> +<a name="id2653618"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 2104</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2643932"></a><h2>AUTHOR</h2> +<a name="id2653635"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.named-checkconf.html b/contrib/bind9/doc/arm/man.named-checkconf.html index d3dc621..9a2f687 100644 --- a/contrib/bind9/doc/arm/man.named-checkconf.html +++ b/contrib/bind9/doc/arm/man.named-checkconf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">named-checkconf</code> [<code class="option">-h</code>] [<code class="option">-v</code>] [<code class="option">-j</code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] {filename} [<code class="option">-p</code>] [<code class="option">-z</code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2617093"></a><h2>DESCRIPTION</h2> +<a name="id2619428"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named-checkconf</strong></span> checks the syntax, but not the semantics, of a <span><strong class="command">named</strong></span> configuration file. The file is parsed @@ -70,7 +70,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2617163"></a><h2>OPTIONS</h2> +<a name="id2619498"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-h</span></dt> <dd><p> @@ -109,21 +109,21 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2617298"></a><h2>RETURN VALUES</h2> +<a name="id2619633"></a><h2>RETURN VALUES</h2> <p><span><strong class="command">named-checkconf</strong></span> returns an exit status of 1 if errors were detected and 0 otherwise. </p> </div> <div class="refsect1" lang="en"> -<a name="id2617312"></a><h2>SEE ALSO</h2> +<a name="id2619646"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2617341"></a><h2>AUTHOR</h2> +<a name="id2619676"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.named-checkzone.html b/contrib/bind9/doc/arm/man.named-checkzone.html index 12b7897..78fade2 100644 --- a/contrib/bind9/doc/arm/man.named-checkzone.html +++ b/contrib/bind9/doc/arm/man.named-checkzone.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -47,11 +47,11 @@ </div> <div class="refsynopsisdiv"> <h2>Synopsis</h2> -<div class="cmdsynopsis"><p><code class="command">named-checkzone</code> [<code class="option">-d</code>] [<code class="option">-h</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-M <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-S <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div> -<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div> +<div class="cmdsynopsis"><p><code class="command">named-checkzone</code> [<code class="option">-d</code>] [<code class="option">-h</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-M <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-S <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-T <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div> +<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-T <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2618775"></a><h2>DESCRIPTION</h2> +<a name="id2633210"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named-checkzone</strong></span> checks the syntax and integrity of a zone file. It performs the same checks as <span><strong class="command">named</strong></span> does when loading a @@ -71,7 +71,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2618825"></a><h2>OPTIONS</h2> +<a name="id2674630"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-d</span></dt> <dd><p> @@ -232,6 +232,13 @@ directives in the configuration file are processed as if run by a similarly chrooted named. </p></dd> +<dt><span class="term">-T <em class="replaceable"><code>mode</code></em></span></dt> +<dd><p> + Check if Sender Policy Framework records (TXT and SPF) + both exist or both don't exist. A warning is issued + if they don't match. Possible modes are + <span><strong class="command">"warn"</strong></span> (default), <span><strong class="command">"ignore"</strong></span>. + </p></dd> <dt><span class="term">-w <em class="replaceable"><code>directory</code></em></span></dt> <dd><p> chdir to <code class="filename">directory</code> so that @@ -265,14 +272,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2671342"></a><h2>RETURN VALUES</h2> +<a name="id2675429"></a><h2>RETURN VALUES</h2> <p><span><strong class="command">named-checkzone</strong></span> returns an exit status of 1 if errors were detected and 0 otherwise. </p> </div> <div class="refsect1" lang="en"> -<a name="id2671356"></a><h2>SEE ALSO</h2> +<a name="id2675443"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>, <em class="citetitle">RFC 1035</em>, @@ -280,7 +287,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2671389"></a><h2>AUTHOR</h2> +<a name="id2675476"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.named-journalprint.html b/contrib/bind9/doc/arm/man.named-journalprint.html index c6d1b11..2869cea 100644 --- a/contrib/bind9/doc/arm/man.named-journalprint.html +++ b/contrib/bind9/doc/arm/man.named-journalprint.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">named-journalprint</code> {<em class="replaceable"><code>journal</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2616312"></a><h2>DESCRIPTION</h2> +<a name="id2613857"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">named-journalprint</strong></span> prints the contents of a zone journal file in a human-readable @@ -76,7 +76,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2621956"></a><h2>SEE ALSO</h2> +<a name="id2639434"></a><h2>SEE ALSO</h2> <p> <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">nsupdate</span>(8)</span>, @@ -84,7 +84,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2621987"></a><h2>AUTHOR</h2> +<a name="id2639465"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.named.html b/contrib/bind9/doc/arm/man.named.html index 729a9af..c7371d2 100644 --- a/contrib/bind9/doc/arm/man.named.html +++ b/contrib/bind9/doc/arm/man.named.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">named</code> [<code class="option">-4</code>] [<code class="option">-6</code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-d <em class="replaceable"><code>debug-level</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine-name</code></em></code>] [<code class="option">-f</code>] [<code class="option">-g</code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-n <em class="replaceable"><code>#cpus</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-s</code>] [<code class="option">-S <em class="replaceable"><code>#max-socks</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-V</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2619008"></a><h2>DESCRIPTION</h2> +<a name="id2633550"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named</strong></span> is a Domain Name System (DNS) server, part of the BIND 9 distribution from ISC. For more @@ -65,7 +65,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2619038"></a><h2>OPTIONS</h2> +<a name="id2633581"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-4</span></dt> <dd><p> @@ -246,7 +246,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2638843"></a><h2>SIGNALS</h2> +<a name="id2641303"></a><h2>SIGNALS</h2> <p> In routine operation, signals should not be used to control the nameserver; <span><strong class="command">rndc</strong></span> should be used @@ -267,7 +267,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2660602"></a><h2>CONFIGURATION</h2> +<a name="id2641353"></a><h2>CONFIGURATION</h2> <p> The <span><strong class="command">named</strong></span> configuration file is too complex to describe in detail here. A complete description is provided @@ -284,7 +284,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2660651"></a><h2>FILES</h2> +<a name="id2675740"></a><h2>FILES</h2> <div class="variablelist"><dl> <dt><span class="term"><code class="filename">/etc/named.conf</code></span></dt> <dd><p> @@ -297,7 +297,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2660695"></a><h2>SEE ALSO</h2> +<a name="id2675784"></a><h2>SEE ALSO</h2> <p><em class="citetitle">RFC 1033</em>, <em class="citetitle">RFC 1034</em>, <em class="citetitle">RFC 1035</em>, @@ -310,7 +310,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2675716"></a><h2>AUTHOR</h2> +<a name="id2675854"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.nsec3hash.html b/contrib/bind9/doc/arm/man.nsec3hash.html index d266a22..11df518 100644 --- a/contrib/bind9/doc/arm/man.nsec3hash.html +++ b/contrib/bind9/doc/arm/man.nsec3hash.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -48,7 +48,7 @@ <div class="cmdsynopsis"><p><code class="command">nsec3hash</code> {<em class="replaceable"><code>salt</code></em>} {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>iterations</code></em>} {<em class="replaceable"><code>domain</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2643980"></a><h2>DESCRIPTION</h2> +<a name="id2653680"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">nsec3hash</strong></span> generates an NSEC3 hash based on a set of NSEC3 parameters. This can be used to check the validity @@ -56,7 +56,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2643995"></a><h2>ARGUMENTS</h2> +<a name="id2653694"></a><h2>ARGUMENTS</h2> <div class="variablelist"><dl> <dt><span class="term">salt</span></dt> <dd><p> @@ -80,14 +80,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2644125"></a><h2>SEE ALSO</h2> +<a name="id2653756"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 5155</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2644142"></a><h2>AUTHOR</h2> +<a name="id2653773"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.nsupdate.html b/contrib/bind9/doc/arm/man.nsupdate.html index 1542215..d7f164e 100644 --- a/contrib/bind9/doc/arm/man.nsupdate.html +++ b/contrib/bind9/doc/arm/man.nsupdate.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">nsupdate</code> [<code class="option">-d</code>] [<code class="option">-D</code>] [[<code class="option">-g</code>] | [<code class="option">-o</code>] | [<code class="option">-l</code>] | [<code class="option">-y <em class="replaceable"><code>[<span class="optional">hmac:</span>]keyname:secret</code></em></code>] | [<code class="option">-k <em class="replaceable"><code>keyfile</code></em></code>]] [<code class="option">-t <em class="replaceable"><code>timeout</code></em></code>] [<code class="option">-u <em class="replaceable"><code>udptimeout</code></em></code>] [<code class="option">-r <em class="replaceable"><code>udpretries</code></em></code>] [<code class="option">-R <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-v</code>] [filename]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2626656"></a><h2>DESCRIPTION</h2> +<a name="id2639765"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">nsupdate</strong></span> is used to submit Dynamic DNS Update requests as defined in RFC 2136 to a name server. @@ -210,7 +210,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2633475"></a><h2>INPUT FORMAT</h2> +<a name="id2641532"></a><h2>INPUT FORMAT</h2> <p><span><strong class="command">nsupdate</strong></span> reads input from <em class="parameter"><code>filename</code></em> @@ -498,7 +498,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2678828"></a><h2>EXAMPLES</h2> +<a name="id2676987"></a><h2>EXAMPLES</h2> <p> The examples below show how <span><strong class="command">nsupdate</strong></span> @@ -552,7 +552,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2678878"></a><h2>FILES</h2> +<a name="id2677037"></a><h2>FILES</h2> <div class="variablelist"><dl> <dt><span class="term"><code class="constant">/etc/resolv.conf</code></span></dt> <dd><p> @@ -575,7 +575,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2678962"></a><h2>SEE ALSO</h2> +<a name="id2677121"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">RFC 2136</em>, <em class="citetitle">RFC 3007</em>, @@ -590,7 +590,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2679019"></a><h2>BUGS</h2> +<a name="id2677246"></a><h2>BUGS</h2> <p> The TSIG key is redundantly stored in two separate files. This is a consequence of nsupdate using the DST library diff --git a/contrib/bind9/doc/arm/man.rndc-confgen.html b/contrib/bind9/doc/arm/man.rndc-confgen.html index b245907..977ec22 100644 --- a/contrib/bind9/doc/arm/man.rndc-confgen.html +++ b/contrib/bind9/doc/arm/man.rndc-confgen.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc-confgen</code> [<code class="option">-a</code>] [<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>] [<code class="option">-c <em class="replaceable"><code>keyfile</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>keyname</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomfile</code></em></code>] [<code class="option">-s <em class="replaceable"><code>address</code></em></code>] [<code class="option">-t <em class="replaceable"><code>chrootdir</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2641110"></a><h2>DESCRIPTION</h2> +<a name="id2643706"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">rndc-confgen</strong></span> generates configuration files for <span><strong class="command">rndc</strong></span>. It can be used as a @@ -66,7 +66,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2641176"></a><h2>OPTIONS</h2> +<a name="id2643772"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a</span></dt> <dd> @@ -173,7 +173,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2641835"></a><h2>EXAMPLES</h2> +<a name="id2644978"></a><h2>EXAMPLES</h2> <p> To allow <span><strong class="command">rndc</strong></span> to be used with no manual configuration, run @@ -190,7 +190,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2643189"></a><h2>SEE ALSO</h2> +<a name="id2645034"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, @@ -198,7 +198,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2643842"></a><h2>AUTHOR</h2> +<a name="id2652650"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.rndc.conf.html b/contrib/bind9/doc/arm/man.rndc.conf.html index 8a3d4e2..ebb4e40 100644 --- a/contrib/bind9/doc/arm/man.rndc.conf.html +++ b/contrib/bind9/doc/arm/man.rndc.conf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc.conf</code> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2639872"></a><h2>DESCRIPTION</h2> +<a name="id2642400"></a><h2>DESCRIPTION</h2> <p><code class="filename">rndc.conf</code> is the configuration file for <span><strong class="command">rndc</strong></span>, the BIND 9 name server control utility. This file has a similar structure and syntax to @@ -135,7 +135,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640180"></a><h2>EXAMPLE</h2> +<a name="id2642571"></a><h2>EXAMPLE</h2> <pre class="programlisting"> options { default-server localhost; @@ -209,7 +209,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640301"></a><h2>NAME SERVER CONFIGURATION</h2> +<a name="id2643239"></a><h2>NAME SERVER CONFIGURATION</h2> <p> The name server must be configured to accept rndc connections and to recognize the key specified in the <code class="filename">rndc.conf</code> @@ -219,7 +219,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640327"></a><h2>SEE ALSO</h2> +<a name="id2643265"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">mmencode</span>(1)</span>, @@ -227,7 +227,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640365"></a><h2>AUTHOR</h2> +<a name="id2643303"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/man.rndc.html b/contrib/bind9/doc/arm/man.rndc.html index 0583287..d433baf 100644 --- a/contrib/bind9/doc/arm/man.rndc.html +++ b/contrib/bind9/doc/arm/man.rndc.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc</code> [<code class="option">-b <em class="replaceable"><code>source-address</code></em></code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key-file</code></em></code>] [<code class="option">-s <em class="replaceable"><code>server</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-V</code>] [<code class="option">-y <em class="replaceable"><code>key_id</code></em></code>] {command}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2638953"></a><h2>DESCRIPTION</h2> +<a name="id2641686"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">rndc</strong></span> controls the operation of a name server. It supersedes the <span><strong class="command">ndc</strong></span> utility @@ -79,7 +79,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639003"></a><h2>OPTIONS</h2> +<a name="id2641736"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-b <em class="replaceable"><code>source-address</code></em></span></dt> <dd><p> @@ -151,7 +151,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639228"></a><h2>LIMITATIONS</h2> +<a name="id2642029"></a><h2>LIMITATIONS</h2> <p><span><strong class="command">rndc</strong></span> does not yet support all the commands of the BIND 8 <span><strong class="command">ndc</strong></span> utility. @@ -165,7 +165,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639259"></a><h2>SEE ALSO</h2> +<a name="id2642060"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, @@ -175,7 +175,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639315"></a><h2>AUTHOR</h2> +<a name="id2642116"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/contrib/bind9/doc/arm/pkcs11.xml b/contrib/bind9/doc/arm/pkcs11.xml index d3cfa28..2eb85cb 100644 --- a/contrib/bind9/doc/arm/pkcs11.xml +++ b/contrib/bind9/doc/arm/pkcs11.xml @@ -43,7 +43,7 @@ This is a shared library object, providing a low-level PKCS #11 interface to the HSM hardware. It is dynamically loaded by OpenSSL at runtime. The PKCS #11 provider comes from the HSM - vendor, and and is specific to the HSM to be controlled.</para> + vendor, and is specific to the HSM to be controlled.</para> <para>There are two "flavors" of PKCS #11 support provided by the patched OpenSSL, one of which must be chosen at configuration time. The correct choice depends on the HSM diff --git a/contrib/bind9/doc/misc/options b/contrib/bind9/doc/misc/options index 51d2506..9cfc5a6 100644 --- a/contrib/bind9/doc/misc/options +++ b/contrib/bind9/doc/misc/options @@ -86,6 +86,7 @@ options { check-mx-cname ( fail | warn | ignore ); check-names ( master | slave | response ) ( fail | warn | ignore ); check-sibling <boolean>; + check-spf ( warn | ignore ); check-srv-cname ( fail | warn | ignore ); check-wildcard <boolean>; cleaning-interval <integer>; @@ -200,7 +201,7 @@ options { | passthru | no-op | nxdomain | nodata | cname <quoted_string> ) ] [ recursive-only <boolean> ] [ max-policy-ttl <integer> ]; ... } [ recursive-only <boolean> ] [ break-dnssec <boolean> ] [ - max-policy-ttl <integer> ]; + max-policy-ttl <integer> ] [ min-ns-dots <integer> ]; rfc2308-type1 <boolean>; // not yet implemented root-delegation-only [ exclude { <quoted_string>; ... } ]; rrset-order { [ class <string> ] [ type <string> ] [ name @@ -307,6 +308,7 @@ view <string> <optional_class> { check-mx-cname ( fail | warn | ignore ); check-names ( master | slave | response ) ( fail | warn | ignore ); check-sibling <boolean>; + check-spf ( warn | ignore ); check-srv-cname ( fail | warn | ignore ); check-wildcard <boolean>; cleaning-interval <integer>; @@ -405,7 +407,7 @@ view <string> <optional_class> { | passthru | no-op | nxdomain | nodata | cname <quoted_string> ) ] [ recursive-only <boolean> ] [ max-policy-ttl <integer> ]; ... } [ recursive-only <boolean> ] [ break-dnssec <boolean> ] [ - max-policy-ttl <integer> ]; + max-policy-ttl <integer> ] [ min-ns-dots <integer> ]; rfc2308-type1 <boolean>; // not yet implemented root-delegation-only [ exclude { <quoted_string>; ... } ]; rrset-order { [ class <string> ] [ type <string> ] [ name @@ -470,6 +472,7 @@ view <string> <optional_class> { check-mx-cname ( fail | warn | ignore ); check-names ( fail | warn | ignore ); check-sibling <boolean>; + check-spf ( warn | ignore ); check-srv-cname ( fail | warn | ignore ); check-wildcard <boolean>; database <string>; @@ -558,6 +561,7 @@ zone <string> <optional_class> { check-mx-cname ( fail | warn | ignore ); check-names ( fail | warn | ignore ); check-sibling <boolean>; + check-spf ( warn | ignore ); check-srv-cname ( fail | warn | ignore ); check-wildcard <boolean>; database <string>; diff --git a/contrib/bind9/isc-config.sh.in b/contrib/bind9/isc-config.sh.in index 26b7d64..10df275 100644 --- a/contrib/bind9/isc-config.sh.in +++ b/contrib/bind9/isc-config.sh.in @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000, 2001, 2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -20,6 +20,8 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ exec_prefix_set= +includedir=@includedir@ +libdir=@libdir@ usage() { @@ -57,6 +59,7 @@ while test $# -gt 0; do prefix=$optarg if test "x$exec_prefix_set" = x ; then exec_prefix=$prefix + exec_prefix_set=true fi ;; --prefix) @@ -64,6 +67,7 @@ while test $# -gt 0; do ;; --exec-prefix=*) exec_prefix=$optarg + exec_prefix_set=true ;; --exec-prefix) echo_exec_prefix=true @@ -115,14 +119,22 @@ if test x"$echo_exec_prefix" = x"true" ; then echo $exec_prefix fi if test x"$echo_cflags" = x"true"; then - includes="-I${exec_prefix}/include" + if test x"${exec_prefix_set}" = x"true"; then + includes="-I${exec_prefix}/include" + else + includes="-I${includedir}" + fi if test x"$libisc" = x"true"; then includes="$includes @ALWAYS_DEFINES@ @STD_CINCLUDES@ @STD_CDEFINES@ @CCOPT@" fi echo $includes fi if test x"$echo_libs" = x"true"; then - libs=-L${exec_prefix}/lib + if test x"${exec_prefix_set}" = x"true"; then + includes="-L${exec_prefix}/lib" + else + libs="-L${libdir}" + fi if test x"$liblwres" = x"true" ; then libs="$libs -llwres" fi diff --git a/contrib/bind9/lib/Makefile.in b/contrib/bind9/lib/Makefile.in index e3f0bdb..8dc1d38 100644 --- a/contrib/bind9/lib/Makefile.in +++ b/contrib/bind9/lib/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2001, 2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -27,3 +27,8 @@ SUBDIRS = isc isccc dns isccfg bind9 lwres tests TARGETS = @BIND9_MAKE_RULES@ + +distclean:: + @echo "making $@ in `pwd`/irs"; \ + (cd irs; ${MAKE} ${MAKEDEFS} DESTDIR="${DESTDIR}" $@) || exit 1; + diff --git a/contrib/bind9/lib/bind9/Makefile.in b/contrib/bind9/lib/bind9/Makefile.in index 73285e1..b6633e5 100644 --- a/contrib/bind9/lib/bind9/Makefile.in +++ b/contrib/bind9/lib/bind9/Makefile.in @@ -69,7 +69,8 @@ libbind9.la: ${OBJS} ${ISCCFGDEPLIBS} ${ISCDEPLIBS} ${DNSDEPLIBS} ${LIBTOOL_MODE_LINK} \ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libbind9.la -rpath ${libdir} \ -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \ - ${OBJS} ${DNSLIBS} ${ISCCFGLIBS} ${ISCLIBS} ${LIBS} + ${OBJS} ${DNSLIBS} ${ISCCFGLIBS} ${ISCLIBS} @DNS_CRYPTO_LIBS@ \ + ${LIBS} timestamp: libbind9.@A@ touch timestamp diff --git a/contrib/bind9/lib/bind9/api b/contrib/bind9/lib/bind9/api index 7e9b115..99f8d31 100644 --- a/contrib/bind9/lib/bind9/api +++ b/contrib/bind9/lib/bind9/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 +# 9.9-sub: 130-139 LIBINTERFACE = 80 -LIBREVISION = 7 +LIBREVISION = 8 LIBAGE = 0 diff --git a/contrib/bind9/lib/bind9/check.c b/contrib/bind9/lib/bind9/check.c index f765604..7c975c9 100644 --- a/contrib/bind9/lib/bind9/check.c +++ b/contrib/bind9/lib/bind9/check.c @@ -100,7 +100,7 @@ check_orderent(const cfg_obj_t *ent, isc_log_t *logctx) { obj = cfg_tuple_get(ent, "name"); if (cfg_obj_isstring(obj)) { str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, dns_rootname, 0, NULL); @@ -197,7 +197,7 @@ check_dual_stack(const cfg_obj_t *options, isc_log_t *logctx) { continue; obj = cfg_tuple_get(value, "name"); str = cfg_obj_asstring(obj); - isc_buffer_init(&buffer, str, strlen(str)); + isc_buffer_constinit(&buffer, str, strlen(str)); isc_buffer_add(&buffer, strlen(str)); dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); @@ -263,7 +263,7 @@ disabled_algorithms(const cfg_obj_t *disabled, isc_log_t *logctx) { name = dns_fixedname_name(&fixed); obj = cfg_tuple_get(disabled, "name"); str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); if (tresult != ISC_R_SUCCESS) { @@ -346,7 +346,7 @@ mustbesecure(const cfg_obj_t *secure, isc_symtab_t *symtab, isc_log_t *logctx, name = dns_fixedname_name(&fixed); obj = cfg_tuple_get(secure, "name"); str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); if (result != ISC_R_SUCCESS) { @@ -799,7 +799,7 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx, element = cfg_list_next(element)) { exclude = cfg_listelt_value(element); str = cfg_obj_asstring(exclude); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(name, &b, dns_rootname, @@ -867,7 +867,7 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx, continue; } - isc_buffer_init(&b, dlv, strlen(dlv)); + isc_buffer_constinit(&b, dlv, strlen(dlv)); isc_buffer_add(&b, strlen(dlv)); tresult = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); @@ -901,7 +901,7 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx, if (!cfg_obj_isvoid(anchor)) { dlv = cfg_obj_asstring(anchor); - isc_buffer_init(&b, dlv, strlen(dlv)); + isc_buffer_constinit(&b, dlv, strlen(dlv)); isc_buffer_add(&b, strlen(dlv)); tresult = dns_name_fromtext(name, &b, dns_rootname, @@ -975,7 +975,7 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx, (void)cfg_map_get(options, server_contact[i], &obj); if (obj != NULL) { str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, dns_rootname, 0, NULL); @@ -999,7 +999,7 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx, { obj = cfg_listelt_value(element); str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, dns_rootname, 0, NULL); @@ -1184,7 +1184,7 @@ check_update_policy(const cfg_obj_t *policy, isc_log_t *logctx) { dns_fixedname_init(&fixed); str = cfg_obj_asstring(identity); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, dns_rootname, 0, NULL); @@ -1198,7 +1198,7 @@ check_update_policy(const cfg_obj_t *policy, isc_log_t *logctx) { strcasecmp(cfg_obj_asstring(matchtype), "zonesub") != 0) { dns_fixedname_init(&fixed); str = cfg_obj_asstring(dname); - isc_buffer_init(&b, str, strlen(str)); + isc_buffer_constinit(&b, str, strlen(str)); isc_buffer_add(&b, strlen(str)); tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, dns_rootname, 0, NULL); @@ -1432,7 +1432,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, * deals with strings. */ dns_fixedname_init(&fixedname); - isc_buffer_init(&b, znamestr, strlen(znamestr)); + isc_buffer_constinit(&b, znamestr, strlen(znamestr)); isc_buffer_add(&b, strlen(znamestr)); tresult = dns_name_fromtext(dns_fixedname_name(&fixedname), &b, dns_rootname, DNS_NAME_DOWNCASE, NULL); @@ -1680,7 +1680,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, snamestr = cfg_obj_asstring(obj); dns_fixedname_init(&fixed_sname); - isc_buffer_init(&b2, snamestr, strlen(snamestr)); + isc_buffer_constinit(&b2, snamestr, strlen(snamestr)); isc_buffer_add(&b2, strlen(snamestr)); sname = dns_fixedname_name(&fixed_sname); tresult = dns_name_fromtext(sname, &b2, dns_rootname, @@ -1859,7 +1859,7 @@ check_keylist(const cfg_obj_t *keys, isc_symtab_t *symtab, isc_buffer_t b; char *keyname; - isc_buffer_init(&b, keyid, strlen(keyid)); + isc_buffer_constinit(&b, keyid, strlen(keyid)); isc_buffer_add(&b, strlen(keyid)); tresult = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); @@ -2028,7 +2028,7 @@ check_servers(const cfg_obj_t *config, const cfg_obj_t *voptions, */ keyval = cfg_obj_asstring(keys); dns_fixedname_init(&fname); - isc_buffer_init(&b, keyval, strlen(keyval)); + isc_buffer_constinit(&b, keyval, strlen(keyval)); isc_buffer_add(&b, strlen(keyval)); keyname = dns_fixedname_name(&fname); tresult = dns_name_fromtext(keyname, &b, dns_rootname, @@ -2073,7 +2073,7 @@ check_trusted_key(const cfg_obj_t *key, isc_boolean_t managed, keyname = dns_fixedname_name(&fkeyname); keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name")); - isc_buffer_init(&b, keynamestr, strlen(keynamestr)); + isc_buffer_constinit(&b, keynamestr, strlen(keynamestr)); isc_buffer_add(&b, strlen(keynamestr)); result = dns_name_fromtext(keyname, &b, dns_rootname, 0, NULL); if (result != ISC_R_SUCCESS) { diff --git a/contrib/bind9/lib/dns/Makefile.in b/contrib/bind9/lib/dns/Makefile.in index a01bb41..51d6066 100644 --- a/contrib/bind9/lib/dns/Makefile.in +++ b/contrib/bind9/lib/dns/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -46,8 +46,9 @@ LIBS = @LIBS@ # Alphabetically +OPENSSLGOSTLINKOBJS = opensslgost_link.@O@ OPENSSLLINKOBJS = openssl_link.@O@ openssldh_link.@O@ openssldsa_link.@O@ \ - opensslecdsa_link.@O@ opensslgost_link.@O@ \ + opensslecdsa_link.@O@ @OPENSSLGOSTLINKOBJS@ \ opensslrsa_link.@O@ DSTOBJS = @DST_EXTRA_OBJS@ @OPENSSLLINKOBJS@ \ @@ -76,8 +77,9 @@ DNSOBJS = acache.@O@ acl.@O@ adb.@O@ byaddr.@O@ \ OBJS= ${DNSOBJS} ${OTHEROBJS} ${DSTOBJS} # Alphabetically +OPENSSLGOSTLINKSRCS = opensslgost_link.c OPENSSLLINKSRCS = openssl_link.c openssldh_link.c openssldsa_link.c \ - opensslecdsa_link.c opensslgost_link.c opensslrsa_link.c + opensslecdsa_link.c @OPENSSLGOSTLINKSRCS@ opensslrsa_link.c DSTSRCS = @DST_EXTRA_SRCS@ @OPENSSLLINKSRCS@ \ dst_api.c dst_lib.c dst_parse.c \ diff --git a/contrib/bind9/lib/dns/acache.c b/contrib/bind9/lib/dns/acache.c index 2ad4981..863df35 100644 --- a/contrib/bind9/lib/dns/acache.c +++ b/contrib/bind9/lib/dns/acache.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -27,6 +27,7 @@ #include <isc/random.h> #include <isc/refcount.h> #include <isc/rwlock.h> +#include <isc/serial.h> #include <isc/task.h> #include <isc/time.h> #include <isc/timer.h> @@ -72,10 +73,10 @@ * (XXX simply derived from definitions in cache.c There may be better * constants here.) */ -#define DNS_ACACHE_MINSIZE 2097152 /* Bytes. 2097152 = 2 MB */ -#define DNS_ACACHE_CLEANERINCREMENT 1000 /* Number of entries. */ +#define DNS_ACACHE_MINSIZE 2097152U /* Bytes. 2097152 = 2 MB */ +#define DNS_ACACHE_CLEANERINCREMENT 1000 /* Number of entries. */ -#define DEFAULT_ACACHE_ENTRY_LOCK_COUNT 1009 /*%< Should be prime. */ +#define DEFAULT_ACACHE_ENTRY_LOCK_COUNT 1009 /*%< Should be prime. */ #if defined(ISC_RWLOCK_USEATOMIC) && defined(ISC_PLATFORM_HAVEATOMICSTORE) #define ACACHE_USE_RWLOCK 1 @@ -776,10 +777,14 @@ entry_stale(acache_cleaner_t *cleaner, dns_acacheentry_t *entry, * use and the cleaning interval. */ if (cleaner->overmem) { - unsigned int passed = - now32 - entry->lastused; /* <= interval */ + unsigned int passed; isc_uint32_t val; + if (isc_serial_ge(now32, entry->lastused)) + passed = now32 - entry->lastused; /* <= interval */ + else + passed = 0; + if (passed > interval / 2) return (ISC_TRUE); isc_random_get(&val); @@ -825,8 +830,10 @@ acache_incremental_cleaning_action(isc_task_t *task, isc_event_t *event) { entry = cleaner->current_entry; isc_stdtime_convert32(cleaner->last_cleanup_time, &last32); - INSIST(now32 > last32); - interval = now32 - last32; + if (isc_serial_ge(now32, last32)) + interval = now32 - last32; + else + interval = 0; while (n_entries-- > 0) { isc_boolean_t is_stale = ISC_FALSE; @@ -861,7 +868,11 @@ acache_incremental_cleaning_action(isc_task_t *task, isc_event_t *event) { if (entry != NULL) { /* * If we are still in the overmem - * state, keep cleaning. + * state, keep cleaning. In case we + * exit from the loop immediately after + * this, reset next to the head entry + * as we'll expect it will be never + * NULL. */ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, @@ -870,6 +881,7 @@ acache_incremental_cleaning_action(isc_task_t *task, isc_event_t *event) { "acache cleaner: " "still overmem, " "reset and try again"); + next = entry; continue; } } @@ -888,7 +900,7 @@ acache_incremental_cleaning_action(isc_task_t *task, isc_event_t *event) { * be the starting point in the next clean-up, and reschedule another * batch. If it fails, just try to continue anyway. */ - INSIST(next != NULL && next != cleaner->current_entry); + INSIST(next != NULL); dns_acache_detachentry(&cleaner->current_entry); dns_acache_attachentry(next, &cleaner->current_entry); @@ -1649,12 +1661,17 @@ dns_acache_setentry(dns_acache_t *acache, dns_acacheentry_t *entry, return (result); } -void +isc_boolean_t dns_acache_cancelentry(dns_acacheentry_t *entry) { - dns_acache_t *acache = entry->acache; + dns_acache_t *acache; + isc_boolean_t callback_active; REQUIRE(DNS_ACACHEENTRY_VALID(entry)); - INSIST(DNS_ACACHE_VALID(acache)); + + acache = entry->acache; + callback_active = ISC_TF(entry->cbarg != NULL); + + INSIST(DNS_ACACHE_VALID(entry->acache)); LOCK(&acache->lock); ACACHE_LOCK(&acache->entrylocks[entry->locknum], isc_rwlocktype_write); @@ -1674,6 +1691,8 @@ dns_acache_cancelentry(dns_acacheentry_t *entry) { ACACHE_UNLOCK(&acache->entrylocks[entry->locknum], isc_rwlocktype_write); UNLOCK(&acache->lock); + + return (callback_active); } void @@ -1768,13 +1787,13 @@ dns_acache_setcachesize(dns_acache_t *acache, isc_uint32_t size) { REQUIRE(DNS_ACACHE_VALID(acache)); - if (size != 0 && size < DNS_ACACHE_MINSIZE) + if (size != 0U && size < DNS_ACACHE_MINSIZE) size = DNS_ACACHE_MINSIZE; hiwater = size - (size >> 3); lowater = size - (size >> 2); - if (size == 0 || hiwater == 0 || lowater == 0) + if (size == 0U || hiwater == 0U || lowater == 0U) isc_mem_setwater(acache->mctx, water, acache, 0, 0); else isc_mem_setwater(acache->mctx, water, acache, diff --git a/contrib/bind9/lib/dns/adb.c b/contrib/bind9/lib/dns/adb.c index 531d112..6aa5e5a 100644 --- a/contrib/bind9/lib/dns/adb.c +++ b/contrib/bind9/lib/dns/adb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -89,7 +89,7 @@ #define DNS_ADB_INVALIDBUCKET (-1) /*%< invalid bucket address */ -#define DNS_ADB_MINADBSIZE (1024*1024) /*%< 1 Megabyte */ +#define DNS_ADB_MINADBSIZE (1024U*1024U) /*%< 1 Megabyte */ typedef ISC_LIST(dns_adbname_t) dns_adbnamelist_t; typedef struct dns_adbnamehook dns_adbnamehook_t; @@ -518,7 +518,9 @@ grow_entries(isc_task_t *task, isc_event_t *ev) { isc_event_free(&ev); - isc_task_beginexclusive(task); + result = isc_task_beginexclusive(task); + if (result != ISC_R_SUCCESS) + goto check_exit; i = 0; while (nbuckets[i] != 0 && adb->nentries >= nbuckets[i]) @@ -646,6 +648,7 @@ grow_entries(isc_task_t *task, isc_event_t *ev) { done: isc_task_endexclusive(task); + check_exit: LOCK(&adb->lock); if (dec_adb_irefcnt(adb)) check_exit(adb); @@ -670,7 +673,9 @@ grow_names(isc_task_t *task, isc_event_t *ev) { isc_event_free(&ev); - isc_task_beginexclusive(task); + result = isc_task_beginexclusive(task); + if (result != ISC_R_SUCCESS) + goto check_exit; i = 0; while (nbuckets[i] != 0 && adb->nnames >= nbuckets[i]) @@ -794,6 +799,7 @@ grow_names(isc_task_t *task, isc_event_t *ev) { done: isc_task_endexclusive(task); + check_exit: LOCK(&adb->lock); if (dec_adb_irefcnt(adb)) check_exit(adb); @@ -1280,6 +1286,7 @@ clean_namehooks(dns_adb_t *adb, dns_adbnamehooklist_t *namehooks) { if (addr_bucket != DNS_ADB_INVALIDBUCKET) UNLOCK(&adb->entrylocks[addr_bucket]); addr_bucket = entry->lock_bucket; + INSIST(addr_bucket != DNS_ADB_INVALIDBUCKET); LOCK(&adb->entrylocks[addr_bucket]); } @@ -2075,6 +2082,7 @@ copy_namehook_lists(dns_adb_t *adb, dns_adbfind_t *find, dns_name_t *qname, while (namehook != NULL) { entry = namehook->entry; bucket = entry->lock_bucket; + INSIST(bucket != DNS_ADB_INVALIDBUCKET); LOCK(&adb->entrylocks[bucket]); if (!FIND_RETURNLAME(find) @@ -2105,6 +2113,7 @@ copy_namehook_lists(dns_adb_t *adb, dns_adbfind_t *find, dns_name_t *qname, while (namehook != NULL) { entry = namehook->entry; bucket = entry->lock_bucket; + INSIST(bucket != DNS_ADB_INVALIDBUCKET); LOCK(&adb->entrylocks[bucket]); if (!FIND_RETURNLAME(find) @@ -2331,7 +2340,8 @@ destroy(dns_adb_t *adb) { adb->magic = 0; isc_task_detach(&adb->task); - isc_task_detach(&adb->excl); + if (adb->excl != NULL) + isc_task_detach(&adb->excl); isc_mempool_destroy(&adb->nmp); isc_mempool_destroy(&adb->nhmp); @@ -4126,13 +4136,13 @@ dns_adb_setadbsize(dns_adb_t *adb, isc_uint32_t size) { INSIST(DNS_ADB_VALID(adb)); - if (size != 0 && size < DNS_ADB_MINADBSIZE) + if (size != 0U && size < DNS_ADB_MINADBSIZE) size = DNS_ADB_MINADBSIZE; hiwater = size - (size >> 3); /* Approximately 7/8ths. */ lowater = size - (size >> 2); /* Approximately 3/4ths. */ - if (size == 0 || hiwater == 0 || lowater == 0) + if (size == 0U || hiwater == 0U || lowater == 0U) isc_mem_setwater(adb->mctx, water, adb, 0, 0); else isc_mem_setwater(adb->mctx, water, adb, hiwater, lowater); diff --git a/contrib/bind9/lib/dns/api b/contrib/bind9/lib/dns/api index 325781a..5241a88 100644 --- a/contrib/bind9/lib/dns/api +++ b/contrib/bind9/lib/dns/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 -LIBINTERFACE = 89 +# 9.9-sub: 130-139 +LIBINTERFACE = 122 LIBREVISION = 1 -LIBAGE = 1 +LIBAGE = 0 diff --git a/contrib/bind9/lib/dns/cache.c b/contrib/bind9/lib/dns/cache.c index 56bff8d..bced80e 100644 --- a/contrib/bind9/lib/dns/cache.c +++ b/contrib/bind9/lib/dns/cache.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ * DNS_CACHE_MINSIZE is how many bytes is the floor for dns_cache_setcachesize(). * See also DNS_CACHE_CLEANERINCREMENT */ -#define DNS_CACHE_MINSIZE 2097152 /*%< Bytes. 2097152 = 2 MB */ +#define DNS_CACHE_MINSIZE 2097152U /*%< Bytes. 2097152 = 2 MB */ /*! * Control incremental cleaning. * CLEANERINCREMENT is how many nodes are examined in one pass. @@ -1038,7 +1038,7 @@ dns_cache_setcachesize(dns_cache_t *cache, isc_uint32_t size) { * Impose a minimum cache size; pathological things happen if there * is too little room. */ - if (size != 0 && size < DNS_CACHE_MINSIZE) + if (size != 0U && size < DNS_CACHE_MINSIZE) size = DNS_CACHE_MINSIZE; LOCK(&cache->lock); @@ -1055,7 +1055,7 @@ dns_cache_setcachesize(dns_cache_t *cache, isc_uint32_t size) { * water(). */ - if (size == 0 || hiwater == 0 || lowater == 0) + if (size == 0U || hiwater == 0U || lowater == 0U) /* * Disable cache memory limiting. */ diff --git a/contrib/bind9/lib/dns/client.c b/contrib/bind9/lib/dns/client.c index 7b6d1640..c4780f7 100644 --- a/contrib/bind9/lib/dns/client.c +++ b/contrib/bind9/lib/dns/client.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -354,6 +354,12 @@ dns_client_create(dns_client_t **clientp, unsigned int options) { isc_taskmgr_t *taskmgr = NULL; isc_socketmgr_t *socketmgr = NULL; isc_timermgr_t *timermgr = NULL; +#if 0 + /* XXXMPA add debug logging support */ + isc_log_t *lctx = NULL; + isc_logconfig_t *logconfig = NULL; + unsigned int logdebuglevel = 0; +#endif result = isc_mem_create(0, 0, &mctx); if (result != ISC_R_SUCCESS) @@ -373,7 +379,18 @@ dns_client_create(dns_client_t **clientp, unsigned int options) { result = isc_timermgr_createinctx(mctx, actx, &timermgr); if (result != ISC_R_SUCCESS) goto cleanup; - +#if 0 + result = isc_log_create(mctx, &lctx, &logconfig); + if (result != ISC_R_SUCCESS) + goto cleanup; + isc_log_setcontext(lctx); + dns_log_init(lctx); + dns_log_setcontext(lctx); + result = isc_log_usechannel(logconfig, "default_debug", NULL, NULL); + if (result != ISC_R_SUCCESS) + goto cleanup; + isc_log_setdebuglevel(lctx, logdebuglevel); +#endif result = dns_client_createx(mctx, actx, taskmgr, socketmgr, timermgr, options, clientp); if (result != ISC_R_SUCCESS) @@ -485,6 +502,7 @@ dns_client_createx(isc_mem_t *mctx, isc_appctx_t *actx, isc_taskmgr_t *taskmgr, client->update_udpretries = DEF_UPDATE_UDPRETRIES; client->find_timeout = DEF_FIND_TIMEOUT; client->find_udpretries = DEF_FIND_UDPRETRIES; + client->attributes = 0; client->references = 1; client->magic = DNS_CLIENT_MAGIC; @@ -2000,8 +2018,9 @@ resolveaddr_done(isc_task_t *task, isc_event_t *event) { switch (family) { case AF_INET: dns_rdataset_current(rdataset, &rdata); - dns_rdata_tostruct(&rdata, &rdata_a, - NULL); + result = dns_rdata_tostruct(&rdata, &rdata_a, + NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); isc_sockaddr_fromin(sa, &rdata_a.in_addr, 53); @@ -2009,8 +2028,9 @@ resolveaddr_done(isc_task_t *task, isc_event_t *event) { break; case AF_INET6: dns_rdataset_current(rdataset, &rdata); - dns_rdata_tostruct(&rdata, &rdata_aaaa, - NULL); + result = dns_rdata_tostruct(&rdata, &rdata_aaaa, + NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); isc_sockaddr_fromin6(sa, &rdata_aaaa.in6_addr, 53); diff --git a/contrib/bind9/lib/dns/db.c b/contrib/bind9/lib/dns/db.c index 0cf2c27..77f82f1 100644 --- a/contrib/bind9/lib/dns/db.c +++ b/contrib/bind9/lib/dns/db.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -945,11 +945,12 @@ dns_db_resigned(dns_db_t *db, dns_rdataset_t *rdataset, (db->methods->resigned)(db, rdataset, version); } -void +isc_result_t dns_db_rpz_enabled(dns_db_t *db, dns_rpz_st_t *st) { if (db->methods->rpz_enabled != NULL) - (db->methods->rpz_enabled)(db, st); + return ((db->methods->rpz_enabled)(db, st)); + return (ISC_R_SUCCESS); } void diff --git a/contrib/bind9/lib/dns/dispatch.c b/contrib/bind9/lib/dns/dispatch.c index 775d4f4..9848ac2 100644 --- a/contrib/bind9/lib/dns/dispatch.c +++ b/contrib/bind9/lib/dns/dispatch.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -2756,7 +2756,7 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp, * If no port is specified, we first try to pick up a random * port by ourselves. */ - if (isc_sockaddr_pf(&disp->local) == AF_INET) { + if (isc_sockaddr_pf(localaddr) == AF_INET) { nports = disp->mgr->nv4ports; ports = disp->mgr->v4ports; } else { @@ -2775,12 +2775,16 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp, isc_sockaddr_setport(&localaddr_bound, prt); result = open_socket(sockmgr, &localaddr_bound, 0, &sock); - if (result == ISC_R_SUCCESS || - result != ISC_R_ADDRINUSE) { - disp->localport = prt; - *sockp = sock; - return (result); - } + /* + * Continue if the port choosen is already in use + * or the OS has reserved it. + */ + if (result == ISC_R_NOPERM || + result == ISC_R_ADDRINUSE) + continue; + disp->localport = prt; + *sockp = sock; + return (result); } /* @@ -2805,8 +2809,6 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp, result = open_socket(sockmgr, localaddr, 0, &sock); if (result != ISC_R_SUCCESS) goto end; - else if (!anyport) - break; else if (portavailable(mgr, sock, NULL)) break; if (held[i] != NULL) diff --git a/contrib/bind9/lib/dns/dlz.c b/contrib/bind9/lib/dns/dlz.c index 8d1625a..19c600c 100644 --- a/contrib/bind9/lib/dns/dlz.c +++ b/contrib/bind9/lib/dns/dlz.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2005, 2007, 2009-2012 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2005, 2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -142,6 +142,7 @@ dns_dlzcreate(isc_mem_t *mctx, const char *dlzname, const char *drivername, { dns_dlzimplementation_t *impinfo; isc_result_t result; + dns_dlzdb_t *db = NULL; /* * initialize the dlz_implementations list, this is guaranteed @@ -180,30 +181,31 @@ dns_dlzcreate(isc_mem_t *mctx, const char *dlzname, const char *drivername, } /* Allocate memory to hold the DLZ database driver */ - (*dbp) = isc_mem_get(mctx, sizeof(dns_dlzdb_t)); - if ((*dbp) == NULL) { + db = isc_mem_get(mctx, sizeof(dns_dlzdb_t)); + if (db == NULL) { RWUNLOCK(&dlz_implock, isc_rwlocktype_read); return (ISC_R_NOMEMORY); } /* Make sure memory region is set to all 0's */ - memset((*dbp), 0, sizeof(dns_dlzdb_t)); + memset(db, 0, sizeof(dns_dlzdb_t)); - (*dbp)->implementation = impinfo; + db->implementation = impinfo; /* Create a new database using implementation 'drivername'. */ result = ((impinfo->methods->create)(mctx, dlzname, argc, argv, impinfo->driverarg, - &(*dbp)->dbdata)); + &db->dbdata)); /* mark the DLZ driver as valid */ if (result == ISC_R_SUCCESS) { RWUNLOCK(&dlz_implock, isc_rwlocktype_read); - (*dbp)->magic = DNS_DLZ_MAGIC; - isc_mem_attach(mctx, &(*dbp)->mctx); + db->magic = DNS_DLZ_MAGIC; + isc_mem_attach(mctx, &db->mctx); isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2), "DLZ driver loaded successfully."); + *dbp = db; return (ISC_R_SUCCESS); } else { isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, @@ -213,7 +215,7 @@ dns_dlzcreate(isc_mem_t *mctx, const char *dlzname, const char *drivername, /* impinfo->methods->create failed. */ RWUNLOCK(&dlz_implock, isc_rwlocktype_read); - isc_mem_put(mctx, (*dbp), sizeof(dns_dlzdb_t)); + isc_mem_put(mctx, db, sizeof(dns_dlzdb_t)); return (result); } @@ -543,7 +545,7 @@ dns_dlz_writeablezone(dns_view_t *view, const char *zone_name) { REQUIRE(dlzdatabase->configure_callback != NULL); - isc_buffer_init(&buffer, zone_name, strlen(zone_name)); + isc_buffer_constinit(&buffer, zone_name, strlen(zone_name)); isc_buffer_add(&buffer, strlen(zone_name)); dns_fixedname_init(&fixorigin); result = dns_name_fromtext(dns_fixedname_name(&fixorigin), diff --git a/contrib/bind9/lib/dns/dnssec.c b/contrib/bind9/lib/dns/dnssec.c index 3569ad7..587bd1c 100644 --- a/contrib/bind9/lib/dns/dnssec.c +++ b/contrib/bind9/lib/dns/dnssec.c @@ -275,7 +275,7 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, if (ret != ISC_R_SUCCESS) goto cleanup_databuf; - ret = dst_context_create(key, mctx, &ctx); + ret = dst_context_create2(key, mctx, DNS_LOGCATEGORY_DNSSEC, &ctx); if (ret != ISC_R_SUCCESS) goto cleanup_databuf; @@ -352,7 +352,6 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, ret = ISC_R_NOSPACE; goto cleanup_array; } - memcpy(sig.signature, r.base, sig.siglen); ret = dns_rdata_fromstruct(sigrdata, sig.common.rdclass, sig.common.rdtype, &sig, buffer); @@ -462,7 +461,7 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, } again: - ret = dst_context_create(key, mctx, &ctx); + ret = dst_context_create2(key, mctx, DNS_LOGCATEGORY_DNSSEC, &ctx); if (ret != ISC_R_SUCCESS) goto cleanup_struct; @@ -551,9 +550,9 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, if (ret == ISC_R_SUCCESS && downcase) { char namebuf[DNS_NAME_FORMATSIZE]; dns_name_format(&sig.signer, namebuf, sizeof(namebuf)); - isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, - DNS_LOGMODULE_DNSSEC, ISC_LOG_INFO, - "sucessfully validated after lower casing " + isc_log_write(dns_lctx, DNS_LOGCATEGORY_DNSSEC, + DNS_LOGMODULE_DNSSEC, ISC_LOG_DEBUG(1), + "successfully validated after lower casing " "signer '%s'", namebuf); inc_stat(dns_dnssecstats_downcase); } else if (ret == ISC_R_SUCCESS) @@ -854,7 +853,7 @@ dns_dnssec_signmessage(dns_message_t *msg, dst_key_t *key) { isc_buffer_init(&databuf, data, sizeof(data)); - RETERR(dst_context_create(key, mctx, &ctx)); + RETERR(dst_context_create2(key, mctx, DNS_LOGCATEGORY_DNSSEC, &ctx)); /* * Digest the fields of the SIG - we can cheat and use @@ -1004,7 +1003,7 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg, goto failure; } - RETERR(dst_context_create(key, mctx, &ctx)); + RETERR(dst_context_create2(key, mctx, DNS_LOGCATEGORY_DNSSEC, &ctx)); /* * Digest the SIG(0) record, except for the signature. diff --git a/contrib/bind9/lib/dns/dst_api.c b/contrib/bind9/lib/dns/dst_api.c index f5dd89a..53978bc 100644 --- a/contrib/bind9/lib/dns/dst_api.c +++ b/contrib/bind9/lib/dns/dst_api.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -276,6 +276,13 @@ dst_algorithm_supported(unsigned int alg) { isc_result_t dst_context_create(dst_key_t *key, isc_mem_t *mctx, dst_context_t **dctxp) { + return (dst_context_create2(key, mctx, + DNS_LOGCATEGORY_GENERAL, dctxp)); +} + +isc_result_t +dst_context_create2(dst_key_t *key, isc_mem_t *mctx, + isc_logcategory_t *category, dst_context_t **dctxp) { dst_context_t *dctx; isc_result_t result; @@ -294,6 +301,7 @@ dst_context_create(dst_key_t *key, isc_mem_t *mctx, dst_context_t **dctxp) { return (ISC_R_NOMEMORY); dctx->key = key; dctx->mctx = mctx; + dctx->category = category; result = key->func->createctx(key, dctx); if (result != ISC_R_SUCCESS) { isc_mem_put(mctx, dctx, sizeof(dst_context_t)); @@ -495,8 +503,7 @@ dst_key_fromnamedfile(const char *filename, const char *dirname, result = dst_key_read_public(newfilename, type, mctx, &pubkey); isc_mem_put(mctx, newfilename, newfilenamelen); newfilename = NULL; - if (result != ISC_R_SUCCESS) - return (result); + RETERR(result); if ((type & (DST_TYPE_PRIVATE | DST_TYPE_PUBLIC)) == DST_TYPE_PUBLIC || (pubkey->key_flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY) { @@ -560,7 +567,8 @@ dst_key_fromnamedfile(const char *filename, const char *dirname, isc_mem_put(mctx, newfilename, newfilenamelen); if (lex != NULL) isc_lex_destroy(&lex); - dst_key_free(&key); + if (key != NULL) + dst_key_free(&key); return (result); } @@ -1190,7 +1198,7 @@ dst_key_dump(dst_key_t *key, isc_mem_t *mctx, char **buffer, int *length) { REQUIRE(length != NULL && *length == 0); REQUIRE(VALID_KEY(key)); - if (key->func->isprivate == NULL) + if (key->func->dump == NULL) return (ISC_R_NOTIMPLEMENTED); return (key->func->dump(key, mctx, buffer, length)); } @@ -1247,24 +1255,24 @@ get_key_struct(dns_name_t *name, unsigned int alg, return (NULL); memset(key, 0, sizeof(dst_key_t)); - key->magic = KEY_MAGIC; - - result = isc_refcount_init(&key->refs, 1); - if (result != ISC_R_SUCCESS) { - isc_mem_put(mctx, key, sizeof(dst_key_t)); - return (NULL); - } key->key_name = isc_mem_get(mctx, sizeof(dns_name_t)); if (key->key_name == NULL) { - isc_refcount_destroy(&key->refs); isc_mem_put(mctx, key, sizeof(dst_key_t)); return (NULL); } + dns_name_init(key->key_name, NULL); result = dns_name_dup(name, mctx, key->key_name); if (result != ISC_R_SUCCESS) { - isc_refcount_destroy(&key->refs); + isc_mem_put(mctx, key->key_name, sizeof(dns_name_t)); + isc_mem_put(mctx, key, sizeof(dst_key_t)); + return (NULL); + } + + result = isc_refcount_init(&key->refs, 1); + if (result != ISC_R_SUCCESS) { + dns_name_free(key->key_name, mctx); isc_mem_put(mctx, key->key_name, sizeof(dns_name_t)); isc_mem_put(mctx, key, sizeof(dst_key_t)); return (NULL); @@ -1283,6 +1291,7 @@ get_key_struct(dns_name_t *name, unsigned int alg, key->times[i] = 0; key->timeset[i] = ISC_FALSE; } + key->magic = KEY_MAGIC; return (key); } diff --git a/contrib/bind9/lib/dns/dst_internal.h b/contrib/bind9/lib/dns/dst_internal.h index 2f4f946..ee824f4 100644 --- a/contrib/bind9/lib/dns/dst_internal.h +++ b/contrib/bind9/lib/dns/dst_internal.h @@ -137,6 +137,7 @@ struct dst_context { unsigned int magic; dst_key_t *key; isc_mem_t *mctx; + isc_logcategory_t *category; union { void *generic; dst_gssapi_signverifyctx_t *gssctx; diff --git a/contrib/bind9/lib/dns/dst_openssl.h b/contrib/bind9/lib/dns/dst_openssl.h index a30fd6a..e4d636e 100644 --- a/contrib/bind9/lib/dns/dst_openssl.h +++ b/contrib/bind9/lib/dns/dst_openssl.h @@ -21,6 +21,7 @@ #define DST_OPENSSL_H 1 #include <isc/lang.h> +#include <isc/log.h> #include <isc/result.h> #include <openssl/err.h> @@ -42,6 +43,10 @@ dst__openssl_toresult(isc_result_t fallback); isc_result_t dst__openssl_toresult2(const char *funcname, isc_result_t fallback); +isc_result_t +dst__openssl_toresult3(isc_logcategory_t *category, + const char *funcname, isc_result_t fallback); + #ifdef USE_ENGINE ENGINE * dst__openssl_getengine(const char *engine); diff --git a/contrib/bind9/lib/dns/ecdb.c b/contrib/bind9/lib/dns/ecdb.c index f1a833f..20da5b0 100644 --- a/contrib/bind9/lib/dns/ecdb.c +++ b/contrib/bind9/lib/dns/ecdb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -80,8 +80,11 @@ typedef struct rdatasetheader { /* Copied from rbtdb.c */ #define RDATASET_ATTR_NXDOMAIN 0x0010 +#define RDATASET_ATTR_NEGATIVE 0x0100 #define NXDOMAIN(header) \ (((header)->attributes & RDATASET_ATTR_NXDOMAIN) != 0) +#define NEGATIVE(header) \ + (((header)->attributes & RDATASET_ATTR_NEGATIVE) != 0) static isc_result_t dns_ecdb_create(isc_mem_t *mctx, dns_name_t *origin, dns_dbtype_t type, @@ -406,6 +409,8 @@ bind_rdataset(dns_ecdb_t *ecdb, dns_ecdbnode_t *node, rdataset->trust = header->trust; if (NXDOMAIN(header)) rdataset->attributes |= DNS_RDATASETATTR_NXDOMAIN; + if (NEGATIVE(header)) + rdataset->attributes |= DNS_RDATASETATTR_NEGATIVE; rdataset->private1 = ecdb; rdataset->private2 = node; @@ -469,6 +474,8 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, header->attributes = 0; if ((rdataset->attributes & DNS_RDATASETATTR_NXDOMAIN) != 0) header->attributes |= RDATASET_ATTR_NXDOMAIN; + if ((rdataset->attributes & DNS_RDATASETATTR_NEGATIVE) != 0) + header->attributes |= RDATASET_ATTR_NEGATIVE; ISC_LINK_INIT(header, link); ISC_LIST_APPEND(ecdbnode->rdatasets, header, link); diff --git a/contrib/bind9/lib/dns/gen.c b/contrib/bind9/lib/dns/gen.c index a0b4df3..6b533dd 100644 --- a/contrib/bind9/lib/dns/gen.c +++ b/contrib/bind9/lib/dns/gen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,8 +15,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: gen.c,v 1.85 2009/12/04 22:06:37 tbox Exp $ */ - /*! \file */ #ifdef WIN32 @@ -24,6 +22,10 @@ * Silence compiler warnings about using strcpy and friends. */ #define _CRT_SECURE_NO_DEPRECATE 1 +/* + * We use snprintf. + */ +#define snprintf _snprintf #endif #include <sys/types.h> @@ -41,7 +43,12 @@ #include "gen-unix.h" #endif -#define TYPECLASSLEN 21 +#define INSIST(cond) \ + if (!(cond)) { \ + fprintf(stderr, "%s:%d: INSIST(%s)\n", \ + __FILE__, __LINE__, #cond); \ + abort(); \ + } #define FROMTEXTARGS "rdclass, type, lexer, origin, options, target, callbacks" #define FROMTEXTCLASS "rdclass" @@ -103,7 +110,7 @@ #define CHECKNAMESTYPE "rdata->type" #define CHECKNAMESDEF "result = ISC_TRUE" -const char copyright[] = +static const char copyright[] = "/*\n" " * Copyright (C) 2004%s Internet Systems Consortium, Inc. (\"ISC\")\n" " * Copyright (C) 1998-2003 Internet Software Consortium.\n" @@ -131,53 +138,59 @@ const char copyright[] = "/*! \\file */\n" "\n"; +#define STR_EXPAND(tok) #tok +#define STR(tok) STR_EXPAND(tok) + #define TYPENAMES 256 +#define TYPECLASSLEN 20 /* DNS mnemonic size. Must be less than 100. */ +#define TYPECLASSBUF (TYPECLASSLEN + 1) +#define TYPECLASSFMT "%" STR(TYPECLASSLEN) "[-0-9a-z]_%d" +#define ATTRIBUTESIZE 256 +#define DIRNAMESIZE 256 -struct cc { +static struct cc { struct cc *next; int rdclass; - char classname[TYPECLASSLEN]; + char classname[TYPECLASSBUF]; } *classes; -struct tt { +static struct tt { struct tt *next; int rdclass; int type; - char classname[TYPECLASSLEN]; - char typename[TYPECLASSLEN]; - char dirname[256]; /* XXX Should be max path length */ + char classname[TYPECLASSBUF]; + char typename[TYPECLASSBUF]; + char dirname[DIRNAMESIZE]; /* XXX Should be max path length */ } *types; -struct ttnam { - char typename[TYPECLASSLEN]; - char macroname[TYPECLASSLEN]; - char attr[256]; +static struct ttnam { + char typename[TYPECLASSBUF]; + char macroname[TYPECLASSBUF]; + char attr[ATTRIBUTESIZE]; unsigned int sorted; int type; } typenames[TYPENAMES]; -int maxtype = -1; +static int maxtype = -1; -char * +static char * upper(char *); -char * +static char * funname(const char *, char *); -void +static void doswitch(const char *, const char *, const char *, const char *, const char *, const char *); -void -dodecl(char *, char *, char *); -void +static void add(int, const char *, int, const char *, const char *); -void +static void sd(int, const char *, const char *, char); -void +static void insert_into_typenames(int, const char *, const char *); /*% * If you use more than 10 of these in, say, a printf(), you'll have problems. */ -char * +static char * upper(char *s) { static int buf_to_use = 0; static char buf[10][256]; @@ -197,11 +210,12 @@ upper(char *s) { return (buf[buf_to_use]); } -char * +static char * funname(const char *s, char *buf) { char *b = buf; char c; + INSIST(strlen(s) < TYPECLASSBUF); while ((c = *s++)) { *b++ = (c == '-') ? '_' : c; } @@ -209,7 +223,7 @@ funname(const char *s, char *buf) { return (buf); } -void +static void doswitch(const char *name, const char *function, const char *args, const char *tsw, const char *csw, const char *res) { @@ -217,7 +231,7 @@ doswitch(const char *name, const char *function, const char *args, int first = 1; int lasttype = 0; int subswitch = 0; - char buf1[TYPECLASSLEN], buf2[TYPECLASSLEN]; + char buf1[TYPECLASSBUF], buf2[TYPECLASSBUF]; const char *result = " result ="; if (res == NULL) @@ -280,26 +294,6 @@ doswitch(const char *name, const char *function, const char *args, } } -void -dodecl(char *type, char *function, char *args) { - struct tt *tt; - char buf1[TYPECLASSLEN], buf2[TYPECLASSLEN]; - - fputs("\n", stdout); - for (tt = types; tt; tt = tt->next) - if (tt->rdclass) - fprintf(stdout, - "static inline %s %s_%s_%s(%s);\n", - type, function, - funname(tt->classname, buf1), - funname(tt->typename, buf2), args); - else - fprintf(stdout, - "static inline %s %s_%s(%s);\n", - type, function, - funname(tt->typename, buf1), args); -} - static struct ttnam * find_typename(int type) { int i; @@ -312,12 +306,13 @@ find_typename(int type) { return (NULL); } -void +static void insert_into_typenames(int type, const char *typename, const char *attr) { struct ttnam *ttn = NULL; - int c, i; + int c, i, n; char tmp[256]; + INSIST(strlen(typename) < TYPECLASSBUF); for (i = 0; i < TYPENAMES; i++) { if (typenames[i].typename[0] != 0 && typenames[i].type == type && @@ -340,10 +335,10 @@ insert_into_typenames(int type, const char *typename, const char *attr) { typename); exit(1); } - strcpy(ttn->typename, typename); + strncpy(ttn->typename, typename, sizeof(ttn->typename)); ttn->type = type; - strcpy(ttn->macroname, ttn->typename); + strncpy(ttn->macroname, ttn->typename, sizeof(ttn->macroname)); c = strlen(ttn->macroname); while (c > 0) { if (ttn->macroname[c - 1] == '-') @@ -352,7 +347,9 @@ insert_into_typenames(int type, const char *typename, const char *attr) { } if (attr == NULL) { - sprintf(tmp, "RRTYPE_%s_ATTRIBUTES", upper(ttn->macroname)); + n = snprintf(tmp, sizeof(tmp), + "RRTYPE_%s_ATTRIBUTES", upper(ttn->macroname)); + INSIST(n > 0 && (unsigned)n < sizeof(tmp)); attr = tmp; } @@ -367,13 +364,13 @@ insert_into_typenames(int type, const char *typename, const char *attr) { attr, typename); exit(1); } - strcpy(ttn->attr, attr); + strncpy(ttn->attr, attr, sizeof(ttn->attr)); ttn->sorted = 0; if (maxtype < type) maxtype = type; } -void +static void add(int rdclass, const char *classname, int type, const char *typename, const char *dirname) { @@ -382,6 +379,10 @@ add(int rdclass, const char *classname, int type, const char *typename, struct cc *newcc; struct cc *cc, *oldcc; + INSIST(strlen(typename) < TYPECLASSBUF); + INSIST(strlen(classname) < TYPECLASSBUF); + INSIST(strlen(dirname) < DIRNAMESIZE); + insert_into_typenames(type, typename, NULL); if (newtt == NULL) { @@ -392,11 +393,11 @@ add(int rdclass, const char *classname, int type, const char *typename, newtt->next = NULL; newtt->rdclass = rdclass; newtt->type = type; - strcpy(newtt->classname, classname); - strcpy(newtt->typename, typename); + strncpy(newtt->classname, classname, sizeof(newtt->classname)); + strncpy(newtt->typename, typename, sizeof(newtt->typename)); if (strncmp(dirname, "./", 2) == 0) dirname += 2; - strcpy(newtt->dirname, dirname); + strncpy(newtt->dirname, dirname, sizeof(newtt->dirname)); tt = types; oldtt = NULL; @@ -429,8 +430,12 @@ add(int rdclass, const char *classname, int type, const char *typename, return; newcc = (struct cc *)malloc(sizeof(*newcc)); + if (newcc == NULL) { + fprintf(stderr, "malloc() failed\n"); + exit(1); + } newcc->rdclass = rdclass; - strcpy(newcc->classname, classname); + strncpy(newcc->classname, classname, sizeof(newcc->classname)); cc = classes; oldcc = NULL; @@ -451,25 +456,25 @@ add(int rdclass, const char *classname, int type, const char *typename, classes = newcc; } -void +static void sd(int rdclass, const char *classname, const char *dirname, char filetype) { - char buf[sizeof("01234567890123456789_65535.h")]; - char fmt[sizeof("%20[-0-9a-z]_%d.h")]; - int type; - char typename[TYPECLASSLEN]; + char buf[TYPECLASSLEN + sizeof("_65535.h")]; + char typename[TYPECLASSBUF]; + int type, n; isc_dir_t dir; if (!start_directory(dirname, &dir)) return; - sprintf(fmt,"%s%c", "%20[-0-9a-z]_%d.", filetype); while (next_file(&dir)) { - if (sscanf(dir.filename, fmt, typename, &type) != 2) + if (sscanf(dir.filename, TYPECLASSFMT, typename, &type) != 2) continue; if ((type > 65535) || (type < 0)) continue; - sprintf(buf, "%s_%d.%c", typename, type, filetype); + n = snprintf(buf, sizeof(buf), "%s_%d.%c", typename, + type, filetype); + INSIST(n > 0 && (unsigned)n < sizeof(buf)); if (strcmp(buf, dir.filename) != 0) continue; add(rdclass, classname, type, typename, dirname); @@ -496,10 +501,10 @@ HASH(char *string) { int main(int argc, char **argv) { - char buf[256]; /* XXX Should be max path length */ - char srcdir[256]; /* XXX Should be max path length */ + char buf[DIRNAMESIZE]; /* XXX Should be max path length */ + char srcdir[DIRNAMESIZE]; /* XXX Should be max path length */ int rdclass; - char classname[TYPECLASSLEN]; + char classname[TYPECLASSBUF]; struct tt *tt; struct cc *cc; struct ttnam *ttn, *ttn2; @@ -513,8 +518,8 @@ main(int argc, char **argv) { int type_enum = 0; int structs = 0; int depend = 0; - int c, i, j; - char buf1[TYPECLASSLEN]; + int c, i, j, n; + char buf1[TYPECLASSBUF]; char filetype = 'c'; FILE *fd; char *prefix = NULL; @@ -561,7 +566,16 @@ main(int argc, char **argv) { filetype = 'h'; break; case 's': - sprintf(srcdir, "%s/", isc_commandline_argument); + if (strlen(isc_commandline_argument) > + DIRNAMESIZE - 2 * TYPECLASSLEN - + sizeof("/rdata/_65535_65535")) { + fprintf(stderr, "\"%s\" too long\n", + isc_commandline_argument); + exit(1); + } + n = snprintf(srcdir, sizeof(srcdir), "%s/", + isc_commandline_argument); + INSIST(n > 0 && (unsigned)n < sizeof(srcdir)); break; case 'F': file = isc_commandline_argument; @@ -576,31 +590,37 @@ main(int argc, char **argv) { exit(1); } - sprintf(buf, "%srdata", srcdir); + n = snprintf(buf, sizeof(buf), "%srdata", srcdir); + INSIST(n > 0 && (unsigned)n < sizeof(srcdir)); if (!start_directory(buf, &dir)) exit(1); while (next_file(&dir)) { - if (sscanf(dir.filename, "%10[0-9a-z]_%d", - classname, &rdclass) != 2) + if (sscanf(dir.filename, TYPECLASSFMT, classname, + &rdclass) != 2) continue; if ((rdclass > 65535) || (rdclass < 0)) continue; - sprintf(buf, "%srdata/%s_%d", srcdir, classname, rdclass); + n = snprintf(buf, sizeof(buf), "%srdata/%s_%d", + srcdir, classname, rdclass); + INSIST(n > 0 && (unsigned)n < sizeof(buf)); if (strcmp(buf + 6 + strlen(srcdir), dir.filename) != 0) continue; sd(rdclass, classname, buf, filetype); } end_directory(&dir); - sprintf(buf, "%srdata/generic", srcdir); + n = snprintf(buf, sizeof(buf), "%srdata/generic", srcdir); + INSIST(n > 0 && (unsigned)n < sizeof(srcdir)); sd(0, "", buf, filetype); if (time(&now) != -1) { - if ((tm = localtime(&now)) != NULL && tm->tm_year > 104) - sprintf(year, "-%d", tm->tm_year + 1900); - else + if ((tm = localtime(&now)) != NULL && tm->tm_year > 104) { + n = snprintf(year, sizeof(year), "-%d", + tm->tm_year + 1900); + INSIST(n > 0 && (unsigned)n < sizeof(year)); + } else year[0] = 0; } else year[0] = 0; @@ -862,7 +882,7 @@ main(int argc, char **argv) { } } for (tt = types; tt != NULL; tt = tt->next) { - sprintf(buf, "%s/%s_%d.h", + snprintf(buf, sizeof(buf), "%s/%s_%d.h", tt->dirname, tt->typename, tt->type); if ((fd = fopen(buf,"r")) != NULL) { while (fgets(buf, sizeof(buf), fd) != NULL) diff --git a/contrib/bind9/lib/dns/gssapictx.c b/contrib/bind9/lib/dns/gssapictx.c index ee5be56..e4047d2 100644 --- a/contrib/bind9/lib/dns/gssapictx.c +++ b/contrib/bind9/lib/dns/gssapictx.c @@ -541,7 +541,7 @@ gss_err_message(isc_mem_t *mctx, isc_uint32_t major, isc_uint32_t minor, } estr = gss_error_tostring(major, minor, buf, sizeof(buf)); - if (estr) + if (estr != NULL) (*err_message) = isc_mem_strdup(mctx, estr); } #endif @@ -597,8 +597,12 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, if (gret != GSS_S_COMPLETE && gret != GSS_S_CONTINUE_NEEDED) { gss_err_message(mctx, gret, minor, err_message); - gss_log(3, "Failure initiating security context: %s", - *err_message); + if (err_message != NULL && *err_message != NULL) + gss_log(3, "Failure initiating security context: %s", + *err_message); + else + gss_log(3, "Failure initiating security context"); + result = ISC_R_FAILURE; goto out; } diff --git a/contrib/bind9/lib/dns/include/dns/acache.h b/contrib/bind9/lib/dns/include/dns/acache.h index 28990c2..c372ed9 100644 --- a/contrib/bind9/lib/dns/include/dns/acache.h +++ b/contrib/bind9/lib/dns/include/dns/acache.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006, 2007, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -25,7 +25,7 @@ /* * Acache - * + * * The Additional Cache Object * * This module manages internal caching entries that correspond to @@ -131,7 +131,7 @@ * - 76 bytes for each additional cache entry * - if the entry has a DNS name and associated RRset, * * 44 bytes + size of the name (1-255 bytes) - * * 52 bytes x number_of_RRs + * * 52 bytes x number_of_RRs * - 28 bytes for each DB related to this module * * Using the additional cache also requires extra memory consumption in @@ -387,7 +387,7 @@ dns_acache_setentry(dns_acache_t *acache, dns_acacheentry_t *entry, * ISC_R_NOTFOUND */ -void +isc_boolean_t dns_acache_cancelentry(dns_acacheentry_t *entry); /* * Cancel the use of the cache entry 'entry'. This function is supposed to @@ -398,6 +398,9 @@ dns_acache_cancelentry(dns_acacheentry_t *entry); * * Requires: * 'entry' is a valid additional cache entry. + * + * Returns: + * ISC_TRUE if the entry was active when canceled */ void @@ -415,7 +418,7 @@ dns_acache_attachentry(dns_acacheentry_t *source, dns_acacheentry_t **targetp); * * *targetp is attached to 'source'. */ - + void dns_acache_detachentry(dns_acacheentry_t **entryp); /* @@ -429,7 +432,7 @@ dns_acache_detachentry(dns_acacheentry_t **entryp); * * *entryp is NULL. * - * If '*entryp' is the last reference to the entry, + * If '*entryp' is the last reference to the entry, * cache does not have an outstanding task, all resources used by the * entry (including the entry object itself) will be freed. */ diff --git a/contrib/bind9/lib/dns/include/dns/db.h b/contrib/bind9/lib/dns/include/dns/db.h index fe268f4..ef090a2 100644 --- a/contrib/bind9/lib/dns/include/dns/db.h +++ b/contrib/bind9/lib/dns/include/dns/db.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -171,7 +171,7 @@ typedef struct dns_dbmethods { dns_dbversion_t *version); isc_boolean_t (*isdnssec)(dns_db_t *db); dns_stats_t *(*getrrsetstats)(dns_db_t *db); - void (*rpz_enabled)(dns_db_t *db, dns_rpz_st_t *st); + isc_result_t (*rpz_enabled)(dns_db_t *db, dns_rpz_st_t *st); void (*rpz_findips)(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, dns_zone_t *zone, dns_db_t *db, @@ -1500,11 +1500,11 @@ dns_db_getrrsetstats(dns_db_t *db); * dns_rdatasetstats_create(); otherwise NULL. */ -void +isc_result_t dns_db_rpz_enabled(dns_db_t *db, dns_rpz_st_t *st); /*%< - * See if a policy database has DNS_RPZ_TYPE_IP, DNS_RPZ_TYPE_NSIP, or - * DNS_RPZ_TYPE_NSDNAME records. + * Mark a database for response policy rewriting + * or find which RPZ data is available. */ void diff --git a/contrib/bind9/lib/dns/include/dns/message.h b/contrib/bind9/lib/dns/include/dns/message.h index 3bc734d..a6862fa 100644 --- a/contrib/bind9/lib/dns/include/dns/message.h +++ b/contrib/bind9/lib/dns/include/dns/message.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -251,6 +251,12 @@ struct dns_message { const void * order_arg; }; +struct dns_ednsopt { + isc_uint16_t code; + isc_uint16_t length; + unsigned char *value; +}; + /*** *** Functions ***/ @@ -1350,6 +1356,24 @@ dns_message_gettimeadjust(dns_message_t *msg); *\li msg be a valid message. */ +isc_result_t +dns_message_buildopt(dns_message_t *msg, dns_rdataset_t **opt, + unsigned int version, isc_uint16_t udpsize, + unsigned int flags, dns_ednsopt_t *ednsopts, size_t count); +/*%< + * Built a opt record. + * + * Requires: + * \li msg be a valid message. + * \li opt to be a non NULL and *opt to be NULL. + * + * Returns: + * \li ISC_R_SUCCESS on success. + * \li ISC_R_NOMEMORY + * \li ISC_R_NOSPACE + * \li other. + */ + ISC_LANG_ENDDECLS #endif /* DNS_MESSAGE_H */ diff --git a/contrib/bind9/lib/dns/include/dns/name.h b/contrib/bind9/lib/dns/include/dns/name.h index bef8693..1a88e53 100644 --- a/contrib/bind9/lib/dns/include/dns/name.h +++ b/contrib/bind9/lib/dns/include/dns/name.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1299,15 +1299,17 @@ ISC_LANG_ENDDECLS #define DNS_NAME_INIT(n, o) \ do { \ - (n)->magic = DNS_NAME_MAGIC; \ - (n)->ndata = NULL; \ - (n)->length = 0; \ - (n)->labels = 0; \ - (n)->attributes = 0; \ - (n)->offsets = (o); \ - (n)->buffer = NULL; \ - ISC_LINK_INIT((n), link); \ - ISC_LIST_INIT((n)->list); \ + dns_name_t *_n = (n); \ + /* memset(_n, 0, sizeof(*_n)); */ \ + _n->magic = DNS_NAME_MAGIC; \ + _n->ndata = NULL; \ + _n->length = 0; \ + _n->labels = 0; \ + _n->attributes = 0; \ + _n->offsets = (o); \ + _n->buffer = NULL; \ + ISC_LINK_INIT(_n, link); \ + ISC_LIST_INIT(_n->list); \ } while (0) #define DNS_NAME_RESET(n) \ diff --git a/contrib/bind9/lib/dns/include/dns/ncache.h b/contrib/bind9/lib/dns/include/dns/ncache.h index 8d89879..337e834 100644 --- a/contrib/bind9/lib/dns/include/dns/ncache.h +++ b/contrib/bind9/lib/dns/include/dns/ncache.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -73,6 +73,11 @@ dns_ncache_addoptout(dns_message_t *message, dns_db_t *cache, * rdataset, and store it in 'cache' at 'node' with a TTL limited to * 'maxttl'. * + * \li dns_ncache_add produces a negative cache entry with a trust of no + * more than answer + * \li dns_ncache_addoptout produces a negative cache entry which will have + * a trust of secure if all the records that make up the entry are secure. + * * The 'covers' argument is the RR type whose nonexistence we are caching, * or dns_rdatatype_any when caching a NXDOMAIN response. * diff --git a/contrib/bind9/lib/dns/include/dns/nsec.h b/contrib/bind9/lib/dns/include/dns/nsec.h index a18e138..510d96b 100644 --- a/contrib/bind9/lib/dns/include/dns/nsec.h +++ b/contrib/bind9/lib/dns/include/dns/nsec.h @@ -75,6 +75,19 @@ dns_nsec_nseconly(dns_db_t *db, dns_dbversion_t *version, * 'answer' to be non NULL. */ +isc_result_t +dns_nsec_noexistnodata(dns_rdatatype_t type, dns_name_t *name, + dns_name_t *nsecname, dns_rdataset_t *nsecset, + isc_boolean_t *exists, isc_boolean_t *data, + dns_name_t *wild, dns_nseclog_t log, void *arg); +/*% + * Return ISC_R_SUCCESS if we can determine that the name doesn't exist + * or we can determine whether there is data or not at the name. + * If the name does not exist return the wildcard name. + * + * Return ISC_R_IGNORE when the NSEC is not the appropriate one. + */ + ISC_LANG_ENDDECLS #endif /* DNS_NSEC_H */ diff --git a/contrib/bind9/lib/dns/include/dns/nsec3.h b/contrib/bind9/lib/dns/include/dns/nsec3.h index beb44f3..588dd05 100644 --- a/contrib/bind9/lib/dns/include/dns/nsec3.h +++ b/contrib/bind9/lib/dns/include/dns/nsec3.h @@ -247,6 +247,14 @@ dns_nsec3param_deletechains(dns_db_t *db, dns_dbversion_t *ver, * Mark NSEC3PARAM for deletion. */ +isc_result_t +dns_nsec3_noexistnodata(dns_rdatatype_t type, dns_name_t* name, + dns_name_t *nsec3name, dns_rdataset_t *nsec3set, + dns_name_t *zonename, isc_boolean_t *exists, + isc_boolean_t *data, isc_boolean_t *optout, + isc_boolean_t *unknown, isc_boolean_t *setclosest, + isc_boolean_t *setnearest, dns_name_t *closest, + dns_name_t *nearest, dns_nseclog_t logit, void *arg); ISC_LANG_ENDDECLS diff --git a/contrib/bind9/lib/dns/include/dns/rdata.h b/contrib/bind9/lib/dns/include/dns/rdata.h index c3e7db6..2a67dc9 100644 --- a/contrib/bind9/lib/dns/include/dns/rdata.h +++ b/contrib/bind9/lib/dns/include/dns/rdata.h @@ -176,6 +176,7 @@ struct dns_rdata { #define DNS_RDATA_CHECKREVERSE DNS_NAME_CHECKREVERSE #define DNS_RDATA_CHECKMX DNS_NAME_CHECKMX #define DNS_RDATA_CHECKMXFAIL DNS_NAME_CHECKMXFAIL +#define DNS_RDATA_UNKNOWNESCAPE 0x80000000 /*** *** Initialization diff --git a/contrib/bind9/lib/dns/include/dns/result.h b/contrib/bind9/lib/dns/include/dns/result.h index 21388b2..9a7d2c2 100644 --- a/contrib/bind9/lib/dns/include/dns/result.h +++ b/contrib/bind9/lib/dns/include/dns/result.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -151,8 +151,10 @@ #define DNS_R_NOTMASTER (ISC_RESULTCLASS_DNS + 105) #define DNS_R_BROKENCHAIN (ISC_RESULTCLASS_DNS + 106) #define DNS_R_EXPIRED (ISC_RESULTCLASS_DNS + 107) +#define DNS_R_NOTDYNAMIC (ISC_RESULTCLASS_DNS + 108) +#define DNS_R_BADEUI (ISC_RESULTCLASS_DNS + 109) -#define DNS_R_NRESULTS 108 /*%< Number of results */ +#define DNS_R_NRESULTS 110 /*%< Number of results */ /* * DNS wire format rcodes. diff --git a/contrib/bind9/lib/dns/include/dns/rpz.h b/contrib/bind9/lib/dns/include/dns/rpz.h index 4227dd4..ceea26d 100644 --- a/contrib/bind9/lib/dns/include/dns/rpz.h +++ b/contrib/bind9/lib/dns/include/dns/rpz.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -27,10 +27,11 @@ ISC_LANG_BEGINDECLS -#define DNS_RPZ_IP_ZONE "rpz-ip" -#define DNS_RPZ_NSIP_ZONE "rpz-nsip" -#define DNS_RPZ_NSDNAME_ZONE "rpz-nsdname" -#define DNS_RPZ_PASSTHRU_ZONE "rpz-passthru" +#define DNS_RPZ_PREFIX "rpz-" +#define DNS_RPZ_IP_ZONE DNS_RPZ_PREFIX"ip" +#define DNS_RPZ_NSIP_ZONE DNS_RPZ_PREFIX"nsip" +#define DNS_RPZ_NSDNAME_ZONE DNS_RPZ_PREFIX"nsdname" +#define DNS_RPZ_PASSTHRU_ZONE DNS_RPZ_PREFIX"passthru" typedef isc_uint8_t dns_rpz_cidr_bits_t; @@ -75,6 +76,7 @@ struct dns_rpz_zone { dns_ttl_t max_policy_ttl; dns_rpz_policy_t policy; /* DNS_RPZ_POLICY_GIVEN or override */ isc_boolean_t recursive_only; + isc_boolean_t defined; }; /* @@ -169,12 +171,6 @@ const char * dns_rpz_policy2str(dns_rpz_policy_t policy); void -dns_rpz_set_need(isc_boolean_t need); - -isc_boolean_t -dns_rpz_needed(void); - -void dns_rpz_cidr_free(dns_rpz_cidr_t **cidr); void @@ -184,7 +180,7 @@ isc_result_t dns_rpz_new_cidr(isc_mem_t *mctx, dns_name_t *origin, dns_rpz_cidr_t **rbtdb_cidr); void -dns_rpz_enabled(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st); +dns_rpz_enabled_get(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st); void dns_rpz_cidr_deleteip(dns_rpz_cidr_t *cidr, dns_name_t *name); diff --git a/contrib/bind9/lib/dns/include/dns/types.h b/contrib/bind9/lib/dns/include/dns/types.h index 921c76aa..a031825 100644 --- a/contrib/bind9/lib/dns/include/dns/types.h +++ b/contrib/bind9/lib/dns/include/dns/types.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -72,6 +72,7 @@ typedef ISC_LIST(dns_dns64_t) dns_dns64list_t; typedef struct dns_dnsseckey dns_dnsseckey_t; typedef ISC_LIST(dns_dnsseckey_t) dns_dnsseckeylist_t; typedef struct dns_dumpctx dns_dumpctx_t; +typedef struct dns_ednsopt dns_ednsopt_t; typedef struct dns_fetch dns_fetch_t; typedef struct dns_fixedname dns_fixedname_t; typedef struct dns_forwarders dns_forwarders_t; @@ -373,4 +374,7 @@ typedef isc_boolean_t (*dns_isselffunc_t)(dns_view_t *, dns_tsigkey_t *, isc_sockaddr_t *, isc_sockaddr_t *, dns_rdataclass_t, void *); +typedef void +(*dns_nseclog_t)(void *val, int , const char *, ...); + #endif /* DNS_TYPES_H */ diff --git a/contrib/bind9/lib/dns/include/dns/validator.h b/contrib/bind9/lib/dns/include/dns/validator.h index 7d6ea7a..b3cfe99 100644 --- a/contrib/bind9/lib/dns/include/dns/validator.h +++ b/contrib/bind9/lib/dns/include/dns/validator.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -104,6 +104,10 @@ typedef struct dns_validatorevent { * Optout proof seen. */ isc_boolean_t optout; + /* + * Answer is secure. + */ + isc_boolean_t secure; } dns_validatorevent_t; #define DNS_VALIDATOR_NOQNAMEPROOF 0 diff --git a/contrib/bind9/lib/dns/include/dns/view.h b/contrib/bind9/lib/dns/include/dns/view.h index 4a04867..d999fa1 100644 --- a/contrib/bind9/lib/dns/include/dns/view.h +++ b/contrib/bind9/lib/dns/include/dns/view.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -164,6 +164,7 @@ struct dns_view { ISC_LIST(dns_rpz_zone_t) rpz_zones; isc_boolean_t rpz_recursive_only; isc_boolean_t rpz_break_dnssec; + unsigned int rpz_min_ns_labels; /* * Configurable data for server use only, diff --git a/contrib/bind9/lib/dns/include/dns/zone.h b/contrib/bind9/lib/dns/include/dns/zone.h index 9db825c..6b9911d 100644 --- a/contrib/bind9/lib/dns/include/dns/zone.h +++ b/contrib/bind9/lib/dns/include/dns/zone.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -34,6 +34,7 @@ #include <dns/masterdump.h> #include <dns/rdatastruct.h> +#include <dns/rpz.h> #include <dns/types.h> typedef enum { @@ -77,6 +78,7 @@ typedef enum { #define DNS_ZONEOPT_DNSKEYKSKONLY 0x10000000U /*%< dnssec-dnskey-kskonly */ #define DNS_ZONEOPT_CHECKDUPRR 0x20000000U /*%< check-dup-records */ #define DNS_ZONEOPT_CHECKDUPRRFAIL 0x40000000U /*%< fatal check-dup-records failures */ +#define DNS_ZONEOPT_CHECKSPF 0x80000000U /*%< check SPF records */ #ifndef NOMINUM_PUBLIC /* @@ -1898,6 +1900,15 @@ dns_zone_synckeyzone(dns_zone_t *zone); * maintenance timer. */ +isc_result_t +dns_zone_rpz_enable(dns_zone_t *zone); +/*% + * Set the response policy associated with a zone. + */ + +isc_boolean_t +dns_zone_get_rpz(dns_zone_t *zone); + ISC_LANG_ENDDECLS #endif /* DNS_ZONE_H */ diff --git a/contrib/bind9/lib/dns/include/dst/dst.h b/contrib/bind9/lib/dns/include/dst/dst.h index b0fa690..87d844b 100644 --- a/contrib/bind9/lib/dns/include/dst/dst.h +++ b/contrib/bind9/lib/dns/include/dst/dst.h @@ -26,6 +26,7 @@ #include <isc/stdtime.h> #include <dns/types.h> +#include <dns/log.h> #include <dns/name.h> #include <dns/secalg.h> @@ -169,6 +170,11 @@ dst_algorithm_supported(unsigned int alg); isc_result_t dst_context_create(dst_key_t *key, isc_mem_t *mctx, dst_context_t **dctxp); + +isc_result_t +dst_context_create2(dst_key_t *key, isc_mem_t *mctx, + isc_logcategory_t *category, dst_context_t **dctxp); + /*%< * Creates a context to be used for a sign or verify operation. * diff --git a/contrib/bind9/lib/dns/master.c b/contrib/bind9/lib/dns/master.c index 8304507..1b7460c 100644 --- a/contrib/bind9/lib/dns/master.c +++ b/contrib/bind9/lib/dns/master.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -156,6 +156,7 @@ struct dns_incctx { int glue_in_use; int current_in_use; int origin_in_use; + isc_boolean_t origin_changed; isc_boolean_t drop; unsigned int glue_line; unsigned int current_line; @@ -568,6 +569,7 @@ loadctx_create(dns_masterformat_t format, isc_mem_t *mctx, goto cleanup_inc; lctx->keep_lex = ISC_FALSE; memset(specials, 0, sizeof(specials)); + specials[0] = 1; specials['('] = 1; specials[')'] = 1; specials['"'] = 1; @@ -770,7 +772,7 @@ static isc_result_t openfile_raw(dns_loadctx_t *lctx, const char *master_file) { isc_result_t result; - result = isc_stdio_open(master_file, "r", &lctx->f); + result = isc_stdio_open(master_file, "rb", &lctx->f); if (result != ISC_R_SUCCESS && result != ISC_R_FILENOTFOUND) { UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_stdio_open() failed: %s", @@ -1402,6 +1404,7 @@ load_text(dns_loadctx_t *lctx) { ictx->origin_in_use = new_in_use; ictx->in_use[ictx->origin_in_use] = ISC_TRUE; ictx->origin = new_name; + ictx->origin_changed = ISC_TRUE; finish_origin = ISC_FALSE; EXPECTEOL; continue; @@ -1574,8 +1577,24 @@ load_text(dns_loadctx_t *lctx) { } else if (result != ISC_R_SUCCESS) goto insist_and_cleanup; } + + if (ictx->origin_changed) { + char cbuf[DNS_NAME_FORMATSIZE]; + char obuf[DNS_NAME_FORMATSIZE]; + dns_name_format(ictx->current, cbuf, + sizeof(cbuf)); + dns_name_format(ictx->origin, obuf, + sizeof(obuf)); + (*callbacks->warn)(callbacks, + "%s:%lu: record with inherited " + "owner (%s) immediately after " + "$ORIGIN (%s)", source, line, + cbuf, obuf); + } } + ictx->origin_changed = ISC_FALSE; + if (dns_rdataclass_fromtext(&rdclass, &token.value.as_textregion) == ISC_R_SUCCESS) diff --git a/contrib/bind9/lib/dns/message.c b/contrib/bind9/lib/dns/message.c index 2b65f0e..d36edba 100644 --- a/contrib/bind9/lib/dns/message.c +++ b/contrib/bind9/lib/dns/message.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1441,8 +1441,15 @@ getsection(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, * the opcode is an update, or the type search is skipped. */ if (result == ISC_R_SUCCESS) { - if (dns_rdatatype_issingleton(rdtype)) - DO_FORMERR; + if (dns_rdatatype_issingleton(rdtype)) { + dns_rdata_t *first; + dns_rdatalist_fromrdataset(rdataset, + &rdatalist); + first = ISC_LIST_HEAD(rdatalist->rdata); + INSIST(first != NULL); + if (dns_rdata_compare(rdata, first) != 0) + DO_FORMERR; + } } if (result == ISC_R_NOTFOUND) { @@ -2112,6 +2119,30 @@ dns_message_renderend(dns_message_t *msg) { } /* + * If we're adding a OPT, TSIG or SIG(0) to a truncated message, + * clear all rdatasets from the message except for the question + * before adding the OPT, TSIG or SIG(0). If the question doesn't + * fit, don't include it. + */ + if ((msg->tsigkey != NULL || msg->sig0key != NULL || msg->opt) && + (msg->flags & DNS_MESSAGEFLAG_TC) != 0) + { + isc_buffer_t *buf; + + msgresetnames(msg, DNS_SECTION_ANSWER); + buf = msg->buffer; + dns_message_renderreset(msg); + msg->buffer = buf; + isc_buffer_clear(msg->buffer); + isc_buffer_add(msg->buffer, DNS_MESSAGE_HEADERLEN); + dns_compress_rollback(msg->cctx, 0); + result = dns_message_rendersection(msg, DNS_SECTION_QUESTION, + 0); + if (result != ISC_R_SUCCESS && result != ISC_R_NOSPACE) + return (result); + } + + /* * If we've got an OPT record, render it. */ if (msg->opt != NULL) { @@ -2136,30 +2167,6 @@ dns_message_renderend(dns_message_t *msg) { } /* - * If we're adding a TSIG or SIG(0) to a truncated message, - * clear all rdatasets from the message except for the question - * before adding the TSIG or SIG(0). If the question doesn't fit, - * don't include it. - */ - if ((msg->tsigkey != NULL || msg->sig0key != NULL) && - (msg->flags & DNS_MESSAGEFLAG_TC) != 0) - { - isc_buffer_t *buf; - - msgresetnames(msg, DNS_SECTION_ANSWER); - buf = msg->buffer; - dns_message_renderreset(msg); - msg->buffer = buf; - isc_buffer_clear(msg->buffer); - isc_buffer_add(msg->buffer, DNS_MESSAGE_HEADERLEN); - dns_compress_rollback(msg->cctx, 0); - result = dns_message_rendersection(msg, DNS_SECTION_QUESTION, - 0); - if (result != ISC_R_SUCCESS && result != ISC_R_NOSPACE) - return (result); - } - - /* * If we're adding a TSIG record, generate and render it. */ if (msg->tsigkey != NULL) { @@ -2633,9 +2640,9 @@ dns_message_setopt(dns_message_t *msg, dns_rdataset_t *opt) { return (ISC_R_SUCCESS); cleanup: + dns_rdataset_disassociate(opt); dns_message_puttemprdataset(msg, &opt); return (result); - } dns_rdataset_t * @@ -3449,3 +3456,95 @@ dns_opcode_totext(dns_opcode_t opcode, isc_buffer_t *target) { isc_buffer_putstr(target, opcodetext[opcode]); return (ISC_R_SUCCESS); } + +isc_result_t +dns_message_buildopt(dns_message_t *message, dns_rdataset_t **rdatasetp, + unsigned int version, isc_uint16_t udpsize, + unsigned int flags, dns_ednsopt_t *ednsopts, size_t count) +{ + dns_rdataset_t *rdataset = NULL; + dns_rdatalist_t *rdatalist = NULL; + dns_rdata_t *rdata = NULL; + isc_result_t result; + size_t len = 0, i; + + REQUIRE(DNS_MESSAGE_VALID(message)); + REQUIRE(rdatasetp != NULL && *rdatasetp == NULL); + + result = dns_message_gettemprdatalist(message, &rdatalist); + if (result != ISC_R_SUCCESS) + return (result); + result = dns_message_gettemprdata(message, &rdata); + if (result != ISC_R_SUCCESS) + goto cleanup; + result = dns_message_gettemprdataset(message, &rdataset); + if (result != ISC_R_SUCCESS) + goto cleanup; + dns_rdataset_init(rdataset); + + rdatalist->type = dns_rdatatype_opt; + rdatalist->covers = 0; + + /* + * Set Maximum UDP buffer size. + */ + rdatalist->rdclass = udpsize; + + /* + * Set EXTENDED-RCODE and Z to 0. + */ + rdatalist->ttl = (version << 16); + rdatalist->ttl |= (flags & 0xffff); + + /* + * Set EDNS options if applicable + */ + if (count != 0U) { + isc_buffer_t *buf = NULL; + for (i = 0; i < count; i++) + len += ednsopts[i].length + 4; + + if (len > 0xffffU) { + result = ISC_R_NOSPACE; + goto cleanup; + } + + result = isc_buffer_allocate(message->mctx, &buf, len); + if (result != ISC_R_SUCCESS) + goto cleanup; + + for (i = 0; i < count; i++) { + isc_buffer_putuint16(buf, ednsopts[i].code); + isc_buffer_putuint16(buf, ednsopts[i].length); + isc_buffer_putmem(buf, ednsopts[i].value, + ednsopts[i].length); + } + rdata->data = isc_buffer_base(buf); + rdata->length = len; + dns_message_takebuffer(message, &buf); + } else { + rdata->data = NULL; + rdata->length = 0; + } + + rdata->rdclass = rdatalist->rdclass; + rdata->type = rdatalist->type; + rdata->flags = 0; + + ISC_LIST_INIT(rdatalist->rdata); + ISC_LIST_APPEND(rdatalist->rdata, rdata, link); + result = dns_rdatalist_tordataset(rdatalist, rdataset); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + + *rdatasetp = rdataset; + return (ISC_R_SUCCESS); + + cleanup: + if (rdata != NULL) + dns_message_puttemprdata(message, &rdata); + if (rdataset != NULL) + dns_message_puttemprdataset(message, &rdataset); + if (rdatalist != NULL) + dns_message_puttemprdatalist(message, &rdatalist); + return (result); +} diff --git a/contrib/bind9/lib/dns/name.c b/contrib/bind9/lib/dns/name.c index fab1f33..7fb21e1 100644 --- a/contrib/bind9/lib/dns/name.c +++ b/contrib/bind9/lib/dns/name.c @@ -584,11 +584,13 @@ dns_name_fullcompare(const dns_name_t *name1, const dns_name_t *name2, nlabels = 0; l1 = name1->labels; l2 = name2->labels; - ldiff = (int)l1 - (int)l2; - if (ldiff < 0) + if (l2 > l1) { l = l1; - else + ldiff = 0 - (l2 - l1); + } else { l = l2; + ldiff = l1 - l2; + } while (l > 0) { l--; @@ -841,6 +843,10 @@ dns_name_matcheswildcard(const dns_name_t *name, const dns_name_t *wname) { REQUIRE(labels > 0); REQUIRE(dns_name_iswildcard(wname)); +#if defined(__clang__) && \ + ( __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 2)) + memset(&tname, 0, sizeof(tname)); +#endif DNS_NAME_INIT(&tname, NULL); dns_name_getlabelsequence(wname, 1, labels - 1, &tname); if (dns_name_fullcompare(name, &tname, &order, &nlabels) == @@ -1427,6 +1433,7 @@ dns_name_totext2(dns_name_t *name, unsigned int options, isc_buffer_t *target) case 0x24: /* '$' */ if ((options & DNS_NAME_MASTERFILE) == 0) goto no_escape; + /* FALLTHROUGH */ case 0x22: /* '"' */ case 0x28: /* '(' */ case 0x29: /* ')' */ @@ -1934,6 +1941,10 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, * has one. */ if (name->offsets == NULL) { +#if defined(__clang__) && \ + ( __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 2)) + memset(&clname, 0, sizeof(clname)); +#endif DNS_NAME_INIT(&clname, clo); dns_name_clone(name, &clname); name = &clname; @@ -2239,7 +2250,12 @@ dns_name_digest(dns_name_t *name, dns_digestfunc_t digest, void *arg) { REQUIRE(VALID_NAME(name)); REQUIRE(digest != NULL); +#if defined(__clang__) && \ + ( __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 2)) + memset(&downname, 0, sizeof(downname)); +#endif DNS_NAME_INIT(&downname, NULL); + isc_buffer_init(&buffer, data, sizeof(data)); result = dns_name_downcase(name, &downname, &buffer); @@ -2404,7 +2420,7 @@ dns_name_fromstring2(dns_name_t *target, const char *src, REQUIRE(src != NULL); - isc_buffer_init(&buf, src, strlen(src)); + isc_buffer_constinit(&buf, src, strlen(src)); isc_buffer_add(&buf, strlen(src)); if (BINDABLE(target) && target->buffer != NULL) name = target; diff --git a/contrib/bind9/lib/dns/ncache.c b/contrib/bind9/lib/dns/ncache.c index c0e99d4..bcb3d05 100644 --- a/contrib/bind9/lib/dns/ncache.c +++ b/contrib/bind9/lib/dns/ncache.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008, 2010-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2010-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -47,6 +47,12 @@ * */ +static isc_result_t +addoptout(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, + dns_rdatatype_t covers, isc_stdtime_t now, dns_ttl_t maxttl, + isc_boolean_t optout, isc_boolean_t secure, + dns_rdataset_t *addedrdataset); + static inline isc_result_t copy_rdataset(dns_rdataset_t *rdataset, isc_buffer_t *buffer) { isc_result_t result; @@ -96,8 +102,8 @@ dns_ncache_add(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, dns_rdatatype_t covers, isc_stdtime_t now, dns_ttl_t maxttl, dns_rdataset_t *addedrdataset) { - return (dns_ncache_addoptout(message, cache, node, covers, now, maxttl, - ISC_FALSE, addedrdataset)); + return (addoptout(message, cache, node, covers, now, maxttl, + ISC_FALSE, ISC_FALSE, addedrdataset)); } isc_result_t @@ -106,6 +112,16 @@ dns_ncache_addoptout(dns_message_t *message, dns_db_t *cache, isc_stdtime_t now, dns_ttl_t maxttl, isc_boolean_t optout, dns_rdataset_t *addedrdataset) { + return (addoptout(message, cache, node, covers, now, maxttl, + optout, ISC_TRUE, addedrdataset)); +} + +static isc_result_t +addoptout(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, + dns_rdatatype_t covers, isc_stdtime_t now, dns_ttl_t maxttl, + isc_boolean_t optout, isc_boolean_t secure, + dns_rdataset_t *addedrdataset) +{ isc_result_t result; isc_buffer_t buffer; isc_region_t r; @@ -242,6 +258,8 @@ dns_ncache_addoptout(dns_message_t *message, dns_db_t *cache, dns_rdataset_init(&ncrdataset); RUNTIME_CHECK(dns_rdatalist_tordataset(&ncrdatalist, &ncrdataset) == ISC_R_SUCCESS); + if (!secure && trust > dns_trust_answer) + trust = dns_trust_answer; ncrdataset.trust = trust; ncrdataset.attributes |= DNS_RDATASETATTR_NEGATIVE; if (message->rcode == dns_rcode_nxdomain) diff --git a/contrib/bind9/lib/dns/nsec.c b/contrib/bind9/lib/dns/nsec.c index 72d1751..41b5dc3 100644 --- a/contrib/bind9/lib/dns/nsec.c +++ b/contrib/bind9/lib/dns/nsec.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -21,6 +21,7 @@ #include <config.h> +#include <isc/log.h> #include <isc/string.h> #include <isc/util.h> @@ -275,3 +276,161 @@ dns_nsec_nseconly(dns_db_t *db, dns_dbversion_t *version, } return (result); } + +/*% + * Return ISC_R_SUCCESS if we can determine that the name doesn't exist + * or we can determine whether there is data or not at the name. + * If the name does not exist return the wildcard name. + * + * Return ISC_R_IGNORE when the NSEC is not the appropriate one. + */ +isc_result_t +dns_nsec_noexistnodata(dns_rdatatype_t type, dns_name_t *name, + dns_name_t *nsecname, dns_rdataset_t *nsecset, + isc_boolean_t *exists, isc_boolean_t *data, + dns_name_t *wild, dns_nseclog_t logit, void *arg) +{ + int order; + dns_rdata_t rdata = DNS_RDATA_INIT; + isc_result_t result; + dns_namereln_t relation; + unsigned int olabels, nlabels, labels; + dns_rdata_nsec_t nsec; + isc_boolean_t atparent; + isc_boolean_t ns; + isc_boolean_t soa; + + REQUIRE(exists != NULL); + REQUIRE(data != NULL); + REQUIRE(nsecset != NULL && + nsecset->type == dns_rdatatype_nsec); + + result = dns_rdataset_first(nsecset); + if (result != ISC_R_SUCCESS) { + (*logit)(arg, ISC_LOG_DEBUG(3), "failure processing NSEC set"); + return (result); + } + dns_rdataset_current(nsecset, &rdata); + + (*logit)(arg, ISC_LOG_DEBUG(3), "looking for relevant NSEC"); + relation = dns_name_fullcompare(name, nsecname, &order, &olabels); + + if (order < 0) { + /* + * The name is not within the NSEC range. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC does not cover name, before NSEC"); + return (ISC_R_IGNORE); + } + + if (order == 0) { + /* + * The names are the same. If we are validating "." + * then atparent should not be set as there is no parent. + */ + atparent = (olabels != 1) && dns_rdatatype_atparent(type); + ns = dns_nsec_typepresent(&rdata, dns_rdatatype_ns); + soa = dns_nsec_typepresent(&rdata, dns_rdatatype_soa); + if (ns && !soa) { + if (!atparent) { + /* + * This NSEC record is from somewhere higher in + * the DNS, and at the parent of a delegation. + * It can not be legitimately used here. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring parent nsec"); + return (ISC_R_IGNORE); + } + } else if (atparent && ns && soa) { + /* + * This NSEC record is from the child. + * It can not be legitimately used here. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring child nsec"); + return (ISC_R_IGNORE); + } + if (type == dns_rdatatype_cname || type == dns_rdatatype_nxt || + type == dns_rdatatype_nsec || type == dns_rdatatype_key || + !dns_nsec_typepresent(&rdata, dns_rdatatype_cname)) { + *exists = ISC_TRUE; + *data = dns_nsec_typepresent(&rdata, type); + (*logit)(arg, ISC_LOG_DEBUG(3), + "nsec proves name exists (owner) data=%d", + *data); + return (ISC_R_SUCCESS); + } + (*logit)(arg, ISC_LOG_DEBUG(3), "NSEC proves CNAME exists"); + return (ISC_R_IGNORE); + } + + if (relation == dns_namereln_subdomain && + dns_nsec_typepresent(&rdata, dns_rdatatype_ns) && + !dns_nsec_typepresent(&rdata, dns_rdatatype_soa)) + { + /* + * This NSEC record is from somewhere higher in + * the DNS, and at the parent of a delegation. + * It can not be legitimately used here. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), "ignoring parent nsec"); + return (ISC_R_IGNORE); + } + + result = dns_rdata_tostruct(&rdata, &nsec, NULL); + if (result != ISC_R_SUCCESS) + return (result); + relation = dns_name_fullcompare(&nsec.next, name, &order, &nlabels); + if (order == 0) { + dns_rdata_freestruct(&nsec); + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring nsec matches next name"); + return (ISC_R_IGNORE); + } + + if (order < 0 && !dns_name_issubdomain(nsecname, &nsec.next)) { + /* + * The name is not within the NSEC range. + */ + dns_rdata_freestruct(&nsec); + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring nsec because name is past end of range"); + return (ISC_R_IGNORE); + } + + if (order > 0 && relation == dns_namereln_subdomain) { + (*logit)(arg, ISC_LOG_DEBUG(3), + "nsec proves name exist (empty)"); + dns_rdata_freestruct(&nsec); + *exists = ISC_TRUE; + *data = ISC_FALSE; + return (ISC_R_SUCCESS); + } + if (wild != NULL) { + dns_name_t common; + dns_name_init(&common, NULL); + if (olabels > nlabels) { + labels = dns_name_countlabels(nsecname); + dns_name_getlabelsequence(nsecname, labels - olabels, + olabels, &common); + } else { + labels = dns_name_countlabels(&nsec.next); + dns_name_getlabelsequence(&nsec.next, labels - nlabels, + nlabels, &common); + } + result = dns_name_concatenate(dns_wildcardname, &common, + wild, NULL); + if (result != ISC_R_SUCCESS) { + dns_rdata_freestruct(&nsec); + (*logit)(arg, ISC_LOG_DEBUG(3), + "failure generating wildcard name"); + return (result); + } + } + dns_rdata_freestruct(&nsec); + (*logit)(arg, ISC_LOG_DEBUG(3), "nsec range ok"); + *exists = ISC_FALSE; + return (ISC_R_SUCCESS); +} diff --git a/contrib/bind9/lib/dns/nsec3.c b/contrib/bind9/lib/dns/nsec3.c index 123126d..7ec6b4c 100644 --- a/contrib/bind9/lib/dns/nsec3.c +++ b/contrib/bind9/lib/dns/nsec3.c @@ -22,6 +22,7 @@ #include <isc/buffer.h> #include <isc/hex.h> #include <isc/iterated_hash.h> +#include <isc/log.h> #include <isc/string.h> #include <isc/util.h> @@ -1132,7 +1133,11 @@ dns_nsec3param_deletechains(dns_db_t *db, dns_dbversion_t *ver, INSIST(rdata.length <= sizeof(buf)); memcpy(buf, rdata.data, rdata.length); - if (buf[0] != 0 || + /* + * Private NSEC3 record length >= 6. + * <0(1), hash(1), flags(1), iterations(2), saltlen(1)> + */ + if (rdata.length < 6 || buf[0] != 0 || buf[2] == (DNS_NSEC3FLAG_REMOVE | DNS_NSEC3FLAG_NONSEC)) { dns_rdata_reset(&rdata); continue; @@ -1832,3 +1837,285 @@ dns_nsec3_maxiterations(dns_db_t *db, dns_dbversion_t *version, dns_rdataset_disassociate(&rdataset); return (result); } + +isc_result_t +dns_nsec3_noexistnodata(dns_rdatatype_t type, dns_name_t* name, + dns_name_t *nsec3name, dns_rdataset_t *nsec3set, + dns_name_t *zonename, isc_boolean_t *exists, + isc_boolean_t *data, isc_boolean_t *optout, + isc_boolean_t *unknown, isc_boolean_t *setclosest, + isc_boolean_t *setnearest, dns_name_t *closest, + dns_name_t *nearest, dns_nseclog_t logit, void *arg) +{ + char namebuf[DNS_NAME_FORMATSIZE]; + dns_fixedname_t fzone; + dns_fixedname_t qfixed; + dns_label_t hashlabel; + dns_name_t *qname; + dns_name_t *zone; + dns_rdata_nsec3_t nsec3; + dns_rdata_t rdata = DNS_RDATA_INIT; + int order; + int scope; + isc_boolean_t atparent; + isc_boolean_t first; + isc_boolean_t ns; + isc_boolean_t soa; + isc_buffer_t buffer; + isc_result_t answer = ISC_R_IGNORE; + isc_result_t result; + unsigned char hash[NSEC3_MAX_HASH_LENGTH]; + unsigned char owner[NSEC3_MAX_HASH_LENGTH]; + unsigned int length; + unsigned int qlabels; + unsigned int zlabels; + + REQUIRE((exists == NULL && data == NULL) || + (exists != NULL && data != NULL)); + REQUIRE(nsec3set != NULL && nsec3set->type == dns_rdatatype_nsec3); + REQUIRE((setclosest == NULL && closest == NULL) || + (setclosest != NULL && closest != NULL)); + REQUIRE((setnearest == NULL && nearest == NULL) || + (setnearest != NULL && nearest != NULL)); + + result = dns_rdataset_first(nsec3set); + if (result != ISC_R_SUCCESS) { + (*logit)(arg, ISC_LOG_DEBUG(3), "failure processing NSEC3 set"); + return (result); + } + + dns_rdataset_current(nsec3set, &rdata); + + result = dns_rdata_tostruct(&rdata, &nsec3, NULL); + if (result != ISC_R_SUCCESS) + return (result); + + (*logit)(arg, ISC_LOG_DEBUG(3), "looking for relevant NSEC3"); + + dns_fixedname_init(&fzone); + zone = dns_fixedname_name(&fzone); + zlabels = dns_name_countlabels(nsec3name); + + /* + * NSEC3 records must have two or more labels to be valid. + */ + if (zlabels < 2) + return (ISC_R_IGNORE); + + /* + * Strip off the NSEC3 hash to get the zone. + */ + zlabels--; + dns_name_split(nsec3name, zlabels, NULL, zone); + + /* + * If not below the zone name we can ignore this record. + */ + if (!dns_name_issubdomain(name, zone)) + return (ISC_R_IGNORE); + + /* + * Is this zone the same or deeper than the current zone? + */ + if (dns_name_countlabels(zonename) == 0 || + dns_name_issubdomain(zone, zonename)) + dns_name_copy(zone, zonename, NULL); + + if (!dns_name_equal(zone, zonename)) + return (ISC_R_IGNORE); + + /* + * Are we only looking for the most enclosing zone? + */ + if (exists == NULL || data == NULL) + return (ISC_R_SUCCESS); + + /* + * Only set unknown once we are sure that this NSEC3 is from + * the deepest covering zone. + */ + if (!dns_nsec3_supportedhash(nsec3.hash)) { + if (unknown != NULL) + *unknown = ISC_TRUE; + return (ISC_R_IGNORE); + } + + /* + * Recover the hash from the first label. + */ + dns_name_getlabel(nsec3name, 0, &hashlabel); + isc_region_consume(&hashlabel, 1); + isc_buffer_init(&buffer, owner, sizeof(owner)); + result = isc_base32hex_decoderegion(&hashlabel, &buffer); + if (result != ISC_R_SUCCESS) + return (result); + + /* + * The hash lengths should match. If not ignore the record. + */ + if (isc_buffer_usedlength(&buffer) != nsec3.next_length) + return (ISC_R_IGNORE); + + /* + * Work out what this NSEC3 covers. + * Inside (<0) or outside (>=0). + */ + scope = memcmp(owner, nsec3.next, nsec3.next_length); + + /* + * Prepare to compute all the hashes. + */ + dns_fixedname_init(&qfixed); + qname = dns_fixedname_name(&qfixed); + dns_name_downcase(name, qname, NULL); + qlabels = dns_name_countlabels(qname); + first = ISC_TRUE; + + while (qlabels >= zlabels) { + length = isc_iterated_hash(hash, nsec3.hash, nsec3.iterations, + nsec3.salt, nsec3.salt_length, + qname->ndata, qname->length); + /* + * The computed hash length should match. + */ + if (length != nsec3.next_length) { + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring NSEC bad length %u vs %u", + length, nsec3.next_length); + return (ISC_R_IGNORE); + } + + order = memcmp(hash, owner, length); + if (first && order == 0) { + /* + * The hashes are the same. + */ + atparent = dns_rdatatype_atparent(type); + ns = dns_nsec3_typepresent(&rdata, dns_rdatatype_ns); + soa = dns_nsec3_typepresent(&rdata, dns_rdatatype_soa); + if (ns && !soa) { + if (!atparent) { + /* + * This NSEC3 record is from somewhere + * higher in the DNS, and at the + * parent of a delegation. It can not + * be legitimately used here. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring parent NSEC3"); + return (ISC_R_IGNORE); + } + } else if (atparent && ns && soa) { + /* + * This NSEC3 record is from the child. + * It can not be legitimately used here. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring child NSEC3"); + return (ISC_R_IGNORE); + } + if (type == dns_rdatatype_cname || + type == dns_rdatatype_nxt || + type == dns_rdatatype_nsec || + type == dns_rdatatype_key || + !dns_nsec3_typepresent(&rdata, dns_rdatatype_cname)) { + *exists = ISC_TRUE; + *data = dns_nsec3_typepresent(&rdata, type); + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC3 proves name exists (owner) " + "data=%d", *data); + return (ISC_R_SUCCESS); + } + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC3 proves CNAME exists"); + return (ISC_R_IGNORE); + } + + if (order == 0 && + dns_nsec3_typepresent(&rdata, dns_rdatatype_ns) && + !dns_nsec3_typepresent(&rdata, dns_rdatatype_soa)) + { + /* + * This NSEC3 record is from somewhere higher in + * the DNS, and at the parent of a delegation. + * It can not be legitimately used here. + */ + (*logit)(arg, ISC_LOG_DEBUG(3), + "ignoring parent NSEC3"); + return (ISC_R_IGNORE); + } + + /* + * Potential closest encloser. + */ + if (order == 0) { + if (closest != NULL && + (dns_name_countlabels(closest) == 0 || + dns_name_issubdomain(qname, closest)) && + !dns_nsec3_typepresent(&rdata, dns_rdatatype_ds) && + !dns_nsec3_typepresent(&rdata, dns_rdatatype_dname) && + (dns_nsec3_typepresent(&rdata, dns_rdatatype_soa) || + !dns_nsec3_typepresent(&rdata, dns_rdatatype_ns))) + { + + dns_name_format(qname, namebuf, + sizeof(namebuf)); + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC3 indicates potential closest " + "encloser: '%s'", namebuf); + dns_name_copy(qname, closest, NULL); + *setclosest = ISC_TRUE; + } + dns_name_format(qname, namebuf, sizeof(namebuf)); + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC3 at super-domain %s", namebuf); + return (answer); + } + + /* + * Find if the name does not exist. + * + * We continue as we need to find the name closest to the + * closest encloser that doesn't exist. + * + * We also need to continue to ensure that we are not + * proving the non-existence of a record in a sub-zone. + * If that would be the case we will return ISC_R_IGNORE + * above. + */ + if ((scope < 0 && order > 0 && + memcmp(hash, nsec3.next, length) < 0) || + (scope >= 0 && (order > 0 || + memcmp(hash, nsec3.next, length) < 0))) + { + char namebuf[DNS_NAME_FORMATSIZE]; + + dns_name_format(qname, namebuf, sizeof(namebuf)); + (*logit)(arg, ISC_LOG_DEBUG(3), "NSEC3 proves " + "name does not exist: '%s'", namebuf); + if (nearest != NULL && + (dns_name_countlabels(nearest) == 0 || + dns_name_issubdomain(nearest, qname))) { + dns_name_copy(qname, nearest, NULL); + *setnearest = ISC_TRUE; + } + + *exists = ISC_FALSE; + *data = ISC_FALSE; + if (optout != NULL) { + if ((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0) + (*logit)(arg, ISC_LOG_DEBUG(3), + "NSEC3 indicates optout"); + *optout = + ISC_TF(nsec3.flags & DNS_NSEC3FLAG_OPTOUT); + } + answer = ISC_R_SUCCESS; + } + + qlabels--; + if (qlabels > 0) + dns_name_split(qname, qlabels, NULL, qname); + first = ISC_FALSE; + } + return (answer); +} diff --git a/contrib/bind9/lib/dns/openssl_link.c b/contrib/bind9/lib/dns/openssl_link.c index d186761..56465aa 100644 --- a/contrib/bind9/lib/dns/openssl_link.c +++ b/contrib/bind9/lib/dns/openssl_link.c @@ -286,46 +286,78 @@ dst__openssl_destroy() { } } -isc_result_t -dst__openssl_toresult(isc_result_t fallback) { +static isc_result_t +toresult(isc_result_t fallback) { isc_result_t result = fallback; unsigned long err = ERR_get_error(); +#ifdef HAVE_OPENSSL_ECDSA + int lib = ERR_GET_LIB(err); +#endif + int reason = ERR_GET_REASON(err); - switch (ERR_GET_REASON(err)) { + switch (reason) { + /* + * ERR_* errors are globally unique; others + * are unique per sublibrary + */ case ERR_R_MALLOC_FAILURE: result = ISC_R_NOMEMORY; break; default: +#ifdef HAVE_OPENSSL_ECDSA + if (lib == ERR_R_ECDSA_LIB && + reason == ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED) { + result = ISC_R_NOENTROPY; + break; + } +#endif break; } + + return (result); +} + +isc_result_t +dst__openssl_toresult(isc_result_t fallback) { + isc_result_t result; + + result = toresult(fallback); + ERR_clear_error(); return (result); } isc_result_t dst__openssl_toresult2(const char *funcname, isc_result_t fallback) { - isc_result_t result = fallback; - unsigned long err = ERR_peek_error(); + return (dst__openssl_toresult3(DNS_LOGCATEGORY_GENERAL, + funcname, fallback)); +} + +isc_result_t +dst__openssl_toresult3(isc_logcategory_t *category, + const char *funcname, isc_result_t fallback) { + isc_result_t result; + unsigned long err; const char *file, *data; int line, flags; char buf[256]; - switch (ERR_GET_REASON(err)) { - case ERR_R_MALLOC_FAILURE: - result = ISC_R_NOMEMORY; - goto done; - default: - break; - } - isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, + result = toresult(fallback); + + isc_log_write(dns_lctx, category, DNS_LOGMODULE_CRYPTO, ISC_LOG_WARNING, - "%s failed", funcname); + "%s failed (%s)", funcname, + isc_result_totext(result)); + + if (result == ISC_R_NOMEMORY) + goto done; + for (;;) { err = ERR_get_error_line_data(&file, &line, &data, &flags); if (err == 0U) goto done; ERR_error_string_n(err, buf, sizeof(buf)); - isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, + isc_log_write(dns_lctx, category, DNS_LOGMODULE_CRYPTO, ISC_LOG_INFO, "%s:%s:%d:%s", buf, file, line, (flags & ERR_TXT_STRING) ? data : ""); diff --git a/contrib/bind9/lib/dns/openssldsa_link.c b/contrib/bind9/lib/dns/openssldsa_link.c index e2cf8cd..66d47bb 100644 --- a/contrib/bind9/lib/dns/openssldsa_link.c +++ b/contrib/bind9/lib/dns/openssldsa_link.c @@ -168,7 +168,8 @@ openssldsa_sign(dst_context_t *dctx, isc_buffer_t *sig) { if (!EVP_SignFinal(evp_md_ctx, sigbuf, &siglen, pkey)) { EVP_PKEY_free(pkey); free(sigbuf); - return (dst__openssl_toresult2("EVP_SignFinal", + return (dst__openssl_toresult3(dctx->category, + "EVP_SignFinal", ISC_R_FAILURE)); } INSIST(EVP_PKEY_size(pkey) >= (int) siglen); @@ -182,25 +183,30 @@ openssldsa_sign(dst_context_t *dctx, isc_buffer_t *sig) { sb = sigbuf; if (d2i_DSA_SIG(&dsasig, &sb, (long) siglen) == NULL) { free(sigbuf); - return (dst__openssl_toresult2("d2i_DSA_SIG", ISC_R_FAILURE)); + return (dst__openssl_toresult3(dctx->category, + "d2i_DSA_SIG", + ISC_R_FAILURE)); } free(sigbuf); #elif 0 /* Only use EVP for the Digest */ if (!EVP_DigestFinal_ex(evp_md_ctx, digest, &siglen)) { - return (dst__openssl_toresult2("EVP_DigestFinal_ex", + return (dst__openssl_toresult3(dctx->category, + "EVP_DigestFinal_ex", ISC_R_FAILURE)); } dsasig = DSA_do_sign(digest, ISC_SHA1_DIGESTLENGTH, dsa); if (dsasig == NULL) - return (dst__openssl_toresult2("DSA_do_sign", + return (dst__openssl_toresult3(dctx->category, + "DSA_do_sign", DST_R_SIGNFAILURE)); #else isc_sha1_final(sha1ctx, digest); dsasig = DSA_do_sign(digest, ISC_SHA1_DIGESTLENGTH, dsa); if (dsasig == NULL) - return (dst__openssl_toresult2("DSA_do_sign", + return (dst__openssl_toresult3(dctx->category, + "DSA_do_sign", DST_R_SIGNFAILURE)); #endif *r.base++ = (key->key_size - 512)/64; @@ -286,7 +292,8 @@ openssldsa_verify(dst_context_t *dctx, const isc_region_t *sig) { case 0: return (dst__openssl_toresult(DST_R_VERIFYFAILURE)); default: - return (dst__openssl_toresult2("DSA_do_verify", + return (dst__openssl_toresult3(dctx->category, + "DSA_do_verify", DST_R_VERIFYFAILURE)); } } diff --git a/contrib/bind9/lib/dns/opensslecdsa_link.c b/contrib/bind9/lib/dns/opensslecdsa_link.c index e6c9b67..1cf30f8 100644 --- a/contrib/bind9/lib/dns/opensslecdsa_link.c +++ b/contrib/bind9/lib/dns/opensslecdsa_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -73,7 +73,8 @@ opensslecdsa_createctx(dst_key_t *key, dst_context_t *dctx) { if (!EVP_DigestInit_ex(evp_md_ctx, type, NULL)) { EVP_MD_CTX_destroy(evp_md_ctx); - return (dst__openssl_toresult2("EVP_DigestInit_ex", + return (dst__openssl_toresult3(dctx->category, + "EVP_DigestInit_ex", ISC_R_FAILURE)); } @@ -103,7 +104,8 @@ opensslecdsa_adddata(dst_context_t *dctx, const isc_region_t *data) { dctx->key->key_alg == DST_ALG_ECDSA384); if (!EVP_DigestUpdate(evp_md_ctx, data->base, data->length)) - return (dst__openssl_toresult2("EVP_DigestUpdate", + return (dst__openssl_toresult3(dctx->category, + "EVP_DigestUpdate", ISC_R_FAILURE)); return (ISC_R_SUCCESS); @@ -147,12 +149,14 @@ opensslecdsa_sign(dst_context_t *dctx, isc_buffer_t *sig) { DST_RET(ISC_R_NOSPACE); if (!EVP_DigestFinal(evp_md_ctx, digest, &dgstlen)) - DST_RET(dst__openssl_toresult2("EVP_DigestFinal", + DST_RET(dst__openssl_toresult3(dctx->category, + "EVP_DigestFinal", ISC_R_FAILURE)); ecdsasig = ECDSA_do_sign(digest, dgstlen, eckey); if (ecdsasig == NULL) - DST_RET(dst__openssl_toresult2("ECDSA_do_sign", + DST_RET(dst__openssl_toresult3(dctx->category, + "ECDSA_do_sign", DST_R_SIGNFAILURE)); BN_bn2bin_fixed(ecdsasig->r, r.base, siglen / 2); r.base += siglen / 2; @@ -196,14 +200,19 @@ opensslecdsa_verify(dst_context_t *dctx, const isc_region_t *sig) { return (DST_R_VERIFYFAILURE); if (!EVP_DigestFinal_ex(evp_md_ctx, digest, &dgstlen)) - DST_RET (dst__openssl_toresult2("EVP_DigestFinal_ex", + DST_RET (dst__openssl_toresult3(dctx->category, + "EVP_DigestFinal_ex", ISC_R_FAILURE)); ecdsasig = ECDSA_SIG_new(); if (ecdsasig == NULL) DST_RET (ISC_R_NOMEMORY); + if (ecdsasig->r != NULL) + BN_free(ecdsasig->r); ecdsasig->r = BN_bin2bn(cp, siglen / 2, NULL); cp += siglen / 2; + if (ecdsasig->s != NULL) + BN_free(ecdsasig->s); ecdsasig->s = BN_bin2bn(cp, siglen / 2, NULL); /* cp += siglen / 2; */ @@ -216,7 +225,8 @@ opensslecdsa_verify(dst_context_t *dctx, const isc_region_t *sig) { ret = dst__openssl_toresult(DST_R_VERIFYFAILURE); break; default: - ret = dst__openssl_toresult2("ECDSA_do_verify", + ret = dst__openssl_toresult3(dctx->category, + "ECDSA_do_verify", DST_R_VERIFYFAILURE); break; } diff --git a/contrib/bind9/lib/dns/opensslgost_link.c b/contrib/bind9/lib/dns/opensslgost_link.c index 8a55a6b..098e312 100644 --- a/contrib/bind9/lib/dns/opensslgost_link.c +++ b/contrib/bind9/lib/dns/opensslgost_link.c @@ -127,7 +127,8 @@ opensslgost_verify(dst_context_t *dctx, const isc_region_t *sig) { case 0: return (dst__openssl_toresult(DST_R_VERIFYFAILURE)); default: - return (dst__openssl_toresult2("EVP_VerifyFinal", + return (dst__openssl_toresult3(dctx->category, + "EVP_VerifyFinal", DST_R_VERIFYFAILURE)); } } diff --git a/contrib/bind9/lib/dns/opensslrsa_link.c b/contrib/bind9/lib/dns/opensslrsa_link.c index 80c3f57..2430f24 100644 --- a/contrib/bind9/lib/dns/opensslrsa_link.c +++ b/contrib/bind9/lib/dns/opensslrsa_link.c @@ -156,7 +156,8 @@ opensslrsa_createctx(dst_key_t *key, dst_context_t *dctx) { if (!EVP_DigestInit_ex(evp_md_ctx, type, NULL)) { EVP_MD_CTX_destroy(evp_md_ctx); - return (dst__openssl_toresult2("EVP_DigestInit_ex", + return (dst__openssl_toresult3(dctx->category, + "EVP_DigestInit_ex", ISC_R_FAILURE)); } dctx->ctxdata.evp_md_ctx = evp_md_ctx; @@ -305,7 +306,8 @@ opensslrsa_adddata(dst_context_t *dctx, const isc_region_t *data) { #if USE_EVP if (!EVP_DigestUpdate(evp_md_ctx, data->base, data->length)) { - return (dst__openssl_toresult2("EVP_DigestUpdate", + return (dst__openssl_toresult3(dctx->category, + "EVP_DigestUpdate", ISC_R_FAILURE)); } #else @@ -395,7 +397,8 @@ opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) { return (ISC_R_NOSPACE); if (!EVP_SignFinal(evp_md_ctx, r.base, &siglen, pkey)) { - return (dst__openssl_toresult2("EVP_SignFinal", + return (dst__openssl_toresult3(dctx->category, + "EVP_SignFinal", ISC_R_FAILURE)); } #else @@ -489,7 +492,8 @@ opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) { status = RSA_sign(type, digest, digestlen, r.base, &siglen, rsa); #endif if (status == 0) - return (dst__openssl_toresult2("RSA_sign", + return (dst__openssl_toresult3(dctx->category, + "RSA_sign", DST_R_OPENSSLFAILURE)); #endif @@ -525,6 +529,16 @@ opensslrsa_verify(dst_context_t *dctx, const isc_region_t *sig) { #if USE_EVP status = EVP_VerifyFinal(evp_md_ctx, sig->base, sig->length, pkey); + switch (status) { + case 1: + return (ISC_R_SUCCESS); + case 0: + return (dst__openssl_toresult(DST_R_VERIFYFAILURE)); + default: + return (dst__openssl_toresult3(dctx->category, + "EVP_VerifyFinal", + DST_R_VERIFYFAILURE)); + } #else switch (dctx->key->key_alg) { case DST_ALG_RSAMD5: @@ -610,7 +624,8 @@ opensslrsa_verify(dst_context_t *dctx, const isc_region_t *sig) { original, rsa, RSA_PKCS1_PADDING); if (status <= 0) - return (dst__openssl_toresult2( + return (dst__openssl_toresult3( + dctx->category, "RSA_public_decrypt", DST_R_VERIFYFAILURE)); if (status != (int)(prefixlen + digestlen)) @@ -631,12 +646,10 @@ opensslrsa_verify(dst_context_t *dctx, const isc_region_t *sig) { status = RSA_verify(type, digest, digestlen, sig->base, RSA_size(rsa), rsa); #endif -#endif if (status != 1) - return (dst__openssl_toresult2("RSA_verify", - DST_R_VERIFYFAILURE)); - + return (dst__openssl_toresult(DST_R_VERIFYFAILURE)); return (ISC_R_SUCCESS); +#endif } static isc_boolean_t diff --git a/contrib/bind9/lib/dns/peer.c b/contrib/bind9/lib/dns/peer.c index c55d73d..ec9e08c 100644 --- a/contrib/bind9/lib/dns/peer.c +++ b/contrib/bind9/lib/dns/peer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -533,7 +533,7 @@ dns_peer_setkeybycharp(dns_peer_t *peer, const char *keyval) { isc_result_t result; dns_fixedname_init(&fname); - isc_buffer_init(&b, keyval, strlen(keyval)); + isc_buffer_constinit(&b, keyval, strlen(keyval)); isc_buffer_add(&b, strlen(keyval)); result = dns_name_fromtext(dns_fixedname_name(&fname), &b, dns_rootname, 0, NULL); diff --git a/contrib/bind9/lib/dns/rbt.c b/contrib/bind9/lib/dns/rbt.c index 4e033d6..eb95d14 100644 --- a/contrib/bind9/lib/dns/rbt.c +++ b/contrib/bind9/lib/dns/rbt.c @@ -1537,6 +1537,8 @@ rehash(dns_rbt_t *rbt) { return; } + INSIST(rbt->hashsize > 0); + for (i = 0; i < rbt->hashsize; i++) rbt->hashtable[i] = NULL; @@ -1947,6 +1949,7 @@ dns_rbt_deletefromlevel(dns_rbtnode_t *delete, dns_rbtnode_t **rootp) { COLOR(sibling) = COLOR(parent); MAKE_BLACK(parent); + INSIST(RIGHT(sibling) != NULL); MAKE_BLACK(RIGHT(sibling)); rotate_left(parent, rootp); child = *rootp; @@ -1984,6 +1987,7 @@ dns_rbt_deletefromlevel(dns_rbtnode_t *delete, dns_rbtnode_t **rootp) { COLOR(sibling) = COLOR(parent); MAKE_BLACK(parent); + INSIST(LEFT(sibling) != NULL); MAKE_BLACK(LEFT(sibling)); rotate_right(parent, rootp); child = *rootp; diff --git a/contrib/bind9/lib/dns/rbtdb.c b/contrib/bind9/lib/dns/rbtdb.c index ef721b8..f6f96ab 100644 --- a/contrib/bind9/lib/dns/rbtdb.c +++ b/contrib/bind9/lib/dns/rbtdb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1550,15 +1550,16 @@ delete_node(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node) DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_CACHE, ISC_LOG_WARNING, - "delete_nsecnode(): " + "delete_node(): " "dns_rbt_deletenode(nsecnode): %s", isc_result_totext(result)); } } - result = dns_rbt_deletenode(rbtdb->tree, node, ISC_FALSE); #ifdef BIND9 - dns_rpz_cidr_deleteip(rbtdb->rpz_cidr, name); + if (rbtdb->rpz_cidr != NULL) + dns_rpz_cidr_deleteip(rbtdb->rpz_cidr, name); #endif + result = dns_rbt_deletenode(rbtdb->tree, node, ISC_FALSE); break; case DNS_RBT_NSEC_NSEC: result = dns_rbt_deletenode(rbtdb->nsec, node, ISC_FALSE); @@ -1572,7 +1573,7 @@ delete_node(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node) DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_CACHE, ISC_LOG_WARNING, - "delete_nsecnode(): " + "delete_cnode(): " "dns_rbt_deletenode: %s", isc_result_totext(result)); } @@ -4547,19 +4548,28 @@ find_coveringnsec(rbtdb_search_t *search, dns_dbnode_t **nodep, } /* - * Mark a database for response policy rewriting. + * Mark a database for response policy rewriting + * or find which RPZ data is available. */ #ifdef BIND9 -static void -get_rpz_enabled(dns_db_t *db, dns_rpz_st_t *st) -{ +static isc_result_t +rpz_enabled(dns_db_t *db, dns_rpz_st_t *st) { dns_rbtdb_t *rbtdb; + isc_result_t result; + result = ISC_R_SUCCESS; rbtdb = (dns_rbtdb_t *)db; REQUIRE(VALID_RBTDB(rbtdb)); RWLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); - dns_rpz_enabled(rbtdb->rpz_cidr, st); + if (st != NULL) { + dns_rpz_enabled_get(rbtdb->rpz_cidr, st); + } else { + result = dns_rpz_new_cidr(rbtdb->common.mctx, + &rbtdb->common.origin, + &rbtdb->rpz_cidr); + } RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); + return (result); } /* @@ -6224,6 +6234,7 @@ add(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion, * will do it on the LRU side, so memory * will not leak... for long. */ + INSIST(rbtdb->heaps != NULL); isc_heap_insert(rbtdb->heaps[idx], newheader); } else if (RESIGN(newheader)) resign_insert(rbtdb, idx, newheader); @@ -6357,7 +6368,8 @@ addnoqname(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, cleanup: dns_rdataset_disassociate(&neg); dns_rdataset_disassociate(&negsig); - free_noqname(mctx, &noqname); + if (noqname != NULL) + free_noqname(mctx, &noqname); return(result); } @@ -6407,7 +6419,8 @@ addclosest(dns_rbtdb_t *rbtdb, rdatasetheader_t *newheader, cleanup: dns_rdataset_disassociate(&neg); dns_rdataset_disassociate(&negsig); - free_noqname(mctx, &closest); + if (closest != NULL) + free_noqname(mctx, &closest); return(result); } @@ -6860,7 +6873,7 @@ loadnode(dns_rbtdb_t *rbtdb, dns_name_t *name, dns_rbtnode_t **nodep, noderesult = dns_rbt_addnode(rbtdb->tree, name, nodep); #ifdef BIND9 - if (noderesult == ISC_R_SUCCESS) + if (noderesult == ISC_R_SUCCESS && rbtdb->rpz_cidr != NULL) dns_rpz_cidr_addip(rbtdb->rpz_cidr, name); #endif @@ -7447,8 +7460,8 @@ static dns_dbmethods_t zone_methods = { isdnssec, NULL, #ifdef BIND9 - get_rpz_enabled, - rpz_findips + rpz_enabled, + rpz_findips, #else NULL, NULL @@ -7681,24 +7694,6 @@ dns_rbtdb_create return (result); } -#ifdef BIND9 - /* - * Get ready for response policy IP address searching if at least one - * zone has been configured as a response policy zone and this - * is not a cache zone. - * It would be better to know that this database is for a policy - * zone named for a view, but that would require knowledge from - * above such as an argv[] set from data in the zone. - */ - if (type == dns_dbtype_zone && !dns_name_equal(origin, dns_rootname)) { - result = dns_rpz_new_cidr(mctx, origin, &rbtdb->rpz_cidr); - if (result != ISC_R_SUCCESS) { - free_rbtdb(rbtdb, ISC_FALSE, NULL); - return (result); - } - } -#endif - /* * In order to set the node callback bit correctly in zone databases, * we need to know if the node has the origin name of the zone. @@ -7977,7 +7972,9 @@ rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target) { dns_dbnode_t *cloned_node = NULL; attachnode(db, node, &cloned_node); + INSIST(!ISC_LINK_LINKED(target, link)); *target = *source; + ISC_LINK_INIT(target, link); /* * Reset iterator state. @@ -8929,12 +8926,10 @@ acache_callback(dns_acacheentry_t *entry, void **arg) { if (acarray != NULL && acarray[count].entry == entry) { acarray[count].entry = NULL; INSIST(acarray[count].cbarg == cbarg); - isc_mem_put(rbtdb->common.mctx, cbarg, sizeof(acache_cbarg_t)); acarray[count].cbarg = NULL; - } else isc_mem_put(rbtdb->common.mctx, cbarg, sizeof(acache_cbarg_t)); - - dns_acache_detachentry(&entry); + dns_acache_detachentry(&entry); + } NODE_UNLOCK(nodelock, isc_rwlocktype_write); @@ -8958,9 +8953,10 @@ acache_cancelentry(isc_mem_t *mctx, dns_acacheentry_t *entry, cbarg = *cbargp; - dns_acache_cancelentry(entry); - dns_db_detachnode(cbarg->db, &cbarg->node); - dns_db_detach(&cbarg->db); + if (dns_acache_cancelentry(entry)) { + dns_db_detachnode(cbarg->db, &cbarg->node); + dns_db_detach(&cbarg->db); + } isc_mem_put(mctx, cbarg, sizeof(acache_cbarg_t)); @@ -9027,6 +9023,7 @@ rdataset_setadditional(dns_rdataset_t *rdataset, dns_rdatasetadditional_t type, acache_callback, newcbarg, &newentry); if (result != ISC_R_SUCCESS) goto fail; + /* Set cache data in the new entry. */ result = dns_acache_setentry(acache, newentry, zone, db, version, node, fname); diff --git a/contrib/bind9/lib/dns/rdata.c b/contrib/bind9/lib/dns/rdata.c index 60890e0..3865f42 100644 --- a/contrib/bind9/lib/dns/rdata.c +++ b/contrib/bind9/lib/dns/rdata.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,8 +15,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id$ */ - /*! \file */ #include <config.h> @@ -124,6 +122,15 @@ txt_fromtext(isc_textregion_t *source, isc_buffer_t *target); static isc_result_t txt_fromwire(isc_buffer_t *source, isc_buffer_t *target); +static isc_result_t +multitxt_totext(isc_region_t *source, isc_buffer_t *target); + +static isc_result_t +multitxt_fromtext(isc_textregion_t *source, isc_buffer_t *target); + +static isc_result_t +multitxt_fromwire(isc_buffer_t *source, isc_buffer_t *target); + static isc_boolean_t name_prefix(dns_name_t *name, dns_name_t *origin, dns_name_t *target); @@ -212,6 +219,70 @@ static isc_result_t unknown_totext(dns_rdata_t *rdata, dns_rdata_textctx_t *tctx, isc_buffer_t *target); +/*% INT16 Size */ +#define NS_INT16SZ 2 +/*% IPv6 Address Size */ +#define NS_LOCATORSZ 8 + +/*% + * convert presentation level address to network order binary form. + * \return + * 1 if `src' is a valid [RFC1884 2.2] address, else 0. + * \note + * (1) does not touch `dst' unless it's returning 1. + */ +static inline int +locator_pton(const char *src, unsigned char *dst) { + static const char xdigits_l[] = "0123456789abcdef", + xdigits_u[] = "0123456789ABCDEF"; + unsigned char tmp[NS_LOCATORSZ]; + unsigned char *tp = tmp, *endp; + const char *xdigits; + int ch, seen_xdigits; + unsigned int val; + + memset(tp, '\0', NS_LOCATORSZ); + endp = tp + NS_LOCATORSZ; + seen_xdigits = 0; + val = 0; + while ((ch = *src++) != '\0') { + const char *pch; + + pch = strchr((xdigits = xdigits_l), ch); + if (pch == NULL) + pch = strchr((xdigits = xdigits_u), ch); + if (pch != NULL) { + val <<= 4; + val |= (pch - xdigits); + if (++seen_xdigits > 4) + return (0); + continue; + } + if (ch == ':') { + if (!seen_xdigits) + return (0); + if (tp + NS_INT16SZ > endp) + return (0); + *tp++ = (unsigned char) (val >> 8) & 0xff; + *tp++ = (unsigned char) val & 0xff; + seen_xdigits = 0; + val = 0; + continue; + } + return (0); + } + if (seen_xdigits) { + if (tp + NS_INT16SZ > endp) + return (0); + *tp++ = (unsigned char) (val >> 8) & 0xff; + *tp++ = (unsigned char) val & 0xff; + } + if (tp != endp) + return (0); + memcpy(dst, tmp, NS_LOCATORSZ); + return (1); +} + static inline int getquad(const void *src, struct in_addr *dst, isc_lex_t *lexer, dns_rdatacallbacks_t *callbacks) @@ -559,9 +630,9 @@ unknown_fromtext(dns_rdataclass_t rdclass, dns_rdatatype_t type, if (type == 0 || dns_rdatatype_ismeta(type)) return (DNS_R_METATYPE); - result = isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, - ISC_FALSE); - if (result == ISC_R_SUCCESS && token.value.as_ulong > 65535U) + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 65535U) return (ISC_R_RANGE); result = isc_buffer_allocate(mctx, &buf, token.value.as_ulong); if (result != ISC_R_SUCCESS) @@ -611,6 +682,7 @@ dns_rdata_fromtext(dns_rdata_t *rdata, dns_rdataclass_t rdclass, void (*callback)(dns_rdatacallbacks_t *, const char *, ...); isc_result_t tresult; size_t length; + isc_boolean_t unknown; REQUIRE(origin == NULL || dns_name_isabsolute(origin) == ISC_TRUE); if (rdata != NULL) { @@ -638,13 +710,33 @@ dns_rdata_fromtext(dns_rdata_t *rdata, dns_rdataclass_t rdclass, return (result); } - if (strcmp(DNS_AS_STR(token), "\\#") == 0) - result = unknown_fromtext(rdclass, type, lexer, mctx, target); - else { + unknown = ISC_FALSE; + if (token.type == isc_tokentype_string && + strcmp(DNS_AS_STR(token), "\\#") == 0) { + /* + * If this is a TXT record '\#' could be a escaped '#'. + * Look to see if the next token is a number and if so + * treat it as a unknown record format. + */ + if (type == dns_rdatatype_txt) { + result = isc_lex_getmastertoken(lexer, &token, + isc_tokentype_number, + ISC_FALSE); + if (result == ISC_R_SUCCESS) + isc_lex_ungettoken(lexer, &token); + } + + if (result == ISC_R_SUCCESS) { + unknown = ISC_TRUE; + result = unknown_fromtext(rdclass, type, lexer, + mctx, target); + } else + options |= DNS_RDATA_UNKNOWNESCAPE; + } else isc_lex_ungettoken(lexer, &token); + if (!unknown) FROMTEXTSWITCH - } /* * Consume to end of line / file. @@ -1174,6 +1266,157 @@ txt_fromwire(isc_buffer_t *source, isc_buffer_t *target) { return (ISC_R_SUCCESS); } +static isc_result_t +multitxt_totext(isc_region_t *source, isc_buffer_t *target) { + unsigned int tl; + unsigned int n0, n; + unsigned char *sp; + char *tp; + isc_region_t region; + + isc_buffer_availableregion(target, ®ion); + sp = source->base; + tp = (char *)region.base; + tl = region.length; + + if (tl < 1) + return (ISC_R_NOSPACE); + *tp++ = '"'; + tl--; + do { + n0 = n = *sp++; + + REQUIRE(n0 + 1 <= source->length); + + while (n--) { + if (*sp < 0x20 || *sp >= 0x7f) { + if (tl < 4) + return (ISC_R_NOSPACE); + *tp++ = 0x5c; + *tp++ = 0x30 + ((*sp / 100) % 10); + *tp++ = 0x30 + ((*sp / 10) % 10); + *tp++ = 0x30 + (*sp % 10); + sp++; + tl -= 4; + continue; + } + /* double quote, semi-colon, backslash */ + if (*sp == 0x22 || *sp == 0x3b || *sp == 0x5c) { + if (tl < 2) + return (ISC_R_NOSPACE); + *tp++ = '\\'; + tl--; + } + if (tl < 1) + return (ISC_R_NOSPACE); + *tp++ = *sp++; + tl--; + } + isc_region_consume(source, n0 + 1); + } while (source->length != 0); + if (tl < 1) + return (ISC_R_NOSPACE); + *tp++ = '"'; + tl--; + isc_buffer_add(target, tp - (char *)region.base); + return (ISC_R_SUCCESS); +} + +static isc_result_t +multitxt_fromtext(isc_textregion_t *source, isc_buffer_t *target) { + isc_region_t tregion; + isc_boolean_t escape; + unsigned int n, nrem; + char *s; + unsigned char *t0, *t; + int d; + int c; + + s = source->base; + n = source->length; + escape = ISC_FALSE; + + do { + isc_buffer_availableregion(target, &tregion); + t0 = tregion.base; + nrem = tregion.length; + if (nrem < 1) + return (ISC_R_NOSPACE); + /* length byte */ + t = t0; + nrem--; + t++; + /* 255 byte character-string slice */ + if (nrem > 255) + nrem = 255; + while (n != 0) { + --n; + c = (*s++) & 0xff; + if (escape && (d = decvalue((char)c)) != -1) { + c = d; + if (n == 0) + return (DNS_R_SYNTAX); + n--; + if ((d = decvalue(*s++)) != -1) + c = c * 10 + d; + else + return (DNS_R_SYNTAX); + if (n == 0) + return (DNS_R_SYNTAX); + n--; + if ((d = decvalue(*s++)) != -1) + c = c * 10 + d; + else + return (DNS_R_SYNTAX); + if (c > 255) + return (DNS_R_SYNTAX); + } else if (!escape && c == '\\') { + escape = ISC_TRUE; + continue; + } + escape = ISC_FALSE; + *t++ = c; + nrem--; + if (nrem == 0) + break; + } + if (escape) + return (DNS_R_SYNTAX); + *t0 = t - t0 - 1; + isc_buffer_add(target, *t0 + 1); + } while (n != 0); + return (ISC_R_SUCCESS); +} + +static isc_result_t +multitxt_fromwire(isc_buffer_t *source, isc_buffer_t *target) { + unsigned int n; + isc_region_t sregion; + isc_region_t tregion; + + isc_buffer_activeregion(source, &sregion); + if (sregion.length == 0) + return(ISC_R_UNEXPECTEDEND); + n = 256U; + do { + if (n != 256U) + return (DNS_R_SYNTAX); + n = *sregion.base + 1; + if (n > sregion.length) + return (ISC_R_UNEXPECTEDEND); + + isc_buffer_availableregion(target, &tregion); + if (n > tregion.length) + return (ISC_R_NOSPACE); + + memcpy(tregion.base, sregion.base, n); + isc_buffer_forward(source, n); + isc_buffer_add(target, n); + isc_buffer_activeregion(source, &sregion); + } while (sregion.length != 0); + return (ISC_R_SUCCESS); +} + static isc_boolean_t name_prefix(dns_name_t *name, dns_name_t *origin, dns_name_t *target) { int l1, l2; diff --git a/contrib/bind9/lib/dns/rdata/any_255/tsig_250.c b/contrib/bind9/lib/dns/rdata/any_255/tsig_250.c index 338c5dd..0046ed0 100644 --- a/contrib/bind9/lib/dns/rdata/any_255/tsig_250.c +++ b/contrib/bind9/lib/dns/rdata/any_255/tsig_250.c @@ -133,7 +133,7 @@ static inline isc_result_t totext_any_tsig(ARGS_TOTEXT) { isc_region_t sr; isc_region_t sigr; - char buf[sizeof("281474976710655 ")]; + char buf[sizeof(" 281474976710655 ")]; char *bufp; dns_name_t name; dns_name_t prefix; @@ -223,19 +223,14 @@ totext_any_tsig(ARGS_TOTEXT) { */ n = uint16_fromregion(&sr); isc_region_consume(&sr, 2); - if (dns_tsigrcode_totext((dns_rcode_t)n, target) == ISC_R_SUCCESS) - RETERR(str_totext(" ", target)); - else { - sprintf(buf, "%u ", n); - RETERR(str_totext(buf, target)); - } + RETERR(dns_tsigrcode_totext((dns_rcode_t)n, target)); /* * Other Size. */ n = uint16_fromregion(&sr); isc_region_consume(&sr, 2); - sprintf(buf, "%u ", n); + sprintf(buf, " %u ", n); RETERR(str_totext(buf, target)); /* diff --git a/contrib/bind9/lib/dns/rdata/generic/dlv_32769.c b/contrib/bind9/lib/dns/rdata/generic/dlv_32769.c index 4dbcb1e..97f37f7 100644 --- a/contrib/bind9/lib/dns/rdata/generic/dlv_32769.c +++ b/contrib/bind9/lib/dns/rdata/generic/dlv_32769.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007, 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006, 2007, 2009, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -91,7 +91,7 @@ fromtext_dlv(ARGS_FROMTEXT) { length = -1; break; } - return (isc_hex_tobuffer(lexer, target, -1)); + return (isc_hex_tobuffer(lexer, target, length)); } static inline isc_result_t diff --git a/contrib/bind9/lib/dns/rdata/generic/eui48_108.c b/contrib/bind9/lib/dns/rdata/generic/eui48_108.c new file mode 100644 index 0000000..3e52fec --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/eui48_108.c @@ -0,0 +1,215 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef RDATA_GENERIC_EUI48_108_C +#define RDATA_GENERIC_EUI48_108_C + +#include <string.h> + +#define RRTYPE_EUI48_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_eui48(ARGS_FROMTEXT) { + isc_token_t token; + unsigned char eui48[6]; + unsigned int l0, l1, l2, l3, l4, l5; + int n; + + REQUIRE(type == 108); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, + ISC_FALSE)); + n = sscanf(DNS_AS_STR(token), "%2x-%2x-%2x-%2x-%2x-%2x", + &l0, &l1, &l2, &l3, &l4, &l5); + if (n != 6 || l0 > 255U || l1 > 255U || l2 > 255U || l3 > 255U || + l4 > 255U || l5 > 255U) + return (DNS_R_BADEUI); + + eui48[0] = l0; + eui48[1] = l1; + eui48[2] = l2; + eui48[3] = l3; + eui48[4] = l4; + eui48[5] = l5; + return (mem_tobuffer(target, eui48, sizeof(eui48))); +} + +static inline isc_result_t +totext_eui48(ARGS_TOTEXT) { + char buf[sizeof("xx-xx-xx-xx-xx-xx")]; + + REQUIRE(rdata->type == 108); + REQUIRE(rdata->length == 6); + + UNUSED(tctx); + + (void)snprintf(buf, sizeof(buf), "%02x-%02x-%02x-%02x-%02x-%02x", + rdata->data[0], rdata->data[1], rdata->data[2], + rdata->data[3], rdata->data[4], rdata->data[5]); + return (str_totext(buf, target)); +} + +static inline isc_result_t +fromwire_eui48(ARGS_FROMWIRE) { + isc_region_t sregion; + + REQUIRE(type == 108); + + UNUSED(type); + UNUSED(options); + UNUSED(rdclass); + UNUSED(dctx); + + isc_buffer_activeregion(source, &sregion); + if (sregion.length != 6) + return (DNS_R_FORMERR); + isc_buffer_forward(source, sregion.length); + return (mem_tobuffer(target, sregion.base, sregion.length)); +} + +static inline isc_result_t +towire_eui48(ARGS_TOWIRE) { + + REQUIRE(rdata->type == 108); + REQUIRE(rdata->length == 6); + + UNUSED(cctx); + + return (mem_tobuffer(target, rdata->data, rdata->length)); +} + +static inline int +compare_eui48(ARGS_COMPARE) { + isc_region_t region1; + isc_region_t region2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 108); + REQUIRE(rdata1->length == 6); + REQUIRE(rdata2->length == 6); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + return (isc_region_compare(®ion1, ®ion2)); +} + +static inline isc_result_t +fromstruct_eui48(ARGS_FROMSTRUCT) { + dns_rdata_eui48_t *eui48 = source; + + REQUIRE(type == 108); + REQUIRE(source != NULL); + REQUIRE(eui48->common.rdtype == type); + REQUIRE(eui48->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + return (mem_tobuffer(target, eui48->eui48, sizeof(eui48->eui48))); +} + +static inline isc_result_t +tostruct_eui48(ARGS_TOSTRUCT) { + dns_rdata_eui48_t *eui48 = target; + + REQUIRE(rdata->type == 108); + REQUIRE(target != NULL); + REQUIRE(rdata->length == 6); + + UNUSED(mctx); + + eui48->common.rdclass = rdata->rdclass; + eui48->common.rdtype = rdata->type; + ISC_LINK_INIT(&eui48->common, link); + + memcpy(eui48->eui48, rdata->data, rdata->length); + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_eui48(ARGS_FREESTRUCT) { + dns_rdata_eui48_t *eui48 = source; + + REQUIRE(source != NULL); + REQUIRE(eui48->common.rdtype == 108); + + return; +} + +static inline isc_result_t +additionaldata_eui48(ARGS_ADDLDATA) { + + REQUIRE(rdata->type == 108); + REQUIRE(rdata->length == 6); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_eui48(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 108); + REQUIRE(rdata->length == 6); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_eui48(ARGS_CHECKOWNER) { + + REQUIRE(type == 108); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_eui48(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 108); + REQUIRE(rdata->length == 6); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_eui48(ARGS_COMPARE) { + return (compare_eui48(rdata1, rdata2)); +} + +#endif /* RDATA_GENERIC_EUI48_108_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/eui48_108.h b/contrib/bind9/lib/dns/rdata/generic/eui48_108.h new file mode 100644 index 0000000..508c61f --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/eui48_108.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_EUI48_108_H +#define GENERIC_EUI48_108_H 1 + +typedef struct dns_rdata_eui48 { + dns_rdatacommon_t common; + unsigned char eui48[6]; +} dns_rdata_eui48_t; + +#endif /* GENERIC_EUI48_10k_H */ diff --git a/contrib/bind9/lib/dns/rdata/generic/eui64_109.c b/contrib/bind9/lib/dns/rdata/generic/eui64_109.c new file mode 100644 index 0000000..245994f --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/eui64_109.c @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef RDATA_GENERIC_EUI64_109_C +#define RDATA_GENERIC_EUI64_109_C + +#include <string.h> + +#define RRTYPE_EUI64_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_eui64(ARGS_FROMTEXT) { + isc_token_t token; + unsigned char eui64[8]; + unsigned int l0, l1, l2, l3, l4, l5, l6, l7; + int n; + + REQUIRE(type == 109); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, + ISC_FALSE)); + n = sscanf(DNS_AS_STR(token), "%2x-%2x-%2x-%2x-%2x-%2x-%2x-%2x", + &l0, &l1, &l2, &l3, &l4, &l5, &l6, &l7); + if (n != 8 || l0 > 255U || l1 > 255U || l2 > 255U || l3 > 255U || + l4 > 255U || l5 > 255U || l6 > 255U || l7 > 255U) + return (DNS_R_BADEUI); + + eui64[0] = l0; + eui64[1] = l1; + eui64[2] = l2; + eui64[3] = l3; + eui64[4] = l4; + eui64[5] = l5; + eui64[6] = l6; + eui64[7] = l7; + return (mem_tobuffer(target, eui64, sizeof(eui64))); +} + +static inline isc_result_t +totext_eui64(ARGS_TOTEXT) { + char buf[sizeof("xx-xx-xx-xx-xx-xx-xx-xx")]; + + REQUIRE(rdata->type == 109); + REQUIRE(rdata->length == 8); + + UNUSED(tctx); + + (void)snprintf(buf, sizeof(buf), + "%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x", + rdata->data[0], rdata->data[1], + rdata->data[2], rdata->data[3], + rdata->data[4], rdata->data[5], + rdata->data[6], rdata->data[7]); + return (str_totext(buf, target)); +} + +static inline isc_result_t +fromwire_eui64(ARGS_FROMWIRE) { + isc_region_t sregion; + + REQUIRE(type == 109); + + UNUSED(type); + UNUSED(options); + UNUSED(rdclass); + UNUSED(dctx); + + isc_buffer_activeregion(source, &sregion); + if (sregion.length != 8) + return (DNS_R_FORMERR); + isc_buffer_forward(source, sregion.length); + return (mem_tobuffer(target, sregion.base, sregion.length)); +} + +static inline isc_result_t +towire_eui64(ARGS_TOWIRE) { + + REQUIRE(rdata->type == 109); + REQUIRE(rdata->length == 8); + + UNUSED(cctx); + + return (mem_tobuffer(target, rdata->data, rdata->length)); +} + +static inline int +compare_eui64(ARGS_COMPARE) { + isc_region_t region1; + isc_region_t region2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 109); + REQUIRE(rdata1->length == 8); + REQUIRE(rdata2->length == 8); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + return (isc_region_compare(®ion1, ®ion2)); +} + +static inline isc_result_t +fromstruct_eui64(ARGS_FROMSTRUCT) { + dns_rdata_eui64_t *eui64 = source; + + REQUIRE(type == 109); + REQUIRE(source != NULL); + REQUIRE(eui64->common.rdtype == type); + REQUIRE(eui64->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + return (mem_tobuffer(target, eui64->eui64, sizeof(eui64->eui64))); +} + +static inline isc_result_t +tostruct_eui64(ARGS_TOSTRUCT) { + dns_rdata_eui64_t *eui64 = target; + + REQUIRE(rdata->type == 109); + REQUIRE(target != NULL); + REQUIRE(rdata->length == 8); + + UNUSED(mctx); + + eui64->common.rdclass = rdata->rdclass; + eui64->common.rdtype = rdata->type; + ISC_LINK_INIT(&eui64->common, link); + + memcpy(eui64->eui64, rdata->data, rdata->length); + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_eui64(ARGS_FREESTRUCT) { + dns_rdata_eui64_t *eui64 = source; + + REQUIRE(source != NULL); + REQUIRE(eui64->common.rdtype == 109); + + return; +} + +static inline isc_result_t +additionaldata_eui64(ARGS_ADDLDATA) { + + REQUIRE(rdata->type == 109); + REQUIRE(rdata->length == 8); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_eui64(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 109); + REQUIRE(rdata->length == 8); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_eui64(ARGS_CHECKOWNER) { + + REQUIRE(type == 109); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_eui64(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 109); + REQUIRE(rdata->length == 8); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_eui64(ARGS_COMPARE) { + return (compare_eui64(rdata1, rdata2)); +} + +#endif /* RDATA_GENERIC_EUI64_109_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/eui64_109.h b/contrib/bind9/lib/dns/rdata/generic/eui64_109.h new file mode 100644 index 0000000..56996f8 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/eui64_109.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_EUI64_109_H +#define GENERIC_EUI64_109_H 1 + +typedef struct dns_rdata_eui64 { + dns_rdatacommon_t common; + unsigned char eui64[8]; +} dns_rdata_eui64_t; + +#endif /* GENERIC_EUI64_10k_H */ diff --git a/contrib/bind9/lib/dns/rdata/generic/l32_105.c b/contrib/bind9/lib/dns/rdata/generic/l32_105.c new file mode 100644 index 0000000..763ddb9 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/l32_105.c @@ -0,0 +1,233 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef RDATA_GENERIC_L32_105_C +#define RDATA_GENERIC_L32_105_C + +#include <string.h> + +#include <isc/net.h> + +#define RRTYPE_L32_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_l32(ARGS_FROMTEXT) { + isc_token_t token; + struct in_addr addr; + isc_region_t region; + + REQUIRE(type == 105); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffffU) + RETTOK(ISC_R_RANGE); + RETERR(uint16_tobuffer(token.value.as_ulong, target)); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, + ISC_FALSE)); + + if (getquad(DNS_AS_STR(token), &addr, lexer, callbacks) != 1) + RETTOK(DNS_R_BADDOTTEDQUAD); + isc_buffer_availableregion(target, ®ion); + if (region.length < 4) + return (ISC_R_NOSPACE); + memcpy(region.base, &addr, 4); + isc_buffer_add(target, 4); + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +totext_l32(ARGS_TOTEXT) { + isc_region_t region; + char buf[sizeof("65000")]; + unsigned short num; + + REQUIRE(rdata->type == 105); + REQUIRE(rdata->length == 6); + + UNUSED(tctx); + + dns_rdata_toregion(rdata, ®ion); + num = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + sprintf(buf, "%u", num); + RETERR(str_totext(buf, target)); + + RETERR(str_totext(" ", target)); + + return (inet_totext(AF_INET, ®ion, target)); +} + +static inline isc_result_t +fromwire_l32(ARGS_FROMWIRE) { + isc_region_t sregion; + + REQUIRE(type == 105); + + UNUSED(type); + UNUSED(options); + UNUSED(rdclass); + UNUSED(dctx); + + isc_buffer_activeregion(source, &sregion); + if (sregion.length != 6) + return (DNS_R_FORMERR); + isc_buffer_forward(source, sregion.length); + return (mem_tobuffer(target, sregion.base, sregion.length)); +} + +static inline isc_result_t +towire_l32(ARGS_TOWIRE) { + + REQUIRE(rdata->type == 105); + REQUIRE(rdata->length == 6); + + UNUSED(cctx); + + return (mem_tobuffer(target, rdata->data, rdata->length)); +} + +static inline int +compare_l32(ARGS_COMPARE) { + isc_region_t region1; + isc_region_t region2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 105); + REQUIRE(rdata1->length == 6); + REQUIRE(rdata2->length == 6); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + return (isc_region_compare(®ion1, ®ion2)); +} + +static inline isc_result_t +fromstruct_l32(ARGS_FROMSTRUCT) { + dns_rdata_l32_t *l32 = source; + isc_uint32_t n; + + REQUIRE(type == 105); + REQUIRE(source != NULL); + REQUIRE(l32->common.rdtype == type); + REQUIRE(l32->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + RETERR(uint16_tobuffer(l32->pref, target)); + n = ntohl(l32->l32.s_addr); + return (uint32_tobuffer(n, target)); +} + +static inline isc_result_t +tostruct_l32(ARGS_TOSTRUCT) { + isc_region_t region; + dns_rdata_l32_t *l32 = target; + isc_uint32_t n; + + REQUIRE(rdata->type == 105); + REQUIRE(target != NULL); + REQUIRE(rdata->length == 6); + + UNUSED(mctx); + + l32->common.rdclass = rdata->rdclass; + l32->common.rdtype = rdata->type; + ISC_LINK_INIT(&l32->common, link); + + dns_rdata_toregion(rdata, ®ion); + l32->pref = uint16_fromregion(®ion); + n = uint32_fromregion(®ion); + l32->l32.s_addr = htonl(n); + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_l32(ARGS_FREESTRUCT) { + dns_rdata_l32_t *l32 = source; + + REQUIRE(source != NULL); + REQUIRE(l32->common.rdtype == 105); + + return; +} + +static inline isc_result_t +additionaldata_l32(ARGS_ADDLDATA) { + + REQUIRE(rdata->type == 105); + REQUIRE(rdata->length == 6); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_l32(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 105); + REQUIRE(rdata->length == 6); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_l32(ARGS_CHECKOWNER) { + + REQUIRE(type == 105); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_l32(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 105); + REQUIRE(rdata->length == 6); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_l32(ARGS_COMPARE) { + return (compare_l32(rdata1, rdata2)); +} + +#endif /* RDATA_GENERIC_L32_105_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/l32_105.h b/contrib/bind9/lib/dns/rdata/generic/l32_105.h new file mode 100644 index 0000000..f95db22 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/l32_105.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_L32_105_H +#define GENERIC_L32_105_H 1 + +typedef struct dns_rdata_l32 { + dns_rdatacommon_t common; + isc_uint16_t pref; + struct in_addr l32; +} dns_rdata_l32_t; + +#endif /* GENERIC_L32_105_H */ diff --git a/contrib/bind9/lib/dns/rdata/generic/l64_106.c b/contrib/bind9/lib/dns/rdata/generic/l64_106.c new file mode 100644 index 0000000..ff20663 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/l64_106.c @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef RDATA_GENERIC_L64_106_C +#define RDATA_GENERIC_L64_106_C + +#include <string.h> + +#include <isc/net.h> + +#define RRTYPE_L64_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_l64(ARGS_FROMTEXT) { + isc_token_t token; + unsigned char locator[NS_LOCATORSZ]; + + REQUIRE(type == 106); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffffU) + RETTOK(ISC_R_RANGE); + RETERR(uint16_tobuffer(token.value.as_ulong, target)); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, + ISC_FALSE)); + + if (locator_pton(DNS_AS_STR(token), locator) != 1) + RETTOK(DNS_R_SYNTAX); + return (mem_tobuffer(target, locator, NS_LOCATORSZ)); +} + +static inline isc_result_t +totext_l64(ARGS_TOTEXT) { + isc_region_t region; + char buf[sizeof("xxxx:xxxx:xxxx:xxxx")]; + unsigned short num; + + REQUIRE(rdata->type == 106); + REQUIRE(rdata->length == 10); + + UNUSED(tctx); + + dns_rdata_toregion(rdata, ®ion); + num = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + sprintf(buf, "%u", num); + RETERR(str_totext(buf, target)); + + RETERR(str_totext(" ", target)); + + sprintf(buf, "%x:%x:%x:%x", + region.base[0]<<8 | region.base[1], + region.base[2]<<8 | region.base[3], + region.base[4]<<8 | region.base[5], + region.base[6]<<8 | region.base[7]); + return (str_totext(buf, target)); +} + +static inline isc_result_t +fromwire_l64(ARGS_FROMWIRE) { + isc_region_t sregion; + + REQUIRE(type == 106); + + UNUSED(type); + UNUSED(options); + UNUSED(rdclass); + UNUSED(dctx); + + isc_buffer_activeregion(source, &sregion); + if (sregion.length != 10) + return (DNS_R_FORMERR); + isc_buffer_forward(source, sregion.length); + return (mem_tobuffer(target, sregion.base, sregion.length)); +} + +static inline isc_result_t +towire_l64(ARGS_TOWIRE) { + + REQUIRE(rdata->type == 106); + REQUIRE(rdata->length == 10); + + UNUSED(cctx); + + return (mem_tobuffer(target, rdata->data, rdata->length)); +} + +static inline int +compare_l64(ARGS_COMPARE) { + isc_region_t region1; + isc_region_t region2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 106); + REQUIRE(rdata1->length == 10); + REQUIRE(rdata2->length == 10); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + return (isc_region_compare(®ion1, ®ion2)); +} + +static inline isc_result_t +fromstruct_l64(ARGS_FROMSTRUCT) { + dns_rdata_l64_t *l64 = source; + + REQUIRE(type == 106); + REQUIRE(source != NULL); + REQUIRE(l64->common.rdtype == type); + REQUIRE(l64->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + RETERR(uint16_tobuffer(l64->pref, target)); + return (mem_tobuffer(target, l64->l64, sizeof(l64->l64))); +} + +static inline isc_result_t +tostruct_l64(ARGS_TOSTRUCT) { + isc_region_t region; + dns_rdata_l64_t *l64 = target; + + REQUIRE(rdata->type == 106); + REQUIRE(target != NULL); + REQUIRE(rdata->length == 10); + + UNUSED(mctx); + + l64->common.rdclass = rdata->rdclass; + l64->common.rdtype = rdata->type; + ISC_LINK_INIT(&l64->common, link); + + dns_rdata_toregion(rdata, ®ion); + l64->pref = uint16_fromregion(®ion); + memcpy(l64->l64, region.base, region.length); + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_l64(ARGS_FREESTRUCT) { + dns_rdata_l64_t *l64 = source; + + REQUIRE(source != NULL); + REQUIRE(l64->common.rdtype == 106); + + return; +} + +static inline isc_result_t +additionaldata_l64(ARGS_ADDLDATA) { + + REQUIRE(rdata->type == 106); + REQUIRE(rdata->length == 10); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_l64(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 106); + REQUIRE(rdata->length == 10); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_l64(ARGS_CHECKOWNER) { + + REQUIRE(type == 106); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_l64(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 106); + REQUIRE(rdata->length == 10); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_l64(ARGS_COMPARE) { + return (compare_l64(rdata1, rdata2)); +} + +#endif /* RDATA_GENERIC_L64_106_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/l64_106.h b/contrib/bind9/lib/dns/rdata/generic/l64_106.h new file mode 100644 index 0000000..8f93fc5 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/l64_106.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_L64_106_H +#define GENERIC_L64_106_H 1 + +typedef struct dns_rdata_l64 { + dns_rdatacommon_t common; + isc_uint16_t pref; + unsigned char l64[8]; +} dns_rdata_l64_t; + +#endif /* GENERIC_L64_106_H */ diff --git a/contrib/bind9/lib/dns/rdata/generic/lp_107.c b/contrib/bind9/lib/dns/rdata/generic/lp_107.c new file mode 100644 index 0000000..732ef7f --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/lp_107.c @@ -0,0 +1,275 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef RDATA_GENERIC_LP_107_C +#define RDATA_GENERIC_LP_107_C + +#include <string.h> + +#include <isc/net.h> + +#define RRTYPE_LP_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_lp(ARGS_FROMTEXT) { + isc_token_t token; + dns_name_t name; + isc_buffer_t buffer; + + REQUIRE(type == 107); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(callbacks); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffffU) + RETTOK(ISC_R_RANGE); + RETERR(uint16_tobuffer(token.value.as_ulong, target)); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, + ISC_FALSE)); + + dns_name_init(&name, NULL); + buffer_fromregion(&buffer, &token.value.as_region); + origin = (origin != NULL) ? origin : dns_rootname; + return (dns_name_fromtext(&name, &buffer, origin, options, target)); +} + +static inline isc_result_t +totext_lp(ARGS_TOTEXT) { + isc_region_t region; + dns_name_t name; + dns_name_t prefix; + isc_boolean_t sub; + char buf[sizeof("64000")]; + unsigned short num; + + REQUIRE(rdata->type == 107); + REQUIRE(rdata->length != 0); + + dns_name_init(&name, NULL); + dns_name_init(&prefix, NULL); + + dns_rdata_toregion(rdata, ®ion); + num = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + sprintf(buf, "%u", num); + RETERR(str_totext(buf, target)); + + RETERR(str_totext(" ", target)); + + dns_name_fromregion(&name, ®ion); + sub = name_prefix(&name, tctx->origin, &prefix); + return (dns_name_totext(&prefix, sub, target)); +} + +static inline isc_result_t +fromwire_lp(ARGS_FROMWIRE) { + dns_name_t name; + isc_region_t sregion; + + REQUIRE(type == 107); + + UNUSED(type); + UNUSED(rdclass); + + dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14); + + dns_name_init(&name, NULL); + + isc_buffer_activeregion(source, &sregion); + if (sregion.length < 2) + return (ISC_R_UNEXPECTEDEND); + RETERR(mem_tobuffer(target, sregion.base, 2)); + isc_buffer_forward(source, 2); + return (dns_name_fromwire(&name, source, dctx, options, target)); +} + +static inline isc_result_t +towire_lp(ARGS_TOWIRE) { + + REQUIRE(rdata->type == 107); + REQUIRE(rdata->length != 0); + + UNUSED(cctx); + + return (mem_tobuffer(target, rdata->data, rdata->length)); +} + +static inline int +compare_lp(ARGS_COMPARE) { + isc_region_t region1; + isc_region_t region2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 107); + REQUIRE(rdata1->length != 0); + REQUIRE(rdata2->length != 0); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + + return (isc_region_compare(®ion1, ®ion2)); +} + +static inline isc_result_t +fromstruct_lp(ARGS_FROMSTRUCT) { + dns_rdata_lp_t *lp = source; + isc_region_t region; + + REQUIRE(type == 107); + REQUIRE(source != NULL); + REQUIRE(lp->common.rdtype == type); + REQUIRE(lp->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + RETERR(uint16_tobuffer(lp->pref, target)); + dns_name_toregion(&lp->lp, ®ion); + return (isc_buffer_copyregion(target, ®ion)); +} + +static inline isc_result_t +tostruct_lp(ARGS_TOSTRUCT) { + isc_region_t region; + dns_rdata_lp_t *lp = target; + dns_name_t name; + + REQUIRE(rdata->type == 107); + REQUIRE(target != NULL); + REQUIRE(rdata->length != 0); + + lp->common.rdclass = rdata->rdclass; + lp->common.rdtype = rdata->type; + ISC_LINK_INIT(&lp->common, link); + + dns_name_init(&name, NULL); + dns_rdata_toregion(rdata, ®ion); + lp->pref = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + dns_name_fromregion(&name, ®ion); + dns_name_init(&lp->lp, NULL); + RETERR(name_duporclone(&name, mctx, &lp->lp)); + lp->mctx = mctx; + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_lp(ARGS_FREESTRUCT) { + dns_rdata_lp_t *lp = source; + + REQUIRE(source != NULL); + REQUIRE(lp->common.rdtype == 107); + + if (lp->mctx == NULL) + return; + + dns_name_free(&lp->lp, lp->mctx); + lp->mctx = NULL; +} + +static inline isc_result_t +additionaldata_lp(ARGS_ADDLDATA) { + dns_name_t name; + dns_offsets_t offsets; + isc_region_t region; + isc_result_t result; + + REQUIRE(rdata->type == 107); + + dns_name_init(&name, offsets); + dns_rdata_toregion(rdata, ®ion); + isc_region_consume(®ion, 2); + dns_name_fromregion(&name, ®ion); + + result = (add)(arg, &name, dns_rdatatype_l32); + if (result != ISC_R_SUCCESS) + return (result); + return ((add)(arg, &name, dns_rdatatype_l64)); +} + +static inline isc_result_t +digest_lp(ARGS_DIGEST) { + isc_region_t region; + + REQUIRE(rdata->type == 107); + + dns_rdata_toregion(rdata, ®ion); + return ((digest)(arg, ®ion)); +} + +static inline isc_boolean_t +checkowner_lp(ARGS_CHECKOWNER) { + + REQUIRE(type == 107); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(name); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_lp(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 107); + + UNUSED(bad); + UNUSED(owner); + + return (ISC_TRUE); +} + +static inline int +casecompare_lp(ARGS_COMPARE) { + dns_name_t name1; + dns_name_t name2; + isc_region_t region1; + isc_region_t region2; + int order; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 107); + REQUIRE(rdata1->length != 0); + REQUIRE(rdata2->length != 0); + + order = memcmp(rdata1->data, rdata2->data, 2); + if (order != 0) + return (order < 0 ? -1 : 1); + + dns_name_init(&name1, NULL); + dns_name_init(&name2, NULL); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + + isc_region_consume(®ion1, 2); + isc_region_consume(®ion2, 2); + + dns_name_fromregion(&name1, ®ion1); + dns_name_fromregion(&name2, ®ion2); + + return (dns_name_rdatacompare(&name1, &name2)); +} + +#endif /* RDATA_GENERIC_LP_107_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/lp_107.h b/contrib/bind9/lib/dns/rdata/generic/lp_107.h new file mode 100644 index 0000000..cbfee8a --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/lp_107.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_LP_107_H +#define GENERIC_LP_107_H 1 + +typedef struct dns_rdata_lp { + dns_rdatacommon_t common; + isc_mem_t *mctx; + isc_uint16_t pref; + dns_name_t lp; +} dns_rdata_lp_t; + +#endif /* GENERIC_LP_107_H */ diff --git a/contrib/bind9/lib/dns/rdata/generic/mx_15.c b/contrib/bind9/lib/dns/rdata/generic/mx_15.c index fd09e92..77eee15 100644 --- a/contrib/bind9/lib/dns/rdata/generic/mx_15.c +++ b/contrib/bind9/lib/dns/rdata/generic/mx_15.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -57,7 +57,6 @@ fromtext_mx(ARGS_FROMTEXT) { UNUSED(type); UNUSED(rdclass); - UNUSED(callbacks); RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, ISC_FALSE)); diff --git a/contrib/bind9/lib/dns/rdata/generic/nid_104.c b/contrib/bind9/lib/dns/rdata/generic/nid_104.c new file mode 100644 index 0000000..c96b0bf --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/nid_104.c @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef RDATA_GENERIC_NID_104_C +#define RDATA_GENERIC_NID_104_C + +#include <string.h> + +#include <isc/net.h> + +#define RRTYPE_NID_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_nid(ARGS_FROMTEXT) { + isc_token_t token; + unsigned char locator[NS_LOCATORSZ]; + + REQUIRE(type == 104); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffffU) + RETTOK(ISC_R_RANGE); + RETERR(uint16_tobuffer(token.value.as_ulong, target)); + + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string, + ISC_FALSE)); + + if (locator_pton(DNS_AS_STR(token), locator) != 1) + RETTOK(DNS_R_SYNTAX); + return (mem_tobuffer(target, locator, NS_LOCATORSZ)); +} + +static inline isc_result_t +totext_nid(ARGS_TOTEXT) { + isc_region_t region; + char buf[sizeof("xxxx:xxxx:xxxx:xxxx")]; + unsigned short num; + + REQUIRE(rdata->type == 104); + REQUIRE(rdata->length != 0); + + UNUSED(tctx); + + dns_rdata_toregion(rdata, ®ion); + num = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + sprintf(buf, "%u", num); + RETERR(str_totext(buf, target)); + + RETERR(str_totext(" ", target)); + + sprintf(buf, "%x:%x:%x:%x", + region.base[0]<<8 | region.base[1], + region.base[2]<<8 | region.base[3], + region.base[4]<<8 | region.base[5], + region.base[6]<<8 | region.base[7]); + return (str_totext(buf, target)); +} + +static inline isc_result_t +fromwire_nid(ARGS_FROMWIRE) { + isc_region_t sregion; + + REQUIRE(type == 104); + + UNUSED(type); + UNUSED(options); + UNUSED(rdclass); + UNUSED(dctx); + + isc_buffer_activeregion(source, &sregion); + if (sregion.length != 10) + return (DNS_R_FORMERR); + isc_buffer_forward(source, sregion.length); + return (mem_tobuffer(target, sregion.base, sregion.length)); +} + +static inline isc_result_t +towire_nid(ARGS_TOWIRE) { + + REQUIRE(rdata->type == 104); + REQUIRE(rdata->length == 10); + + UNUSED(cctx); + + return (mem_tobuffer(target, rdata->data, rdata->length)); +} + +static inline int +compare_nid(ARGS_COMPARE) { + isc_region_t region1; + isc_region_t region2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 104); + REQUIRE(rdata1->length == 10); + REQUIRE(rdata2->length == 10); + + dns_rdata_toregion(rdata1, ®ion1); + dns_rdata_toregion(rdata2, ®ion2); + return (isc_region_compare(®ion1, ®ion2)); +} + +static inline isc_result_t +fromstruct_nid(ARGS_FROMSTRUCT) { + dns_rdata_nid_t *nid = source; + + REQUIRE(type == 104); + REQUIRE(source != NULL); + REQUIRE(nid->common.rdtype == type); + REQUIRE(nid->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + RETERR(uint16_tobuffer(nid->pref, target)); + return (mem_tobuffer(target, nid->nid, sizeof(nid->nid))); +} + +static inline isc_result_t +tostruct_nid(ARGS_TOSTRUCT) { + isc_region_t region; + dns_rdata_nid_t *nid = target; + + REQUIRE(rdata->type == 104); + REQUIRE(target != NULL); + REQUIRE(rdata->length == 10); + + UNUSED(mctx); + + nid->common.rdclass = rdata->rdclass; + nid->common.rdtype = rdata->type; + ISC_LINK_INIT(&nid->common, link); + + dns_rdata_toregion(rdata, ®ion); + nid->pref = uint16_fromregion(®ion); + memcpy(nid->nid, region.base, region.length); + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_nid(ARGS_FREESTRUCT) { + dns_rdata_nid_t *nid = source; + + REQUIRE(source != NULL); + REQUIRE(nid->common.rdtype == 104); + + return; +} + +static inline isc_result_t +additionaldata_nid(ARGS_ADDLDATA) { + + REQUIRE(rdata->type == 104); + REQUIRE(rdata->length == 10); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_nid(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 104); + REQUIRE(rdata->length == 10); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_nid(ARGS_CHECKOWNER) { + + REQUIRE(type == 104); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_nid(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 104); + REQUIRE(rdata->length == 10); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_nid(ARGS_COMPARE) { + return (compare_nid(rdata1, rdata2)); +} + +#endif /* RDATA_GENERIC_NID_104_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/nid_104.h b/contrib/bind9/lib/dns/rdata/generic/nid_104.h new file mode 100644 index 0000000..64a3ba4 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/nid_104.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_NID_104_H +#define GENERIC_NID_104_H 1 + +typedef struct dns_rdata_nid { + dns_rdatacommon_t common; + isc_uint16_t pref; + unsigned char nid[8]; +} dns_rdata_nid_t; + +#endif /* GENERIC_NID_104_H */ diff --git a/contrib/bind9/lib/dns/rdata/generic/sshfp_44.c b/contrib/bind9/lib/dns/rdata/generic/sshfp_44.c index c94c75c..03d5127 100644 --- a/contrib/bind9/lib/dns/rdata/generic/sshfp_44.c +++ b/contrib/bind9/lib/dns/rdata/generic/sshfp_44.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006, 2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -53,7 +53,6 @@ fromtext_sshfp(ARGS_FROMTEXT) { if (token.value.as_ulong > 0xffU) RETTOK(ISC_R_RANGE); RETERR(uint8_tobuffer(token.value.as_ulong, target)); - type = (isc_uint16_t) token.value.as_ulong; /* * Digest. diff --git a/contrib/bind9/lib/dns/rdata/generic/txt_16.c b/contrib/bind9/lib/dns/rdata/generic/txt_16.c index c49864e..e1bce6a 100644 --- a/contrib/bind9/lib/dns/rdata/generic/txt_16.c +++ b/contrib/bind9/lib/dns/rdata/generic/txt_16.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007-2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -38,6 +38,13 @@ fromtext_txt(ARGS_FROMTEXT) { UNUSED(callbacks); strings = 0; + if ((options & DNS_RDATA_UNKNOWNESCAPE) != 0) { + isc_textregion_t r; + DE_CONST("#", r.base); + r.length = 1; + RETERR(txt_fromtext(&r, target)); + strings++; + } for (;;) { RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_qstring, diff --git a/contrib/bind9/lib/dns/rdata/generic/uri_256.c b/contrib/bind9/lib/dns/rdata/generic/uri_256.c new file mode 100644 index 0000000..aa5b194 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/uri_256.c @@ -0,0 +1,331 @@ +/* + * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: uri_256.c,v 1.2 2011/03/03 14:10:27 fdupont Exp $ */ + +#ifndef GENERIC_URI_256_C +#define GENERIC_URI_256_C 1 + +#define RRTYPE_URI_ATTRIBUTES (0) + +static inline isc_result_t +fromtext_uri(ARGS_FROMTEXT) { + isc_token_t token; + + REQUIRE(type == 256); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + /* + * Priority + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffffU) + RETTOK(ISC_R_RANGE); + RETERR(uint16_tobuffer(token.value.as_ulong, target)); + + /* + * Weight + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffffU) + RETTOK(ISC_R_RANGE); + RETERR(uint16_tobuffer(token.value.as_ulong, target)); + + /* + * Target URI + */ + RETERR(isc_lex_getmastertoken(lexer, &token, + isc_tokentype_qstring, ISC_FALSE)); + if (token.type != isc_tokentype_qstring) + RETTOK(DNS_R_SYNTAX); + RETTOK(multitxt_fromtext(&token.value.as_textregion, target)); + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +totext_uri(ARGS_TOTEXT) { + isc_region_t region; + unsigned short priority, weight; + char buf[sizeof("65000 ")]; + + UNUSED(tctx); + + REQUIRE(rdata->type == 256); + REQUIRE(rdata->length != 0); + + dns_rdata_toregion(rdata, ®ion); + + /* + * Priority + */ + priority = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + sprintf(buf, "%u ", priority); + RETERR(str_totext(buf, target)); + + /* + * Weight + */ + weight = uint16_fromregion(®ion); + isc_region_consume(®ion, 2); + sprintf(buf, "%u ", weight); + RETERR(str_totext(buf, target)); + + /* + * Target URI + */ + RETERR(multitxt_totext(®ion, target)); + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +fromwire_uri(ARGS_FROMWIRE) { + isc_region_t region; + + REQUIRE(type == 256); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(dctx); + UNUSED(options); + + /* + * Priority, weight + */ + isc_buffer_activeregion(source, ®ion); + if (region.length < 4) + return (ISC_R_UNEXPECTEDEND); + RETERR(mem_tobuffer(target, region.base, 4)); + isc_buffer_forward(source, 4); + + /* + * Target URI + */ + RETERR(multitxt_fromwire(source, target)); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +towire_uri(ARGS_TOWIRE) { + isc_region_t region; + + REQUIRE(rdata->type == 256); + REQUIRE(rdata->length != 0); + + UNUSED(cctx); + + dns_rdata_toregion(rdata, ®ion); + return (mem_tobuffer(target, region.base, region.length)); +} + +static inline int +compare_uri(ARGS_COMPARE) { + isc_region_t r1; + isc_region_t r2; + int order; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 256); + REQUIRE(rdata1->length != 0); + REQUIRE(rdata2->length != 0); + + dns_rdata_toregion(rdata1, &r1); + dns_rdata_toregion(rdata2, &r2); + + /* + * Priority + */ + order = memcmp(r1.base, r2.base, 2); + if (order != 0) + return (order < 0 ? -1 : 1); + isc_region_consume(&r1, 2); + isc_region_consume(&r2, 2); + + /* + * Weight + */ + order = memcmp(r1.base, r2.base, 2); + if (order != 0) + return (order < 0 ? -1 : 1); + isc_region_consume(&r1, 2); + isc_region_consume(&r2, 2); + + return (isc_region_compare(&r1, &r2)); +} + +static inline isc_result_t +fromstruct_uri(ARGS_FROMSTRUCT) { + dns_rdata_uri_t *uri = source; + isc_region_t region; + isc_uint8_t len; + + REQUIRE(type == 256); + REQUIRE(source != NULL); + REQUIRE(uri->common.rdtype == type); + REQUIRE(uri->common.rdclass == rdclass); + REQUIRE(uri->target != NULL && uri->tgt_len != 0); + + UNUSED(type); + UNUSED(rdclass); + + /* + * Priority + */ + RETERR(uint16_tobuffer(uri->priority, target)); + + /* + * Weight + */ + RETERR(uint16_tobuffer(uri->weight, target)); + + /* + * Target URI + */ + len = 255U; + region.base = uri->target; + region.length = uri->tgt_len; + while (region.length > 0) { + REQUIRE(len == 255U); + len = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + if (region.length < len) + return (ISC_R_UNEXPECTEDEND); + isc_region_consume(®ion, len); + } + + return (mem_tobuffer(target, uri->target, uri->tgt_len)); +} + +static inline isc_result_t +tostruct_uri(ARGS_TOSTRUCT) { + dns_rdata_uri_t *uri = target; + isc_region_t sr; + + REQUIRE(rdata->type == 256); + REQUIRE(target != NULL); + REQUIRE(rdata->length != 0); + + uri->common.rdclass = rdata->rdclass; + uri->common.rdtype = rdata->type; + ISC_LINK_INIT(&uri->common, link); + + dns_rdata_toregion(rdata, &sr); + + /* + * Priority + */ + if (sr.length < 2) + return (ISC_R_UNEXPECTEDEND); + uri->priority = uint16_fromregion(&sr); + isc_region_consume(&sr, 2); + + /* + * Weight + */ + if (sr.length < 2) + return (ISC_R_UNEXPECTEDEND); + uri->weight = uint16_fromregion(&sr); + isc_region_consume(&sr, 2); + + /* + * Target URI + */ + uri->tgt_len = sr.length; + uri->target = mem_maybedup(mctx, sr.base, sr.length); + if (uri->target == NULL) + return (ISC_R_NOMEMORY); + + uri->mctx = mctx; + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_uri(ARGS_FREESTRUCT) { + dns_rdata_uri_t *uri = (dns_rdata_uri_t *) source; + + REQUIRE(source != NULL); + REQUIRE(uri->common.rdtype == 256); + + if (uri->mctx == NULL) + return; + + if (uri->target != NULL) + isc_mem_free(uri->mctx, uri->target); + uri->mctx = NULL; +} + +static inline isc_result_t +additionaldata_uri(ARGS_ADDLDATA) { + REQUIRE(rdata->type == 256); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_uri(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 256); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_uri(ARGS_CHECKOWNER) { + + REQUIRE(type == 256); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_uri(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 256); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_uri(ARGS_COMPARE) { + return (compare_uri(rdata1, rdata2)); +} + +#endif /* GENERIC_URI_256_C */ diff --git a/contrib/bind9/lib/dns/rdata/generic/uri_256.h b/contrib/bind9/lib/dns/rdata/generic/uri_256.h new file mode 100644 index 0000000..5061c03 --- /dev/null +++ b/contrib/bind9/lib/dns/rdata/generic/uri_256.h @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef GENERIC_URI_256_H +#define GENERIC_URI_256_H 1 + +/* $Id: uri_256.h,v 1.2 2011/03/03 14:10:27 fdupont Exp $ */ + +typedef struct dns_rdata_uri { + dns_rdatacommon_t common; + isc_mem_t * mctx; + isc_uint16_t priority; + isc_uint16_t weight; + unsigned char * target; + isc_uint16_t tgt_len; +} dns_rdata_uri_t; + +#endif /* GENERIC_URI_256_H */ diff --git a/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c b/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c index 71ba31e..e5df80b 100644 --- a/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c +++ b/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -25,9 +25,8 @@ #define RDATA_IN_1_NAPTR_35_C #define RRTYPE_NAPTR_ATTRIBUTES (0) -#ifdef HAVE_REGEX_H -#include <regex.h> -#endif + +#include <isc/regex.h> /* * Check the wire format of the Regexp field. @@ -35,18 +34,15 @@ */ static inline isc_result_t txt_valid_regex(const unsigned char *txt) { -#ifdef HAVE_REGEX_H - regex_t preg; - unsigned int regflags = REG_EXTENDED; unsigned int nsub = 0; char regex[256]; char *cp; -#endif isc_boolean_t flags = ISC_FALSE; isc_boolean_t replace = ISC_FALSE; unsigned char c; unsigned char delim; unsigned int len; + int n; len = *txt++; if (len == 0U) @@ -65,11 +61,7 @@ txt_valid_regex(const unsigned char *txt) { return (DNS_R_SYNTAX); } -#ifdef HAVE_REGEX_H - memset(&preg, 0, sizeof(preg)); cp = regex; -#endif - while (len-- > 0) { c = *txt++; if (c == 0) @@ -88,18 +80,13 @@ txt_valid_regex(const unsigned char *txt) { if (flags) { switch (c) { case 'i': -#ifdef HAVE_REGEX_H - regflags |= REG_ICASE; -#endif continue; default: return (DNS_R_SYNTAX); } } -#ifdef HAVE_REGEX_H if (!replace) *cp++ = c; -#endif if (c == '\\') { if (len == 0) return (DNS_R_SYNTAX); @@ -110,7 +97,6 @@ txt_valid_regex(const unsigned char *txt) { if (replace) switch (c) { case '0': return (DNS_R_SYNTAX); -#ifdef HAVE_REGEX_H case '1': if (nsub < 1) nsub = 1; break; case '2': if (nsub < 2) nsub = 2; break; case '3': if (nsub < 3) nsub = 3; break; @@ -120,30 +106,17 @@ txt_valid_regex(const unsigned char *txt) { case '7': if (nsub < 7) nsub = 7; break; case '8': if (nsub < 8) nsub = 8; break; case '9': if (nsub < 9) nsub = 9; break; -#endif } -#ifdef HAVE_REGEX_H if (!replace) *cp++ = c; -#endif } } if (!flags) return (DNS_R_SYNTAX); -#ifdef HAVE_REGEX_H *cp = '\0'; - if (regcomp(&preg, regex, regflags)) - return (DNS_R_SYNTAX); - /* - * Check that substitutions in the replacement string are consistant - * with the regular expression. - */ - if (preg.re_nsub < nsub) { - regfree(&preg); + n = isc_regex_validate(regex); + if (n < 0 || nsub > (unsigned int)n) return (DNS_R_SYNTAX); - } - regfree(&preg); -#endif return (ISC_R_SUCCESS); } diff --git a/contrib/bind9/lib/dns/rdata/in_1/nsap_22.c b/contrib/bind9/lib/dns/rdata/in_1/nsap_22.c index d762fe1..66129fe 100644 --- a/contrib/bind9/lib/dns/rdata/in_1/nsap_22.c +++ b/contrib/bind9/lib/dns/rdata/in_1/nsap_22.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -53,7 +53,6 @@ fromtext_in_nsap(ARGS_FROMTEXT) { RETTOK(DNS_R_SYNTAX); isc_textregion_consume(sr, 2); digits = 0; - n = 0; while (sr->length > 0) { if (sr->base[0] == '.') { isc_textregion_consume(sr, 1); diff --git a/contrib/bind9/lib/dns/request.c b/contrib/bind9/lib/dns/request.c index 58c0103..1316e69 100644 --- a/contrib/bind9/lib/dns/request.c +++ b/contrib/bind9/lib/dns/request.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -894,13 +894,15 @@ dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message, REQUIRE(action != NULL); REQUIRE(requestp != NULL && *requestp == NULL); REQUIRE(timeout > 0); - if (srcaddr != NULL) - REQUIRE(isc_sockaddr_pf(srcaddr) == isc_sockaddr_pf(destaddr)); mctx = requestmgr->mctx; req_log(ISC_LOG_DEBUG(3), "dns_request_createvia"); + if (srcaddr != NULL && + isc_sockaddr_pf(srcaddr) != isc_sockaddr_pf(destaddr)) + return (ISC_R_FAMILYMISMATCH); + if (isblackholed(requestmgr->dispatchmgr, destaddr)) return (DNS_R_BLACKHOLED); diff --git a/contrib/bind9/lib/dns/resolver.c b/contrib/bind9/lib/dns/resolver.c index 503f1d2..e21d97e 100644 --- a/contrib/bind9/lib/dns/resolver.c +++ b/contrib/bind9/lib/dns/resolver.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -21,6 +21,7 @@ #include <config.h> +#include <isc/log.h> #include <isc/platform.h> #include <isc/print.h> #include <isc/string.h> @@ -42,6 +43,8 @@ #include <dns/log.h> #include <dns/message.h> #include <dns/ncache.h> +#include <dns/nsec.h> +#include <dns/nsec3.h> #include <dns/opcode.h> #include <dns/peer.h> #include <dns/rbt.h> @@ -75,7 +78,7 @@ DNS_LOGCATEGORY_RESOLVER, \ DNS_LOGMODULE_RESOLVER, \ ISC_LOG_DEBUG(3), \ - "fctx %p(%s'): %s", fctx, fctx->info, (m)) + "fctx %p(%s): %s", fctx, fctx->info, (m)) #define FCTXTRACE2(m1, m2) \ isc_log_write(dns_lctx, \ DNS_LOGCATEGORY_RESOLVER, \ @@ -130,6 +133,7 @@ * Maximum EDNS0 input packet size. */ #define RECV_BUFFER_SIZE 4096 /* XXXRTH Constant. */ +#define EDNSOPTS 2 /*% * This defines the maximum number of timeouts we will permit before we @@ -468,12 +472,16 @@ static isc_result_t ncache_adderesult(dns_message_t *message, dns_rdatatype_t covers, isc_stdtime_t now, dns_ttl_t maxttl, isc_boolean_t optout, + isc_boolean_t secure, dns_rdataset_t *ardataset, isc_result_t *eresultp); static void validated(isc_task_t *task, isc_event_t *event); static isc_boolean_t maybe_destroy(fetchctx_t *fctx, isc_boolean_t locked); static void add_bad(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo, isc_result_t reason, badnstype_t badtype); +static inline isc_result_t findnoqname(fetchctx_t *fctx, dns_name_t *name, + dns_rdatatype_t type, + dns_name_t **noqname); /*% * Increment resolver-related statistics counters. @@ -1270,67 +1278,15 @@ resquery_senddone(isc_task_t *task, isc_event_t *event) { static inline isc_result_t fctx_addopt(dns_message_t *message, unsigned int version, - isc_uint16_t udpsize, isc_boolean_t request_nsid) + isc_uint16_t udpsize, dns_ednsopt_t *ednsopts, size_t count) { - dns_rdataset_t *rdataset; - dns_rdatalist_t *rdatalist; - dns_rdata_t *rdata; + dns_rdataset_t *rdataset = NULL; isc_result_t result; - rdatalist = NULL; - result = dns_message_gettemprdatalist(message, &rdatalist); - if (result != ISC_R_SUCCESS) - return (result); - rdata = NULL; - result = dns_message_gettemprdata(message, &rdata); - if (result != ISC_R_SUCCESS) - return (result); - rdataset = NULL; - result = dns_message_gettemprdataset(message, &rdataset); + result = dns_message_buildopt(message, &rdataset, version, udpsize, + DNS_MESSAGEEXTFLAG_DO, ednsopts, count); if (result != ISC_R_SUCCESS) return (result); - dns_rdataset_init(rdataset); - - rdatalist->type = dns_rdatatype_opt; - rdatalist->covers = 0; - - /* - * Set Maximum UDP buffer size. - */ - rdatalist->rdclass = udpsize; - - /* - * Set EXTENDED-RCODE and Z to 0, DO to 1. - */ - rdatalist->ttl = (version << 16); - rdatalist->ttl |= DNS_MESSAGEEXTFLAG_DO; - - /* - * Set EDNS options if applicable - */ - if (request_nsid) { - /* Send empty NSID option (RFC5001) */ - unsigned char data[4]; - isc_buffer_t buf; - - isc_buffer_init(&buf, data, sizeof(data)); - isc_buffer_putuint16(&buf, DNS_OPT_NSID); - isc_buffer_putuint16(&buf, 0); - rdata->data = data; - rdata->length = sizeof(data); - } else { - rdata->data = NULL; - rdata->length = 0; - } - - rdata->rdclass = rdatalist->rdclass; - rdata->type = rdatalist->type; - rdata->flags = 0; - - ISC_LIST_INIT(rdatalist->rdata); - ISC_LIST_APPEND(rdatalist->rdata, rdata, link); - RUNTIME_CHECK(dns_rdatalist_tordataset(rdatalist, rdataset) == ISC_R_SUCCESS); - return (dns_message_setopt(message, rdataset)); } @@ -1710,6 +1666,8 @@ resquery_send(resquery_t *query) { isc_boolean_t cleanup_cctx = ISC_FALSE; isc_boolean_t secure_domain; isc_boolean_t connecting = ISC_FALSE; + dns_ednsopt_t ednsopts[EDNSOPTS]; + unsigned ednsopt = 0; fctx = query->fctx; QTRACE("send"); @@ -1892,8 +1850,15 @@ resquery_send(resquery_t *query) { /* request NSID for current view or peer? */ if (peer != NULL) (void) dns_peer_getrequestnsid(peer, &reqnsid); + if (reqnsid) { + INSIST(ednsopt < EDNSOPTS); + ednsopts[ednsopt].code = DNS_OPT_NSID; + ednsopts[ednsopt].length = 0; + ednsopts[ednsopt].value = NULL; + ednsopt++; + } result = fctx_addopt(fctx->qmessage, version, - udpsize, reqnsid); + udpsize, ednsopts, ednsopt); if (reqnsid && result == ISC_R_SUCCESS) { query->options |= DNS_FETCHOPT_WANTNSID; } else if (result != ISC_R_SUCCESS) { @@ -2478,7 +2443,7 @@ findname(fetchctx_t *fctx, dns_name_t *name, in_port_t port, isc_result_t result; res = fctx->res; - unshared = ISC_TF((fctx->options | DNS_FETCHOPT_UNSHARED) != 0); + unshared = ISC_TF((fctx->options & DNS_FETCHOPT_UNSHARED) != 0); /* * If this name is a subdomain of the query domain, tell * the ADB to start looking using zone/hint data. This keeps us @@ -4227,7 +4192,7 @@ validated(isc_task_t *task, isc_event_t *event) { result = ncache_adderesult(fctx->rmessage, fctx->cache, node, covers, now, ttl, vevent->optout, - ardataset, &eresult); + vevent->secure, ardataset, &eresult); if (result != ISC_R_SUCCESS) goto noanswer_response; goto answer_response; @@ -4237,7 +4202,6 @@ validated(isc_task_t *task, isc_event_t *event) { FCTXTRACE("validation OK"); if (vevent->proofs[DNS_VALIDATOR_NOQNAMEPROOF] != NULL) { - result = dns_rdataset_addnoqname(vevent->rdataset, vevent->proofs[DNS_VALIDATOR_NOQNAMEPROOF]); RUNTIME_CHECK(result == ISC_R_SUCCESS); @@ -4248,6 +4212,18 @@ validated(isc_task_t *task, isc_event_t *event) { vevent->proofs[DNS_VALIDATOR_CLOSESTENCLOSER]); RUNTIME_CHECK(result == ISC_R_SUCCESS); } + } else if (vevent->rdataset->trust == dns_trust_answer && + vevent->rdataset->type != dns_rdatatype_rrsig) + { + isc_result_t tresult; + dns_name_t *noqname = NULL; + tresult = findnoqname(fctx, vevent->name, + vevent->rdataset->type, &noqname); + if (tresult == ISC_R_SUCCESS && noqname != NULL) { + tresult = dns_rdataset_addnoqname(vevent->rdataset, + noqname); + RUNTIME_CHECK(tresult == ISC_R_SUCCESS); + } } /* @@ -4367,6 +4343,14 @@ validated(isc_task_t *task, isc_event_t *event) { fctx->attributes |= FCTX_ATTR_HAVEANSWER; if (hevent != NULL) { + /* + * Negative results must be indicated in event->result. + */ + if (dns_rdataset_isassociated(hevent->rdataset) && + NEGATIVE(hevent->rdataset)) { + INSIST(eresult == DNS_R_NCACHENXDOMAIN || + eresult == DNS_R_NCACHENXRRSET); + } hevent->result = eresult; RUNTIME_CHECK(dns_name_copy(vevent->name, dns_fixedname_name(&hevent->foundname), NULL) @@ -4388,6 +4372,149 @@ validated(isc_task_t *task, isc_event_t *event) { isc_event_free(&event); } +static void +fctx_log(void *arg, int level, const char *fmt, ...) { + char msgbuf[2048]; + va_list args; + fetchctx_t *fctx = arg; + + va_start(args, fmt); + vsnprintf(msgbuf, sizeof(msgbuf), fmt, args); + va_end(args); + + isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, + DNS_LOGMODULE_RESOLVER, level, + "fctx %p(%s): %s", fctx, fctx->info, msgbuf); +} + +static inline isc_result_t +findnoqname(fetchctx_t *fctx, dns_name_t *name, dns_rdatatype_t type, + dns_name_t **noqnamep) +{ + dns_rdataset_t *nrdataset, *next, *sigrdataset; + dns_rdata_rrsig_t rrsig; + isc_result_t result; + unsigned int labels; + dns_section_t section; + dns_name_t *zonename; + dns_fixedname_t fzonename; + dns_name_t *closest; + dns_fixedname_t fclosest; + dns_name_t *nearest; + dns_fixedname_t fnearest; + dns_rdatatype_t found = dns_rdatatype_none; + dns_name_t *noqname = NULL; + + FCTXTRACE("findnoqname"); + + REQUIRE(noqnamep != NULL && *noqnamep == NULL); + + /* + * Find the SIG for this rdataset, if we have it. + */ + for (sigrdataset = ISC_LIST_HEAD(name->list); + sigrdataset != NULL; + sigrdataset = ISC_LIST_NEXT(sigrdataset, link)) { + if (sigrdataset->type == dns_rdatatype_rrsig && + sigrdataset->covers == type) + break; + } + + if (sigrdataset == NULL) + return (ISC_R_NOTFOUND); + + labels = dns_name_countlabels(name); + + for (result = dns_rdataset_first(sigrdataset); + result == ISC_R_SUCCESS; + result = dns_rdataset_next(sigrdataset)) { + dns_rdata_t rdata = DNS_RDATA_INIT; + dns_rdataset_current(sigrdataset, &rdata); + result = dns_rdata_tostruct(&rdata, &rrsig, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + /* Wildcard has rrsig.labels < labels - 1. */ + if (rrsig.labels + 1U >= labels) + continue; + break; + } + + if (result == ISC_R_NOMORE) + return (ISC_R_NOTFOUND); + if (result != ISC_R_SUCCESS) + return (result); + + dns_fixedname_init(&fzonename); + zonename = dns_fixedname_name(&fzonename); + dns_fixedname_init(&fclosest); + closest = dns_fixedname_name(&fclosest); + dns_fixedname_init(&fnearest); + nearest = dns_fixedname_name(&fnearest); + +#define NXND(x) ((x) == ISC_R_SUCCESS) + + section = DNS_SECTION_AUTHORITY; + for (result = dns_message_firstname(fctx->rmessage, section); + result == ISC_R_SUCCESS; + result = dns_message_nextname(fctx->rmessage, section)) { + dns_name_t *nsec = NULL; + dns_message_currentname(fctx->rmessage, section, &nsec); + for (nrdataset = ISC_LIST_HEAD(nsec->list); + nrdataset != NULL; nrdataset = next) { + isc_boolean_t data = ISC_FALSE, exists = ISC_FALSE; + isc_boolean_t optout = ISC_FALSE, unknown = ISC_FALSE; + isc_boolean_t setclosest = ISC_FALSE; + isc_boolean_t setnearest = ISC_FALSE; + + next = ISC_LIST_NEXT(nrdataset, link); + if (nrdataset->type != dns_rdatatype_nsec && + nrdataset->type != dns_rdatatype_nsec3) + continue; + + if (nrdataset->type == dns_rdatatype_nsec && + NXND(dns_nsec_noexistnodata(type, name, nsec, + nrdataset, &exists, + &data, NULL, fctx_log, + fctx))) + { + if (!exists) { + noqname = nsec; + found = dns_rdatatype_nsec; + } + } + + if (nrdataset->type == dns_rdatatype_nsec3 && + NXND(dns_nsec3_noexistnodata(type, name, nsec, + nrdataset, zonename, + &exists, &data, + &optout, &unknown, + &setclosest, + &setnearest, + closest, nearest, + fctx_log, fctx))) + { + if (!exists && setnearest) { + noqname = nsec; + found = dns_rdatatype_nsec3; + } + } + } + } + if (result == ISC_R_NOMORE) + result = ISC_R_SUCCESS; + if (noqname != NULL) { + for (sigrdataset = ISC_LIST_HEAD(noqname->list); + sigrdataset != NULL; + sigrdataset = ISC_LIST_NEXT(sigrdataset, link)) { + if (sigrdataset->type == dns_rdatatype_rrsig && + sigrdataset->covers == found) + break; + } + if (sigrdataset != NULL) + *noqnamep = noqname; + } + return (result); +} + static inline isc_result_t cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, isc_stdtime_t now) @@ -4521,6 +4648,17 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, rdataset->ttl = res->view->maxcachettl; /* + * Find the SIG for this rdataset, if we have it. + */ + for (sigrdataset = ISC_LIST_HEAD(name->list); + sigrdataset != NULL; + sigrdataset = ISC_LIST_NEXT(sigrdataset, link)) { + if (sigrdataset->type == dns_rdatatype_rrsig && + sigrdataset->covers == rdataset->type) + break; + } + + /* * If this RRset is in a secure domain, is in bailiwick, * and is not glue, attempt DNSSEC validation. (We do not * attempt to validate glue or out-of-bailiwick data--even @@ -4540,16 +4678,7 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, */ if (rdataset->type == dns_rdatatype_rrsig) continue; - /* - * Find the SIG for this rdataset, if we have it. - */ - for (sigrdataset = ISC_LIST_HEAD(name->list); - sigrdataset != NULL; - sigrdataset = ISC_LIST_NEXT(sigrdataset, link)) { - if (sigrdataset->type == dns_rdatatype_rrsig && - sigrdataset->covers == rdataset->type) - break; - } + if (sigrdataset == NULL) { if (!ANSWER(rdataset) && need_validation) { /* @@ -4583,6 +4712,22 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, if (sigrdataset != NULL) sigrdataset->trust = trust; if (!need_validation || !ANSWER(rdataset)) { + if (ANSWER(rdataset) && + rdataset->type != dns_rdatatype_rrsig) { + isc_result_t tresult; + dns_name_t *noqname = NULL; + tresult = findnoqname(fctx, name, + rdataset->type, + &noqname); + if (tresult == ISC_R_SUCCESS && + noqname != NULL) { + tresult = + dns_rdataset_addnoqname( + rdataset, noqname); + RUNTIME_CHECK(tresult == + ISC_R_SUCCESS); + } + } addedrdataset = ardataset; result = dns_db_addrdataset(fctx->cache, node, NULL, now, rdataset, @@ -4710,6 +4855,21 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, options = DNS_DBADD_FORCE; } else options = 0; + + if (ANSWER(rdataset) && + rdataset->type != dns_rdatatype_rrsig) { + isc_result_t tresult; + dns_name_t *noqname = NULL; + tresult = findnoqname(fctx, name, + rdataset->type, &noqname); + if (tresult == ISC_R_SUCCESS && + noqname != NULL) { + tresult = dns_rdataset_addnoqname( + rdataset, noqname); + RUNTIME_CHECK(tresult == ISC_R_SUCCESS); + } + } + /* * Now we can add the rdataset. */ @@ -4718,6 +4878,7 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo, rdataset, options, addedrdataset); + if (result == DNS_R_UNCHANGED) { if (ANSWER(rdataset) && ardataset != NULL && @@ -4813,8 +4974,8 @@ cache_message(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo, isc_stdtime_t now) static isc_result_t ncache_adderesult(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, dns_rdatatype_t covers, isc_stdtime_t now, dns_ttl_t maxttl, - isc_boolean_t optout, dns_rdataset_t *ardataset, - isc_result_t *eresultp) + isc_boolean_t optout, isc_boolean_t secure, + dns_rdataset_t *ardataset, isc_result_t *eresultp) { isc_result_t result; dns_rdataset_t rdataset; @@ -4823,8 +4984,12 @@ ncache_adderesult(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, dns_rdataset_init(&rdataset); ardataset = &rdataset; } - result = dns_ncache_addoptout(message, cache, node, covers, now, - maxttl, optout, ardataset); + if (secure) + result = dns_ncache_addoptout(message, cache, node, covers, + now, maxttl, optout, ardataset); + else + result = dns_ncache_add(message, cache, node, covers, now, + maxttl, ardataset); if (result == DNS_R_UNCHANGED || result == ISC_R_SUCCESS) { /* * If the cache now contains a negative entry and we @@ -4991,7 +5156,7 @@ ncache_message(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo, result = ncache_adderesult(fctx->rmessage, fctx->cache, node, covers, now, ttl, ISC_FALSE, - ardataset, &eresult); + ISC_FALSE, ardataset, &eresult); if (result != ISC_R_SUCCESS) goto unlock; @@ -5387,10 +5552,10 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname, { isc_result_t result; dns_message_t *message; - dns_name_t *name, *qname, *ns_name, *soa_name, *ds_name; + dns_name_t *name, *qname, *ns_name, *soa_name, *ds_name, *save_name; dns_rdataset_t *rdataset, *ns_rdataset; isc_boolean_t aa, negative_response; - dns_rdatatype_t type; + dns_rdatatype_t type, save_type; dns_section_t section; FCTXTRACE("noanswer_response"); @@ -5457,6 +5622,8 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname, ns_rdataset = NULL; soa_name = NULL; ds_name = NULL; + save_name = NULL; + save_type = dns_rdatatype_none; result = dns_message_firstname(message, section); while (result == ISC_R_SUCCESS) { name = NULL; @@ -5655,6 +5822,9 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname, dns_trust_additional; } } + } else { + save_name = name; + save_type = ISC_LIST_HEAD(name->list)->type; } result = dns_message_nextname(message, section); if (result == ISC_R_NOMORE) @@ -5690,7 +5860,27 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname, /* * The responder is insane. */ - log_formerr(fctx, "invalid response"); + if (save_name == NULL) { + log_formerr(fctx, "invalid response"); + return (DNS_R_FORMERR); + } + if (!dns_name_issubdomain(save_name, &fctx->domain)) { + char nbuf[DNS_NAME_FORMATSIZE]; + char dbuf[DNS_NAME_FORMATSIZE]; + char tbuf[DNS_RDATATYPE_FORMATSIZE]; + + dns_rdatatype_format(save_type, tbuf, + sizeof(tbuf)); + dns_name_format(save_name, nbuf, sizeof(nbuf)); + dns_name_format(&fctx->domain, dbuf, + sizeof(dbuf)); + + log_formerr(fctx, "Name %s (%s) not subdomain" + " of zone %s -- invalid response", + nbuf, tbuf, dbuf); + } else { + log_formerr(fctx, "invalid response"); + } return (DNS_R_FORMERR); } } @@ -5899,12 +6089,12 @@ answer_response(fetchctx_t *fctx) { * but we found a CNAME. * * Getting a CNAME response for some - * query types is an error. + * query types is an error, see + * RFC 4035, Section 2.5. */ if (type == dns_rdatatype_rrsig || - type == dns_rdatatype_dnskey || - type == dns_rdatatype_nsec || - type == dns_rdatatype_nsec3) { + type == dns_rdatatype_key || + type == dns_rdatatype_nsec) { char buf[DNS_RDATATYPE_FORMATSIZE]; dns_rdatatype_format(fctx->type, buf, sizeof(buf)); @@ -6449,44 +6639,24 @@ checknames(dns_message_t *message) { /* * Log server NSID at log level 'level' */ -static isc_result_t -log_nsid(dns_rdataset_t *opt, resquery_t *query, int level, isc_mem_t *mctx) +static void +log_nsid(isc_buffer_t *opt, size_t nsid_len, resquery_t *query, + int level, isc_mem_t *mctx) { static const char hex[17] = "0123456789abcdef"; char addrbuf[ISC_SOCKADDR_FORMATSIZE]; - isc_uint16_t optcode, nsid_len, buflen, i; - isc_result_t result; - isc_buffer_t nsidbuf; - dns_rdata_t rdata; + isc_uint16_t buflen, i; unsigned char *p, *buf, *nsid; - /* Extract rdata from OPT rdataset */ - result = dns_rdataset_first(opt); - if (result != ISC_R_SUCCESS) - return (ISC_R_FAILURE); - - dns_rdata_init(&rdata); - dns_rdataset_current(opt, &rdata); - if (rdata.length < 4) - return (ISC_R_FAILURE); - - /* Check for NSID */ - isc_buffer_init(&nsidbuf, rdata.data, rdata.length); - isc_buffer_add(&nsidbuf, rdata.length); - optcode = isc_buffer_getuint16(&nsidbuf); - nsid_len = isc_buffer_getuint16(&nsidbuf); - if (optcode != DNS_OPT_NSID || nsid_len == 0) - return (ISC_R_FAILURE); - /* Allocate buffer for storing hex version of the NSID */ buflen = nsid_len * 2 + 1; buf = isc_mem_get(mctx, buflen); if (buf == NULL) - return (ISC_R_NOSPACE); + return; /* Convert to hex */ p = buf; - nsid = rdata.data + 4; + nsid = isc_buffer_current(opt); for (i = 0; i < nsid_len; i++) { *p++ = hex[(nsid[0] >> 4) & 0xf]; *p++ = hex[nsid[0] & 0xf]; @@ -6502,7 +6672,7 @@ log_nsid(dns_rdataset_t *opt, resquery_t *query, int level, isc_mem_t *mctx) /* Clean up */ isc_mem_put(mctx, buf, buflen); - return (ISC_R_SUCCESS); + return; } static void @@ -6576,6 +6746,41 @@ betterreferral(fetchctx_t *fctx) { } static void +process_opt(resquery_t *query, dns_rdataset_t *opt) { + dns_rdata_t rdata; + isc_buffer_t optbuf; + isc_result_t result; + isc_uint16_t optcode; + isc_uint16_t optlen; + + result = dns_rdataset_first(opt); + if (result == ISC_R_SUCCESS) { + dns_rdata_init(&rdata); + dns_rdataset_current(opt, &rdata); + isc_buffer_init(&optbuf, rdata.data, rdata.length); + isc_buffer_add(&optbuf, rdata.length); + while (isc_buffer_remaininglength(&optbuf) >= 4) { + optcode = isc_buffer_getuint16(&optbuf); + optlen = isc_buffer_getuint16(&optbuf); + INSIST(optlen <= isc_buffer_remaininglength(&optbuf)); + switch (optcode) { + case DNS_OPT_NSID: + if (query->options & DNS_FETCHOPT_WANTNSID) + log_nsid(&optbuf, optlen, query, + ISC_LOG_INFO, + query->fctx->res->mctx); + isc_buffer_forward(&optbuf, optlen); + break; + default: + isc_buffer_forward(&optbuf, optlen); + break; + } + } + INSIST(isc_buffer_remaininglength(&optbuf) == 0U); + } +} + +static void resquery_response(isc_task_t *task, isc_event_t *event) { isc_result_t result = ISC_R_SUCCESS; resquery_t *query = event->ev_arg; @@ -6650,13 +6855,7 @@ resquery_response(isc_task_t *task, isc_event_t *event) { */ options |= DNS_FETCHOPT_NOEDNS0; resend = ISC_TRUE; - /* - * Remember that they don't like EDNS0. - */ - dns_adb_changeflags(fctx->adb, - query->addrinfo, - DNS_FETCHOPT_NOEDNS0, - DNS_FETCHOPT_NOEDNS0); + add_bad_edns(fctx, &query->addrinfo->sockaddr); } else { /* * There's no hope for this query. @@ -6723,14 +6922,8 @@ resquery_response(isc_task_t *task, isc_event_t *event) { */ options |= DNS_FETCHOPT_NOEDNS0; resend = ISC_TRUE; - /* - * Remember that they don't like EDNS0. - */ - dns_adb_changeflags( - fctx->adb, - query->addrinfo, - DNS_FETCHOPT_NOEDNS0, - DNS_FETCHOPT_NOEDNS0); + add_bad_edns(fctx, + &query->addrinfo->sockaddr); inc_stats(fctx->res, dns_resstatscounter_edns0fail); } else { @@ -6754,13 +6947,7 @@ resquery_response(isc_task_t *task, isc_event_t *event) { */ options |= DNS_FETCHOPT_NOEDNS0; resend = ISC_TRUE; - /* - * Remember that they don't like EDNS0. - */ - dns_adb_changeflags(fctx->adb, - query->addrinfo, - DNS_FETCHOPT_NOEDNS0, - DNS_FETCHOPT_NOEDNS0); + add_bad_edns(fctx, &query->addrinfo->sockaddr); inc_stats(fctx->res, dns_resstatscounter_edns0fail); } else { @@ -6783,12 +6970,11 @@ resquery_response(isc_task_t *task, isc_event_t *event) { log_packet(message, ISC_LOG_DEBUG(10), fctx->res->mctx); /* - * Did we request NSID? If so, and if the response contains - * NSID data, log it at INFO level. + * Process receive opt record. */ opt = dns_message_getopt(message); - if (opt != NULL && (query->options & DNS_FETCHOPT_WANTNSID) != 0) - log_nsid(opt, query, ISC_LOG_INFO, fctx->res->mctx); + if (opt != NULL) + process_opt(query, opt); /* * If the message is signed, check the signature. If not, this diff --git a/contrib/bind9/lib/dns/result.c b/contrib/bind9/lib/dns/result.c index 0546d0f..3987953 100644 --- a/contrib/bind9/lib/dns/result.c +++ b/contrib/bind9/lib/dns/result.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -160,7 +160,9 @@ static const char *text[DNS_R_NRESULTS] = { "not master", /*%< 105 DNS_R_NOTMASTER */ "broken trust chain", /*%< 106 DNS_R_BROKENCHAIN */ - "expired", /*%< 106 DNS_R_EXPIRED */ + "expired", /*%< 107 DNS_R_EXPIRED */ + "not dynamic", /*%< 108 DNS_R_NOTDYNAMIC */ + "bad EUI" /*%< 109 DNS_R_BADEUI */ }; static const char *rcode_text[DNS_R_NRCODERESULTS] = { @@ -264,6 +266,7 @@ dns_result_torcode(isc_result_t result) { case DNS_R_TOOMANYHOPS: case DNS_R_TSIGERRORSET: case DNS_R_UNKNOWN: + case DNS_R_NAMETOOLONG: rcode = dns_rcode_formerr; break; case DNS_R_DISALLOWED: diff --git a/contrib/bind9/lib/dns/rootns.c b/contrib/bind9/lib/dns/rootns.c index 9b25369..3502022 100644 --- a/contrib/bind9/lib/dns/rootns.c +++ b/contrib/bind9/lib/dns/rootns.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -63,7 +63,8 @@ static char root_ns[] = "A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:BA3E::2:30\n" "B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201\n" "C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12\n" -"D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90\n" +"D.ROOT-SERVERS.NET. 3600000 IN A 199.7.91.13\n" +"D.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2d::d\n" "E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10\n" "F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241\n" "F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2F::F\n" diff --git a/contrib/bind9/lib/dns/rpz.c b/contrib/bind9/lib/dns/rpz.c index 7865859..2d689e7 100644 --- a/contrib/bind9/lib/dns/rpz.c +++ b/contrib/bind9/lib/dns/rpz.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -16,6 +16,7 @@ /* $Id$ */ + /*! \file */ #include <config.h> @@ -123,8 +124,6 @@ struct dns_rpz_cidr { dns_name_t nsdname_name; /* RPZ_NSDNAME_ZONE.origin */ }; -static isc_boolean_t have_rpz_zones = ISC_FALSE; - const char * dns_rpz_type2str(dns_rpz_type_t type) { switch (type) { @@ -191,6 +190,7 @@ dns_rpz_policy2str(dns_rpz_policy_t policy) { break; default: str = ""; + POST(str); INSIST(0); } return (str); @@ -266,21 +266,6 @@ dns_rpz_view_destroy(dns_view_t *view) { } /* - * Note that we have at least one response policy zone. - * It would be better for something to tell the rbtdb code that the - * zone is in at least one view's list of policy zones. - */ -void -dns_rpz_set_need(isc_boolean_t need) { - have_rpz_zones = need; -} - -isc_boolean_t -dns_rpz_needed(void) { - return (have_rpz_zones); -} - -/* * Start a new radix tree for a response policy zone. */ isc_result_t @@ -292,12 +277,6 @@ dns_rpz_new_cidr(isc_mem_t *mctx, dns_name_t *origin, REQUIRE(rbtdb_cidr != NULL && *rbtdb_cidr == NULL); - /* - * Only if there is at least one response policy zone. - */ - if (!have_rpz_zones) - return (ISC_R_SUCCESS); - cidr = isc_mem_get(mctx, sizeof(*cidr)); if (cidr == NULL) return (ISC_R_NOMEMORY); @@ -339,7 +318,7 @@ dns_rpz_new_cidr(isc_mem_t *mctx, dns_name_t *origin, * See if a policy zone has IP, NSIP, or NSDNAME rules or records. */ void -dns_rpz_enabled(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st) { +dns_rpz_enabled_get(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st) { if (cidr == NULL) return; if (cidr->root != NULL && @@ -432,6 +411,9 @@ static void badname(int level, dns_name_t *name, const char *str1, const char *str2) { char printname[DNS_NAME_FORMATSIZE]; + /* + * bin/tests/system/rpz/tests.sh looks for "invalid rpz". + */ if (level < DNS_RPZ_DEBUG_QUIET && isc_log_wouldlog(dns_lctx, level)) { dns_name_format(name, printname, sizeof(printname)); @@ -508,7 +490,7 @@ ip2name(dns_rpz_cidr_t *cidr, const dns_rpz_cidr_key_t *tgt_ip, while (i < DNS_RPZ_CIDR_WORDS * 2 && w[i] == 0) ++i; } - if (len > (int)sizeof(str)) + if (len >= (int)sizeof(str)) return (ISC_R_FAILURE); } } @@ -956,8 +938,7 @@ dns_rpz_cidr_addip(dns_rpz_cidr_t *cidr, dns_name_t *name) { dns_rpz_cidr_bits_t tgt_prefix; dns_rpz_type_t type; - if (cidr == NULL) - return; + REQUIRE(cidr != NULL); /* * No worries if the new name is not an IP address. @@ -985,6 +966,9 @@ dns_rpz_cidr_addip(dns_rpz_cidr_t *cidr, dns_name_t *name) { { char printname[DNS_NAME_FORMATSIZE]; + /* + * bin/tests/system/rpz/tests.sh looks for "rpz.*failed". + */ dns_name_format(name, printname, sizeof(printname)); isc_log_write(dns_lctx, DNS_LOGCATEGORY_RPZ, DNS_LOGMODULE_RBTDB, DNS_RPZ_ERROR_LEVEL, diff --git a/contrib/bind9/lib/dns/sdb.c b/contrib/bind9/lib/dns/sdb.c index 8092c5a..526ce87 100644 --- a/contrib/bind9/lib/dns/sdb.c +++ b/contrib/bind9/lib/dns/sdb.c @@ -382,7 +382,7 @@ dns_sdb_putrr(dns_sdblookup_t *lookup, const char *type, dns_ttl_t ttl, datalen = strlen(data); size = initial_size(datalen); do { - isc_buffer_init(&b, data, datalen); + isc_buffer_constinit(&b, data, datalen); isc_buffer_add(&b, datalen); result = isc_lex_openbuffer(lex, &b); if (result != ISC_R_SUCCESS) @@ -448,7 +448,7 @@ getnode(dns_sdballnodes_t *allnodes, const char *name, dns_sdbnode_t **nodep) { origin = &sdb->common.origin; else origin = dns_rootname; - isc_buffer_init(&b, name, strlen(name)); + isc_buffer_constinit(&b, name, strlen(name)); isc_buffer_add(&b, strlen(name)); result = dns_name_fromtext(newname, &b, origin, 0, NULL); diff --git a/contrib/bind9/lib/dns/sdlz.c b/contrib/bind9/lib/dns/sdlz.c index 870e981..6e518d1 100644 --- a/contrib/bind9/lib/dns/sdlz.c +++ b/contrib/bind9/lib/dns/sdlz.c @@ -1817,7 +1817,7 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl, size = initial_size(data); do { - isc_buffer_init(&b, data, strlen(data)); + isc_buffer_constinit(&b, data, strlen(data)); isc_buffer_add(&b, strlen(data)); result = isc_lex_openbuffer(lex, &b); @@ -1883,7 +1883,7 @@ dns_sdlz_putnamedrr(dns_sdlzallnodes_t *allnodes, const char *name, origin = &sdlz->common.origin; else origin = dns_rootname; - isc_buffer_init(&b, name, strlen(name)); + isc_buffer_constinit(&b, name, strlen(name)); isc_buffer_add(&b, strlen(name)); result = dns_name_fromtext(newname, &b, origin, 0, NULL); diff --git a/contrib/bind9/lib/dns/spnego.c b/contrib/bind9/lib/dns/spnego.c index 0486a72..0c1c858 100644 --- a/contrib/bind9/lib/dns/spnego.c +++ b/contrib/bind9/lib/dns/spnego.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -630,8 +630,10 @@ gss_accept_sec_context_spnego(OM_uint32 *minor_status, sizeof(mechbuf), &init_token.mechTypes.val[i], &mech_len); - if (ret) + if (ret) { + free_NegTokenInit(&init_token); return (GSS_S_DEFECTIVE_TOKEN); + } if (mech_len == GSS_KRB5_MECH->length && memcmp(GSS_KRB5_MECH->elements, mechbuf + sizeof(mechbuf) - mech_len, @@ -650,8 +652,10 @@ gss_accept_sec_context_spnego(OM_uint32 *minor_status, } } - if (!found) + if (!found) { + free_NegTokenInit(&init_token); return (send_reject(minor_status, output_token)); + } if (i == 0 && init_token.mechToken != NULL) { ibuf.length = init_token.mechToken->length; @@ -669,12 +673,14 @@ gss_accept_sec_context_spnego(OM_uint32 *minor_status, time_rec, delegated_cred_handle); if (GSS_ERROR(major_status)) { + free_NegTokenInit(&init_token); send_reject(&minor_status2, output_token); return (major_status); } ot = &obuf; } ret = send_accept(&minor_status2, output_token, ot, pref); + free_NegTokenInit(&init_token); if (ot != NULL && ot->length != 0U) gss_release_buffer(&minor_status2, ot); @@ -846,10 +852,13 @@ der_get_octet_string(const unsigned char *p, size_t len, octet_string *data, size_t *size) { data->length = len; - data->data = malloc(len); - if (data->data == NULL && data->length != 0U) - return (ENOMEM); - memcpy(data->data, p, len); + if (len != 0U) { + data->data = malloc(len); + if (data->data == NULL) + return (ENOMEM); + memcpy(data->data, p, len); + } else + data->data = NULL; if (size) *size = len; return (0); @@ -862,6 +871,8 @@ der_get_oid(const unsigned char *p, size_t len, int n; size_t oldlen = len; + data->components = NULL; + data->length = 0; if (len < 1U) return (ASN1_OVERRUN); @@ -997,6 +1008,9 @@ decode_octet_string(const unsigned char *p, size_t len, int e; size_t slen; + k->data = NULL; + k->length = 0; + e = der_match_tag(p, len, ASN1_C_UNIV, PRIM, UT_OctetString, &l); if (e) return (e); @@ -1547,6 +1561,11 @@ spnego_initial(OM_uint32 *minor_status, buf_size = 1024; buf = malloc(buf_size); + if (buf == NULL) { + *minor_status = ENOMEM; + ret = GSS_S_FAILURE; + goto end; + } do { ret = encode_NegTokenInit(buf + buf_size - 1, @@ -1685,6 +1704,7 @@ spnego_reply(OM_uint32 *minor_status, ret = decode_NegTokenResp(buf + taglen, len, &resp, NULL); if (ret) { + free_NegTokenResp(&resp); *minor_status = ENOMEM; return (GSS_S_FAILURE); } diff --git a/contrib/bind9/lib/dns/spnego_asn1.c b/contrib/bind9/lib/dns/spnego_asn1.c index 75c2304..b506054 100644 --- a/contrib/bind9/lib/dns/spnego_asn1.c +++ b/contrib/bind9/lib/dns/spnego_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006, 2007, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -53,10 +53,10 @@ typedef struct oid { (R) = ENOMEM; \ } else { \ (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \ - (S), (L)); \ + (S), (L)); \ if((R) != 0) { \ - free((B)); \ - (B) = NULL; \ + free((B)); \ + (B) = NULL; \ } \ } \ } while (0) @@ -171,33 +171,31 @@ static void free_NegTokenResp(NegTokenResp *); /* Do not edit */ -#define BACK if (e) return e; p -= l; len -= l; ret += l +#define BACK if (e) return e; p -= l; len -= l; ret += l; POST(p); POST(len); POST(ret) static int encode_MechType(unsigned char *p, size_t len, const MechType * data, size_t * size) { size_t ret = 0; size_t l; - int i, e; + int e; - i = 0; e = encode_oid(p, len, data, &l); BACK; *size = ret; return 0; } -#define FORW if(e) goto fail; p += l; len -= l; ret += l +#define FORW if(e) goto fail; p += l; len -= l; ret += l; POST(p); POST(len); POST(ret) static int decode_MechType(const unsigned char *p, size_t len, MechType * data, size_t * size) { - size_t ret = 0, reallen; + size_t ret = 0; size_t l; int e; memset(data, 0, sizeof(*data)); - reallen = 0; e = decode_oid(p, len, data, &l); FORW; if (size) @@ -223,8 +221,6 @@ free_MechType(MechType * data) /* Do not edit */ -#define BACK if (e) return e; p -= l; len -= l; ret += l - static int encode_MechTypeList(unsigned char *p, size_t len, const MechTypeList * data, size_t * size) { @@ -232,7 +228,6 @@ encode_MechTypeList(unsigned char *p, size_t len, const MechTypeList * data, siz size_t l; int i, e; - i = 0; for (i = (data)->len - 1; i >= 0; --i) { int oldret = ret; ret = 0; @@ -246,8 +241,6 @@ encode_MechTypeList(unsigned char *p, size_t len, const MechTypeList * data, siz return 0; } -#define FORW if(e) goto fail; p += l; len -= l; ret += l - static int decode_MechTypeList(const unsigned char *p, size_t len, MechTypeList * data, size_t * size) { @@ -269,8 +262,14 @@ decode_MechTypeList(const unsigned char *p, size_t len, MechTypeList * data, siz (data)->len = 0; (data)->val = NULL; while (ret < origlen) { + void *old = (data)->val; (data)->len++; (data)->val = realloc((data)->val, sizeof(*((data)->val)) * (data)->len); + if ((data)->val == NULL) { + (data)->val = old; + (data)->len--; + return ENOMEM; + } e = decode_MechType(p, len, &(data)->val[(data)->len - 1], &l); FORW; len = origlen - ret; @@ -305,16 +304,13 @@ free_MechTypeList(MechTypeList * data) /* Do not edit */ -#define BACK if (e) return e; p -= l; len -= l; ret += l - static int encode_ContextFlags(unsigned char *p, size_t len, const ContextFlags * data, size_t * size) { size_t ret = 0; size_t l; - int i, e; + int e; - i = 0; { unsigned char c = 0; *p-- = c; @@ -355,8 +351,6 @@ encode_ContextFlags(unsigned char *p, size_t len, const ContextFlags * data, siz return 0; } -#define FORW if(e) goto fail; p += l; len -= l; ret += l - static int decode_ContextFlags(const unsigned char *p, size_t len, ContextFlags * data, size_t * size) { @@ -381,8 +375,6 @@ decode_ContextFlags(const unsigned char *p, size_t len, ContextFlags * data, siz data->anonFlag = (*p >> 3) & 1; data->confFlag = (*p >> 2) & 1; data->integFlag = (*p >> 1) & 1; - p += reallen; - len -= reallen; ret += reallen; if (size) *size = ret; @@ -418,16 +410,13 @@ free_ContextFlags(ContextFlags * data) /* Do not edit */ -#define BACK if (e) return e; p -= l; len -= l; ret += l - static int encode_NegTokenInit(unsigned char *p, size_t len, const NegTokenInit * data, size_t * size) { size_t ret = 0; size_t l; - int i, e; + int e; - i = 0; if ((data)->mechListMIC) { int oldret = ret; ret = 0; @@ -469,8 +458,6 @@ encode_NegTokenInit(unsigned char *p, size_t len, const NegTokenInit * data, siz return 0; } -#define FORW if(e) goto fail; p += l; len -= l; ret += l - static int decode_NegTokenInit(const unsigned char *p, size_t len, NegTokenInit * data, size_t * size) { @@ -646,16 +633,13 @@ free_NegTokenInit(NegTokenInit * data) /* Do not edit */ -#define BACK if (e) return e; p -= l; len -= l; ret += l - static int encode_NegTokenResp(unsigned char *p, size_t len, const NegTokenResp * data, size_t * size) { size_t ret = 0; size_t l; - int i, e; + int e; - i = 0; if ((data)->mechListMIC) { int oldret = ret; ret = 0; @@ -698,8 +682,6 @@ encode_NegTokenResp(unsigned char *p, size_t len, const NegTokenResp * data, siz return 0; } -#define FORW if(e) goto fail; p += l; len -= l; ret += l - static int decode_NegTokenResp(const unsigned char *p, size_t len, NegTokenResp * data, size_t * size) { diff --git a/contrib/bind9/lib/dns/ssu.c b/contrib/bind9/lib/dns/ssu.c index 83aa679..49a777a 100644 --- a/contrib/bind9/lib/dns/ssu.c +++ b/contrib/bind9/lib/dns/ssu.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2010, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -82,7 +82,8 @@ dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **tablep) { return (result); } table->references = 1; - table->mctx = mctx; + table->mctx = NULL; + isc_mem_attach(mctx, &table->mctx); ISC_LIST_INIT(table->rules); table->magic = SSUTABLEMAGIC; *tablep = table; @@ -115,7 +116,7 @@ destroy(dns_ssutable_t *table) { } DESTROYLOCK(&table->lock); table->magic = 0; - isc_mem_put(mctx, table, sizeof(dns_ssutable_t)); + isc_mem_putanddetach(&table->mctx, table, sizeof(dns_ssutable_t)); } void diff --git a/contrib/bind9/lib/dns/ssu_external.c b/contrib/bind9/lib/dns/ssu_external.c index 65ba1b5..43d231d 100644 --- a/contrib/bind9/lib/dns/ssu_external.c +++ b/contrib/bind9/lib/dns/ssu_external.c @@ -79,7 +79,7 @@ ux_socket_connect(const char *path) { memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, path, sizeof(addr.sun_path)); + strlcpy(addr.sun_path, path, sizeof(addr.sun_path)); fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd == -1) { diff --git a/contrib/bind9/lib/dns/tkey.c b/contrib/bind9/lib/dns/tkey.c index 0112f7e..161c188 100644 --- a/contrib/bind9/lib/dns/tkey.c +++ b/contrib/bind9/lib/dns/tkey.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -991,8 +991,13 @@ dns_tkey_builddhquery(dns_message_t *msg, dst_key_t *key, dns_name_t *name, ISC_LIST_INIT(namelist); RETERR(add_rdata_to_list(msg, &keyname, rdata, 0, &namelist)); - dns_message_addname(msg, ISC_LIST_HEAD(namelist), - DNS_SECTION_ADDITIONAL); + name = ISC_LIST_HEAD(namelist); + while (name != NULL) { + dns_name_t *next = ISC_LIST_NEXT(name, link); + ISC_LIST_UNLINK(namelist, name, link); + dns_message_addname(msg, name, DNS_SECTION_ADDITIONAL); + name = next; + } return (ISC_R_SUCCESS); diff --git a/contrib/bind9/lib/dns/tsig.c b/contrib/bind9/lib/dns/tsig.c index 76c239b..c7768f4 100644 --- a/contrib/bind9/lib/dns/tsig.c +++ b/contrib/bind9/lib/dns/tsig.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -239,7 +239,9 @@ adjust_lru(dns_tsigkey_t *tkey) { * We may have been removed from the LRU list between * removing the read lock and aquiring the write lock. */ - if (ISC_LINK_LINKED(tkey, link)) { + if (ISC_LINK_LINKED(tkey, link) && + tkey->ring->lru.tail != tkey) + { ISC_LIST_UNLINK(tkey->ring->lru, tkey, link); ISC_LIST_APPEND(tkey->ring->lru, tkey, link); } @@ -625,8 +627,7 @@ restore_key(dns_tsig_keyring_t *ring, isc_stdtime_t now, FILE *fp) { } static void -dump_key(dns_tsigkey_t *tkey, FILE *fp) -{ +dump_key(dns_tsigkey_t *tkey, FILE *fp) { char *buffer = NULL; int length = 0; char namestr[DNS_NAME_FORMATSIZE]; @@ -634,6 +635,9 @@ dump_key(dns_tsigkey_t *tkey, FILE *fp) char algorithmstr[DNS_NAME_FORMATSIZE]; isc_result_t result; + REQUIRE(tkey != NULL); + REQUIRE(fp != NULL); + dns_name_format(&tkey->name, namestr, sizeof(namestr)); dns_name_format(tkey->creator, creatorstr, sizeof(creatorstr)); dns_name_format(tkey->algorithm, algorithmstr, sizeof(algorithmstr)); @@ -942,7 +946,8 @@ dns_tsig_sign(dns_message_t *msg) { isc_buffer_t headerbuf; isc_uint16_t digestbits; - ret = dst_context_create(key->key, mctx, &ctx); + ret = dst_context_create2(key->key, mctx, + DNS_LOGCATEGORY_DNSSEC, &ctx); if (ret != ISC_R_SUCCESS) return (ret); @@ -973,6 +978,13 @@ dns_tsig_sign(dns_message_t *msg) { if (ret != ISC_R_SUCCESS) goto cleanup_context; } +#if defined(__clang__) && \ + ( __clang_major__ < 3 || \ + (__clang_major__ == 3 && __clang_minor__ < 2) || \ + (__clang_major__ == 4 && __clang_minor__ < 2)) + /* false positive: http://llvm.org/bugs/show_bug.cgi?id=14461 */ + else memset(&querytsig, 0, sizeof(querytsig)); +#endif /* * Digest the header. @@ -1228,6 +1240,13 @@ dns_tsig_verify(isc_buffer_t *source, dns_message_t *msg, if (ret != ISC_R_SUCCESS) return (ret); } +#if defined(__clang__) && \ + ( __clang_major__ < 3 || \ + (__clang_major__ == 3 && __clang_minor__ < 2) || \ + (__clang_major__ == 4 && __clang_minor__ < 2)) + /* false positive: http://llvm.org/bugs/show_bug.cgi?id=14461 */ + else memset(&querytsig, 0, sizeof(querytsig)); +#endif /* * Do the key name and algorithm match that of the query? @@ -1326,7 +1345,8 @@ dns_tsig_verify(isc_buffer_t *source, dns_message_t *msg, sig_r.base = tsig.signature; sig_r.length = tsig.siglen; - ret = dst_context_create(key, mctx, &ctx); + ret = dst_context_create2(key, mctx, + DNS_LOGCATEGORY_DNSSEC, &ctx); if (ret != ISC_R_SUCCESS) return (ret); @@ -1557,7 +1577,9 @@ tsig_verify_tcp(isc_buffer_t *source, dns_message_t *msg) { key = tsigkey->key; if (msg->tsigctx == NULL) { - ret = dst_context_create(key, mctx, &msg->tsigctx); + ret = dst_context_create2(key, mctx, + DNS_LOGCATEGORY_DNSSEC, + &msg->tsigctx); if (ret != ISC_R_SUCCESS) goto cleanup_querystruct; @@ -1746,11 +1768,15 @@ static void free_tsignode(void *node, void *_unused) { dns_tsigkey_t *key; - UNUSED(_unused); - REQUIRE(node != NULL); + UNUSED(_unused); + key = node; + if (key->generated) { + if (ISC_LINK_LINKED(key, link)) + ISC_LIST_UNLINK(key->ring->lru, key, link); + } dns_tsigkey_detach(&key); } diff --git a/contrib/bind9/lib/dns/validator.c b/contrib/bind9/lib/dns/validator.c index 674675f..3d7518a 100644 --- a/contrib/bind9/lib/dns/validator.c +++ b/contrib/bind9/lib/dns/validator.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -157,7 +157,7 @@ validator_logv(dns_validator_t *val, isc_logcategory_t *category, ISC_FORMAT_PRINTF(5, 0); static void -validator_log(dns_validator_t *val, int level, const char *fmt, ...) +validator_log(void *val, int level, const char *fmt, ...) ISC_FORMAT_PRINTF(3, 4); static void @@ -195,6 +195,7 @@ marksecure(dns_validatorevent_t *event) { dns_rdataset_settrust(event->rdataset, dns_trust_secure); if (event->sigrdataset != NULL) dns_rdataset_settrust(event->sigrdataset, dns_trust_secure); + event->secure = ISC_TRUE; } static void @@ -403,6 +404,7 @@ fetch_callback_validator(isc_task_t *task, isc_event_t *event) { isc_result_t result; isc_result_t eresult; isc_result_t saved_result; + dns_fetch_t *fetch; UNUSED(task); INSIST(event->ev_type == DNS_EVENT_FETCHDONE); @@ -419,12 +421,13 @@ fetch_callback_validator(isc_task_t *task, isc_event_t *event) { if (dns_rdataset_isassociated(&val->fsigrdataset)) dns_rdataset_disassociate(&val->fsigrdataset); isc_event_free(&event); - dns_resolver_destroyfetch(&val->fetch); INSIST(val->event != NULL); validator_log(val, ISC_LOG_DEBUG(3), "in fetch_callback_validator"); LOCK(&val->lock); + fetch = val->fetch; + val->fetch = NULL; if (CANCELED(val)) { validator_done(val, ISC_R_CANCELED); } else if (eresult == ISC_R_SUCCESS) { @@ -464,6 +467,8 @@ fetch_callback_validator(isc_task_t *task, isc_event_t *event) { } want_destroy = exit_check(val); UNLOCK(&val->lock); + if (fetch != NULL) + dns_resolver_destroyfetch(&fetch); if (want_destroy) destroy(val); } @@ -481,6 +486,7 @@ dsfetched(isc_task_t *task, isc_event_t *event) { isc_boolean_t want_destroy; isc_result_t result; isc_result_t eresult; + dns_fetch_t *fetch; UNUSED(task); INSIST(event->ev_type == DNS_EVENT_FETCHDONE); @@ -497,12 +503,13 @@ dsfetched(isc_task_t *task, isc_event_t *event) { if (dns_rdataset_isassociated(&val->fsigrdataset)) dns_rdataset_disassociate(&val->fsigrdataset); isc_event_free(&event); - dns_resolver_destroyfetch(&val->fetch); INSIST(val->event != NULL); validator_log(val, ISC_LOG_DEBUG(3), "in dsfetched"); LOCK(&val->lock); + fetch = val->fetch; + val->fetch = NULL; if (CANCELED(val)) { validator_done(val, ISC_R_CANCELED); } else if (eresult == ISC_R_SUCCESS) { @@ -536,6 +543,8 @@ dsfetched(isc_task_t *task, isc_event_t *event) { } want_destroy = exit_check(val); UNLOCK(&val->lock); + if (fetch != NULL) + dns_resolver_destroyfetch(&fetch); if (want_destroy) destroy(val); } @@ -559,6 +568,7 @@ dsfetched2(isc_task_t *task, isc_event_t *event) { isc_boolean_t want_destroy; isc_result_t result; isc_result_t eresult; + dns_fetch_t *fetch; UNUSED(task); INSIST(event->ev_type == DNS_EVENT_FETCHDONE); @@ -573,13 +583,14 @@ dsfetched2(isc_task_t *task, isc_event_t *event) { dns_db_detach(&devent->db); if (dns_rdataset_isassociated(&val->fsigrdataset)) dns_rdataset_disassociate(&val->fsigrdataset); - dns_resolver_destroyfetch(&val->fetch); INSIST(val->event != NULL); validator_log(val, ISC_LOG_DEBUG(3), "in dsfetched2: %s", dns_result_totext(eresult)); LOCK(&val->lock); + fetch = val->fetch; + val->fetch = NULL; if (CANCELED(val)) { validator_done(val, ISC_R_CANCELED); } else if (eresult == DNS_R_CNAME || @@ -632,6 +643,8 @@ dsfetched2(isc_task_t *task, isc_event_t *event) { isc_event_free(&event); want_destroy = exit_check(val); UNLOCK(&val->lock); + if (fetch != NULL) + dns_resolver_destroyfetch(&fetch); if (want_destroy) destroy(val); } @@ -839,452 +852,6 @@ cnamevalidated(isc_task_t *task, isc_event_t *event) { } /*% - * Return ISC_R_SUCCESS if we can determine that the name doesn't exist - * or we can determine whether there is data or not at the name. - * If the name does not exist return the wildcard name. - * - * Return ISC_R_IGNORE when the NSEC is not the appropriate one. - */ -static isc_result_t -nsecnoexistnodata(dns_validator_t *val, dns_name_t *name, dns_name_t *nsecname, - dns_rdataset_t *nsecset, isc_boolean_t *exists, - isc_boolean_t *data, dns_name_t *wild) -{ - int order; - dns_rdata_t rdata = DNS_RDATA_INIT; - isc_result_t result; - dns_namereln_t relation; - unsigned int olabels, nlabels, labels; - dns_rdata_nsec_t nsec; - isc_boolean_t atparent; - isc_boolean_t ns; - isc_boolean_t soa; - - REQUIRE(exists != NULL); - REQUIRE(data != NULL); - REQUIRE(nsecset != NULL && - nsecset->type == dns_rdatatype_nsec); - - result = dns_rdataset_first(nsecset); - if (result != ISC_R_SUCCESS) { - validator_log(val, ISC_LOG_DEBUG(3), - "failure processing NSEC set"); - return (result); - } - dns_rdataset_current(nsecset, &rdata); - - validator_log(val, ISC_LOG_DEBUG(3), "looking for relevant nsec"); - relation = dns_name_fullcompare(name, nsecname, &order, &olabels); - - if (order < 0) { - /* - * The name is not within the NSEC range. - */ - validator_log(val, ISC_LOG_DEBUG(3), - "NSEC does not cover name, before NSEC"); - return (ISC_R_IGNORE); - } - - if (order == 0) { - /* - * The names are the same. If we are validating "." - * then atparent should not be set as there is no parent. - */ - atparent = (olabels != 1) && - dns_rdatatype_atparent(val->event->type); - ns = dns_nsec_typepresent(&rdata, dns_rdatatype_ns); - soa = dns_nsec_typepresent(&rdata, dns_rdatatype_soa); - if (ns && !soa) { - if (!atparent) { - /* - * This NSEC record is from somewhere higher in - * the DNS, and at the parent of a delegation. - * It can not be legitimately used here. - */ - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring parent nsec"); - return (ISC_R_IGNORE); - } - } else if (atparent && ns && soa) { - /* - * This NSEC record is from the child. - * It can not be legitimately used here. - */ - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring child nsec"); - return (ISC_R_IGNORE); - } - if (val->event->type == dns_rdatatype_cname || - val->event->type == dns_rdatatype_nxt || - val->event->type == dns_rdatatype_nsec || - val->event->type == dns_rdatatype_key || - !dns_nsec_typepresent(&rdata, dns_rdatatype_cname)) { - *exists = ISC_TRUE; - *data = dns_nsec_typepresent(&rdata, val->event->type); - validator_log(val, ISC_LOG_DEBUG(3), - "nsec proves name exists (owner) data=%d", - *data); - return (ISC_R_SUCCESS); - } - validator_log(val, ISC_LOG_DEBUG(3), "NSEC proves CNAME exists"); - return (ISC_R_IGNORE); - } - - if (relation == dns_namereln_subdomain && - dns_nsec_typepresent(&rdata, dns_rdatatype_ns) && - !dns_nsec_typepresent(&rdata, dns_rdatatype_soa)) - { - /* - * This NSEC record is from somewhere higher in - * the DNS, and at the parent of a delegation. - * It can not be legitimately used here. - */ - validator_log(val, ISC_LOG_DEBUG(3), "ignoring parent nsec"); - return (ISC_R_IGNORE); - } - - result = dns_rdata_tostruct(&rdata, &nsec, NULL); - if (result != ISC_R_SUCCESS) - return (result); - relation = dns_name_fullcompare(&nsec.next, name, &order, &nlabels); - if (order == 0) { - dns_rdata_freestruct(&nsec); - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring nsec matches next name"); - return (ISC_R_IGNORE); - } - - if (order < 0 && !dns_name_issubdomain(nsecname, &nsec.next)) { - /* - * The name is not within the NSEC range. - */ - dns_rdata_freestruct(&nsec); - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring nsec because name is past end of range"); - return (ISC_R_IGNORE); - } - - if (order > 0 && relation == dns_namereln_subdomain) { - validator_log(val, ISC_LOG_DEBUG(3), - "nsec proves name exist (empty)"); - dns_rdata_freestruct(&nsec); - *exists = ISC_TRUE; - *data = ISC_FALSE; - return (ISC_R_SUCCESS); - } - if (wild != NULL) { - dns_name_t common; - dns_name_init(&common, NULL); - if (olabels > nlabels) { - labels = dns_name_countlabels(nsecname); - dns_name_getlabelsequence(nsecname, labels - olabels, - olabels, &common); - } else { - labels = dns_name_countlabels(&nsec.next); - dns_name_getlabelsequence(&nsec.next, labels - nlabels, - nlabels, &common); - } - result = dns_name_concatenate(dns_wildcardname, &common, - wild, NULL); - if (result != ISC_R_SUCCESS) { - dns_rdata_freestruct(&nsec); - validator_log(val, ISC_LOG_DEBUG(3), - "failure generating wildcard name"); - return (result); - } - } - dns_rdata_freestruct(&nsec); - validator_log(val, ISC_LOG_DEBUG(3), "nsec range ok"); - *exists = ISC_FALSE; - return (ISC_R_SUCCESS); -} - -static isc_result_t -nsec3noexistnodata(dns_validator_t *val, dns_name_t* name, - dns_name_t *nsec3name, dns_rdataset_t *nsec3set, - dns_name_t *zonename, isc_boolean_t *exists, - isc_boolean_t *data, isc_boolean_t *optout, - isc_boolean_t *unknown, isc_boolean_t *setclosest, - isc_boolean_t *setnearest, dns_name_t *closest, - dns_name_t *nearest) -{ - char namebuf[DNS_NAME_FORMATSIZE]; - dns_fixedname_t fzone; - dns_fixedname_t qfixed; - dns_label_t hashlabel; - dns_name_t *qname; - dns_name_t *zone; - dns_rdata_nsec3_t nsec3; - dns_rdata_t rdata = DNS_RDATA_INIT; - int order; - int scope; - isc_boolean_t atparent; - isc_boolean_t first; - isc_boolean_t ns; - isc_boolean_t soa; - isc_buffer_t buffer; - isc_result_t answer = ISC_R_IGNORE; - isc_result_t result; - unsigned char hash[NSEC3_MAX_HASH_LENGTH]; - unsigned char owner[NSEC3_MAX_HASH_LENGTH]; - unsigned int length; - unsigned int qlabels; - unsigned int zlabels; - - REQUIRE((exists == NULL && data == NULL) || - (exists != NULL && data != NULL)); - REQUIRE(nsec3set != NULL && nsec3set->type == dns_rdatatype_nsec3); - REQUIRE((setclosest == NULL && closest == NULL) || - (setclosest != NULL && closest != NULL)); - REQUIRE((setnearest == NULL && nearest == NULL) || - (setnearest != NULL && nearest != NULL)); - - result = dns_rdataset_first(nsec3set); - if (result != ISC_R_SUCCESS) { - validator_log(val, ISC_LOG_DEBUG(3), - "failure processing NSEC3 set"); - return (result); - } - - dns_rdataset_current(nsec3set, &rdata); - - result = dns_rdata_tostruct(&rdata, &nsec3, NULL); - if (result != ISC_R_SUCCESS) - return (result); - - validator_log(val, ISC_LOG_DEBUG(3), "looking for relevant NSEC3"); - - dns_fixedname_init(&fzone); - zone = dns_fixedname_name(&fzone); - zlabels = dns_name_countlabels(nsec3name); - - /* - * NSEC3 records must have two or more labels to be valid. - */ - if (zlabels < 2) - return (ISC_R_IGNORE); - - /* - * Strip off the NSEC3 hash to get the zone. - */ - zlabels--; - dns_name_split(nsec3name, zlabels, NULL, zone); - - /* - * If not below the zone name we can ignore this record. - */ - if (!dns_name_issubdomain(name, zone)) - return (ISC_R_IGNORE); - - /* - * Is this zone the same or deeper than the current zone? - */ - if (dns_name_countlabels(zonename) == 0 || - dns_name_issubdomain(zone, zonename)) - dns_name_copy(zone, zonename, NULL); - - if (!dns_name_equal(zone, zonename)) - return (ISC_R_IGNORE); - - /* - * Are we only looking for the most enclosing zone? - */ - if (exists == NULL || data == NULL) - return (ISC_R_SUCCESS); - - /* - * Only set unknown once we are sure that this NSEC3 is from - * the deepest covering zone. - */ - if (!dns_nsec3_supportedhash(nsec3.hash)) { - if (unknown != NULL) - *unknown = ISC_TRUE; - return (ISC_R_IGNORE); - } - - /* - * Recover the hash from the first label. - */ - dns_name_getlabel(nsec3name, 0, &hashlabel); - isc_region_consume(&hashlabel, 1); - isc_buffer_init(&buffer, owner, sizeof(owner)); - result = isc_base32hex_decoderegion(&hashlabel, &buffer); - if (result != ISC_R_SUCCESS) - return (result); - - /* - * The hash lengths should match. If not ignore the record. - */ - if (isc_buffer_usedlength(&buffer) != nsec3.next_length) - return (ISC_R_IGNORE); - - /* - * Work out what this NSEC3 covers. - * Inside (<0) or outside (>=0). - */ - scope = memcmp(owner, nsec3.next, nsec3.next_length); - - /* - * Prepare to compute all the hashes. - */ - dns_fixedname_init(&qfixed); - qname = dns_fixedname_name(&qfixed); - dns_name_downcase(name, qname, NULL); - qlabels = dns_name_countlabels(qname); - first = ISC_TRUE; - - while (qlabels >= zlabels) { - length = isc_iterated_hash(hash, nsec3.hash, nsec3.iterations, - nsec3.salt, nsec3.salt_length, - qname->ndata, qname->length); - /* - * The computed hash length should match. - */ - if (length != nsec3.next_length) { - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring NSEC bad length %u vs %u", - length, nsec3.next_length); - return (ISC_R_IGNORE); - } - - order = memcmp(hash, owner, length); - if (first && order == 0) { - /* - * The hashes are the same. - */ - atparent = dns_rdatatype_atparent(val->event->type); - ns = dns_nsec3_typepresent(&rdata, dns_rdatatype_ns); - soa = dns_nsec3_typepresent(&rdata, dns_rdatatype_soa); - if (ns && !soa) { - if (!atparent) { - /* - * This NSEC3 record is from somewhere - * higher in the DNS, and at the - * parent of a delegation. It can not - * be legitimately used here. - */ - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring parent NSEC3"); - return (ISC_R_IGNORE); - } - } else if (atparent && ns && soa) { - /* - * This NSEC3 record is from the child. - * It can not be legitimately used here. - */ - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring child NSEC3"); - return (ISC_R_IGNORE); - } - if (val->event->type == dns_rdatatype_cname || - val->event->type == dns_rdatatype_nxt || - val->event->type == dns_rdatatype_nsec || - val->event->type == dns_rdatatype_key || - !dns_nsec3_typepresent(&rdata, dns_rdatatype_cname)) { - *exists = ISC_TRUE; - *data = dns_nsec3_typepresent(&rdata, - val->event->type); - validator_log(val, ISC_LOG_DEBUG(3), - "NSEC3 proves name exists (owner) " - "data=%d", *data); - return (ISC_R_SUCCESS); - } - validator_log(val, ISC_LOG_DEBUG(3), - "NSEC3 proves CNAME exists"); - return (ISC_R_IGNORE); - } - - if (order == 0 && - dns_nsec3_typepresent(&rdata, dns_rdatatype_ns) && - !dns_nsec3_typepresent(&rdata, dns_rdatatype_soa)) - { - /* - * This NSEC3 record is from somewhere higher in - * the DNS, and at the parent of a delegation. - * It can not be legitimately used here. - */ - validator_log(val, ISC_LOG_DEBUG(3), - "ignoring parent NSEC3"); - return (ISC_R_IGNORE); - } - - /* - * Potential closest encloser. - */ - if (order == 0) { - if (closest != NULL && - (dns_name_countlabels(closest) == 0 || - dns_name_issubdomain(qname, closest)) && - !dns_nsec3_typepresent(&rdata, dns_rdatatype_ds) && - !dns_nsec3_typepresent(&rdata, dns_rdatatype_dname) && - (dns_nsec3_typepresent(&rdata, dns_rdatatype_soa) || - !dns_nsec3_typepresent(&rdata, dns_rdatatype_ns))) - { - - dns_name_format(qname, namebuf, - sizeof(namebuf)); - validator_log(val, ISC_LOG_DEBUG(3), - "NSEC3 indicates potential " - "closest encloser: '%s'", - namebuf); - dns_name_copy(qname, closest, NULL); - *setclosest = ISC_TRUE; - } - dns_name_format(qname, namebuf, sizeof(namebuf)); - validator_log(val, ISC_LOG_DEBUG(3), - "NSEC3 at super-domain %s", namebuf); - return (answer); - } - - /* - * Find if the name does not exist. - * - * We continue as we need to find the name closest to the - * closest encloser that doesn't exist. - * - * We also need to continue to ensure that we are not - * proving the non-existence of a record in a sub-zone. - * If that would be the case we will return ISC_R_IGNORE - * above. - */ - if ((scope < 0 && order > 0 && - memcmp(hash, nsec3.next, length) < 0) || - (scope >= 0 && (order > 0 || - memcmp(hash, nsec3.next, length) < 0))) - { - char namebuf[DNS_NAME_FORMATSIZE]; - - dns_name_format(qname, namebuf, sizeof(namebuf)); - validator_log(val, ISC_LOG_DEBUG(3), "NSEC3 proves " - "name does not exist: '%s'", namebuf); - if (nearest != NULL && - (dns_name_countlabels(nearest) == 0 || - dns_name_issubdomain(nearest, qname))) { - dns_name_copy(qname, nearest, NULL); - *setnearest = ISC_TRUE; - } - - *exists = ISC_FALSE; - *data = ISC_FALSE; - if (optout != NULL) { - if ((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0) - validator_log(val, ISC_LOG_DEBUG(3), - "NSEC3 indicates optout"); - *optout = - ISC_TF(nsec3.flags & DNS_NSEC3FLAG_OPTOUT); - } - answer = ISC_R_SUCCESS; - } - - qlabels--; - if (qlabels > 0) - dns_name_split(qname, qlabels, NULL, qname); - first = ISC_FALSE; - } - return (answer); -} - -/*% * Callback for when NSEC records have been validated. * * Looks for NOQNAME, NODATA and OPTOUT proofs. @@ -1339,8 +906,9 @@ authvalidated(isc_task_t *task, isc_event_t *event) { rdataset->trust == dns_trust_secure && (NEEDNODATA(val) || NEEDNOQNAME(val)) && !FOUNDNODATA(val) && !FOUNDNOQNAME(val) && - nsecnoexistnodata(val, val->event->name, devent->name, - rdataset, &exists, &data, wild) + dns_nsec_noexistnodata(val->event->type, val->event->name, + devent->name, rdataset, &exists, + &data, wild, validator_log, val) == ISC_R_SUCCESS) { if (exists && !data) { @@ -1413,9 +981,6 @@ view_find(dns_validator_t *val, dns_name_t *name, dns_rdatatype_t type) { if (dns_rdataset_isassociated(&val->fsigrdataset)) dns_rdataset_disassociate(&val->fsigrdataset); - if (val->view->zonetable == NULL) - return (ISC_R_CANCELED); - if (isc_time_now(&now) == ISC_R_SUCCESS && dns_resolver_getbadcache(val->view->resolver, name, type, &now)) { @@ -1859,6 +1424,10 @@ isselfsigned(dns_validator_t *val) { name = val->event->name; mctx = val->view->mctx; + if (rdataset->type == dns_rdatatype_cname || + rdataset->type == dns_rdatatype_dname) + return (answer); + INSIST(rdataset->type == dns_rdatatype_dnskey); for (result = dns_rdataset_first(rdataset); @@ -2831,8 +2400,9 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type, dns_name_t *zonename) if (rdataset->type == dns_rdatatype_nsec && (NEEDNODATA(val) || NEEDNOWILDCARD(val)) && !FOUNDNODATA(val) && !FOUNDNOWILDCARD(val) && - nsecnoexistnodata(val, wild, name, rdataset, - &exists, &data, NULL) + dns_nsec_noexistnodata(val->event->type, wild, name, + rdataset, &exists, &data, NULL, + validator_log, val) == ISC_R_SUCCESS) { dns_name_t **proofs = val->event->proofs; @@ -2855,10 +2425,11 @@ checkwildcard(dns_validator_t *val, dns_rdatatype_t type, dns_name_t *zonename) if (rdataset->type == dns_rdatatype_nsec3 && (NEEDNODATA(val) || NEEDNOWILDCARD(val)) && !FOUNDNODATA(val) && !FOUNDNOWILDCARD(val) && - nsec3noexistnodata(val, wild, name, rdataset, - zonename, &exists, &data, - NULL, NULL, NULL, NULL, NULL, - NULL) == ISC_R_SUCCESS) + dns_nsec3_noexistnodata(val->event->type, wild, name, + rdataset, zonename, &exists, &data, + NULL, NULL, NULL, NULL, NULL, NULL, + validator_log, val) + == ISC_R_SUCCESS) { dns_name_t **proofs = val->event->proofs; if (exists && !data) @@ -2920,11 +2491,12 @@ findnsec3proofs(dns_validator_t *val) { rdataset->trust != dns_trust_secure) continue; - result = nsec3noexistnodata(val, val->event->name, - name, rdataset, - zonename, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL); + result = dns_nsec3_noexistnodata(val->event->type, + val->event->name, name, + rdataset, zonename, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, validator_log, + val); if (result != ISC_R_IGNORE && result != ISC_R_SUCCESS) { if (dns_rdataset_isassociated(&trdataset)) dns_rdataset_disassociate(&trdataset); @@ -2972,16 +2544,19 @@ findnsec3proofs(dns_validator_t *val) { setclosest = setnearest = ISC_FALSE; optout = ISC_FALSE; unknown = ISC_FALSE; - (void)nsec3noexistnodata(val, val->event->name, name, rdataset, - zonename, &exists, &data, &optout, - &unknown, setclosestp, &setnearest, - closestp, nearest); - if (setclosest) - proofs[DNS_VALIDATOR_CLOSESTENCLOSER] = name; + result = dns_nsec3_noexistnodata(val->event->type, + val->event->name, + name, rdataset, zonename, + &exists, &data, &optout, + &unknown, setclosestp, + &setnearest, closestp, + nearest, validator_log, val); if (unknown) val->attributes |= VALATTR_FOUNDUNKNOWN; if (result != ISC_R_SUCCESS) continue; + if (setclosest) + proofs[DNS_VALIDATOR_CLOSESTENCLOSER] = name; if (exists && !data && NEEDNODATA(val)) { val->attributes |= VALATTR_FOUNDNODATA; proofs[DNS_VALIDATOR_NODATAPROOF] = name; @@ -3272,6 +2847,8 @@ nsecvalidate(dns_validator_t *val, isc_boolean_t resume) { "nonexistence proof(s) found"); if (val->event->message == NULL) marksecure(val->event); + else + val->event->secure = ISC_TRUE; return (ISC_R_SUCCESS); } @@ -3374,6 +2951,7 @@ dlvfetched(isc_task_t *task, isc_event_t *event) { isc_boolean_t want_destroy; isc_result_t eresult; isc_result_t result; + dns_fetch_t *fetch; UNUSED(task); INSIST(event->ev_type == DNS_EVENT_FETCHDONE); @@ -3389,13 +2967,14 @@ dlvfetched(isc_task_t *task, isc_event_t *event) { if (dns_rdataset_isassociated(&val->fsigrdataset)) dns_rdataset_disassociate(&val->fsigrdataset); isc_event_free(&event); - dns_resolver_destroyfetch(&val->fetch); INSIST(val->event != NULL); validator_log(val, ISC_LOG_DEBUG(3), "in dlvfetched: %s", dns_result_totext(eresult)); LOCK(&val->lock); + fetch = val->fetch; + val->fetch = NULL; if (eresult == ISC_R_SUCCESS) { dns_name_format(dns_fixedname_name(&val->dlvsep), namebuf, sizeof(namebuf)); @@ -3448,6 +3027,8 @@ dlvfetched(isc_task_t *task, isc_event_t *event) { } want_destroy = exit_check(val); UNLOCK(&val->lock); + if (fetch != NULL) + dns_resolver_destroyfetch(&fetch); if (want_destroy) destroy(val); } @@ -4155,6 +3736,7 @@ dns_validator_create(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, event->message = message; memset(event->proofs, 0, sizeof(event->proofs)); event->optout = ISC_FALSE; + event->secure = ISC_FALSE; result = isc_mutex_init(&val->lock); if (result != ISC_R_SUCCESS) goto cleanup_event; @@ -4230,6 +3812,8 @@ dns_validator_send(dns_validator_t *validator) { void dns_validator_cancel(dns_validator_t *validator) { + dns_fetch_t *fetch = NULL; + REQUIRE(VALID_VALIDATOR(validator)); LOCK(&validator->lock); @@ -4239,8 +3823,8 @@ dns_validator_cancel(dns_validator_t *validator) { if ((validator->attributes & VALATTR_CANCELED) == 0) { validator->attributes |= VALATTR_CANCELED; if (validator->event != NULL) { - if (validator->fetch != NULL) - dns_resolver_cancelfetch(validator->fetch); + fetch = validator->fetch; + validator->fetch = NULL; if (validator->subvalidator != NULL) dns_validator_cancel(validator->subvalidator); @@ -4251,6 +3835,12 @@ dns_validator_cancel(dns_validator_t *validator) { } } UNLOCK(&validator->lock); + + /* Need to cancel and destroy the fetch outside validator lock */ + if (fetch != NULL) { + dns_resolver_cancelfetch(fetch); + dns_resolver_destroyfetch(&fetch); + } } static void @@ -4339,7 +3929,7 @@ validator_logv(dns_validator_t *val, isc_logcategory_t *category, } static void -validator_log(dns_validator_t *val, int level, const char *fmt, ...) { +validator_log(void *val, int level, const char *fmt, ...) { va_list ap; if (! isc_log_wouldlog(dns_lctx, level)) diff --git a/contrib/bind9/lib/dns/view.c b/contrib/bind9/lib/dns/view.c index 6750058..5b6ad65 100644 --- a/contrib/bind9/lib/dns/view.c +++ b/contrib/bind9/lib/dns/view.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -86,6 +86,9 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, view = isc_mem_get(mctx, sizeof(*view)); if (view == NULL) return (ISC_R_NOMEMORY); + + view->mctx = NULL; + isc_mem_attach(mctx, &view->mctx); view->name = isc_mem_strdup(mctx, name); if (view->name == NULL) { result = ISC_R_NOMEMORY; @@ -95,8 +98,8 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, if (result != ISC_R_SUCCESS) goto cleanup_name; -#ifdef BIND9 view->zonetable = NULL; +#ifdef BIND9 result = dns_zt_create(mctx, rdclass, &view->zonetable); if (result != ISC_R_SUCCESS) { UNEXPECTED_ERROR(__FILE__, __LINE__, @@ -125,7 +128,6 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, view->resolver = NULL; view->adb = NULL; view->requestmgr = NULL; - view->mctx = mctx; view->rdclass = rdclass; view->frozen = ISC_FALSE; view->task = NULL; @@ -225,6 +227,7 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, ISC_EVENT_INIT(&view->reqevent, sizeof(view->reqevent), 0, NULL, DNS_EVENT_VIEWREQSHUTDOWN, req_shutdown, view, NULL, NULL, NULL); + view->viewlist = NULL; view->magic = DNS_VIEW_MAGIC; *viewp = view; @@ -260,7 +263,7 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, isc_mem_free(mctx, view->name); cleanup_view: - isc_mem_put(mctx, view, sizeof(*view)); + isc_mem_putanddetach(&view->mctx, view, sizeof(*view)); return (result); } @@ -439,7 +442,7 @@ destroy(dns_view_t *view) { DESTROYLOCK(&view->lock); isc_refcount_destroy(&view->references); isc_mem_free(view->mctx, view->name); - isc_mem_put(view->mctx, view, sizeof(*view)); + isc_mem_putanddetach(&view->mctx, view, sizeof(*view)); } /* @@ -482,6 +485,10 @@ view_flushanddetach(dns_view_t **viewp, isc_boolean_t flush) { view->flush = ISC_TRUE; isc_refcount_decrement(&view->references, &refs); if (refs == 0) { +#ifdef BIND9 + dns_zone_t *mkzone = NULL; +#endif + LOCK(&view->lock); if (!RESSHUTDOWN(view)) dns_resolver_shutdown(view->resolver); @@ -497,13 +504,20 @@ view_flushanddetach(dns_view_t **viewp, isc_boolean_t flush) { else dns_zt_detach(&view->zonetable); if (view->managed_keys != NULL) { + mkzone = view->managed_keys; + view->managed_keys = NULL; if (view->flush) - dns_zone_flush(view->managed_keys); - dns_zone_detach(&view->managed_keys); + dns_zone_flush(mkzone); } #endif done = all_done(view); UNLOCK(&view->lock); + +#ifdef BIND9 + /* Need to detach zones outside view lock */ + if (mkzone != NULL) + dns_zone_detach(&mkzone); +#endif } *viewp = NULL; @@ -855,11 +869,14 @@ dns_view_findzone(dns_view_t *view, dns_name_t *name, dns_zone_t **zonep) { REQUIRE(DNS_VIEW_VALID(view)); - result = dns_zt_find(view->zonetable, name, 0, NULL, zonep); - if (result == DNS_R_PARTIALMATCH) { - dns_zone_detach(zonep); + if (view->zonetable != NULL) { + result = dns_zt_find(view->zonetable, name, 0, NULL, zonep); + if (result == DNS_R_PARTIALMATCH) { + dns_zone_detach(zonep); + result = ISC_R_NOTFOUND; + } + } else result = ISC_R_NOTFOUND; - } return (result); } @@ -892,6 +909,7 @@ dns_view_find2(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, #ifndef BIND9 UNUSED(use_hints); UNUSED(use_static_stub); + UNUSED(zone); #endif /* @@ -916,11 +934,11 @@ dns_view_find2(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, /* * Find a database to answer the query. */ - zone = NULL; db = NULL; node = NULL; is_staticstub_zone = ISC_FALSE; #ifdef BIND9 + zone = NULL; result = dns_zt_find(view->zonetable, name, 0, NULL, &zone); if (zone != NULL && dns_zone_gettype(zone) == dns_zone_staticstub && !use_static_stub) { @@ -1168,11 +1186,14 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname, dns_rdataset_t zrdataset, zsigrdataset; dns_fixedname_t zfixedname; +#ifndef BIND9 + UNUSED(zone); +#endif + REQUIRE(DNS_VIEW_VALID(view)); REQUIRE(view->frozen); db = NULL; - zone = NULL; use_zone = ISC_FALSE; try_hints = ISC_FALSE; zfname = NULL; @@ -1188,6 +1209,7 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname, * Find the right database. */ #ifdef BIND9 + zone = NULL; result = dns_zt_find(view->zonetable, name, 0, NULL, &zone); if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) result = dns_zone_getdb(zone, &db); diff --git a/contrib/bind9/lib/dns/xfrin.c b/contrib/bind9/lib/dns/xfrin.c index eae39d9..3026af9 100644 --- a/contrib/bind9/lib/dns/xfrin.c +++ b/contrib/bind9/lib/dns/xfrin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -591,6 +591,7 @@ xfr_rr(dns_xfrin_ctx_t *xfr, dns_name_t *name, isc_uint32_t ttl, case XFRST_AXFR_END: case XFRST_IXFR_END: FAIL(DNS_R_EXTRADATA); + /* NOTREACHED */ default: INSIST(0); break; @@ -781,7 +782,8 @@ xfrin_create(isc_mem_t *mctx, xfr = isc_mem_get(mctx, sizeof(*xfr)); if (xfr == NULL) return (ISC_R_NOMEMORY); - xfr->mctx = mctx; + xfr->mctx = NULL; + isc_mem_attach(mctx, &xfr->mctx); xfr->refcount = 0; xfr->zone = NULL; dns_zone_iattach(zone, &xfr->zone); @@ -876,7 +878,7 @@ xfrin_create(isc_mem_t *mctx, dns_db_detach(&xfr->db); isc_task_detach(&xfr->task); dns_zone_idetach(&xfr->zone); - isc_mem_put(mctx, xfr, sizeof(*xfr)); + isc_mem_putanddetach(&xfr->mctx, xfr, sizeof(*xfr)); return (result); } @@ -1491,7 +1493,7 @@ maybe_free(dns_xfrin_ctx_t *xfr) { if (xfr->zone != NULL) dns_zone_idetach(&xfr->zone); - isc_mem_put(xfr->mctx, xfr, sizeof(*xfr)); + isc_mem_putanddetach(&xfr->mctx, xfr, sizeof(*xfr)); } /* diff --git a/contrib/bind9/lib/dns/zone.c b/contrib/bind9/lib/dns/zone.c index 22db239..c212bf6 100644 --- a/contrib/bind9/lib/dns/zone.c +++ b/contrib/bind9/lib/dns/zone.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -335,9 +335,9 @@ struct dns_zone { isc_boolean_t added; /*% - * whether a rpz radix was needed when last loaded + * whether this is a response policy zone */ - isc_boolean_t rpz_zone; + isc_boolean_t is_rpz; /*% * Outstanding forwarded UPDATE requests. @@ -345,6 +345,18 @@ struct dns_zone { dns_forwardlist_t forwards; }; +typedef struct { + dns_diff_t *diff; + isc_boolean_t offline; +} zonediff_t; + +#define zonediff_init(z, d) \ + do { \ + zonediff_t *_z = (z); \ + (_z)->diff = (d); \ + (_z)->offline = ISC_FALSE; \ + } while (0) + #define DNS_ZONE_FLAG(z,f) (ISC_TF(((z)->flags & (f)) != 0)) #define DNS_ZONE_SETFLAG(z,f) do { \ INSIST(LOCKED_ZONE(z)); \ @@ -855,7 +867,7 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) { zone->nodes = 100; zone->privatetype = (dns_rdatatype_t)0xffffU; zone->added = ISC_FALSE; - zone->rpz_zone = ISC_FALSE; + zone->is_rpz = ISC_FALSE; ISC_LIST_INIT(zone->forwards); zone->magic = ZONE_MAGIC; @@ -1042,6 +1054,7 @@ dns_zone_setnotifytype(dns_zone_t *zone, dns_notifytype_t notifytype) { isc_result_t dns_zone_getserial2(dns_zone_t *zone, isc_uint32_t *serialp) { isc_result_t result; + unsigned int soacount; REQUIRE(DNS_ZONE_VALID(zone)); REQUIRE(serialp != NULL); @@ -1049,8 +1062,11 @@ dns_zone_getserial2(dns_zone_t *zone, isc_uint32_t *serialp) { LOCK_ZONE(zone); ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_read); if (zone->db != NULL) { - result = zone_get_from_db(zone, zone->db, NULL, NULL, serialp, - NULL, NULL, NULL, NULL, NULL); + result = zone_get_from_db(zone, zone->db, NULL, &soacount, + serialp, NULL, NULL, NULL, NULL, + NULL); + if (result == ISC_R_SUCCESS && soacount == 0) + result = ISC_R_FAILURE; } else result = DNS_R_NOTLOADED; ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_read); @@ -1390,6 +1406,30 @@ zone_isdynamic(dns_zone_t *zone) { !dns_acl_isnone(zone->update_acl)))); } +/* + * Set the response policy index and information for a zone. + */ +isc_result_t +dns_zone_rpz_enable(dns_zone_t *zone) { + /* + * Only RBTDB zones can be used for response policy zones, + * because only they have the code to load the create the summary data. + * Only zones that are loaded instead of mmap()ed create the + * summary data and so can be policy zones. + */ + if (strcmp(zone->db_argv[0], "rbt") != 0 && + strcmp(zone->db_argv[0], "rbt64") != 0) + return (ISC_R_NOTIMPLEMENTED); + + zone->is_rpz = ISC_TRUE; + + return (ISC_R_SUCCESS); +} + +isc_boolean_t +dns_zone_get_rpz(dns_zone_t *zone) { + return (zone->is_rpz); +} static isc_result_t zone_load(dns_zone_t *zone, unsigned int flags) { @@ -1459,8 +1499,7 @@ zone_load(dns_zone_t *zone, unsigned int flags) { * "rndc reconfig", we are done. */ if (!isc_time_isepoch(&zone->loadtime) && - (flags & DNS_ZONELOADFLAG_NOSTAT) != 0 && - zone->rpz_zone == dns_rpz_needed()) { + (flags & DNS_ZONELOADFLAG_NOSTAT) != 0) { result = ISC_R_SUCCESS; goto cleanup; } @@ -1469,8 +1508,7 @@ zone_load(dns_zone_t *zone, unsigned int flags) { if (result == ISC_R_SUCCESS) { if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED) && !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_HASINCLUDE) && - isc_time_compare(&filetime, &zone->loadtime) <= 0 && - zone->rpz_zone == dns_rpz_needed()) { + isc_time_compare(&filetime, &zone->loadtime) <= 0) { dns_zone_log(zone, ISC_LOG_DEBUG(1), "skipping load: master file " "older than last load"); @@ -1478,7 +1516,6 @@ zone_load(dns_zone_t *zone, unsigned int flags) { goto cleanup; } loadtime = filetime; - zone->rpz_zone = dns_rpz_needed(); } } @@ -1704,8 +1741,15 @@ zone_startload(dns_db_t *db, dns_zone_t *zone, isc_time_t loadtime) { isc_result_t tresult; unsigned int options; - options = get_master_options(zone); +#ifdef BIND9 + if (zone->is_rpz) { + result = dns_db_rpz_enabled(db, NULL); + if (result != ISC_R_SUCCESS) + return (result); + } +#endif + options = get_master_options(zone); if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_MANYERRORS)) options |= DNS_MASTER_MANYERRORS; @@ -2174,6 +2218,34 @@ zone_check_dup(dns_zone_t *zone, dns_db_t *db) { } static isc_boolean_t +isspf(const dns_rdata_t *rdata) { + char buf[1024]; + const unsigned char *data = rdata->data; + unsigned int rdl = rdata->length, i = 0, tl, len; + + while (rdl > 0U) { + len = tl = *data; + ++data; + --rdl; + INSIST(tl <= rdl); + if (len > sizeof(buf) - i - 1) + len = sizeof(buf) - i - 1; + memcpy(buf + i, data, len); + i += len; + data += tl; + rdl -= tl; + } + + if (i < 6U) + return(ISC_FALSE); + + buf[i] = 0; + if (strncmp(buf, "v=spf1", 6) == 0 && (buf[6] == 0 || buf[6] == ' ')) + return (ISC_TRUE); + return (ISC_FALSE); +} + +static isc_boolean_t integrity_checks(dns_zone_t *zone, dns_db_t *db) { dns_dbiterator_t *dbiterator = NULL; dns_dbnode_t *node = NULL; @@ -2187,7 +2259,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { dns_name_t *name; dns_name_t *bottom; isc_result_t result; - isc_boolean_t ok = ISC_TRUE; + isc_boolean_t ok = ISC_TRUE, have_spf, have_txt; dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); @@ -2265,7 +2337,7 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { result = dns_db_findrdataset(db, node, NULL, dns_rdatatype_srv, 0, 0, &rdataset, NULL); if (result != ISC_R_SUCCESS) - goto next; + goto checkspf; result = dns_rdataset_first(&rdataset); while (result == ISC_R_SUCCESS) { dns_rdataset_current(&rdataset, &rdata); @@ -2278,6 +2350,50 @@ integrity_checks(dns_zone_t *zone, dns_db_t *db) { } dns_rdataset_disassociate(&rdataset); + checkspf: + /* + * Check if there is a type TXT spf record without a type SPF + * RRset being present. + */ + if (!DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKSPF)) + goto next; + if (zone->rdclass != dns_rdataclass_in) + goto next; + have_spf = have_txt = ISC_FALSE; + result = dns_db_findrdataset(db, node, NULL, dns_rdatatype_spf, + 0, 0, &rdataset, NULL); + if (result == ISC_R_SUCCESS) { + dns_rdataset_disassociate(&rdataset); + have_spf = ISC_TRUE; + } + result = dns_db_findrdataset(db, node, NULL, dns_rdatatype_txt, + 0, 0, &rdataset, NULL); + if (result != ISC_R_SUCCESS) + goto notxt; + result = dns_rdataset_first(&rdataset); + while (result == ISC_R_SUCCESS) { + dns_rdataset_current(&rdataset, &rdata); + have_txt = isspf(&rdata); + dns_rdata_reset(&rdata); + if (have_txt) + break; + result = dns_rdataset_next(&rdataset); + } + dns_rdataset_disassociate(&rdataset); + + notxt: + if (have_spf != have_txt) { + char namebuf[DNS_NAME_FORMATSIZE]; + const char *found = have_txt ? "TXT" : "SPF"; + const char *need = have_txt ? "SPF" : "TXT"; + + dns_name_format(name, namebuf, sizeof(namebuf)); + dns_zone_log(zone, ISC_LOG_WARNING, "'%s' found SPF/%s " + "record but no SPF/%s record found, add " + "matching type %s record", namebuf, found, + need, need); + } + next: dns_db_detachnode(db, &node); result = dns_dbiterator_next(dbiterator); @@ -2788,6 +2904,8 @@ create_keydata(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, CHECK(update_one_rr(db, ver, diff, DNS_DIFFOP_ADD, dst_key_name(key), 0, &rdata)); *changed = ISC_TRUE; + /* Refresh new keys from the zone apex as soon as possible. */ + set_refreshkeytimer(zone, &keydata, now); skip: result = dns_keytable_nextkeynode(keytable, keynode, &nextnode); @@ -2797,10 +2915,6 @@ create_keydata(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, } } - /* Refresh new keys from the zone apex as soon as possible. */ - if (*changed) - set_refreshkeytimer(zone, &keydata, now); - if (keynode != NULL) dns_keytable_detachkeynode(keytable, &keynode); *keynodep = NULL; @@ -2942,7 +3056,8 @@ load_secroots(dns_zone_t *zone, dns_name_t *name, dns_rdataset_t *rdataset) { dns_rdataset_current(rdataset, &rdata); /* Convert rdata to keydata. */ - dns_rdata_tostruct(&rdata, &keydata, NULL); + result = dns_rdata_tostruct(&rdata, &keydata, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); /* Set the key refresh timer. */ set_refreshkeytimer(zone, &keydata, now); @@ -3285,6 +3400,13 @@ sync_keyzone(dns_zone_t *zone, dns_db_t *db) { } failure: + if (result != ISC_R_SUCCESS && + !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED)) { + dns_zone_log(zone, ISC_LOG_ERROR, + "unable to synchronize managed keys: %s", + dns_result_totext(result)); + isc_time_settoepoch(&zone->refreshkeytime); + } if (keynode != NULL) dns_keytable_detachkeynode(sr, &keynode); if (sr != NULL) @@ -3462,14 +3584,18 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime, } if (zone->db != NULL) { + unsigned int oldsoacount; + /* * This is checked in zone_replacedb() for slave zones * as they don't reload from disk. */ - result = zone_get_from_db(zone, zone->db, NULL, NULL, - &oldserial, NULL, NULL, NULL, - NULL, NULL); + result = zone_get_from_db(zone, zone->db, NULL, + &oldsoacount, &oldserial, + NULL, NULL, NULL, NULL, + NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); + RUNTIME_CHECK(soacount > 0U); if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_IXFRFROMDIFFS) && !isc_serial_gt(serial, oldserial)) { isc_uint32_t serialmin, serialmax; @@ -3877,6 +4003,19 @@ zone_load_soa_rr(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, *expire = soa.expire; if (minimum != NULL) *minimum = soa.minimum; + } else { + if (soacount != NULL) + *soacount = 0; + if (serial != NULL) + *serial = 0; + if (refresh != NULL) + *refresh = 0; + if (retry != NULL) + *retry = 0; + if (expire != NULL) + *expire = 0; + if (minimum != NULL) + *minimum = 0; } result = ISC_R_SUCCESS; @@ -4543,20 +4682,21 @@ find_zone_keys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, } static isc_result_t -offline(dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, dns_name_t *name, - dns_ttl_t ttl, dns_rdata_t *rdata) +offline(dns_db_t *db, dns_dbversion_t *ver, zonediff_t *zonediff, + dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata) { isc_result_t result; if ((rdata->flags & DNS_RDATA_OFFLINE) != 0) return (ISC_R_SUCCESS); - result = update_one_rr(db, ver, diff, DNS_DIFFOP_DELRESIGN, + result = update_one_rr(db, ver, zonediff->diff, DNS_DIFFOP_DELRESIGN, name, ttl, rdata); if (result != ISC_R_SUCCESS) return (result); rdata->flags |= DNS_RDATA_OFFLINE; - result = update_one_rr(db, ver, diff, DNS_DIFFOP_ADDRESIGN, + result = update_one_rr(db, ver, zonediff->diff, DNS_DIFFOP_ADDRESIGN, name, ttl, rdata); + zonediff->offline = ISC_TRUE; return (result); } @@ -4631,7 +4771,7 @@ delsig_ok(dns_rdata_rrsig_t *rrsig_ptr, dst_key_t **keys, unsigned int nkeys) { */ static isc_result_t del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, - dns_rdatatype_t type, dns_diff_t *diff, dst_key_t **keys, + dns_rdatatype_t type, zonediff_t *zonediff, dst_key_t **keys, unsigned int nkeys, isc_stdtime_t now, isc_boolean_t incremental) { isc_result_t result; @@ -4677,7 +4817,7 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, if (type != dns_rdatatype_dnskey) { if (delsig_ok(&rrsig, keys, nkeys)) { - result = update_one_rr(db, ver, diff, + result = update_one_rr(db, ver, zonediff->diff, DNS_DIFFOP_DELRESIGN, name, rdataset.ttl, &rdata); if (incremental) @@ -4695,8 +4835,9 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, * for the private part. */ if (incremental) { - result = offline(db, ver, diff, name, - rdataset.ttl, &rdata); + result = offline(db, ver, zonediff, + name, rdataset.ttl, + &rdata); changed = ISC_TRUE; if (result != ISC_R_SUCCESS) break; @@ -4756,11 +4897,12 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, warn = maybe; if (warn == 0 || warn > timeexpire) warn = timeexpire; - result = offline(db, ver, diff, name, - rdataset.ttl, &rdata); + result = offline(db, ver, zonediff, + name, rdataset.ttl, + &rdata); break; } - result = update_one_rr(db, ver, diff, + result = update_one_rr(db, ver, zonediff->diff, DNS_DIFFOP_DELRESIGN, name, rdataset.ttl, &rdata); @@ -4773,7 +4915,7 @@ del_sigs(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, * delete the RRSIG. */ if (!found) - result = update_one_rr(db, ver, diff, + result = update_one_rr(db, ver, zonediff->diff, DNS_DIFFOP_DELRESIGN, name, rdataset.ttl, &rdata); if (result != ISC_R_SUCCESS) @@ -4903,9 +5045,11 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, static void zone_resigninc(dns_zone_t *zone) { + const char *me = "zone_resigninc"; dns_db_t *db = NULL; dns_dbversion_t *version = NULL; - dns_diff_t sig_diff; + dns_diff_t _sig_diff; + zonediff_t zonediff; dns_fixedname_t fixed; dns_name_t *name; dns_rdataset_t rdataset; @@ -4919,10 +5063,13 @@ zone_resigninc(dns_zone_t *zone) { unsigned int nkeys = 0; unsigned int resign; + ENTER; + dns_rdataset_init(&rdataset); dns_fixedname_init(&fixed); - dns_diff_init(zone->mctx, &sig_diff); - sig_diff.resign = zone->sigresigninginterval; + dns_diff_init(zone->mctx, &_sig_diff); + _sig_diff.resign = zone->sigresigninginterval; + zonediff_init(&zonediff, &_sig_diff); /* * Updates are disabled. Pause for 5 minutes. @@ -4992,7 +5139,7 @@ zone_resigninc(dns_zone_t *zone) { resign > stop) break; - result = del_sigs(zone, db, version, name, covers, &sig_diff, + result = del_sigs(zone, db, version, name, covers, &zonediff, zone_keys, nkeys, now, ISC_TRUE); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, @@ -5001,7 +5148,7 @@ zone_resigninc(dns_zone_t *zone) { break; } - result = add_sigs(db, version, name, covers, &sig_diff, + result = add_sigs(db, version, name, covers, zonediff.diff, zone_keys, nkeys, zone->mctx, inception, expire, check_ksk, keyset_kskonly); if (result != ISC_R_SUCCESS) { @@ -5026,7 +5173,7 @@ zone_resigninc(dns_zone_t *zone) { goto failure; result = del_sigs(zone, db, version, &zone->origin, dns_rdatatype_soa, - &sig_diff, zone_keys, nkeys, now, ISC_TRUE); + &zonediff, zone_keys, nkeys, now, ISC_TRUE); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_resigninc:del_sigs -> %s", @@ -5037,11 +5184,17 @@ zone_resigninc(dns_zone_t *zone) { /* * Did we change anything in the zone? */ - if (ISC_LIST_EMPTY(sig_diff.tuples)) + if (ISC_LIST_EMPTY(zonediff.diff->tuples)) { + /* + * Commit the changes if any key has been marked as offline. + */ + if (zonediff.offline) + dns_db_closeversion(db, &version, ISC_TRUE); goto failure; + } /* Increment SOA serial if we have made changes */ - result = increment_soa_serial(db, version, &sig_diff, zone->mctx); + result = increment_soa_serial(db, version, zonediff.diff, zone->mctx); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_resigninc:increment_soa_serial -> %s", @@ -5054,8 +5207,8 @@ zone_resigninc(dns_zone_t *zone) { * termination is sensible. */ result = add_sigs(db, version, &zone->origin, dns_rdatatype_soa, - &sig_diff, zone_keys, nkeys, zone->mctx, inception, - soaexpire, check_ksk, keyset_kskonly); + zonediff.diff, zone_keys, nkeys, zone->mctx, + inception, soaexpire, check_ksk, keyset_kskonly); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_resigninc:add_sigs -> %s", @@ -5064,13 +5217,13 @@ zone_resigninc(dns_zone_t *zone) { } /* Write changes to journal file. */ - CHECK(zone_journal(zone, &sig_diff, "zone_resigninc")); + CHECK(zone_journal(zone, zonediff.diff, "zone_resigninc")); /* Everything has succeeded. Commit the changes. */ dns_db_closeversion(db, &version, ISC_TRUE); failure: - dns_diff_clear(&sig_diff); + dns_diff_clear(&_sig_diff); for (i = 0; i < nkeys; i++) dst_key_free(&zone_keys[i]); if (version != NULL) { @@ -5740,7 +5893,7 @@ update_sigs(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, dst_key_t *zone_keys[], unsigned int nkeys, dns_zone_t *zone, isc_stdtime_t inception, isc_stdtime_t expire, isc_stdtime_t now, isc_boolean_t check_ksk, isc_boolean_t keyset_kskonly, - dns_diff_t *sig_diff) + zonediff_t *zonediff) { dns_difftuple_t *tuple; isc_result_t result; @@ -5749,7 +5902,7 @@ update_sigs(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, tuple != NULL; tuple = ISC_LIST_HEAD(diff->tuples)) { result = del_sigs(zone, db, version, &tuple->name, - tuple->rdata.type, sig_diff, + tuple->rdata.type, zonediff, zone_keys, nkeys, now, ISC_FALSE); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, @@ -5758,7 +5911,7 @@ update_sigs(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, return (result); } result = add_sigs(db, version, &tuple->name, - tuple->rdata.type, sig_diff, + tuple->rdata.type, zonediff->diff, zone_keys, nkeys, zone->mctx, inception, expire, check_ksk, keyset_kskonly); if (result != ISC_R_SUCCESS) { @@ -5775,7 +5928,7 @@ update_sigs(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, !dns_name_equal(&tuple->name, &next->name))) next = ISC_LIST_NEXT(next, link); ISC_LIST_UNLINK(diff->tuples, tuple, link); - dns_diff_appendminimal(sig_diff, &tuple); + dns_diff_appendminimal(zonediff->diff, &tuple); INSIST(tuple == NULL); tuple = next; } while (tuple != NULL); @@ -5789,13 +5942,15 @@ update_sigs(dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, */ static void zone_nsec3chain(dns_zone_t *zone) { + const char *me = "zone_nsec3chain"; dns_db_t *db = NULL; dns_dbnode_t *node = NULL; dns_dbversion_t *version = NULL; - dns_diff_t sig_diff; + dns_diff_t _sig_diff; dns_diff_t nsec_diff; dns_diff_t nsec3_diff; dns_diff_t param_diff; + zonediff_t zonediff; dns_fixedname_t fixed; dns_fixedname_t nextfixed; dns_name_t *name, *nextname; @@ -5821,6 +5976,8 @@ zone_nsec3chain(dns_zone_t *zone) { isc_boolean_t updatensec = ISC_FALSE; dns_rdatatype_t privatetype = zone->privatetype; + ENTER; + dns_rdataset_init(&rdataset); dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); @@ -5829,8 +5986,9 @@ zone_nsec3chain(dns_zone_t *zone) { dns_diff_init(zone->mctx, ¶m_diff); dns_diff_init(zone->mctx, &nsec3_diff); dns_diff_init(zone->mctx, &nsec_diff); - dns_diff_init(zone->mctx, &sig_diff); - sig_diff.resign = zone->sigresigninginterval; + dns_diff_init(zone->mctx, &_sig_diff); + _sig_diff.resign = zone->sigresigninginterval; + zonediff_init(&zonediff, &_sig_diff); ISC_LIST_INIT(cleanup); /* @@ -6028,6 +6186,7 @@ zone_nsec3chain(dns_zone_t *zone) { result = dns_dbiterator_next(nsec3chain->dbiterator); if (result == ISC_R_NOMORE && nsec3chain->delete_nsec) { + dns_dbiterator_pause(nsec3chain->dbiterator); CHECK(fixup_nsec3param(db, version, nsec3chain, ISC_FALSE, privatetype, ¶m_diff)); @@ -6325,6 +6484,7 @@ zone_nsec3chain(dns_zone_t *zone) { if (rebuild_nsec) { if (nsec3chain != NULL) dns_dbiterator_pause(nsec3chain->dbiterator); + result = updatesecure(db, version, &zone->origin, zone->minimum, ISC_TRUE, &nsec_diff); @@ -6336,7 +6496,11 @@ zone_nsec3chain(dns_zone_t *zone) { goto failure; } } + if (rebuild_nsec3) { + if (nsec3chain != NULL) + dns_dbiterator_pause(nsec3chain->dbiterator); + result = dns_nsec3_addnsec3s(db, version, dns_db_origin(db), zone->minimum, ISC_FALSE, @@ -6351,12 +6515,17 @@ zone_nsec3chain(dns_zone_t *zone) { } } + if (nsec3chain != NULL) + dns_dbiterator_pause(nsec3chain->dbiterator); + /* * Add / update signatures for the NSEC3 records. */ + if (nsec3chain != NULL) + dns_dbiterator_pause(nsec3chain->dbiterator); result = update_sigs(&nsec3_diff, db, version, zone_keys, nkeys, zone, inception, expire, now, - check_ksk, keyset_kskonly, &sig_diff); + check_ksk, keyset_kskonly, &zonediff); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:" "update_sigs -> %s", dns_result_totext(result)); @@ -6369,7 +6538,7 @@ zone_nsec3chain(dns_zone_t *zone) { */ result = update_sigs(¶m_diff, db, version, zone_keys, nkeys, zone, inception, expire, now, - check_ksk, keyset_kskonly, &sig_diff); + check_ksk, keyset_kskonly, &zonediff); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:" "update_sigs -> %s", dns_result_totext(result)); @@ -6377,8 +6546,6 @@ zone_nsec3chain(dns_zone_t *zone) { } if (updatensec) { - if (nsec3chain != NULL) - dns_dbiterator_pause(nsec3chain->dbiterator); result = updatesecure(db, version, &zone->origin, zone->minimum, ISC_FALSE, &nsec_diff); if (result != ISC_R_SUCCESS) { @@ -6391,7 +6558,7 @@ zone_nsec3chain(dns_zone_t *zone) { result = update_sigs(&nsec_diff, db, version, zone_keys, nkeys, zone, inception, expire, now, - check_ksk, keyset_kskonly, &sig_diff); + check_ksk, keyset_kskonly, &zonediff); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:" "update_sigs -> %s", dns_result_totext(result)); @@ -6402,18 +6569,23 @@ zone_nsec3chain(dns_zone_t *zone) { * If we made no effective changes to the zone then we can just * cleanup otherwise we need to increment the serial. */ - if (ISC_LIST_HEAD(sig_diff.tuples) == NULL) + if (ISC_LIST_EMPTY(zonediff.diff->tuples)) { + /* + * No need to call dns_db_closeversion() here as it is + * called with commit = ISC_TRUE below. + */ goto done; + } result = del_sigs(zone, db, version, &zone->origin, dns_rdatatype_soa, - &sig_diff, zone_keys, nkeys, now, ISC_FALSE); + &zonediff, zone_keys, nkeys, now, ISC_FALSE); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:" "del_sigs -> %s", dns_result_totext(result)); goto failure; } - result = increment_soa_serial(db, version, &sig_diff, zone->mctx); + result = increment_soa_serial(db, version, zonediff.diff, zone->mctx); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:" "increment_soa_serial -> %s", @@ -6422,8 +6594,8 @@ zone_nsec3chain(dns_zone_t *zone) { } result = add_sigs(db, version, &zone->origin, dns_rdatatype_soa, - &sig_diff, zone_keys, nkeys, zone->mctx, inception, - soaexpire, check_ksk, keyset_kskonly); + zonediff.diff, zone_keys, nkeys, zone->mctx, + inception, soaexpire, check_ksk, keyset_kskonly); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:" "add_sigs -> %s", dns_result_totext(result)); @@ -6431,7 +6603,7 @@ zone_nsec3chain(dns_zone_t *zone) { } /* Write changes to journal file. */ - CHECK(zone_journal(zone, &sig_diff, "zone_nsec3chain")); + CHECK(zone_journal(zone, zonediff.diff, "zone_nsec3chain")); LOCK_ZONE(zone); zone_needdump(zone, DNS_DUMP_DELAY); @@ -6451,6 +6623,7 @@ zone_nsec3chain(dns_zone_t *zone) { /* * Everything has succeeded. Commit the changes. + * Unconditionally commit as zonediff.offline not checked above. */ dns_db_closeversion(db, &version, ISC_TRUE); @@ -6520,7 +6693,7 @@ zone_nsec3chain(dns_zone_t *zone) { dns_diff_clear(¶m_diff); dns_diff_clear(&nsec3_diff); dns_diff_clear(&nsec_diff); - dns_diff_clear(&sig_diff); + dns_diff_clear(&_sig_diff); if (iterator != NULL) dns_rdatasetiter_destroy(&iterator); @@ -6622,11 +6795,13 @@ del_sig(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, */ static void zone_sign(dns_zone_t *zone) { + const char *me = "zone_sign"; dns_db_t *db = NULL; dns_dbnode_t *node = NULL; dns_dbversion_t *version = NULL; - dns_diff_t sig_diff; + dns_diff_t _sig_diff; dns_diff_t post_diff; + zonediff_t zonediff; dns_fixedname_t fixed; dns_fixedname_t nextfixed; dns_name_t *name, *nextname; @@ -6648,14 +6823,17 @@ zone_sign(dns_zone_t *zone) { unsigned int nkeys = 0; isc_uint32_t nodes; + ENTER; + dns_rdataset_init(&rdataset); dns_fixedname_init(&fixed); name = dns_fixedname_name(&fixed); dns_fixedname_init(&nextfixed); nextname = dns_fixedname_name(&nextfixed); - dns_diff_init(zone->mctx, &sig_diff); - sig_diff.resign = zone->sigresigninginterval; + dns_diff_init(zone->mctx, &_sig_diff); + _sig_diff.resign = zone->sigresigninginterval; dns_diff_init(zone->mctx, &post_diff); + zonediff_init(&zonediff, &_sig_diff); ISC_LIST_INIT(cleanup); /* @@ -6769,7 +6947,7 @@ zone_sign(dns_zone_t *zone) { dns_dbiterator_pause(signing->dbiterator); CHECK(del_sig(db, version, name, node, nkeys, signing->algorithm, signing->keyid, - &sig_diff)); + zonediff.diff)); } /* @@ -6864,7 +7042,7 @@ zone_sign(dns_zone_t *zone) { build_nsec, zone_keys[i], inception, expire, zone->minimum, is_ksk, ISC_TF(both && keyset_kskonly), - &delegation, &sig_diff, + &delegation, zonediff.diff, &signatures, zone->mctx)); /* * If we are adding we are done. Look for other keys @@ -6946,7 +7124,7 @@ zone_sign(dns_zone_t *zone) { if (ISC_LIST_HEAD(post_diff.tuples) != NULL) { result = update_sigs(&post_diff, db, version, zone_keys, nkeys, zone, inception, expire, now, - check_ksk, keyset_kskonly, &sig_diff); + check_ksk, keyset_kskonly, &zonediff); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_sign:" "update_sigs -> %s", @@ -6958,7 +7136,9 @@ zone_sign(dns_zone_t *zone) { /* * Have we changed anything? */ - if (ISC_LIST_HEAD(sig_diff.tuples) == NULL) { + if (ISC_LIST_EMPTY(zonediff.diff->tuples)) { + if (zonediff.offline) + commit = ISC_TRUE; result = ISC_R_SUCCESS; goto pauseall; } @@ -6966,7 +7146,7 @@ zone_sign(dns_zone_t *zone) { commit = ISC_TRUE; result = del_sigs(zone, db, version, &zone->origin, dns_rdatatype_soa, - &sig_diff, zone_keys, nkeys, now, ISC_FALSE); + &zonediff, zone_keys, nkeys, now, ISC_FALSE); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_sign:del_sigs -> %s", @@ -6974,7 +7154,7 @@ zone_sign(dns_zone_t *zone) { goto failure; } - result = increment_soa_serial(db, version, &sig_diff, zone->mctx); + result = increment_soa_serial(db, version, zonediff.diff, zone->mctx); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_sign:increment_soa_serial -> %s", @@ -6987,8 +7167,8 @@ zone_sign(dns_zone_t *zone) { * termination is sensible. */ result = add_sigs(db, version, &zone->origin, dns_rdatatype_soa, - &sig_diff, zone_keys, nkeys, zone->mctx, inception, - soaexpire, check_ksk, keyset_kskonly); + zonediff.diff, zone_keys, nkeys, zone->mctx, + inception, soaexpire, check_ksk, keyset_kskonly); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, "zone_sign:add_sigs -> %s", @@ -6999,7 +7179,7 @@ zone_sign(dns_zone_t *zone) { /* * Write changes to journal file. */ - CHECK(zone_journal(zone, &sig_diff, "zone_sign")); + CHECK(zone_journal(zone, zonediff.diff, "zone_sign")); pauseall: /* @@ -7059,7 +7239,7 @@ zone_sign(dns_zone_t *zone) { signing = ISC_LIST_NEXT(signing, link)) dns_dbiterator_pause(signing->dbiterator); - dns_diff_clear(&sig_diff); + dns_diff_clear(&_sig_diff); for (i = 0; i < nkeys; i++) dst_key_free(&zone_keys[i]); @@ -7090,19 +7270,22 @@ normalize_key(dns_rdata_t *rr, dns_rdata_t *target, dns_rdata_dnskey_t dnskey; dns_rdata_keydata_t keydata; isc_buffer_t buf; + isc_result_t result; dns_rdata_reset(target); isc_buffer_init(&buf, data, size); switch (rr->type) { case dns_rdatatype_dnskey: - dns_rdata_tostruct(rr, &dnskey, NULL); + result = dns_rdata_tostruct(rr, &dnskey, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); dnskey.flags &= ~DNS_KEYFLAG_REVOKE; dns_rdata_fromstruct(target, rr->rdclass, dns_rdatatype_dnskey, &dnskey, &buf); break; case dns_rdatatype_keydata: - dns_rdata_tostruct(rr, &keydata, NULL); + result = dns_rdata_tostruct(rr, &keydata, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_keydata_todnskey(&keydata, &dnskey, NULL); dns_rdata_fromstruct(target, rr->rdclass, dns_rdatatype_dnskey, &dnskey, &buf); @@ -7509,7 +7692,8 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { result = dns_rdataset_next(&kfetch->keydataset)) { dns_rdata_reset(&keydatarr); dns_rdataset_current(&kfetch->keydataset, &keydatarr); - dns_rdata_tostruct(&keydatarr, &keydata, NULL); + result = dns_rdata_tostruct(&keydatarr, &keydata, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); /* * If any keydata record has a nonzero add holddown, then @@ -7599,7 +7783,8 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { dns_rdata_reset(&dnskeyrr); dns_rdataset_current(&kfetch->dnskeyset, &dnskeyrr); - dns_rdata_tostruct(&dnskeyrr, &dnskey, NULL); + result = dns_rdata_tostruct(&dnskeyrr, &dnskey, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); /* Skip ZSK's */ if (!ISC_TF(dnskey.flags & DNS_KEYFLAG_KSK)) @@ -7610,7 +7795,8 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { if (matchkey(&kfetch->keydataset, &dnskeyrr)) { dns_rdata_reset(&keydatarr); dns_rdataset_current(&kfetch->keydataset, &keydatarr); - dns_rdata_tostruct(&keydatarr, &keydata, NULL); + result = dns_rdata_tostruct(&keydatarr, &keydata, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); if (revoked && revocable(kfetch, &keydata)) { if (keydata.addhd > now) { @@ -7710,7 +7896,8 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { &keydatarr)); } else if (newkey) { /* Convert DNSKEY to KEYDATA */ - dns_rdata_tostruct(&dnskeyrr, &dnskey, NULL); + result = dns_rdata_tostruct(&dnskeyrr, &dnskey, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); dns_keydata_fromdnskey(&keydata, &dnskey, 0, 0, 0, NULL); keydata.addhd = initializing ? now : now + MONTH; @@ -7729,7 +7916,8 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) { if (trustkey) { /* Trust this key. */ - dns_rdata_tostruct(&dnskeyrr, &dnskey, NULL); + result = dns_rdata_tostruct(&dnskeyrr, &dnskey, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); trust_key(zone, keyname, &dnskey, mctx); } @@ -8020,6 +8208,14 @@ zone_maintenance(dns_zone_t *zone) { } /* + * Slaves send notifies before backing up to disk, masters after. + */ + if (zone->type == dns_zone_slave && + DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDNOTIFY) && + isc_time_compare(&now, &zone->notifytime) >= 0) + zone_notify(zone, &now); + + /* * Do we need to consolidate the backing store? */ switch (zone->type) { @@ -8049,14 +8245,28 @@ zone_maintenance(dns_zone_t *zone) { } /* + * Master/redirect zones send notifies now, if needed + */ + switch (zone->type) { + case dns_zone_master: + if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDNOTIFY) && + isc_time_compare(&now, &zone->notifytime) >= 0) + zone_notify(zone, &now); + default: + break; + } + + /* * Do we need to refresh keys? */ switch (zone->type) { case dns_zone_key: - if (isc_time_compare(&now, &zone->refreshkeytime) >= 0 && - DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED) && - !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_REFRESHING)) - zone_refreshkeys(zone); + if (isc_time_compare(&now, &zone->refreshkeytime) >= 0) { + if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED) && + !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_REFRESHING)) { + zone_refreshkeys(zone); + } + } break; case dns_zone_master: if (!isc_time_isepoch(&zone->refreshkeytime) && @@ -8070,12 +8280,6 @@ zone_maintenance(dns_zone_t *zone) { case dns_zone_master: case dns_zone_slave: /* - * Do we need to send out notify messages? - */ - if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDNOTIFY) && - isc_time_compare(&now, &zone->notifytime) >= 0) - zone_notify(zone, &now); - /* * Do we need to sign/resign some RRsets? */ if (!isc_time_isepoch(&zone->signingtime) && @@ -8088,7 +8292,7 @@ zone_maintenance(dns_zone_t *zone) { isc_time_compare(&now, &zone->nsec3chaintime) >= 0) zone_nsec3chain(zone); /* - * Do we need to issue a key expiry warning. + * Do we need to issue a key expiry warning? */ if (!isc_time_isepoch(&zone->keywarntime) && isc_time_compare(&now, &zone->keywarntime) >= 0) @@ -8237,6 +8441,7 @@ dns_zone_dump(dns_zone_t *zone) { static void zone_needdump(dns_zone_t *zone, unsigned int delay) { + const char me[] = "zone_needdump"; isc_time_t dumptime; isc_time_t now; @@ -8246,6 +8451,7 @@ zone_needdump(dns_zone_t *zone, unsigned int delay) { REQUIRE(DNS_ZONE_VALID(zone)); REQUIRE(LOCKED_ZONE(zone)); + ENTER; /* * Do we have a place to dump to and are we loaded? @@ -8898,9 +9104,9 @@ notify_send_toaddr(isc_task_t *task, isc_event_t *event) { dns_message_destroy(&message); cleanup: UNLOCK_ZONE(notify->zone); + isc_event_free(&event); if (result != ISC_R_SUCCESS) notify_destroy(notify, ISC_FALSE); - isc_event_free(&event); } static void @@ -9247,7 +9453,7 @@ stub_callback(isc_task_t *task, isc_event_t *event) { isc_time_t now; isc_boolean_t exiting = ISC_FALSE; isc_interval_t i; - unsigned int j; + unsigned int j, soacount; stub = revent->ev_arg; INSIST(DNS_STUB_VALID(stub)); @@ -9390,9 +9596,9 @@ stub_callback(isc_task_t *task, isc_event_t *event) { ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_write); if (zone->db == NULL) zone_attachdb(zone, stub->db); - result = zone_get_from_db(zone, zone->db, NULL, NULL, NULL, &refresh, - &retry, &expire, NULL, NULL); - if (result == ISC_R_SUCCESS) { + result = zone_get_from_db(zone, zone->db, NULL, &soacount, NULL, + &refresh, &retry, &expire, NULL, NULL); + if (result == ISC_R_SUCCESS && soacount > 0U) { zone->refresh = RANGE(refresh, zone->minrefresh, zone->maxrefresh); zone->retry = RANGE(retry, zone->minretry, zone->maxretry); @@ -9728,10 +9934,12 @@ refresh_callback(isc_task_t *task, isc_event_t *event) { serial = soa.serial; if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED)) { - result = zone_get_from_db(zone, zone->db, NULL, NULL, + unsigned int soacount; + result = zone_get_from_db(zone, zone->db, NULL, &soacount, &oldserial, NULL, NULL, NULL, NULL, NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); + RUNTIME_CHECK(soacount > 0U); zone_debuglog(zone, me, 1, "serial: new %u, old %u", serial, oldserial); } else @@ -10953,6 +11161,7 @@ dns_zone_notifyreceive(dns_zone_t *zone, isc_sockaddr_t *from, result = dns_rdataset_first(rdataset); if (result == ISC_R_SUCCESS) { isc_uint32_t serial = 0, oldserial; + unsigned int soacount; dns_rdataset_current(rdataset, &rdata); result = dns_rdata_tostruct(&rdata, &soa, NULL); @@ -10962,10 +11171,11 @@ dns_zone_notifyreceive(dns_zone_t *zone, isc_sockaddr_t *from, * The following should safely be performed without DB * lock and succeed in this context. */ - result = zone_get_from_db(zone, zone->db, NULL, NULL, - &oldserial, NULL, NULL, NULL, - NULL, NULL); + result = zone_get_from_db(zone, zone->db, NULL, + &soacount, &oldserial, NULL, + NULL, NULL, NULL, NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); + RUNTIME_CHECK(soacount > 0U); if (isc_serial_le(serial, oldserial)) { dns_zone_log(zone, ISC_LOG_INFO, @@ -11652,6 +11862,7 @@ zone_replacedb(dns_zone_t *zone, dns_db_t *db, isc_boolean_t dump) { DNS_ZONE_OPTION(zone, DNS_ZONEOPT_IXFRFROMDIFFS) && !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_FORCEXFER)) { isc_uint32_t serial, oldserial; + unsigned int soacount; dns_zone_log(zone, ISC_LOG_DEBUG(3), "generating diffs"); @@ -11666,10 +11877,11 @@ zone_replacedb(dns_zone_t *zone, dns_db_t *db, isc_boolean_t dump) { /* * This is checked in zone_postload() for master zones. */ - result = zone_get_from_db(zone, zone->db, NULL, NULL, + result = zone_get_from_db(zone, zone->db, NULL, &soacount, &oldserial, NULL, NULL, NULL, NULL, NULL); RUNTIME_CHECK(result == ISC_R_SUCCESS); + RUNTIME_CHECK(soacount > 0U); if (zone->type == dns_zone_slave && !isc_serial_gt(serial, oldserial)) { isc_uint32_t serialmin, serialmax; @@ -11916,6 +12128,8 @@ zone_xfrdone(dns_zone_t *zone, isc_result_t result) { * won't hurt with an AXFR. */ if (zone->masterfile != NULL || zone->journal != NULL) { + unsigned int delay = DNS_DUMP_DELAY; + result = ISC_R_FAILURE; if (zone->journal != NULL) result = isc_file_settime(zone->journal, &now); @@ -11923,14 +12137,16 @@ zone_xfrdone(dns_zone_t *zone, isc_result_t result) { zone->masterfile != NULL) result = isc_file_settime(zone->masterfile, &now); - /* Someone removed the file from underneath us! */ - if (result == ISC_R_FILENOTFOUND && - zone->masterfile != NULL) { - unsigned int delay = DNS_DUMP_DELAY; - if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NODELAY)) - delay = 0; + + if ((DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NODELAY) != 0) || + result == ISC_R_FILENOTFOUND) + delay = 0; + + if ((result == ISC_R_SUCCESS || + result == ISC_R_FILENOTFOUND) && + zone->masterfile != NULL) zone_needdump(zone, delay); - } else if (result != ISC_R_SUCCESS) + else if (result != ISC_R_SUCCESS) dns_zone_log(zone, ISC_LOG_ERROR, "transfer: could not set file " "modification time of '%s': %s", @@ -13323,6 +13539,8 @@ dns_zonemgr_unreachabledel(dns_zonemgr_t *zmgr, isc_sockaddr_t *remote, for (i = 0; i < UNREACH_CHACHE_SIZE; i++) { if (isc_sockaddr_equal(&zmgr->unreachable[i].remote, remote) && isc_sockaddr_equal(&zmgr->unreachable[i].local, local)) { + if (zmgr->unreachable[i].expire == 0) + break; result = isc_rwlock_tryupgrade(&zmgr->urlock); if (result == ISC_R_SUCCESS) { locktype = isc_rwlocktype_write; @@ -13994,7 +14212,7 @@ add_signing_records(dns_db_t *db, dns_rdatatype_t privatetype, static isc_result_t sign_apex(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, - dns_diff_t *diff, dns_diff_t *sig_diff) + dns_diff_t *diff, zonediff_t *zonediff) { isc_result_t result; isc_stdtime_t now, inception, soaexpire; @@ -14034,7 +14252,7 @@ sign_apex(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, if (tuple == NULL) { result = del_sigs(zone, db, ver, &zone->origin, - dns_rdatatype_dnskey, sig_diff, + dns_rdatatype_dnskey, zonediff, zone_keys, nkeys, now, ISC_FALSE); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, @@ -14043,7 +14261,7 @@ sign_apex(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, goto failure; } result = add_sigs(db, ver, &zone->origin, dns_rdatatype_dnskey, - sig_diff, zone_keys, nkeys, zone->mctx, + zonediff->diff, zone_keys, nkeys, zone->mctx, inception, soaexpire, check_ksk, keyset_kskonly); if (result != ISC_R_SUCCESS) { @@ -14056,7 +14274,7 @@ sign_apex(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, result = update_sigs(diff, db, ver, zone_keys, nkeys, zone, inception, soaexpire, now, check_ksk, - keyset_kskonly, sig_diff); + keyset_kskonly, zonediff); if (result != ISC_R_SUCCESS) { dns_zone_log(zone, ISC_LOG_ERROR, @@ -14209,7 +14427,8 @@ zone_rekey(dns_zone_t *zone) { dns_rdataset_t soaset, soasigs, keyset, keysigs; dns_dnsseckeylist_t dnskeys, keys, rmkeys; dns_dnsseckey_t *key; - dns_diff_t diff, sig_diff; + dns_diff_t diff, _sig_diff; + zonediff_t zonediff; isc_boolean_t commit = ISC_FALSE, newactive = ISC_FALSE; isc_boolean_t newalg = ISC_FALSE; isc_boolean_t fullsign; @@ -14233,8 +14452,9 @@ zone_rekey(dns_zone_t *zone) { dir = dns_zone_getkeydirectory(zone); mctx = zone->mctx; dns_diff_init(mctx, &diff); - dns_diff_init(mctx, &sig_diff); - sig_diff.resign = zone->sigresigninginterval; + dns_diff_init(mctx, &_sig_diff); + _sig_diff.resign = zone->sigresigninginterval; + zonediff_init(&zonediff, &_sig_diff); CHECK(dns_zone_getdb(zone, &db)); CHECK(dns_db_newversion(db, &ver)); @@ -14334,8 +14554,8 @@ zone_rekey(dns_zone_t *zone) { ISC_TF(newalg || fullsign))); CHECK(increment_soa_serial(db, ver, &diff, mctx)); CHECK(add_chains(zone, db, ver, &diff)); - CHECK(sign_apex(zone, db, ver, &diff, &sig_diff)); - CHECK(zone_journal(zone, &sig_diff, "zone_rekey")); + CHECK(sign_apex(zone, db, ver, &diff, &zonediff)); + CHECK(zone_journal(zone, zonediff.diff, "zone_rekey")); commit = ISC_TRUE; } } @@ -14425,7 +14645,7 @@ zone_rekey(dns_zone_t *zone) { * Cause the zone to add/delete NSEC3 chains for the * deferred NSEC3PARAM changes. */ - for (tuple = ISC_LIST_HEAD(sig_diff.tuples); + for (tuple = ISC_LIST_HEAD(zonediff.diff->tuples); tuple != NULL; tuple = ISC_LIST_NEXT(tuple, link)) { unsigned char buf[DNS_NSEC3PARAM_BUFFERSIZE]; @@ -14500,7 +14720,7 @@ zone_rekey(dns_zone_t *zone) { failure: dns_diff_clear(&diff); - dns_diff_clear(&sig_diff); + dns_diff_clear(&_sig_diff); clear_keylist(&dnskeys, mctx); clear_keylist(&keys, mctx); diff --git a/contrib/bind9/lib/export/dns/Makefile.in b/contrib/bind9/lib/export/dns/Makefile.in index 6df36fe..f575f86 100644 --- a/contrib/bind9/lib/export/dns/Makefile.in +++ b/contrib/bind9/lib/export/dns/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -43,8 +43,9 @@ LIBS = @LIBS@ # Alphabetically +OPENSSLGOSTLINKOBJS = opensslgost_link.@O@ OPENSSLLINKOBJS = openssl_link.@O@ openssldh_link.@O@ openssldsa_link.@O@ \ - opensslecdsa_link.@O@ opensslgost_link.@O@ opensslrsa_link.@O@ + opensslecdsa_link.@O@ @OPENSSLGOSTLINKOBJS@ opensslrsa_link.@O@ DSTOBJS = @OPENSSLLINKOBJS@ \ dst_api.@O@ dst_lib.@O@ dst_parse.@O@ dst_result.@O@ \ @@ -71,8 +72,9 @@ OBJS= ${DNSOBJS} ${OTHEROBJS} ${DSTOBJS} ${PORTDNSOBJS} # Alphabetically +OPENSSLGOSTLINKSRCS = opensslgost_link.c OPENSSLLINKSRCS = openssl_link.c openssldh_link.c openssldsa_link.c \ - opensslecdsa_link.c opensslgost_link.c opensslrsa_link.c + opensslecdsa_link.c @OPENSSLGOSTLINKSRCS@ opensslrsa_link.c DSTSRCS = @OPENSSLLINKSRCS@ \ dst_api.c dst_lib.c dst_parse.c \ diff --git a/contrib/bind9/lib/export/irs/Makefile.in b/contrib/bind9/lib/export/irs/Makefile.in index 2cbc0bb..b2520f9 100644 --- a/contrib/bind9/lib/export/irs/Makefile.in +++ b/contrib/bind9/lib/export/irs/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -24,8 +24,9 @@ export_srcdir = @top_srcdir@/lib/export @BIND9_MAKE_INCLUDES@ -CINCLUDES = -I. -I./include -I${srcdir}/include \ +CINCLUDES = -I. -I./include -I${srcdir}/include -I ../../irs/include \ ${ISCCFG_INCLUDES} -I../dns/include ${DNS_INCLUDES} \ + -I../dns/include ${DNS_INCLUDES} \ -I${export_srcdir}/isc/include ${ISC_INCLUDES} CDEFINES = CWARNINGS = diff --git a/contrib/bind9/lib/export/isc/Makefile.in b/contrib/bind9/lib/export/isc/Makefile.in index 86726ab..c04a907 100644 --- a/contrib/bind9/lib/export/isc/Makefile.in +++ b/contrib/bind9/lib/export/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -67,12 +67,11 @@ OBJS = @ISC_EXTRA_OBJS@ \ error.@O@ event.@O@ \ hash.@O@ hex.@O@ hmacmd5.@O@ hmacsha.@O@ \ inet_aton.@O@ iterated_hash.@O@ lex.@O@ lfsr.@O@ log.@O@ \ - md5.@O@ mutexblock.@O@ \ - netaddr.@O@ netscope.@O@ \ - ondestroy.@O@ \ - parseint.@O@ portset.@O@ radix.@O@ \ - random.@O@ refcount.@O@ region.@O@ result.@O@ rwlock.@O@ \ - serial.@O@ sha1.@O@ sha2.@O@ sockaddr.@O@ stats.@O@ string.@O@ \ + md5.@O@ mutexblock.@O@ netaddr.@O@ netscope.@O@ \ + ondestroy.@O@ parseint.@O@ portset.@O@ radix.@O@ \ + random.@O@ refcount.@O@ region.@O@ regex.@O@ result.@O@ \ + rwlock.@O@ serial.@O@ sha1.@O@ sha2.@O@ sockaddr.@O@ \ + stats.@O@ string.@O@ \ symtab.@O@ \ version.@O@ \ ${APIOBJS} ${ISCDRIVEROBJS} \ @@ -94,7 +93,7 @@ SRCS = @ISC_EXTRA_SRCS@ \ netaddr.c netscope.c \ ondestroy.c \ parseint.c portset.c radix.c \ - random.c refcount.c region.c result.c rwlock.c \ + random.c refcount.c region.c regex.c result.c rwlock.c \ serial.c sha1.c sha2.c sockaddr.c stats.c string.c symtab.c \ version.c \ ${APISRCS} ${ISCDRIVERSRCS} diff --git a/contrib/bind9/lib/export/isc/include/isc/Makefile.in b/contrib/bind9/lib/export/isc/include/isc/Makefile.in index 91f538c..8c7eff8 100644 --- a/contrib/bind9/lib/export/isc/include/isc/Makefile.in +++ b/contrib/bind9/lib/export/isc/include/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -35,7 +35,7 @@ HEADERS = app.h assertions.h base64.h bitstring.h boolean.h \ magic.h md5.h mem.h msgcat.h msgs.h \ mutexblock.h namespace.h netaddr.h ondestroy.h os.h parseint.h \ print.h quota.h radix.h random.h ratelimiter.h \ - refcount.h region.h resource.h \ + refcount.h regex.h region.h resource.h \ result.h resultclass.h rwlock.h serial.h sha1.h sha2.h \ sockaddr.h socket.h stdio.h stdlib.h string.h \ symtab.h \ diff --git a/contrib/bind9/lib/export/isc/nls/Makefile.in b/contrib/bind9/lib/export/isc/nls/Makefile.in index 2515685..16a6a86 100644 --- a/contrib/bind9/lib/export/isc/nls/Makefile.in +++ b/contrib/bind9/lib/export/isc/nls/Makefile.in @@ -16,10 +16,12 @@ top_srcdir = @top_srcdir@ srcdir = @top_srcdir@/lib/isc/nls +export_srcdir = @top_srcdir@/lib/export @BIND9_MAKE_INCLUDES@ CINCLUDES = -I${srcdir}/unix/include \ + -I${export_srcdir}/isc/include \ ${ISC_INCLUDES} CDEFINES = diff --git a/contrib/bind9/lib/export/isc/nothreads/Makefile.in b/contrib/bind9/lib/export/isc/nothreads/Makefile.in index 994da63..4640993 100644 --- a/contrib/bind9/lib/export/isc/nothreads/Makefile.in +++ b/contrib/bind9/lib/export/isc/nothreads/Makefile.in @@ -16,11 +16,13 @@ top_srcdir = @top_srcdir@ srcdir = @top_srcdir@/lib/isc/nothreads +export_srcdir = @top_srcdir@/lib/export @BIND9_MAKE_INCLUDES@ CINCLUDES = -I${srcdir}/include \ -I${srcdir}/../unix/include \ + -I${export_srcdir}/isc/include \ -I../include \ -I${srcdir}/../include \ -I${srcdir}/.. diff --git a/contrib/bind9/lib/export/isc/pthreads/Makefile.in b/contrib/bind9/lib/export/isc/pthreads/Makefile.in index f08e5c6..80c5e3b 100644 --- a/contrib/bind9/lib/export/isc/pthreads/Makefile.in +++ b/contrib/bind9/lib/export/isc/pthreads/Makefile.in @@ -16,11 +16,13 @@ top_srcdir = @top_srcdir@ srcdir = @top_srcdir@/lib/isc/pthreads +export_srcdir = @top_srcdir@/lib/export @BIND9_MAKE_INCLUDES@ CINCLUDES = -I${srcdir}/include \ -I${srcdir}/../unix/include \ + -I${export_srcdir}/isc/include \ -I../include \ -I${srcdir}/../include \ -I${srcdir}/.. diff --git a/contrib/bind9/lib/export/isc/unix/Makefile.in b/contrib/bind9/lib/export/isc/unix/Makefile.in index f5cf7e8..1873202 100644 --- a/contrib/bind9/lib/export/isc/unix/Makefile.in +++ b/contrib/bind9/lib/export/isc/unix/Makefile.in @@ -16,11 +16,13 @@ top_srcdir = @top_srcdir@ srcdir = @top_srcdir@/lib/isc/unix +export_srcdir = @top_srcdir@/lib/export @BIND9_MAKE_INCLUDES@ CINCLUDES = -I${srcdir}/include \ -I${srcdir}/../@ISC_THREAD_DIR@/include \ + -I${export_srcdir}/isc/include \ -I../include \ -I${srcdir}/../include \ -I${srcdir}/.. diff --git a/contrib/bind9/lib/export/isccfg/Makefile.in b/contrib/bind9/lib/export/isccfg/Makefile.in index 907af50..2a791a4 100644 --- a/contrib/bind9/lib/export/isccfg/Makefile.in +++ b/contrib/bind9/lib/export/isccfg/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -31,7 +31,7 @@ CDEFINES = CWARNINGS = ISCLIBS = ../isc/libisc.@A@ -DNSLIBS = ../dns/libdns.@A@ +DNSLIBS = ../dns/libdns.@A@ @DNS_CRYPTO_LIBS@ ISCDEPLIBS = ../../lib/isc/libisc.@A@ ISCCFGDEPLIBS = libisccfg.@A@ diff --git a/contrib/bind9/lib/export/samples/Makefile.in b/contrib/bind9/lib/export/samples/Makefile.in index cdc66b1..194aaeb 100644 --- a/contrib/bind9/lib/export/samples/Makefile.in +++ b/contrib/bind9/lib/export/samples/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -25,7 +25,8 @@ export_srcdir = @top_srcdir@/lib/export CINCLUDES = -I${srcdir}/include -I../dns/include \ -I${export_srcdir}/isc/include \ ${DNS_INCLUDES} ${ISC_INCLUDES} \ - -I${top_srcdir}/lib/irs/include + -I${top_srcdir}/lib/irs/include \ + -I../../irs/include CDEFINES = CWARNINGS = diff --git a/contrib/bind9/lib/export/samples/nsprobe.c b/contrib/bind9/lib/export/samples/nsprobe.c index 869b194..1d7ed3b 100644 --- a/contrib/bind9/lib/export/samples/nsprobe.c +++ b/contrib/bind9/lib/export/samples/nsprobe.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -282,8 +282,6 @@ make_querymessage(dns_message_t *message, dns_name_t *qname0, dns_message_puttempname(message, &qname); if (qrdataset != NULL) dns_message_puttemprdataset(message, &qrdataset); - if (message != NULL) - dns_message_destroy(&message); return (result); } @@ -293,7 +291,7 @@ make_querymessage(dns_message_t *message, dns_name_t *qname0, static inline void increment_entry(unsigned long *entryp) { (*entryp)++; - INSIST(*entryp != 0); /* check overflow */ + INSIST(*entryp != 0U); /* check overflow */ } static void @@ -392,57 +390,57 @@ update_stat(struct probe_trans *trans) { } /* Update per domain statistics */ - if (local_stat.ignore > 0) { + if (local_stat.ignore > 0U) { if (verbose_level > 0) printf("%s:ignore\n", trans->domain); increment_entry(&domain_stat.ignore); err_count++; } - if (local_stat.nxdomain > 0) { + if (local_stat.nxdomain > 0U) { if (verbose_level > 0) printf("%s:nxdomain\n", trans->domain); increment_entry(&domain_stat.nxdomain); err_count++; } - if (local_stat.othererr > 0) { + if (local_stat.othererr > 0U) { if (verbose_level > 0) printf("%s:othererr\n", trans->domain); increment_entry(&domain_stat.othererr); err_count++; } - if (local_stat.multiplesoa > 0) { + if (local_stat.multiplesoa > 0U) { if (verbose_level > 0) printf("%s:multiplesoa\n", trans->domain); increment_entry(&domain_stat.multiplesoa); err_count++; } - if (local_stat.multiplecname > 0) { + if (local_stat.multiplecname > 0U) { if (verbose_level > 0) printf("%s:multiplecname\n", trans->domain); increment_entry(&domain_stat.multiplecname); err_count++; } - if (local_stat.brokenanswer > 0) { + if (local_stat.brokenanswer > 0U) { if (verbose_level > 0) printf("%s:brokenanswer\n", trans->domain); increment_entry(&domain_stat.brokenanswer); err_count++; } - if (local_stat.lame > 0) { + if (local_stat.lame > 0U) { if (verbose_level > 0) printf("%s:lame\n", trans->domain); increment_entry(&domain_stat.lame); err_count++; } - if (err_count > 1) + if (err_count > 1U) increment_entry(&multiple_error_domains); /* * We regard the domain as valid if and only if no authoritative server * has a problem and at least one server is known to be valid. */ - if (local_stat.valid > 0 && err_count == 0) { + if (local_stat.valid > 0U && err_count == 0U) { if (verbose_level > 1) printf("%s:valid\n", trans->domain); increment_entry(&domain_stat.valid); @@ -452,7 +450,7 @@ update_stat(struct probe_trans *trans) { * If the domain has no available server or all servers have the * 'unknown' result, the domain's result is also regarded as unknown. */ - if (local_stat.valid == 0 && err_count == 0) { + if (local_stat.valid == 0U && err_count == 0U) { if (verbose_level > 1) printf("%s:unknown\n", trans->domain); increment_entry(&domain_stat.unknown); @@ -1218,5 +1216,5 @@ main(int argc, char *argv[]) { isc_app_ctxfinish(actx); ctxs_destroy(&mctx, &actx, &taskmgr, &socketmgr, &timermgr); - exit(0); + return (0); } diff --git a/contrib/bind9/lib/export/samples/sample-async.c b/contrib/bind9/lib/export/samples/sample-async.c index e646e79..a70dd47 100644 --- a/contrib/bind9/lib/export/samples/sample-async.c +++ b/contrib/bind9/lib/export/samples/sample-async.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -398,5 +398,5 @@ main(int argc, char *argv[]) { isc_app_ctxfinish(query_actx); ctxs_destroy(&mctx, &query_actx, &taskmgr, &socketmgr, &timermgr); - exit(0); + return (0); } diff --git a/contrib/bind9/lib/export/samples/sample-gai.c b/contrib/bind9/lib/export/samples/sample-gai.c index 6dc4014..243d07a 100644 --- a/contrib/bind9/lib/export/samples/sample-gai.c +++ b/contrib/bind9/lib/export/samples/sample-gai.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -61,7 +61,7 @@ do_gai(int family, char *hostname) { } } - freeaddrinfo(res); + freeaddrinfo(res0); } int @@ -73,5 +73,5 @@ main(int argc, char *argv[]) { do_gai(AF_INET6, argv[1]); do_gai(AF_UNSPEC, argv[1]); - exit(0); + return (0); } diff --git a/contrib/bind9/lib/export/samples/sample-request.c b/contrib/bind9/lib/export/samples/sample-request.c index d5d2312..07baf39 100644 --- a/contrib/bind9/lib/export/samples/sample-request.c +++ b/contrib/bind9/lib/export/samples/sample-request.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -77,9 +77,12 @@ make_querymessage(dns_message_t *message, const char *namestr, isc_buffer_t b; size_t namelen; + REQUIRE(message != NULL); + REQUIRE(namestr != NULL); + /* Construct qname */ namelen = strlen(namestr); - isc_buffer_init(&b, namestr, namelen); + isc_buffer_constinit(&b, namestr, namelen); isc_buffer_add(&b, namelen); dns_fixedname_init(&fixedqname); qname0 = dns_fixedname_name(&fixedqname); @@ -115,8 +118,7 @@ make_querymessage(dns_message_t *message, const char *namestr, dns_message_puttempname(message, &qname); if (qrdataset != NULL) dns_message_puttemprdataset(message, &qrdataset); - if (message != NULL) - dns_message_destroy(&message); + dns_message_destroy(&message); return (result); } @@ -259,5 +261,5 @@ main(int argc, char *argv[]) { dns_client_destroy(&client); dns_lib_shutdown(); - exit(0); + return (0); } diff --git a/contrib/bind9/lib/export/samples/sample-update.c b/contrib/bind9/lib/export/samples/sample-update.c index e54d154..2c35baa 100644 --- a/contrib/bind9/lib/export/samples/sample-update.c +++ b/contrib/bind9/lib/export/samples/sample-update.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -305,7 +305,7 @@ main(int argc, char *argv[]) { dns_client_destroy(&client); dns_lib_shutdown(); - exit(0); + return (0); } /* @@ -372,7 +372,7 @@ parse_name(char **cmdlinep, dns_name_t *name) { isc_buffer_t source; word = nsu_strsep(cmdlinep, " \t\r\n"); - if (*word == 0) { + if (word == NULL || *word == 0) { fprintf(stderr, "could not read owner name\n"); exit(1); } diff --git a/contrib/bind9/lib/export/samples/sample.c b/contrib/bind9/lib/export/samples/sample.c index 7fc6a30..b121a0d 100644 --- a/contrib/bind9/lib/export/samples/sample.c +++ b/contrib/bind9/lib/export/samples/sample.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -172,7 +172,9 @@ set_key(dns_client_t *client, char *keynamestr, char *keystr, } static void -addserver(dns_client_t *client, const char *addrstr, const char *namespace) { +addserver(dns_client_t *client, const char *addrstr, const char *port, + const char *namespace) +{ struct addrinfo hints, *res; int gai_error; isc_sockaddr_t sa; @@ -188,7 +190,7 @@ addserver(dns_client_t *client, const char *addrstr, const char *namespace) { hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = IPPROTO_UDP; hints.ai_flags = AI_NUMERICHOST; - gai_error = getaddrinfo(addrstr, "53", &hints, &res); + gai_error = getaddrinfo(addrstr, port, &hints, &res); if (gai_error != 0) { fprintf(stderr, "getaddrinfo failed: %s\n", gai_strerror(gai_error)); @@ -196,15 +198,15 @@ addserver(dns_client_t *client, const char *addrstr, const char *namespace) { } INSIST(res->ai_addrlen <= sizeof(sa.type)); memcpy(&sa.type, res->ai_addr, res->ai_addrlen); - freeaddrinfo(res); sa.length = res->ai_addrlen; + freeaddrinfo(res); ISC_LINK_INIT(&sa, link); ISC_LIST_INIT(servers); ISC_LIST_APPEND(servers, &sa, link); if (namespace != NULL) { namelen = strlen(namespace); - isc_buffer_init(&b, namespace, namelen); + isc_buffer_constinit(&b, namespace, namelen); isc_buffer_add(&b, namelen); dns_fixedname_init(&fname); name = dns_fixedname_name(&fname); @@ -245,8 +247,9 @@ main(int argc, char *argv[]) { isc_mem_t *keymctx = NULL; unsigned int clientopt, resopt; isc_boolean_t is_sep = ISC_FALSE; + const char *port = "53"; - while ((ch = getopt(argc, argv, "a:es:t:k:K:")) != -1) { + while ((ch = getopt(argc, argv, "a:es:t:k:K:p:")) != -1) { switch (ch) { case 't': tr.base = optarg; @@ -279,6 +282,9 @@ main(int argc, char *argv[]) { case 'K': keystr = optarg; break; + case 'p': + port = optarg; + break; default: usage(); } @@ -318,11 +324,11 @@ main(int argc, char *argv[]) { } /* Set the nameserver */ - addserver(client, argv[0], NULL); + addserver(client, argv[0], port, NULL); /* Set the alternate nameserver (when specified) */ if (altserver != NULL) - addserver(client, altserveraddr, altservername); + addserver(client, altserveraddr, port, altservername); /* Install DNSSEC key (if given) */ if (keynamestr != NULL) { @@ -374,5 +380,5 @@ main(int argc, char *argv[]) { isc_mem_destroy(&keymctx); dns_lib_shutdown(); - exit(0); + return (0); } diff --git a/contrib/bind9/lib/irs/api b/contrib/bind9/lib/irs/api index ba19dd9..5c8dd5e 100644 --- a/contrib/bind9/lib/irs/api +++ b/contrib/bind9/lib/irs/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 +# 9.9-sub: 130-139 LIBINTERFACE = 80 -LIBREVISION = 2 +LIBREVISION = 4 LIBAGE = 0 diff --git a/contrib/bind9/lib/irs/dnsconf.c b/contrib/bind9/lib/irs/dnsconf.c index 4a7d58b..529cebd 100644 --- a/contrib/bind9/lib/irs/dnsconf.c +++ b/contrib/bind9/lib/irs/dnsconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -144,8 +144,8 @@ configure_dnsseckeys(irs_dnsconf_t *conf, cfg_obj_t *cfgobj, /* Configure key name */ dns_fixedname_init(&fkeyname); keyname_base = dns_fixedname_name(&fkeyname); - isc_buffer_init(&namebuf, keynamestr, - strlen(keynamestr)); + isc_buffer_constinit(&namebuf, keynamestr, + strlen(keynamestr)); isc_buffer_add(&namebuf, strlen(keynamestr)); result = dns_name_fromtext(keyname_base, &namebuf, dns_rootname, 0, NULL); diff --git a/contrib/bind9/lib/irs/getaddrinfo.c b/contrib/bind9/lib/irs/getaddrinfo.c index 4b1f4a9..1de540f 100644 --- a/contrib/bind9/lib/irs/getaddrinfo.c +++ b/contrib/bind9/lib/irs/getaddrinfo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -136,6 +136,7 @@ #include <isc/lib.h> #include <isc/mem.h> #include <isc/sockaddr.h> +#include <isc/string.h> #include <isc/util.h> #include <dns/client.h> @@ -479,8 +480,10 @@ getaddrinfo(const char *hostname, const char *servname, err = (net_order[i])(hostname, flags, &ai_list, socktype, port); if (err != 0) { - if (ai_list != NULL) + if (ai_list != NULL) { freeaddrinfo(ai_list); + ai_list = NULL; + } break; } } @@ -549,7 +552,7 @@ make_resstate(isc_mem_t *mctx, gai_statehead_t *head, const char *hostname, /* Construct base domain name */ namelen = strlen(domain); - isc_buffer_init(&b, domain, namelen); + isc_buffer_constinit(&b, domain, namelen); isc_buffer_add(&b, namelen); dns_fixedname_init(&fixeddomain); qdomain = dns_fixedname_name(&fixeddomain); @@ -561,7 +564,7 @@ make_resstate(isc_mem_t *mctx, gai_statehead_t *head, const char *hostname, /* Construct query name */ namelen = strlen(hostname); - isc_buffer_init(&b, hostname, namelen); + isc_buffer_constinit(&b, hostname, namelen); isc_buffer_add(&b, namelen); dns_fixedname_init(&state->fixedname); state->qname = dns_fixedname_name(&state->fixedname); @@ -781,9 +784,9 @@ process_answer(isc_task_t *task, isc_event_t *event) { switch (family) { case AF_INET: dns_rdataset_current(rdataset, &rdata); - dns_rdata_tostruct(&rdata, &rdata_a, - NULL); - + result = dns_rdata_tostruct(&rdata, &rdata_a, + NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); SIN(ai->ai_addr)->sin_port = resstate->head->ai_port; memcpy(&SIN(ai->ai_addr)->sin_addr, @@ -792,8 +795,9 @@ process_answer(isc_task_t *task, isc_event_t *event) { break; case AF_INET6: dns_rdataset_current(rdataset, &rdata); - dns_rdata_tostruct(&rdata, &rdata_aaaa, - NULL); + result = dns_rdata_tostruct(&rdata, &rdata_aaaa, + NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); SIN6(ai->ai_addr)->sin6_port = resstate->head->ai_port; memcpy(&SIN6(ai->ai_addr)->sin6_addr, @@ -1143,10 +1147,8 @@ add_ipv6(const char *hostname, int flags, struct addrinfo **aip, UNUSED(flags); ai = ai_clone(*aip, AF_INET6); /* don't use ai_clone() */ - if (ai == NULL) { - freeaddrinfo(*aip); + if (ai == NULL) return (EAI_MEMORY); - } *aip = ai; ai->ai_socktype = socktype; @@ -1186,7 +1188,7 @@ get_local(const char *name, int socktype, struct addrinfo **res) { return (EAI_MEMORY); slocal = SLOCAL(ai->ai_addr); - strncpy(slocal->sun_path, name, sizeof(slocal->sun_path)); + strlcpy(slocal->sun_path, name, sizeof(slocal->sun_path)); ai->ai_socktype = socktype; /* diff --git a/contrib/bind9/lib/irs/getnameinfo.c b/contrib/bind9/lib/irs/getnameinfo.c index 80e3677..526ad09 100644 --- a/contrib/bind9/lib/irs/getnameinfo.c +++ b/contrib/bind9/lib/irs/getnameinfo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -147,7 +147,7 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, IRS_GETNAMEINFO_BUFLEN_T hostlen, char *serv, IRS_GETNAMEINFO_BUFLEN_T servlen, IRS_GETNAMEINFO_FLAGS_T flags) { - struct afd *afd; + struct afd *afd = NULL; struct servent *sp; unsigned short port = 0; #ifdef IRS_PLATFORM_HAVESALEN @@ -328,6 +328,7 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, case DNS_R_NOVALIDDS: case DNS_R_NOVALIDSIG: ERR(EAI_INSECUREDATA); + break; default: ERR(EAI_FAIL); } diff --git a/contrib/bind9/lib/irs/resconf.c b/contrib/bind9/lib/irs/resconf.c index 18525e8..88bdac1 100644 --- a/contrib/bind9/lib/irs/resconf.c +++ b/contrib/bind9/lib/irs/resconf.c @@ -238,7 +238,7 @@ add_server(isc_mem_t *mctx, const char *address_str, goto cleanup; } address->length = res->ai_addrlen; - memcpy(&address->type.sa, res->ai_addr, res->ai_addrlen); + memcpy(&address->type.ss, res->ai_addr, res->ai_addrlen); ISC_LINK_INIT(address, link); ISC_LIST_APPEND(*nameservers, address, link); diff --git a/contrib/bind9/lib/isc/Makefile.in b/contrib/bind9/lib/isc/Makefile.in index ff500ff..2fa5633 100644 --- a/contrib/bind9/lib/isc/Makefile.in +++ b/contrib/bind9/lib/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -60,7 +60,8 @@ OBJS = @ISC_EXTRA_OBJS@ \ md5.@O@ mem.@O@ mutexblock.@O@ \ netaddr.@O@ netscope.@O@ ondestroy.@O@ \ parseint.@O@ portset.@O@ quota.@O@ radix.@O@ random.@O@ \ - ratelimiter.@O@ refcount.@O@ region.@O@ result.@O@ rwlock.@O@ \ + ratelimiter.@O@ refcount.@O@ region.@O@ regex.@O@ result.@O@ \ + rwlock.@O@ \ serial.@O@ sha1.@O@ sha2.@O@ sockaddr.@O@ stats.@O@ \ string.@O@ strtoul.@O@ symtab.@O@ task.@O@ taskpool.@O@ \ timer.@O@ version.@O@ ${UNIXOBJS} ${NLSOBJS} ${THREADOBJS} @@ -76,7 +77,7 @@ SRCS = @ISC_EXTRA_SRCS@ \ md5.c mem.c mutexblock.c \ netaddr.c netscope.c ondestroy.c \ parseint.c portset.c quota.c radix.c random.c \ - ratelimiter.c refcount.c region.c result.c rwlock.c \ + ratelimiter.c refcount.c region.c regex.c result.c rwlock.c \ serial.c sha1.c sha2.c sockaddr.c stats.c string.c strtoul.c \ symtab.c symtbl-empty.c task.c taskpool.c timer.c version.c diff --git a/contrib/bind9/lib/isc/api b/contrib/bind9/lib/isc/api index 18de29c..c7d2813 100644 --- a/contrib/bind9/lib/isc/api +++ b/contrib/bind9/lib/isc/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 -LIBINTERFACE = 85 -LIBREVISION = 0 -LIBAGE = 1 +# 9.9-sub: 130-139 +LIBINTERFACE = 87 +LIBREVISION = 1 +LIBAGE = 3 diff --git a/contrib/bind9/lib/isc/buffer.c b/contrib/bind9/lib/isc/buffer.c index 1b59e65..e37af15 100644 --- a/contrib/bind9/lib/isc/buffer.c +++ b/contrib/bind9/lib/isc/buffer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -28,7 +28,7 @@ #include <isc/util.h> void -isc__buffer_init(isc_buffer_t *b, const void *base, unsigned int length) { +isc__buffer_init(isc_buffer_t *b, void *base, unsigned int length) { /* * Make 'b' refer to the 'length'-byte region starting at 'base'. * XXXDCL see the comment in buffer.h about base being const. diff --git a/contrib/bind9/lib/isc/include/isc/Makefile.in b/contrib/bind9/lib/isc/include/isc/Makefile.in index b8acdb5..8afcfa7 100644 --- a/contrib/bind9/lib/isc/include/isc/Makefile.in +++ b/contrib/bind9/lib/isc/include/isc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2001, 2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -36,7 +36,7 @@ HEADERS = app.h assertions.h base64.h bind9.h bitstring.h boolean.h \ magic.h md5.h mem.h msgcat.h msgs.h mutexblock.h \ namespace.h netaddr.h ondestroy.h os.h parseint.h \ print.h quota.h radix.h random.h ratelimiter.h \ - refcount.h region.h resource.h \ + refcount.h regex.h region.h resource.h \ result.h resultclass.h rwlock.h serial.h sha1.h sha2.h \ sockaddr.h socket.h stdio.h stdlib.h string.h \ symtab.h \ diff --git a/contrib/bind9/lib/isc/include/isc/buffer.h b/contrib/bind9/lib/isc/include/isc/buffer.h index ae7e4c3..72b8560 100644 --- a/contrib/bind9/lib/isc/include/isc/buffer.h +++ b/contrib/bind9/lib/isc/include/isc/buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -222,7 +222,7 @@ isc_buffer_free(isc_buffer_t **dynbuffer); */ void -isc__buffer_init(isc_buffer_t *b, const void *base, unsigned int length); +isc__buffer_init(isc_buffer_t *b, void *base, unsigned int length); /*!< * \brief Make 'b' refer to the 'length'-byte region starting at base. * @@ -681,12 +681,7 @@ ISC_LANG_ENDDECLS */ #define ISC__BUFFER_INIT(_b, _base, _length) \ do { \ - union { \ - const void * konst; \ - void * var; \ - } _u; \ - _u.konst = (_base); \ - (_b)->base = _u.var; \ + (_b)->base = _base; \ (_b)->length = (_length); \ (_b)->used = 0; \ (_b)->current = 0; \ @@ -896,6 +891,13 @@ ISC_LANG_ENDDECLS #define isc_buffer_putuint32 isc__buffer_putuint32 #endif +#define isc_buffer_constinit(_b, _d, _l) \ + do { \ + union { void *_var; const void *_const; } _deconst; \ + _deconst._const = (_d); \ + isc_buffer_init((_b), _deconst._var, (_l)); \ + } while (0) + /* * No inline method for this one (yet). */ diff --git a/contrib/bind9/lib/isc/include/isc/file.h b/contrib/bind9/lib/isc/include/isc/file.h index 38f78b7..92ea96e 100644 --- a/contrib/bind9/lib/isc/include/isc/file.h +++ b/contrib/bind9/lib/isc/include/isc/file.h @@ -115,8 +115,8 @@ isc_result_t isc_file_bopenuniquemode(char *templet, int mode, FILE **fp); /*!< * \brief Create and open a file with a unique name based on 'templet'. - * isc_file_bopen*() open the file in binary mode in Windows. - * isc_file_open*() open the file in text mode in Windows. + * isc_file_bopen*() open the file in binary mode in Windows. + * isc_file_open*() open the file in text mode in Windows. * * Notes: *\li 'template' is a reserved work in C++. If you want to complain @@ -217,6 +217,22 @@ isc_file_isplainfile(const char *name); * These occur when stat returns -1 and an errno. */ +isc_result_t +isc_file_isdirectory(const char *name); +/*!< + * \brief Check that 'name' exists and is a directory. + * + * Returns: + *\li #ISC_R_SUCCESS + * Success, file is a directory. + *\li #ISC_R_INVALIDFILE + * File is not a directory. + *\li #ISC_R_FILENOTFOUND + * File does not exist. + *\li #other ISC_R_* errors translated from errno + * These occur when stat returns -1 and an errno. + */ + isc_boolean_t isc_file_iscurrentdir(const char *filename); /*!< diff --git a/contrib/bind9/lib/isc/include/isc/list.h b/contrib/bind9/lib/isc/include/isc/list.h index 4056be2..2b174ec 100644 --- a/contrib/bind9/lib/isc/include/isc/list.h +++ b/contrib/bind9/lib/isc/include/isc/list.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006, 2007, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1997-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -102,6 +102,8 @@ } \ (elt)->link.prev = (type *)(-1); \ (elt)->link.next = (type *)(-1); \ + ISC_INSIST((list).head != (elt)); \ + ISC_INSIST((list).tail != (elt)); \ } while (0) #define __ISC_LIST_UNLINKUNSAFE(list, elt, link) \ diff --git a/contrib/bind9/lib/isc/include/isc/mem.h b/contrib/bind9/lib/isc/include/isc/mem.h index c47ae55..317417f 100644 --- a/contrib/bind9/lib/isc/include/isc/mem.h +++ b/contrib/bind9/lib/isc/include/isc/mem.h @@ -40,15 +40,6 @@ typedef void * (*isc_memalloc_t)(void *, size_t); typedef void (*isc_memfree_t)(void *, void *); /*% - * Define ISC_MEM_DEBUG=1 to make all functions that free memory - * set the pointer being freed to NULL after being freed. - * This is the default; set ISC_MEM_DEBUG=0 to disable it. - */ -#ifndef ISC_MEM_DEBUG -#define ISC_MEM_DEBUG 1 -#endif - -/*% * Define ISC_MEM_TRACKLINES=1 to turn on detailed tracing of memory * allocation and freeing by file and line number. */ @@ -274,7 +265,6 @@ struct isc_mempool { #define ISCAPI_MPOOL_VALID(mp) ((mp) != NULL && \ (mp)->magic == ISCAPI_MPOOL_MAGIC) -#if ISC_MEM_DEBUG #define isc_mem_put(c, p, s) \ do { \ ISCMEMFUNC(put)((c), (p), (s) _ISC_MEM_FILELINE); \ @@ -295,13 +285,6 @@ struct isc_mempool { ISCMEMPOOLFUNC(put)((c), (p) _ISC_MEM_FILELINE); \ (p) = NULL; \ } while (0) -#else -#define isc_mem_put(c, p, s) ISCMEMFUNC(put)((c), (p), (s) _ISC_MEM_FILELINE) -#define isc_mem_putanddetach(c, p, s) \ - ISCMEMFUNC(putanddetach)((c), (p), (s) _ISC_MEM_FILELINE) -#define isc_mem_free(c, p) ISCMEMFUNC(free)((c), (p) _ISC_MEM_FILELINE) -#define isc_mempool_put(c, p) ISCMEMPOOLFUNC(put)((c), (p) _ISC_MEM_FILELINE) -#endif /*@{*/ isc_result_t @@ -548,7 +531,7 @@ isc_mem_gettag(isc_mem_t *ctx); */ #ifdef HAVE_LIBXML2 -void +int isc_mem_renderxml(xmlTextWriterPtr writer); /*%< * Render all contexts' statistics and status in XML for writer. diff --git a/contrib/bind9/lib/isc/include/isc/namespace.h b/contrib/bind9/lib/isc/include/isc/namespace.h index ae1801d..45b769c 100644 --- a/contrib/bind9/lib/isc/include/isc/namespace.h +++ b/contrib/bind9/lib/isc/include/isc/namespace.h @@ -70,6 +70,7 @@ #define isc_mem_isovermem isc__mem_isovermem #define isc_mem_setname isc__mem_setname #define isc_mem_setwater isc__mem_setwater +#define isc_mem_printactive isc__mem_printactive #define isc_mem_printallactive isc__mem_printallactive #define isc_mem_waterack isc__mem_waterack #define isc_mempool_create isc__mempool_create diff --git a/contrib/bind9/lib/isc/include/isc/regex.h b/contrib/bind9/lib/isc/include/isc/regex.h new file mode 100644 index 0000000..3cf6aa4 --- /dev/null +++ b/contrib/bind9/lib/isc/include/isc/regex.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ISC_REGEX_H +#define ISC_REGEX_H 1 + +/*! \file isc/regex.h */ + +#include <isc/types.h> +#include <isc/lang.h> + +ISC_LANG_BEGINDECLS + +int +isc_regex_validate(const char *expression); +/*%< + * Check a regular expression for syntactic correctness. + * + * Returns: + *\li -1 on error. + *\li the number of groups in the expression. + */ + +ISC_LANG_ENDDECLS + +#endif /* ISC_REGEX_H */ diff --git a/contrib/bind9/lib/isc/include/isc/region.h b/contrib/bind9/lib/isc/include/isc/region.h index 43d8f8f..ccca272 100644 --- a/contrib/bind9/lib/isc/include/isc/region.h +++ b/contrib/bind9/lib/isc/include/isc/region.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -23,6 +23,7 @@ /*! \file isc/region.h */ #include <isc/types.h> +#include <isc/lang.h> struct isc_region { unsigned char * base; @@ -81,12 +82,14 @@ struct isc_consttextregion { } while (0) /*@}*/ +ISC_LANG_BEGINDECLS + int isc_region_compare(isc_region_t *r1, isc_region_t *r2); /*%< - * Compares the contents of two regions + * Compares the contents of two regions * - * Requires: + * Requires: *\li 'r1' is a valid region *\li 'r2' is a valid region * @@ -96,4 +99,6 @@ isc_region_compare(isc_region_t *r1, isc_region_t *r2); *\li > 0 if r1 is lexicographically greater than r2 */ +ISC_LANG_ENDDECLS + #endif /* ISC_REGION_H */ diff --git a/contrib/bind9/lib/isc/include/isc/sockaddr.h b/contrib/bind9/lib/isc/include/isc/sockaddr.h index 1e69142..4d811dd 100644 --- a/contrib/bind9/lib/isc/include/isc/sockaddr.h +++ b/contrib/bind9/lib/isc/include/isc/sockaddr.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -34,6 +34,7 @@ struct isc_sockaddr { struct sockaddr sa; struct sockaddr_in sin; struct sockaddr_in6 sin6; + struct sockaddr_storage ss; #ifdef ISC_PLATFORM_HAVESYSUNH struct sockaddr_un sunix; #endif diff --git a/contrib/bind9/lib/isc/include/isc/socket.h b/contrib/bind9/lib/isc/include/isc/socket.h index 0df7d27..4111ec2 100644 --- a/contrib/bind9/lib/isc/include/isc/socket.h +++ b/contrib/bind9/lib/isc/include/isc/socket.h @@ -1116,7 +1116,7 @@ isc__socketmgr_maxudp(isc_socketmgr_t *mgr, int maxudp); #ifdef HAVE_LIBXML2 -void +int isc_socketmgr_renderxml(isc_socketmgr_t *mgr, xmlTextWriterPtr writer); /*%< * Render internal statistics and other state into the XML document. diff --git a/contrib/bind9/lib/isc/include/isc/task.h b/contrib/bind9/lib/isc/include/isc/task.h index 19d4783..ced7059 100644 --- a/contrib/bind9/lib/isc/include/isc/task.h +++ b/contrib/bind9/lib/isc/include/isc/task.h @@ -726,7 +726,7 @@ isc_taskmgr_excltask(isc_taskmgr_t *mgr, isc_task_t **taskp); #ifdef HAVE_LIBXML2 -void +int isc_taskmgr_renderxml(isc_taskmgr_t *mgr, xmlTextWriterPtr writer); #endif diff --git a/contrib/bind9/lib/isc/include/isc/timer.h b/contrib/bind9/lib/isc/include/isc/timer.h index fa9abb1..0598f79 100644 --- a/contrib/bind9/lib/isc/include/isc/timer.h +++ b/contrib/bind9/lib/isc/include/isc/timer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -108,8 +108,8 @@ typedef struct { void (*destroy)(isc_timermgr_t **managerp); isc_result_t (*timercreate)(isc_timermgr_t *manager, isc_timertype_t type, - isc_time_t *expires, - isc_interval_t *interval, + const isc_time_t *expires, + const isc_interval_t *interval, isc_task_t *task, isc_taskaction_t action, const void *arg, @@ -120,7 +120,8 @@ typedef struct { void (*attach)(isc_timer_t *timer, isc_timer_t **timerp); void (*detach)(isc_timer_t **timerp); isc_result_t (*reset)(isc_timer_t *timer, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, + const isc_interval_t *interval, isc_boolean_t purge); isc_result_t (*touch)(isc_timer_t *timer); } isc_timermethods_t; @@ -168,8 +169,8 @@ struct isc_timer { isc_result_t isc_timer_create(isc_timermgr_t *manager, isc_timertype_t type, - isc_time_t *expires, - isc_interval_t *interval, + const isc_time_t *expires, + const isc_interval_t *interval, isc_task_t *task, isc_taskaction_t action, const void *arg, @@ -232,8 +233,8 @@ isc_timer_create(isc_timermgr_t *manager, isc_result_t isc_timer_reset(isc_timer_t *timer, isc_timertype_t type, - isc_time_t *expires, - isc_interval_t *interval, + const isc_time_t *expires, + const isc_interval_t *interval, isc_boolean_t purge); /*%< * Change the timer's type, expires, and interval values to the given diff --git a/contrib/bind9/lib/isc/inet_aton.c b/contrib/bind9/lib/isc/inet_aton.c index 14b4887..66a108d 100644 --- a/contrib/bind9/lib/isc/inet_aton.c +++ b/contrib/bind9/lib/isc/inet_aton.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004, 2005, 2007, 2008, 2012 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1996-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -91,7 +91,7 @@ static char rcsid[] = "$Id: inet_aton.c,v 1.23 2008/12/01 23:47:45 tbox Exp $"; */ int isc_net_aton(const char *cp, struct in_addr *addr) { - unsigned long val; + isc_uint32_t val; int base, n; unsigned char c; isc_uint8_t parts[4]; diff --git a/contrib/bind9/lib/isc/mem.c b/contrib/bind9/lib/isc/mem.c index 1964b7a..20fec46 100644 --- a/contrib/bind9/lib/isc/mem.c +++ b/contrib/bind9/lib/isc/mem.c @@ -202,6 +202,7 @@ struct isc__mempool { #if ! ISC_MEM_TRACKLINES #define ADD_TRACE(a, b, c, d, e) #define DELETE_TRACE(a, b, c, d, e) +#define ISC_MEMFUNC_SCOPE #else #define ADD_TRACE(a, b, c, d, e) \ do { \ @@ -321,6 +322,7 @@ isc__mem_checkdestroyed(FILE *file); ISC_MEMFUNC_SCOPE unsigned int isc__mem_references(isc_mem_t *ctx0); #endif +#endif /* ISC_MEM_TRACKLINES */ static struct isc__memmethods { isc_memmethods_t methods; @@ -389,6 +391,7 @@ static struct isc__mempoolmethods { #endif }; +#if ISC_MEM_TRACKLINES /*! * mctx must be locked. */ @@ -1478,7 +1481,12 @@ isc__mem_stats(isc_mem_t *ctx0, FILE *out) { } while (pool != NULL) { fprintf(out, "%15s %10lu %10u %10u %10u %10u %10u %10u %s\n", - pool->name, (unsigned long) pool->size, pool->maxalloc, +#if ISC_MEMPOOL_NAMES + pool->name, +#else + "(not tracked)", +#endif + (unsigned long) pool->size, pool->maxalloc, pool->allocated, pool->freecount, pool->freemax, pool->fillcount, pool->gets, (pool->lock == NULL ? "N" : "Y")); @@ -2260,16 +2268,16 @@ isc__mem_register() { #ifdef BIND9 ISC_MEMFUNC_SCOPE void isc__mem_printactive(isc_mem_t *ctx0, FILE *file) { +#if ISC_MEM_TRACKLINES isc__mem_t *ctx = (isc__mem_t *)ctx0; REQUIRE(VALID_CONTEXT(ctx)); REQUIRE(file != NULL); -#if !ISC_MEM_TRACKLINES - UNUSED(ctx); - UNUSED(file); -#else print_active(ctx, file); +#else + UNUSED(ctx0); + UNUSED(file); #endif } @@ -2295,6 +2303,9 @@ isc__mem_printallactive(FILE *file) { ISC_MEMFUNC_SCOPE void isc__mem_checkdestroyed(FILE *file) { +#if !ISC_MEM_TRACKLINES + UNUSED(file); +#endif RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS); @@ -2339,25 +2350,27 @@ typedef struct summarystat { isc_uint64_t contextsize; } summarystat_t; -static void +#define TRY0(a) do { xmlrc = (a); if (xmlrc < 0) goto error; } while(0) +static int renderctx(isc__mem_t *ctx, summarystat_t *summary, xmlTextWriterPtr writer) { + int xmlrc; + REQUIRE(VALID_CONTEXT(ctx)); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "context"); + MCTXLOCK(ctx, &ctx->lock); + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "context")); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "id"); - xmlTextWriterWriteFormatString(writer, "%p", ctx); - xmlTextWriterEndElement(writer); /* id */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "id")); + TRY0(xmlTextWriterWriteFormatString(writer, "%p", ctx)); + TRY0(xmlTextWriterEndElement(writer)); /* id */ if (ctx->name[0] != 0) { - xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"); - xmlTextWriterWriteFormatString(writer, "%s", ctx->name); - xmlTextWriterEndElement(writer); /* name */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name")); + TRY0(xmlTextWriterWriteFormatString(writer, "%s", ctx->name)); + TRY0(xmlTextWriterEndElement(writer)); /* name */ } - REQUIRE(VALID_CONTEXT(ctx)); - MCTXLOCK(ctx, &ctx->lock); - summary->contextsize += sizeof(*ctx) + (ctx->max_size + 1) * sizeof(struct stats) + ctx->max_size * sizeof(element *) + @@ -2369,70 +2382,79 @@ renderctx(isc__mem_t *ctx, summarystat_t *summary, xmlTextWriterPtr writer) { ctx->debuglistcnt * sizeof(debuglink_t); } #endif - xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); - xmlTextWriterWriteFormatString(writer, "%d", ctx->references); - xmlTextWriterEndElement(writer); /* references */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", ctx->references)); + TRY0(xmlTextWriterEndElement(writer)); /* references */ summary->total += ctx->total; - xmlTextWriterStartElement(writer, ISC_XMLCHAR "total"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - (isc_uint64_t)ctx->total); - xmlTextWriterEndElement(writer); /* total */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "total")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + (isc_uint64_t)ctx->total)); + TRY0(xmlTextWriterEndElement(writer)); /* total */ summary->inuse += ctx->inuse; - xmlTextWriterStartElement(writer, ISC_XMLCHAR "inuse"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - (isc_uint64_t)ctx->inuse); - xmlTextWriterEndElement(writer); /* inuse */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "maxinuse"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - (isc_uint64_t)ctx->maxinuse); - xmlTextWriterEndElement(writer); /* maxinuse */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "blocksize"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "inuse")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + (isc_uint64_t)ctx->inuse)); + TRY0(xmlTextWriterEndElement(writer)); /* inuse */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "maxinuse")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + (isc_uint64_t)ctx->maxinuse)); + TRY0(xmlTextWriterEndElement(writer)); /* maxinuse */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "blocksize")); if ((ctx->flags & ISC_MEMFLAG_INTERNAL) != 0) { summary->blocksize += ctx->basic_table_count * NUM_BASIC_BLOCKS * ctx->mem_target; - xmlTextWriterWriteFormatString(writer, + TRY0(xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", (isc_uint64_t) ctx->basic_table_count * NUM_BASIC_BLOCKS * - ctx->mem_target); + ctx->mem_target)); } else - xmlTextWriterWriteFormatString(writer, "%s", "-"); - xmlTextWriterEndElement(writer); /* blocksize */ + TRY0(xmlTextWriterWriteFormatString(writer, "%s", "-")); + TRY0(xmlTextWriterEndElement(writer)); /* blocksize */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "pools"); - xmlTextWriterWriteFormatString(writer, "%u", ctx->poolcnt); - xmlTextWriterEndElement(writer); /* pools */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "pools")); + TRY0(xmlTextWriterWriteFormatString(writer, "%u", ctx->poolcnt)); + TRY0(xmlTextWriterEndElement(writer)); /* pools */ summary->contextsize += ctx->poolcnt * sizeof(isc_mempool_t); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "hiwater"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - (isc_uint64_t)ctx->hi_water); - xmlTextWriterEndElement(writer); /* hiwater */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "hiwater")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + (isc_uint64_t)ctx->hi_water)); + TRY0(xmlTextWriterEndElement(writer)); /* hiwater */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "lowater"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - (isc_uint64_t)ctx->lo_water); - xmlTextWriterEndElement(writer); /* lowater */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "lowater")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + (isc_uint64_t)ctx->lo_water)); + TRY0(xmlTextWriterEndElement(writer)); /* lowater */ + TRY0(xmlTextWriterEndElement(writer)); /* context */ + + error: MCTXUNLOCK(ctx, &ctx->lock); - xmlTextWriterEndElement(writer); /* context */ + return (xmlrc); } -void +int isc_mem_renderxml(xmlTextWriterPtr writer) { isc__mem_t *ctx; summarystat_t summary; isc_uint64_t lost; + int xmlrc; memset(&summary, 0, sizeof(summary)); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "contexts"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "contexts")); RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS); @@ -2441,40 +2463,51 @@ isc_mem_renderxml(xmlTextWriterPtr writer) { for (ctx = ISC_LIST_HEAD(contexts); ctx != NULL; ctx = ISC_LIST_NEXT(ctx, link)) { - renderctx(ctx, &summary, writer); + xmlrc = renderctx(ctx, &summary, writer); + if (xmlrc < 0) { + UNLOCK(&lock); + goto error; + } } UNLOCK(&lock); - xmlTextWriterEndElement(writer); /* contexts */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "summary"); - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "TotalUse"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - summary.total); - xmlTextWriterEndElement(writer); /* TotalUse */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "InUse"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - summary.inuse); - xmlTextWriterEndElement(writer); /* InUse */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "BlockSize"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - summary.blocksize); - xmlTextWriterEndElement(writer); /* BlockSize */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "ContextSize"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - summary.contextsize); - xmlTextWriterEndElement(writer); /* ContextSize */ - - xmlTextWriterStartElement(writer, ISC_XMLCHAR "Lost"); - xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", - lost); - xmlTextWriterEndElement(writer); /* Lost */ - - xmlTextWriterEndElement(writer); /* summary */ + TRY0(xmlTextWriterEndElement(writer)); /* contexts */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "summary")); + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "TotalUse")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + summary.total)); + TRY0(xmlTextWriterEndElement(writer)); /* TotalUse */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "InUse")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + summary.inuse)); + TRY0(xmlTextWriterEndElement(writer)); /* InUse */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "BlockSize")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + summary.blocksize)); + TRY0(xmlTextWriterEndElement(writer)); /* BlockSize */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "ContextSize")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + summary.contextsize)); + TRY0(xmlTextWriterEndElement(writer)); /* ContextSize */ + + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "Lost")); + TRY0(xmlTextWriterWriteFormatString(writer, + "%" ISC_PRINT_QUADFORMAT "u", + lost)); + TRY0(xmlTextWriterEndElement(writer)); /* Lost */ + + TRY0(xmlTextWriterEndElement(writer)); /* summary */ + error: + return (xmlrc); } #endif /* HAVE_LIBXML2 */ diff --git a/contrib/bind9/lib/isc/nothreads/Makefile.in b/contrib/bind9/lib/isc/nothreads/Makefile.in index 540b243..b8b5f98 100644 --- a/contrib/bind9/lib/isc/nothreads/Makefile.in +++ b/contrib/bind9/lib/isc/nothreads/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004, 2007, 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2009, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000, 2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -16,8 +16,8 @@ # $Id: Makefile.in,v 1.12 2010/06/09 23:50:58 tbox Exp $ top_srcdir = @top_srcdir@ -srcdir = @top_srcdir@/lib/isc/nothreads -VPATH = @top_srcdir@/lib/isc/nothreads +srcdir = @srcdir@ +VPATH = @srcdir@ CINCLUDES = -I${srcdir}/include \ -I${srcdir}/../unix/include \ diff --git a/contrib/bind9/lib/isc/parseint.c b/contrib/bind9/lib/isc/parseint.c index 266d44c..f8ec389 100644 --- a/contrib/bind9/lib/isc/parseint.c +++ b/contrib/bind9/lib/isc/parseint.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -32,6 +32,7 @@ isc_result_t isc_parse_uint32(isc_uint32_t *uip, const char *string, int base) { unsigned long n; + isc_uint32_t r; char *e; if (! isalnum((unsigned char)(string[0]))) return (ISC_R_BADNUMBER); @@ -39,9 +40,15 @@ isc_parse_uint32(isc_uint32_t *uip, const char *string, int base) { n = strtoul(string, &e, base); if (*e != '\0') return (ISC_R_BADNUMBER); - if (n == ULONG_MAX && errno == ERANGE) + /* + * Where long is 64 bits we need to convert to 32 bits then test for + * equality. This is a no-op on 32 bit machines and a good compiler + * will optimise it away. + */ + r = (isc_uint32_t)n; + if ((n == ULONG_MAX && errno == ERANGE) || (n != (unsigned long)r)) return (ISC_R_RANGE); - *uip = n; + *uip = r; return (ISC_R_SUCCESS); } diff --git a/contrib/bind9/lib/isc/pthreads/thread.c b/contrib/bind9/lib/isc/pthreads/thread.c index 4b5b491..1b250fa 100644 --- a/contrib/bind9/lib/isc/pthreads/thread.c +++ b/contrib/bind9/lib/isc/pthreads/thread.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -25,7 +25,7 @@ #include <isc/util.h> #ifndef THREAD_MINSTACKSIZE -#define THREAD_MINSTACKSIZE (64U * 1024) +#define THREAD_MINSTACKSIZE (1024U * 1024) #endif isc_result_t diff --git a/contrib/bind9/lib/isc/ratelimiter.c b/contrib/bind9/lib/isc/ratelimiter.c index 07bcc7c..fc66e9f 100644 --- a/contrib/bind9/lib/isc/ratelimiter.c +++ b/contrib/bind9/lib/isc/ratelimiter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -114,7 +114,7 @@ isc_ratelimiter_setinterval(isc_ratelimiter_t *rl, isc_interval_t *interval) { /* * If the timer is currently running, change its rate. */ - if (rl->state == isc_ratelimiter_ratelimited) { + if (rl->state == isc_ratelimiter_ratelimited) { result = isc_timer_reset(rl->timer, isc_timertype_ticker, NULL, &rl->interval, ISC_FALSE); } @@ -142,13 +142,13 @@ isc_ratelimiter_enqueue(isc_ratelimiter_t *rl, isc_task_t *task, REQUIRE(ev->ev_sender == NULL); LOCK(&rl->lock); - if (rl->state == isc_ratelimiter_ratelimited || + if (rl->state == isc_ratelimiter_ratelimited || rl->state == isc_ratelimiter_stalled) { isc_event_t *ev = *eventp; ev->ev_sender = task; - ISC_LIST_APPEND(rl->pending, ev, ev_link); + ISC_LIST_APPEND(rl->pending, ev, ev_link); *eventp = NULL; - } else if (rl->state == isc_ratelimiter_idle) { + } else if (rl->state == isc_ratelimiter_idle) { result = isc_timer_reset(rl->timer, isc_timertype_ticker, NULL, &rl->interval, ISC_FALSE); if (result == ISC_R_SUCCESS) { @@ -177,7 +177,7 @@ ratelimiter_tick(isc_task_t *task, isc_event_t *event) { isc_event_free(&event); pertic = rl->pertic; - while (pertic != 0) { + while (pertic != 0) { pertic--; LOCK(&rl->lock); p = ISC_LIST_HEAD(rl->pending); @@ -289,8 +289,9 @@ isc_ratelimiter_stall(isc_ratelimiter_t *rl) { break; case isc_ratelimiter_ratelimited: result = isc_timer_reset(rl->timer, isc_timertype_inactive, - NULL, NULL, ISC_FALSE); + NULL, NULL, ISC_FALSE); RUNTIME_CHECK(result == ISC_R_SUCCESS); + /* FALLTHROUGH */ case isc_ratelimiter_idle: case isc_ratelimiter_stalled: rl->state = isc_ratelimiter_stalled; @@ -316,7 +317,7 @@ isc_ratelimiter_release(isc_ratelimiter_t *rl) { &rl->interval, ISC_FALSE); if (result == ISC_R_SUCCESS) rl->state = isc_ratelimiter_ratelimited; - } else + } else rl->state = isc_ratelimiter_idle; break; case isc_ratelimiter_ratelimited: diff --git a/contrib/bind9/lib/isc/regex.c b/contrib/bind9/lib/isc/regex.c new file mode 100644 index 0000000..279bcdc --- /dev/null +++ b/contrib/bind9/lib/isc/regex.c @@ -0,0 +1,370 @@ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include <config.h> + +#include <isc/file.h> +#include <isc/regex.h> +#include <isc/string.h> + +#if VALREGEX_REPORT_REASON +#define FAIL(x) do { reason = (x); goto error; } while(0) +#else +#define FAIL(x) goto error +#endif + +/* + * Validate the regular expression 'C' locale. + */ +int +isc_regex_validate(const char *c) { + enum { + none, parse_bracket, parse_bound, + parse_ce, parse_ec, parse_cc + } state = none; + /* Well known character classes. */ + const char *cc[] = { + ":alnum:", ":digit:", ":punct:", ":alpha:", ":graph:", + ":space:", ":blank:", ":lower:", ":upper:", ":cntrl:", + ":print:", ":xdigit:" + }; + isc_boolean_t seen_comma = ISC_FALSE; + isc_boolean_t seen_high = ISC_FALSE; + isc_boolean_t seen_char = ISC_FALSE; + isc_boolean_t seen_ec = ISC_FALSE; + isc_boolean_t seen_ce = ISC_FALSE; + isc_boolean_t have_atom = ISC_FALSE; + int group = 0; + int range = 0; + int sub = 0; + isc_boolean_t empty_ok = ISC_FALSE; + isc_boolean_t neg = ISC_FALSE; + isc_boolean_t was_multiple = ISC_FALSE; + unsigned int low = 0; + unsigned int high = 0; + const char *ccname = NULL; + int range_start = 0; +#if VALREGEX_REPORT_REASON + const char *reason = ""; +#endif + + if (c == NULL || *c == 0) + FAIL("empty string"); + + while (c != NULL && *c != 0) { + switch (state) { + case none: + switch (*c) { + case '\\': /* make literal */ + ++c; + switch (*c) { + case '1': case '2': case '3': + case '4': case '5': case '6': + case '7': case '8': case '9': + if ((*c - '0') > sub) + FAIL("bad back reference"); + have_atom = ISC_TRUE; + was_multiple = ISC_FALSE; + break; + case 0: + FAIL("escaped end-of-string"); + default: + goto literal; + } + ++c; + break; + case '[': /* bracket start */ + ++c; + neg = ISC_FALSE; + was_multiple = ISC_FALSE; + seen_char = ISC_FALSE; + state = parse_bracket; + break; + case '{': /* bound start */ + switch (c[1]) { + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + case '8': case '9': + if (!have_atom) + FAIL("no atom"); + if (was_multiple) + FAIL("was multiple"); + seen_comma = ISC_FALSE; + seen_high = ISC_FALSE; + low = high = 0; + state = parse_bound; + break; + default: + goto literal; + } + ++c; + have_atom = ISC_TRUE; + was_multiple = ISC_TRUE; + break; + case '}': + goto literal; + case '(': /* group start */ + have_atom = ISC_FALSE; + was_multiple = ISC_FALSE; + empty_ok = ISC_TRUE; + ++group; + ++sub; + ++c; + break; + case ')': /* group end */ + if (group && !have_atom && !empty_ok) + FAIL("empty alternative"); + have_atom = ISC_TRUE; + was_multiple = ISC_FALSE; + if (group != 0) + --group; + ++c; + break; + case '|': /* alternative seperator */ + if (!have_atom) + FAIL("no atom"); + have_atom = ISC_FALSE; + empty_ok = ISC_FALSE; + was_multiple = ISC_FALSE; + ++c; + break; + case '^': + case '$': + have_atom = ISC_TRUE; + was_multiple = ISC_TRUE; + ++c; + break; + case '+': + case '*': + case '?': + if (was_multiple) + FAIL("was multiple"); + if (!have_atom) + FAIL("no atom"); + have_atom = ISC_TRUE; + was_multiple = ISC_TRUE; + ++c; + break; + case '.': + default: + literal: + have_atom = ISC_TRUE; + was_multiple = ISC_FALSE; + ++c; + break; + } + break; + case parse_bound: + switch (*c) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + if (!seen_comma) { + low = low * 10 + *c - '0'; + if (low > 255) + FAIL("lower bound too big"); + } else { + seen_high = ISC_TRUE; + high = high * 10 + *c - '0'; + if (high > 255) + FAIL("upper bound too big"); + } + ++c; + break; + case ',': + if (seen_comma) + FAIL("multiple commas"); + seen_comma = ISC_TRUE; + ++c; + break; + default: + case '{': + FAIL("non digit/comma"); + case '}': + if (seen_high && low > high) + FAIL("bad parse bound"); + seen_comma = ISC_FALSE; + state = none; + ++c; + break; + } + break; + case parse_bracket: + switch (*c) { + case '^': + if (seen_char || neg) goto inside; + neg = ISC_TRUE; + ++c; + break; + case '-': + if (range == 2) goto inside; + if (!seen_char) goto inside; + if (range == 1) + FAIL("bad range"); + range = 2; + ++c; + break; + case '[': + ++c; + switch (*c) { + case '.': /* collating element */ + if (range) --range; + ++c; + state = parse_ce; + seen_ce = ISC_FALSE; + break; + case '=': /* equivalence class */ + if (range == 2) + FAIL("equivalence class in range"); + ++c; + state = parse_ec; + seen_ec = ISC_FALSE; + break; + case ':': /* character class */ + if (range == 2) + FAIL("character class in range"); + ccname = c; + ++c; + state = parse_cc; + break; + } + seen_char = ISC_TRUE; + break; + case ']': + if (!c[1] && !seen_char) + FAIL("unfinished brace"); + if (!seen_char) + goto inside; + ++c; + range = 0; + have_atom = ISC_TRUE; + state = none; + break; + default: + inside: + seen_char = ISC_TRUE; + if (range == 2 && *c < range_start) + FAIL("out of order range"); + if (range != 0) + --range; + range_start = *c; + ++c; + break; + }; + break; + case parse_ce: + switch (*c) { + case '.': + ++c; + switch (*c) { + case ']': + if (!seen_ce) + FAIL("empty ce"); + ++c; + state = parse_bracket; + break; + default: + if (seen_ce) + range_start = 256; + else + range_start = '.'; + seen_ce = ISC_TRUE; + break; + } + break; + default: + if (seen_ce) + range_start = 256; + else + range_start = *c; + seen_ce = ISC_TRUE; + ++c; + break; + } + break; + case parse_ec: + switch (*c) { + case '=': + ++c; + switch (*c) { + case ']': + if (!seen_ec) + FAIL("no ec"); + ++c; + state = parse_bracket; + break; + default: + seen_ec = ISC_TRUE; + break; + } + break; + default: + seen_ec = ISC_TRUE; + ++c; + break; + } + break; + case parse_cc: + switch (*c) { + case ':': + ++c; + switch (*c) { + case ']': { + unsigned int i; + isc_boolean_t found = ISC_FALSE; + for (i = 0; + i < sizeof(cc)/sizeof(*cc); + i++) + { + unsigned int len; + len = strlen(cc[i]); + if (len != + (unsigned int)(c - ccname)) + continue; + if (strncmp(cc[i], ccname, len)) + continue; + found = ISC_TRUE; + } + if (!found) + FAIL("unknown cc"); + ++c; + state = parse_bracket; + break; + } + default: + break; + } + break; + default: + ++c; + break; + } + break; + } + } + if (group != 0) + FAIL("group open"); + if (state != none) + FAIL("incomplete"); + if (!have_atom) + FAIL("no atom"); + return (sub); + + error: +#if VALREGEX_REPORT_REASON + fprintf(stderr, "%s\n", reason); +#endif + return (-1); +} diff --git a/contrib/bind9/lib/isc/sockaddr.c b/contrib/bind9/lib/isc/sockaddr.c index 7b43b8f..91a949b 100644 --- a/contrib/bind9/lib/isc/sockaddr.c +++ b/contrib/bind9/lib/isc/sockaddr.c @@ -219,13 +219,12 @@ isc_sockaddr_hash(const isc_sockaddr_t *sockaddr, isc_boolean_t address_only) { break; case AF_INET6: in6 = &sockaddr->type.sin6.sin6_addr; + s = (const unsigned char *)in6; if (IN6_IS_ADDR_V4MAPPED(in6)) { - s = (const unsigned char *)&in6[12]; + s += 12; length = sizeof(sockaddr->type.sin.sin_addr.s_addr); - } else { - s = (const unsigned char *)in6; + } else length = sizeof(sockaddr->type.sin6.sin6_addr); - } p = ntohs(sockaddr->type.sin6.sin6_port); break; default: diff --git a/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h b/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h index fb0cc17..4b36661 100644 --- a/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h +++ b/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/contrib/bind9/lib/isc/symtab.c b/contrib/bind9/lib/isc/symtab.c index d4c1dcc..1f294fb 100644 --- a/contrib/bind9/lib/isc/symtab.c +++ b/contrib/bind9/lib/isc/symtab.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1996-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -71,15 +71,17 @@ isc_symtab_create(isc_mem_t *mctx, unsigned int size, symtab = (isc_symtab_t *)isc_mem_get(mctx, sizeof(*symtab)); if (symtab == NULL) return (ISC_R_NOMEMORY); + + symtab->mctx = NULL; + isc_mem_attach(mctx, &symtab->mctx); symtab->table = (eltlist_t *)isc_mem_get(mctx, size * sizeof(eltlist_t)); if (symtab->table == NULL) { - isc_mem_put(mctx, symtab, sizeof(*symtab)); + isc_mem_putanddetach(&symtab->mctx, symtab, sizeof(*symtab)); return (ISC_R_NOMEMORY); } for (i = 0; i < size; i++) INIT_LIST(symtab->table[i]); - symtab->mctx = mctx; symtab->size = size; symtab->count = 0; symtab->maxload = size * 3 / 4; @@ -117,7 +119,7 @@ isc_symtab_destroy(isc_symtab_t **symtabp) { isc_mem_put(symtab->mctx, symtab->table, symtab->size * sizeof(eltlist_t)); symtab->magic = 0; - isc_mem_put(symtab->mctx, symtab, sizeof(*symtab)); + isc_mem_putanddetach(&symtab->mctx, symtab, sizeof(*symtab)); *symtabp = NULL; } diff --git a/contrib/bind9/lib/isc/task.c b/contrib/bind9/lib/isc/task.c index a5f6ef9..94f1c6d 100644 --- a/contrib/bind9/lib/isc/task.c +++ b/contrib/bind9/lib/isc/task.c @@ -1539,10 +1539,12 @@ isc_task_exiting(isc_task_t *t) { #if defined(HAVE_LIBXML2) && defined(BIND9) -void +#define TRY0(a) do { xmlrc = (a); if (xmlrc < 0) goto error; } while(0) +int isc_taskmgr_renderxml(isc_taskmgr_t *mgr0, xmlTextWriterPtr writer) { isc__taskmgr_t *mgr = (isc__taskmgr_t *)mgr0; - isc__task_t *task; + isc__task_t *task = NULL; + int xmlrc; LOCK(&mgr->lock); @@ -1550,72 +1552,82 @@ isc_taskmgr_renderxml(isc_taskmgr_t *mgr0, xmlTextWriterPtr writer) { * Write out the thread-model, and some details about each depending * on which type is enabled. */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "thread-model"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "thread-model")); #ifdef ISC_PLATFORM_USETHREADS - xmlTextWriterStartElement(writer, ISC_XMLCHAR "type"); - xmlTextWriterWriteString(writer, ISC_XMLCHAR "threaded"); - xmlTextWriterEndElement(writer); /* type */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "type")); + TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "threaded")); + TRY0(xmlTextWriterEndElement(writer)); /* type */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "worker-threads"); - xmlTextWriterWriteFormatString(writer, "%d", mgr->workers); - xmlTextWriterEndElement(writer); /* worker-threads */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "worker-threads")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->workers)); + TRY0(xmlTextWriterEndElement(writer)); /* worker-threads */ #else /* ISC_PLATFORM_USETHREADS */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "type"); - xmlTextWriterWriteString(writer, ISC_XMLCHAR "non-threaded"); - xmlTextWriterEndElement(writer); /* type */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "type")); + TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "non-threaded")); + TRY0(xmlTextWriterEndElement(writer)); /* type */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); - xmlTextWriterWriteFormatString(writer, "%d", mgr->refs); - xmlTextWriterEndElement(writer); /* references */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->refs)); + TRY0(xmlTextWriterEndElement(writer)); /* references */ #endif /* ISC_PLATFORM_USETHREADS */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "default-quantum"); - xmlTextWriterWriteFormatString(writer, "%d", mgr->default_quantum); - xmlTextWriterEndElement(writer); /* default-quantum */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "default-quantum")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", + mgr->default_quantum)); + TRY0(xmlTextWriterEndElement(writer)); /* default-quantum */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "tasks-running"); - xmlTextWriterWriteFormatString(writer, "%d", mgr->tasks_running); - xmlTextWriterEndElement(writer); /* tasks-running */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "tasks-running")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->tasks_running)); + TRY0(xmlTextWriterEndElement(writer)); /* tasks-running */ - xmlTextWriterEndElement(writer); /* thread-model */ + TRY0(xmlTextWriterEndElement(writer)); /* thread-model */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "tasks"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "tasks")); task = ISC_LIST_HEAD(mgr->tasks); while (task != NULL) { LOCK(&task->lock); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "task"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "task")); if (task->name[0] != 0) { - xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"); - xmlTextWriterWriteFormatString(writer, "%s", - task->name); - xmlTextWriterEndElement(writer); /* name */ + TRY0(xmlTextWriterStartElement(writer, + ISC_XMLCHAR "name")); + TRY0(xmlTextWriterWriteFormatString(writer, "%s", + task->name)); + TRY0(xmlTextWriterEndElement(writer)); /* name */ } - xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); - xmlTextWriterWriteFormatString(writer, "%d", task->references); - xmlTextWriterEndElement(writer); /* references */ + TRY0(xmlTextWriterStartElement(writer, + ISC_XMLCHAR "references")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", + task->references)); + TRY0(xmlTextWriterEndElement(writer)); /* references */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "id"); - xmlTextWriterWriteFormatString(writer, "%p", task); - xmlTextWriterEndElement(writer); /* id */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "id")); + TRY0(xmlTextWriterWriteFormatString(writer, "%p", task)); + TRY0(xmlTextWriterEndElement(writer)); /* id */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "state"); - xmlTextWriterWriteFormatString(writer, "%s", - statenames[task->state]); - xmlTextWriterEndElement(writer); /* state */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "state")); + TRY0(xmlTextWriterWriteFormatString(writer, "%s", + statenames[task->state])); + TRY0(xmlTextWriterEndElement(writer)); /* state */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "quantum"); - xmlTextWriterWriteFormatString(writer, "%d", task->quantum); - xmlTextWriterEndElement(writer); /* quantum */ + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "quantum")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", + task->quantum)); + TRY0(xmlTextWriterEndElement(writer)); /* quantum */ - xmlTextWriterEndElement(writer); + TRY0(xmlTextWriterEndElement(writer)); UNLOCK(&task->lock); task = ISC_LIST_NEXT(task, link); } - xmlTextWriterEndElement(writer); /* tasks */ + TRY0(xmlTextWriterEndElement(writer)); /* tasks */ + error: + if (task != NULL) + UNLOCK(&task->lock); UNLOCK(&mgr->lock); + + return (xmlrc); } #endif /* HAVE_LIBXML2 && BIND9 */ diff --git a/contrib/bind9/lib/isc/taskpool.c b/contrib/bind9/lib/isc/taskpool.c index 936732c..7324cfa 100644 --- a/contrib/bind9/lib/isc/taskpool.c +++ b/contrib/bind9/lib/isc/taskpool.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -52,13 +52,15 @@ alloc_pool(isc_taskmgr_t *tmgr, isc_mem_t *mctx, unsigned int ntasks, pool = isc_mem_get(mctx, sizeof(*pool)); if (pool == NULL) return (ISC_R_NOMEMORY); - pool->mctx = mctx; + + pool->mctx = NULL; + isc_mem_attach(mctx, &pool->mctx); pool->ntasks = ntasks; pool->quantum = quantum; pool->tmgr = tmgr; pool->tasks = isc_mem_get(mctx, ntasks * sizeof(isc_task_t *)); if (pool->tasks == NULL) { - isc_mem_put(mctx, pool, sizeof(*pool)); + isc_mem_putanddetach(&pool->mctx, pool, sizeof(*pool)); return (ISC_R_NOMEMORY); } for (i = 0; i < ntasks; i++) @@ -169,7 +171,7 @@ isc_taskpool_destroy(isc_taskpool_t **poolp) { } isc_mem_put(pool->mctx, pool->tasks, pool->ntasks * sizeof(isc_task_t *)); - isc_mem_put(pool->mctx, pool, sizeof(*pool)); + isc_mem_putanddetach(&pool->mctx, pool, sizeof(*pool)); *poolp = NULL; } diff --git a/contrib/bind9/lib/isc/timer.c b/contrib/bind9/lib/isc/timer.c index 0da251f..23fcbbe 100644 --- a/contrib/bind9/lib/isc/timer.c +++ b/contrib/bind9/lib/isc/timer.c @@ -130,12 +130,12 @@ struct isc__timermgr { ISC_TIMERFUNC_SCOPE isc_result_t isc__timer_create(isc_timermgr_t *manager, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, const isc_interval_t *interval, isc_task_t *task, isc_taskaction_t action, const void *arg, isc_timer_t **timerp); ISC_TIMERFUNC_SCOPE isc_result_t isc__timer_reset(isc_timer_t *timer, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, const isc_interval_t *interval, isc_boolean_t purge); ISC_TIMERFUNC_SCOPE isc_timertype_t isc__timer_gettype(isc_timer_t *timer); @@ -392,7 +392,7 @@ destroy(isc__timer_t *timer) { ISC_TIMERFUNC_SCOPE isc_result_t isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, const isc_interval_t *interval, isc_task_t *task, isc_taskaction_t action, const void *arg, isc_timer_t **timerp) { @@ -514,7 +514,7 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type, ISC_TIMERFUNC_SCOPE isc_result_t isc__timer_reset(isc_timer_t *timer0, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, const isc_interval_t *interval, isc_boolean_t purge) { isc__timer_t *timer = (isc__timer_t *)timer0; @@ -692,7 +692,7 @@ dispatch(isc__timermgr_t *manager, isc_time_t *now) { while (manager->nscheduled > 0 && !done) { timer = isc_heap_element(manager->heap, 1); - INSIST(timer->type != isc_timertype_inactive); + INSIST(timer != NULL && timer->type != isc_timertype_inactive); if (isc_time_compare(now, &timer->due) >= 0) { if (timer->type == isc_timertype_ticker) { type = ISC_TIMEREVENT_TICK; diff --git a/contrib/bind9/lib/isc/timer_api.c b/contrib/bind9/lib/isc/timer_api.c index 97e62b3..39b33e3 100644 --- a/contrib/bind9/lib/isc/timer_api.c +++ b/contrib/bind9/lib/isc/timer_api.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -96,7 +96,7 @@ isc_timermgr_destroy(isc_timermgr_t **managerp) { isc_result_t isc_timer_create(isc_timermgr_t *manager, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, const isc_interval_t *interval, isc_task_t *task, isc_taskaction_t action, const void *arg, isc_timer_t **timerp) { @@ -128,7 +128,7 @@ isc_timer_detach(isc_timer_t **timerp) { isc_result_t isc_timer_reset(isc_timer_t *timer, isc_timertype_t type, - isc_time_t *expires, isc_interval_t *interval, + const isc_time_t *expires, const isc_interval_t *interval, isc_boolean_t purge) { REQUIRE(ISCAPI_TIMER_VALID(timer)); diff --git a/contrib/bind9/lib/isc/unix/entropy.c b/contrib/bind9/lib/isc/unix/entropy.c index ab53faf..9c422b5 100644 --- a/contrib/bind9/lib/isc/unix/entropy.c +++ b/contrib/bind9/lib/isc/unix/entropy.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -536,8 +536,7 @@ isc_entropy_createfilesource(isc_entropy_t *ent, const char *fname) { memset(&sname, 0, sizeof(sname)); sname.sun_family = AF_UNIX; - strncpy(sname.sun_path, fname, sizeof(sname.sun_path)); - sname.sun_path[sizeof(sname.sun_path)-1] = '0'; + strlcpy(sname.sun_path, fname, sizeof(sname.sun_path)); #ifdef ISC_PLATFORM_HAVESALEN #if !defined(SUN_LEN) #define SUN_LEN(su) \ diff --git a/contrib/bind9/lib/isc/unix/file.c b/contrib/bind9/lib/isc/unix/file.c index 99c02ec..7bb25d7 100644 --- a/contrib/bind9/lib/isc/unix/file.c +++ b/contrib/bind9/lib/isc/unix/file.c @@ -396,6 +396,24 @@ isc_file_isplainfile(const char *filename) { return(ISC_R_SUCCESS); } +isc_result_t +isc_file_isdirectory(const char *filename) { + /* + * This function returns success if filename exists and is a + * directory. + */ + struct stat filestat; + memset(&filestat,0,sizeof(struct stat)); + + if ((stat(filename, &filestat)) == -1) + return(isc__errno2result(errno)); + + if(! S_ISDIR(filestat.st_mode)) + return(ISC_R_INVALIDFILE); + + return(ISC_R_SUCCESS); +} + isc_boolean_t isc_file_isabsolute(const char *filename) { REQUIRE(filename != NULL); @@ -542,6 +560,9 @@ isc_file_splitpath(isc_mem_t *mctx, char *path, char **dirname, char **basename) { char *dir, *file, *slash; + if (path == NULL) + return (ISC_R_INVALIDFILE); + slash = strrchr(path, '/'); if (slash == path) { diff --git a/contrib/bind9/lib/isc/unix/include/isc/time.h b/contrib/bind9/lib/isc/unix/include/isc/time.h index dc1cef9..d81d854 100644 --- a/contrib/bind9/lib/isc/unix/include/isc/time.h +++ b/contrib/bind9/lib/isc/unix/include/isc/time.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -41,7 +41,7 @@ struct isc_interval { unsigned int nanoseconds; }; -extern isc_interval_t *isc_interval_zero; +extern const isc_interval_t * const isc_interval_zero; ISC_LANG_BEGINDECLS @@ -85,7 +85,7 @@ struct isc_time { unsigned int nanoseconds; }; -extern isc_time_t *isc_time_epoch; +extern const isc_time_t * const isc_time_epoch; void isc_time_set(isc_time_t *t, unsigned int seconds, unsigned int nanoseconds); diff --git a/contrib/bind9/lib/isc/unix/net.c b/contrib/bind9/lib/isc/unix/net.c index ea4a504..1fedbc4 100644 --- a/contrib/bind9/lib/isc/unix/net.c +++ b/contrib/bind9/lib/isc/unix/net.c @@ -301,8 +301,6 @@ try_ipv6only(void) { goto close; } - close(s); - ipv6only_result = ISC_R_SUCCESS; close: @@ -358,7 +356,6 @@ try_ipv6pktinfo(void) { goto close; } - close(s); ipv6pktinfo_result = ISC_R_SUCCESS; close: diff --git a/contrib/bind9/lib/isc/unix/socket.c b/contrib/bind9/lib/isc/unix/socket.c index 9d64a77..d007598 100644 --- a/contrib/bind9/lib/isc/unix/socket.c +++ b/contrib/bind9/lib/isc/unix/socket.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -613,7 +613,7 @@ enum { STATID_SENDFAIL = 8, STATID_RECVFAIL = 9 }; -static const isc_statscounter_t upd4statsindex[] = { +static const isc_statscounter_t udp4statsindex[] = { isc_sockstatscounter_udp4open, isc_sockstatscounter_udp4openfail, isc_sockstatscounter_udp4close, @@ -625,7 +625,7 @@ static const isc_statscounter_t upd4statsindex[] = { isc_sockstatscounter_udp4sendfail, isc_sockstatscounter_udp4recvfail }; -static const isc_statscounter_t upd6statsindex[] = { +static const isc_statscounter_t udp6statsindex[] = { isc_sockstatscounter_udp6open, isc_sockstatscounter_udp6openfail, isc_sockstatscounter_udp6close, @@ -1192,7 +1192,7 @@ process_cmsg(isc__socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { struct in6_pktinfo *pktinfop; #endif #ifdef SO_TIMESTAMP - struct timeval *timevalp; + void *timevalp; #endif #endif @@ -1259,9 +1259,11 @@ process_cmsg(isc__socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { #ifdef SO_TIMESTAMP if (cmsgp->cmsg_level == SOL_SOCKET && cmsgp->cmsg_type == SCM_TIMESTAMP) { - timevalp = (struct timeval *)CMSG_DATA(cmsgp); - dev->timestamp.seconds = timevalp->tv_sec; - dev->timestamp.nanoseconds = timevalp->tv_usec * 1000; + struct timeval tv; + timevalp = CMSG_DATA(cmsgp); + memcpy(&tv, timevalp, sizeof(tv)); + dev->timestamp.seconds = tv.tv_sec; + dev->timestamp.nanoseconds = tv.tv_usec * 1000; dev->attributes |= ISC_SOCKEVENTATTR_TIMESTAMP; goto next; } @@ -2052,7 +2054,7 @@ allocate_socket(isc__socketmgr_t *manager, isc_sockettype_t type, sock->sendcmsgbuf = NULL; /* - * set up cmsg buffers + * Set up cmsg buffers. */ cmsgbuflen = 0; #if defined(USE_CMSG) && defined(ISC_PLATFORM_HAVEIN6PKTINFO) @@ -2094,7 +2096,7 @@ allocate_socket(isc__socketmgr_t *manager, isc_sockettype_t type, sock->tag = NULL; /* - * set up list of readers and writers to be initially empty + * Set up list of readers and writers to be initially empty. */ ISC_LIST_INIT(sock->recv_list); ISC_LIST_INIT(sock->send_list); @@ -2109,7 +2111,7 @@ allocate_socket(isc__socketmgr_t *manager, isc_sockettype_t type, sock->bound = 0; /* - * initialize the lock + * Initialize the lock. */ result = isc_mutex_init(&sock->lock); if (result != ISC_R_SUCCESS) { @@ -2119,7 +2121,7 @@ allocate_socket(isc__socketmgr_t *manager, isc_sockettype_t type, } /* - * Initialize readable and writable events + * Initialize readable and writable events. */ ISC_EVENT_INIT(&sock->readable_ev, sizeof(intev_t), ISC_EVENTATTR_NOPURGE, NULL, ISC_SOCKEVENT_INTR, @@ -2223,13 +2225,38 @@ clear_bsdcompat(void) { } #endif +static void +use_min_mtu(isc__socket_t *sock) { +#if !defined(IPV6_USE_MIN_MTU) && !defined(IPV6_MTU) + UNUSED(sock); +#endif +#ifdef IPV6_USE_MIN_MTU + /* use minimum MTU */ + if (sock->pf == AF_INET6) { + int on = 1; + (void)setsockopt(sock->fd, IPPROTO_IPV6, IPV6_USE_MIN_MTU, + (void *)&on, sizeof(on)); + } +#endif +#if defined(IPV6_MTU) + /* + * Use minimum MTU on IPv6 sockets. + */ + if (sock->pf == AF_INET6) { + int mtu = 1280; + (void)setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MTU, + &mtu, sizeof(mtu)); + } +#endif +} + static isc_result_t opensocket(isc__socketmgr_t *manager, isc__socket_t *sock) { isc_result_t result; char strbuf[ISC_STRERRORSIZE]; const char *err = "socket"; int tries = 0; -#if defined(USE_CMSG) || defined(SO_BSDCOMPAT) +#if defined(USE_CMSG) || defined(SO_BSDCOMPAT) || defined(SO_NOSIGPIPE) int on = 1; #endif #if defined(SO_RCVBUF) @@ -2367,6 +2394,11 @@ opensocket(isc__socketmgr_t *manager, isc__socket_t *sock) { } #endif + /* + * Use minimum mtu if possible. + */ + use_min_mtu(sock); + #if defined(USE_CMSG) || defined(SO_RCVBUF) if (sock->type == isc_sockettype_udp) { @@ -2431,32 +2463,6 @@ opensocket(isc__socketmgr_t *manager, isc__socket_t *sock) { } #endif /* IPV6_RECVPKTINFO */ #endif /* ISC_PLATFORM_HAVEIN6PKTINFO */ -#ifdef IPV6_USE_MIN_MTU /* RFC 3542, not too common yet*/ - /* use minimum MTU */ - if (sock->pf == AF_INET6 && - setsockopt(sock->fd, IPPROTO_IPV6, IPV6_USE_MIN_MTU, - (void *)&on, sizeof(on)) < 0) { - isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, - "setsockopt(%d, IPV6_USE_MIN_MTU) " - "%s: %s", sock->fd, - isc_msgcat_get(isc_msgcat, - ISC_MSGSET_GENERAL, - ISC_MSG_FAILED, - "failed"), - strbuf); - } -#endif -#if defined(IPV6_MTU) - /* - * Use minimum MTU on IPv6 sockets. - */ - if (sock->pf == AF_INET6) { - int mtu = 1280; - (void)setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MTU, - &mtu, sizeof(mtu)); - } -#endif #if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DONT) /* * Turn off Path MTU discovery on IPv6/UDP sockets. @@ -2546,7 +2552,7 @@ isc__socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, switch (sock->type) { case isc_sockettype_udp: sock->statsindex = - (pf == AF_INET) ? upd4statsindex : upd6statsindex; + (pf == AF_INET) ? udp4statsindex : udp6statsindex; break; case isc_sockettype_tcp: sock->statsindex = @@ -3209,23 +3215,27 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { if (fd != -1) { int lockid = FDLOCK_ID(fd); - LOCK(&manager->fdlock[lockid]); - manager->fds[fd] = NEWCONNSOCK(dev); - manager->fdstate[fd] = MANAGED; - UNLOCK(&manager->fdlock[lockid]); - - LOCK(&manager->lock); - ISC_LIST_APPEND(manager->socklist, NEWCONNSOCK(dev), link); - NEWCONNSOCK(dev)->fd = fd; NEWCONNSOCK(dev)->bound = 1; NEWCONNSOCK(dev)->connected = 1; /* + * Use minimum mtu if possible. + */ + use_min_mtu(NEWCONNSOCK(dev)); + + /* * Save away the remote address */ dev->address = NEWCONNSOCK(dev)->peer_address; + LOCK(&manager->fdlock[lockid]); + manager->fds[fd] = NEWCONNSOCK(dev); + manager->fdstate[fd] = MANAGED; + UNLOCK(&manager->fdlock[lockid]); + + LOCK(&manager->lock); + #ifdef USE_SELECT if (manager->maxfd < fd) manager->maxfd = fd; @@ -3236,6 +3246,8 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { "accepted connection, new socket %p", dev->newsocket); + ISC_LIST_APPEND(manager->socklist, NEWCONNSOCK(dev), link); + UNLOCK(&manager->lock); inc_stats(manager->stats, sock->statsindex[STATID_ACCEPT]); @@ -5851,94 +5863,112 @@ _socktype(isc_sockettype_t type) return ("not-initialized"); } -ISC_SOCKETFUNC_SCOPE void +#define TRY0(a) do { xmlrc = (a); if (xmlrc < 0) goto error; } while(0) +ISC_SOCKETFUNC_SCOPE int isc_socketmgr_renderxml(isc_socketmgr_t *mgr0, xmlTextWriterPtr writer) { isc__socketmgr_t *mgr = (isc__socketmgr_t *)mgr0; - isc__socket_t *sock; + isc__socket_t *sock = NULL; char peerbuf[ISC_SOCKADDR_FORMATSIZE]; isc_sockaddr_t addr; ISC_SOCKADDR_LEN_T len; + int xmlrc; LOCK(&mgr->lock); #ifdef USE_SHARED_MANAGER - xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); - xmlTextWriterWriteFormatString(writer, "%d", mgr->refs); - xmlTextWriterEndElement(writer); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->refs)); + TRY0(xmlTextWriterEndElement(writer)); #endif /* USE_SHARED_MANAGER */ - xmlTextWriterStartElement(writer, ISC_XMLCHAR "sockets"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "sockets")); sock = ISC_LIST_HEAD(mgr->socklist); while (sock != NULL) { LOCK(&sock->lock); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "socket"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "socket")); - xmlTextWriterStartElement(writer, ISC_XMLCHAR "id"); - xmlTextWriterWriteFormatString(writer, "%p", sock); - xmlTextWriterEndElement(writer); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "id")); + TRY0(xmlTextWriterWriteFormatString(writer, "%p", sock)); + TRY0(xmlTextWriterEndElement(writer)); if (sock->name[0] != 0) { - xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"); - xmlTextWriterWriteFormatString(writer, "%s", - sock->name); - xmlTextWriterEndElement(writer); /* name */ + TRY0(xmlTextWriterStartElement(writer, + ISC_XMLCHAR "name")); + TRY0(xmlTextWriterWriteFormatString(writer, "%s", + sock->name)); + TRY0(xmlTextWriterEndElement(writer)); /* name */ } - xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); - xmlTextWriterWriteFormatString(writer, "%d", sock->references); - xmlTextWriterEndElement(writer); + TRY0(xmlTextWriterStartElement(writer, + ISC_XMLCHAR "references")); + TRY0(xmlTextWriterWriteFormatString(writer, "%d", + sock->references)); + TRY0(xmlTextWriterEndElement(writer)); - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "type", - ISC_XMLCHAR _socktype(sock->type)); + TRY0(xmlTextWriterWriteElement(writer, ISC_XMLCHAR "type", + ISC_XMLCHAR _socktype(sock->type))); if (sock->connected) { isc_sockaddr_format(&sock->peer_address, peerbuf, sizeof(peerbuf)); - xmlTextWriterWriteElement(writer, + TRY0(xmlTextWriterWriteElement(writer, ISC_XMLCHAR "peer-address", - ISC_XMLCHAR peerbuf); + ISC_XMLCHAR peerbuf)); } len = sizeof(addr); if (getsockname(sock->fd, &addr.type.sa, (void *)&len) == 0) { isc_sockaddr_format(&addr, peerbuf, sizeof(peerbuf)); - xmlTextWriterWriteElement(writer, + TRY0(xmlTextWriterWriteElement(writer, ISC_XMLCHAR "local-address", - ISC_XMLCHAR peerbuf); + ISC_XMLCHAR peerbuf)); } - xmlTextWriterStartElement(writer, ISC_XMLCHAR "states"); + TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "states")); if (sock->pending_recv) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "pending-receive"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "pending-receive")); if (sock->pending_send) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "pending-send"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "pending-send")); if (sock->pending_accept) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "pending_accept"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "pending_accept")); if (sock->listener) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "listener"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "listener")); if (sock->connected) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "connected"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "connected")); if (sock->connecting) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "connecting"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "connecting")); if (sock->bound) - xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state", - ISC_XMLCHAR "bound"); + TRY0(xmlTextWriterWriteElement(writer, + ISC_XMLCHAR "state", + ISC_XMLCHAR "bound")); - xmlTextWriterEndElement(writer); /* states */ + TRY0(xmlTextWriterEndElement(writer)); /* states */ - xmlTextWriterEndElement(writer); /* socket */ + TRY0(xmlTextWriterEndElement(writer)); /* socket */ UNLOCK(&sock->lock); sock = ISC_LIST_NEXT(sock, link); } - xmlTextWriterEndElement(writer); /* sockets */ + TRY0(xmlTextWriterEndElement(writer)); /* sockets */ + + error: + if (sock != NULL) + UNLOCK(&sock->lock); UNLOCK(&mgr->lock); + + return (xmlrc); } #endif /* HAVE_LIBXML2 */ diff --git a/contrib/bind9/lib/isc/unix/time.c b/contrib/bind9/lib/isc/unix/time.c index ac23ae0..e820afb 100644 --- a/contrib/bind9/lib/isc/unix/time.c +++ b/contrib/bind9/lib/isc/unix/time.c @@ -54,8 +54,8 @@ *** Intervals ***/ -static isc_interval_t zero_interval = { 0, 0 }; -isc_interval_t *isc_interval_zero = &zero_interval; +static const isc_interval_t zero_interval = { 0, 0 }; +const isc_interval_t * const isc_interval_zero = &zero_interval; #if ISC_FIX_TV_USEC static inline void @@ -110,8 +110,8 @@ isc_interval_iszero(const isc_interval_t *i) { *** Absolute Times ***/ -static isc_time_t epoch = { 0, 0 }; -isc_time_t *isc_time_epoch = &epoch; +static const isc_time_t epoch = { 0, 0 }; +const isc_time_t * const isc_time_epoch = &epoch; void isc_time_set(isc_time_t *t, unsigned int seconds, unsigned int nanoseconds) { diff --git a/contrib/bind9/lib/isccc/api b/contrib/bind9/lib/isccc/api index ba19dd9..461b9ac 100644 --- a/contrib/bind9/lib/isccc/api +++ b/contrib/bind9/lib/isccc/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 +# 9.9-sub: 130-139 LIBINTERFACE = 80 -LIBREVISION = 2 +LIBREVISION = 3 LIBAGE = 0 diff --git a/contrib/bind9/lib/isccc/cc.c b/contrib/bind9/lib/isccc/cc.c index 1ab9479..07f8157 100644 --- a/contrib/bind9/lib/isccc/cc.c +++ b/contrib/bind9/lib/isccc/cc.c @@ -561,8 +561,10 @@ isccc_cc_createack(isccc_sexpr_t *message, isc_boolean_t ok, return (result); _ctrl = isccc_alist_lookup(ack, "_ctrl"); - if (_ctrl == NULL) - return (ISC_R_FAILURE); + if (_ctrl == NULL) { + result = ISC_R_FAILURE; + goto bad; + } if (isccc_cc_definestring(ack, "_ack", (ok) ? "1" : "0") == NULL) { result = ISC_R_NOMEMORY; goto bad; @@ -608,7 +610,7 @@ isc_result_t isccc_cc_createresponse(isccc_sexpr_t *message, isccc_time_t now, isccc_time_t expires, isccc_sexpr_t **alistp) { - char *_frm, *_to, *type; + char *_frm, *_to, *type = NULL; isc_uint32_t serial; isccc_sexpr_t *alist, *_ctrl, *_data; isc_result_t result; @@ -617,8 +619,7 @@ isccc_cc_createresponse(isccc_sexpr_t *message, isccc_time_t now, _ctrl = isccc_alist_lookup(message, "_ctrl"); _data = isccc_alist_lookup(message, "_data"); - if (_ctrl == NULL || - _data == NULL || + if (_ctrl == NULL || _data == NULL || isccc_cc_lookupuint32(_ctrl, "_ser", &serial) != ISC_R_SUCCESS || isccc_cc_lookupstring(_data, "type", &type) != ISC_R_SUCCESS) return (ISC_R_FAILURE); @@ -637,21 +638,33 @@ isccc_cc_createresponse(isccc_sexpr_t *message, isccc_time_t now, &alist); if (result != ISC_R_SUCCESS) return (result); + _ctrl = isccc_alist_lookup(alist, "_ctrl"); - if (_ctrl == NULL) - return (ISC_R_FAILURE); + if (_ctrl == NULL) { + result = ISC_R_FAILURE; + goto bad; + } + _data = isccc_alist_lookup(alist, "_data"); - if (_data == NULL) - return (ISC_R_FAILURE); + if (_data == NULL) { + result = ISC_R_FAILURE; + goto bad; + } + if (isccc_cc_definestring(_ctrl, "_rpl", "1") == NULL || - isccc_cc_definestring(_data, "type", type) == NULL) { - isccc_sexpr_free(&alist); - return (ISC_R_NOMEMORY); + isccc_cc_definestring(_data, "type", type) == NULL) + { + result = ISC_R_NOMEMORY; + goto bad; } *alistp = alist; return (ISC_R_SUCCESS); + + bad: + isccc_sexpr_free(&alist); + return (result); } isccc_sexpr_t * @@ -687,6 +700,8 @@ isccc_cc_lookupstring(isccc_sexpr_t *alist, const char *key, char **strp) { isccc_sexpr_t *kv, *v; + REQUIRE(strp == NULL || *strp == NULL); + kv = isccc_alist_assq(alist, key); if (kv != NULL) { v = ISCCC_SEXPR_CDR(kv); @@ -785,7 +800,7 @@ isccc_cc_checkdup(isccc_symtab_t *symtab, isccc_sexpr_t *message, { const char *_frm; const char *_to; - char *_ser, *_tim, *tmp; + char *_ser = NULL, *_tim = NULL, *tmp; isc_result_t result; char *key; size_t len; @@ -797,13 +812,19 @@ isccc_cc_checkdup(isccc_symtab_t *symtab, isccc_sexpr_t *message, isccc_cc_lookupstring(_ctrl, "_ser", &_ser) != ISC_R_SUCCESS || isccc_cc_lookupstring(_ctrl, "_tim", &_tim) != ISC_R_SUCCESS) return (ISC_R_FAILURE); + + INSIST(_ser != NULL); + INSIST(_tim != NULL); + /* * _frm and _to are optional. */ + tmp = NULL; if (isccc_cc_lookupstring(_ctrl, "_frm", &tmp) != ISC_R_SUCCESS) _frm = ""; else _frm = tmp; + tmp = NULL; if (isccc_cc_lookupstring(_ctrl, "_to", &tmp) != ISC_R_SUCCESS) _to = ""; else diff --git a/contrib/bind9/lib/isccfg/Makefile.in b/contrib/bind9/lib/isccfg/Makefile.in index bc42880..19ec61e 100644 --- a/contrib/bind9/lib/isccfg/Makefile.in +++ b/contrib/bind9/lib/isccfg/Makefile.in @@ -68,7 +68,8 @@ libisccfg.la: ${OBJS} ${LIBTOOL_MODE_LINK} \ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisccfg.la -rpath ${libdir} \ -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \ - ${OBJS} ${DNSLIBS} ${ISCCCLIBS} ${ISCLIBS} ${LIBS} + ${OBJS} ${DNSLIBS} ${ISCCCLIBS} ${ISCLIBS} @DNS_CRYPTO_LIBS@ \ + ${LIBS} timestamp: libisccfg.@A@ touch timestamp diff --git a/contrib/bind9/lib/isccfg/aclconf.c b/contrib/bind9/lib/isccfg/aclconf.c index 469989a..af56599 100644 --- a/contrib/bind9/lib/isccfg/aclconf.c +++ b/contrib/bind9/lib/isccfg/aclconf.c @@ -192,7 +192,7 @@ convert_keyname(const cfg_obj_t *keyobj, isc_log_t *lctx, isc_mem_t *mctx, const char *txtname = cfg_obj_asstring(keyobj); keylen = strlen(txtname); - isc_buffer_init(&buf, txtname, keylen); + isc_buffer_constinit(&buf, txtname, keylen); isc_buffer_add(&buf, keylen); dns_fixedname_init(&fixname); result = dns_name_fromtext(dns_fixedname_name(&fixname), &buf, diff --git a/contrib/bind9/lib/isccfg/api b/contrib/bind9/lib/isccfg/api index cde1e2f..39585b0 100644 --- a/contrib/bind9/lib/isccfg/api +++ b/contrib/bind9/lib/isccfg/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 +# 9.9-sub: 130-139 LIBINTERFACE = 82 -LIBREVISION = 3 +LIBREVISION = 7 LIBAGE = 0 diff --git a/contrib/bind9/lib/isccfg/include/isccfg/cfg.h b/contrib/bind9/lib/isccfg/include/isccfg/cfg.h index f467768..b21a3d8 100644 --- a/contrib/bind9/lib/isccfg/include/isccfg/cfg.h +++ b/contrib/bind9/lib/isccfg/include/isccfg/cfg.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010, 2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -411,6 +411,10 @@ cfg_obj_destroy(cfg_parser_t *pctx, cfg_obj_t **obj); /*%< * Delete a reference to a configuration object; destroy the object if * there are no more references. + * + * Require: + * \li '*obj' is a valid cfg_obj_t. + * \li 'pctx' is a valid cfg_parser_t. */ void diff --git a/contrib/bind9/lib/isccfg/namedconf.c b/contrib/bind9/lib/isccfg/namedconf.c index 4d09f11..287ce14 100644 --- a/contrib/bind9/lib/isccfg/namedconf.c +++ b/contrib/bind9/lib/isccfg/namedconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -526,6 +526,12 @@ static cfg_type_t cfg_type_checkmode = { &cfg_rep_string, &checkmode_enums }; +static const char *warn_enums[] = { "warn", "ignore", NULL }; +static cfg_type_t cfg_type_warn = { + "warn", cfg_parse_enum, cfg_print_ustring, cfg_doc_enum, + &cfg_rep_string, &warn_enums +}; + static cfg_tuplefielddef_t checknames_fields[] = { { "type", &cfg_type_checktype, 0 }, { "mode", &cfg_type_checkmode, 0 }, @@ -1018,10 +1024,9 @@ static cfg_type_t cfg_type_masterformat = { * response-policy { * zone <string> [ policy (given|disabled|passthru| * nxdomain|nodata|cname <domain> ) ] - * [ recursive-only yes|no ] - * [ max-policy-ttl number ] ; - * } [ recursive-only yes|no ] [ break-dnssec yes|no ] - * [ max-policy-ttl number ] ; + * [ recursive-only yes|no ] [ max-policy-ttl number ] ; + * } [ recursive-only yes|no ] [ max-policy-ttl number ] ; + * [ break-dnssec yes|no ] [ min-ns-dots number ] ; */ static void @@ -1223,6 +1228,7 @@ static cfg_tuplefielddef_t rpz_fields[] = { { "recursive-only", &cfg_type_boolean, 0 }, { "break-dnssec", &cfg_type_boolean, 0 }, { "max-policy-ttl", &cfg_type_uint32, 0 }, + { "min-ns-dots", &cfg_type_uint32, 0 }, { NULL, NULL, 0 } }; static cfg_type_t cfg_type_rpz = { @@ -1461,6 +1467,7 @@ zone_clauses[] = { { "check-mx", &cfg_type_checkmode, 0 }, { "check-mx-cname", &cfg_type_checkmode, 0 }, { "check-sibling", &cfg_type_boolean, 0 }, + { "check-spf", &cfg_type_warn, 0 }, { "check-srv-cname", &cfg_type_checkmode, 0 }, { "check-wildcard", &cfg_type_boolean, 0 }, { "dialup", &cfg_type_dialuptype, 0 }, diff --git a/contrib/bind9/lib/isccfg/parser.c b/contrib/bind9/lib/isccfg/parser.c index ef20184..de0fa31 100644 --- a/contrib/bind9/lib/isccfg/parser.c +++ b/contrib/bind9/lib/isccfg/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -387,13 +387,15 @@ cfg_parser_create(isc_mem_t *mctx, isc_log_t *lctx, cfg_parser_t **ret) { if (pctx == NULL) return (ISC_R_NOMEMORY); + pctx->mctx = NULL; + isc_mem_attach(mctx, &pctx->mctx); + result = isc_refcount_init(&pctx->references, 1); if (result != ISC_R_SUCCESS) { - isc_mem_put(mctx, pctx, sizeof(*pctx)); + isc_mem_putanddetach(&pctx->mctx, pctx, sizeof(*pctx)); return (result); } - pctx->mctx = mctx; pctx->lctx = lctx; pctx->lexer = NULL; pctx->seen_eof = ISC_FALSE; @@ -434,7 +436,7 @@ cfg_parser_create(isc_mem_t *mctx, isc_log_t *lctx, cfg_parser_t **ret) { isc_lex_destroy(&pctx->lexer); CLEANUP_OBJ(pctx->open_files); CLEANUP_OBJ(pctx->closed_files); - isc_mem_put(mctx, pctx, sizeof(*pctx)); + isc_mem_putanddetach(&pctx->mctx, pctx, sizeof(*pctx)); return (result); } @@ -555,7 +557,7 @@ cfg_parser_destroy(cfg_parser_t **pctxp) { */ CLEANUP_OBJ(pctx->open_files); CLEANUP_OBJ(pctx->closed_files); - isc_mem_put(pctx->mctx, pctx, sizeof(*pctx)); + isc_mem_putanddetach(&pctx->mctx, pctx, sizeof(*pctx)); } *pctxp = NULL; } @@ -2426,9 +2428,14 @@ cfg_obj_istype(const cfg_obj_t *obj, const cfg_type_t *type) { */ void cfg_obj_destroy(cfg_parser_t *pctx, cfg_obj_t **objp) { - cfg_obj_t *obj = *objp; + cfg_obj_t *obj; unsigned int refs; + REQUIRE(objp != NULL && *objp != NULL); + REQUIRE(pctx != NULL); + + obj = *objp; + isc_refcount_decrement(&obj->references, &refs); if (refs == 0) { obj->type->rep->free(pctx, obj); diff --git a/contrib/bind9/lib/lwres/api b/contrib/bind9/lib/lwres/api index 1e51baa..2a5c388 100644 --- a/contrib/bind9/lib/lwres/api +++ b/contrib/bind9/lib/lwres/api @@ -1,8 +1,9 @@ # LIBINTERFACE ranges # 9.6: 50-59, 110-119 # 9.7: 60-79 -# 9.8: 80-89 +# 9.8: 80-89, 120-129 # 9.9: 90-109 +# 9.9-sub: 130-139 LIBINTERFACE = 80 -LIBREVISION = 3 +LIBREVISION = 6 LIBAGE = 0 diff --git a/contrib/bind9/lib/lwres/context.c b/contrib/bind9/lib/lwres/context.c index 64bdaa1..047707f 100644 --- a/contrib/bind9/lib/lwres/context.c +++ b/contrib/bind9/lib/lwres/context.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -377,6 +377,7 @@ lwres_context_send(lwres_context_t *ctx, lwresult = context_connect(ctx); if (lwresult != LWRES_R_SUCCESS) return (lwresult); + INSIST(ctx->sock >= 0); } ret = sendto(ctx->sock, sendbase, sendlen, 0, NULL, 0); diff --git a/contrib/bind9/lib/lwres/getaddrinfo.c b/contrib/bind9/lib/lwres/getaddrinfo.c index 811a2fe..7d5f2fb 100644 --- a/contrib/bind9/lib/lwres/getaddrinfo.c +++ b/contrib/bind9/lib/lwres/getaddrinfo.c @@ -573,10 +573,8 @@ add_ipv4(const char *hostname, int flags, struct addrinfo **aip, (void) lwres_conf_parse(lwrctx, lwres_resolv_conf); if (hostname == NULL && (flags & AI_PASSIVE) == 0) { ai = ai_clone(*aip, AF_INET); - if (ai == NULL) { - lwres_freeaddrinfo(*aip); + if (ai == NULL) SETERROR(EAI_MEMORY); - } *aip = ai; ai->ai_socktype = socktype; @@ -594,10 +592,8 @@ add_ipv4(const char *hostname, int flags, struct addrinfo **aip, addr = LWRES_LIST_HEAD(by->addrs); while (addr != NULL) { ai = ai_clone(*aip, AF_INET); - if (ai == NULL) { - lwres_freeaddrinfo(*aip); + if (ai == NULL) SETERROR(EAI_MEMORY); - } *aip = ai; ai->ai_socktype = socktype; SIN(ai->ai_addr)->sin_port = port; @@ -641,10 +637,8 @@ add_ipv6(const char *hostname, int flags, struct addrinfo **aip, if (hostname == NULL && (flags & AI_PASSIVE) == 0) { ai = ai_clone(*aip, AF_INET6); - if (ai == NULL) { - lwres_freeaddrinfo(*aip); + if (ai == NULL) SETERROR(EAI_MEMORY); - } *aip = ai; ai->ai_socktype = socktype; @@ -662,10 +656,8 @@ add_ipv6(const char *hostname, int flags, struct addrinfo **aip, addr = LWRES_LIST_HEAD(by->addrs); while (addr != NULL) { ai = ai_clone(*aip, AF_INET6); - if (ai == NULL) { - lwres_freeaddrinfo(*aip); + if (ai == NULL) SETERROR(EAI_MEMORY); - } *aip = ai; ai->ai_socktype = socktype; SIN6(ai->ai_addr)->sin6_port = port; diff --git a/contrib/bind9/lib/lwres/getipnode.c b/contrib/bind9/lib/lwres/getipnode.c index 3bd8217..300376e 100644 --- a/contrib/bind9/lib/lwres/getipnode.c +++ b/contrib/bind9/lib/lwres/getipnode.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -466,6 +466,9 @@ lwres_freehostent(struct hostent *he) { int names = 1; int addresses = 1; + if (he == NULL) + return; + free(he->h_name); cpp = he->h_addr_list; @@ -950,8 +953,9 @@ copyandmerge(struct hostent *he1, struct hostent *he2, int af, int *error_num) * Copy aliases. */ npp = he->h_aliases; - cpp = (he1 != NULL) ? he1->h_aliases : he2->h_aliases; - while (*cpp != NULL) { + cpp = (he1 != NULL) ? he1->h_aliases + : ((he2 != NULL) ? he2->h_aliases : NULL); + while (cpp != NULL && *cpp != NULL) { len = strlen (*cpp) + 1; *npp = malloc(len); if (*npp == NULL) @@ -1115,6 +1119,8 @@ hostfromname(lwres_gabnresponse_t *name, int af) { * Copy aliases. */ he->h_aliases = malloc(sizeof(char *) * (name->naliases + 1)); + if (he->h_aliases == NULL) + goto cleanup; for (i = 0; i < name->naliases; i++) { he->h_aliases[i] = strdup(name->aliases[i]); if (he->h_aliases[i] == NULL) @@ -1126,6 +1132,8 @@ hostfromname(lwres_gabnresponse_t *name, int af) { * Copy addresses. */ he->h_addr_list = malloc(sizeof(char *) * (name->naddrs + 1)); + if (he->h_addr_list == NULL) + goto cleanup; addr = LWRES_LIST_HEAD(name->addrs); i = 0; while (addr != NULL) { diff --git a/contrib/bind9/lib/lwres/getnameinfo.c b/contrib/bind9/lib/lwres/getnameinfo.c index 92a34a1..08ebf93 100644 --- a/contrib/bind9/lib/lwres/getnameinfo.c +++ b/contrib/bind9/lib/lwres/getnameinfo.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004, 2005, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004, 2005, 2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -161,7 +161,7 @@ int lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags) { - struct afd *afd; + struct afd *afd = NULL; struct servent *sp; unsigned short port; #ifdef LWRES_PLATFORM_HAVESALEN diff --git a/contrib/bind9/lib/lwres/getrrset.c b/contrib/bind9/lib/lwres/getrrset.c index d8b6cc3..16af741 100644 --- a/contrib/bind9/lib/lwres/getrrset.c +++ b/contrib/bind9/lib/lwres/getrrset.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -21,12 +21,12 @@ /** * DESCRIPTION - * + * * lwres_getrrsetbyname() gets a set of resource records associated with * a hostname, class, and type. hostname is a pointer a to * null-terminated string. The flags field is currently unused and must * be zero. - * + * * After a successful call to lwres_getrrsetbyname(), *res is a pointer * to an #rrsetinfo structure, containing a list of one or more #rdatainfo * structures containing resource records and potentially another list of @@ -37,7 +37,7 @@ * in uncompressed DNS wire format. Properties of the rdataset are * represented in the #rri_flags bitfield. If the #RRSET_VALIDATED bit is * set, the data has been DNSSEC validated and the signatures verified. - * + * * All of the information returned by lwres_getrrsetbyname() is * dynamically allocated: the rrsetinfo and rdatainfo structures, and the * canonical host name strings pointed to by the rrsetinfostructure. @@ -45,15 +45,15 @@ * successful call to lwres_getrrsetbyname() is released by * lwres_freerrset(). rrset is a pointer to a struct rrset created by a * call to lwres_getrrsetbyname(). - * + * * The following structures are used: - * + * * \code * struct rdatainfo { * unsigned int rdi_length; // length of data * unsigned char *rdi_data; // record data * }; - * + * * struct rrsetinfo { * unsigned int rri_flags; // RRSET_VALIDATED... * unsigned int rri_rdclass; // class number @@ -66,23 +66,23 @@ * struct rdatainfo *rri_sigs; // individual signatures * }; * \endcode - * + * * \section getrrset_return Return Values - * + * * lwres_getrrsetbyname() returns zero on success, and one of the * following error codes if an error occurred: - * + * * \li #ERRSET_NONAME: the name does not exist - * + * * \li #ERRSET_NODATA: * the name exists, but does not have data of the desired type - * + * * \li #ERRSET_NOMEMORY: * memory could not be allocated - * + * * \li #ERRSET_INVAL: * a parameter is invalid - * + * * \li #ERRSET_FAIL: * other failure */ @@ -179,7 +179,7 @@ lwres_getrrsetbyname(const char *hostname, unsigned int rdclass, lwflags = 0; lwresult = lwres_getrdatabyname(lwrctx, hostname, - (lwres_uint16_t)rdclass, + (lwres_uint16_t)rdclass, (lwres_uint16_t)rdtype, lwflags, &response); if (lwresult != LWRES_R_SUCCESS) { @@ -271,18 +271,22 @@ lwres_getrrsetbyname(const char *hostname, unsigned int rdclass, void lwres_freerrset(struct rrsetinfo *rrset) { unsigned int i; - for (i = 0; i < rrset->rri_nrdatas; i++) { - if (rrset->rri_rdatas[i].rdi_data == NULL) - break; - free(rrset->rri_rdatas[i].rdi_data); + if (rrset->rri_rdatas != NULL) { + for (i = 0; i < rrset->rri_nrdatas; i++) { + if (rrset->rri_rdatas[i].rdi_data == NULL) + break; + free(rrset->rri_rdatas[i].rdi_data); + } + free(rrset->rri_rdatas); } - free(rrset->rri_rdatas); - for (i = 0; i < rrset->rri_nsigs; i++) { - if (rrset->rri_sigs[i].rdi_data == NULL) - break; - free(rrset->rri_sigs[i].rdi_data); + if (rrset->rri_sigs != NULL) { + for (i = 0; i < rrset->rri_nsigs; i++) { + if (rrset->rri_sigs[i].rdi_data == NULL) + break; + free(rrset->rri_sigs[i].rdi_data); + } + free(rrset->rri_sigs); } - free(rrset->rri_sigs); free(rrset->rri_name); free(rrset); } diff --git a/contrib/bind9/lib/lwres/lwinetaton.c b/contrib/bind9/lib/lwres/lwinetaton.c index e40c28f..5a0d85a 100644 --- a/contrib/bind9/lib/lwres/lwinetaton.c +++ b/contrib/bind9/lib/lwres/lwinetaton.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1996-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -95,7 +95,7 @@ static char rcsid[] = "$Id: lwinetaton.c,v 1.16 2007/06/19 23:47:22 tbox Exp $"; */ int lwres_net_aton(const char *cp, struct in_addr *addr) { - unsigned long val; + lwres_uint32_t val; int base, n; unsigned char c; lwres_uint8_t parts[4]; @@ -120,7 +120,7 @@ lwres_net_aton(const char *cp, struct in_addr *addr) { c = *++cp; if (c == 'x' || c == 'X') { base = 16; - c = *++cp; + c = *++cp; } else { base = 8; digit = 1; diff --git a/contrib/bind9/lib/lwres/print.c b/contrib/bind9/lib/lwres/print.c index 591ed36..87f3032 100644 --- a/contrib/bind9/lib/lwres/print.c +++ b/contrib/bind9/lib/lwres/print.c @@ -470,12 +470,16 @@ lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap) { pad--; } break; + case 'D': /*deprecated*/ INSIST("use %ld instead of %D" == NULL); + break; case 'O': /*deprecated*/ INSIST("use %lo instead of %O" == NULL); + break; case 'U': /*deprecated*/ INSIST("use %lu instead of %U" == NULL); + break; case 'L': #ifdef HAVE_LONG_DOUBLE diff --git a/contrib/bind9/libtool.m4 b/contrib/bind9/libtool.m4 deleted file mode 100644 index a352a65..0000000 --- a/contrib/bind9/libtool.m4 +++ /dev/null @@ -1,6656 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, -## 2008 Free Software Foundation, Inc. -## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -## -## This file is free software; the Free Software Foundation gives -## unlimited permission to copy and/or distribute it, with or without -## modifications, as long as this notice is preserved. - -# serial 52 AC_PROG_LIBTOOL - - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If this macro is not defined by Autoconf, define it here. -m4_ifdef([AC_PROVIDE_IFELSE], - [], - [m4_define([AC_PROVIDE_IFELSE], - [m4_ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) - - -# AC_PROG_LIBTOOL -# --------------- -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. - AC_PROVIDE_IFELSE([AC_PROG_CXX], - [AC_LIBTOOL_CXX], - [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX - ])]) -dnl And a similar setup for Fortran 77 support - AC_PROVIDE_IFELSE([AC_PROG_F77], - [AC_LIBTOOL_F77], - [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -])]) - -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. - AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [ifdef([AC_PROG_GCJ], - [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([A][M_PROG_GCJ], - [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([LT_AC_PROG_GCJ], - [define([LT_AC_PROG_GCJ], - defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -])])# AC_PROG_LIBTOOL - - -# _AC_PROG_LIBTOOL -# ---------------- -AC_DEFUN([_AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -])# _AC_PROG_LIBTOOL - - -# AC_LIBTOOL_SETUP -# ---------------- -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl - -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl -AC_LIBTOOL_SYS_MAX_CMD_LEN -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e 1s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -AC_CHECK_TOOL(AR, ar, false) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -_LT_REQUIRED_DARWIN_CHECKS - -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -AC_ARG_WITH([pic], - [AC_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -AC_LIBTOOL_LANG_C_CONFIG -_LT_AC_TAGCONFIG -])# AC_LIBTOOL_SETUP - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -AC_DEFUN([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -]) - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -AC_DEFUN([_LT_COMPILER_BOILERPLATE], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -AC_DEFUN([_LT_LINKER_BOILERPLATE], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# -------------------------- -# Check for some things on darwin -AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - echo "int foo(void){return 1;}" > conftest.c - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib ${wl}-single_module conftest.c - if test -f libconftest.dylib; then - lt_cv_apple_cc_single_mod=yes - rm -rf libconftest.dylib* - fi - rm conftest.c - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - case $host_os in - rhapsody* | darwin1.[[0123]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil="~$DSYMUTIL \$lib || :" - else - _lt_dsymutil= - fi - ;; - esac -]) - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -AC_DEFUN([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<EOF -[$]* -EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string=`eval $cmd`) 2>/dev/null && - echo_test_string=`eval $cmd` && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -])])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - ]) -esac - -need_locks="$enable_libtool_lock" - -])# _LT_AC_LOCK - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_REQUIRE([LT_AC_PROG_SED]) -AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - ifelse([$5], , :, [$5]) -else - ifelse([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $rm -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# ------------------ -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h)dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# --------------------------------------------------------------------- -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -[#line __oline__ "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - else - puts (dlerror ()); - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ---------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -m4_if($1,[],[ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - sys_lib_search_path_spec=`echo $lt_search_path_spec` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - shlibpath_overrides_runpath=no - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - shlibpath_overrides_runpath=yes - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], -[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], -[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_ARG_WITH([tags], - [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], - [include additional configurations @<:@automatic@:>@])], - [tagnames="$withval"]) - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - AC_MSG_WARN([output file `$ofile' does not exist]) - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) - else - AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) - fi - fi - if test -z "$LTCFLAGS"; then - eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in - "") ;; - *) AC_MSG_ERROR([invalid tag name: $tagname]) - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - AC_MSG_ERROR([tag name \"$tagname\" already exists]) - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_LIBTOOL_LANG_CXX_CONFIG - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - AC_LIBTOOL_LANG_F77_CONFIG - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - AC_LIBTOOL_LANG_GCJ_CONFIG - else - tagname="" - fi - ;; - - RC) - AC_LIBTOOL_LANG_RC_CONFIG - ;; - - *) - AC_MSG_ERROR([Unsupported tag name: $tagname]) - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - AC_MSG_ERROR([unable to update list of available tagged configurations.]) - fi -fi -])# _LT_AC_TAGCONFIG - - -# AC_LIBTOOL_DLOPEN -# ----------------- -# enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_DLOPEN - - -# AC_LIBTOOL_WIN32_DLL -# -------------------- -# declare package support for building win32 DLLs -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_WIN32_DLL - - -# AC_ENABLE_SHARED([DEFAULT]) -# --------------------------- -# implement the --enable-shared flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([shared], - [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -])# AC_ENABLE_SHARED - - -# AC_DISABLE_SHARED -# ----------------- -# set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no) -])# AC_DISABLE_SHARED - - -# AC_ENABLE_STATIC([DEFAULT]) -# --------------------------- -# implement the --enable-static flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([static], - [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]AC_ENABLE_STATIC_DEFAULT) -])# AC_ENABLE_STATIC - - -# AC_DISABLE_STATIC -# ----------------- -# set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no) -])# AC_DISABLE_STATIC - - -# AC_ENABLE_FAST_INSTALL([DEFAULT]) -# --------------------------------- -# implement the --enable-fast-install flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([fast-install], - [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -])# AC_ENABLE_FAST_INSTALL - - -# AC_DISABLE_FAST_INSTALL -# ----------------------- -# set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no) -])# AC_DISABLE_FAST_INSTALL - - -# AC_LIBTOOL_PICMODE([MODE]) -# -------------------------- -# implement the --with-pic flag -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default) -])# AC_LIBTOOL_PICMODE - - -# AC_PROG_EGREP -# ------------- -# This is predefined starting with Autoconf 2.54, so this conditional -# definition can be removed once we require Autoconf 2.54 or later. -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -])]) - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognize shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognize a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AC_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no]) -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$lt_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_PROG_LD_GNU -])# AC_PROG_LD - - -# AC_PROG_LD_GNU -# -------------- -AC_DEFUN([AC_PROG_LD_GNU], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac]) -with_gnu_ld=$lt_cv_prog_gnu_ld -])# AC_PROG_LD_GNU - - -# AC_PROG_LD_RELOAD_FLAG -# ---------------------- -# find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], -[AC_CACHE_CHECK([for $LD option to reload object files], - lt_cv_ld_reload_flag, - [lt_cv_ld_reload_flag='-r']) -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac -])# AC_PROG_LD_RELOAD_FLAG - - -# AC_DEPLIBS_CHECK_METHOD -# ----------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], -[AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the pathname to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -])# AC_PROG_NM - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that -# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, -# it is assumed to be `libltdl'. LIBLTDL will be prefixed with -# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' -# (note the single quotes!). If your package is not flat and you're not -# using automake, define top_builddir and top_srcdir appropriately in -# the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that -# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, -# and an installed libltdl is not found, it is assumed to be `libltdl'. -# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and top_srcdir -# appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_CXX -# -------------- -# enable support for C++ libraries -AC_DEFUN([AC_LIBTOOL_CXX], -[AC_REQUIRE([_LT_AC_LANG_CXX]) -])# AC_LIBTOOL_CXX - - -# _LT_AC_LANG_CXX -# --------------- -AC_DEFUN([_LT_AC_LANG_CXX], -[AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([_LT_AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) -])# _LT_AC_LANG_CXX - -# _LT_AC_PROG_CXXCPP -# ------------------ -AC_DEFUN([_LT_AC_PROG_CXXCPP], -[ -AC_REQUIRE([AC_PROG_CXX]) -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -fi -])# _LT_AC_PROG_CXXCPP - -# AC_LIBTOOL_F77 -# -------------- -# enable support for Fortran 77 libraries -AC_DEFUN([AC_LIBTOOL_F77], -[AC_REQUIRE([_LT_AC_LANG_F77]) -])# AC_LIBTOOL_F77 - - -# _LT_AC_LANG_F77 -# --------------- -AC_DEFUN([_LT_AC_LANG_F77], -[AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) -])# _LT_AC_LANG_F77 - - -# AC_LIBTOOL_GCJ -# -------------- -# enable support for GCJ libraries -AC_DEFUN([AC_LIBTOOL_GCJ], -[AC_REQUIRE([_LT_AC_LANG_GCJ]) -])# AC_LIBTOOL_GCJ - - -# _LT_AC_LANG_GCJ -# --------------- -AC_DEFUN([_LT_AC_LANG_GCJ], -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], - [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], - [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], - [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) -])# _LT_AC_LANG_GCJ - - -# AC_LIBTOOL_RC -# ------------- -# enable support for Windows resource files -AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) -])# AC_LIBTOOL_RC - - -# AC_LIBTOOL_LANG_C_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -AC_DEFUN([_LT_AC_LANG_C_CONFIG], -[lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF - -# Report which library types will actually be built -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case $host_os in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_C_CONFIG - - -# AC_LIBTOOL_LANG_CXX_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([_LT_AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= -_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - $as_unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - $as_unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -_LT_AC_TAGVAR(ld_shlibs, $1)=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - if test "$GXX" = yes ; then - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) ;; - *) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - interix[[3-9]]*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - linux* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc*) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='echo' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd='echo' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - osf3*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='echo' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - # So that behaviour is only enabled if SCOABSPATH is set to a - # non-empty value in the environment. Most likely only useful for - # creating official distributions of packages. - # This is a hack until libtool officially supports absolute path - # names for shared libraries. - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$GXX" -_LT_AC_TAGVAR(LD, $1)="$LD" - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -AC_LIBTOOL_POSTDEP_PREDEP($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# AC_LIBTOOL_LANG_CXX_CONFIG - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -ifelse([$1],[],[cat > conftest.$ac_ext <<EOF -int a; -void foo (void) { a = 0; } -EOF -],[$1],[CXX],[cat > conftest.$ac_ext <<EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -EOF -],[$1],[F77],[cat > conftest.$ac_ext <<EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -EOF -],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - # The `*' in the case matches for architectures that use `case' in - # $output_verbose_cmd can trigger glob expansion during the loop - # eval without this substitution. - output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` - - for p in `eval $output_verbose_link_cmd`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" \ - || test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then - _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then - _LT_AC_TAGVAR(predep_objects, $1)="$p" - else - _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then - _LT_AC_TAGVAR(postdep_objects, $1)="$p" - else - _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$rm -f confest.$objext - -_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_AC_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - -# PORTME: override above test on systems where it is broken -ifelse([$1],[CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_AC_TAGVAR(predep_objects,$1)= - _LT_AC_TAGVAR(postdep_objects,$1)= - _LT_AC_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - # - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - if test "$solaris_use_stlport4" != yes; then - _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) -case " $_LT_AC_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac -])# AC_LIBTOOL_POSTDEP_PREDEP - -# AC_LIBTOOL_LANG_F77_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) -AC_DEFUN([_LT_AC_LANG_F77_CONFIG], -[AC_REQUIRE([AC_PROG_F77]) -AC_LANG_PUSH(Fortran 77) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="\ - subroutine t - return - end -" - -# Code to be used in simple link tests -lt_simple_link_test_code="\ - program t - end -" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case $host_os in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; -aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -_LT_AC_TAGVAR(GCC, $1)="$G77" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_F77_CONFIG - - -# AC_LIBTOOL_LANG_GCJ_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) -AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], -[AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_GCJ_CONFIG - - -# AC_LIBTOOL_LANG_RC_CONFIG -# ------------------------- -# Ensure that the configuration vars for the Windows resource compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) -AC_DEFUN([_LT_AC_LANG_RC_CONFIG], -[AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_RC_CONFIG - - -# AC_LIBTOOL_CONFIG([TAGNAME]) -# ---------------------------- -# If TAGNAME is not passed, then create an initial libtool script -# with a default configuration from the untagged config vars. Otherwise -# add code to config.status for appending the configuration named by -# TAGNAME from the matching tagged config vars. -AC_DEFUN([AC_LIBTOOL_CONFIG], -[# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - _LT_AC_TAGVAR(compiler, $1) \ - _LT_AC_TAGVAR(CC, $1) \ - _LT_AC_TAGVAR(LD, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ - _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ - _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ - _LT_AC_TAGVAR(old_archive_cmds, $1) \ - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ - _LT_AC_TAGVAR(predep_objects, $1) \ - _LT_AC_TAGVAR(postdep_objects, $1) \ - _LT_AC_TAGVAR(predeps, $1) \ - _LT_AC_TAGVAR(postdeps, $1) \ - _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ - _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ - _LT_AC_TAGVAR(archive_cmds, $1) \ - _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ - _LT_AC_TAGVAR(postinstall_cmds, $1) \ - _LT_AC_TAGVAR(postuninstall_cmds, $1) \ - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ - _LT_AC_TAGVAR(allow_undefined_flag, $1) \ - _LT_AC_TAGVAR(no_undefined_flag, $1) \ - _LT_AC_TAGVAR(export_symbols_cmds, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ - _LT_AC_TAGVAR(hardcode_automatic, $1) \ - _LT_AC_TAGVAR(module_cmds, $1) \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) \ - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ - _LT_AC_TAGVAR(fix_srcfile_path, $1) \ - _LT_AC_TAGVAR(exclude_expsyms, $1) \ - _LT_AC_TAGVAR(include_expsyms, $1); do - - case $var in - _LT_AC_TAGVAR(old_archive_cmds, $1) | \ - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ - _LT_AC_TAGVAR(archive_cmds, $1) | \ - _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ - _LT_AC_TAGVAR(module_cmds, $1) | \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ - _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\[$]0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` - ;; - esac - -ifelse([$1], [], - [cfgfile="${ofile}T" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - $rm -f "$cfgfile" - AC_MSG_NOTICE([creating $ofile])], - [cfgfile="$ofile"]) - - cat <<__EOF__ >> "$cfgfile" -ifelse([$1], [], -[#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e 1s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG], -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# A language-specific compiler. -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) - -# Is the compiler the GNU C compiler? -with_gcc=$_LT_AC_TAGVAR(GCC, $1) - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_[]_LT_AC_TAGVAR(LD, $1) - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) - -# Commands used to build and install a shared archive. -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) - -# The directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to yes if exported symbols are required. -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) - -# The commands to list exported symbols. -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) - -# Symbols that must always be exported. -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) - -ifelse([$1],[], -[# ### END LIBTOOL CONFIG], -[# ### END LIBTOOL TAG CONFIG: $tagname]) - -__EOF__ - -ifelse([$1],[], [ - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -]) -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -])# AC_LIBTOOL_CONFIG - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([LT_AC_PROG_SED]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -linux* | k*bsd*-gnu) - if test "$host_cpu" = ia64; then - symcode='[[ABCDGIRSTW]]' - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat <<EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <<EOF >> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) - ifelse([$1],[CXX],[ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc* | ecpc*) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler. - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux* | k*bsd*-gnu) - case $cc_basename in - icc* | ecc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - esac - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -# -# Check to make sure the static flag actually works. -# -wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -ifelse([$1],[CXX],[ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -],[ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - _LT_CC_BASENAME([$compiler]) - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - interix[[3-9]]*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | k*bsd*-gnu) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi[[45]]*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - case $host_os in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - wlarc='' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_AC_FILE_LTDLL_C -# ------------------- -# Be careful that the start marker always follows a newline. -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include <windows.h> -# #undef WIN32_LEAN_AND_MEAN -# #include <stdio.h> -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include <cygwin/cygwin_dll.h> -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ -])# _LT_AC_FILE_LTDLL_C - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) - - -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) - -AC_DEFUN([LT_AC_PROG_GCJ], -[AC_CHECK_TOOL(GCJ, gcj, no) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS) -]) - -AC_DEFUN([LT_AC_PROG_RC], -[AC_CHECK_TOOL(RC, windres, no) -]) - - -# Cheap backport of AS_EXECUTABLE_P and required macros -# from Autoconf 2.59; we should not use $as_executable_p directly. - -# _AS_TEST_PREPARE -# ---------------- -m4_ifndef([_AS_TEST_PREPARE], -[m4_defun([_AS_TEST_PREPARE], -[if test -x / >/dev/null 2>&1; then - as_executable_p='test -x' -else - as_executable_p='test -f' -fi -])])# _AS_TEST_PREPARE - -# AS_EXECUTABLE_P -# --------------- -# Check whether a file is executable. -m4_ifndef([AS_EXECUTABLE_P], -[m4_defun([AS_EXECUTABLE_P], -[AS_REQUIRE([_AS_TEST_PREPARE])dnl -$as_executable_p $1[]dnl -])])# AS_EXECUTABLE_P - -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -]) diff --git a/contrib/bind9/libtool.m4/libtool.m4 b/contrib/bind9/libtool.m4/libtool.m4 new file mode 100644 index 0000000..44e0ecf --- /dev/null +++ b/contrib/bind9/libtool.m4/libtool.m4 @@ -0,0 +1,7982 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to <bug-libtool@gnu.org>." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +_LT_PATH_LD_GNU +AC_SUBST([LD]) + +_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) +])# LT_PATH_LD + +# Old names: +AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) +AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_LD], []) +dnl AC_DEFUN([AC_PROG_LD], []) + + +# _LT_PATH_LD_GNU +#- -------------- +m4_defun([_LT_PATH_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# _LT_PATH_LD_GNU + + +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +m4_defun([_LT_CMD_RELOAD], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl +])# _LT_CMD_RELOAD + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/contrib/bind9/libtool.m4/ltoptions.m4 b/contrib/bind9/libtool.m4/ltoptions.m4 new file mode 100644 index 0000000..5d9acd8 --- /dev/null +++ b/contrib/bind9/libtool.m4/ltoptions.m4 @@ -0,0 +1,384 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/contrib/bind9/libtool.m4/ltsugar.m4 b/contrib/bind9/libtool.m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/contrib/bind9/libtool.m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/contrib/bind9/libtool.m4/ltversion.m4 b/contrib/bind9/libtool.m4/ltversion.m4 new file mode 100644 index 0000000..07a8602 --- /dev/null +++ b/contrib/bind9/libtool.m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/contrib/bind9/libtool.m4/lt~obsolete.m4 b/contrib/bind9/libtool.m4/lt~obsolete.m4 new file mode 100644 index 0000000..c573da9 --- /dev/null +++ b/contrib/bind9/libtool.m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/contrib/bind9/ltmain.sh b/contrib/bind9/ltmain.sh index ce02bc6..16ddbf8 100644 --- a/contrib/bind9/ltmain.sh +++ b/contrib/bind9/ltmain.sh @@ -1,52 +1,90 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# This program is free software; you can redistribute it and/or modify +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -basename="s,^.*/,,g" - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# The name of this program: -progname=`echo "$progpath" | $SED $basename` -modename="$progname" - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to <bug-libtool@gnu.org>. +# GNU libtool home page: <http://www.gnu.org/software/libtool/>. +# General help using GNU software: <http://www.gnu.org/gethelp/>. -PROGRAM=ltmain.sh +PROGRAM=libtool PACKAGE=libtool -VERSION=1.5.26 -TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)" +VERSION=2.4.2 +TIMESTAMP="" +package_revision=1.3337 -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -60,104 +98,457 @@ fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<EOF -$* -EOF - exit $EXIT_SUCCESS -fi - -default_mode= -help="Try \`$progname --help' for more information." -magic="%%%MAGIC variable%%%" -mkdir="mkdir" -mv="mv -f" -rm="rm -f" - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - SP2NL='tr \040 \012' - NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - SP2NL='tr \100 \n' - NL2SP='tr \r\n \100\100' - ;; -esac +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -# We save the old values to restore during execute mode. -lt_env= +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - lt_env=\"$lt_var=\$$lt_var \$lt_env\" - $lt_var=C + save_$lt_var=\$$lt_var + $lt_var=C export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL -if test -n "$lt_env"; then - lt_env="env $lt_env" -fi +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - $echo "$modename: not configured to build any kind of library" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE -fi +dirname="s,/[^/]*$,," +basename="s,^.*/,," -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -duplicate_deps=no -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} -##################################### -# Shell function definitions: -# This seems to be the best place for them # func_mktempdir [string] # Make a temporary directory that won't clash with other running @@ -167,7 +558,7 @@ func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" - if test "$run" = ":"; then + if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else @@ -176,71 +567,804 @@ func_mktempdir () my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" - save_mktempdir_umask=`umask` - umask 0077 - $mkdir "$my_tmpdir" - umask $save_mktempdir_umask + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || { - $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 - exit $EXIT_FAILURE - } + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi - $echo "X$my_tmpdir" | $Xsed + $ECHO "$my_tmpdir" } -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -func_win32_libid () +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () { - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - $SED -n -e '1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; - *DLL*) - win32_libid_type="x86 DLL" + * ) + func_tr_sh_result=$1 ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac - $echo $win32_libid_type } +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} # func_infer_tag arg # Infer tagged configuration to use if any are available and @@ -250,9 +1374,11 @@ func_win32_libid () # arg is usually of the form 'gcc ...' func_infer_tag () { + $opt_debug + # FreeBSD-specific: where we install compilers with non-standard names - tag_compilers_CC="*cc cc* *gcc gcc*" - tag_compilers_CXX="*c++ c++* *g++ g++*" + tag_compilers_CC="*cc cc* *gcc gcc* clang" + tag_compilers_CXX="*c++ c++* *g++ g++* clang++" base_compiler=`set -- "$@"; echo $1` # If $tagname isn't set, then try to infer if the default "CC" tag applies @@ -267,36 +1393,32 @@ func_infer_tag () if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" + func_append_quoted CC_quoted "$arg" done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do - # Double-quote args containing other shell metacharacters. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. @@ -325,11 +1447,10 @@ func_infer_tag () # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit $EXIT_FAILURE -# else -# $echo "$modename: using $tagname tagged configuration" + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" fi ;; esac @@ -337,354 +1458,528 @@ func_infer_tag () } -# func_extract_an_archive dir oldlib -func_extract_an_archive () + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () { - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi - $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" - $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' else - $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 - exit $EXIT_FAILURE + write_oldobj=none fi + + $opt_dry_run || { + cat >${write_libobj}T <<EOF +# $write_libobj - a libtool object file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object=$write_lobj + +# Name of the non-PIC object +non_pic_object=$write_oldobj + +EOF + $MV "${write_libobj}T" "${write_libobj}" + } } -# func_extract_archives gentop oldlib ... -func_extract_archives () + +################################################## +# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # +################################################## + +# func_convert_core_file_wine_to_w32 ARG +# Helper function used by file name conversion functions when $build is *nix, +# and $host is mingw, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. +# +# ARG is the $build file name to be converted to w32 format. +# Result is available in $func_convert_core_file_wine_to_w32_result, and will +# be empty on error (or when ARG is empty) +func_convert_core_file_wine_to_w32 () { - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - my_status="" - - $show "${rm}r $my_gentop" - $run ${rm}r "$my_gentop" - $show "$mkdir $my_gentop" - $run $mkdir "$my_gentop" - my_status=$? - if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then - exit $my_status + $opt_debug + func_convert_core_file_wine_to_w32_result="$1" + if test -n "$1"; then + # Unfortunately, winepath does not exit with a non-zero error code, so we + # are forced to check the contents of stdout. On the other hand, if the + # command is not found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both error code of + # zero AND non-empty stdout, which explains the odd construction: + func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= fi + fi +} +# end: func_convert_core_file_wine_to_w32 - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - extracted_serial=`expr $extracted_serial + 1` - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - $show "${rm}r $my_xdir" - $run ${rm}r "$my_xdir" - $show "$mkdir $my_xdir" - $run $mkdir "$my_xdir" - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then - exit $exit_status +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi fi - case $host in - *-darwin*) - $show "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - if test -z "$run"; then - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` - darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` - if test -n "$darwin_arches"; then - darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - $show "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we have a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` - lipo -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - ${rm}r unfat-$$ - cd "$darwin_orig_dir" - else - cd "$darwin_orig_dir" - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - fi # $run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done - func_extract_archives_result="$my_oldobjs" + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi } -# End of Shell function definitions -##################################### +#end: func_cygpath -# Darwin sucks -eval std_shrext=\"$shrext_cmds\" -disable_libs=no +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit $EXIT_FAILURE - ;; - esac - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi - ;; - esac +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 ;; *) - eval "$prev=\$arg" + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result ;; - esac + esac +} +# end func_to_tool_file - prev= - prevopt= - continue + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; - --version) - echo "\ -$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 -Copyright (C) 2008 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit $? - ;; - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" - done - exit $? - ;; +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 - --debug) - $echo "$progname: enabling shell trace mode" - set -x - preserve_args="$preserve_args $arg" - ;; - --dry-run | -n) - run=: - ;; +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit $? - ;; - --finish) mode="finish" ;; +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - --preserve-dup-deps) duplicate_deps="yes" ;; +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} - --quiet | --silent) - show=: - preserve_args="$preserve_args $arg" - ;; - --tag) - prevopt="--tag" - prev=tag - preserve_args="$preserve_args --tag" - ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - preserve_args="$preserve_args --tag" - ;; +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop - *) - nonopt="$arg" - break - ;; - esac -done -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE -fi +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 -case $disable_libs in -no) - ;; -shared) - build_libtool_libs=no - build_old_libs=yes - ;; -static) - build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` - ;; -esac -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 -if test -z "$show_help"; then - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi +} +# end func_convert_path_msys_to_cygwin - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi +} +# end func_convert_path_nix_to_cygwin - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" @@ -693,6 +1988,7 @@ if test -z "$show_help"; then arg_mode=normal libobj= later= + pie_flag= for arg do @@ -713,16 +2009,19 @@ if test -z "$show_help"; then # Accept any command-line options. case $arg in -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit $EXIT_FAILURE - fi + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; - -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" continue ;; @@ -737,31 +2036,24 @@ if test -z "$show_help"; then ;; # replaced later. I would guess that would be a bug. -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' - for arg in $args; do + for arg in $args; do IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" + func_append_quoted lastarg "$arg" done IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" + func_append base_compile " $lastarg" continue ;; - * ) + *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # @@ -773,66 +2065,41 @@ if test -z "$show_help"; then esac # case $arg_mode # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, and some SunOS ksh mistreat backslash-escaping - # in scan sets (worked around with variable expansion), - # and furthermore cannot handle '|' '&' '(' ')' in scan sets - # at all, so we specify them separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" + func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit $EXIT_FAILURE + func_fatal_error "you must specify an argument for -Xcompile" ;; target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.[fF][09]?) xform=[fF][09]. ;; - *.for) xform=for ;; - *.java) xform=java ;; - *.obj) xform=obj ;; - *.sx) xform=sx ;; + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; esac - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac @@ -840,7 +2107,15 @@ if test -z "$show_help"; then for arg in $later; do case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + -static) + build_libtool_libs=no build_old_libs=yes continue ;; @@ -857,28 +2132,17 @@ if test -z "$show_help"; then esac done - qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` - case $qlibobj in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qlibobj="\"$qlibobj\"" ;; - esac - test "X$libobj" != "X$qlibobj" \ - && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then @@ -887,12 +2151,9 @@ if test -z "$show_help"; then removelist="$lobj $libobj ${libobj}T" fi - $run $rm $removelist - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in - cygwin* | mingw* | pw32* | os2*) + cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac @@ -904,10 +2165,8 @@ if test -z "$show_help"; then # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no @@ -917,13 +2176,13 @@ if test -z "$show_help"; then # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then - until $run ln "$progpath" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then - $echo "\ + $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` @@ -934,34 +2193,21 @@ repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." - $run $rm $removelist + $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi - $echo "$srcfile" > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" fi - qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` - case $qsrcfile in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qsrcfile="\"$qsrcfile\"" ;; - esac - $run $rm "$libobj" "${libobj}T" + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T <<EOF -# $libobj - a libtool object file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -EOF + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then @@ -975,32 +2221,19 @@ EOF command="$base_compile $qsrcfile" fi - if test ! -d "${xdir}$objdir"; then - $show "$mkdir ${xdir}$objdir" - $run $mkdir ${xdir}$objdir - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then - exit $exit_status - fi - fi + func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir - command="$command -o $lobj" + func_append command " -o $lobj" fi - $run $rm "$lobj" "$output_obj" - - $show "$command" - if $run eval $lt_env "$command"; then : - else - test -n "$output_obj" && $run $rm $removelist - exit $EXIT_FAILURE - fi + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $echo "\ + $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` @@ -1014,65 +2247,42 @@ repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." - $run $rm $removelist + $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <<EOF -pic_object='$objdir/$objname' - -EOF - # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' + suppress_output=' >/dev/null 2>&1' fi - else - # No PIC object so indicate it doesn't exist in the libtool - # object file. - test -z "$run" && cat >> ${libobj}T <<EOF -pic_object=none - -EOF fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code - command="$base_compile $qsrcfile" + command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then - command="$command -o $obj" + func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - $run $rm "$obj" "$output_obj" - $show "$command" - if $run eval $lt_env "$command"; then : - else - $run $rm $removelist - exit $EXIT_FAILURE - fi + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $echo "\ + $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` @@ -1086,53 +2296,2838 @@ repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." - $run $rm $removelist + $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" else - error=$? - $run $rm $removelist - exit $error + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi + done - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <<EOF -# Name of the non-PIC object. -non_pic_object='$objname' + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" -EOF - else - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <<EOF -# Name of the non-PIC object. -non_pic_object=none + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done -EOF + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS fi +} - $run $mv "${libobj}T" "${libobj}" +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - $run $rm "$lockfile" + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done fi + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen <import library>. + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 </dev/null >/dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *-*-freebsd*) + # FreeBSD doesn't need this... + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} - # libtool link mode - link | relink) - modename="$modename: link" +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat <<EOF + +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION + + The $output program cannot be directly executed until all the libtool + libraries that it depends on are installed. + + This wrapper executable should never be moved out of the build directory. + If it is, it will not operate correctly. +*/ +EOF + cat <<"EOF" +#ifdef _MSC_VER +# define _CRT_SECURE_NO_DEPRECATE 1 +#endif +#include <stdio.h> +#include <stdlib.h> +#ifdef _MSC_VER +# include <direct.h> +# include <process.h> +# include <io.h> +#else +# include <unistd.h> +# include <stdint.h> +# ifdef __CYGWIN__ +# include <io.h> +# endif +#endif +#include <malloc.h> +#include <stdarg.h> +#include <assert.h> +#include <string.h> +#include <ctype.h> +#include <errno.h> +#include <fcntl.h> +#include <sys/stat.h> + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <<EOF +volatile const char * MAGIC_EXE = "$magic_exe"; +const char * LIB_PATH_VARNAME = "$shlibpath_var"; +EOF + + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + func_to_host_path "$temp_rpath" + cat <<EOF +const char * LIB_PATH_VALUE = "$func_to_host_path_result"; +EOF + else + cat <<"EOF" +const char * LIB_PATH_VALUE = ""; +EOF + fi + + if test -n "$dllsearchpath"; then + func_to_host_path "$dllsearchpath:" + cat <<EOF +const char * EXE_PATH_VARNAME = "PATH"; +const char * EXE_PATH_VALUE = "$func_to_host_path_result"; +EOF + else + cat <<"EOF" +const char * EXE_PATH_VARNAME = ""; +const char * EXE_PATH_VALUE = ""; +EOF + fi + + if test "$fast_install" = yes; then + cat <<EOF +const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ +EOF + else + cat <<EOF +const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ +EOF + fi + + + cat <<"EOF" + +#define LTWRAPPER_OPTION_PREFIX "--lt-" + +static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; +static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; +static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; + +int +main (int argc, char *argv[]) +{ + char **newargz; + int newargc; + char *tmp_pathspec; + char *actual_cwrapper_path; + char *actual_cwrapper_name; + char *target_name; + char *lt_argv_zero; + intptr_t rval = 127; + + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + newargz = XMALLOC (char *, argc + 1); + + /* very simple arg parsing; don't want to rely on getopt + * also, copy all non cwrapper options to newargz, except + * argz[0], which is handled differently + */ + newargc=0; + for (i = 1; i < argc; i++) + { + if (strcmp (argv[i], dumpscript_opt) == 0) + { +EOF + case "$host" in + *mingw* | *cygwin* ) + # make stdout use "unix" line endings + echo " setmode(1,_O_BINARY);" + ;; + esac + + cat <<"EOF" + lt_dump_script (stdout); + return 0; + } + if (strcmp (argv[i], debug_opt) == 0) + { + lt_debug = 1; + continue; + } + if (strcmp (argv[i], ltwrapper_option_prefix) == 0) + { + /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX + namespace, but it is not one of the ones we know about and + have already dealt with, above (inluding dump-script), then + report an error. Otherwise, targets might begin to believe + they are allowed to use options in the LTWRAPPER_OPTION_PREFIX + namespace. The first time any user complains about this, we'll + need to make LTWRAPPER_OPTION_PREFIX a configure-time option + or a configure.ac-settable value. + */ + lt_fatal (__FILE__, __LINE__, + "unrecognized %s option: '%s'", + ltwrapper_option_prefix, argv[i]); + } + /* otherwise ... */ + newargz[++newargc] = xstrdup (argv[i]); + } + newargz[++newargc] = NULL; + +EOF + cat <<EOF + /* The GNU banner must be the first non-error debug message */ + lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); +EOF + cat <<"EOF" + lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); + lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); + + tmp_pathspec = find_executable (argv[0]); + if (tmp_pathspec == NULL) + lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); + lt_debugprintf (__FILE__, __LINE__, + "(main) found exe (before symlink chase) at: %s\n", + tmp_pathspec); + + actual_cwrapper_path = chase_symlinks (tmp_pathspec); + lt_debugprintf (__FILE__, __LINE__, + "(main) found exe (after symlink chase) at: %s\n", + actual_cwrapper_path); + XFREE (tmp_pathspec); + + actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); + strendzap (actual_cwrapper_path, actual_cwrapper_name); + + /* wrapper name transforms */ + strendzap (actual_cwrapper_name, ".exe"); + tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); + XFREE (actual_cwrapper_name); + actual_cwrapper_name = tmp_pathspec; + tmp_pathspec = 0; + + /* target_name transforms -- use actual target program name; might have lt- prefix */ + target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); + strendzap (target_name, ".exe"); + tmp_pathspec = lt_extend_str (target_name, ".exe", 1); + XFREE (target_name); + target_name = tmp_pathspec; + tmp_pathspec = 0; + + lt_debugprintf (__FILE__, __LINE__, + "(main) libtool target name: %s\n", + target_name); +EOF + + cat <<EOF + newargz[0] = + XMALLOC (char, (strlen (actual_cwrapper_path) + + strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); + strcpy (newargz[0], actual_cwrapper_path); + strcat (newargz[0], "$objdir"); + strcat (newargz[0], "/"); +EOF + + cat <<"EOF" + /* stop here, and copy so we don't have to do this twice */ + tmp_pathspec = xstrdup (newargz[0]); + + /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ + strcat (newargz[0], actual_cwrapper_name); + + /* DO want the lt- prefix here if it exists, so use target_name */ + lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); + XFREE (tmp_pathspec); + tmp_pathspec = NULL; +EOF + + case $host_os in + mingw*) + cat <<"EOF" + { + char* p; + while ((p = strchr (newargz[0], '\\')) != NULL) + { + *p = '/'; + } + while ((p = strchr (lt_argv_zero, '\\')) != NULL) + { + *p = '/'; + } + } +EOF + ;; + esac + + cat <<"EOF" + XFREE (target_name); + XFREE (actual_cwrapper_path); + XFREE (actual_cwrapper_name); + + lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ + lt_setenv ("DUALCASE", "1"); /* for MSK sh */ + /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must + be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) + because on Windows, both *_VARNAMEs are PATH but uninstalled + libraries must come first. */ + lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); + lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); + + lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", + nonnull (lt_argv_zero)); + for (i = 0; i < newargc; i++) + { + lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", + i, nonnull (newargz[i])); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + newargz = prepare_spawn (newargz); + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + lt_debugprintf (__FILE__, __LINE__, + "(main) failed to launch target \"%s\": %s\n", + lt_argv_zero, nonnull (strerror (errno))); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal (__FILE__, __LINE__, "memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra @@ -1150,10 +5145,10 @@ EOF allow_undefined=yes ;; esac - libtool_args="$nonopt" + libtool_args=$nonopt base_compile="$nonopt $@" - compile_command="$nonopt" - finalize_command="$nonopt" + compile_command=$nonopt + finalize_command=$nonopt compile_rpath= finalize_rpath= @@ -1168,8 +5163,10 @@ EOF dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= + new_inherited_linker_flags= avoid_version=no + bindir= dlfiles= dlprefiles= dlself=no @@ -1183,7 +5180,6 @@ EOF no_install=no objs= non_pic_objects= - notinst_path= # paths that contain not-installed libtool libraries precious_files_regex= prefer_static_libs=no preload=no @@ -1197,19 +5193,25 @@ EOF thread_safe=no vinfo= vinfo_number=no + weak_libs= single_module="${wl}-single_module" - func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static @@ -1243,29 +5245,30 @@ EOF while test "$#" -gt 0; do arg="$1" shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" ;; esac case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in @@ -1292,9 +5295,9 @@ EOF ;; *) if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" + func_append dlfiles " $arg" else - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $arg" fi prev= continue @@ -1303,10 +5306,8 @@ EOF ;; expsyms) export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit $EXIT_FAILURE - fi + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; @@ -1315,18 +5316,21 @@ EOF prev= continue ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac prev= continue ;; - release) - release="-$arg" + inst_prefix) + inst_prefix_dir="$arg" prev= continue ;; @@ -1334,39 +5338,30 @@ EOF if test -f "$arg"; then save_arg=$arg moreargs= - for fil in `cat $save_arg` + for fil in `cat "$save_arg"` do -# moreargs="$moreargs $fil" +# func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac + func_source "$arg" - if test -z "$pic_object" || \ + if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && \ + test "$pic_object" = none && test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. @@ -1374,7 +5369,7 @@ EOF if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -1386,12 +5381,12 @@ EOF # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi # A PIC object. - libobjs="$libobjs $pic_object" + func_append libobjs " $pic_object" arg="$pic_object" fi @@ -1401,7 +5396,7 @@ EOF non_pic_object="$xdir$non_pic_object" # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" + func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi @@ -1409,95 +5404,95 @@ EOF # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" + func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - + if $opt_dry_run; then # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else - $echo "$modename: link input file \`$save_arg' does not exist" - exit $EXIT_FAILURE + func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; - *) rpath="$rpath $arg" ;; + *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; + *) func_append xrpath " $arg" ;; esac fi prev= continue ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" + shrext) + shrext_cmds="$arg" prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" continue ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" + weak) + func_append weak_libs " $arg" prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" + func_append compile_command " $qarg" + func_append finalize_command " $qarg" continue ;; - shrext) - shrext_cmds="$arg" + xcompiler) + func_append compiler_flags " $qarg" prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" continue ;; - darwin_framework|darwin_framework_skip) - test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" continue ;; *) @@ -1513,16 +5508,16 @@ EOF case $arg in -all-static) if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue + func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) @@ -1530,6 +5525,11 @@ EOF continue ;; + -bindir) + prev=bindir + continue + ;; + -dlopen) prev=dlfiles continue @@ -1547,8 +5547,7 @@ EOF -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit $EXIT_FAILURE + func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms @@ -1558,15 +5557,8 @@ EOF continue ;; - -framework|-arch|-isysroot) - case " $CC " in - *" ${arg} ${1} "* | *" ${arg} ${1} "*) - prev=darwin_framework_skip ;; - *) compiler_flags="$compiler_flags $arg" - prev=darwin_framework ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" + -framework) + prev=framework continue ;; @@ -1580,55 +5572,70 @@ EOF -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" ;; esac continue ;; -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - notinst_path="$notinst_path $dir" - fi + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in - *" -L$dir "*) ;; + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac + deplibs="$deplibs $arg" continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -1642,7 +5649,7 @@ EOF ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" + func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) @@ -1662,25 +5669,35 @@ EOF ;; esac fi - deplibs="$deplibs $arg" + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. - -model) - compile_command="$compile_command $arg" - compiler_flags="$compiler_flags $arg" - finalize_command="$finalize_command $arg" + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" prev=xcompiler continue ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - deplibs="$deplibs $arg" + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac continue ;; @@ -1689,44 +5706,6 @@ EOF continue ;; - -module) - module=yes - continue - ;; - - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m* pass through architecture-specific compiler args for GCC - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # -F/path gives path to uninstalled frameworks, gcc on darwin - # @file GCC response files - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) - - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - compiler_flags="$compiler_flags $arg" - continue - ;; - - -shrext) - prev=shrext - continue - ;; - -no-fast-install) fast_install=no continue @@ -1734,11 +5713,11 @@ EOF -no-install) case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; @@ -1779,22 +5758,36 @@ EOF ;; -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + func_stripname '-R' '' "$arg" + dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac continue ;; + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that @@ -1813,47 +5806,49 @@ EOF prev=vinfo continue ;; + -version-number) prev=vinfo vinfo_number=yes continue ;; + -weak) + prev=weak + continue + ;; + -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + func_stripname ' ' '' "$arg" + arg=$func_stripname_result ;; -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + func_stripname ' ' '' "$arg" + arg=$func_stripname_result ;; -Xcompiler) @@ -1871,53 +5866,68 @@ EOF continue ;; + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + # Some other compiler flag. -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. - objs="$objs $arg" + func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac + func_source "$arg" - if test -z "$pic_object" || \ + if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && \ + test "$pic_object" = none && test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. @@ -1925,7 +5935,7 @@ EOF if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" + func_append dlfiles " $pic_object" prev= continue else @@ -1937,12 +5947,12 @@ EOF # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" + func_append dlprefiles " $pic_object" prev= fi # A PIC object. - libobjs="$libobjs $pic_object" + func_append libobjs " $pic_object" arg="$pic_object" fi @@ -1952,7 +5962,7 @@ EOF non_pic_object="$xdir$non_pic_object" # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" + func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi @@ -1960,52 +5970,47 @@ EOF # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" + func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - + if $opt_dry_run; then # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" + func_append deplibs " $arg" + func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. + func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" + func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" + func_append dlprefiles " $func_resolve_sysroot_result" prev= else - deplibs="$deplibs $arg" + func_append deplibs " $func_resolve_sysroot_result" fi continue ;; @@ -2014,70 +6019,53 @@ EOF *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" fi done # argument parsing loop - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + func_basename "$output" + outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then - exit $exit_status - fi - fi + func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE + func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; @@ -2085,27 +6073,18 @@ EOF *) linkmode=prog ;; # Anything else should be a program. esac - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) - duplicate_compiler_generated_deps=$duplicate_deps - ;; - esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then + if $opt_preserve_dup_deps ; then case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - libs="$libs $deplib" + func_append libs " $deplib" done if test "$linkmode" = lib; then @@ -2115,12 +6094,12 @@ EOF # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac - pre_post_deps="$pre_post_deps $pre_post_dep" + func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= @@ -2131,15 +6110,16 @@ EOF newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in lib) - passes="conv link" + passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit $EXIT_FAILURE + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done @@ -2155,7 +6135,20 @@ EOF *) passes="conv" ;; esac + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" @@ -2168,21 +6161,46 @@ EOF link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi + for deplib in $libs; do lib= found=no case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - compiler_flags="$compiler_flags $deplib" + func_append compiler_flags " $deplib" fi case $linkmode in @@ -2211,10 +6229,11 @@ EOF ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + func_warning "\`-l' is ignored for archives/objects" continue fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + func_stripname '-l' '' "$deplib" + name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else @@ -2250,21 +6269,17 @@ EOF if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + if func_lalib_p "$lib"; then library_names= old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac + func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." + func_dirname "$lib" "" "." + ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" @@ -2276,19 +6291,36 @@ EOF continue fi fi - ;; + ;; *) ;; esac fi fi ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then @@ -2301,27 +6333,34 @@ EOF compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; + *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; - *.la) lib="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" @@ -2329,35 +6368,41 @@ EOF fi case $linkmode in lib) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - if eval $echo \"$deplib\" 2>/dev/null \ - | $SED 10q \ + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi + valid_a_lib=yes + fi ;; - pass_all) - valid_a_lib=yes + pass_all) + valid_a_lib=yes ;; - esac - if test "$valid_a_lib" != yes; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac continue ;; prog) @@ -2378,11 +6423,11 @@ EOF if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. - newdlprefiles="$newdlprefiles $deplib" + func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else - newdlfiles="$newdlfiles $deplib" + func_append newdlfiles " $deplib" fi fi continue @@ -2392,21 +6437,18 @@ EOF continue ;; esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : else - $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." + func_dirname "$lib" "" "." + ladir="$func_dirname_result" dlname= dlopen= @@ -2414,6 +6456,7 @@ EOF libdir= library_names= old_library= + inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes @@ -2422,16 +6465,24 @@ EOF # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then @@ -2439,45 +6490,47 @@ EOF deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "\`$lib' is not a convenience library" fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done continue fi # $pass = conv # Get the name of the library we link against. linklib= - for l in $old_library $library_names; do - linklib="$l" - done + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || @@ -2486,9 +6539,9 @@ EOF # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" + func_append dlprefiles " $lib $dependency_libs" else - newdlfiles="$newdlfiles $lib" + func_append newdlfiles " $lib" fi continue fi # $pass = dlopen @@ -2499,24 +6552,25 @@ EOF *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + func_basename "$lib" + laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else - dir="$libdir" - absdir="$libdir" + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else @@ -2524,32 +6578,62 @@ EOF dir="$ladir" absdir="$abs_ladir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later - notinst_path="$notinst_path $abs_ladir" + func_append notinst_path " $abs_ladir" fi fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac fi # $pass = dlpreopen if test -z "$libdir"; then @@ -2567,7 +6651,7 @@ EOF if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" + func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no @@ -2579,7 +6663,10 @@ EOF tmp_libs= for deplib in $dependency_libs; do case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then @@ -2589,12 +6676,12 @@ EOF # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if test "X$duplicate_deps" = "Xyes" ; then + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... @@ -2602,15 +6689,14 @@ EOF if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || + test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $absdir" ;; + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; esac fi @@ -2622,7 +6708,7 @@ EOF *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -2631,7 +6717,7 @@ EOF *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -2648,27 +6734,43 @@ EOF link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes ; then + if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac # This is a shared library - # Warn about portability, can't link against -module's on - # some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" + $ECHO "*** Warning: Linking the executable $output against the loadable module" else - $echo "*** Warning: Linking the shared library $output against the loadable module" + $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi - $echo "*** $linklib is not portable!" + $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then @@ -2680,7 +6782,7 @@ EOF *) case "$compile_rpath " in *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + *) func_append compile_rpath " $absdir" ;; esac ;; esac @@ -2689,7 +6791,7 @@ EOF *) case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + *) func_append finalize_rpath " $libdir" ;; esac ;; esac @@ -2698,17 +6800,19 @@ EOF if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw*) - major=`expr $current - $age` + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result versuffix="-$major" ;; esac @@ -2719,43 +6823,29 @@ EOF # Make a new name for the extract_expsyms_cmds to use soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$mode" != relink; then + if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= @@ -2770,17 +6860,21 @@ EOF *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) - # if the lib is a module then we can not link against - # it, someone is ignoring the new warnings I added + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | - $EGREP ": [^:]* bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" fi fi esac @@ -2798,15 +6892,16 @@ EOF fi ;; relink) - if test "$hardcode_direct" = yes; then + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -2822,14 +6917,13 @@ EOF esac if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit $EXIT_FAILURE + func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then @@ -2838,23 +6932,24 @@ EOF else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi - if test "$linkmode" = prog || test "$mode" = relink; then + if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" @@ -2862,15 +6957,15 @@ EOF elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" + add="$inst_prefix_dir$libdir/$linklib" else - add="$libdir/$linklib" + add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. @@ -2879,7 +6974,7 @@ EOF if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" + func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi @@ -2914,21 +7009,21 @@ EOF # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module @@ -2952,126 +7047,113 @@ EOF temp_deplibs= for libdir in $dependency_libs; do case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; + *) func_append xrpath " $temp_xrpath";; esac;; - *) temp_deplibs="$temp_deplibs $libdir";; + *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi - newlib_search_path="$newlib_search_path $absdir" + func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi - tmp_libs="$tmp_libs $deplib" + func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do + path= case $deplib in -L*) path="$deplib" ;; *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= + if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) - # we do not want to link against static libs, - # but need to link against shared + depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done - if test -f "$deplibdir/$depdepl" ; then - depdepl="$deplibdir/$depdepl" - elif test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - else - # Can't find it, oh well... - depdepl= + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac fi - path="" ;; *) - path="-L$path" + path="-L$absdir/$objdir" ;; esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$depdepl $deplibs" ;; - esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries @@ -3086,7 +7168,7 @@ EOF for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; + *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= @@ -3144,10 +7226,10 @@ EOF -L*) case " $tmp_libs " in *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac ;; - *) tmp_libs="$tmp_libs $deplib" ;; + *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" @@ -3163,99 +7245,96 @@ EOF ;; esac if test -n "$i" ; then - tmp_libs="$tmp_libs $i" + func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + case " $deplibs" in *\ -l* | *\ -L*) - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; + func_warning "\`-l' and \`-L' are ignored for archives" ;; esac - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" - objs="$objs$old_deplibs" + func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + func_stripname '' '.la' "$outputname" + name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit $EXIT_FAILURE + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" fi fi - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" oldlibs= if test -z "$rpath"; then @@ -3269,25 +7348,21 @@ EOF build_old_libs=yes fi - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 + shift IFS="$save_ifs" - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts @@ -3295,9 +7370,9 @@ EOF case $vinfo_number in yes) - number_major="$2" - number_minor="$3" - number_revision="$4" + number_major="$1" + number_minor="$2" + number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version @@ -3306,18 +7381,21 @@ EOF # which has an extra 1 added just for fun # case $version_type in + # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) - current=`expr $number_major + $number_minor` + func_arith $number_major + $number_minor + current=$func_arith_result age="$number_minor" revision="$number_revision" ;; - freebsd-aout|freebsd-elf|sunos) + freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) - current=`expr $number_major + $number_minor` + func_arith $number_major + $number_minor + current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no @@ -3325,9 +7403,9 @@ EOF esac ;; no) - current="$2" - revision="$3" - age="$4" + current="$1" + revision="$2" + age="$3" ;; esac @@ -3335,34 +7413,30 @@ EOF case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. @@ -3375,10 +7449,12 @@ EOF darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header - major=.`expr $current - $age` + func_arith $current - $age + major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` + func_arith $current + 1 + minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; @@ -3390,15 +7466,17 @@ EOF freebsd-elf) major=".$current" - versuffix=".$current"; + versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then - major=`expr $current - $age` + func_arith $current - $age else - major=`expr $current - $age + 1` + func_arith $current - $age + 1 fi + major=$func_arith_result + case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; @@ -3408,8 +7486,10 @@ EOF # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done @@ -3418,26 +7498,35 @@ EOF versuffix="$major.$revision" ;; - linux) - major=.`expr $current - $age` + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) - major=.`expr $current - $age` + func_arith $current - $age + major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. - verstring="$verstring:${current}.0" + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" ;; sunos) @@ -3448,14 +7537,13 @@ EOF windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. - major=`expr $current - $age` + func_arith $current - $age + major=$func_arith_result versuffix="-$major" ;; *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE + func_fatal_configuration "unknown library version type \`$version_type'" ;; esac @@ -3489,7 +7577,7 @@ EOF # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi @@ -3497,58 +7585,62 @@ EOF # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi + fi - if test "$mode" != relink; then + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= - tempremovelist=`$echo "$output_objdir/*"` + tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in - *.$objext) + *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then - if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then continue fi fi - removelist="$removelist $p" + func_append removelist " $p" ;; *) ;; esac done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist - fi + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" + func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do - # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` - # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` - # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then @@ -3562,7 +7654,7 @@ EOF for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; + *) func_append dlfiles " $lib" ;; esac done @@ -3572,19 +7664,19 @@ EOF for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; + *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" + func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. @@ -3598,10 +7690,10 @@ EOF *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; - *) + *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" + func_append deplibs " -lc" fi ;; esac @@ -3635,120 +7727,139 @@ EOF # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. - $rm conftest.c + $opt_dry_run || $RM conftest.c cat > conftest.c <<EOF int main() { return 0; } EOF - $rm conftest + $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then ldd_output=`ldd conftest` for i in $deplibs; do - name=`expr $i : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then + case $i in + -l*) + func_stripname -l '' "$i" + name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac - fi + fi if test -n "$i" ; then - libname=`eval \\$echo \"$libname_spec\"` - deplib_matches=`eval \\$echo \"$library_names_spec\"` - set dummy $deplib_matches - deplib_match=$2 + libname=`eval "\\$ECHO \"$libname_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + set dummy $deplib_matches; shift + deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $echo - $echo "*** Warning: dynamic linker does not accept needed library $i." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which I believe you do not have" - $echo "*** because a test_compile did reveal that the linker did not use it for" - $echo "*** its dynamic dependency list that programs get resolved with at runtime." + echo + $ECHO "*** Warning: dynamic linker does not accept needed library $i." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which I believe you do not have" + echo "*** because a test_compile did reveal that the linker did not use it for" + echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi - else - newdeplibs="$newdeplibs $i" - fi + ;; + *) + func_append newdeplibs " $i" + ;; + esac done else # Error occurred in the first compile. Let's try to salvage # the situation: Compile a separate program for each library. for i in $deplibs; do - name=`expr $i : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then - $rm conftest + case $i in + -l*) + func_stripname -l '' "$i" + name=$func_stripname_result + $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" i="" ;; esac fi if test -n "$i" ; then - libname=`eval \\$echo \"$libname_spec\"` - deplib_matches=`eval \\$echo \"$library_names_spec\"` - set dummy $deplib_matches - deplib_match=$2 + libname=`eval "\\$ECHO \"$libname_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + set dummy $deplib_matches; shift + deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" + func_append newdeplibs " $i" else droppeddeps=yes - $echo - $echo "*** Warning: dynamic linker does not accept needed library $i." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because a test_compile did reveal that the linker did not use this one" - $echo "*** as a dynamic dependency that programs can get resolved with at runtime." + echo + $ECHO "*** Warning: dynamic linker does not accept needed library $i." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because a test_compile did reveal that the linker did not use this one" + echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes - $echo - $echo "*** Warning! Library $i is needed by this library but I was not able to" - $echo "*** make it link in! You will probably need to install it or some" - $echo "*** library that it depends on before this library will be fully" - $echo "*** functional. Installing it before continuing would be even better." + echo + $ECHO "*** Warning! Library $i is needed by this library but I was not able to" + echo "*** make it link in! You will probably need to install it or some" + echo "*** library that it depends on before this library will be fully" + echo "*** functional. Installing it before continuing would be even better." fi - else - newdeplibs="$newdeplibs $i" - fi + ;; + *) + func_append newdeplibs " $i" + ;; + esac done fi ;; file_magic*) - set dummy $deplibs_check_method - file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + set dummy $deplibs_check_method; shift + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do - name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` + libname=`eval "\\$ECHO \"$libname_spec\""` + if test -n "$file_magic_glob"; then + libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` + else + libnameglob=$libname + fi + test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + if test "$want_nocaseglob" = yes; then + shopt -s nocaseglob + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi for potent_lib in $potential_libs; do # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an @@ -3761,13 +7872,13 @@ EOF potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -3776,50 +7887,52 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" fi fi - else + ;; + *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi + func_append newdeplibs " $a_deplib" + ;; + esac done # Gone through all deplibs. ;; match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do - name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" + func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` + libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi @@ -3828,46 +7941,48 @@ EOF fi if test -n "$a_deplib" ; then droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi - else + ;; + *) # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi + func_append newdeplibs " $a_deplib" + ;; + esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo + case $tmp_deplibs in + *[!\ \ ]*) + echo if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." + echo "*** Warning: inter-library dependencies are not supported in this platform." else - $echo "*** Warning: inter-library dependencies are not known to be supported." + echo "*** Warning: inter-library dependencies are not known to be supported." fi - $echo "*** All declared inter-library dependencies are being dropped." + echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes - fi + ;; + esac ;; esac versuffix=$versuffix_save @@ -3878,24 +7993,24 @@ EOF case $host in *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" @@ -3905,16 +8020,16 @@ EOF build_libtool_libs=no fi else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module @@ -3928,7 +8043,14 @@ EOF # Done checking deplibs! deplibs=$newdeplibs fi - + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list @@ -3939,7 +8061,7 @@ EOF *) case " $deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -3949,15 +8071,14 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" - # All the library-specific variables (install_libdir is set above). library_names= old_library= @@ -3965,15 +8086,22 @@ EOF # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else @@ -3982,18 +8110,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" + func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi done @@ -4001,20 +8129,13 @@ EOF if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - case $archive_cmds in - *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; - *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; - esac - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi @@ -4022,7 +8143,7 @@ EOF fi shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -4031,8 +8152,9 @@ EOF eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names - realname="$2" - shift; shift + shift + realname="$1" + shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" @@ -4047,83 +8169,166 @@ EOF linknames= for link do - linknames="$linknames $link" + func_append linknames " $link" done # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" + func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols + $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do + for cmd1 in $cmds; do IFS="$save_ifs" - eval cmd=\"$cmd\" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= fi fi - + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" + func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. @@ -4136,22 +8341,24 @@ EOF cmds=$module_cmds fi else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && - len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we @@ -4165,77 +8372,171 @@ EOF save_libobjs=$libobjs fi save_output=$output - output_la=`$echo "X$output" | $Xsed -e "$basename"` + func_basename "$output" + output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= - delfiles= last_robj= k=1 - output=$output_objdir/$output_la-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi - last_robj=$output_objdir/$output_la-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$output_la-${k}.$objext - objlist=$obj - len=1 fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - # Set up a command to remove the reloadable object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" - done + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" - $echo "creating a temporary reloadable object file: $output" + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do + exit $lt_exit + } + done IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi libobjs=$output # Restore the value of output. @@ -4243,6 +8544,7 @@ EOF if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. @@ -4255,28 +8557,45 @@ EOF cmds=$module_cmds fi else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds fi fi + fi - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~\$rm $delfiles\" + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) fi exit $lt_exit @@ -4285,13 +8604,12 @@ EOF IFS="$save_ifs" # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then - $show "${rm}r $gentop" - $run ${rm}r "$gentop" + func_show_eval '${RM}r "$gentop"' fi fi @@ -4301,8 +8619,7 @@ EOF # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done @@ -4315,39 +8632,35 @@ EOF ;; obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + case " $deplibs" in *\ -l* | *\ -L*) - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; + func_warning "\`-l' and \`-L' are ignored for objects" ;; esac - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" case $output in *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result ;; *) libobj= @@ -4356,7 +8669,7 @@ EOF esac # Delete the old objects. - $run $rm $obj $libobj + $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create @@ -4372,35 +8685,29 @@ EOF if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop + func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS @@ -4408,14 +8715,13 @@ EOF if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop + func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi @@ -4423,20 +8729,11 @@ EOF # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop + func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS @@ -4444,39 +8741,45 @@ EOF prog) case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; esac @@ -4489,7 +8792,7 @@ EOF *) case " $compile_deplibs " in *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; + func_append new_libs " -L$path/$objdir" ;; esac ;; esac @@ -4499,17 +8802,17 @@ EOF -L*) case " $new_libs " in *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac ;; - *) new_libs="$new_libs $deplib" ;; + *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. @@ -4517,7 +8820,7 @@ EOF # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; + *) func_append finalize_rpath " $libdir" ;; esac done fi @@ -4536,30 +8839,32 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; esac ;; esac @@ -4585,18 +8890,18 @@ EOF *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" + func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + *) func_append finalize_perm_rpath " $libdir" ;; esac fi done @@ -4610,284 +8915,57 @@ EOF if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* ) - $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - else - $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* ) - $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 </dev/null >/dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -" - - case $host in - *cygwin* | *mingw* ) - $echo >> "$output_objdir/$dlsyms" "\ -/* DATA imports from DLLs on WIN32 can't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs */ -struct { -" - ;; - * ) - $echo >> "$output_objdir/$dlsyms" "\ -const struct { -" - ;; - esac - - - $echo >> "$output_objdir/$dlsyms" "\ - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" - - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - # Transform the symbol file into the correct name. - case $host in - *cygwin* | *mingw* ) - if test -f "$output_objdir/${outputname}.def" ; then - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - else - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - fi - ;; - * ) - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - ;; - esac - ;; - *-*-freebsd*) - # FreeBSD doesn't need this... - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' fi - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - exit_status=$? + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi @@ -4902,7 +8980,7 @@ static const void *lt_preloaded_setup() { # We should set the runpath_var. rpath= for dir in $perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -4910,7 +8988,7 @@ static const void *lt_preloaded_setup() { # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" + func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi @@ -4920,12 +8998,18 @@ static const void *lt_preloaded_setup() { # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. - $run $rm $output + $opt_dry_run || $RM $output # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + exit $EXIT_SUCCESS fi @@ -4934,13 +9018,13 @@ static const void *lt_preloaded_setup() { link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= @@ -4952,608 +9036,98 @@ static const void *lt_preloaded_setup() { fi # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' - $show "$link_command" - $run eval "$link_command" || exit $? + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi # Now create the wrapper script. - $show "creating $output" + func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi - # Only actually do things if our run command is non-null. - if test -z "$run"; then + # Only actually do things if not in dry run mode. + $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) - output_name=`basename $output` - output_path=`dirname $output` - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <<EOF - -/* $cwrappersource - temporary wrapper executable for $objdir/$outputname - Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP - - The $output program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. - - Currently, it simply execs the wrapper *script* "/bin/sh $output", - but could eventually absorb all of the scripts functionality and - exec $objdir/$outputname directly. -*/ -EOF - cat >> $cwrappersource<<"EOF" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <malloc.h> -#include <stdarg.h> -#include <assert.h> -#include <string.h> -#include <ctype.h> -#include <sys/stat.h> - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -/* -DDEBUG is fairly common in CFLAGS. */ -#undef DEBUG -#if defined DEBUGWRAPPER -# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) -#else -# define DEBUG(format, ...) -#endif - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -const char * base_name (const char *name); -char * find_executable(const char *wrapper); -int check_executable(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - DEBUG("(main) argv[0] : %s\n",argv[0]); - DEBUG("(main) program_name : %s\n",program_name); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <<EOF - newargz[0] = (char *) xstrdup("$SHELL"); -EOF - - cat >> $cwrappersource <<"EOF" - newargz[1] = find_executable(argv[0]); - if (newargz[1] == NULL) - lt_fatal("Couldn't find %s", argv[0]); - DEBUG("(main) found exe at : %s\n",newargz[1]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; - - for (i=0; i<argc+1; i++) - { - DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); - ; - } - -EOF - - case $host_os in - mingw*) - cat >> $cwrappersource <<EOF - execv("$SHELL",(char const **)newargz); -EOF - ;; - *) - cat >> $cwrappersource <<EOF - execv("$SHELL",newargz); -EOF - ;; - esac - - cat >> $cwrappersource <<"EOF" - return 127; -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char)name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable(const char * path) -{ - struct stat st; - - DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) && - ( - /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ -#if defined (S_IXOTH) - ((st.st_mode & S_IXOTH) == S_IXOTH) || -#endif -#if defined (S_IXGRP) - ((st.st_mode & S_IXGRP) == S_IXGRP) || -#endif - ((st.st_mode & S_IXUSR) == S_IXUSR)) - ) - return 1; - else - return 0; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise */ -char * -find_executable (const char* wrapper) -{ - int has_slash = 0; - const char* p; - const char* p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char* concat_name; - - DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char* path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char* q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR(*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen(tmp); - concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen(tmp); - concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - return NULL; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit $EXIT_FAILURE - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - *) - $echo >> $output "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" + func_emit_wrapper no > $output + chmod +x $output ;; esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \$*\" - exit $EXIT_FAILURE - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit $EXIT_FAILURE - fi -fi\ -" - chmod +x $output - fi + } exit $EXIT_SUCCESS ;; esac @@ -5562,7 +9136,7 @@ fi\ for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" + oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else @@ -5571,22 +9145,35 @@ fi\ build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + func_append generated " $gentop" func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" + func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds + cmds=$old_archive_from_new_cmds else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a @@ -5595,32 +9182,22 @@ fi\ # not supported by libtool). if (for obj in $oldobjs do - $echo "X$obj" | $Xsed -e 's%^.*/%%' + func_basename "$obj" + $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else - $echo "copying selected object files to avoid basename conflicts..." - - if test -z "$gentop"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$gentop"; then - exit $exit_status - fi - fi - + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do - objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + func_basename "$obj" + objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) @@ -5628,58 +9205,74 @@ fi\ # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase - counter=`expr $counter + 1` + func_arith $counter + 1 + counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done - $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - $run ln "$obj" "$gentop/$newobj" || - $run cp "$obj" "$gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" ;; - *) oldobjs="$oldobjs $obj" ;; + *) func_append oldobjs " $obj" ;; esac done fi - + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." + func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs - + oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 for obj in $save_oldobjs do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; then + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB + RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= + len=$len0 fi done RANLIB=$save_RANLIB @@ -5691,49 +9284,39 @@ fi\ fi fi fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - eval cmd=\"$cmd\" - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + func_execute_cmds "$cmds" 'exit $?' done - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi + test -n "$generated" && \ + func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" + func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi - # Only create the output if not a dry run. - if test -z "$run"; then + $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then @@ -5745,38 +9328,60 @@ fi\ for deplib in $dependency_libs; do case $deplib in *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= + for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac done dlprefiles="$newdlprefiles" else @@ -5786,7 +9391,7 @@ fi\ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlfiles="$newdlfiles $abs" + func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= @@ -5795,19 +9400,37 @@ fi\ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac - newdlprefiles="$newdlprefiles $abs" + func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi - $rm $output + $RM $output # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; esac - $echo > $output "\ + $ECHO > $output "\ # $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. @@ -5821,9 +9444,15 @@ library_names='$library_names' # The name of the static archive. old_library='$old_library' +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + # Libraries that this one depends upon. dependency_libs='$dependency_libs' +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + # Version information for $libname. current=$current age=$age @@ -5842,748 +9471,29 @@ dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ + $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done - fi + } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac - ;; - -g | -m | -o) prev=$arg ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` - else - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit $EXIT_FAILURE - fi - fi - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; - esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit $EXIT_FAILURE - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir=`func_mktempdir` - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; - esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - if test -n "$stripme" && test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit $EXIT_SUCCESS - - $echo "X----------------------------------------------------------------------" | $Xsed - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" - done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "X----------------------------------------------------------------------" | $Xsed - exit $EXIT_SUCCESS - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - if test ! -f "$dir/$dlname"; then - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit $EXIT_FAILURE - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done +} - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit $EXIT_SUCCESS - fi - ;; - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" files= rmforce= exit_status=0 @@ -6595,44 +9505,41 @@ relink_command=\"$relink_command\"" for arg do case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; esac done - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" rmdirs= - origobjdir="$objdir" for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. - objdir="$origobjdir" + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" else - objdir="$dir/$origobjdir" + odir="$dir/$objdir" fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then : elif test -d "$file"; then exit_status=1 @@ -6646,55 +9553,32 @@ relink_command=\"$relink_command\"" case $name in *.la) # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name + if func_lalib_p "$file"; then + func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" + func_append rmfiles " $odir/$n" done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$mode" in + case "$opt_mode" in clean) - case " $library_names " in - # " " in the beginning catches empty $dlname + case " $library_names " in *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. - cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; @@ -6704,288 +9588,95 @@ relink_command=\"$relink_command\"" *.lo) # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + if func_lalib_p "$file"; then # Read the .lo file - . $dir/$name + func_source $dir/$name # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$mode" = clean ; then + if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe - rmfiles="$rmfiles $file" + func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" + func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" + func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 + func_show_eval "$RM $rmfiles" 'exit_status=1' done - objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 + func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status - ;; +} - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - ;; - esac +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - fi -fi # test -z "$show_help" +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then - eval exec $exec_cmd + eval exec "$exec_cmd" exit $EXIT_FAILURE fi -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to <bug-libtool@gnu.org>." - exit $EXIT_SUCCESS - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. +exit $exit_status -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting @@ -6999,14 +9690,17 @@ exit $? # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared -disable_libs=shared +build_libtool_libs=no +build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static -disable_libs=static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: +# vi:sw=2 + diff --git a/contrib/bind9/make/rules.in b/contrib/bind9/make/rules.in index cd4cf4f..ae02766 100644 --- a/contrib/bind9/make/rules.in +++ b/contrib/bind9/make/rules.in @@ -193,24 +193,24 @@ MKDEP = ${SHELL} ${top_builddir}/make/mkdep ### See bin/check/Makefile.in for a complete example of the use of LIBS0. ### FINALBUILDCMD = if [ X"${MKSYMTBL_PROGRAM}" = X -o X"$${MAKE_SYMTABLE:-${ALWAYS_MAKE_SYMTABLE}}" = X ] ; then \ - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} \ + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} \ -o $@ $${BASEOBJS} $${LIBS0} ${LIBS}; \ else \ rm -f $@tmp0; \ - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} \ + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} \ -o $@tmp0 $${BASEOBJS} $${LIBS0} ${LIBS} || exit 1; \ rm -f $@-symtbl.c $@-symtbl.@O@; \ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \ -o $@-symtbl.c $@tmp0 || exit 1; \ $(MAKE) $@-symtbl.@O@ || exit 1; \ rm -f $@tmp1; \ - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} \ + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} \ -o $@tmp1 $${BASEOBJS} $@-symtbl.@O@ $${LIBS0} ${NOSYMLIBS} || exit 1; \ rm -f $@-symtbl.c $@-symtbl.@O@; \ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \ -o $@-symtbl.c $@tmp1 || exit 1; \ $(MAKE) $@-symtbl.@O@ || exit 1; \ - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} \ + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} \ -o $@tmp2 $${BASEOBJS} $@-symtbl.@O@ $${LIBS0} ${NOSYMLIBS}; \ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \ -o $@-symtbl2.c $@tmp2; \ @@ -223,7 +223,7 @@ FINALBUILDCMD = if [ X"${MKSYMTBL_PROGRAM}" = X -o X"$${MAKE_SYMTABLE:-${ALWAYS_ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \ -o $@-symtbl.c $@tmp2 || exit 1; \ $(MAKE) $@-symtbl.@O@ || exit 1; \ - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \ + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} \ ${LDFLAGS} -o $@tmp2 $${BASEOBJS} $@-symtbl.@O@ \ $${LIBS0} ${NOSYMLIBS}; \ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \ diff --git a/contrib/bind9/version b/contrib/bind9/version index da686fa..7a518ed 100644 --- a/contrib/bind9/version +++ b/contrib/bind9/version @@ -3,8 +3,10 @@ # This file must follow /bin/sh rules. It is imported directly via # configure. # +PRODUCT=BIND +DESCRIPTION= MAJORVER=9 MINORVER=8 -PATCHVER=4 +PATCHVER=5 RELEASETYPE=-P RELEASEVER=2 diff --git a/lib/bind/config.h b/lib/bind/config.h index bf6f8ce..d743db2 100644 --- a/lib/bind/config.h +++ b/lib/bind/config.h @@ -283,8 +283,14 @@ int sigwait(const unsigned int *set, int *sig); /* Define to 1 if you have the <net/if6.h> header file. */ /* #undef HAVE_NET_IF6_H */ +/* Define if your OpenSSL version supports ECDSA. */ +#define HAVE_OPENSSL_ECDSA 1 + /* Define if your OpenSSL version supports GOST. */ /* #undef HAVE_OPENSSL_GOST */ + +/* Define to 1 if you have the <regex.h> header file. */ +#define HAVE_REGEX_H 1 /* Define to 1 if you have the `setegid' function. */ #define HAVE_SETEGID 1 diff --git a/lib/bind/dns/code.h b/lib/bind/dns/code.h index 99944ad..b8a5ae3 100644 --- a/lib/bind/dns/code.h +++ b/lib/bind/dns/code.h @@ -87,8 +87,15 @@ #include "rdata/generic/hip_55.c" #include "rdata/generic/spf_99.c" #include "rdata/generic/unspec_103.c" +#include "rdata/generic/nid_104.c" +#include "rdata/generic/l32_105.c" +#include "rdata/generic/l64_106.c" +#include "rdata/generic/lp_107.c" +#include "rdata/generic/eui48_108.c" +#include "rdata/generic/eui64_109.c" #include "rdata/generic/tkey_249.c" #include "rdata/any_255/tsig_250.c" +#include "rdata/generic/uri_256.c" #include "rdata/generic/dlv_32769.c" #include "rdata/generic/keydata_65533.c" @@ -197,12 +204,19 @@ case 55: result = fromtext_hip(rdclass, type, lexer, origin, options, target, callbacks); break; \ case 99: result = fromtext_spf(rdclass, type, lexer, origin, options, target, callbacks); break; \ case 103: result = fromtext_unspec(rdclass, type, lexer, origin, options, target, callbacks); break; \ + case 104: result = fromtext_nid(rdclass, type, lexer, origin, options, target, callbacks); break; \ + case 105: result = fromtext_l32(rdclass, type, lexer, origin, options, target, callbacks); break; \ + case 106: result = fromtext_l64(rdclass, type, lexer, origin, options, target, callbacks); break; \ + case 107: result = fromtext_lp(rdclass, type, lexer, origin, options, target, callbacks); break; \ + case 108: result = fromtext_eui48(rdclass, type, lexer, origin, options, target, callbacks); break; \ + case 109: result = fromtext_eui64(rdclass, type, lexer, origin, options, target, callbacks); break; \ case 249: result = fromtext_tkey(rdclass, type, lexer, origin, options, target, callbacks); break; \ case 250: switch (rdclass) { \ case 255: result = fromtext_any_tsig(rdclass, type, lexer, origin, options, target, callbacks); break; \ default: result = DNS_R_UNKNOWN; break; \ } \ break; \ + case 256: result = fromtext_uri(rdclass, type, lexer, origin, options, target, callbacks); break; \ case 32769: result = fromtext_dlv(rdclass, type, lexer, origin, options, target, callbacks); break; \ case 65533: result = fromtext_keydata(rdclass, type, lexer, origin, options, target, callbacks); break; \ default: result = DNS_R_UNKNOWN; break; \ @@ -311,12 +325,19 @@ case 55: result = totext_hip(rdata, tctx, target); break; \ case 99: result = totext_spf(rdata, tctx, target); break; \ case 103: result = totext_unspec(rdata, tctx, target); break; \ + case 104: result = totext_nid(rdata, tctx, target); break; \ + case 105: result = totext_l32(rdata, tctx, target); break; \ + case 106: result = totext_l64(rdata, tctx, target); break; \ + case 107: result = totext_lp(rdata, tctx, target); break; \ + case 108: result = totext_eui48(rdata, tctx, target); break; \ + case 109: result = totext_eui64(rdata, tctx, target); break; \ case 249: result = totext_tkey(rdata, tctx, target); break; \ case 250: switch (rdata->rdclass) { \ case 255: result = totext_any_tsig(rdata, tctx, target); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = totext_uri(rdata, tctx, target); break; \ case 32769: result = totext_dlv(rdata, tctx, target); break; \ case 65533: result = totext_keydata(rdata, tctx, target); break; \ default: use_default = ISC_TRUE; break; \ @@ -425,12 +446,19 @@ case 55: result = fromwire_hip(rdclass, type, source, dctx, options, target); break; \ case 99: result = fromwire_spf(rdclass, type, source, dctx, options, target); break; \ case 103: result = fromwire_unspec(rdclass, type, source, dctx, options, target); break; \ + case 104: result = fromwire_nid(rdclass, type, source, dctx, options, target); break; \ + case 105: result = fromwire_l32(rdclass, type, source, dctx, options, target); break; \ + case 106: result = fromwire_l64(rdclass, type, source, dctx, options, target); break; \ + case 107: result = fromwire_lp(rdclass, type, source, dctx, options, target); break; \ + case 108: result = fromwire_eui48(rdclass, type, source, dctx, options, target); break; \ + case 109: result = fromwire_eui64(rdclass, type, source, dctx, options, target); break; \ case 249: result = fromwire_tkey(rdclass, type, source, dctx, options, target); break; \ case 250: switch (rdclass) { \ case 255: result = fromwire_any_tsig(rdclass, type, source, dctx, options, target); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = fromwire_uri(rdclass, type, source, dctx, options, target); break; \ case 32769: result = fromwire_dlv(rdclass, type, source, dctx, options, target); break; \ case 65533: result = fromwire_keydata(rdclass, type, source, dctx, options, target); break; \ default: use_default = ISC_TRUE; break; \ @@ -539,12 +567,19 @@ case 55: result = towire_hip(rdata, cctx, target); break; \ case 99: result = towire_spf(rdata, cctx, target); break; \ case 103: result = towire_unspec(rdata, cctx, target); break; \ + case 104: result = towire_nid(rdata, cctx, target); break; \ + case 105: result = towire_l32(rdata, cctx, target); break; \ + case 106: result = towire_l64(rdata, cctx, target); break; \ + case 107: result = towire_lp(rdata, cctx, target); break; \ + case 108: result = towire_eui48(rdata, cctx, target); break; \ + case 109: result = towire_eui64(rdata, cctx, target); break; \ case 249: result = towire_tkey(rdata, cctx, target); break; \ case 250: switch (rdata->rdclass) { \ case 255: result = towire_any_tsig(rdata, cctx, target); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = towire_uri(rdata, cctx, target); break; \ case 32769: result = towire_dlv(rdata, cctx, target); break; \ case 65533: result = towire_keydata(rdata, cctx, target); break; \ default: use_default = ISC_TRUE; break; \ @@ -653,12 +688,19 @@ case 55: result = compare_hip(rdata1, rdata2); break; \ case 99: result = compare_spf(rdata1, rdata2); break; \ case 103: result = compare_unspec(rdata1, rdata2); break; \ + case 104: result = compare_nid(rdata1, rdata2); break; \ + case 105: result = compare_l32(rdata1, rdata2); break; \ + case 106: result = compare_l64(rdata1, rdata2); break; \ + case 107: result = compare_lp(rdata1, rdata2); break; \ + case 108: result = compare_eui48(rdata1, rdata2); break; \ + case 109: result = compare_eui64(rdata1, rdata2); break; \ case 249: result = compare_tkey(rdata1, rdata2); break; \ case 250: switch (rdata1->rdclass) { \ case 255: result = compare_any_tsig(rdata1, rdata2); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = compare_uri(rdata1, rdata2); break; \ case 32769: result = compare_dlv(rdata1, rdata2); break; \ case 65533: result = compare_keydata(rdata1, rdata2); break; \ default: use_default = ISC_TRUE; break; \ @@ -767,12 +809,19 @@ case 55: result = casecompare_hip(rdata1, rdata2); break; \ case 99: result = casecompare_spf(rdata1, rdata2); break; \ case 103: result = casecompare_unspec(rdata1, rdata2); break; \ + case 104: result = casecompare_nid(rdata1, rdata2); break; \ + case 105: result = casecompare_l32(rdata1, rdata2); break; \ + case 106: result = casecompare_l64(rdata1, rdata2); break; \ + case 107: result = casecompare_lp(rdata1, rdata2); break; \ + case 108: result = casecompare_eui48(rdata1, rdata2); break; \ + case 109: result = casecompare_eui64(rdata1, rdata2); break; \ case 249: result = casecompare_tkey(rdata1, rdata2); break; \ case 250: switch (rdata1->rdclass) { \ case 255: result = casecompare_any_tsig(rdata1, rdata2); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = casecompare_uri(rdata1, rdata2); break; \ case 32769: result = casecompare_dlv(rdata1, rdata2); break; \ case 65533: result = casecompare_keydata(rdata1, rdata2); break; \ default: use_default = ISC_TRUE; break; \ @@ -881,12 +930,19 @@ case 55: result = fromstruct_hip(rdclass, type, source, target); break; \ case 99: result = fromstruct_spf(rdclass, type, source, target); break; \ case 103: result = fromstruct_unspec(rdclass, type, source, target); break; \ + case 104: result = fromstruct_nid(rdclass, type, source, target); break; \ + case 105: result = fromstruct_l32(rdclass, type, source, target); break; \ + case 106: result = fromstruct_l64(rdclass, type, source, target); break; \ + case 107: result = fromstruct_lp(rdclass, type, source, target); break; \ + case 108: result = fromstruct_eui48(rdclass, type, source, target); break; \ + case 109: result = fromstruct_eui64(rdclass, type, source, target); break; \ case 249: result = fromstruct_tkey(rdclass, type, source, target); break; \ case 250: switch (rdclass) { \ case 255: result = fromstruct_any_tsig(rdclass, type, source, target); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = fromstruct_uri(rdclass, type, source, target); break; \ case 32769: result = fromstruct_dlv(rdclass, type, source, target); break; \ case 65533: result = fromstruct_keydata(rdclass, type, source, target); break; \ default: use_default = ISC_TRUE; break; \ @@ -995,12 +1051,19 @@ case 55: result = tostruct_hip(rdata, target, mctx); break; \ case 99: result = tostruct_spf(rdata, target, mctx); break; \ case 103: result = tostruct_unspec(rdata, target, mctx); break; \ + case 104: result = tostruct_nid(rdata, target, mctx); break; \ + case 105: result = tostruct_l32(rdata, target, mctx); break; \ + case 106: result = tostruct_l64(rdata, target, mctx); break; \ + case 107: result = tostruct_lp(rdata, target, mctx); break; \ + case 108: result = tostruct_eui48(rdata, target, mctx); break; \ + case 109: result = tostruct_eui64(rdata, target, mctx); break; \ case 249: result = tostruct_tkey(rdata, target, mctx); break; \ case 250: switch (rdata->rdclass) { \ case 255: result = tostruct_any_tsig(rdata, target, mctx); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = tostruct_uri(rdata, target, mctx); break; \ case 32769: result = tostruct_dlv(rdata, target, mctx); break; \ case 65533: result = tostruct_keydata(rdata, target, mctx); break; \ default: use_default = ISC_TRUE; break; \ @@ -1109,12 +1172,19 @@ case 55: freestruct_hip(source); break; \ case 99: freestruct_spf(source); break; \ case 103: freestruct_unspec(source); break; \ + case 104: freestruct_nid(source); break; \ + case 105: freestruct_l32(source); break; \ + case 106: freestruct_l64(source); break; \ + case 107: freestruct_lp(source); break; \ + case 108: freestruct_eui48(source); break; \ + case 109: freestruct_eui64(source); break; \ case 249: freestruct_tkey(source); break; \ case 250: switch (common->rdclass) { \ case 255: freestruct_any_tsig(source); break; \ default: break; \ } \ break; \ + case 256: freestruct_uri(source); break; \ case 32769: freestruct_dlv(source); break; \ case 65533: freestruct_keydata(source); break; \ default: break; \ @@ -1223,12 +1293,19 @@ case 55: result = additionaldata_hip(rdata, add, arg); break; \ case 99: result = additionaldata_spf(rdata, add, arg); break; \ case 103: result = additionaldata_unspec(rdata, add, arg); break; \ + case 104: result = additionaldata_nid(rdata, add, arg); break; \ + case 105: result = additionaldata_l32(rdata, add, arg); break; \ + case 106: result = additionaldata_l64(rdata, add, arg); break; \ + case 107: result = additionaldata_lp(rdata, add, arg); break; \ + case 108: result = additionaldata_eui48(rdata, add, arg); break; \ + case 109: result = additionaldata_eui64(rdata, add, arg); break; \ case 249: result = additionaldata_tkey(rdata, add, arg); break; \ case 250: switch (rdata->rdclass) { \ case 255: result = additionaldata_any_tsig(rdata, add, arg); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = additionaldata_uri(rdata, add, arg); break; \ case 32769: result = additionaldata_dlv(rdata, add, arg); break; \ case 65533: result = additionaldata_keydata(rdata, add, arg); break; \ default: use_default = ISC_TRUE; break; \ @@ -1337,12 +1414,19 @@ case 55: result = digest_hip(rdata, digest, arg); break; \ case 99: result = digest_spf(rdata, digest, arg); break; \ case 103: result = digest_unspec(rdata, digest, arg); break; \ + case 104: result = digest_nid(rdata, digest, arg); break; \ + case 105: result = digest_l32(rdata, digest, arg); break; \ + case 106: result = digest_l64(rdata, digest, arg); break; \ + case 107: result = digest_lp(rdata, digest, arg); break; \ + case 108: result = digest_eui48(rdata, digest, arg); break; \ + case 109: result = digest_eui64(rdata, digest, arg); break; \ case 249: result = digest_tkey(rdata, digest, arg); break; \ case 250: switch (rdata->rdclass) { \ case 255: result = digest_any_tsig(rdata, digest, arg); break; \ default: use_default = ISC_TRUE; break; \ } \ break; \ + case 256: result = digest_uri(rdata, digest, arg); break; \ case 32769: result = digest_dlv(rdata, digest, arg); break; \ case 65533: result = digest_keydata(rdata, digest, arg); break; \ default: use_default = ISC_TRUE; break; \ @@ -1451,12 +1535,19 @@ case 55: result = checkowner_hip(name, rdclass, type, wildcard); break; \ case 99: result = checkowner_spf(name, rdclass, type, wildcard); break; \ case 103: result = checkowner_unspec(name, rdclass, type, wildcard); break; \ + case 104: result = checkowner_nid(name, rdclass, type, wildcard); break; \ + case 105: result = checkowner_l32(name, rdclass, type, wildcard); break; \ + case 106: result = checkowner_l64(name, rdclass, type, wildcard); break; \ + case 107: result = checkowner_lp(name, rdclass, type, wildcard); break; \ + case 108: result = checkowner_eui48(name, rdclass, type, wildcard); break; \ + case 109: result = checkowner_eui64(name, rdclass, type, wildcard); break; \ case 249: result = checkowner_tkey(name, rdclass, type, wildcard); break; \ case 250: switch (rdclass) { \ case 255: result = checkowner_any_tsig(name, rdclass, type, wildcard); break; \ default: result = ISC_TRUE; break; \ } \ break; \ + case 256: result = checkowner_uri(name, rdclass, type, wildcard); break; \ case 32769: result = checkowner_dlv(name, rdclass, type, wildcard); break; \ case 65533: result = checkowner_keydata(name, rdclass, type, wildcard); break; \ default: result = ISC_TRUE; break; \ @@ -1565,12 +1656,19 @@ case 55: result = checknames_hip(rdata, owner, bad); break; \ case 99: result = checknames_spf(rdata, owner, bad); break; \ case 103: result = checknames_unspec(rdata, owner, bad); break; \ + case 104: result = checknames_nid(rdata, owner, bad); break; \ + case 105: result = checknames_l32(rdata, owner, bad); break; \ + case 106: result = checknames_l64(rdata, owner, bad); break; \ + case 107: result = checknames_lp(rdata, owner, bad); break; \ + case 108: result = checknames_eui48(rdata, owner, bad); break; \ + case 109: result = checknames_eui64(rdata, owner, bad); break; \ case 249: result = checknames_tkey(rdata, owner, bad); break; \ case 250: switch (rdata->rdclass) { \ case 255: result = checknames_any_tsig(rdata, owner, bad); break; \ default: result = ISC_TRUE; break; \ } \ break; \ + case 256: result = checknames_uri(rdata, owner, bad); break; \ case 32769: result = checknames_dlv(rdata, owner, bad); break; \ case 65533: result = checknames_keydata(rdata, owner, bad); break; \ default: result = ISC_TRUE; break; \ @@ -1659,6 +1757,7 @@ break; \ case 140: \ RDATATYPE_COMPARE("nsap-ptr", 23, _typename, _length, _typep); \ + RDATATYPE_COMPARE("l64", 106, _typename, _length, _typep); \ break; \ case 122: \ RDATATYPE_COMPARE("sig", 24, _typename, _length, _typep); \ @@ -1706,6 +1805,7 @@ break; \ case 48: \ RDATATYPE_COMPARE("apl", 42, _typename, _length, _typep); \ + RDATATYPE_COMPARE("eui48", 108, _typename, _length, _typep); \ break; \ case 210: \ RDATATYPE_COMPARE("ds", 43, _typename, _length, _typep); \ @@ -1747,6 +1847,18 @@ case 145: \ RDATATYPE_COMPARE("unspec", 103, _typename, _length, _typep); \ break; \ + case 36: \ + RDATATYPE_COMPARE("nid", 104, _typename, _length, _typep); \ + break; \ + case 174: \ + RDATATYPE_COMPARE("l32", 105, _typename, _length, _typep); \ + break; \ + case 32: \ + RDATATYPE_COMPARE("lp", 107, _typename, _length, _typep); \ + break; \ + case 136: \ + RDATATYPE_COMPARE("eui64", 109, _typename, _length, _typep); \ + break; \ case 184: \ RDATATYPE_COMPARE("tkey", 249, _typename, _length, _typep); \ break; \ @@ -1769,6 +1881,9 @@ case 68: \ RDATATYPE_COMPARE("any", 255, _typename, _length, _typep); \ break; \ + case 56: \ + RDATATYPE_COMPARE("uri", 256, _typename, _length, _typep); \ + break; \ } #define RDATATYPE_ATTRIBUTE_SW \ switch (type) { \ @@ -1830,6 +1945,12 @@ case 101: return (DNS_RDATATYPEATTR_RESERVED); \ case 102: return (DNS_RDATATYPEATTR_RESERVED); \ case 103: return (RRTYPE_UNSPEC_ATTRIBUTES); \ + case 104: return (RRTYPE_NID_ATTRIBUTES); \ + case 105: return (RRTYPE_L32_ATTRIBUTES); \ + case 106: return (RRTYPE_L64_ATTRIBUTES); \ + case 107: return (RRTYPE_LP_ATTRIBUTES); \ + case 108: return (RRTYPE_EUI48_ATTRIBUTES); \ + case 109: return (RRTYPE_EUI64_ATTRIBUTES); \ case 249: return (RRTYPE_TKEY_ATTRIBUTES); \ case 250: return (RRTYPE_TSIG_ATTRIBUTES); \ case 251: return (DNS_RDATATYPEATTR_META | DNS_RDATATYPEATTR_QUESTIONONLY); \ @@ -1837,6 +1958,7 @@ case 253: return (DNS_RDATATYPEATTR_META | DNS_RDATATYPEATTR_QUESTIONONLY); \ case 254: return (DNS_RDATATYPEATTR_META | DNS_RDATATYPEATTR_QUESTIONONLY); \ case 255: return (DNS_RDATATYPEATTR_META | DNS_RDATATYPEATTR_QUESTIONONLY); \ + case 256: return (RRTYPE_URI_ATTRIBUTES); \ case 32769: return (RRTYPE_DLV_ATTRIBUTES); \ case 65533: return (RRTYPE_KEYDATA_ATTRIBUTES); \ } @@ -1900,6 +2022,12 @@ case 101: return (str_totext("UID", target)); \ case 102: return (str_totext("GID", target)); \ case 103: return (str_totext("UNSPEC", target)); \ + case 104: return (str_totext("NID", target)); \ + case 105: return (str_totext("L32", target)); \ + case 106: return (str_totext("L64", target)); \ + case 107: return (str_totext("LP", target)); \ + case 108: return (str_totext("EUI48", target)); \ + case 109: return (str_totext("EUI64", target)); \ case 249: return (str_totext("TKEY", target)); \ case 250: return (str_totext("TSIG", target)); \ case 251: return (str_totext("IXFR", target)); \ @@ -1907,6 +2035,7 @@ case 253: return (str_totext("MAILB", target)); \ case 254: return (str_totext("MAILA", target)); \ case 255: return (str_totext("ANY", target)); \ + case 256: return (str_totext("URI", target)); \ case 32769: return (str_totext("DLV", target)); \ case 65533: return (str_totext("KEYDATA", target)); \ } diff --git a/lib/bind/dns/dns/enumtype.h b/lib/bind/dns/dns/enumtype.h index 5ab36d1..aa53689 100644 --- a/lib/bind/dns/dns/enumtype.h +++ b/lib/bind/dns/dns/enumtype.h @@ -82,8 +82,15 @@ enum { dns_rdatatype_hip = 55, dns_rdatatype_spf = 99, dns_rdatatype_unspec = 103, + dns_rdatatype_nid = 104, + dns_rdatatype_l32 = 105, + dns_rdatatype_l64 = 106, + dns_rdatatype_lp = 107, + dns_rdatatype_eui48 = 108, + dns_rdatatype_eui64 = 109, dns_rdatatype_tkey = 249, dns_rdatatype_tsig = 250, + dns_rdatatype_uri = 256, dns_rdatatype_dlv = 32769, dns_rdatatype_keydata = 65533, dns_rdatatype_ixfr = 251, @@ -145,8 +152,15 @@ enum { #define dns_rdatatype_hip ((dns_rdatatype_t)dns_rdatatype_hip) #define dns_rdatatype_spf ((dns_rdatatype_t)dns_rdatatype_spf) #define dns_rdatatype_unspec ((dns_rdatatype_t)dns_rdatatype_unspec) +#define dns_rdatatype_nid ((dns_rdatatype_t)dns_rdatatype_nid) +#define dns_rdatatype_l32 ((dns_rdatatype_t)dns_rdatatype_l32) +#define dns_rdatatype_l64 ((dns_rdatatype_t)dns_rdatatype_l64) +#define dns_rdatatype_lp ((dns_rdatatype_t)dns_rdatatype_lp) +#define dns_rdatatype_eui48 ((dns_rdatatype_t)dns_rdatatype_eui48) +#define dns_rdatatype_eui64 ((dns_rdatatype_t)dns_rdatatype_eui64) #define dns_rdatatype_tkey ((dns_rdatatype_t)dns_rdatatype_tkey) #define dns_rdatatype_tsig ((dns_rdatatype_t)dns_rdatatype_tsig) +#define dns_rdatatype_uri ((dns_rdatatype_t)dns_rdatatype_uri) #define dns_rdatatype_dlv ((dns_rdatatype_t)dns_rdatatype_dlv) #define dns_rdatatype_keydata ((dns_rdatatype_t)dns_rdatatype_keydata) #define dns_rdatatype_ixfr ((dns_rdatatype_t)dns_rdatatype_ixfr) diff --git a/lib/bind/dns/dns/rdatastruct.h b/lib/bind/dns/dns/rdatastruct.h index 10cba31..a05face 100644 --- a/lib/bind/dns/dns/rdatastruct.h +++ b/lib/bind/dns/dns/rdatastruct.h @@ -2004,6 +2004,167 @@ typedef struct dns_rdata_unspec_t { #endif /* GENERIC_UNSPEC_103_H */ /* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_NID_104_H +#define GENERIC_NID_104_H 1 + +typedef struct dns_rdata_nid { + dns_rdatacommon_t common; + isc_uint16_t pref; + unsigned char nid[8]; +} dns_rdata_nid_t; + +#endif /* GENERIC_NID_104_H */ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_L32_105_H +#define GENERIC_L32_105_H 1 + +typedef struct dns_rdata_l32 { + dns_rdatacommon_t common; + isc_uint16_t pref; + struct in_addr l32; +} dns_rdata_l32_t; + +#endif /* GENERIC_L32_105_H */ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_L64_106_H +#define GENERIC_L64_106_H 1 + +typedef struct dns_rdata_l64 { + dns_rdatacommon_t common; + isc_uint16_t pref; + unsigned char l64[8]; +} dns_rdata_l64_t; + +#endif /* GENERIC_L64_106_H */ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_LP_107_H +#define GENERIC_LP_107_H 1 + +typedef struct dns_rdata_lp { + dns_rdatacommon_t common; + isc_mem_t *mctx; + isc_uint16_t pref; + dns_name_t lp; +} dns_rdata_lp_t; + +#endif /* GENERIC_LP_107_H */ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_EUI48_108_H +#define GENERIC_EUI48_108_H 1 + +typedef struct dns_rdata_eui48 { + dns_rdatacommon_t common; + unsigned char eui48[6]; +} dns_rdata_eui48_t; + +#endif /* GENERIC_EUI48_10k_H */ +/* + * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* */ +#ifndef GENERIC_EUI64_109_H +#define GENERIC_EUI64_109_H 1 + +typedef struct dns_rdata_eui64 { + dns_rdatacommon_t common; + unsigned char eui64[8]; +} dns_rdata_eui64_t; + +#endif /* GENERIC_EUI64_10k_H */ +/* * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * @@ -2083,6 +2244,37 @@ typedef struct dns_rdata_any_tsig { #endif /* ANY_255_TSIG_250_H */ /* + * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef GENERIC_URI_256_H +#define GENERIC_URI_256_H 1 + +/* $Id: uri_256.h,v 1.2 2011/03/03 14:10:27 fdupont Exp $ */ + +typedef struct dns_rdata_uri { + dns_rdatacommon_t common; + isc_mem_t * mctx; + isc_uint16_t priority; + isc_uint16_t weight; + unsigned char * target; + isc_uint16_t tgt_len; +} dns_rdata_uri_t; + +#endif /* GENERIC_URI_256_H */ +/* * Copyright (C) 2004, 2006, 2007 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any diff --git a/lib/bind/isc/Makefile b/lib/bind/isc/Makefile index f41f604..1852472 100644 --- a/lib/bind/isc/Makefile +++ b/lib/bind/isc/Makefile @@ -40,7 +40,7 @@ SRCS+= inet_pton.c \ parseint.c portset.c \ print.c \ quota.c radix.c random.c \ - ratelimiter.c refcount.c region.c result.c rwlock.c \ + ratelimiter.c refcount.c region.c regex.c result.c rwlock.c \ serial.c sha1.c sha2.c sockaddr.c stats.c string.c strtoul.c \ symtab.c task.c taskpool.c timer.c version.c @@ -107,6 +107,7 @@ INCS= ${SRCDIR}/include/isc/app.h \ ${SRCDIR}/include/isc/ratelimiter.h \ ${SRCDIR}/include/isc/refcount.h \ ${SRCDIR}/include/isc/region.h \ + ${SRCDIR}/include/isc/regex.h \ ${SRCDIR}/include/isc/resource.h \ ${SRCDIR}/include/isc/result.h \ ${SRCDIR}/include/isc/resultclass.h \ diff --git a/usr.sbin/named/Makefile b/usr.sbin/named/Makefile index 4743a7b..f092880 100644 --- a/usr.sbin/named/Makefile +++ b/usr.sbin/named/Makefile @@ -42,7 +42,10 @@ SRCS+= builtin.c client.c config.c control.c \ lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \ lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c -CFLAGS+= -DCONFIGARGS="\"${CONFIGARGS}\"" +CFLAGS+= -DCONFIGARGS="\"${CONFIGARGS}\"" \ + -DPRODUCT=\"${PRODUCT}\" \ + -DDESCRIPTION=\"${DESCRIPTION}\" \ + -DSRCID=\"${SRCID}\" CFLAGS+= -I${SRCDIR}/unix/include -I${SRCDIR}/include -I${LIB_BIND_DIR} CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include |