From 5c94d3928bd539e116b28faeb360aa55aacae948 Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Fri, 11 Jul 2014 09:34:17 +0200 Subject: [PATCH] Imported Bugzilla 2.22. --- Bugzilla.pm | 174 +- Bugzilla/Attachment.pm | 444 +- Bugzilla/Auth/CVS/Entries | 2 +- Bugzilla/Auth/CVS/Tag | 2 +- Bugzilla/Auth/Login/CVS/Entries | 2 +- Bugzilla/Auth/Login/CVS/Tag | 2 +- Bugzilla/Auth/Login/WWW.pm | 4 - Bugzilla/Auth/Login/WWW/CGI.pm | 12 +- Bugzilla/Auth/Login/WWW/CGI/CVS/Entries | 2 +- Bugzilla/Auth/Login/WWW/CGI/CVS/Tag | 2 +- Bugzilla/Auth/Login/WWW/CVS/Entries | 4 +- Bugzilla/Auth/Login/WWW/CVS/Tag | 2 +- Bugzilla/Auth/Login/WWW/Env.pm | 9 + Bugzilla/Auth/Verify/CVS/Entries | 4 +- Bugzilla/Auth/Verify/CVS/Tag | 2 +- Bugzilla/Bug.pm | 288 +- Bugzilla/BugMail.pm | 419 +- Bugzilla/CGI.pm | 17 +- Bugzilla/CVS/Entries | 48 +- Bugzilla/CVS/Entries.Log | 4 - Bugzilla/CVS/Tag | 2 +- Bugzilla/Chart.pm | 82 +- Bugzilla/Classification.pm | 254 + Bugzilla/Component.pm | 273 + Bugzilla/Config.pm | 133 +- Bugzilla/Config/Admin.pm | 69 + Bugzilla/Config/Attachment.pm | 86 + Bugzilla/Config/Auth.pm | 135 + Bugzilla/Config/BugChange.pm | 135 + Bugzilla/Config/BugFields.pm | 119 + Bugzilla/Config/BugMove.pm | 93 + Bugzilla/Config/CVS/Entries | 18 + Bugzilla/Config/CVS/Repository | 1 + Bugzilla/Config/CVS/Root | 1 + Bugzilla/Config/CVS/Tag | 1 + Bugzilla/Config/Common.pm | 387 + Bugzilla/Config/Core.pm | 103 + Bugzilla/Config/DependencyGraph.pm | 52 + Bugzilla/Config/GroupSecurity.pm | 87 + Bugzilla/Config/L10n.pm | 78 + Bugzilla/Config/LDAP.pm | 81 + Bugzilla/Config/MTA.pm | 176 + Bugzilla/Config/PatchViewer.pm | 75 + Bugzilla/Config/Query.pm | 79 + Bugzilla/Config/ShadowDB.pm | 73 + Bugzilla/Config/UserMatch.pm | 71 + Bugzilla/Constants.pm | 27 +- Bugzilla/DB.pm | 46 +- Bugzilla/DB/CVS/Entries | 6 +- Bugzilla/DB/CVS/Tag | 2 +- Bugzilla/DB/Mysql.pm | 46 +- Bugzilla/DB/Pg.pm | 11 +- Bugzilla/DB/Schema.pm | 23 +- Bugzilla/DB/Schema/CVS/Entries | 4 +- Bugzilla/DB/Schema/CVS/Tag | 2 +- Bugzilla/DB/Schema/Mysql.pm | 15 +- Bugzilla/Error.pm | 1 + Bugzilla/Field.pm | 131 + Bugzilla/Flag.pm | 264 +- Bugzilla/FlagType.pm | 79 +- Bugzilla/Group.pm | 173 +- Bugzilla/Milestone.pm | 195 + Bugzilla/Product.pm | 387 + Bugzilla/Search.pm | 133 +- Bugzilla/Search/CVS/Entries | 2 + Bugzilla/Search/CVS/Repository | 1 + Bugzilla/Search/CVS/Root | 1 + Bugzilla/Search/CVS/Tag | 1 + Bugzilla/Search/Quicksearch.pm | 499 + Bugzilla/Series.pm | 12 +- Bugzilla/Template.pm | 202 +- Bugzilla/Template/CVS/Tag | 2 +- Bugzilla/Template/Plugin/CVS/Entries | 6 +- Bugzilla/Template/Plugin/CVS/Tag | 2 +- Bugzilla/Token.pm | 34 +- Bugzilla/User.pm | 519 +- Bugzilla/User/CVS/Entries | 2 +- Bugzilla/User/CVS/Tag | 2 +- Bugzilla/Util.pm | 138 +- Bugzilla/Version.pm | 177 + CGI.pl | 374 - CVS/Entries | 139 +- CVS/Tag | 2 +- QUICKSTART | 29 +- ant.jpg | Bin 8474 -> 0 bytes attachment.cgi | 199 +- buglist.cgi | 161 +- bugzilla.dtd | 15 +- chart.cgi | 27 +- checksetup.pl | 302 +- colchange.cgi | 9 +- config.cgi | 21 +- contrib/BugzillaEmail.pm | 9 +- contrib/CVS/Entries | 36 +- contrib/CVS/Tag | 2 +- contrib/README.Mailif | 2 +- contrib/bug_email.pl | 24 +- contrib/bugmail_help.html | 16 +- contrib/bugzilla-submit/CVS/Entries | 8 +- contrib/bugzilla-submit/CVS/Tag | 2 +- contrib/bugzilla_email_append.pl | 2 +- contrib/cmdline/CVS/Entries | 14 +- contrib/cmdline/CVS/Tag | 2 +- contrib/cmdline/query.conf | 2 +- contrib/gnatsparse/CVS/Entries | 8 +- contrib/gnatsparse/CVS/Tag | 2 +- contrib/gnatsparse/gnatsparse.py | 9 +- contrib/jb2bz.py | 7 +- contrib/sendunsentbugmail.pl | 2 +- contrib/syncLDAP.pl | 2 +- createaccount.cgi | 21 +- defparams.pl | 1479 - describecomponents.cgi | 25 +- describekeywords.cgi | 37 +- docs/CVS/Entries | 8 +- docs/CVS/Tag | 2 +- docs/html/Bugzilla-Guide.html | 427 +- docs/html/about.html | 8 +- docs/html/administration.html | 12 +- docs/html/bug_page.html | 6 +- docs/html/bugreports.html | 10 +- docs/html/classifications.html | 4 +- docs/html/cmdline-bugmail.html | 4 +- docs/html/cmdline.html | 4 +- docs/html/components.html | 4 +- docs/html/configuration.html | 22 +- docs/html/conventions.html | 4 +- docs/html/copyright.html | 4 +- docs/html/credits.html | 4 +- docs/html/cust-change-permissions.html | 4 +- docs/html/cust-hooks.html | 4 +- docs/html/cust-templates.html | 6 +- docs/html/customization.html | 4 +- docs/html/dbdoc.html | 4 +- docs/html/dbmodify.html | 4 +- docs/html/disclaimer.html | 4 +- docs/html/extraconfig.html | 10 +- docs/html/faq.html | 8 +- docs/html/flags-overview.html | 4 +- docs/html/flags.html | 4 +- docs/html/general-advice.html | 4 +- docs/html/gfdl-0.html | 4 +- docs/html/gfdl-1.html | 4 +- docs/html/gfdl-10.html | 4 +- docs/html/gfdl-2.html | 4 +- docs/html/gfdl-3.html | 4 +- docs/html/gfdl-4.html | 4 +- docs/html/gfdl-5.html | 4 +- docs/html/gfdl-6.html | 4 +- docs/html/gfdl-7.html | 4 +- docs/html/gfdl-8.html | 4 +- docs/html/gfdl-9.html | 4 +- docs/html/gfdl-howto.html | 6 +- docs/html/gfdl.html | 6 +- docs/html/glossary.html | 8 +- docs/html/groups.html | 18 +- docs/html/hintsandtips.html | 13 +- docs/html/index.html | 9 +- docs/html/install-perlmodules-manual.html | 4 +- docs/html/installation.html | 47 +- docs/html/installing-bugzilla.html | 20 +- docs/html/integration.html | 4 +- docs/html/lifecycle.html | 4 +- docs/html/list.html | 4 +- docs/html/milestones.html | 4 +- docs/html/modules-manual-download.html | 50 +- docs/html/modules-manual-instructions.html | 4 +- docs/html/modules-manual-optional.html | 46 +- docs/html/myaccount.html | 8 +- docs/html/newversions.html | 6 +- docs/html/nonroot.html | 28 +- docs/html/os-specific.html | 4 +- docs/html/parameters.html | 4 +- docs/html/paranoid-security.html | 4 +- docs/html/patches.html | 4 +- docs/html/patchviewer.html | 4 +- docs/html/products.html | 4 +- docs/html/query.html | 8 +- docs/html/quips.html | 4 +- docs/html/reporting.html | 4 +- docs/html/security-bugzilla.html | 87 +- docs/html/security-mysql.html | 4 +- docs/html/security-os.html | 4 +- docs/html/security-webserver.html | 16 +- docs/html/security.html | 4 +- docs/html/trbl-bundlebugzilla.html | 4 +- docs/html/trbl-dbdsponge.html | 4 +- docs/html/trbl-index.html | 4 +- docs/html/trbl-passwd-encryption.html | 4 +- docs/html/trbl-perlmodule.html | 4 +- docs/html/trbl-relogin-everyone.html | 4 +- docs/html/trbl-testserver.html | 4 +- docs/html/trouble-filetemp.html | 4 +- docs/html/troubleshooting.html | 4 +- docs/html/upgrading.html | 4 +- docs/html/useradmin.html | 93 +- docs/html/userpreferences.html | 4 +- docs/html/using-intro.html | 4 +- docs/html/using.html | 4 +- docs/html/versions.html | 4 +- docs/html/voting.html | 4 +- docs/html/whining.html | 4 +- docs/html/x3269.html | 4 +- docs/images/CVS/Entries | 12 +- docs/images/CVS/Tag | 2 +- docs/images/callouts/CVS/Entries | 6 +- docs/images/callouts/CVS/Tag | 2 +- docs/makedocs.pl | 2 +- docs/pdf/Bugzilla-Guide.pdf | 26650 ++++++++-------- docs/rel_notes.txt | 541 +- docs/txt/Bugzilla-Guide.txt | 119 +- docs/xml/Bugzilla-Guide.xml | 14 +- docs/xml/CVS/Entries | 40 +- docs/xml/CVS/Tag | 2 +- docs/xml/about.xml | 2 +- docs/xml/administration.xml | 40 + docs/xml/customization.xml | 2 +- docs/xml/installation.xml | 54 +- docs/xml/modules.xml | 37 +- docs/xml/security.xml | 45 +- docs/xml/troubleshooting.xml | 2 +- docs/xml/using.xml | 7 +- doeditparams.cgi | 118 - duplicates.cgi | 23 +- editclassifications.cgi | 280 +- editcomponents.cgi | 531 +- editflagtypes.cgi | 225 +- editgroups.cgi | 378 +- editkeywords.cgi | 151 +- editmilestones.cgi | 379 +- editparams.cgi | 193 +- editproducts.cgi | 1523 +- editsettings.cgi | 11 +- editusers.cgi | 170 +- editvalues.cgi | 43 +- editversions.cgi | 274 +- editwhines.cgi | 9 +- enter_bug.cgi | 137 +- globals.pl | 394 +- images/CVS/Entries | 2 +- images/CVS/Tag | 2 +- importxml.pl | 1752 +- index.cgi | 10 +- js/CVS/Entries | 5 +- js/CVS/Tag | 2 +- js/TUI.js | 168 + localconfig.js | 75 - long_list.cgi | 5 +- move.pl | 140 - page.cgi | 9 +- post_bug.cgi | 92 +- process_bug.cgi | 519 +- productmenu.js | 9 +- query.cgi | 64 +- quicksearch.html | 151 - quicksearch.js | 740 - quicksearchhack.html | 357 - quips.cgi | 48 +- relogin.cgi | 195 +- report.cgi | 24 +- reports.cgi | 42 +- request.cgi | 78 +- sanitycheck.cgi | 82 +- show_activity.cgi | 12 +- show_bug.cgi | 17 +- showdependencygraph.cgi | 46 +- showdependencytree.cgi | 53 +- sidebar.cgi | 11 +- skins/CVS/Tag | 2 +- skins/standard/CVS/Entries | 21 +- skins/standard/CVS/Tag | 2 +- skins/standard/admin.css | 4 + skins/standard/global.css | 31 +- skins/standard/global/CVS/Entries | 4 +- skins/standard/global/CVS/Tag | 2 +- skins/standard/index/CVS/Entries | 3 +- skins/standard/index/CVS/Tag | 2 +- skins/standard/index/front.jpg | Bin 8474 -> 0 bytes skins/standard/params.css | 49 + summarize_time.cgi | 13 +- t/004template.t | 1 + t/008filter.t | 5 +- t/CVS/Entries | 25 +- t/CVS/Tag | 2 +- t/Support/CVS/Entries | 6 +- t/Support/CVS/Tag | 2 +- t/Support/Files.pm | 2 +- t/testchart.gif | Bin 3751 -> 0 bytes t/testchart.png | Bin 2382 -> 0 bytes t/testgd.png | Bin 361 -> 0 bytes template/CVS/Entries | 2 +- template/CVS/Tag | 2 +- template/en/CVS/Entries | 2 +- template/en/CVS/Tag | 2 +- template/en/default/CVS/Entries | 11 +- template/en/default/CVS/Entries.Log | 2 - template/en/default/CVS/Tag | 2 +- template/en/default/account/CVS/Entries | 8 +- template/en/default/account/CVS/Tag | 2 +- template/en/default/account/auth/CVS/Entries | 6 +- template/en/default/account/auth/CVS/Tag | 2 +- template/en/default/account/email/CVS/Entries | 6 +- template/en/default/account/email/CVS/Tag | 2 +- .../en/default/account/password/CVS/Entries | 4 +- template/en/default/account/password/CVS/Tag | 2 +- template/en/default/account/prefs/CVS/Entries | 14 +- template/en/default/account/prefs/CVS/Tag | 2 +- .../en/default/account/prefs/email.html.tmpl | 2 + .../account/prefs/permissions.html.tmpl | 6 + .../en/default/account/prefs/prefs.html.tmpl | 105 +- .../account/prefs/saved-searches.html.tmpl | 2 +- .../default/account/prefs/settings.html.tmpl | 68 +- template/en/default/admin/CVS/Entries | 4 +- template/en/default/admin/CVS/Entries.Log | 2 - template/en/default/admin/CVS/Tag | 2 +- .../default/admin/classifications/CVS/Entries | 16 +- .../en/default/admin/classifications/CVS/Tag | 2 +- .../admin/classifications/del.html.tmpl | 8 +- .../admin/classifications/delete.html.tmpl | 2 +- .../admin/classifications/edit.html.tmpl | 20 +- .../classifications/reclassify.html.tmpl | 33 +- .../admin/classifications/select.html.tmpl | 13 +- .../en/default/admin/components/CVS/Entries | 18 +- template/en/default/admin/components/CVS/Tag | 2 +- .../admin/components/confirm-delete.html.tmpl | 81 +- .../default/admin/components/edit.html.tmpl | 55 +- .../default/admin/components/list.html.tmpl | 41 +- .../admin/components/select-product.html.tmpl | 27 +- .../en/default/admin/fieldvalues/CVS/Entries | 18 +- template/en/default/admin/fieldvalues/CVS/Tag | 2 +- .../fieldvalues/confirm-delete.html.tmpl | 80 +- .../default/admin/fieldvalues/list.html.tmpl | 22 +- .../admin/fieldvalues/updated.html.tmpl | 6 + .../en/default/admin/flag-type/CVS/Entries | 6 +- template/en/default/admin/flag-type/CVS/Tag | 2 +- .../en/default/admin/flag-type/edit.html.tmpl | 28 +- template/en/default/admin/groups/CVS/Entries | 16 +- template/en/default/admin/groups/CVS/Tag | 2 +- .../en/default/admin/groups/delete.html.tmpl | 2 +- .../en/default/admin/groups/list.html.tmpl | 4 +- .../en/default/admin/keywords/CVS/Entries | 12 +- template/en/default/admin/keywords/CVS/Tag | 2 +- .../en/default/admin/keywords/edit.html.tmpl | 5 +- .../en/default/admin/keywords/list.html.tmpl | 1 + .../en/default/admin/milestones/CVS/Entries | 18 +- template/en/default/admin/milestones/CVS/Tag | 2 +- .../admin/milestones/confirm-delete.html.tmpl | 2 - .../default/admin/milestones/create.html.tmpl | 3 +- .../default/admin/milestones/edit.html.tmpl | 4 +- .../default/admin/milestones/list.html.tmpl | 55 +- .../admin/milestones/select-product.html.tmpl | 31 +- template/en/default/admin/params/CVS/Entries | 20 + .../en/default/admin/params/CVS/Repository | 1 + template/en/default/admin/params/CVS/Root | 1 + template/en/default/admin/params/CVS/Tag | 1 + .../en/default/admin/params/admin.html.tmpl | 46 + .../default/admin/params/attachment.html.tmpl | 50 + .../en/default/admin/params/auth.html.tmpl | 124 + .../default/admin/params/bugchange.html.tmpl | 76 + .../default/admin/params/bugfields.html.tmpl | 64 + .../en/default/admin/params/bugmove.html.tmpl | 50 + .../en/default/admin/params/common.html.tmpl | 79 + .../en/default/admin/params/core.html.tmpl | 68 + .../admin/params/dependencygraph.html.tmpl | 50 + .../default/admin/params/editparams.html.tmpl | 110 + .../admin/params/groupsecurity.html.tmpl | 60 + .../en/default/admin/params/index.html.tmpl | 49 + .../en/default/admin/params/l10n.html.tmpl | 46 + .../en/default/admin/params/ldap.html.tmpl | 46 + .../en/default/admin/params/mta.html.tmpl | 109 + .../admin/params/patchviewer.html.tmpl | 65 + .../en/default/admin/params/query.html.tmpl | 58 + .../default/admin/params/shadowdb.html.tmpl | 50 + .../default/admin/params/usermatch.html.tmpl | 46 + .../en/default/admin/products/CVS/Entries | 15 +- template/en/default/admin/products/CVS/Tag | 2 +- .../admin/products/confirm-delete.html.tmpl | 132 +- .../default/admin/products/create.html.tmpl | 68 + .../default/admin/products/created.html.tmpl | 36 + .../default/admin/products/deleted.html.tmpl | 9 +- .../admin/products/edit-common.html.tmpl | 102 + .../en/default/admin/products/edit.html.tmpl | 144 + .../default/admin/products/footer.html.tmpl | 31 +- .../admin/products/groupcontrol/CVS/Entries | 5 +- .../admin/products/groupcontrol/CVS/Tag | 2 +- .../groupcontrol/confirm-edit.html.tmpl | 6 +- .../products/groupcontrol/edit.html.tmpl | 14 +- .../products/groupcontrol/updated.html.tmpl | 53 + .../en/default/admin/products/list.html.tmpl | 69 +- .../default/admin/products/updated.html.tmpl | 202 + .../en/default/admin/settings/CVS/Entries | 4 +- template/en/default/admin/settings/CVS/Tag | 2 +- template/en/default/admin/sudo.html.tmpl | 102 + template/en/default/admin/table.html.tmpl | 70 +- template/en/default/admin/users/CVS/Entries | 14 +- template/en/default/admin/users/CVS/Tag | 2 +- .../en/default/admin/users/edit.html.tmpl | 2 +- .../en/default/admin/users/search.html.tmpl | 1 + .../en/default/admin/users/userdata.html.tmpl | 5 + .../en/default/admin/versions/CVS/Entries | 18 +- template/en/default/admin/versions/CVS/Tag | 2 +- .../en/default/admin/versions/list.html.tmpl | 40 +- .../admin/versions/select-product.html.tmpl | 31 +- template/en/default/attachment/CVS/Entries | 22 +- template/en/default/attachment/CVS/Tag | 2 +- .../en/default/attachment/create.html.tmpl | 78 +- .../en/default/attachment/created.html.tmpl | 9 +- .../default/attachment/diff-header.html.tmpl | 2 +- template/en/default/attachment/edit.html.tmpl | 89 +- template/en/default/attachment/list.html.tmpl | 18 +- .../attachment/show-multiple.html.tmpl | 2 +- template/en/default/bug/CVS/Entries | 24 +- template/en/default/bug/CVS/Tag | 2 +- template/en/default/bug/activity/CVS/Entries | 4 +- template/en/default/bug/activity/CVS/Tag | 2 +- template/en/default/bug/comments.html.tmpl | 17 +- template/en/default/bug/create/CVS/Entries | 14 +- template/en/default/bug/create/CVS/Tag | 2 +- .../en/default/bug/create/create.html.tmpl | 10 +- .../bug/create/make-template.html.tmpl | 14 +- .../en/default/bug/dependency-graph.html.tmpl | 2 + .../en/default/bug/dependency-tree.html.tmpl | 4 +- template/en/default/bug/edit.html.tmpl | 39 +- template/en/default/bug/knob.html.tmpl | 2 + template/en/default/bug/process/CVS/Entries | 13 +- template/en/default/bug/process/CVS/Tag | 2 +- .../en/default/bug/process/bugmail.html.tmpl | 12 +- .../en/default/bug/process/midair.html.tmpl | 2 + .../en/default/bug/process/next.html.tmpl | 67 - .../en/default/bug/process/results.html.tmpl | 2 + template/en/default/bug/show.html.tmpl | 37 +- template/en/default/bug/show.xml.tmpl | 36 +- template/en/default/bug/votes/CVS/Entries | 6 +- template/en/default/bug/votes/CVS/Tag | 2 +- .../default/bug/votes/list-for-bug.html.tmpl | 13 +- template/en/default/config.js.tmpl | 11 +- template/en/default/config.rdf.tmpl | 62 +- template/en/default/email/CVS/Entries | 2 + template/en/default/email/CVS/Repository | 1 + template/en/default/email/CVS/Root | 1 + template/en/default/email/CVS/Tag | 1 + template/en/default/email/sudo.txt.tmpl | 43 + template/en/default/filterexceptions.pl | 68 +- template/en/default/flag/CVS/Entries | 2 +- template/en/default/flag/CVS/Tag | 2 +- template/en/default/flag/list.html.tmpl | 22 +- template/en/default/global/CVS/Entries | 45 +- template/en/default/global/CVS/Tag | 2 +- .../global/choose-classification.html.tmpl | 16 +- .../default/global/choose-product.html.tmpl | 4 +- .../en/default/global/code-error.html.tmpl | 36 +- .../en/default/global/help-header.html.tmpl | 2 +- template/en/default/global/help.html.tmpl | 2 +- template/en/default/global/message.txt.tmpl | 26 + template/en/default/global/messages.html.tmpl | 27 + .../default/global/per-bug-queries.html.tmpl | 43 + .../en/default/global/setting-descs.none.tmpl | 7 +- .../default/global/site-navigation.html.tmpl | 8 +- template/en/default/global/tabs.html.tmpl | 47 + .../en/default/global/useful-links.html.tmpl | 23 +- .../en/default/global/user-error.html.tmpl | 240 +- template/en/default/index.html.tmpl | 31 +- template/en/default/list/CVS/Entries | 24 +- template/en/default/list/CVS/Tag | 2 +- .../en/default/list/edit-multiple.html.tmpl | 59 +- template/en/default/list/list.atom.tmpl | 2 +- template/en/default/list/list.html.tmpl | 27 +- template/en/default/list/list.rdf.tmpl | 2 +- .../en/default/list/server-push.html.tmpl | 5 + template/en/default/pages/CVS/Entries | 13 +- template/en/default/pages/CVS/Tag | 2 +- .../en/default/pages/quicksearch.html.tmpl | 190 + .../default/pages/quicksearchhack.html.tmpl | 377 + template/en/default/pages/sudo.html.tmpl | 69 + template/en/default/reports/CVS/Entries | 44 +- template/en/default/reports/CVS/Tag | 2 +- template/en/default/reports/chart.png.tmpl | 1 + .../reports/duplicates-table.html.tmpl | 186 +- .../en/default/reports/duplicates.html.tmpl | 8 +- .../en/default/reports/duplicates.rdf.tmpl | 2 +- template/en/default/request/CVS/Entries | 4 +- template/en/default/request/CVS/Tag | 2 +- template/en/default/request/queue.html.tmpl | 21 +- template/en/default/search/CVS/Entries | 22 +- template/en/default/search/CVS/Tag | 2 +- template/en/default/search/form.html.tmpl | 8 +- .../default/search/search-advanced.html.tmpl | 16 +- .../en/default/search/search-help.html.tmpl | 14 +- .../default/search/search-specific.html.tmpl | 18 +- template/en/default/search/tabs.html.tmpl | 39 +- template/en/default/sidebar.xul.tmpl | 8 +- template/en/default/whine/CVS/Entries | 8 +- template/en/default/whine/CVS/Tag | 2 +- template/en/default/whine/schedule.html.tmpl | 8 + template/en/extension/CVS/Entries | 2 +- template/en/extension/CVS/Tag | 2 +- testserver.pl | 69 +- token.cgi | 104 +- userprefs.cgi | 181 +- votes.cgi | 129 +- whine.pl | 26 +- whineatnews.pl | 3 +- xml.cgi | 5 +- 503 files changed, 30741 insertions(+), 24423 deletions(-) delete mode 100644 Bugzilla/CVS/Entries.Log create mode 100644 Bugzilla/Classification.pm create mode 100644 Bugzilla/Component.pm create mode 100644 Bugzilla/Config/Admin.pm create mode 100644 Bugzilla/Config/Attachment.pm create mode 100644 Bugzilla/Config/Auth.pm create mode 100644 Bugzilla/Config/BugChange.pm create mode 100644 Bugzilla/Config/BugFields.pm create mode 100644 Bugzilla/Config/BugMove.pm create mode 100644 Bugzilla/Config/CVS/Entries create mode 100644 Bugzilla/Config/CVS/Repository create mode 100644 Bugzilla/Config/CVS/Root create mode 100644 Bugzilla/Config/CVS/Tag create mode 100644 Bugzilla/Config/Common.pm create mode 100644 Bugzilla/Config/Core.pm create mode 100644 Bugzilla/Config/DependencyGraph.pm create mode 100644 Bugzilla/Config/GroupSecurity.pm create mode 100644 Bugzilla/Config/L10n.pm create mode 100644 Bugzilla/Config/LDAP.pm create mode 100644 Bugzilla/Config/MTA.pm create mode 100644 Bugzilla/Config/PatchViewer.pm create mode 100644 Bugzilla/Config/Query.pm create mode 100644 Bugzilla/Config/ShadowDB.pm create mode 100644 Bugzilla/Config/UserMatch.pm create mode 100644 Bugzilla/Field.pm create mode 100644 Bugzilla/Milestone.pm create mode 100644 Bugzilla/Product.pm create mode 100644 Bugzilla/Search/CVS/Entries create mode 100644 Bugzilla/Search/CVS/Repository create mode 100644 Bugzilla/Search/CVS/Root create mode 100644 Bugzilla/Search/CVS/Tag create mode 100644 Bugzilla/Search/Quicksearch.pm create mode 100644 Bugzilla/Version.pm delete mode 100644 CGI.pl delete mode 100644 ant.jpg delete mode 100644 defparams.pl delete mode 100755 doeditparams.cgi create mode 100644 js/TUI.js delete mode 100644 localconfig.js delete mode 100755 move.pl delete mode 100644 quicksearch.html delete mode 100644 quicksearch.js delete mode 100644 quicksearchhack.html delete mode 100644 skins/standard/index/front.jpg create mode 100644 skins/standard/params.css delete mode 100644 t/testchart.gif delete mode 100644 t/testchart.png delete mode 100644 t/testgd.png delete mode 100644 template/en/default/CVS/Entries.Log create mode 100644 template/en/default/admin/params/CVS/Entries create mode 100644 template/en/default/admin/params/CVS/Repository create mode 100644 template/en/default/admin/params/CVS/Root create mode 100644 template/en/default/admin/params/CVS/Tag create mode 100644 template/en/default/admin/params/admin.html.tmpl create mode 100644 template/en/default/admin/params/attachment.html.tmpl create mode 100644 template/en/default/admin/params/auth.html.tmpl create mode 100644 template/en/default/admin/params/bugchange.html.tmpl create mode 100644 template/en/default/admin/params/bugfields.html.tmpl create mode 100644 template/en/default/admin/params/bugmove.html.tmpl create mode 100644 template/en/default/admin/params/common.html.tmpl create mode 100644 template/en/default/admin/params/core.html.tmpl create mode 100644 template/en/default/admin/params/dependencygraph.html.tmpl create mode 100644 template/en/default/admin/params/editparams.html.tmpl create mode 100644 template/en/default/admin/params/groupsecurity.html.tmpl create mode 100644 template/en/default/admin/params/index.html.tmpl create mode 100644 template/en/default/admin/params/l10n.html.tmpl create mode 100644 template/en/default/admin/params/ldap.html.tmpl create mode 100644 template/en/default/admin/params/mta.html.tmpl create mode 100644 template/en/default/admin/params/patchviewer.html.tmpl create mode 100644 template/en/default/admin/params/query.html.tmpl create mode 100644 template/en/default/admin/params/shadowdb.html.tmpl create mode 100644 template/en/default/admin/params/usermatch.html.tmpl create mode 100644 template/en/default/admin/products/create.html.tmpl create mode 100644 template/en/default/admin/products/created.html.tmpl create mode 100644 template/en/default/admin/products/edit-common.html.tmpl create mode 100644 template/en/default/admin/products/edit.html.tmpl create mode 100644 template/en/default/admin/products/groupcontrol/updated.html.tmpl create mode 100644 template/en/default/admin/products/updated.html.tmpl create mode 100644 template/en/default/admin/sudo.html.tmpl delete mode 100644 template/en/default/bug/process/next.html.tmpl create mode 100644 template/en/default/email/CVS/Entries create mode 100644 template/en/default/email/CVS/Repository create mode 100644 template/en/default/email/CVS/Root create mode 100644 template/en/default/email/CVS/Tag create mode 100644 template/en/default/email/sudo.txt.tmpl create mode 100644 template/en/default/global/message.txt.tmpl create mode 100644 template/en/default/global/per-bug-queries.html.tmpl create mode 100644 template/en/default/global/tabs.html.tmpl create mode 100644 template/en/default/pages/quicksearch.html.tmpl create mode 100644 template/en/default/pages/quicksearchhack.html.tmpl create mode 100644 template/en/default/pages/sudo.html.tmpl diff --git a/Bugzilla.pm b/Bugzilla.pm index c46b8f806..2a0a66014 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -19,7 +19,7 @@ # # Contributor(s): Bradley Baetz <bbaetz@student.usyd.edu.au> # Erik Stambaugh <erik@dasbistro.com> -# +# A. Karl Kornel <karl@kornel.name> package Bugzilla; @@ -33,6 +33,85 @@ use Bugzilla::Constants; use Bugzilla::DB; use Bugzilla::Template; use Bugzilla::User; +use Bugzilla::Error; +use Bugzilla::Util; + +use File::Basename; + +##################################################################### +# Constants +##################################################################### + +# Scripts that are not stopped by shutdownhtml being in effect. +use constant SHUTDOWNHTML_EXEMPT => [ + 'editparams.cgi', + 'checksetup.pl', +]; + +# Non-cgi scripts that should silently exit. +use constant SHUTDOWNHTML_EXIT_SILENTLY => [ + 'whine.pl' +]; + +##################################################################### +# Global Code +##################################################################### + +# If Bugzilla is shut down, do not allow anything to run, just display a +# message to the user about the downtime and log out. Scripts listed in +# SHUTDOWNHTML_EXEMPT are exempt from this message. +# +# Because this is code which is run live from perl "use" commands of other +# scripts, we're skipping this part if we get here during a perl syntax check +# -- runtests.pl compiles scripts without running them, so we need to make sure +# that this check doesn't apply to 'perl -c' calls. +# +# This code must go here. It cannot go anywhere in Bugzilla::CGI, because +# it uses Template, and that causes various dependency loops. +if (!$^C + && Param("shutdownhtml") + && lsearch(SHUTDOWNHTML_EXEMPT, basename($0)) == -1) +{ + # Allow non-cgi scripts to exit silently (without displaying any + # message), if desired. At this point, no DBI call has been made + # yet, and no error will be returned if the DB is inaccessible. + if (lsearch(SHUTDOWNHTML_EXIT_SILENTLY, basename($0)) > -1 + && !i_am_cgi()) + { + exit; + } + + # For security reasons, log out users when Bugzilla is down. + # Bugzilla->login() is required to catch the logincookie, if any. + my $user = Bugzilla->login(LOGIN_OPTIONAL); + my $userid = $user->id; + Bugzilla->logout(); + + my $template = Bugzilla->template; + my $vars = {}; + $vars->{'message'} = 'shutdown'; + $vars->{'userid'} = $userid; + # Generate and return a message about the downtime, appropriately + # for if we're a command-line script or a CGI sript. + my $extension; + if (i_am_cgi() && (!Bugzilla->cgi->param('ctype') + || Bugzilla->cgi->param('ctype') eq 'html')) { + $extension = 'html'; + } + else { + $extension = 'txt'; + } + print Bugzilla->cgi->header() if i_am_cgi(); + my $t_output; + $template->process("global/message.$extension.tmpl", $vars, \$t_output) + || ThrowTemplateError($template->error); + print $t_output . "\n"; + exit; +} + +##################################################################### +# Subroutines and Methods +##################################################################### my $_template; sub template { @@ -59,9 +138,58 @@ sub user { return $_user; } +my $_sudoer; +sub sudoer { + my $class = shift; + return $_sudoer; +} + +sub sudo_request { + my $class = shift; + my $new_user = shift; + my $new_sudoer = shift; + + $_user = $new_user; + $_sudoer = $new_sudoer; + + # NOTE: If you want to log the start of an sudo session, do it here. + + return; +} + sub login { my ($class, $type) = @_; - $_user = Bugzilla::Auth::Login::WWW->login($type); + my $authenticated_user = Bugzilla::Auth::Login::WWW->login($type); + + # At this point, we now know if a real person is logged in. + # We must now check to see if an sudo session is in progress. + # For a session to be in progress, the following must be true: + # 1: There must be a logged in user + # 2: That user must be in the 'bz_sudoer' group + # 3: There must be a valid value in the 'sudo' cookie + # 4: A Bugzilla::User object must exist for the given cookie value + # 5: That user must NOT be in the 'bz_sudo_protect' group + my $sudo_cookie = $class->cgi->cookie('sudo'); + detaint_natural($sudo_cookie) if defined($sudo_cookie); + my $sudo_target; + $sudo_target = new Bugzilla::User($sudo_cookie) if defined($sudo_cookie); + if (defined($authenticated_user) && + $authenticated_user->in_group('bz_sudoers') && + defined($sudo_cookie) && + defined($sudo_target) && + !($sudo_target->in_group('bz_sudo_protect')) + ) + { + $_user = $sudo_target; + $_sudoer = $authenticated_user; + + # NOTE: If you want to do any special logging, do it here. + } + else { + $_user = $authenticated_user; + } + + return $_user; } sub logout { @@ -91,8 +219,7 @@ sub logout_user_by_id { # hack that invalidates credentials for a single request sub logout_request { undef $_user; - # XXX clean this up eventually - $::userid = 0; + undef $_sudoer; # We can't delete from $cgi->cookie, so logincookie data will remain # there. Don't rely on it: use Bugzilla->user->login instead! } @@ -121,17 +248,6 @@ sub batch { return $_batch || 0; } -sub dbwritesallowed { - my $class = shift; - - # We can write if we are connected to the main database. - # Note that if we don't have a shadowdb, then we claim that its ok - # to write even if we're nominally connected to the shadowdb. - # This is OK because this method is only used to test if misc - # updates can be done, rather than anything complicated. - return $class->dbh == $_dbh_main; -} - sub switch_to_shadow_db { my $class = shift; @@ -220,7 +336,7 @@ This approach has several advantages: =item * -They're not global variables, so we don't have issues with them staying arround +They're not global variables, so we don't have issues with them staying around with mod_perl =item * @@ -267,8 +383,24 @@ method for those scripts/templates which are only use via CGI, though. =item C<user> -The current C<Bugzilla::User>. C<undef> if there is no currently logged in user -or if the login code has not yet been run. +C<undef> if there is no currently logged in user or if the login code has not +yet been run. If an sudo session is in progress, the C<Bugzilla::User> +corresponding to the person who is being impersonated. If no session is in +progress, the current C<Bugzilla::User>. + +=item C<sudoer> + +C<undef> if there is no currently logged in user, the currently logged in user +is not in the I<sudoer> group, or there is no session in progress. If an sudo +session is in progress, returns the C<Bugzilla::User> object corresponding to +the person who logged in and initiated the session. If no session is in +progress, returns the C<Bugzilla::User> object corresponding to the currently +logged in user. + +=item C<sudo_request> +This begins an sudo session for the current request. It is meant to be +used when a session has just started. For normal use, sudo access should +normally be set at login time. =item C<login> @@ -311,12 +443,6 @@ Bugzilla->batch will return the current state of this flag. The current database handle. See L<DBI>. -=item C<dbwritesallowed> - -Determines if writes to the database are permitted. This is usually used to -determine if some general cleanup needs to occur (such as clearing the token -table) - =item C<switch_to_shadow_db> Switch from using the main database to using the shadow database. diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index 4d223d633..8b0203924 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -20,91 +20,401 @@ # Contributor(s): Terry Weissman <terry@mozilla.org> # Myk Melez <myk@mozilla.org> -############################################################################ -# Module Initialization -############################################################################ - use strict; package Bugzilla::Attachment; -# This module requires that its caller have said "require CGI.pl" to import -# relevant functions from that script and its companion globals.pl. +=head1 NAME + +Bugzilla::Attachment - a file related to a bug that a user has uploaded + to the Bugzilla server + +=head1 SYNOPSIS + + use Bugzilla::Attachment; + + # Get the attachment with the given ID. + my $attachment = Bugzilla::Attachment->get($attach_id); + + # Get the attachments with the given IDs. + my $attachments = Bugzilla::Attachment->get_list($attach_ids); + +=head1 DESCRIPTION + +This module defines attachment objects, which represent files related to bugs +that users upload to the Bugzilla server. + +=cut + +# This module requires that its caller have said "require globals.pl" +# to import relevant functions from that script. -# Use the Flag module to handle flags. use Bugzilla::Flag; use Bugzilla::Config qw(:locations); use Bugzilla::User; -############################################################################ -# Functions -############################################################################ +sub get { + my $invocant = shift; + my $id = shift; -sub new { - # Returns a hash of information about the attachment with the given ID. - - my ($invocant, $id) = @_; - return undef if !$id; - my $self = { 'id' => $id }; - my $class = ref($invocant) || $invocant; - bless($self, $class); - - &::PushGlobalSQLState(); - &::SendSQL("SELECT 1, description, bug_id, isprivate FROM attachments " . - "WHERE attach_id = $id"); - ($self->{'exists'}, - $self->{'summary'}, - $self->{'bug_id'}, - $self->{'isprivate'}) = &::FetchSQLData(); - &::PopGlobalSQLState(); + my $attachments = _retrieve([$id]); + my $self = $attachments->[0]; + bless($self, ref($invocant) || $invocant) if $self; return $self; } -sub query -{ - # Retrieves and returns an array of attachment records for a given bug. - # This data should be given to attachment/list.html.tmpl in an - # "attachments" variable. - my ($bugid) = @_; - - my $dbh = Bugzilla->dbh; - - # Retrieve a list of attachments for this bug and write them into an array - # of hashes in which each hash represents a single attachment. - my $list = $dbh->selectall_arrayref("SELECT attach_id, " . - $dbh->sql_date_format('creation_ts', '%Y.%m.%d %H:%i') . - ", mimetype, description, ispatch, - isobsolete, isprivate, LENGTH(thedata) - FROM attachments - WHERE bug_id = ? ORDER BY attach_id", - undef, $bugid); - - my @attachments = (); - foreach my $row (@$list) { - my %a; - ($a{'attachid'}, $a{'date'}, $a{'contenttype'}, - $a{'description'}, $a{'ispatch'}, $a{'isobsolete'}, - $a{'isprivate'}, $a{'datasize'}) = @$row; - - # Retrieve a list of flags for this attachment. - $a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'}, - 'is_active' => 1 }); - - # A zero size indicates that the attachment is stored locally. - if ($a{'datasize'} == 0) { - my $attachid = $a{'attachid'}; - my $hash = ($attachid % 100) + 100; - $hash =~ s/.*(\d\d)$/group.$1/; - if (open(AH, "$attachdir/$hash/attachment.$attachid")) { - $a{'datasize'} = (stat(AH))[7]; +sub get_list { + my $invocant = shift; + my $ids = shift; + + my $attachments = _retrieve($ids); + foreach my $attachment (@$attachments) { + bless($attachment, ref($invocant) || $invocant); + } + + return $attachments; +} + +sub _retrieve { + my ($ids) = @_; + + return [] if scalar(@$ids) == 0; + + my @columns = ( + 'attachments.attach_id AS id', + 'attachments.bug_id AS bug_id', + 'attachments.description AS description', + 'attachments.mimetype AS contenttype', + 'attachments.submitter_id AS _attacher_id', + Bugzilla->dbh->sql_date_format('attachments.creation_ts', + '%Y.%m.%d %H:%i') . " AS attached", + 'attachments.filename AS filename', + 'attachments.ispatch AS ispatch', + 'attachments.isurl AS isurl', + 'attachments.isobsolete AS isobsolete', + 'attachments.isprivate AS isprivate' + ); + my $columns = join(", ", @columns); + + my $records = Bugzilla->dbh->selectall_arrayref("SELECT $columns + FROM attachments + WHERE attach_id IN (" . + join(",", @$ids) . ") + ORDER BY attach_id", + { Slice => {} }); + return $records; +} + +=pod + +=head2 Instance Properties + +=over + +=item C<id> + +the unique identifier for the attachment + +=back + +=cut + +sub id { + my $self = shift; + return $self->{id}; +} + +=over + +=item C<bug_id> + +the ID of the bug to which the attachment is attached + +=back + +=cut + +# XXX Once Bug.pm slims down sufficiently this should become a reference +# to a bug object. +sub bug_id { + my $self = shift; + return $self->{bug_id}; +} + +=over + +=item C<description> + +user-provided text describing the attachment + +=back + +=cut + +sub description { + my $self = shift; + return $self->{description}; +} + +=over + +=item C<contenttype> + +the attachment's MIME media type + +=back + +=cut + +sub contenttype { + my $self = shift; + return $self->{contenttype}; +} + +=over + +=item C<attacher> + +the user who attached the attachment + +=back + +=cut + +sub attacher { + my $self = shift; + return $self->{attacher} if exists $self->{attacher}; + $self->{attacher} = new Bugzilla::User($self->{_attacher_id}); + return $self->{attacher}; +} + +=over + +=item C<attached> + +the date and time on which the attacher attached the attachment + +=back + +=cut + +sub attached { + my $self = shift; + return $self->{attached}; +} + +=over + +=item C<filename> + +the name of the file the attacher attached + +=back + +=cut + +sub filename { + my $self = shift; + return $self->{filename}; +} + +=over + +=item C<ispatch> + +whether or not the attachment is a patch + +=back + +=cut + +sub ispatch { + my $self = shift; + return $self->{ispatch}; +} + +=over + +=item C<isurl> + +whether or not the attachment is a URL + +=back + +=cut + +sub isurl { + my $self = shift; + return $self->{isurl}; +} + +=over + +=item C<isobsolete> + +whether or not the attachment is obsolete + +=back + +=cut + +sub isobsolete { + my $self = shift; + return $self->{isobsolete}; +} + +=over + +=item C<isprivate> + +whether or not the attachment is private + +=back + +=cut + +sub isprivate { + my $self = shift; + return $self->{isprivate}; +} + +=over + +=item C<data> + +the content of the attachment + +=back + +=cut + +sub data { + my $self = shift; + return $self->{data} if exists $self->{data}; + + # First try to get the attachment data from the database. + ($self->{data}) = Bugzilla->dbh->selectrow_array("SELECT thedata + FROM attach_data + WHERE id = ?", + undef, + $self->{id}); + + # If there's no attachment data in the database, the attachment is stored + # in a local file, so retrieve it from there. + if (length($self->{data}) == 0) { + if (open(AH, $self->_get_local_filename())) { + local $/; + binmode AH; + $self->{data} = <AH>; + close(AH); + } + } + + return $self->{data}; +} + +=over + +=item C<datasize> + +the length (in characters) of the attachment content + +=back + +=cut + +# datasize is a property of the data itself, and it's unclear whether we should +# expose it at all, since you can easily derive it from the data itself: in TT, +# attachment.data.size; in Perl, length($attachment->{data}). But perhaps +# it makes sense for performance reasons, since accessing the data forces it +# to get retrieved from the database/filesystem and loaded into memory, +# while datasize avoids loading the attachment into memory, calling SQL's +# LENGTH() function or stat()ing the file instead. I've left it in for now. + +sub datasize { + my $self = shift; + return $self->{datasize} if exists $self->{datasize}; + + # If we have already retrieved the data, return its size. + return length($self->{data}) if exists $self->{data}; + + ($self->{datasize}) = + Bugzilla->dbh->selectrow_array("SELECT LENGTH(thedata) + FROM attach_data + WHERE id = ?", + undef, + $self->{id}); + + # If there's no attachment data in the database, the attachment + # is stored in a local file, so retrieve its size from the file. + if ($self->{datasize} == 0) { + if (open(AH, $self->_get_local_filename())) { + binmode AH; + $self->{datasize} = (stat(AH))[7]; close(AH); } } - push @attachments, \%a; - } - return \@attachments; + return $self->{datasize}; +} + +=over + +=item C<flags> + +flags that have been set on the attachment + +=back + +=cut + +sub flags { + my $self = shift; + return $self->{flags} if exists $self->{flags}; + + $self->{flags} = Bugzilla::Flag::match({ attach_id => $self->id, + is_active => 1 }); + return $self->{flags}; +} + +# Instance methods; no POD documentation here yet because the only one so far +# is private. + +sub _get_local_filename { + my $self = shift; + my $hash = ($self->id % 100) + 100; + $hash =~ s/.*(\d\d)$/group.$1/; + return "$attachdir/$hash/attachment." . $self->id; +} + +=pod + +=head2 Class Methods + +=over + +=item C<get_attachments_by_bug($bug_id)> + +Description: retrieves and returns the attachments for the given bug. + +Params: C<$bug_id> - integer - the ID of the bug for which + to retrieve and return attachments. + +Returns: a reference to an array of attachment objects. + +=back + +=cut + +sub get_attachments_by_bug { + my ($class, $bug_id) = @_; + my $attach_ids = Bugzilla->dbh->selectcol_arrayref("SELECT attach_id + FROM attachments + WHERE bug_id = ?", + undef, $bug_id); + my $attachments = Bugzilla::Attachment->get_list($attach_ids); + return $attachments; } 1; diff --git a/Bugzilla/Auth/CVS/Entries b/Bugzilla/Auth/CVS/Entries index 7484f6ce9..69b8e06b2 100644 --- a/Bugzilla/Auth/CVS/Entries +++ b/Bugzilla/Auth/CVS/Entries @@ -1,3 +1,3 @@ -/README/1.2/Thu Jul 29 02:45:38 2004//TBUGZILLA-2_20_2 +/README/1.2/Thu Jul 29 02:45:38 2004//TBUGZILLA-2_22 D/Login//// D/Verify//// diff --git a/Bugzilla/Auth/CVS/Tag b/Bugzilla/Auth/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/Auth/CVS/Tag +++ b/Bugzilla/Auth/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Auth/Login/CVS/Entries b/Bugzilla/Auth/Login/CVS/Entries index 47d6a8a74..0062a8fbd 100644 --- a/Bugzilla/Auth/Login/CVS/Entries +++ b/Bugzilla/Auth/Login/CVS/Entries @@ -1,2 +1,2 @@ -/WWW.pm/1.6.4.1/Wed Jul 27 19:08:42 2005//TBUGZILLA-2_20_2 +/WWW.pm/1.8/Sun Oct 30 21:31:29 2005//TBUGZILLA-2_22 D/WWW//// diff --git a/Bugzilla/Auth/Login/CVS/Tag b/Bugzilla/Auth/Login/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/Auth/Login/CVS/Tag +++ b/Bugzilla/Auth/Login/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Auth/Login/WWW.pm b/Bugzilla/Auth/Login/WWW.pm index f4bb102b1..29cc7fced 100644 --- a/Bugzilla/Auth/Login/WWW.pm +++ b/Bugzilla/Auth/Login/WWW.pm @@ -75,11 +75,7 @@ sub login { if (Param('sslbase') ne '' and Param('ssl') ne 'never') { Bugzilla->cgi->require_https(Param('sslbase')); } - $user->set_flags('can_logout' => $class->can_logout); - - # Compat stuff - $::userid = $userid; } else { Bugzilla->logout_request(); } diff --git a/Bugzilla/Auth/Login/WWW/CGI.pm b/Bugzilla/Auth/Login/WWW/CGI.pm index 9a83821bd..a697a623f 100644 --- a/Bugzilla/Auth/Login/WWW/CGI.pm +++ b/Bugzilla/Auth/Login/WWW/CGI.pm @@ -35,6 +35,7 @@ use Bugzilla::Config; use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::Util; +use Bugzilla::Token; sub login { my ($class, $type) = @_; @@ -70,11 +71,12 @@ sub login { # subsequent login trick_taint($ipaddr); - $dbh->do("INSERT INTO logincookies (userid, ipaddr, lastused) - VALUES (?, ?, NOW())", + my $logincookie = Bugzilla::Token::GenerateUniqueToken('logincookies', 'cookie'); + + $dbh->do("INSERT INTO logincookies (cookie, userid, ipaddr, lastused) + VALUES (?, ?, ?, NOW())", undef, - $userid, $ipaddr); - my $logincookie = $dbh->bz_last_key('logincookies', 'cookie'); + $logincookie, $userid, $ipaddr); # Remember cookie only if admin has told so # or admin didn't forbid it and user told to remember. @@ -216,7 +218,7 @@ sub logout { } } $cookie ||= $cgi->cookie("Bugzilla_logincookie"); - detaint_natural($cookie); + trick_taint($cookie); # These queries use both the cookie ID and the user ID as keys. Even # though we know the userid must match, we still check it in the SQL diff --git a/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries b/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries index 4aafea5e6..2e962b59c 100644 --- a/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries +++ b/Bugzilla/Auth/Login/WWW/CGI/CVS/Entries @@ -1,2 +1,2 @@ -/Cookie.pm/1.3/Tue Mar 22 22:41:07 2005//TBUGZILLA-2_20_2 +/Cookie.pm/1.3/Tue Mar 22 22:41:07 2005//TBUGZILLA-2_22 D diff --git a/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag b/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag +++ b/Bugzilla/Auth/Login/WWW/CGI/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Auth/Login/WWW/CVS/Entries b/Bugzilla/Auth/Login/WWW/CVS/Entries index 85a7c2b7e..038f06682 100644 --- a/Bugzilla/Auth/Login/WWW/CVS/Entries +++ b/Bugzilla/Auth/Login/WWW/CVS/Entries @@ -1,3 +1,3 @@ -/CGI.pm/1.12.2.2/Mon Jan 9 19:09:46 2006//TBUGZILLA-2_20_2 -/Env.pm/1.4.2.2/Tue Feb 21 16:19:57 2006//TBUGZILLA-2_20_2 +/CGI.pm/1.16/Mon Jan 9 19:07:25 2006//TBUGZILLA-2_22 +/Env.pm/1.6.2.1/Tue Feb 21 16:15:41 2006//TBUGZILLA-2_22 D/CGI//// diff --git a/Bugzilla/Auth/Login/WWW/CVS/Tag b/Bugzilla/Auth/Login/WWW/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/Auth/Login/WWW/CVS/Tag +++ b/Bugzilla/Auth/Login/WWW/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Auth/Login/WWW/Env.pm b/Bugzilla/Auth/Login/WWW/Env.pm index 105444ef0..f1f72ca30 100644 --- a/Bugzilla/Auth/Login/WWW/Env.pm +++ b/Bugzilla/Auth/Login/WWW/Env.pm @@ -39,6 +39,7 @@ sub login { my $matched_userid = ''; my $matched_extern_id = ''; my $disabledtext = ''; + my $new_login_name = 0; my $dbh = Bugzilla->dbh; my $sth; @@ -120,6 +121,7 @@ sub login { insert_new_user($env_email, $env_realname, '*'); my $new_user = Bugzilla::User->new_from_login($env_email); $matched_userid = $new_user->id; + $new_login_name = $matched_userid; } } } @@ -145,9 +147,16 @@ sub login { ($env_realname || $this_realname), $matched_userid); $sth->execute; + $new_login_name = $matched_userid; } } + # If the login name may be new, make sure the regexp groups are current + if ($new_login_name) { + my $userprofile = new Bugzilla::User($matched_userid); + $userprofile->derive_regexp_groups; + } + # Now we throw an error if the user has been disabled if ($disabledtext) { ThrowUserError("account_disabled", diff --git a/Bugzilla/Auth/Verify/CVS/Entries b/Bugzilla/Auth/Verify/CVS/Entries index 86741264d..3a8b4ecf5 100644 --- a/Bugzilla/Auth/Verify/CVS/Entries +++ b/Bugzilla/Auth/Verify/CVS/Entries @@ -1,3 +1,3 @@ -/DB.pm/1.5.2.1/Wed Jul 13 04:02:21 2005//TBUGZILLA-2_20_2 -/LDAP.pm/1.6.2.1/Fri Mar 3 12:23:23 2006//TBUGZILLA-2_20_2 +/DB.pm/1.6/Wed Jul 13 03:57:02 2005//TBUGZILLA-2_22 +/LDAP.pm/1.6.4.1/Fri Mar 3 12:21:20 2006//TBUGZILLA-2_22 D diff --git a/Bugzilla/Auth/Verify/CVS/Tag b/Bugzilla/Auth/Verify/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/Auth/Verify/CVS/Tag +++ b/Bugzilla/Auth/Verify/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 3b81bd05c..8e937ff72 100755 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -24,6 +24,7 @@ # Dave Miller <justdave@bugzilla.org> # Max Kanat-Alexander <mkanat@bugzilla.org> # Frédéric Buclin <LpSolit@gmail.com> +# Lance Larsh <lance.larsh@oracle.com> package Bugzilla::Bug; @@ -36,11 +37,11 @@ use vars qw($legal_keywords @legal_platform use CGI::Carp qw(fatalsToBrowser); -use Bugzilla; use Bugzilla::Attachment; use Bugzilla::BugMail; use Bugzilla::Config; use Bugzilla::Constants; +use Bugzilla::Field; use Bugzilla::Flag; use Bugzilla::FlagType; use Bugzilla::User; @@ -50,12 +51,24 @@ use Bugzilla::Error; use base qw(Exporter); @Bugzilla::Bug::EXPORT = qw( AppendComment ValidateComment - bug_alias_to_id ValidateBugAlias + bug_alias_to_id ValidateBugAlias ValidateBugID RemoveVotes CheckIfVotedConfirmed + LogActivityEntry ); +##################################################################### +# Constants +##################################################################### + +# Used in LogActivityEntry(). Gives the max length of lines in the +# activity table. +use constant MAX_LINE_LENGTH => 254; + +# Used in ValidateComment(). Gives the max length allowed for a comment. use constant MAX_COMMENT_LENGTH => 65535; +##################################################################### + sub fields { # Keep this ordering in sync with bugzilla.dtd my @fields = qw(bug_id alias creation_ts short_desc delta_ts @@ -65,7 +78,7 @@ sub fields { bug_status resolution bug_file_loc status_whiteboard keywords priority bug_severity target_milestone - dependson blocked votes + dependson blocked votes everconfirmed reporter assigned_to cc ); @@ -159,13 +172,13 @@ sub initBug { bug_file_loc, short_desc, target_milestone, qa_contact AS qa_contact_id, status_whiteboard, " . $dbh->sql_date_format('creation_ts', '%Y.%m.%d %H:%i') . ", - delta_ts, COALESCE(SUM(votes.vote_count), 0), + delta_ts, COALESCE(SUM(votes.vote_count), 0), everconfirmed, reporter_accessible, cclist_accessible, estimated_time, remaining_time, " . $dbh->sql_date_format('deadline', '%Y-%m-%d') . " FROM bugs LEFT JOIN votes - USING (bug_id) + ON bugs.bug_id = votes.bug_id INNER JOIN components ON components.id = bugs.component_id INNER JOIN products @@ -178,7 +191,7 @@ sub initBug { rep_platform, op_sys, bug_status, resolution, priority, bug_severity, bugs.component_id, components.name, assigned_to, reporter, bug_file_loc, short_desc, target_milestone, - qa_contact, status_whiteboard, creation_ts, + qa_contact, status_whiteboard, everconfirmed, creation_ts, delta_ts, reporter_accessible, cclist_accessible, estimated_time, remaining_time, deadline'); @@ -197,7 +210,7 @@ sub initBug { "assigned_to_id", "reporter_id", "bug_file_loc", "short_desc", "target_milestone", "qa_contact_id", "status_whiteboard", - "creation_ts", "delta_ts", "votes", + "creation_ts", "delta_ts", "votes", "everconfirmed", "reporter_accessible", "cclist_accessible", "estimated_time", "remaining_time", "deadline") { @@ -327,7 +340,7 @@ sub actual_time { return $self->{'actual_time'}; } -sub any_flags_requesteeble () { +sub any_flags_requesteeble { my ($self) = @_; return $self->{'any_flags_requesteeble'} if exists $self->{'any_flags_requesteeble'}; @@ -339,15 +352,17 @@ sub any_flags_requesteeble () { return $self->{'any_flags_requesteeble'}; } -sub attachments () { +sub attachments { my ($self) = @_; return $self->{'attachments'} if exists $self->{'attachments'}; return [] if $self->{'error'}; - $self->{'attachments'} = Bugzilla::Attachment::query($self->{bug_id}); + + $self->{'attachments'} = + Bugzilla::Attachment->get_attachments_by_bug($self->bug_id); return $self->{'attachments'}; } -sub assigned_to () { +sub assigned_to { my ($self) = @_; return $self->{'assigned_to'} if exists $self->{'assigned_to'}; $self->{'assigned_to_id'} = 0 if $self->{'error'}; @@ -355,7 +370,7 @@ sub assigned_to () { return $self->{'assigned_to'}; } -sub blocked () { +sub blocked { my ($self) = @_; return $self->{'blocked'} if exists $self->{'blocked'}; return [] if $self->{'error'}; @@ -366,7 +381,7 @@ sub blocked () { # Even bugs in an error state always have a bug_id. sub bug_id { $_[0]->{'bug_id'}; } -sub cc () { +sub cc { my ($self) = @_; return $self->{'cc'} if exists $self->{'cc'}; return [] if $self->{'error'}; @@ -384,7 +399,7 @@ sub cc () { return $self->{'cc'}; } -sub dependson () { +sub dependson { my ($self) = @_; return $self->{'dependson'} if exists $self->{'dependson'}; return [] if $self->{'error'}; @@ -393,7 +408,7 @@ sub dependson () { return $self->{'dependson'}; } -sub flag_types () { +sub flag_types { my ($self) = @_; return $self->{'flag_types'} if exists $self->{'flag_types'}; return [] if $self->{'error'}; @@ -418,7 +433,7 @@ sub flag_types () { return $self->{'flag_types'}; } -sub keywords () { +sub keywords { my ($self) = @_; return $self->{'keywords'} if exists $self->{'keywords'}; return () if $self->{'error'}; @@ -444,7 +459,7 @@ sub longdescs { return $self->{'longdescs'}; } -sub milestoneurl () { +sub milestoneurl { my ($self) = @_; return $self->{'milestoneurl'} if exists $self->{'milestoneurl'}; return '' if $self->{'error'}; @@ -452,7 +467,7 @@ sub milestoneurl () { return $self->{'milestoneurl'}; } -sub qa_contact () { +sub qa_contact { my ($self) = @_; return $self->{'qa_contact'} if exists $self->{'qa_contact'}; return undef if $self->{'error'}; @@ -468,7 +483,7 @@ sub qa_contact () { return $self->{'qa_contact'}; } -sub reporter () { +sub reporter { my ($self) = @_; return $self->{'reporter'} if exists $self->{'reporter'}; $self->{'reporter_id'} = 0 if $self->{'error'}; @@ -477,7 +492,7 @@ sub reporter () { } -sub show_attachment_flags () { +sub show_attachment_flags { my ($self) = @_; return $self->{'show_attachment_flags'} if exists $self->{'show_attachment_flags'}; @@ -530,25 +545,23 @@ sub groups { # user_group_map record putting the user in that group. # The LEFT JOINs are checking for record existence. # + my $grouplist = Bugzilla->user->groups_as_string; my $sth = $dbh->prepare( "SELECT DISTINCT groups.id, name, description," . - " bug_group_map.group_id IS NOT NULL," . - " user_group_map.group_id IS NOT NULL," . + " CASE WHEN bug_group_map.group_id IS NOT NULL" . + " THEN 1 ELSE 0 END," . + " CASE WHEN groups.id IN($grouplist) THEN 1 ELSE 0 END," . " isactive, membercontrol, othercontrol" . " FROM groups" . " LEFT JOIN bug_group_map" . " ON bug_group_map.group_id = groups.id" . " AND bug_id = ?" . - " LEFT JOIN user_group_map" . - " ON user_group_map.group_id = groups.id" . - " AND user_id = ?" . - " AND isbless = 0" . " LEFT JOIN group_control_map" . " ON group_control_map.group_id = groups.id" . " AND group_control_map.product_id = ? " . " WHERE isbuggroup = 1" . " ORDER BY description"); - $sth->execute($self->{'bug_id'}, Bugzilla->user->id, + $sth->execute($self->{'bug_id'}, $self->{'product_id'}); while (my ($groupid, $name, $description, $ison, $ingroup, $isactive, @@ -639,7 +652,7 @@ sub choices { next; } - if (!&::CanEnterProduct($product)) { + if (!Bugzilla->user->can_enter_product($product)) { # If we're using bug groups to restrict entry on products, and # this product has an entry group, and the user is not in that # group, we don't want to include that product in this list. @@ -681,7 +694,7 @@ sub choices { # the alias. # Queries the database for the bug with a given alias, and returns # the ID of the bug if it exists or the undefined value if it doesn't. -sub bug_alias_to_id ($) { +sub bug_alias_to_id { my ($alias) = @_; return undef unless Param("usebugaliases"); my $dbh = Bugzilla->dbh; @@ -694,7 +707,7 @@ sub bug_alias_to_id ($) { # Subroutines ##################################################################### -sub AppendComment ($$$;$$$) { +sub AppendComment { my ($bugid, $whoid, $comment, $isprivate, $timestamp, $work_time) = @_; $work_time ||= 0; my $dbh = Bugzilla->dbh; @@ -773,11 +786,9 @@ sub GetComments { my @comments; my $sth = $dbh->prepare( "SELECT profiles.realname AS name, profiles.login_name AS email, - " . $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i') . " + " . $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i:%s') . " AS time, longdescs.thetext AS body, longdescs.work_time, - isprivate, already_wrapped, - " . $dbh->sql_date_format('longdescs.bug_when', '%Y%m%d%H%i%s') . " - AS bug_when + isprivate, already_wrapped FROM longdescs, profiles WHERE profiles.userid = longdescs.who AND longdescs.bug_id = ? @@ -787,10 +798,6 @@ sub GetComments { while (my $comment_ref = $sth->fetchrow_hashref()) { my %comment = %$comment_ref; - # Can't use "when" as a field name in MySQL - $comment{'when'} = $comment{'bug_when'}; - delete($comment{'bug_when'}); - $comment{'email'} .= Param('emailsuffix'); $comment{'name'} = $comment{'name'} || $comment{'email'}; @@ -804,6 +811,155 @@ sub GetComments { return \@comments; } +# Get the activity of a bug, starting from $starttime (if given). +# This routine assumes ValidateBugID has been previously called. +sub GetBugActivity { + my ($id, $starttime) = @_; + my $dbh = Bugzilla->dbh; + + # Arguments passed to the SQL query. + my @args = ($id); + + # Only consider changes since $starttime, if given. + my $datepart = ""; + if (defined $starttime) { + trick_taint($starttime); + push (@args, $starttime); + $datepart = "AND bugs_activity.bug_when > ?"; + } + + # Only includes attachments the user is allowed to see. + my $suppjoins = ""; + my $suppwhere = ""; + if (Param("insidergroup") && !UserInGroup(Param('insidergroup'))) { + $suppjoins = "LEFT JOIN attachments + ON attachments.attach_id = bugs_activity.attach_id"; + $suppwhere = "AND COALESCE(attachments.isprivate, 0) = 0"; + } + + my $query = " + SELECT COALESCE(fielddefs.description, " + # This is a hack - PostgreSQL requires both COALESCE + # arguments to be of the same type, and this is the only + # way supported by both MySQL 3 and PostgreSQL to convert + # an integer to a string. MySQL 4 supports CAST. + . $dbh->sql_string_concat('bugs_activity.fieldid', q{''}) . + "), fielddefs.name, bugs_activity.attach_id, " . + $dbh->sql_date_format('bugs_activity.bug_when', '%Y.%m.%d %H:%i:%s') . + ", bugs_activity.removed, bugs_activity.added, profiles.login_name + FROM bugs_activity + $suppjoins + LEFT JOIN fielddefs + ON bugs_activity.fieldid = fielddefs.fieldid + INNER JOIN profiles + ON profiles.userid = bugs_activity.who + WHERE bugs_activity.bug_id = ? + $datepart + $suppwhere + ORDER BY bugs_activity.bug_when"; + + my $list = $dbh->selectall_arrayref($query, undef, @args); + + my @operations; + my $operation = {}; + my $changes = []; + my $incomplete_data = 0; + + foreach my $entry (@$list) { + my ($field, $fieldname, $attachid, $when, $removed, $added, $who) = @$entry; + my %change; + my $activity_visible = 1; + + # check if the user should see this field's activity + if ($fieldname eq 'remaining_time' + || $fieldname eq 'estimated_time' + || $fieldname eq 'work_time' + || $fieldname eq 'deadline') + { + $activity_visible = UserInGroup(Param('timetrackinggroup')) ? 1 : 0; + } else { + $activity_visible = 1; + } + + if ($activity_visible) { + # This gets replaced with a hyperlink in the template. + $field =~ s/^Attachment// if $attachid; + + # Check for the results of an old Bugzilla data corruption bug + $incomplete_data = 1 if ($added =~ /^\?/ || $removed =~ /^\?/); + + # An operation, done by 'who' at time 'when', has a number of + # 'changes' associated with it. + # If this is the start of a new operation, store the data from the + # previous one, and set up the new one. + if ($operation->{'who'} + && ($who ne $operation->{'who'} + || $when ne $operation->{'when'})) + { + $operation->{'changes'} = $changes; + push (@operations, $operation); + + # Create new empty anonymous data structures. + $operation = {}; + $changes = []; + } + + $operation->{'who'} = $who; + $operation->{'when'} = $when; + + $change{'field'} = $field; + $change{'fieldname'} = $fieldname; + $change{'attachid'} = $attachid; + $change{'removed'} = $removed; + $change{'added'} = $added; + push (@$changes, \%change); + } + } + + if ($operation->{'who'}) { + $operation->{'changes'} = $changes; + push (@operations, $operation); + } + + return(\@operations, $incomplete_data); +} + +# Update the bugs_activity table to reflect changes made in bugs. +sub LogActivityEntry { + my ($i, $col, $removed, $added, $whoid, $timestamp) = @_; + my $dbh = Bugzilla->dbh; + # in the case of CCs, deps, and keywords, there's a possibility that someone + # might try to add or remove a lot of them at once, which might take more + # space than the activity table allows. We'll solve this by splitting it + # into multiple entries if it's too long. + while ($removed || $added) { + my ($removestr, $addstr) = ($removed, $added); + if (length($removestr) > MAX_LINE_LENGTH) { + my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH); + $removestr = substr($removed, 0, $commaposition); + $removed = substr($removed, $commaposition); + $removed =~ s/^[,\s]+//; # remove any comma or space + } else { + $removed = ""; # no more entries + } + if (length($addstr) > MAX_LINE_LENGTH) { + my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH); + $addstr = substr($added, 0, $commaposition); + $added = substr($added, $commaposition); + $added =~ s/^[,\s]+//; # remove any comma or space + } else { + $added = ""; # no more entries + } + trick_taint($addstr); + trick_taint($removestr); + my $fieldid = get_field_id($col); + $dbh->do("INSERT INTO bugs_activity + (bug_id, who, bug_when, fieldid, removed, added) + VALUES (?, ?, ?, ?, ?, ?)", + undef, ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr)); + } +} + # CountOpenDependencies counts the number of open dependent bugs for a # list of bugs and returns a list of bug_id's and their dependency count # It takes one parameter: @@ -830,7 +986,7 @@ sub CountOpenDependencies { return @dependencies; } -sub ValidateComment ($) { +sub ValidateComment { my ($comment) = @_; if (defined($comment) && length($comment) > MAX_COMMENT_LENGTH) { @@ -851,7 +1007,7 @@ sub RemoveVotes { "products.votesperuser, products.maxvotesperbug " . "FROM profiles " . "LEFT JOIN votes ON profiles.userid = votes.who " . - "LEFT JOIN bugs USING(bug_id) " . + "LEFT JOIN bugs ON votes.bug_id = bugs.bug_id " . "LEFT JOIN products ON products.id = bugs.product_id " . "WHERE votes.bug_id = ? " . $whopart); $sth->execute($id); @@ -918,7 +1074,7 @@ sub RemoveVotes { $substs{"count"} = $removedvotes . "\n " . $newvotestext; - my $msg = PerformSubsts(Param("voteremovedmail"), \%substs); + my $msg = perform_substs(Param("voteremovedmail"), \%substs); Bugzilla::BugMail::MessageToMTA($msg); } my $votes = $dbh->selectrow_array("SELECT SUM(vote_count) " . @@ -946,7 +1102,7 @@ sub CheckIfVotedConfirmed { my $ret = 0; if ($votes >= $votestoconfirm && !$everconfirmed) { if ($status eq 'UNCONFIRMED') { - my $fieldid = &::GetFieldID("bug_status"); + my $fieldid = get_field_id("bug_status"); $dbh->do("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1, " . "delta_ts = ? WHERE bug_id = ?", undef, ($timestamp, $id)); @@ -960,7 +1116,7 @@ sub CheckIfVotedConfirmed { "WHERE bug_id = ?", undef, ($timestamp, $id)); } - my $fieldid = &::GetFieldID("everconfirmed"); + my $fieldid = get_field_id("everconfirmed"); $dbh->do("INSERT INTO bugs_activity " . "(bug_id, who, bug_when, fieldid, removed, added) " . "VALUES (?, ?, ?, ?, ?, ?)", @@ -979,6 +1135,50 @@ sub CheckIfVotedConfirmed { # Field Validation # +# Validates and verifies a bug ID, making sure the number is a +# positive integer, that it represents an existing bug in the +# database, and that the user is authorized to access that bug. +# We detaint the number here, too. +sub ValidateBugID { + my ($id, $field) = @_; + my $dbh = Bugzilla->dbh; + my $user = Bugzilla->user; + + # Get rid of white-space around the ID. + $id = trim($id); + + # If the ID isn't a number, it might be an alias, so try to convert it. + my $alias = $id; + if (!detaint_natural($id)) { + $id = bug_alias_to_id($alias); + $id || ThrowUserError("invalid_bug_id_or_alias", + {'bug_id' => $alias, + 'field' => $field }); + } + + # Modify the calling code's original variable to contain the trimmed, + # converted-from-alias ID. + $_[0] = $id; + + # First check that the bug exists + $dbh->selectrow_array("SELECT bug_id FROM bugs WHERE bug_id = ?", undef, $id) + || ThrowUserError("invalid_bug_id_non_existent", {'bug_id' => $id}); + + return if (defined $field && ($field eq "dependson" || $field eq "blocked")); + + return if $user->can_see_bug($id); + + # The user did not pass any of the authorization tests, which means they + # are not authorized to see the bug. Display an error and stop execution. + # The error the user sees depends on whether or not they are logged in + # (i.e. $user->id contains the user's positive integer ID). + if ($user->id) { + ThrowUserError("bug_access_denied", {'bug_id' => $id}); + } else { + ThrowUserError("bug_access_query", {'bug_id' => $id}); + } +} + # ValidateBugAlias: # Check that the bug alias is valid and not used by another bug. If # curr_id is specified, verify the alias is not used for any other @@ -1027,7 +1227,7 @@ sub ValidateBugAlias { } # Validate and return a hash of dependencies -sub ValidateDependencies($$$) { +sub ValidateDependencies { my $fields = {}; $fields->{'dependson'} = shift; $fields->{'blocked'} = shift; diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 98420f51d..e4a19d65f 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -26,23 +26,25 @@ # Bradley Baetz <bbaetz@student.usyd.edu.au> # J. Paul Reed <preed@sigkill.com> # Gervase Markham <gerv@gerv.net> +# Byron Jones <bugzilla@glob.com.au> use strict; package Bugzilla::BugMail; -use base qw(Exporter); -@Bugzilla::BugMail::EXPORT = qw( - PerformSubsts -); - +use Bugzilla::User; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); use Bugzilla::Util; -use Bugzilla::User; +use Date::Parse; +use Date::Format; use Mail::Mailer; use Mail::Header; +use MIME::Base64; +use MIME::QuotedPrint; +use MIME::Parser; +use Mail::Address; # We need these strings for the X-Bugzilla-Reasons header # Note: this hash uses "," rather than "=>" to avoid auto-quoting of the LHS. @@ -64,20 +66,6 @@ if ($2) { $sitespec = "-$2$sitespec"; # Put the port number back in, before the '@' } -# I got sick of adding &:: to everything. -# However, 'Yuck!' -# I can't require, cause that pulls it in only once, so it won't then be -# in the global package, and these aren't modules, so I can't use globals.pl -# Remove this evilness once our stuff uses real packages. -sub AUTOLOAD { - no strict 'refs'; - use vars qw($AUTOLOAD); - my $subName = $AUTOLOAD; - $subName =~ s/.*::/::/; # remove package name - *$AUTOLOAD = \&$subName; - goto &$AUTOLOAD; -} - # This is run when we load the package if (open(NOMAIL, '<', "$datadir/nomail")) { while (<NOMAIL>) { @@ -117,46 +105,47 @@ END # All the names are email addresses, not userids # values are scalars, except for cc, which is a list # This hash usually comes from the "mailrecipients" var in a template call. -sub Send($;$) { +sub Send { my ($id, $forced) = (@_); # This only works in a sub. Probably something to do with the # require abuse we do. - GetVersionTable(); + &::GetVersionTable(); return ProcessOneBug($id, $forced); } -sub ProcessOneBug($$) { +sub ProcessOneBug { my ($id, $forced) = (@_); my @headerlist; - my %values; my %defmailhead; my %fielddescription; my $msg = ""; my $dbh = Bugzilla->dbh; - - SendSQL("SELECT name, description, mailhead FROM fielddefs " . - "ORDER BY sortkey"); - while (MoreSQLData()) { - my ($field, $description, $mailhead) = (FetchSQLData()); + + my $fields = $dbh->selectall_arrayref('SELECT name, description, mailhead + FROM fielddefs ORDER BY sortkey'); + + foreach my $fielddef (@$fields) { + my ($field, $description, $mailhead) = @$fielddef; push(@headerlist, $field); $defmailhead{$field} = $mailhead; $fielddescription{$field} = $description; } - SendSQL("SELECT " . join(',', @::log_columns) . ", lastdiffed, now() " . - "FROM bugs WHERE bug_id = $id"); - my @row = FetchSQLData(); - foreach my $i (@::log_columns) { - $values{$i} = shift(@row); - } - $values{product} = get_product_name($values{product_id}); - $values{component} = get_component_name($values{component_id}); - my ($start, $end) = (@row); + my %values = %{$dbh->selectrow_hashref( + 'SELECT ' . join(',', @::log_columns) . ', + lastdiffed AS start, LOCALTIMESTAMP(0) AS end + FROM bugs WHERE bug_id = ?', + undef, $id)}; + + $values{product} = &::get_product_name($values{product_id}); + $values{component} = &::get_component_name($values{component_id}); + + my ($start, $end) = ($values{start}, $values{end}); # User IDs of people in various roles. More than one person can 'have' a # role, if the person in that role has changed, or people are watching. @@ -184,24 +173,24 @@ sub ProcessOneBug($$) { # At this point, we don't care if there are duplicates in these arrays. my $changer = $forced->{'changer'}; if ($forced->{'owner'}) { - push (@assignees, DBNameToIdAndCheck($forced->{'owner'})); + push (@assignees, &::DBNameToIdAndCheck($forced->{'owner'})); } if ($forced->{'qacontact'}) { - push (@qa_contacts, DBNameToIdAndCheck($forced->{'qacontact'})); + push (@qa_contacts, &::DBNameToIdAndCheck($forced->{'qacontact'})); } if ($forced->{'cc'}) { foreach my $cc (@{$forced->{'cc'}}) { - push(@ccs, DBNameToIdAndCheck($cc)); + push(@ccs, &::DBNameToIdAndCheck($cc)); } } # Convert to names, for later display - $values{'assigned_to'} = DBID_to_name($values{'assigned_to'}); - $values{'reporter'} = DBID_to_name($values{'reporter'}); + $values{'assigned_to'} = &::DBID_to_name($values{'assigned_to'}); + $values{'reporter'} = &::DBID_to_name($values{'reporter'}); if ($values{'qa_contact'}) { - $values{'qa_contact'} = DBID_to_name($values{'qa_contact'}); + $values{'qa_contact'} = &::DBID_to_name($values{'qa_contact'}); } $values{'cc'} = join(', ', @cc_login_names); $values{'estimated_time'} = format_time_decimal($values{'estimated_time'}); @@ -210,47 +199,47 @@ sub ProcessOneBug($$) { $values{'deadline'} = time2str("%Y-%m-%d", str2time($values{'deadline'})); } - my @dependslist; - SendSQL("SELECT dependson FROM dependencies WHERE - blocked = $id ORDER BY dependson"); - while (MoreSQLData()) { - push(@dependslist, FetchOneColumn()); - } - $values{'dependson'} = join(",", @dependslist); + my $dependslist = $dbh->selectcol_arrayref( + 'SELECT dependson FROM dependencies + WHERE blocked = ? ORDER BY dependson', + undef, ($id)); - my @blockedlist; - SendSQL("SELECT blocked FROM dependencies WHERE - dependson = $id ORDER BY blocked"); - while (MoreSQLData()) { - push(@blockedlist, FetchOneColumn()); - } - $values{'blocked'} = join(",", @blockedlist); + $values{'dependson'} = join(",", @$dependslist); + + my $blockedlist = $dbh->selectcol_arrayref( + 'SELECT blocked FROM dependencies + WHERE dependson = ? ORDER BY blocked', + undef, ($id)); + + $values{'blocked'} = join(",", @$blockedlist); - my @diffs; + my @args = ($id); # If lastdiffed is NULL, then we don't limit the search on time. - my $when_restriction = $start ? - " AND bug_when > '$start' AND bug_when <= '$end'" : ''; - SendSQL("SELECT profiles.login_name, fielddefs.description, " . - " bug_when, removed, added, attach_id, fielddefs.name " . - "FROM bugs_activity, fielddefs, profiles " . - "WHERE bug_id = $id " . - " AND fielddefs.fieldid = bugs_activity.fieldid " . - " AND profiles.userid = who " . - $when_restriction . - "ORDER BY bug_when" - ); - - while (MoreSQLData()) { - my @row = FetchSQLData(); - push(@diffs, \@row); + my $when_restriction = ''; + if ($start) { + $when_restriction = ' AND bug_when > ? AND bug_when <= ?'; + push @args, ($start, $end); } + + my $diffs = $dbh->selectall_arrayref( + "SELECT profiles.login_name, fielddefs.description, + bugs_activity.bug_when, bugs_activity.removed, + bugs_activity.added, bugs_activity.attach_id, fielddefs.name + FROM bugs_activity + INNER JOIN fielddefs + ON fielddefs.fieldid = bugs_activity.fieldid + INNER JOIN profiles + ON profiles.userid = bugs_activity.who + WHERE bugs_activity.bug_id = ? + $when_restriction + ORDER BY bugs_activity.bug_when", undef, @args); my $difftext = ""; my $diffheader = ""; my @diffparts; my $lastwho = ""; - foreach my $ref (@diffs) { + foreach my $ref (@$diffs) { my ($who, $what, $when, $old, $new, $attachid, $fieldname) = (@$ref); my $diffpart = {}; if ($who ne $lastwho) { @@ -266,9 +255,9 @@ sub ProcessOneBug($$) { $new = format_time_decimal($new); } if ($attachid) { - SendSQL("SELECT isprivate FROM attachments - WHERE attach_id = $attachid"); - $diffpart->{'isprivate'} = FetchOneColumn(); + ($diffpart->{'isprivate'}) = $dbh->selectrow_array( + 'SELECT isprivate FROM attachments WHERE attach_id = ?', + undef, ($attachid)); } $difftext = FormatTriple($what, $old, $new); $diffpart->{'header'} = $diffheader; @@ -279,26 +268,29 @@ sub ProcessOneBug($$) { my $deptext = ""; - SendSQL("SELECT bugs_activity.bug_id, bugs.short_desc, fielddefs.name, " . - " removed, added " . - "FROM bugs_activity, bugs, dependencies, fielddefs ". - "WHERE bugs_activity.bug_id = dependencies.dependson " . - " AND bugs.bug_id = bugs_activity.bug_id ". - " AND dependencies.blocked = $id " . - " AND fielddefs.fieldid = bugs_activity.fieldid" . - " AND (fielddefs.name = 'bug_status' " . - " OR fielddefs.name = 'resolution') " . - $when_restriction . - "ORDER BY bug_when, bug_id"); - + my $dependency_diffs = $dbh->selectall_arrayref( + "SELECT bugs_activity.bug_id, bugs.short_desc, fielddefs.name, + bugs_activity.removed, bugs_activity.added + FROM bugs_activity + INNER JOIN bugs + ON bugs.bug_id = bugs_activity.bug_id + INNER JOIN dependencies + ON bugs_activity.bug_id = dependencies.dependson + INNER JOIN fielddefs + ON fielddefs.fieldid = bugs_activity.fieldid + WHERE dependencies.blocked = ? + AND (fielddefs.name = 'bug_status' + OR fielddefs.name = 'resolution') + $when_restriction + ORDER BY bugs_activity.bug_when, bugs.bug_id", undef, @args); + my $thisdiff = ""; my $lastbug = ""; my $interestingchange = 0; - my $depbug = 0; my @depbugs; - while (MoreSQLData()) { - my ($summary, $what, $old, $new); - ($depbug, $summary, $what, $old, $new) = (FetchSQLData()); + foreach my $dependency_diff (@$dependency_diffs) { + my ($depbug, $summary, $what, $old, $new) = @$dependency_diff; + if ($depbug ne $lastbug) { if ($interestingchange) { $deptext .= $thisdiff; @@ -314,7 +306,7 @@ sub ProcessOneBug($$) { $interestingchange = 0; } $thisdiff .= FormatTriple($fielddescription{$what}, $old, $new); - if ($what eq 'bug_status' && IsOpenedState($old) ne IsOpenedState($new)) { + if ($what eq 'bug_status' && &::IsOpenedState($old) ne &::IsOpenedState($new)) { $interestingchange = 1; } @@ -334,7 +326,7 @@ sub ProcessOneBug($$) { } - my ($newcomments, $anyprivate) = GetLongDescriptionAsText($id, $start, $end); + my ($newcomments, $anyprivate) = get_comments_by_bug($id, $start, $end); ########################################################################### # Start of email filtering code @@ -348,8 +340,8 @@ sub ProcessOneBug($$) { # array of role constants. # Voters - my $voters = - $dbh->selectcol_arrayref("SELECT who FROM votes WHERE bug_id = $id"); + my $voters = $dbh->selectcol_arrayref( + "SELECT who FROM votes WHERE bug_id = ?", undef, ($id)); push(@{$recipients{$_}}, REL_VOTER) foreach (@$voters); @@ -372,7 +364,7 @@ sub ProcessOneBug($$) { # The last relevant set of people are those who are being removed from # their roles in this change. We get their names out of the diffs. - foreach my $ref (@diffs) { + foreach my $ref (@$diffs) { my ($who, $what, $when, $old, $new) = (@$ref); if ($old) { # You can't stop being the reporter, and mail isn't sent if you @@ -432,7 +424,7 @@ sub ProcessOneBug($$) { foreach my $relationship (@{$recipients{$user_id}}) { if ($user->wants_bug_mail($id, $relationship, - \@diffs, + $diffs, $newcomments, $changer)) { @@ -493,12 +485,13 @@ sub ProcessOneBug($$) { } } - $dbh->do("UPDATE bugs SET lastdiffed = '$end' WHERE bug_id = $id"); + $dbh->do('UPDATE bugs SET lastdiffed = ? WHERE bug_id = ?', + undef, ($end, $id)); return {'sent' => \@sent, 'excluded' => \@excluded}; } -sub sendMail($$$$$$$$$$$$) { +sub sendMail { my ($user, $hlRef, $relRef, $valueRef, $dmhRef, $fdRef, $diffRef, $newcomments, $anyprivate, $start, $id) = @_; @@ -611,6 +604,8 @@ sub sendMail($$$$$$$$$$$$) { } $substs{"product"} = $values{'product'}; $substs{"component"} = $values{'component'}; + $substs{"keywords"} = $values{'keywords'}; + $substs{"severity"} = $values{'bug_severity'}; $substs{"summary"} = $values{'short_desc'}; $substs{"reasonsheader"} = join(" ", map { $rel_names{$_} } @$relRef); $substs{"reasonsbody"} = $reasonsbody; @@ -625,21 +620,41 @@ sub sendMail($$$$$$$$$$$$) { my $template = Param("newchangedmail"); - my $msg = PerformSubsts($template, \%substs); + my $msg = perform_substs($template, \%substs); MessageToMTA($msg); return 1; } -sub MessageToMTA ($) { +sub MessageToMTA { my ($msg) = (@_); return if (Param('mail_delivery_method') eq "none"); + my ($header, $body) = $msg =~ /(.*?\n)\n(.*)/s ? ($1, $2) : ('', $msg); + my $headers; + + if (Param('utf8') and (!is_7bit_clean($header) or !is_7bit_clean($body))) { + ($headers, $body) = encode_message($msg); + } else { + my @header_lines = split(/\n/, $header); + $headers = new Mail::Header \@header_lines, Modify => 0; + } + + my $from = $headers->get('from'); + if (Param("mail_delivery_method") eq "sendmail" && $^O =~ /MSWin32/i) { - open(SENDMAIL, '|' . SENDMAIL_EXE . ' -t -i') || + my $cmd = '|' . SENDMAIL_EXE . ' -t -i'; + if ($from) { + # We're on Windows, thus no danger of command injection + # via $from. In other words, it is safe to embed $from. + $cmd .= qq# -f"$from"#; + } + open(SENDMAIL, $cmd) || die "Failed to execute " . SENDMAIL_EXE . ": $!\n"; - print SENDMAIL $msg; + print SENDMAIL $headers->as_string; + print SENDMAIL "\n"; + print SENDMAIL $body; close SENDMAIL; return; } @@ -647,47 +662,191 @@ sub MessageToMTA ($) { my @args; if (Param("mail_delivery_method") eq "sendmail") { push @args, "-i"; + if ($from) { + push(@args, "-f$from"); + } } if (Param("mail_delivery_method") eq "sendmail" && !Param("sendmailnow")) { push @args, "-ODeliveryMode=deferred"; } if (Param("mail_delivery_method") eq "smtp") { push @args, Server => Param("smtpserver"); + if ($from) { + $ENV{'MAILADDRESS'} = $from; + } } my $mailer = new Mail::Mailer Param("mail_delivery_method"), @args; if (Param("mail_delivery_method") eq "testfile") { $Mail::Mailer::testfile::config{outfile} = "$datadir/mailer.testfile"; } - $msg =~ /(.*?)\n\n(.*)/ms; - my @header_lines = split(/\n/, $1); - my $body = $2; - - my $headers = new Mail::Header \@header_lines, Modify => 0; $mailer->open($headers->header_hashref); print $mailer $body; $mailer->close; } -# Performs substitutions for sending out email with variables in it, -# or for inserting a parameter into some other string. -# -# Takes a string and a reference to a hash containing substitution -# variables and their values. -# -# If the hash is not specified, or if we need to substitute something -# that's not in the hash, then we will use parameters to do the -# substitution instead. -# -# Substitutions are always enclosed with '%' symbols. So they look like: -# %some_variable_name%. If "some_variable_name" is a key in the hash, then -# its value will be placed into the string. If it's not a key in the hash, -# then the value of the parameter called "some_variable_name" will be placed -# into the string. -sub PerformSubsts ($;$) { - my ($str, $substs) = (@_); - $str =~ s/%([a-z]*)%/(defined $substs->{$1} ? $substs->{$1} : Param($1))/eg; - return $str; +sub encode_qp_words { + my ($line) = (@_); + my @encoded; + foreach my $word (split / /, $line) { + if (!is_7bit_clean($word)) { + push @encoded, '=?UTF-8?Q?_' . encode_qp($word, '') . '?='; + } else { + push @encoded, $word; + } + } + return join(' ', @encoded); +} + +sub encode_message { + my ($msg) = @_; + + my $parser = MIME::Parser->new; + $parser->output_to_core(1); + $parser->tmp_to_core(1); + my $entity = $parser->parse_data($msg); + $entity = encode_message_entity($entity); + + my @header_lines = split(/\n/, $entity->header_as_string); + my $head = new Mail::Header \@header_lines, Modify => 0; + + my $body = $entity->body_as_string; + + return ($head, $body); +} + +sub encode_message_entity { + my ($entity) = @_; + + my $head = $entity->head; + + # encode the subject + + my $subject = $head->get('subject'); + if (defined $subject && !is_7bit_clean($subject)) { + $subject =~ s/[\r\n]+$//; + $head->replace('subject', encode_qp_words($subject)); + } + + # encode addresses + + foreach my $field (qw(from to cc reply-to sender errors-to)) { + my $high = $head->count($field) - 1; + foreach my $index (0..$high) { + my $value = $head->get($field, $index); + my @addresses; + my $changed = 0; + foreach my $addr (Mail::Address->parse($value)) { + my $phrase = $addr->phrase; + if (is_7bit_clean($phrase)) { + push @addresses, $addr->format; + } else { + push @addresses, encode_qp_phrase($phrase) . + ' <' . $addr->address . '>'; + $changed = 1; + } + } + $changed && $head->replace($field, join(', ', @addresses), $index); + } + } + + # process the body + + if (scalar($entity->parts)) { + my $newparts = []; + foreach my $part ($entity->parts) { + my $newpart = encode_message_entity($part); + push @$newparts, $newpart; + } + $entity->parts($newparts); + } + else { + # Extract the body from the entity, for examination + # At this point, we can rely on MIME::Tools to do our encoding for us! + my $bodyhandle = $entity->bodyhandle; + my $body = $bodyhandle->as_string; + if (!is_7bit_clean($body)) { + # count number of 7-bit chars, and use quoted-printable if more + # than half the message is 7-bit clean + my $count = ($body =~ tr/\x20-\x7E\x0A\x0D//); + if ($count > length($body) / 2) { + $head->mime_attr('Content-Transfer-Encoding' => 'quoted-printable'); + } else { + $head->mime_attr('Content-Transfer-Encoding' => 'base64'); + } + } + + # Set the content/type and charset of the part, if not set + $head->mime_attr('Content-Type' => 'text/plain') + unless defined $head->mime_attr('content-type'); + $head->mime_attr('Content-Type.charset' => 'UTF-8'); + } + + $head->fold(75); + return $entity; +} + +# Send the login name and password of the newly created account to the user. +sub MailPassword { + my ($login, $password) = (@_); + my $template = Param("passwordmail"); + my $msg = perform_substs($template, + {"mailaddress" => $login . Param('emailsuffix'), + "login" => $login, + "password" => $password}); + MessageToMTA($msg); +} + +# Get bug comments for the given period and format them to be used in emails. +sub get_comments_by_bug { + my ($id, $start, $end) = @_; + my $dbh = Bugzilla->dbh; + + my $result = ""; + my $count = 0; + my $anyprivate = 0; + + my $query = 'SELECT profiles.login_name, ' . + $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i') . ', + longdescs.thetext, longdescs.isprivate, + longdescs.already_wrapped + FROM longdescs + INNER JOIN profiles + ON profiles.userid = longdescs.who + WHERE longdescs.bug_id = ? '; + + my @args = ($id); + + # $start will be undef for new bugs, and defined for pre-existing bugs. + if ($start) { + # If $start is not NULL, obtain the count-index + # of this comment for the leading "Comment #xxx" line. + $count = $dbh->selectrow_array('SELECT COUNT(*) FROM longdescs + WHERE bug_id = ? AND bug_when <= ?', + undef, ($id, $start)); + + $query .= ' AND longdescs.bug_when > ? + AND longdescs.bug_when <= ? '; + push @args, ($start, $end); + } + + $query .= ' ORDER BY longdescs.bug_when'; + my $comments = $dbh->selectall_arrayref($query, undef, @args); + + foreach (@$comments) { + my ($who, $when, $text, $isprivate, $already_wrapped) = @$_; + if ($count) { + $result .= "\n\n------- Comment #$count from $who" . + Param('emailsuffix'). " " . format_time($when) . + " -------\n"; + } + if ($isprivate > 0 && Param('insidergroup')) { + $anyprivate = 1; + } + $result .= ($already_wrapped ? $text : wrap_comment($text)); + $count++; + } + return ($result, $anyprivate); } 1; diff --git a/Bugzilla/CGI.pm b/Bugzilla/CGI.pm index 3e86af033..bc2d39b99 100644 --- a/Bugzilla/CGI.pm +++ b/Bugzilla/CGI.pm @@ -25,9 +25,18 @@ use strict; package Bugzilla::CGI; +BEGIN { + if ($^O =~ /MSWin32/i) { + # Help CGI find the correct temp directory as the default list + # isn't Windows friendly (Bug 248988) + $ENV{'TMPDIR'} = $ENV{'TEMP'} || $ENV{'TMP'} || "$ENV{'WINDIR'}\\TEMP"; + } +} + use CGI qw(-no_xhtml -oldstyle_urls :private_tempfiles :unique_headers SERVER_PUSH); use base qw(CGI); +use CGI::Carp qw(fatalsToBrowser); use Bugzilla::Error; use Bugzilla::Util; @@ -51,8 +60,8 @@ sub new { # Make sure our outgoing cookie list is empty on each invocation $self->{Bugzilla_cookie_list} = []; - # Make sure that we don't send any charset headers - $self->charset(''); + # Send appropriate charset + $self->charset(Param('utf8') ? 'UTF-8' : ''); # Redirect to SSL if required if (Param('sslbase') ne '' and Param('ssl') eq 'always' and i_am_cgi()) { @@ -107,7 +116,7 @@ sub canonicalise_query { my $esc_key = url_quote($key); foreach my $value ($self->param($key)) { - if ($value) { + if (defined($value)) { my $esc_value = url_quote($value); push(@parameters, "$esc_key=$esc_value"); @@ -174,7 +183,7 @@ sub multipart_start { } # The various parts of Bugzilla which create cookies don't want to have to -# pass them arround to all of the callers. Instead, store them locally here, +# pass them around to all of the callers. Instead, store them locally here, # and then output as required from |header|. sub send_cookie { my $self = shift; diff --git a/Bugzilla/CVS/Entries b/Bugzilla/CVS/Entries index e184af9df..edc356b85 100644 --- a/Bugzilla/CVS/Entries +++ b/Bugzilla/CVS/Entries @@ -1,24 +1,32 @@ -/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-2_20_2 -/Attachment.pm/1.21/Thu Apr 28 02:14:26 2005//TBUGZILLA-2_20_2 -/Auth.pm/1.10.2.4/Tue Feb 21 13:47:46 2006//TBUGZILLA-2_20_2 -/Bug.pm/1.81.2.5/Wed Apr 12 22:59:46 2006//TBUGZILLA-2_20_2 -/BugMail.pm/1.39.4.6/Sat Jan 7 16:23:10 2006//TBUGZILLA-2_20_2 -/CGI.pm/1.16.2.1/Thu Sep 22 16:57:59 2005//TBUGZILLA-2_20_2 -/Chart.pm/1.8.4.1/Thu Jan 26 22:35:18 2006//TBUGZILLA-2_20_2 -/Config.pm/1.43.2.8/Sun Apr 23 02:47:04 2006//TBUGZILLA-2_20_2 -/Constants.pm/1.25.2.2/Tue Feb 21 00:12:02 2006//TBUGZILLA-2_20_2 -/DB.pm/1.56.2.7/Thu Jan 5 00:16:19 2006//TBUGZILLA-2_20_2 -/Error.pm/1.13.4.1/Wed Jul 27 19:08:41 2005//TBUGZILLA-2_20_2 -/Flag.pm/1.45.2.4/Fri Dec 30 00:34:50 2005//TBUGZILLA-2_20_2 -/FlagType.pm/1.19.2.2/Tue Oct 18 17:48:08 2005//TBUGZILLA-2_20_2 -/Group.pm/1.1/Fri Feb 18 22:42:07 2005//TBUGZILLA-2_20_2 -/Search.pm/1.99.2.11/Wed Mar 8 22:09:09 2006//TBUGZILLA-2_20_2 -/Series.pm/1.9/Wed Mar 16 00:27:15 2005//TBUGZILLA-2_20_2 -/Template.pm/1.26.2.4/Mon Jan 9 19:02:52 2006//TBUGZILLA-2_20_2 -/Token.pm/1.31.2.1/Sun Nov 13 17:36:20 2005//TBUGZILLA-2_20_2 -/User.pm/1.61.2.20/Tue Mar 14 07:46:03 2006//TBUGZILLA-2_20_2 -/Util.pm/1.28.2.4/Sun Jan 8 19:54:35 2006//TBUGZILLA-2_20_2 +/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-2_22 +/Attachment.pm/1.30/Mon Jan 9 20:38:57 2006//TBUGZILLA-2_22 +/Auth.pm/1.12.2.1/Tue Feb 21 13:48:25 2006//TBUGZILLA-2_22 +/Bug.pm/1.104.2.2/Wed Apr 12 22:57:53 2006//TBUGZILLA-2_22 +/BugMail.pm/1.62/Sat Jan 7 16:16:53 2006//TBUGZILLA-2_22 +/CGI.pm/1.20.2.1/Thu Mar 30 22:23:07 2006//TBUGZILLA-2_22 +/Chart.pm/1.11/Thu Jan 26 22:33:33 2006//TBUGZILLA-2_22 +/Classification.pm/1.9/Fri Oct 28 10:33:18 2005//TBUGZILLA-2_22 +/Component.pm/1.9.2.1/Fri Mar 3 12:21:19 2006//TBUGZILLA-2_22 +/Config.pm/1.51.2.2/Sun Apr 23 02:45:09 2006//TBUGZILLA-2_22 +/Constants.pm/1.34/Tue Feb 21 00:05:57 2006//TBUGZILLA-2_22 +/DB.pm/1.71/Thu Jan 5 00:16:20 2006//TBUGZILLA-2_22 +/Error.pm/1.15/Thu Oct 13 23:58:24 2005//TBUGZILLA-2_22 +/Field.pm/1.9/Fri Jan 6 14:38:36 2006//TBUGZILLA-2_22 +/Flag.pm/1.59.2.1/Tue Apr 4 21:55:37 2006//TBUGZILLA-2_22 +/FlagType.pm/1.23/Tue Oct 18 17:45:48 2005//TBUGZILLA-2_22 +/Group.pm/1.10/Fri Oct 28 10:33:18 2005//TBUGZILLA-2_22 +/Milestone.pm/1.7/Thu Oct 6 18:45:46 2005//TBUGZILLA-2_22 +/Product.pm/1.15/Fri Oct 28 10:33:18 2005//TBUGZILLA-2_22 +/Search.pm/1.121.2.1/Wed Mar 8 21:59:46 2006//TBUGZILLA-2_22 +/Series.pm/1.11/Fri Sep 23 14:24:35 2005//TBUGZILLA-2_22 +/Template.pm/1.41/Sun Jan 22 21:37:37 2006//TBUGZILLA-2_22 +/Token.pm/1.39/Tue Jan 3 14:45:02 2006//TBUGZILLA-2_22 +/User.pm/1.101.2.3/Tue Mar 14 07:45:54 2006//TBUGZILLA-2_22 +/Util.pm/1.45/Sun Jan 8 19:56:04 2006//TBUGZILLA-2_22 +/Version.pm/1.7/Thu Oct 6 18:45:46 2005//TBUGZILLA-2_22 D/Auth//// +D/Config//// D/DB//// +D/Search//// D/Template//// D/User//// diff --git a/Bugzilla/CVS/Entries.Log b/Bugzilla/CVS/Entries.Log deleted file mode 100644 index e2503589d..000000000 --- a/Bugzilla/CVS/Entries.Log +++ /dev/null @@ -1,4 +0,0 @@ -A D/Config//// -A D/Search//// -R D/Search//// -R D/Config//// diff --git a/Bugzilla/CVS/Tag b/Bugzilla/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/CVS/Tag +++ b/Bugzilla/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Chart.pm b/Bugzilla/Chart.pm index 47c3f1542..a0853d508 100644 --- a/Bugzilla/Chart.pm +++ b/Bugzilla/Chart.pm @@ -18,6 +18,8 @@ # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> +# Albert Ting <altlst@sonic.net> +# A. Karl Kornel <karl@kornel.name> use strict; use lib "."; @@ -33,6 +35,8 @@ package Bugzilla::Chart; use Bugzilla::Util; use Bugzilla::Series; +use Date::Format; + sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; @@ -205,6 +209,7 @@ sub data { sub readData { my $self = shift; my @data; + my @maxvals; # Note: you get a bad image if getSeriesIDs returns nothing # We need to handle errors better. @@ -233,14 +238,18 @@ sub readData { $dateto = $self->{'dateto'}; } + # Convert UNIX times back to a date format usable for SQL queries. + my $sql_from = time2str('%Y-%m-%d', $datefrom); + my $sql_to = time2str('%Y-%m-%d', $dateto); + # Prepare the query which retrieves the data for each series - my $query = "SELECT " . $dbh->sql_to_days('series_date') . " - " . - $dbh->sql_to_days("FROM_UNIXTIME($datefrom)") . - ", series_value FROM series_data " . + my $query = "SELECT " . $dbh->sql_to_days('series_date') . " - " . + $dbh->sql_to_days('?') . ", series_value " . + "FROM series_data " . "WHERE series_id = ? " . - "AND series_date >= FROM_UNIXTIME($datefrom)"; + "AND series_date >= ?"; if ($dateto) { - $query .= " AND series_date <= FROM_UNIXTIME($dateto)"; + $query .= " AND series_date <= ?"; } my $sth = $dbh->prepare($query); @@ -248,33 +257,94 @@ sub readData { my $gt_index = $self->{'gt'} ? scalar(@{$self->{'lines'}}) : undef; my $line_index = 0; + $maxvals[$gt_index] = 0 if $gt_index; + + my @datediff_total; + foreach my $line (@{$self->{'lines'}}) { # Even if we end up with no data, we need an empty arrayref to prevent # errors in the PNG-generating code $data[$line_index] = []; + $maxvals[$line_index] = 0; foreach my $series (@$line) { # Get the data for this series and add it on - $sth->execute($series->{'series_id'}); + if ($dateto) { + $sth->execute($sql_from, $series->{'series_id'}, $sql_from, $sql_to); + } + else { + $sth->execute($sql_from, $series->{'series_id'}, $sql_from); + } my $points = $sth->fetchall_arrayref(); foreach my $point (@$points) { my ($datediff, $value) = @$point; $data[$line_index][$datediff] ||= 0; $data[$line_index][$datediff] += $value; + if ($data[$line_index][$datediff] > $maxvals[$line_index]) { + $maxvals[$line_index] = $data[$line_index][$datediff]; + } + + $datediff_total[$datediff] += $value; # Add to the grand total, if we are doing that if ($gt_index) { $data[$gt_index][$datediff] ||= 0; $data[$gt_index][$datediff] += $value; + if ($data[$gt_index][$datediff] > $maxvals[$gt_index]) { + $maxvals[$gt_index] = $data[$gt_index][$datediff]; + } } } } + # We are done with the series making up this line, go to the next one $line_index++; } + # calculate maximum y value + if ($self->{'cumulate'}) { + # Make sure we do not try to take the max of an array with undef values + my @processed_datediff; + while (@datediff_total) { + my $datediff = shift @datediff_total; + push @processed_datediff, $datediff if defined($datediff); + } + $self->{'y_max_value'} = Bugzilla::Util::max(@processed_datediff); + } + else { + $self->{'y_max_value'} = Bugzilla::Util::max(@maxvals); + } + $self->{'y_max_value'} |= 1; # For log() + + # Align the max y value: + # For one- or two-digit numbers, increase y_max_value until divisible by 8 + # For larger numbers, see the comments below to figure out what's going on + if ($self->{'y_max_value'} < 100) { + do { + ++$self->{'y_max_value'}; + } while ($self->{'y_max_value'} % 8 != 0); + } + else { + # First, get the # of digits in the y_max_value + my $num_digits = 1+int(log($self->{'y_max_value'})/log(10)); + + # We want to zero out all but the top 2 digits + my $mask_length = $num_digits - 2; + $self->{'y_max_value'} /= 10**$mask_length; + $self->{'y_max_value'} = int($self->{'y_max_value'}); + $self->{'y_max_value'} *= 10**$mask_length; + + # Add 10^$mask_length to the max value + # Continue to increase until it's divisible by 8 * 10^($mask_length-1) + # (Throwing in the -1 keeps at least the smallest digit at zero) + do { + $self->{'y_max_value'} += 10**$mask_length; + } while ($self->{'y_max_value'} % (8*(10**($mask_length-1))) != 0); + } + + # Add the x-axis labels into the data structure my $date_progression = generateDateProgression($datefrom, $dateto); unshift(@data, $date_progression); diff --git a/Bugzilla/Classification.pm b/Bugzilla/Classification.pm new file mode 100644 index 000000000..63a826dc3 --- /dev/null +++ b/Bugzilla/Classification.pm @@ -0,0 +1,254 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Tiago R. Mello <timello@async.com.br> +# + +use strict; + +package Bugzilla::Classification; + +use Bugzilla::Util; +use Bugzilla::Error; +use Bugzilla::Product; + +############################### +#### Initialization #### +############################### + +use constant DB_COLUMNS => qw( + classifications.id + classifications.name + classifications.description +); + +our $columns = join(", ", DB_COLUMNS); + +############################### +#### Methods #### +############################### + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + my $self = {}; + bless($self, $class); + return $self->_init(@_); +} + +sub _init { + my $self = shift; + my ($param) = @_; + my $dbh = Bugzilla->dbh; + + my $id = $param unless (ref $param eq 'HASH'); + my $classification; + + if (defined $id) { + detaint_natural($id) + || ThrowCodeError('param_must_be_numeric', + {function => 'Bugzilla::Classification::_init'}); + + $classification = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM classifications + WHERE id = ?}, undef, $id); + + } elsif (defined $param->{'name'}) { + + trick_taint($param->{'name'}); + $classification = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM classifications + WHERE name = ?}, undef, $param->{'name'}); + } else { + ThrowCodeError('bad_arg', + {argument => 'param', + function => 'Bugzilla::Classification::_init'}); + } + + return undef unless (defined $classification); + + foreach my $field (keys %$classification) { + $self->{$field} = $classification->{$field}; + } + return $self; +} + +sub product_count { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'product_count'}) { + $self->{'product_count'} = $dbh->selectrow_array(q{ + SELECT COUNT(*) FROM products + WHERE classification_id = ?}, undef, $self->id) || 0; + } + return $self->{'product_count'}; +} + +sub products { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!$self->{'products'}) { + my $product_ids = $dbh->selectcol_arrayref(q{ + SELECT id FROM products + WHERE classification_id = ? + ORDER BY name}, undef, $self->id); + + my @products; + foreach my $product_id (@$product_ids) { + push (@products, new Bugzilla::Product($product_id)); + } + $self->{'products'} = \@products; + } + return $self->{'products'}; +} + +############################### +#### Accessors #### +############################### + +sub id { return $_[0]->{'id'}; } +sub name { return $_[0]->{'name'}; } +sub description { return $_[0]->{'description'}; } + +############################### +#### Subroutines #### +############################### + +sub get_all_classifications { + my $dbh = Bugzilla->dbh; + + my $ids = $dbh->selectcol_arrayref(q{ + SELECT id FROM classifications ORDER BY name}); + + my @classifications; + foreach my $id (@$ids) { + push @classifications, new Bugzilla::Classification($id); + } + return @classifications; +} + +sub check_classification { + my ($class_name) = @_; + + unless ($class_name) { + ThrowUserError("classification_not_specified"); + } + + my $classification = + new Bugzilla::Classification({name => $class_name}); + + unless ($classification) { + ThrowUserError("classification_doesnt_exist", + { name => $class_name }); + } + + return $classification; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Classification - Bugzilla classification class. + +=head1 SYNOPSIS + + use Bugzilla::Classification; + + my $classification = new Bugzilla::Classification(1); + my $classification = new Bugzilla::Classification({name => 'Acme'}); + + my $id = $classification->id; + my $name = $classification->name; + my $description = $classification->description; + my $product_count = $classification->product_count; + my $products = $classification->products; + + my $hash_ref = Bugzilla::Classification::get_all_classifications(); + my $classification = $hash_ref->{1}; + + my $classification = + Bugzilla::Classification::check_classification('AcmeClass'); + +=head1 DESCRIPTION + +Classification.pm represents a Classification object. + +A Classification is a higher-level grouping of Products. + +=head1 METHODS + +=over + +=item C<new($param)> + + Description: The constructor is used to load an existing + classification by passing a classification + id or classification name using a hash. + + Params: $param - If you pass an integer, the integer is the + classification_id from the database that we + want to read in. If you pass in a hash with + 'name' key, then the value of the name key + is the name of a classification from the DB. + + Returns: A Bugzilla::Classification object. + +=item C<product_count()> + + Description: Returns the total number of products that belong to + the classification. + + Params: none. + + Returns: Integer - The total of products inside the classification. + +=item C<products> + + Description: Returns all products of the classification. + + Params: none. + + Returns: A reference to an array of Bugzilla::Product objects. + +=back + +=head1 SUBROUTINES + +=over + +=item C<get_all_classifications()> + + Description: Returns all classifications. + + Params: none. + + Returns: Bugzilla::Classification object list. + +=item C<check_classification($classification_name)> + + Description: Checks if the classification name passed in is a + valid classification. + + Params: $classification_name - String with a classification name. + + Returns: Bugzilla::Classification object. + +=back + +=cut diff --git a/Bugzilla/Component.pm b/Bugzilla/Component.pm new file mode 100644 index 000000000..827be789d --- /dev/null +++ b/Bugzilla/Component.pm @@ -0,0 +1,273 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Tiago R. Mello <timello@async.com.br> +# + +use strict; + +package Bugzilla::Component; + +use Bugzilla::Util; +use Bugzilla::Error; +use Bugzilla::User; + +############################### +#### Initialization #### +############################### + +use constant DB_COLUMNS => qw( + components.id + components.name + components.product_id + components.initialowner + components.initialqacontact + components.description +); + +our $columns = join(", ", DB_COLUMNS); + +############################### +#### Methods #### +############################### + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + my $self = {}; + bless($self, $class); + return $self->_init(@_); +} + +sub _init { + my $self = shift; + my ($param) = (@_); + my $dbh = Bugzilla->dbh; + + my $id = $param unless (ref $param eq 'HASH'); + my $component; + + if (defined $id) { + detaint_natural($id) + || ThrowCodeError('param_must_be_numeric', + {function => 'Bugzilla::Component::_init'}); + + $component = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM components + WHERE id = ?}, undef, $id); + + } elsif (defined $param->{'product_id'} + && detaint_natural($param->{'product_id'}) + && defined $param->{'name'}) { + + trick_taint($param->{'name'}); + + $component = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM components + WHERE name = ? AND product_id = ?}, undef, + ($param->{'name'}, $param->{'product_id'})); + } else { + ThrowCodeError('bad_arg', + {argument => 'param', + function => 'Bugzilla::Component::_init'}); + } + + return undef unless (defined $component); + + foreach my $field (keys %$component) { + $self->{$field} = $component->{$field}; + } + return $self; +} + +sub bug_count { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'bug_count'}) { + $self->{'bug_count'} = $dbh->selectrow_array(q{ + SELECT COUNT(*) FROM bugs + WHERE component_id = ?}, undef, $self->id) || 0; + } + return $self->{'bug_count'}; +} + +sub bug_ids { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'bugs_ids'}) { + $self->{'bugs_ids'} = $dbh->selectcol_arrayref(q{ + SELECT bug_id FROM bugs + WHERE component_id = ?}, undef, $self->id); + } + return $self->{'bugs_ids'}; +} + +sub default_assignee { + my $self = shift; + + if (!defined $self->{'default_assignee'}) { + $self->{'default_assignee'} = + new Bugzilla::User($self->{'initialowner'}); + } + return $self->{'default_assignee'}; +} + +sub default_qa_contact { + my $self = shift; + + if (!defined $self->{'default_qa_contact'}) { + $self->{'default_qa_contact'} = + new Bugzilla::User($self->{'initialqacontact'}); + } + return $self->{'default_qa_contact'}; +} + +############################### +#### Accessors #### +############################### + +sub id { return $_[0]->{'id'}; } +sub name { return $_[0]->{'name'}; } +sub description { return $_[0]->{'description'}; } +sub product_id { return $_[0]->{'product_id'}; } + +############################### +#### Subroutines #### +############################### + +sub check_component { + my ($product, $comp_name) = @_; + + $comp_name || ThrowUserError('component_blank_name'); + + if (length($comp_name) > 64) { + ThrowUserError('component_name_too_long', + {'name' => $comp_name}); + } + + my $component = + new Bugzilla::Component({product_id => $product->id, + name => $comp_name}); + unless ($component) { + ThrowUserError('component_not_valid', + {'product' => $product->name, + 'name' => $comp_name}); + } + return $component; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Component - Bugzilla product component class. + +=head1 SYNOPSIS + + use Bugzilla::Component; + + my $component = new Bugzilla::Component(1); + my $component = new Bugzilla::Component({product_id => 1, + name => 'AcmeComp'}); + + my $bug_count = $component->bug_count(); + my $bug_ids = $component->bug_ids(); + my $id = $component->id; + my $name = $component->name; + my $description = $component->description; + my $product_id = $component->product_id; + my $default_assignee = $component->default_assignee; + my $default_qa_contact = $component->default_qa_contact; + + my $component = Bugzilla::Component::check_component($product, 'AcmeComp'); + +=head1 DESCRIPTION + +Component.pm represents a Product Component object. + +=head1 METHODS + +=over + +=item C<new($param)> + + Description: The constructor is used to load an existing component + by passing a component id or a hash with the product + id and the component name. + + Params: $param - If you pass an integer, the integer is the + component id from the database that we want to + read in. If you pass in a hash with 'name' key, + then the value of the name key is the name of a + component from the DB. + + Returns: A Bugzilla::Component object. + +=item C<bug_count()> + + Description: Returns the total of bugs that belong to the component. + + Params: none. + + Returns: Integer with the number of bugs. + +=item C<bugs_ids()> + + Description: Returns all bug IDs that belong to the component. + + Params: none. + + Returns: A reference to an array of bug IDs. + +=item C<default_assignee()> + + Description: Returns a user object that represents the default assignee for + the component. + + Params: none. + + Returns: A Bugzilla::User object. + +=item C<default_qa_contact()> + + Description: Returns a user object that represents the default QA contact for + the component. + + Params: none. + + Returns: A Bugzilla::User object. + +=back + +=head1 SUBROUTINES + +=over + +=item C<check_component($product, $comp_name)> + + Description: Checks if the component name was passed in and if it is a valid + component. + + Params: $product - A Bugzilla::Product object. + $comp_name - String with a component name. + + Returns: Bugzilla::Component object. + +=back + +=cut diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm index 75bce6af9..c6bb6ddce 100644 --- a/Bugzilla/Config.pm +++ b/Bugzilla/Config.pm @@ -26,6 +26,7 @@ # Bradley Baetz <bbaetz@student.usyd.edu.au> # Christopher Aillon <christopher@aillon.com> # Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> package Bugzilla::Config; @@ -50,13 +51,27 @@ use base qw(Exporter); # graphs (since the path will be wrong in the HTML). This will be fixed at # some point. +# constant paths our $libpath = '.'; -our $localconfig = "$libpath/localconfig"; -our $datadir = "$libpath/data"; -our $attachdir = "$datadir/attachments"; our $templatedir = "$libpath/template"; + +# variable paths +our $project; +our $localconfig; +our $datadir; +if ($ENV{'PROJECT'} && $ENV{'PROJECT'} =~ /^(\w+)$/) { + $project = $1; + $localconfig = "$libpath/localconfig.$project"; + $datadir = "$libpath/data/$project"; +} else { + $localconfig = "$libpath/localconfig"; + $datadir = "$libpath/data"; +} +our $attachdir = "$datadir/attachments"; our $webdotdir = "$datadir/webdot"; +our @parampanels = (); + # Module stuff @Bugzilla::Config::EXPORT = qw(Param); @@ -69,15 +84,16 @@ our $webdotdir = "$datadir/webdot"; %Bugzilla::Config::EXPORT_TAGS = ( - admin => [qw(GetParamList UpdateParams SetParam WriteParams)], + admin => [qw(UpdateParams SetParam WriteParams)], db => [qw($db_driver $db_host $db_port $db_name $db_user $db_pass $db_sock)], - locations => [qw($libpath $localconfig $attachdir - $datadir $templatedir $webdotdir)], + locations => [qw($libpath $localconfig $attachdir $datadir $templatedir + $webdotdir $project)], + params => [qw(@parampanels)], ); -Exporter::export_ok_tags('admin', 'db', 'locations'); +Exporter::export_ok_tags('admin', 'db', 'locations', 'params'); # Bugzilla version -$Bugzilla::Config::VERSION = "2.20.2"; +$Bugzilla::Config::VERSION = "2.22"; use Safe; @@ -127,17 +143,21 @@ sub _load_datafiles { # Load in the datafiles _load_datafiles(); -# Load in the param defintions -unless (my $ret = do 'defparams.pl') { - die "Couldn't parse defparams.pl: $@" if $@; - die "Couldn't do defparams.pl: $!" unless defined $ret; - die "Couldn't run defparams.pl" unless $ret; -} - # Stick the params into a hash my %params; -foreach my $item (@param_list) { - $params{$item->{'name'}} = $item; + +# Load in the param definitions +foreach my $item ((glob "$libpath/Bugzilla/Config/*.pm")) { + $item =~ m#/([^/]+)\.pm$#; + my $module = $1; + next if ($module eq 'Common'); + require "Bugzilla/Config/$module.pm"; + my @new_param_list = "Bugzilla::Config::$module"->get_param_list(); + foreach my $item (@new_param_list) { + $params{$item->{'name'}} = $item; + } + push(@parampanels, $module); + push(@param_list, @new_param_list); } # END INIT CODE @@ -162,10 +182,6 @@ sub Param { die "No value for param $param (try running checksetup.pl again)"; } -sub GetParamList { - return @param_list; -} - sub SetParam { my ($name, $value) = @_; @@ -176,8 +192,8 @@ sub SetParam { # sanity check the value # XXX - This runs the checks. Which would be good, except that - # check_shadowdb creates the database as a sideeffect, and so the - # checker fails the second time arround... + # check_shadowdb creates the database as a side effect, and so the + # checker fails the second time around... if ($name ne 'shadowdb' && exists $entry->{'checker'}) { my $err = $entry->{'checker'}->($value, $entry); die "Param $name is not valid: $err" unless $err eq ''; @@ -315,45 +331,6 @@ sub ChmodDataFile { chmod $perm,$file; } -sub check_multi { - my ($value, $param) = (@_); - - if ($param->{'type'} eq "s") { - unless (scalar(grep {$_ eq $value} (@{$param->{'choices'}}))) { - return "Invalid choice '$value' for single-select list param '$param->{'name'}'"; - } - - return ""; - } - elsif ($param->{'type'} eq "m") { - foreach my $chkParam (@$value) { - unless (scalar(grep {$_ eq $chkParam} (@{$param->{'choices'}}))) { - return "Invalid choice '$chkParam' for multi-select list param '$param->{'name'}'"; - } - } - - return ""; - } - else { - return "Invalid param type '$param->{'type'}' for check_multi(); " . - "contact your Bugzilla administrator"; - } -} - -sub check_numeric { - my ($value) = (@_); - if ($value !~ /^[0-9]+$/) { - return "must be a numeric value"; - } - return ""; -} - -sub check_regexp { - my ($value) = (@_); - eval { qr/$value/ }; - return $@; -} - 1; __END__ @@ -372,7 +349,6 @@ Bugzilla::Config - Configuration parameters for Bugzilla # Administration functions use Bugzilla::Config qw(:admin); - my @valid_params = GetParamList(); my @removed_params = UpgradeParams(); SetParam($param, $value); WriteParams(); @@ -398,13 +374,6 @@ Parameters can be set, retrieved, and updated. Returns the Param with the specified name. Either a string, or, in the case of multiple-choice parameters, an array reference. -=item C<GetParamList()> - -Returns the list of known parameter types, from defparams.pl. Users should not -rely on this method; it is intended for editparams/doeditparams only - -The format for the list is specified in defparams.pl - =item C<SetParam($name, $value)> Sets the param named $name to $value. Values are checked using the checker @@ -424,11 +393,7 @@ Writes the parameters to disk. =back -=head2 Parameter checking functions - -All parameter checking functions are called with two parameters: - -=over 4 +=over =item * @@ -438,24 +403,6 @@ The new value for the parameter A reference to the entry in the param list for this parameter -=back - Functions should return error text, or the empty string if there was no error. -=over 4 - -=item C<check_multi> - -Checks that a multi-valued parameter (ie type C<s> or type C<m>) satisfies -its contraints. - -=item C<check_numeric> - -Checks that the value is a valid number - -=item C<check_regexp> - -Checks that the value is a valid regexp - =back - diff --git a/Bugzilla/Config/Admin.pm b/Bugzilla/Config/Admin.pm new file mode 100644 index 000000000..838e53295 --- /dev/null +++ b/Bugzilla/Config/Admin.pm @@ -0,0 +1,69 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::Admin; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::Admin::sortkey = "01"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'allowbugdeletion', + type => 'b', + default => 0 + }, + + { + name => 'allowemailchange', + type => 'b', + default => 0 + }, + + { + name => 'allowuserdeletion', + type => 'b', + default => 0 + }, + + { + name => 'supportwatchers', + type => 'b', + default => 0 + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/Attachment.pm b/Bugzilla/Config/Attachment.pm new file mode 100644 index 000000000..449908528 --- /dev/null +++ b/Bugzilla/Config/Attachment.pm @@ -0,0 +1,86 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::Attachment; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::Attachment::sortkey = "025"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'allow_attach_url', + type => 'b', + default => 0 + }, + { + name => 'maxpatchsize', + type => 't', + default => '1000', + checker => \&check_numeric + }, + + { + name => 'maxattachmentsize', + type => 't', + default => '1000', + checker => \&check_numeric + }, + + # The maximum size (in bytes) for patches and non-patch attachments. + # The default limit is 1000KB, which is 24KB less than mysql's default + # maximum packet size (which determines how much data can be sent in a + # single mysql packet and thus how much data can be inserted into the + # database) to provide breathing space for the data in other fields of + # the attachment record as well as any mysql packet overhead (I don't + # know of any, but I suspect there may be some.) + + { + name => 'maxlocalattachment', + type => 't', + default => '0', + checker => \&check_numeric + }, + + { + name => 'convert_uncompressed_images', + type => 'b', + default => 0, + checker => \&check_image_converter + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/Auth.pm b/Bugzilla/Config/Auth.pm new file mode 100644 index 000000000..6b0cf7683 --- /dev/null +++ b/Bugzilla/Config/Auth.pm @@ -0,0 +1,135 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::Auth; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::Auth::sortkey = "02"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'auth_env_id', + type => 't', + default => '', + }, + + { + name => 'auth_env_email', + type => 't', + default => '', + }, + + { + name => 'auth_env_realname', + type => 't', + default => '', + }, + + # XXX in the future: + # + # user_verify_class and user_info_class should have choices gathered from + # whatever sits in their respective directories + # + # rather than comma-separated lists, these two should eventually become + # arrays, but that requires alterations to editparams first + + { + name => 'user_info_class', + type => 's', + choices => [ 'CGI', 'Env', 'Env,CGI' ], + default => 'CGI', + checker => \&check_multi + }, + + { + name => 'user_verify_class', + type => 's', + choices => [ 'DB', 'LDAP', 'DB,LDAP', 'LDAP,DB' ], + default => 'DB', + checker => \&check_user_verify_class + }, + + { + name => 'rememberlogin', + type => 's', + choices => ['on', 'defaulton', 'defaultoff', 'off'], + default => 'on', + checker => \&check_multi + }, + + { + name => 'loginnetmask', + type => 't', + default => '32', + checker => \&check_netmask + }, + + { + name => 'requirelogin', + type => 'b', + default => '0' + }, + + { + name => 'emailregexp', + type => 't', + default => q:^[\\w\\.\\+\\-=]+@[\\w\\.\\-]+\\.[\\w\\-]+$:, + checker => \&check_regexp + }, + + { + name => 'emailregexpdesc', + type => 'l', + default => 'A legal address must contain exactly one \'@\', and at least ' . + 'one \'.\' after the @.' + }, + + { + name => 'emailsuffix', + type => 't', + default => '' + }, + + { + name => 'createemailregexp', + type => 't', + default => q:.*:, + checker => \&check_regexp + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/BugChange.pm b/Bugzilla/Config/BugChange.pm new file mode 100644 index 000000000..bacacc082 --- /dev/null +++ b/Bugzilla/Config/BugChange.pm @@ -0,0 +1,135 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::BugChange; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::BugChange::sortkey = "03"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'letsubmitterchoosepriority', + type => 'b', + default => 1 + }, + + { + name => 'letsubmitterchoosemilestone', + type => 'b', + default => 1 + }, + + { + name => 'musthavemilestoneonaccept', + type => 'b', + default => 0 + }, + + { + name => 'commentoncreate', + type => 'b', + default => 0 + }, + + { + name => 'commentonaccept', + type => 'b', + default => 0 + }, + + { + name => 'commentonclearresolution', + type => 'b', + default => 0 + }, + + { + name => 'commentonconfirm', + type => 'b', + default => 0 + }, + + { + name => 'commentonresolve', + type => 'b', + default => 0 + }, + + { + name => 'commentonreassign', + type => 'b', + default => 0 + }, + + { + name => 'commentonreassignbycomponent', + type => 'b', + default => 0 + }, + + { + name => 'commentonreopen', + type => 'b', + default => 0 + }, + + { + name => 'commentonverify', + type => 'b', + default => 0 + }, + + { + name => 'commentonclose', + type => 'b', + default => 0 + }, + + { + name => 'commentonduplicate', + type => 'b', + default => 0 + }, + + { + name => 'noresolveonopenblockers', + type => 'b', + default => 0, + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/BugFields.pm b/Bugzilla/Config/BugFields.pm new file mode 100644 index 000000000..17b79941d --- /dev/null +++ b/Bugzilla/Config/BugFields.pm @@ -0,0 +1,119 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::BugFields; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::BugFields::sortkey = "04"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'useclassification', + type => 'b', + default => 0 + }, + + { + name => 'showallproducts', + type => 'b', + default => 0 + }, + + { + name => 'usetargetmilestone', + type => 'b', + default => 0 + }, + + { + name => 'useqacontact', + type => 'b', + default => 0 + }, + + { + name => 'usestatuswhiteboard', + type => 'b', + default => 0 + }, + + { + name => 'usevotes', + type => 'b', + default => 1 + }, + + { + name => 'usebugaliases', + type => 'b', + default => 0 + }, + + { + name => 'defaultpriority', + type => 's', + choices => \@::legal_priority, + default => $::legal_priority[-1], + checker => \&check_priority + }, + + { + name => 'defaultseverity', + type => 's', + choices => \@::legal_severity, + default => $::legal_severity[-1], + checker => \&check_severity + }, + + { + name => 'defaultplatform', + type => 's', + choices => ['', @::legal_platform], + default => '', + checker => \&check_platform + }, + + { + name => 'defaultopsys', + type => 's', + choices => ['', @::legal_opsys], + default => '', + checker => \&check_opsys + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/BugMove.pm b/Bugzilla/Config/BugMove.pm new file mode 100644 index 000000000..87f6cbd73 --- /dev/null +++ b/Bugzilla/Config/BugMove.pm @@ -0,0 +1,93 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::BugMove; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::BugMove::sortkey = "05"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'move-enabled', + type => 'b', + default => 0 + }, + + { + name => 'move-button-text', + type => 't', + default => 'Move To Bugscape' + }, + + { + name => 'move-to-url', + type => 't', + default => '' + }, + + { + name => 'move-to-address', + type => 't', + default => 'bugzilla-import' + }, + + { + name => 'moved-from-address', + type => 't', + default => 'bugzilla-admin' + }, + + { + name => 'movers', + type => 't', + default => '' + }, + + { + name => 'moved-default-product', + type => 't', + default => '' + }, + + { + name => 'moved-default-component', + type => 't', + default => '' + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/CVS/Entries b/Bugzilla/Config/CVS/Entries new file mode 100644 index 000000000..b4c17ba2c --- /dev/null +++ b/Bugzilla/Config/CVS/Entries @@ -0,0 +1,18 @@ +/Admin.pm/1.2/Thu Oct 13 09:04:04 2005//TBUGZILLA-2_22 +/Attachment.pm/1.2/Wed Oct 19 20:16:13 2005//TBUGZILLA-2_22 +/Auth.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/BugChange.pm/1.2/Fri Oct 14 17:54:56 2005//TBUGZILLA-2_22 +/BugFields.pm/1.3/Tue Oct 18 18:47:08 2005//TBUGZILLA-2_22 +/BugMove.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/Common.pm/1.2.2.1/Thu Feb 23 01:46:45 2006//TBUGZILLA-2_22 +/Core.pm/1.1.2.1/Thu Feb 23 01:46:45 2006//TBUGZILLA-2_22 +/DependencyGraph.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/GroupSecurity.pm/1.2/Mon Oct 17 21:19:01 2005//TBUGZILLA-2_22 +/L10n.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/LDAP.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/MTA.pm/1.3/Mon Feb 20 23:32:08 2006//TBUGZILLA-2_22 +/PatchViewer.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/Query.pm/1.3/Mon Feb 20 23:32:08 2006//TBUGZILLA-2_22 +/ShadowDB.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +/UserMatch.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-2_22 +D diff --git a/Bugzilla/Config/CVS/Repository b/Bugzilla/Config/CVS/Repository new file mode 100644 index 000000000..690ca44a7 --- /dev/null +++ b/Bugzilla/Config/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/Bugzilla/Config diff --git a/Bugzilla/Config/CVS/Root b/Bugzilla/Config/CVS/Root new file mode 100644 index 000000000..cdb6f4a07 --- /dev/null +++ b/Bugzilla/Config/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot diff --git a/Bugzilla/Config/CVS/Tag b/Bugzilla/Config/CVS/Tag new file mode 100644 index 000000000..4f143e35f --- /dev/null +++ b/Bugzilla/Config/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-2_22 diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm new file mode 100644 index 000000000..9cb13d99f --- /dev/null +++ b/Bugzilla/Config/Common.pm @@ -0,0 +1,387 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +# This file defines all the parameters that we have a GUI to edit within +# Bugzilla. + +# ATTENTION!!!! THIS FILE ONLY CONTAINS THE DEFAULTS. +# You cannot change your live settings by editing this file. +# Only adding new parameters is done here. Once the parameter exists, you +# must use %baseurl%/editparams.cgi from the web to edit the settings. + +# This file is included via |do|, mainly because of circular dependency issues +# (such as globals.pl -> Bugzilla::Config -> this -> Bugzilla::Config) +# which preclude compile time loading. + +# Those issues may go away at some point, and the contents of this file +# moved somewhere else. Please try to avoid more dependencies from here +# to other code + +# (Note that these aren't just added directly to Bugzilla::Config, because +# the backend prefs code is separate to this...) + +package Bugzilla::Config::Common; + +use strict; + +use Socket; + +use Bugzilla::Config qw(:DEFAULT $templatedir $webdotdir); +use Bugzilla::Util; +use Bugzilla::Constants; + +use base qw(Exporter); +@Bugzilla::Config::Common::EXPORT = + qw(check_multi check_numeric check_regexp + check_sslbase check_priority check_severity check_platform + check_opsys check_shadowdb check_urlbase check_webdotbase + check_netmask check_user_verify_class check_image_converter + check_languages check_mail_delivery_method +); + +# Checking functions for the various values + +sub check_multi { + my ($value, $param) = (@_); + + if ($param->{'type'} eq "s") { + unless (scalar(grep {$_ eq $value} (@{$param->{'choices'}}))) { + return "Invalid choice '$value' for single-select list param '$param->{'name'}'"; + } + + return ""; + } + elsif ($param->{'type'} eq "m") { + foreach my $chkParam (@$value) { + unless (scalar(grep {$_ eq $chkParam} (@{$param->{'choices'}}))) { + return "Invalid choice '$chkParam' for multi-select list param '$param->{'name'}'"; + } + } + + return ""; + } + else { + return "Invalid param type '$param->{'type'}' for check_multi(); " . + "contact your Bugzilla administrator"; + } +} + +sub check_numeric { + my ($value) = (@_); + if ($value !~ /^[0-9]+$/) { + return "must be a numeric value"; + } + return ""; +} + +sub check_regexp { + my ($value) = (@_); + eval { qr/$value/ }; + return $@; +} + +sub check_sslbase { + my $url = shift; + if ($url ne '') { + if ($url !~ m#^https://([^/]+).*/$#) { + return "must be a legal URL, that starts with https and ends with a slash."; + } + my $host = $1; + if ($host =~ /:\d+$/) { + return "must not contain a port."; + } + local *SOCK; + my $proto = getprotobyname('tcp'); + socket(SOCK, PF_INET, SOCK_STREAM, $proto); + my $sin = sockaddr_in(443, inet_aton($host)); + if (!connect(SOCK, $sin)) { + return "Failed to connect to " . html_quote($host) . + ":443, unable to enable SSL."; + } + } + return ""; +} + +sub check_priority { + my ($value) = (@_); + &::GetVersionTable(); + if (lsearch(\@::legal_priority, $value) < 0) { + return "Must be a legal priority value: one of " . + join(", ", @::legal_priority); + } + return ""; +} + +sub check_severity { + my ($value) = (@_); + &::GetVersionTable(); + if (lsearch(\@::legal_severity, $value) < 0) { + return "Must be a legal severity value: one of " . + join(", ", @::legal_severity); + } + return ""; +} + +sub check_platform { + my ($value) = (@_); + &::GetVersionTable(); + if (lsearch(['', @::legal_platform], $value) < 0) { + return "Must be empty or a legal platform value: one of " . + join(", ", @::legal_platform); + } + return ""; +} + +sub check_opsys { + my ($value) = (@_); + &::GetVersionTable(); + if (lsearch(['', @::legal_opsys], $value) < 0) { + return "Must be empty or a legal operating system value: one of " . + join(", ", @::legal_opsys); + } + return ""; +} + +sub check_shadowdb { + my ($value) = (@_); + $value = trim($value); + if ($value eq "") { + return ""; + } + + if (!Param('shadowdbhost')) { + return "You need to specify a host when using a shadow database"; + } + + # Can't test existence of this because ConnectToDatabase uses the param, + # but we can't set this before testing.... + # This can really only be fixed after we can use the DBI more openly + return ""; +} + +sub check_urlbase { + my ($url) = (@_); + if ($url && $url !~ m:^http.*/$:) { + return "must be a legal URL, that starts with http and ends with a slash."; + } + return ""; +} + +sub check_webdotbase { + my ($value) = (@_); + $value = trim($value); + if ($value eq "") { + return ""; + } + if($value !~ /^https?:/) { + if(! -x $value) { + return "The file path \"$value\" is not a valid executable. Please specify the complete file path to 'dot' if you intend to generate graphs locally."; + } + # Check .htaccess allows access to generated images + if(-e "$webdotdir/.htaccess") { + open HTACCESS, "$webdotdir/.htaccess"; + if(! grep(/ \\\.png\$/,<HTACCESS>)) { + return "Dependency graph images are not accessible.\nAssuming that you have not modified the file, delete $webdotdir/.htaccess and re-run checksetup.pl to rectify.\n"; + } + close HTACCESS; + } + } + return ""; +} + +sub check_netmask { + my ($mask) = @_; + my $res = check_numeric($mask); + return $res if $res; + if ($mask < 0 || $mask > 32) { + return "an IPv4 netmask must be between 0 and 32 bits"; + } + # Note that if we changed the netmask from anything apart from 32, then + # existing logincookies which aren't for a single IP won't work + # any more. We can't know which ones they are, though, so they'll just + # take space until they're preiodically cleared, later. + + return ""; +} + +sub check_user_verify_class { + # doeditparams traverses the list of params, and for each one it checks, + # then updates. This means that if one param checker wants to look at + # other params, it must be below that other one. So you can't have two + # params mutually dependent on each other. + # This means that if someone clears the LDAP config params after setting + # the login method as LDAP, we won't notice, but all logins will fail. + # So don't do that. + + my ($list, $entry) = @_; + for my $class (split /,\s*/, $list) { + my $res = check_multi($class, $entry); + return $res if $res; + if ($class eq 'DB') { + # No params + } elsif ($class eq 'LDAP') { + eval "require Net::LDAP"; + return "Error requiring Net::LDAP: '$@'" if $@; + return "LDAP servername is missing" unless Param("LDAPserver"); + return "LDAPBaseDN is empty" unless Param("LDAPBaseDN"); + } else { + return "Unknown user_verify_class '$class' in check_user_verify_class"; + } + } + return ""; +} + +sub check_image_converter { + my ($value, $hash) = @_; + if ($value == 1){ + eval "require Image::Magick"; + return "Error requiring Image::Magick: '$@'" if $@; + } + return ""; +} + +sub check_languages { + my @languages = split /[,\s]+/, trim($_[0]); + if(!scalar(@languages)) { + return "You need to specify a language tag." + } + foreach my $language (@languages) { + if( ! -d "$templatedir/$language/custom" + && ! -d "$templatedir/$language/default") { + return "The template directory for $language does not exist"; + } + } + return ""; +} + +sub check_mail_delivery_method { + my $check = check_multi(@_); + return $check if $check; + my $mailer = shift; + if ($mailer eq 'sendmail' && $^O =~ /MSWin32/i) { + # look for sendmail.exe + return "Failed to locate " . SENDMAIL_EXE + unless -e SENDMAIL_EXE; + } + return ""; +} + +# OK, here are the parameter definitions themselves. +# +# Each definition is a hash with keys: +# +# name - name of the param +# desc - description of the param (for editparams.cgi) +# type - see below +# choices - (optional) see below +# default - default value for the param +# checker - (optional) checking function for validating parameter entry +# It is called with the value of the param as the first arg and a +# reference to the param's hash as the second argument +# +# The type value can be one of the following: +# +# t -- A short text entry field (suitable for a single line) +# l -- A long text field (suitable for many lines) +# b -- A boolean value (either 1 or 0) +# m -- A list of values, with many selectable (shows up as a select box) +# To specify the list of values, make the 'choices' key be an array +# reference of the valid choices. The 'default' key should be an array +# reference for the list of selected values (which must appear in the +# first anonymous array), i.e.: +# { +# name => 'multiselect', +# desc => 'A list of options, choose many', +# type => 'm', +# choices => [ 'a', 'b', 'c', 'd' ], +# default => [ 'a', 'd' ], +# checker => \&check_multi +# } +# +# Here, 'a' and 'd' are the default options, and the user may pick any +# combination of a, b, c, and d as valid options. +# +# &check_multi should always be used as the param verification function +# for list (single and multiple) parameter types. +# +# s -- A list of values, with one selectable (shows up as a select box) +# To specify the list of values, make the 'choices' key be an array +# reference of the valid choices. The 'default' key should be one of +# those values, i.e.: +# { +# name => 'singleselect', +# desc => 'A list of options, choose one', +# type => 's', +# choices => [ 'a', 'b', 'c' ], +# default => 'b', +# checker => \&check_multi +# } +# +# Here, 'b' is the default option, and 'a' and 'c' are other possible +# options, but only one at a time! +# +# &check_multi should always be used as the param verification function +# for list (single and multiple) parameter types. + +sub get_param_list { + return; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Config::Common - Parameter checking functions + +=head1 DESCRIPTION + +All parameter checking functions are called with two parameters: + +=head2 Functions + +=over + +=item C<check_multi> + +Checks that a multi-valued parameter (ie type C<s> or type C<m>) satisfies +its contraints. + +=item C<check_numeric> + +Checks that the value is a valid number + +=item C<check_regexp> + +Checks that the value is a valid regexp + +=back diff --git a/Bugzilla/Config/Core.pm b/Bugzilla/Config/Core.pm new file mode 100644 index 000000000..541a48c69 --- /dev/null +++ b/Bugzilla/Config/Core.pm @@ -0,0 +1,103 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::Core; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::Core::sortkey = "00"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'maintainer', + type => 't', + default => 'THE MAINTAINER HAS NOT YET BEEN SET' + }, + + { + name => 'urlbase', + type => 't', + default => '', + checker => \&check_urlbase + }, + + { + name => 'sslbase', + type => 't', + default => '', + checker => \&check_sslbase + }, + + { + name => 'ssl', + type => 's', + choices => ['never', 'authenticated sessions', 'always'], + default => 'never' + }, + + + { + name => 'cookiedomain', + type => 't', + default => '' + }, + + { + name => 'cookiepath', + type => 't', + default => '/' + }, + + { + name => 'timezone', + type => 't', + default => '', + }, + + { + name => 'utf8', + type => 'b', + default => '0', + }, + + { + name => 'shutdownhtml', + type => 'l', + default => '' + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/DependencyGraph.pm b/Bugzilla/Config/DependencyGraph.pm new file mode 100644 index 000000000..db784c135 --- /dev/null +++ b/Bugzilla/Config/DependencyGraph.pm @@ -0,0 +1,52 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::DependencyGraph; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::DependencyGraph::sortkey = "06"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'webdotbase', + type => 't', + default => 'http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%', + checker => \&check_webdotbase + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/GroupSecurity.pm b/Bugzilla/Config/GroupSecurity.pm new file mode 100644 index 000000000..bd1aa3829 --- /dev/null +++ b/Bugzilla/Config/GroupSecurity.pm @@ -0,0 +1,87 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::GroupSecurity; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::GroupSecurity::sortkey = "07"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'makeproductgroups', + type => 'b', + default => 0 + }, + + { + name => 'useentrygroupdefault', + type => 'b', + default => 0 + }, + + { + name => 'chartgroup', + type => 't', + default => 'editbugs' + }, + + { + name => 'insidergroup', + type => 't', + default => '' + }, + + { + name => 'timetrackinggroup', + type => 't', + default => '' + }, + + { + name => 'usevisibilitygroups', + type => 'b', + default => 0 + }, + + { + name => 'strict_isolation', + type => 'b', + default => 0 + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/L10n.pm b/Bugzilla/Config/L10n.pm new file mode 100644 index 000000000..6fed0ed70 --- /dev/null +++ b/Bugzilla/Config/L10n.pm @@ -0,0 +1,78 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::L10n; + +use strict; + +use File::Spec; # for find_languages + +use Bugzilla::Config qw($templatedir); +use Bugzilla::Config::Common; + +$Bugzilla::Config::L10n::sortkey = "08"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'languages' , + extra_desc => { available_languages => find_languages() }, + type => 't' , + default => 'en' , + checker => \&check_languages + }, + + { + name => 'defaultlanguage', + type => 't' , + default => 'en' , + checker => \&check_languages + } ); + return @param_list; +} + +sub find_languages { + my @languages = (); + opendir(DIR, $templatedir) || return "Can't open 'template' directory: $!"; + foreach my $dir (readdir(DIR)) { + next unless $dir =~ /^([a-z-]+)$/i; + my $lang = $1; + next if($lang =~ /^CVS$/i); + my $deft_path = File::Spec->catdir('template', $lang, 'default'); + my $cust_path = File::Spec->catdir('template', $lang, 'custom'); + push(@languages, $lang) if(-d $deft_path or -d $cust_path); + } + closedir DIR; + return join(', ', @languages); +} + +1; diff --git a/Bugzilla/Config/LDAP.pm b/Bugzilla/Config/LDAP.pm new file mode 100644 index 000000000..3f123243b --- /dev/null +++ b/Bugzilla/Config/LDAP.pm @@ -0,0 +1,81 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::LDAP; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::LDAP::sortkey = "09"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'LDAPserver', + type => 't', + default => '' + }, + + { + name => 'LDAPbinddn', + type => 't', + default => '' + }, + + { + name => 'LDAPBaseDN', + type => 't', + default => '' + }, + + { + name => 'LDAPuidattribute', + type => 't', + default => 'uid' + }, + + { + name => 'LDAPmailattribute', + type => 't', + default => 'mail' + }, + + { + name => 'LDAPfilter', + type => 't', + default => '', + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/MTA.pm b/Bugzilla/Config/MTA.pm new file mode 100644 index 000000000..50aa8c85d --- /dev/null +++ b/Bugzilla/Config/MTA.pm @@ -0,0 +1,176 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::MTA; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::MTA::sortkey = "10"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'mail_delivery_method', + type => 's', + choices => $^O =~ /MSWin32/i + ? ['smtp', 'testfile', 'sendmail', 'none'] + : ['sendmail', 'smtp', 'qmail', 'testfile', 'none'], + default => 'sendmail', + checker => \&check_mail_delivery_method + }, + + { + name => 'sendmailnow', + type => 'b', + default => 1 + }, + + { + name => 'smtpserver', + type => 't', + default => 'localhost' + }, + + { + name => 'passwordmail', + type => 'l', + default => 'From: bugzilla-daemon +To: %mailaddress% +Subject: Your Bugzilla password. + +To use the wonders of Bugzilla, you can use the following: + + E-mail address: %login% + Password: %password% + + To change your password, go to: + %urlbase%userprefs.cgi +' + }, + + { + name => 'newchangedmail', + type => 'l', + default => 'From: bugzilla-daemon +To: %to% +Subject: [Bug %bugid%] %neworchanged%%summary% +%threadingmarker% +X-Bugzilla-Reason: %reasonsheader% +X-Bugzilla-Product: %product% +X-Bugzilla-Component: %component% +X-Bugzilla-Keywords: %keywords% +X-Bugzilla-Severity: %severity% + +%urlbase%show_bug.cgi?id=%bugid% + +%diffs% + +--%space% +Configure bugmail: %urlbase%userprefs.cgi?tab=email +%reasonsbody%' + }, + + { + name => 'whinedays', + type => 't', + default => 7, + checker => \&check_numeric + }, + + { + name => 'whinemail', + type => 'l', + default => 'From: %maintainer% +To: %email% +Subject: Your Bugzilla buglist needs attention. + +[This e-mail has been automatically generated.] + +You have one or more bugs assigned to you in the Bugzilla +bugsystem (%urlbase%) that require +attention. + +All of these bugs are in the NEW or REOPENED state, and have not +been touched in %whinedays% days or more. You need to take a look +at them, and decide on an initial action. + +Generally, this means one of three things: + +(1) You decide this bug is really quick to deal with (like, it\'s INVALID), + and so you get rid of it immediately. +(2) You decide the bug doesn\'t belong to you, and you reassign it to someone + else. (Hint: if you don\'t know who to reassign it to, make sure that + the Component field seems reasonable, and then use the "Reassign bug to + default assignee of selected component" option.) +(3) You decide the bug belongs to you, but you can\'t solve it this moment. + Just use the "Accept bug" command. + +To get a list of all NEW/REOPENED bugs, you can use this URL (bookmark +it if you like!): + + %urlbase%buglist.cgi?bug_status=NEW&bug_status=REOPENED&assigned_to=%userid% + +Or, you can use the general query page, at +%urlbase%query.cgi + +Appended below are the individual URLs to get to all of your NEW bugs that +haven\'t been touched for a week or more. + +You will get this message once a day until you\'ve dealt with these bugs! + +' + }, + + { + name => 'voteremovedmail', + type => 'l', + default => 'From: bugzilla-daemon +To: %to% +Subject: [Bug %bugid%] Some or all of your votes have been removed. + +Some or all of your votes have been removed from bug %bugid%. + +%votesoldtext% + +%votesnewtext% + +Reason: %reason% + +%urlbase%show_bug.cgi?id=%bugid% +' + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/PatchViewer.pm b/Bugzilla/Config/PatchViewer.pm new file mode 100644 index 000000000..8de04ef76 --- /dev/null +++ b/Bugzilla/Config/PatchViewer.pm @@ -0,0 +1,75 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::PatchViewer; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::PatchViewer::sortkey = "11"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'cvsroot', + type => 't', + default => '', + }, + + { + name => 'cvsroot_get', + type => 't', + default => '', + }, + + { + name => 'bonsai_url', + type => 't', + default => '' + }, + + { + name => 'lxr_url', + type => 't', + default => '' + }, + + { + name => 'lxr_root', + type => 't', + default => '', + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/Query.pm b/Bugzilla/Config/Query.pm new file mode 100644 index 000000000..e3996a0ee --- /dev/null +++ b/Bugzilla/Config/Query.pm @@ -0,0 +1,79 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::Query; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::Query::sortkey = "12"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'quip_list_entry_control', + type => 's', + choices => ['open', 'moderated', 'closed'], + default => 'open', + checker => \&check_multi + }, + + { + name => 'mostfreqthreshold', + type => 't', + default => '2', + checker => \&check_numeric + }, + + { + name => 'mybugstemplate', + type => 't', + default => 'buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailreporter1=1&emailtype1=exact&email1=%userid%&field0-0-0=bug_status&type0-0-0=notequals&value0-0-0=UNCONFIRMED&field0-0-1=reporter&type0-0-1=equals&value0-0-1=%userid%' + }, + + { + name => 'defaultquery', + type => 't', + default => 'bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailqa_contact2=1&order=Importance&long_desc_type=substring' + }, + + { + name => 'quicksearch_comment_cutoff', + type => 't', + default => '4', + checker => \&check_numeric + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/ShadowDB.pm b/Bugzilla/Config/ShadowDB.pm new file mode 100644 index 000000000..f9af4fb6d --- /dev/null +++ b/Bugzilla/Config/ShadowDB.pm @@ -0,0 +1,73 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::ShadowDB; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::ShadowDB::sortkey = "13"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'shadowdbhost', + type => 't', + default => '', + }, + + { + name => 'shadowdbport', + type => 't', + default => '3306', + checker => \&check_numeric, + }, + + { + name => 'shadowdbsock', + type => 't', + default => '', + }, + + # This entry must be _after_ the shadowdb{host,port,sock} settings so that + # they can be used in the validation here + { + name => 'shadowdb', + type => 't', + default => '', + checker => \&check_shadowdb + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Config/UserMatch.pm b/Bugzilla/Config/UserMatch.pm new file mode 100644 index 000000000..819247e99 --- /dev/null +++ b/Bugzilla/Config/UserMatch.pm @@ -0,0 +1,71 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# The Initial Developer of the Original Code is Netscape Communications +# Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): Terry Weissman <terry@mozilla.org> +# Dawn Endico <endico@mozilla.org> +# Dan Mosedale <dmose@mozilla.org> +# Joe Robins <jmrobins@tgix.com> +# Jacob Steenhagen <jake@bugzilla.org> +# J. Paul Reed <preed@sigkill.com> +# Bradley Baetz <bbaetz@student.usyd.edu.au> +# Joseph Heenan <joseph@heenan.me.uk> +# Erik Stambaugh <erik@dasbistro.com> +# Frédéric Buclin <LpSolit@gmail.com> +# + +package Bugzilla::Config::UserMatch; + +use strict; + +use Bugzilla::Config::Common; + +$Bugzilla::Config::UserMatch::sortkey = "14"; + +sub get_param_list { + my $class = shift; + my @param_list = ( + { + name => 'usemenuforusers', + type => 'b', + default => '0' + }, + + { + name => 'usermatchmode', + type => 's', + choices => ['off', 'wildcard', 'search'], + default => 'off' + }, + + { + name => 'maxusermatches', + type => 't', + default => '1000', + checker => \&check_numeric + }, + + { + name => 'confirmuniqueusermatch', + type => 'b', + default => 1, + } ); + return @param_list; +} + +1; diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index a5cea3292..c00518732 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -53,7 +53,6 @@ use base qw(Exporter); LOGOUT_KEEP_CURRENT GRANT_DIRECT - GRANT_DERIVED GRANT_REGEXP GROUP_MEMBERSHIP @@ -66,9 +65,10 @@ use base qw(Exporter); DEFAULT_COLUMN_LIST DEFAULT_QUERY_NAME - COMMENT_COLS + QUERY_LIST + LIST_OF_BUGS - DERIVE_GROUPS_TABLES_ALREADY_LOCKED + COMMENT_COLS UNLOCK_ABORT @@ -78,7 +78,7 @@ use base qw(Exporter); POS_EVENTS EVT_OTHER EVT_ADDED_REMOVED EVT_COMMENT EVT_ATTACHMENT EVT_ATTACHMENT_DATA - EVT_PROJ_MANAGEMENT EVT_OPENED_CLOSED EVT_KEYWORD EVT_CC + EVT_PROJ_MANAGEMENT EVT_OPENED_CLOSED EVT_KEYWORD EVT_CC EVT_DEPEND_BLOCK NEG_EVENTS EVT_UNCONFIRMED EVT_CHANGED_BY_ME @@ -88,6 +88,8 @@ use base qw(Exporter); FULLTEXT_BUGLIST_LIMIT + ADMIN_GROUP_NAME + SENDMAIL_EXE ); @@ -155,7 +157,6 @@ use constant contenttypes => }; use constant GRANT_DIRECT => 0; -use constant GRANT_DERIVED => 1; use constant GRANT_REGEXP => 2; use constant GROUP_MEMBERSHIP => 0; @@ -167,7 +168,7 @@ use constant MAILTO_GROUP => 1; # The default list of columns for buglist.cgi use constant DEFAULT_COLUMN_LIST => ( - "bug_severity", "priority", "rep_platform","assigned_to", + "bug_severity", "priority", "op_sys","assigned_to", "bug_status", "resolution", "short_short_desc" ); @@ -175,13 +176,13 @@ use constant DEFAULT_COLUMN_LIST => ( # for the default settings. use constant DEFAULT_QUERY_NAME => '(Default query)'; +# The possible types for saved searches. +use constant QUERY_LIST => 0; +use constant LIST_OF_BUGS => 1; + # The column length for displayed (and wrapped) bug comments. use constant COMMENT_COLS => 80; -# Used to indicate to User::new and User::new_from_login calls -# that the derive_groups tables are already locked -use constant DERIVE_GROUPS_TABLES_ALREADY_LOCKED => 1; - # used by Bugzilla::DB to indicate that tables are being unlocked # because of error use constant UNLOCK_ABORT => 1; @@ -213,11 +214,12 @@ use constant EVT_PROJ_MANAGEMENT => 5; use constant EVT_OPENED_CLOSED => 6; use constant EVT_KEYWORD => 7; use constant EVT_CC => 8; +use constant EVT_DEPEND_BLOCK => 9; use constant POS_EVENTS => EVT_OTHER, EVT_ADDED_REMOVED, EVT_COMMENT, EVT_ATTACHMENT, EVT_ATTACHMENT_DATA, EVT_PROJ_MANAGEMENT, EVT_OPENED_CLOSED, EVT_KEYWORD, - EVT_CC; + EVT_CC, EVT_DEPEND_BLOCK; use constant EVT_UNCONFIRMED => 50; use constant EVT_CHANGED_BY_ME => 51; @@ -235,6 +237,9 @@ use constant GLOBAL_EVENTS => EVT_FLAG_REQUESTED, EVT_REQUESTED_FLAG; # a fulltext search. use constant FULLTEXT_BUGLIST_LIMIT => 200; +# Default administration group name. +use constant ADMIN_GROUP_NAME => 'admin'; + # Path to sendmail.exe (Windows only) use constant SENDMAIL_EXE => '/usr/lib/sendmail.exe'; diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm index ba2a9c631..127218843 100644 --- a/Bugzilla/DB.pm +++ b/Bugzilla/DB.pm @@ -24,6 +24,7 @@ # Christopher Aillon <christopher@aillon.com> # Tomas Kopal <Tomas.Kopal@altap.cz> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Lance Larsh <lance.larsh@oracle.com> package Bugzilla::DB; @@ -50,7 +51,6 @@ use Bugzilla::Config qw(:DEFAULT :db); use Bugzilla::Util; use Bugzilla::Error; use Bugzilla::DB::Schema; -use Bugzilla::User; ##################################################################### # Constants @@ -128,12 +128,12 @@ sub FetchOneColumn { return $row[0]; } -sub PushGlobalSQLState() { +sub PushGlobalSQLState { push @SQLStateStack, $_current_sth; push @SQLStateStack, $_fetchahead; } -sub PopGlobalSQLState() { +sub PopGlobalSQLState { die ("PopGlobalSQLState: stack underflow") if ( scalar(@SQLStateStack) < 1 ); $_fetchahead = pop @SQLStateStack; $_current_sth = pop @SQLStateStack; @@ -153,7 +153,7 @@ sub connect_shadow { Param("shadowdbsock"), $db_user, $db_pass); } -sub connect_main (;$) { +sub connect_main { my ($no_db_name) = @_; my $connect_to_db = $db_name; $connect_to_db = "" if $no_db_name; @@ -260,22 +260,26 @@ sub sql_fulltext_search { # This is as close as we can get to doing full text search using # standard ANSI SQL, without real full text search support. DB specific - # modules shoud override this, as this will be always much slower. - - # the text is already sql-quoted, so we need to remove the quotes first - my $quote = substr($self->quote(''), 0, 1); - $text = $1 if ($text =~ /^$quote(.*)$quote$/); + # modules should override this, as this will be always much slower. # make the string lowercase to do case insensitive search my $lower_text = lc($text); - # split the text we search for to separate words + # split the text we search for into separate words my @words = split(/\s+/, $lower_text); - # search for occurence of all specified words in the column - return "CASE WHEN (LOWER($column) LIKE ${quote}%" . - join("%${quote} AND LOWER($column) LIKE ${quote}%", @words) . - "%${quote}) THEN 1 ELSE 0 END"; + # surround the words with wildcards and SQL quotes so we can use them + # in LIKE search clauses + @words = map($self->quote("%$_%"), @words); + + # untaint words, since they are safe to use now that we've quoted them + map(trick_taint($_), @words); + + # turn the words into a set of LIKE search clauses + @words = map("LOWER($column) LIKE $_", @words); + + # search for occurrences of all specified words in the column + return "CASE WHEN (" . join(" AND ", @words) . ") THEN 1 ELSE 0 END"; } ##################################################################### @@ -298,7 +302,7 @@ sub bz_get_field_defs { my ($self) = @_; my $extra = ""; - if (!UserInGroup(Param('timetrackinggroup'))) { + if (!Bugzilla->user->in_group(Param('timetrackinggroup'))) { $extra = "AND name NOT IN ('estimated_time', 'remaining_time', " . "'work_time', 'percentage_complete', 'deadline')"; } @@ -661,7 +665,7 @@ sub bz_table_info { sub bz_table_columns { my ($self, $table) = @_; - return $self->_bz_schema->get_table_columns($table); + return $self->_bz_real_schema->get_table_columns($table); } ##################################################################### @@ -1101,7 +1105,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>. searches (case insensitive) in format suitable for a given database. Abstract method, should be overriden by database specific code. - Params: none + Params: $expr = SQL expression for the text to be searched (scalar) + $pattern = the regular expression to search for (scalar) Returns: formatted SQL for regular expression search (e.g. REGEXP) (scalar) @@ -1111,7 +1116,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>. regex searches (case insensitive) in format suitable for a given database. Abstract method, should be overriden by database specific code. - Params: none + Params: $expr = SQL expression for the text to be searched (scalar) + $pattern = the regular expression to search for (scalar) Returns: formatted SQL for negative regular expression search (e.g. NOT REGEXP) (scalar) @@ -1196,12 +1202,12 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>. specified text on a given column. There is a ANSI SQL version of this method implemented using LIKE operator, but it's not a real full text search. DB specific - modules shoud override this, as this generic implementation will + modules should override this, as this generic implementation will be always much slower. This generic implementation returns 'relevance' as 0 for no match, or 1 for a match. Params: $column = name of column to search (scalar) $text = text to search for (scalar) - Returns: formatted SQL for for full text search + Returns: formatted SQL for full text search =item C<sql_istrcmp> diff --git a/Bugzilla/DB/CVS/Entries b/Bugzilla/DB/CVS/Entries index 64d3d33ab..fc8207bc2 100644 --- a/Bugzilla/DB/CVS/Entries +++ b/Bugzilla/DB/CVS/Entries @@ -1,4 +1,4 @@ -/Mysql.pm/1.24.2.7/Thu Dec 29 22:28:52 2005//TBUGZILLA-2_20_2 -/Pg.pm/1.12.2.4/Fri Dec 23 02:08:50 2005//TBUGZILLA-2_20_2 -/Schema.pm/1.32.2.4/Sun Sep 25 20:42:20 2005//TBUGZILLA-2_20_2 +/Mysql.pm/1.36/Thu Dec 29 22:27:26 2005//TBUGZILLA-2_22 +/Pg.pm/1.18/Fri Dec 23 02:01:54 2005//TBUGZILLA-2_22 +/Schema.pm/1.45/Fri Jan 6 14:38:42 2006//TBUGZILLA-2_22 D/Schema//// diff --git a/Bugzilla/DB/CVS/Tag b/Bugzilla/DB/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/DB/CVS/Tag +++ b/Bugzilla/DB/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm index 0e0cc2e1d..e03fbc910 100644 --- a/Bugzilla/DB/Mysql.pm +++ b/Bugzilla/DB/Mysql.pm @@ -23,6 +23,7 @@ # Dave Lawrence <dkl@redhat.com> # Tomas Kopal <Tomas.Kopal@altap.cz> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Lance Larsh <lance.larsh@oracle.com> =head1 NAME @@ -42,12 +43,13 @@ package Bugzilla::DB::Mysql; use strict; +use Bugzilla::Util; use Bugzilla::Error; # This module extends the DB interface via inheritance use base qw(Bugzilla::DB); -use constant REQUIRED_VERSION => '3.23.41'; +use constant REQUIRED_VERSION => '4.0.14'; use constant PROGRAM_NAME => 'MySQL'; use constant MODULE_NAME => 'Mysql'; use constant DBD_VERSION => '2.9003'; @@ -82,11 +84,15 @@ sub bz_last_key { } sub sql_regexp { - return "REGEXP"; + my ($self, $expr, $pattern) = @_; + + return "$expr REGEXP $pattern"; } sub sql_not_regexp { - return "NOT REGEXP"; + my ($self, $expr, $pattern) = @_; + + return "$expr NOT REGEXP $pattern"; } sub sql_limit { @@ -108,7 +114,17 @@ sub sql_string_concat { sub sql_fulltext_search { my ($self, $column, $text) = @_; - return "MATCH($column) AGAINST($text)"; + # Add the boolean mode modifier if the search string contains + # boolean operators. + my $mode = ($text =~ /[+-<>()~*"]/ ? "IN BOOLEAN MODE" : ""); + + # quote the text for use in the MATCH AGAINST expression + $text = $self->quote($text); + + # untaint the text, since it's safe to use now that we've quoted it + trick_taint($text); + + return "MATCH($column) AGAINST($text $mode)"; } sub sql_istring { @@ -252,6 +268,17 @@ sub bz_setup_database { print "\nISAM->MyISAM table conversion done.\n\n"; } + # There is a bug in MySQL 4.1.0 - 4.1.15 that makes certain SELECT + # statements fail after a SHOW TABLE STATUS: + # http://bugs.mysql.com/bug.php?id=13535 + # This is a workaround, a dummy SELECT to reset the LAST_INSERT_ID. + my @tables = $self->bz_table_list_real(); + if (lsearch(\@tables, 'bugs') != -1 + && $self->bz_column_info_real("bugs", "bug_id")) + { + $self->do('SELECT 1 FROM bugs WHERE bug_id IS NULL'); + } + # Versions of Bugzilla before the existence of Bugzilla::DB::Schema did # not provide explicit names for the table indexes. This means # that our upgrades will not be reliable, because we look for the name @@ -267,7 +294,6 @@ sub bz_setup_database { # has existed at least since Bugzilla 2.8, and probably earlier. # For fixing the inconsistent naming of Schema indexes, # we also check for one of those inconsistently-named indexes. - my @tables = $self->bz_table_list_real(); if ( scalar(@tables) && ($self->bz_index_info_real('bugs', 'assigned_to') || $self->bz_index_info_real('flags', 'flags_bidattid_idx')) ) @@ -501,6 +527,16 @@ sub bz_setup_database { {TYPE => 'DATETIME', NOTNULL => 1}); } + # 2005-09-24 - bugreport@peshkin.net, bug 307602 + # Make sure that default 4G table limit is overridden + my $row = $self->selectrow_hashref("SHOW TABLE STATUS LIKE 'attach_data'"); + if ($$row{'Create_options'} !~ /MAX_ROWS/i) { + print "Converting attach_data maximum size to 100G...\n"; + $self->do("ALTER TABLE attach_data + AVG_ROW_LENGTH=1000000, + MAX_ROWS=100000"); + } + } diff --git a/Bugzilla/DB/Pg.pm b/Bugzilla/DB/Pg.pm index e0a8e7ff5..a8f54f903 100644 --- a/Bugzilla/DB/Pg.pm +++ b/Bugzilla/DB/Pg.pm @@ -23,6 +23,7 @@ # Dave Lawrence <dkl@redhat.com> # Tomas Kopal <Tomas.Kopal@altap.cz> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Lance Larsh <lance.larsh@oracle.com> =head1 NAME @@ -89,11 +90,15 @@ sub bz_last_key { } sub sql_regexp { - return "~*"; + my ($self, $expr, $pattern) = @_; + + return "$expr ~* $pattern"; } sub sql_not_regexp { - return "!~*" + my ($self, $expr, $pattern) = @_; + + return "$expr !~* $pattern" } sub sql_limit { @@ -115,7 +120,7 @@ sub sql_from_days { sub sql_to_days { my ($self, $date) = @_; - return "TO_CHAR($date, 'J')::int"; + return "TO_CHAR(${date}::date, 'J')::int"; } sub sql_date_format { diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index 3bb2a8598..63b19578d 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -20,6 +20,7 @@ # Contributor(s): Andrew Dunstan <andrew@dunslane.net>, # Edward J. Sabol <edwardjsabol@iname.com> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Lance Larsh <lance.larsh@oracle.com> # Dennis Melentyev <dennis.melentyev@infopulse.com.ua> package Bugzilla::DB::Schema; @@ -307,12 +308,13 @@ use constant ABSTRACT_SCHEMA => { mimetype => {TYPE => 'MEDIUMTEXT', NOTNULL => 1}, ispatch => {TYPE => 'BOOLEAN'}, filename => {TYPE => 'varchar(100)', NOTNULL => 1}, - thedata => {TYPE => 'LONGBLOB', NOTNULL => 1}, submitter_id => {TYPE => 'INT3', NOTNULL => 1}, isobsolete => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, isprivate => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, + isurl => {TYPE => 'BOOLEAN', NOTNULL => 1, + DEFAULT => 'FALSE'}, ], INDEXES => [ attachments_bug_id_idx => ['bug_id'], @@ -320,6 +322,13 @@ use constant ABSTRACT_SCHEMA => { attachments_submitter_id_idx => ['submitter_id', 'bug_id'], ], }, + attach_data => { + FIELDS => [ + id => {TYPE => 'INT3', NOTNULL => 1, + PRIMARYKEY => 1}, + thedata => {TYPE => 'LONGBLOB', NOTNULL => 1}, + ], + }, duplicates => { FIELDS => [ @@ -656,6 +665,7 @@ use constant ABSTRACT_SCHEMA => { name => {TYPE => 'varchar(64)', NOTNULL => 1}, linkinfooter => {TYPE => 'BOOLEAN', NOTNULL => 1}, query => {TYPE => 'MEDIUMTEXT', NOTNULL => 1}, + query_type => {TYPE => 'BOOLEAN', NOTNULL => 1}, ], INDEXES => [ namedqueries_userid_idx => {FIELDS => [qw(userid name)], @@ -668,7 +678,7 @@ use constant ABSTRACT_SCHEMA => { logincookies => { FIELDS => [ - cookie => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1, + cookie => {TYPE => 'varchar(16)', NOTNULL => 1, PRIMARYKEY => 1}, userid => {TYPE => 'INT3', NOTNULL => 1}, ipaddr => {TYPE => 'varchar(40)', NOTNULL => 1}, @@ -707,7 +717,8 @@ use constant ABSTRACT_SCHEMA => { description => {TYPE => 'TEXT', NOTNULL => 1}, isbuggroup => {TYPE => 'BOOLEAN', NOTNULL => 1}, last_changed => {TYPE => 'DATETIME', NOTNULL => 1}, - userregexp => {TYPE => 'TINYTEXT', NOTNULL => 1}, + userregexp => {TYPE => 'TINYTEXT', NOTNULL => 1, + DEFAULT => "''"}, isactive => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'TRUE'}, ], @@ -872,7 +883,7 @@ use constant ABSTRACT_SCHEMA => { frequency => {TYPE => 'INT2', NOTNULL => 1}, last_viewed => {TYPE => 'DATETIME'}, query => {TYPE => 'MEDIUMTEXT', NOTNULL => 1}, - public => {TYPE => 'BOOLEAN', NOTNULL => 1, + is_public => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, ], INDEXES => [ @@ -1198,8 +1209,10 @@ sub get_type_ddl { my $fkref = $self->{enable_references} ? $finfo->{REFERENCES} : undef; my $type_ddl = $self->{db_specific}{$type} || $type; - $type_ddl .= " NOT NULL" if ($finfo->{NOTNULL}); + # DEFAULT attribute must appear before any column constraints + # (e.g., NOT NULL), for Oracle $type_ddl .= " DEFAULT $default" if (defined($default)); + $type_ddl .= " NOT NULL" if ($finfo->{NOTNULL}); $type_ddl .= " PRIMARY KEY" if ($finfo->{PRIMARYKEY}); $type_ddl .= "\n\t\t\t\tREFERENCES $fkref" if $fkref; diff --git a/Bugzilla/DB/Schema/CVS/Entries b/Bugzilla/DB/Schema/CVS/Entries index 291e1c2b9..869fb7260 100644 --- a/Bugzilla/DB/Schema/CVS/Entries +++ b/Bugzilla/DB/Schema/CVS/Entries @@ -1,3 +1,3 @@ -/Mysql.pm/1.10.2.1/Mon Aug 1 10:11:59 2005//TBUGZILLA-2_20_2 -/Pg.pm/1.9/Wed Jun 15 03:54:59 2005//TBUGZILLA-2_20_2 +/Mysql.pm/1.12/Sun Dec 18 18:53:00 2005//TBUGZILLA-2_22 +/Pg.pm/1.9/Wed Jun 15 03:54:59 2005//TBUGZILLA-2_22 D diff --git a/Bugzilla/DB/Schema/CVS/Tag b/Bugzilla/DB/Schema/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/DB/Schema/CVS/Tag +++ b/Bugzilla/DB/Schema/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/DB/Schema/Mysql.pm b/Bugzilla/DB/Schema/Mysql.pm index ba6ac7280..04ea92162 100644 --- a/Bugzilla/DB/Schema/Mysql.pm +++ b/Bugzilla/DB/Schema/Mysql.pm @@ -153,12 +153,25 @@ sub _get_create_index_ddl { # MySQL has a simpler ALTER TABLE syntax than ANSI. sub get_alter_column_ddl { my ($self, $table, $column, $new_def, $set_nulls_to) = @_; - my $new_ddl = $self->get_type_ddl($new_def); + my $old_def = $self->get_column($table, $column); + my %new_def_copy = %$new_def; + if ($old_def->{PRIMARYKEY} && $new_def->{PRIMARYKEY}) { + # If a column stays a primary key do NOT specify PRIMARY KEY in the + # ALTER TABLE statement. This avoids a MySQL error that two primary + # keys are not allowed. + delete $new_def_copy{PRIMARYKEY}; + } + + my $new_ddl = $self->get_type_ddl(\%new_def_copy); my @statements; push(@statements, "UPDATE $table SET $column = $set_nulls_to WHERE $column IS NULL") if defined $set_nulls_to; push(@statements, "ALTER TABLE $table CHANGE COLUMN $column $column $new_ddl"); + if ($old_def->{PRIMARYKEY} && !$new_def->{PRIMARYKEY}) { + # Dropping a PRIMARY KEY needs an explicit DROP PRIMARY KEY + push(@statements, "ALTER TABLE $table DROP PRIMARY KEY"); + } return @statements; } diff --git a/Bugzilla/Error.pm b/Bugzilla/Error.pm index 0f4caf274..d23e68d78 100644 --- a/Bugzilla/Error.pm +++ b/Bugzilla/Error.pm @@ -51,6 +51,7 @@ sub _throw_error { $mesg .= "$name $error "; $mesg .= "$ENV{REMOTE_ADDR} " if $ENV{REMOTE_ADDR}; $mesg .= Bugzilla->user->login; + $mesg .= (' actually ' . Bugzilla->sudoer->login) if Bugzilla->sudoer; $mesg .= "\n"; my %params = Bugzilla->cgi->Vars; $Data::Dumper::Useqq = 1; diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm new file mode 100644 index 000000000..09c4731ac --- /dev/null +++ b/Bugzilla/Field.pm @@ -0,0 +1,131 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Dan Mosedale <dmose@mozilla.org> +# Fr�d�ric Buclin <LpSolit@gmail.com> + +package Bugzilla::Field; + +use strict; + +use base qw(Exporter); +@Bugzilla::Field::EXPORT = qw(check_form_field check_form_field_defined + get_field_id); + +use Bugzilla::Util; +use Bugzilla::Error; + + +sub check_form_field { + my ($cgi, $fieldname, $legalsRef) = @_; + my $dbh = Bugzilla->dbh; + + if (!defined $cgi->param($fieldname) + || trim($cgi->param($fieldname)) eq "" + || (defined($legalsRef) + && lsearch($legalsRef, $cgi->param($fieldname)) < 0)) + { + trick_taint($fieldname); + my ($result) = $dbh->selectrow_array("SELECT description FROM fielddefs + WHERE name = ?", undef, $fieldname); + + my $field = $result || $fieldname; + ThrowCodeError("illegal_field", { field => $field }); + } +} + +sub check_form_field_defined { + my ($cgi, $fieldname) = @_; + + if (!defined $cgi->param($fieldname)) { + ThrowCodeError("undefined_field", { field => $fieldname }); + } +} + +sub get_field_id { + my ($name) = @_; + my $dbh = Bugzilla->dbh; + + trick_taint($name); + my $id = $dbh->selectrow_array('SELECT fieldid FROM fielddefs + WHERE name = ?', undef, $name); + + ThrowCodeError('invalid_field_name', {field => $name}) unless $id; + return $id +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Field - Useful routines for fields manipulation + +=head1 SYNOPSIS + + use Bugzilla::Field; + + # Validation Routines + check_form_field($cgi, $fieldname, \@legal_values); + check_form_field_defined($cgi, $fieldname); + $fieldid = get_field_id($fieldname); + +=head1 DESCRIPTION + +This package provides functions for dealing with CGI form fields. + +=head1 FUNCTIONS + +This package provides several types of routines: + +=head2 Validation + +=over + +=item C<check_form_field($cgi, $fieldname, \@legal_values)> + +Description: Makes sure the field $fieldname is defined and its value + is non empty. If @legal_values is defined, this routine + also checks whether its value is one of the legal values + associated with this field. If the test fails, an error + is thrown. + +Params: $cgi - a CGI object + $fieldname - the field name to check + @legal_values - (optional) ref to a list of legal values + +Returns: nothing + +=item C<check_form_field_defined($cgi, $fieldname)> + +Description: Makes sure the field $fieldname is defined and its value + is non empty. Else an error is thrown. + +Params: $cgi - a CGI object + $fieldname - the field name to check + +Returns: nothing + +=item C<get_field_id($fieldname)> + +Description: Returns the ID of the specified field name and throws + an error if this field does not exist. + +Params: $fieldname - a field name + +Returns: the corresponding field ID or an error if the field name + does not exist. + +=back diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 643c6635b..a3929a970 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -37,12 +37,11 @@ See below for more information. =item * Prior to calling routines in this module, it's assumed that you have -already done a C<require CGI.pl>. This will eventually change in a -future version when CGI.pl is removed. +already done a C<require globals.pl>. =item * -Import relevant functions from that script and its companion globals.pl. +Import relevant functions from that script. =item * @@ -73,10 +72,7 @@ use Bugzilla::Error; use Bugzilla::Attachment; use Bugzilla::BugMail; use Bugzilla::Constants; - -# Note that this line doesn't actually import these variables for some reason, -# so I have to use them as $::template and $::vars in the package code. -use vars qw($template $vars); +use Bugzilla::Field; ###################################################################### # Global Variables @@ -282,6 +278,7 @@ sub validate { foreach my $id (@ids) { my $status = $cgi->param("flag-$id"); + my @requestees = $cgi->param("requestee-$id"); # Make sure the flag exists. my $flag = get($id); @@ -298,66 +295,79 @@ sub validate { { id => $id, status => $status }); # Make sure the user didn't request the flag unless it's requestable. - # If the flag was requested before it became unrequestable, leave it as is. - if ($status eq '?' && $flag->{status} ne '?' && - !$flag->{type}->{is_requestable}) { + # If the flag was requested before it became unrequestable, leave it + # as is. + if ($status eq '?' + && $flag->{status} ne '?' + && !$flag->{type}->{is_requestable}) + { ThrowCodeError("flag_status_invalid", { id => $id, status => $status }); } # Make sure the user didn't specify a requestee unless the flag # is specifically requestable. If the requestee was set before - # the flag became specifically unrequestable, leave it as is. - my $old_requestee = - $flag->{'requestee'} ? $flag->{'requestee'}->login : ''; - my $new_requestee = trim($cgi->param("requestee-$id") || ''); + # the flag became specifically unrequestable, don't let the user + # change the requestee, but let the user remove it by entering + # an empty string for the requestee. + if ($status eq '?' && !$flag->{type}->{is_requesteeble}) { + my $old_requestee = + $flag->{'requestee'} ? $flag->{'requestee'}->login : ''; + my $new_requestee = join('', @requestees); + if ($new_requestee && $new_requestee ne $old_requestee) { + ThrowCodeError("flag_requestee_disabled", + { type => $flag->{type} }); + } + } + # Make sure the user didn't enter multiple requestees for a flag + # that can't be requested from more than one person at a time. if ($status eq '?' - && !$flag->{type}->{is_requesteeble} - && $new_requestee - && ($new_requestee ne $old_requestee)) + && !$flag->{type}->{is_multiplicable} + && scalar(@requestees) > 1) { - ThrowCodeError("flag_requestee_disabled", - { name => $flag->{type}->{name} }); + ThrowUserError("flag_not_multiplicable", { type => $flag->{type} }); } - # Make sure the requestee is authorized to access the bug. + # Make sure the requestees are authorized to access the bug. # (and attachment, if this installation is using the "insider group" # feature and the attachment is marked private). - if ($status eq '?' - && $flag->{type}->{is_requesteeble} - && $new_requestee - && ($old_requestee ne $new_requestee)) - { - # We know the requestee exists because we ran - # Bugzilla::User::match_field before getting here. - my $requestee = Bugzilla::User->new_from_login($new_requestee); - - # Throw an error if the user can't see the bug. - # Note that if permissions on this bug are changed, - # can_see_bug() will refer to old settings. - if (!$requestee->can_see_bug($bug_id)) { - ThrowUserError("flag_requestee_unauthorized", - { flag_type => $flag->{'type'}, - requestee => $requestee, - bug_id => $bug_id, - attach_id => - $flag->{target}->{attachment}->{id} }); - } - - # Throw an error if the target is a private attachment and - # the requestee isn't in the group of insiders who can see it. - if ($flag->{target}->{attachment}->{exists} - && $cgi->param('isprivate') - && Param("insidergroup") - && !$requestee->in_group(Param("insidergroup"))) - { - ThrowUserError("flag_requestee_unauthorized_attachment", - { flag_type => $flag->{'type'}, - requestee => $requestee, - bug_id => $bug_id, - attach_id => - $flag->{target}->{attachment}->{id} }); + if ($status eq '?' && $flag->{type}->{is_requesteeble}) { + my $old_requestee = + $flag->{'requestee'} ? $flag->{'requestee'}->login : ''; + foreach my $login (@requestees) { + next if $login eq $old_requestee; + + # We know the requestee exists because we ran + # Bugzilla::User::match_field before getting here. + my $requestee = Bugzilla::User->new_from_login($login); + + # Throw an error if the user can't see the bug. + # Note that if permissions on this bug are changed, + # can_see_bug() will refer to old settings. + if (!$requestee->can_see_bug($bug_id)) { + ThrowUserError("flag_requestee_unauthorized", + { flag_type => $flag->{'type'}, + requestee => $requestee, + bug_id => $bug_id, + attachment => $flag->{target}->{attachment} + }); + } + + # Throw an error if the target is a private attachment and + # the requestee isn't in the group of insiders who can see it. + if ($flag->{target}->{attachment} + && $cgi->param('isprivate') + && Param("insidergroup") + && !$requestee->in_group(Param("insidergroup"))) + { + ThrowUserError("flag_requestee_unauthorized_attachment", + { flag_type => $flag->{'type'}, + requestee => $requestee, + bug_id => $bug_id, + attachment => $flag->{target}->{attachment} + }); + } } } @@ -418,14 +428,17 @@ used to obtain the flag fields that the user submitted. =cut sub process { - my ($target, $timestamp, $cgi) = @_; + my ($bug_id, $attach_id, $timestamp, $cgi) = @_; my $dbh = Bugzilla->dbh; - my $bug_id = $target->{'bug'}->{'id'}; - my $attach_id = $target->{'attachment'}->{'id'}; + my $target = get_target($bug_id, $attach_id); + # Make sure the target exists. + return unless $target->{'exists'}; # Use the date/time we were given if possible (allowing calling code # to synchronize the comment's timestamp with those of other records). + # XXX - we shouldn't quote the timestamp here, but this would involve + # many changes in this file. $timestamp = ($timestamp ? &::SqlQuote($timestamp) : "NOW()"); # Take a snapshot of flags before any changes. @@ -481,6 +494,7 @@ sub process { sub update_activity { my ($bug_id, $attach_id, $timestamp, $old_summaries, $new_summaries) = @_; my $dbh = Bugzilla->dbh; + my $user_id = Bugzilla->user->id; $attach_id ||= 'NULL'; $old_summaries = join(", ", @$old_summaries); @@ -489,10 +503,10 @@ sub update_activity { if ($removed ne $added) { my $sql_removed = &::SqlQuote($removed); my $sql_added = &::SqlQuote($added); - my $field_id = &::GetFieldID('flagtypes.name'); + my $field_id = get_field_id('flagtypes.name'); $dbh->do("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) - VALUES ($bug_id, $attach_id, $::userid, $timestamp, + VALUES ($bug_id, $attach_id, $user_id, $timestamp, $field_id, $sql_removed, $sql_added)"); $dbh->do("UPDATE bugs SET delta_ts = $timestamp WHERE bug_id = ?", @@ -521,7 +535,9 @@ sub create { $flag->{'id'} = (&::FetchOneColumn() || 0) + 1; # Insert a record for the flag into the flags table. - my $attach_id = $flag->{'target'}->{'attachment'}->{'id'} || "NULL"; + my $attach_id = + $flag->{target}->{attachment} ? $flag->{target}->{attachment}->{id} + : "NULL"; my $requestee_id = $flag->{'requestee'} ? $flag->{'requestee'}->id : "NULL"; &::SendSQL("INSERT INTO flags (id, type_id, bug_id, attach_id, @@ -591,11 +607,8 @@ attachment.cgi midairs. See bug 223878 for details. sub modify { my ($cgi, $timestamp) = @_; + my $setter = Bugzilla->user; - # Use the date/time we were given if possible (allowing calling code - # to synchronize the comment's timestamp with those of other records). - $timestamp = ($timestamp ? &::SqlQuote($timestamp) : "NOW()"); - # Extract a list of flags from the form data. my @ids = map(/^flag-(\d+)$/ ? $1 : (), $cgi->param()); @@ -608,9 +621,34 @@ sub modify { my $flag = get($id); my $status = $cgi->param("flag-$id"); - my $requestee_email = trim($cgi->param("requestee-$id") || ''); - + # If the user entered more than one name into the requestee field + # (i.e. they want more than one person to set the flag) we can reuse + # the existing flag for the first person (who may well be the existing + # requestee), but we have to create new flags for each additional. + my @requestees = $cgi->param("requestee-$id"); + my $requestee_email; + if ($status eq "?" + && scalar(@requestees) > 1 + && $flag->{type}->{is_multiplicable}) + { + # The first person, for which we'll reuse the existing flag. + $requestee_email = shift(@requestees); + + # Create new flags like the existing one for each additional person. + foreach my $login (@requestees) { + create({ type => $flag->{type} , + target => $flag->{target} , + setter => $setter, + status => "?", + requestee => new Bugzilla::User(login_to_id($login)) }, + $timestamp); + } + } + else { + $requestee_email = trim($cgi->param("requestee-$id") || ''); + } + # Ignore flags the user didn't change. There are two components here: # either the status changes (trivial) or the requestee changes. # Change of either field will cause full update of the flag. @@ -640,7 +678,7 @@ sub modify { if ($status eq '+' || $status eq '-') { &::SendSQL("UPDATE flags - SET setter_id = $::userid , + SET setter_id = " . $setter->id . ", requestee_id = NULL , status = '$status' , modification_date = $timestamp , @@ -654,7 +692,7 @@ sub modify { $requester = $flag->{'setter'}; } # Now update the flag object with its new values. - $flag->{'setter'} = Bugzilla->user; + $flag->{'setter'} = $setter; $flag->{'requestee'} = undef; $flag->{'status'} = $status; @@ -681,7 +719,7 @@ sub modify { # Update the database with the changes. &::SendSQL("UPDATE flags - SET setter_id = $::userid , + SET setter_id = " . $setter->id . ", requestee_id = $requestee_id , status = '$status' , modification_date = $timestamp , @@ -689,7 +727,7 @@ sub modify { WHERE id = $flag->{'id'}"); # Now update the flag object with its new values. - $flag->{'setter'} = Bugzilla->user; + $flag->{'setter'} = $setter; $flag->{'status'} = $status; # Send an email notifying the relevant parties about the request. @@ -773,17 +811,14 @@ array of flag objects. This array is then passed to Flag::create(). sub FormToNewFlags { my ($target, $cgi) = @_; - my $dbh = Bugzilla->dbh; + my $setter = Bugzilla->user; # Extract a list of flag type IDs from field names. my @type_ids = map(/^flag_type-(\d+)$/ ? $1 : (), $cgi->param()); @type_ids = grep($cgi->param("flag_type-$_") ne 'X', @type_ids); - return () unless (scalar(@type_ids) && $target->{'exists'}); - - # Get information about the setter to add to each flag. - my $setter = new Bugzilla::User($::userid); + return () unless scalar(@type_ids); # Get a list of active flag types available for this target. my $flag_types = Bugzilla::FlagType::match( @@ -804,7 +839,8 @@ sub FormToNewFlags { { 'type_id' => $type_id, 'target_type' => $target->{'type'}, 'bug_id' => $target->{'bug'}->{'id'}, - 'attach_id' => $target->{'attachment'}->{'id'}, + 'attach_id' => $target->{'attachment'} ? + $target->{'attachment'}->{'id'} : undef, 'is_active' => 1 }); # Do not create a new flag of this type if this flag type is @@ -813,25 +849,25 @@ sub FormToNewFlags { my $status = $cgi->param("flag_type-$type_id"); trick_taint($status); - - # Create the flag record and populate it with data from the form. - my $flag = { - type => $flag_type , - target => $target , - setter => $setter , - status => $status - }; - - if ($status eq "?") { - my $requestee = $cgi->param("requestee_type-$type_id"); - if ($requestee) { - my $requestee_id = login_to_id($requestee); - $flag->{'requestee'} = new Bugzilla::User($requestee_id); + + my @logins = $cgi->param("requestee_type-$type_id"); + if ($status eq "?" && scalar(@logins) > 0) { + foreach my $login (@logins) { + my $requestee = new Bugzilla::User(login_to_id($login)); + push (@flags, { type => $flag_type , + target => $target , + setter => $setter , + status => $status , + requestee => $requestee }); + last if !$flag_type->{'is_multiplicable'}; } } - - # Add the flag to the array of flags. - push(@flags, $flag); + else { + push (@flags, { type => $flag_type , + target => $target , + setter => $setter , + status => $status }); + } } # Return the list of flags. @@ -884,7 +920,7 @@ sub GetBug { =over -=item C<GetTarget($bug_id, $attach_id)> +=item C<get_target($bug_id, $attach_id)> Someone please document this function. @@ -892,22 +928,25 @@ Someone please document this function. =cut -sub GetTarget { +sub get_target { my ($bug_id, $attach_id) = @_; # Create an object representing the target bug/attachment. my $target = { 'exists' => 0 }; if ($attach_id) { - $target->{'attachment'} = new Bugzilla::Attachment($attach_id); + $target->{'attachment'} = Bugzilla::Attachment->get($attach_id); if ($bug_id) { # Make sure the bug and attachment IDs correspond to each other # (i.e. this is the bug to which this attachment is attached). - $bug_id == $target->{'attachment'}->{'bug_id'} - || return { 'exists' => 0 }; + if (!$target->{'attachment'} + || $target->{'attachment'}->{'bug_id'} != $bug_id) + { + return { 'exists' => 0 }; + } } - $target->{'bug'} = GetBug($target->{'attachment'}->{'bug_id'}); - $target->{'exists'} = $target->{'attachment'}->{'exists'}; + $target->{'bug'} = GetBug($bug_id); + $target->{'exists'} = 1; $target->{'type'} = "attachment"; } elsif ($bug_id) { @@ -935,25 +974,26 @@ or deleted. sub notify { my ($flag, $template_file) = @_; + my $template = Bugzilla->template; + # There is nobody to notify. return unless ($flag->{'addressee'} || $flag->{'type'}->{'cc_list'}); + my $attachment_is_private = $flag->{'target'}->{'attachment'} ? + $flag->{'target'}->{'attachment'}->{'isprivate'} : undef; + # If the target bug is restricted to one or more groups, then we need # to make sure we don't send email about it to unauthorized users # on the request type's CC: list, so we have to trawl the list for users # not in those groups or email addresses that don't have an account. - if ($flag->{'target'}->{'bug'}->{'restricted'} - || $flag->{'target'}->{'attachment'}->{'isprivate'}) - { + if ($flag->{'target'}->{'bug'}->{'restricted'} || $attachment_is_private) { my @new_cc_list; foreach my $cc (split(/[, ]+/, $flag->{'type'}->{'cc_list'})) { - my $ccuser = Bugzilla::User->new_from_login($cc, - DERIVE_GROUPS_TABLES_ALREADY_LOCKED) - || next; + my $ccuser = Bugzilla::User->new_from_login($cc) || next; next if $flag->{'target'}->{'bug'}->{'restricted'} && !$ccuser->can_see_bug($flag->{'target'}->{'bug'}->{'id'}); - next if $flag->{'target'}->{'attachment'}->{'isprivate'} + next if $attachment_is_private && Param("insidergroup") && !$ccuser->in_group(Param("insidergroup")); push(@new_cc_list, $cc); @@ -964,19 +1004,17 @@ sub notify { # If there is nobody left to notify, return. return unless ($flag->{'addressee'} || $flag->{'type'}->{'cc_list'}); - $::vars->{'flag'} = $flag; - # Process and send notification for each recipient foreach my $to ($flag->{'addressee'} ? $flag->{'addressee'}->email : '', split(/[, ]+/, $flag->{'type'}->{'cc_list'})) { next unless $to; + my $vars = { 'flag' => $flag, 'to' => $to }; my $message; - $::vars->{'to'} = $to; - my $rv = $::template->process($template_file, $::vars, \$message); + my $rv = $template->process($template_file, $vars, \$message); if (!$rv) { Bugzilla->cgi->header(); - ThrowTemplateError($::template->error()); + ThrowTemplateError($template->error()); } Bugzilla::BugMail::MessageToMTA($message); @@ -1087,7 +1125,7 @@ sub perlify_record { exists => $exists , id => $id , type => Bugzilla::FlagType::get($type_id) , - target => GetTarget($bug_id, $attach_id) , + target => get_target($bug_id, $attach_id) , requestee => $requestee_id ? new Bugzilla::User($requestee_id) : undef, setter => new Bugzilla::User($setter_id) , status => $status , diff --git a/Bugzilla/FlagType.pm b/Bugzilla/FlagType.pm index 49620e332..950aeea9a 100644 --- a/Bugzilla/FlagType.pm +++ b/Bugzilla/FlagType.pm @@ -35,8 +35,7 @@ See below for more information. =item * Prior to calling routines in this module, it's assumed that you have -already done a C<require CGI.pl>. This will eventually change in a -future version when CGI.pl is removed. +already done a C<require globals.pl>. =item * @@ -356,6 +355,7 @@ sub validate { foreach my $id (@ids) { my $status = $cgi->param("flag_type-$id"); + my @requestees = $cgi->param("requestee_type-$id"); # Don't bother validating types the user didn't touch. next if $status eq "X"; @@ -378,48 +378,53 @@ sub validate { # Make sure the user didn't specify a requestee unless the flag # is specifically requestable. - my $new_requestee = trim($cgi->param("requestee_type-$id") || ''); - if ($status eq '?' && !$flag_type->{is_requesteeble} - && $new_requestee) + && scalar(@requestees) > 0) { - ThrowCodeError("flag_requestee_disabled", - { name => $flag_type->{name} }); + ThrowCodeError("flag_requestee_disabled", { type => $flag_type }); } - # Make sure the requestee is authorized to access the bug - # (and attachment, if this installation is using the "insider group" - # feature and the attachment is marked private). + # Make sure the user didn't enter multiple requestees for a flag + # that can't be requested from more than one person at a time. if ($status eq '?' - && $flag_type->{is_requesteeble} - && $new_requestee) + && !$flag_type->{is_multiplicable} + && scalar(@requestees) > 1) { - # We know the requestee exists because we ran - # Bugzilla::User::match_field before getting here. - my $requestee = Bugzilla::User->new_from_login($new_requestee); - - # Throw an error if the user can't see the bug. - if (!$requestee->can_see_bug($bug_id)) { - ThrowUserError("flag_requestee_unauthorized", - { flag_type => $flag_type, - requestee => $requestee, - bug_id => $bug_id, - attach_id => $attach_id }); - } - - # Throw an error if the target is a private attachment and - # the requestee isn't in the group of insiders who can see it. - if ($attach_id - && Param("insidergroup") - && $cgi->param('isprivate') - && !$requestee->in_group(Param("insidergroup"))) - { - ThrowUserError("flag_requestee_unauthorized_attachment", - { flag_type => $flag_type, - requestee => $requestee, - bug_id => $bug_id, - attach_id => $attach_id }); + ThrowUserError("flag_not_multiplicable", { type => $flag_type }); + } + + # Make sure the requestees are authorized to access the bug + # (and attachment, if this installation is using the "insider group" + # feature and the attachment is marked private). + if ($status eq '?' && $flag_type->{is_requesteeble}) { + foreach my $login (@requestees) { + # We know the requestee exists because we ran + # Bugzilla::User::match_field before getting here. + my $requestee = Bugzilla::User->new_from_login($login); + + # Throw an error if the user can't see the bug. + if (!$requestee->can_see_bug($bug_id)) { + ThrowUserError("flag_requestee_unauthorized", + { flag_type => $flag_type, + requestee => $requestee, + bug_id => $bug_id, + attach_id => $attach_id }); + } + + # Throw an error if the target is a private attachment and + # the requestee isn't in the group of insiders who can see it. + if ($attach_id + && Param("insidergroup") + && $cgi->param('isprivate') + && !$requestee->in_group(Param("insidergroup"))) + { + ThrowUserError("flag_requestee_unauthorized_attachment", + { flag_type => $flag_type, + requestee => $requestee, + bug_id => $bug_id, + attach_id => $attach_id }); + } } } diff --git a/Bugzilla/Group.pm b/Bugzilla/Group.pm index 2cb8e5342..32c4696db 100644 --- a/Bugzilla/Group.pm +++ b/Bugzilla/Group.pm @@ -19,16 +19,95 @@ # # Contributor(s): Joel Peshkin <bugreport@peshkin.net> # Erik Stambaugh <erik@dasbistro.com> +# Tiago R. Mello <timello@async.com.br> use strict; package Bugzilla::Group; use Bugzilla::Config; +use Bugzilla::Util; +use Bugzilla::Error; + +############################### +##### Module Initialization ### +############################### + +use constant DB_COLUMNS => qw( + groups.id + groups.name + groups.description + groups.isbuggroup + groups.last_changed + groups.userregexp + groups.isactive +); + +our $columns = join(", ", DB_COLUMNS); + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + my $self = {}; + bless($self, $class); + return $self->_init(@_); +} + +sub _init { + my $self = shift; + my ($param) = (@_); + my $dbh = Bugzilla->dbh; + + my $id = $param unless (ref $param eq 'HASH'); + my $group; + + if (defined $id) { + detaint_natural($id) + || ThrowCodeError('param_must_be_numeric', + {function => 'Bugzilla::Group::_init'}); + + $group = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM groups + WHERE id = ?}, undef, $id); + + } elsif (defined $param->{'name'}) { + + trick_taint($param->{'name'}); + + $group = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM groups + WHERE name = ?}, undef, $param->{'name'}); + + } else { + ThrowCodeError('bad_arg', + {argument => 'param', + function => 'Bugzilla::Group::_init'}); + } + + return undef unless (defined $group); + + foreach my $field (keys %$group) { + $self->{$field} = $group->{$field}; + } + return $self; +} + +############################### +#### Accessors ###### +############################### + +sub id { return $_[0]->{'id'}; } +sub name { return $_[0]->{'name'}; } +sub description { return $_[0]->{'description'}; } +sub is_bug_group { return $_[0]->{'isbuggroup'}; } +sub last_changed { return $_[0]->{'last_changed'}; } +sub user_regexp { return $_[0]->{'userregexp'}; } +sub is_active { return $_[0]->{'isactive'}; } + +################################ +##### Module Subroutines ### +################################ -# ValidateGroupName checks to see if ANY of the users in the provided list -# of user objects can see the named group. It returns the group id if -# successful and undef otherwise. sub ValidateGroupName { my ($name, @users) = (@_); my $dbh = Bugzilla->dbh; @@ -48,4 +127,92 @@ sub ValidateGroupName { return $ret; } +sub get_all_groups { + my $dbh = Bugzilla->dbh; + + my $group_ids = $dbh->selectcol_arrayref('SELECT id FROM groups + ORDER BY isbuggroup, name'); + + my @groups; + foreach my $gid (@$group_ids) { + push @groups, new Bugzilla::Group($gid); + } + return @groups; +} + 1; + +__END__ + +=head1 NAME + +Bugzilla::Group - Bugzilla group class. + +=head1 SYNOPSIS + + use Bugzilla::Group; + + my $group = new Bugzilla::Group(1); + my $group = new Bugzilla::Group({name => 'AcmeGroup'}); + + my $id = $group->id; + my $name = $group->name; + my $description = $group->description; + my $last_changed = $group->last_changed; + my $user_reg_exp = $group->user_reg_exp; + my $is_active = $group->is_active; + + my $group_id = Bugzilla::Group::ValidateGroupName('admin', @users); + my @groups = Bugzilla::get_all_groups(); + +=head1 DESCRIPTION + +Group.pm represents a Bugzilla Group object. + +=head1 METHODS + +=over + +=item C<new($param)> + + Description: The constructor is used to load an existing group + by passing a group id or a hash with the group name. + + Params: $param - If you pass an integer, the integer is the + group id from the database that we want to + read in. If you pass in a hash with 'name' + key, then the value of the name key is the + name of a product from the DB. + + Returns: A Bugzilla::Group object. + +=back + +=head1 SUBROUTINES + +=over + +=item C<ValidateGroupName($name, @users)> + + Description: ValidateGroupName checks to see if ANY of the users + in the provided list of user objects can see the + named group. + + Params: $name - String with the group name. + @users - An array with Bugzilla::User objects. + + Returns: It returns the group id if successful + and undef otherwise. + +=item C<get_all_groups()> + + Description: Returns all groups available, including both + system groups and bug groups. + + Params: none + + Returns: An array of group objects. + +=back + +=cut diff --git a/Bugzilla/Milestone.pm b/Bugzilla/Milestone.pm new file mode 100644 index 000000000..7b5d47d49 --- /dev/null +++ b/Bugzilla/Milestone.pm @@ -0,0 +1,195 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Tiago R. Mello <timello@async.com.br> + +use strict; + +package Bugzilla::Milestone; + +use Bugzilla::Util; +use Bugzilla::Error; + +################################ +##### Initialization ##### +################################ + +use constant DEFAULT_SORTKEY => 0; + +use constant DB_COLUMNS => qw( + milestones.value + milestones.product_id + milestones.sortkey +); + +my $columns = join(", ", DB_COLUMNS); + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + my $self = {}; + bless($self, $class); + return $self->_init(@_); +} + +sub _init { + my $self = shift; + my ($product_id, $value) = (@_); + my $dbh = Bugzilla->dbh; + + my $milestone; + + if (defined $product_id + && detaint_natural($product_id) + && defined $value) { + + trick_taint($value); + $milestone = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM milestones + WHERE value = ? + AND product_id = ?}, undef, ($value, $product_id)); + } else { + ThrowCodeError('bad_arg', + {argument => 'product_id/value', + function => 'Bugzilla::Milestone::_init'}); + } + + return undef unless (defined $milestone); + + foreach my $field (keys %$milestone) { + $self->{$field} = $milestone->{$field}; + } + return $self; +} + +sub bug_count { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'bug_count'}) { + $self->{'bug_count'} = $dbh->selectrow_array(q{ + SELECT COUNT(*) FROM bugs + WHERE product_id = ? AND target_milestone = ?}, + undef, $self->product_id, $self->name) || 0; + } + return $self->{'bug_count'}; +} + +################################ +##### Accessors ###### +################################ + +sub name { return $_[0]->{'value'}; } +sub product_id { return $_[0]->{'product_id'}; } +sub sortkey { return $_[0]->{'sortkey'}; } + +################################ +##### Subroutines ##### +################################ + +sub check_milestone { + my ($product, $milestone_name) = @_; + + unless ($milestone_name) { + ThrowUserError('milestone_not_specified'); + } + + my $milestone = new Bugzilla::Milestone($product->id, + $milestone_name); + unless ($milestone) { + ThrowUserError('milestone_not_valid', + {'product' => $product->name, + 'milestone' => $milestone_name}); + } + return $milestone; +} + +sub check_sort_key { + my ($milestone_name, $sortkey) = @_; + # Keep a copy in case detaint_signed() clears the sortkey + my $stored_sortkey = $sortkey; + + if (!detaint_signed($sortkey) || $sortkey < -32768 + || $sortkey > 32767) { + ThrowUserError('milestone_sortkey_invalid', + {'name' => $milestone_name, + 'sortkey' => $stored_sortkey}); + } + return $sortkey; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Milestone - Bugzilla product milestone class. + +=head1 SYNOPSIS + + use Bugzilla::Milestone; + + my $milestone = new Bugzilla::Milestone(1, 'milestone_value'); + + my $product_id = $milestone->product_id; + my $value = $milestone->value; + + my $milestone = $hash_ref->{'milestone_value'}; + +=head1 DESCRIPTION + +Milestone.pm represents a Product Milestone object. + +=head1 METHODS + +=over + +=item C<new($product_id, $value)> + + Description: The constructor is used to load an existing milestone + by passing a product id and a milestone value. + + Params: $product_id - Integer with a Bugzilla product id. + $value - String with a milestone value. + + Returns: A Bugzilla::Milestone object. + +=item C<bug_count()> + + Description: Returns the total of bugs that belong to the milestone. + + Params: none. + + Returns: Integer with the number of bugs. + +=back + +=head1 SUBROUTINES + +=over + +=item C<check_milestone($product, $milestone_name)> + + Description: Checks if a milestone name was passed in + and if it is a valid milestone. + + Params: $product - Bugzilla::Product object. + $milestone_name - String with a milestone name. + + Returns: Bugzilla::Milestone object. + +=back + +=cut diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm new file mode 100644 index 000000000..5405b1651 --- /dev/null +++ b/Bugzilla/Product.pm @@ -0,0 +1,387 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Tiago R. Mello <timello@async.com.br> + +use strict; + +package Bugzilla::Product; + +use Bugzilla::Component; +use Bugzilla::Version; +use Bugzilla::Milestone; + +use Bugzilla::Util; +use Bugzilla::Group; +use Bugzilla::Error; + +use constant DEFAULT_CLASSIFICATION_ID => 1; + +############################### +#### Initialization #### +############################### + +use constant DB_COLUMNS => qw( + products.id + products.name + products.classification_id + products.description + products.milestoneurl + products.disallownew + products.votesperuser + products.maxvotesperbug + products.votestoconfirm + products.defaultmilestone +); + +my $columns = join(", ", DB_COLUMNS); + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + my $self = {}; + bless($self, $class); + return $self->_init(@_); +} + +sub _init { + my $self = shift; + my ($param) = @_; + my $dbh = Bugzilla->dbh; + + my $id = $param unless (ref $param eq 'HASH'); + my $product; + + if (defined $id) { + detaint_natural($id) + || ThrowCodeError('param_must_be_numeric', + {function => 'Bugzilla::Product::_init'}); + + $product = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM products + WHERE id = ?}, undef, $id); + + } elsif (defined $param->{'name'}) { + + trick_taint($param->{'name'}); + $product = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM products + WHERE name = ?}, undef, $param->{'name'}); + } else { + ThrowCodeError('bad_arg', + {argument => 'param', + function => 'Bugzilla::Product::_init'}); + } + + return undef unless (defined $product); + + foreach my $field (keys %$product) { + $self->{$field} = $product->{$field}; + } + return $self; +} + +############################### +#### Methods #### +############################### + +sub components { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{components}) { + my $ids = $dbh->selectcol_arrayref(q{ + SELECT id FROM components + WHERE product_id = ? + ORDER BY name}, undef, $self->id); + + my @components; + foreach my $id (@$ids) { + push @components, new Bugzilla::Component($id); + } + $self->{components} = \@components; + } + return $self->{components}; +} + +sub group_controls { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{group_controls}) { + my $query = qq{SELECT + groups.id, + group_control_map.entry, + group_control_map.membercontrol, + group_control_map.othercontrol, + group_control_map.canedit + FROM groups + LEFT JOIN group_control_map + ON groups.id = group_control_map.group_id + WHERE group_control_map.product_id = ? + AND groups.isbuggroup != 0 + ORDER BY groups.name}; + $self->{group_controls} = + $dbh->selectall_hashref($query, 'id', undef, $self->id); + foreach my $group (keys(%{$self->{group_controls}})) { + $self->{group_controls}->{$group}->{'group'} = + new Bugzilla::Group($group); + } + } + return $self->{group_controls}; +} + +sub versions { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{versions}) { + my $values = $dbh->selectcol_arrayref(q{ + SELECT value FROM versions + WHERE product_id = ? + ORDER BY value}, undef, $self->id); + + my @versions; + foreach my $value (@$values) { + push @versions, new Bugzilla::Version($self->id, $value); + } + $self->{versions} = \@versions; + } + return $self->{versions}; +} + +sub milestones { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{milestones}) { + my $values = $dbh->selectcol_arrayref(q{ + SELECT value FROM milestones + WHERE product_id = ? + ORDER BY sortkey}, undef, $self->id); + + my @milestones; + foreach my $value (@$values) { + push @milestones, new Bugzilla::Milestone($self->id, $value); + } + $self->{milestones} = \@milestones; + } + return $self->{milestones}; +} + +sub bug_count { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'bug_count'}) { + $self->{'bug_count'} = $dbh->selectrow_array(qq{ + SELECT COUNT(bug_id) FROM bugs + WHERE product_id = ?}, undef, $self->id); + + } + return $self->{'bug_count'}; +} + +sub bug_ids { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'bug_ids'}) { + $self->{'bug_ids'} = + $dbh->selectcol_arrayref(q{SELECT bug_id FROM bugs + WHERE product_id = ?}, + undef, $self->id); + } + return $self->{'bug_ids'}; +} + + +############################### +#### Accessors ###### +############################### + +sub id { return $_[0]->{'id'}; } +sub name { return $_[0]->{'name'}; } +sub description { return $_[0]->{'description'}; } +sub milestone_url { return $_[0]->{'milestoneurl'}; } +sub disallow_new { return $_[0]->{'disallownew'}; } +sub votes_per_user { return $_[0]->{'votesperuser'}; } +sub max_votes_per_bug { return $_[0]->{'maxvotesperbug'}; } +sub votes_to_confirm { return $_[0]->{'votestoconfirm'}; } +sub default_milestone { return $_[0]->{'defaultmilestone'}; } +sub classification_id { return $_[0]->{'classification_id'}; } + +############################### +#### Subroutines ###### +############################### + +sub get_all_products { + my $dbh = Bugzilla->dbh; + + my $ids = $dbh->selectcol_arrayref(q{ + SELECT id FROM products ORDER BY name}); + + my @products; + foreach my $id (@$ids) { + push @products, new Bugzilla::Product($id); + } + return @products; +} + +sub check_product { + my ($product_name) = @_; + + unless ($product_name) { + ThrowUserError('product_not_specified'); + } + my $product = new Bugzilla::Product({name => $product_name}); + unless ($product) { + ThrowUserError('product_doesnt_exist', + {'product' => $product_name}); + } + return $product; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Product - Bugzilla product class. + +=head1 SYNOPSIS + + use Bugzilla::Product; + + my $product = new Bugzilla::Product(1); + my $product = new Bugzilla::Product('AcmeProduct'); + + my @components = $product->components(); + my $groups_controls = $product->group_controls(); + my @milestones = $product->milestones(); + my @versions = $product->versions(); + my $bugcount = $product->bug_count(); + my $bug_ids = $product->bug_ids(); + + my $id = $product->id; + my $name = $product->name; + my $description = $product->description; + my $milestoneurl = $product->milestone_url; + my disallownew = $product->disallow_new; + my votesperuser = $product->votes_per_user; + my maxvotesperbug = $product->max_votes_per_bug; + my votestoconfirm = $product->votes_to_confirm; + my $defaultmilestone = $product->default_milestone; + my $classificationid = $product->classification_id; + +=head1 DESCRIPTION + +Product.pm represents a product object. + +=head1 METHODS + +=over + +=item C<new($param)> + + Description: The constructor is used to load an existing product + by passing a product id or a hash. + + Params: $param - If you pass an integer, the integer is the + product id from the database that we want to + read in. If you pass in a hash with 'name' key, + then the value of the name key is the name of a + product from the DB. + + Returns: A Bugzilla::Product object. + +=item C<components()> + + Description: Returns an array of component objects belonging to + the product. + + Params: none. + + Returns: An array of Bugzilla::Component object. + +=item C<group_controls()> + + Description: Returns a hash (group id as key) with all product + group controls. + + Params: none. + + Returns: A hash with group id as key and hash containing + a Bugzilla::Group object and the properties of group + relative to the product. + +=item C<versions()> + + Description: Returns all valid versions for that product. + + Params: none. + + Returns: An array of Bugzilla::Version objects. + +=item C<milestones()> + + Description: Returns all valid milestones for that product. + + Params: none. + + Returns: An array of Bugzilla::Milestone objects. + +=item C<bug_count()> + + Description: Returns the total of bugs that belong to the product. + + Params: none. + + Returns: Integer with the number of bugs. + +=item C<bug_ids()> + + Description: Returns the IDs of bugs that belong to the product. + + Params: none. + + Returns: An array of integer. + +=back + +=head1 SUBROUTINES + +=over + +=item C<get_all_products()> + + Description: Returns all products from the database. + + Params: none. + + Returns: Bugzilla::Product object list. + +=item C<check_product($product_name)> + + Description: Checks if the product name was passed in and if is a valid + product. + + Params: $product_name - String with a product name. + + Returns: Bugzilla::Product object. + +=back + +=cut diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index b2faaf1cb..48c3c1647 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -25,13 +25,11 @@ # Myk Melez <myk@mozilla.org> # Michael Schindler <michael@compressconsult.com> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Joel Peshkin <bugreport@peshkin.net> +# Lance Larsh <lance.larsh@oracle.com> use strict; -# The caller MUST require CGI.pl and globals.pl before using this - -use vars qw($userid); - package Bugzilla::Search; use base qw(Exporter); @Bugzilla::Search::EXPORT = qw(IsValidQueryType); @@ -42,6 +40,7 @@ use Bugzilla::Util; use Bugzilla::Constants; use Bugzilla::Group; use Bugzilla::User; +use Bugzilla::Field; use Date::Format; use Date::Parse; @@ -99,6 +98,8 @@ sub init { my @orderby; my $debug = 0; + my @debugdata; + if ($params->param('debug')) { $debug = 1; } my @fields; my @supptables; @@ -310,7 +311,7 @@ sub init { push(@l, "bugs.creation_ts <= $sql_chto") if($sql_chto); $bug_creation_clause = "(" . join(' AND ', @l) . ")"; } else { - push(@list, "\nactcheck.fieldid = " . &::GetFieldID($f)); + push(@list, "\nactcheck.fieldid = " . get_field_id($f)); } } @@ -349,14 +350,18 @@ sub init { if ($params->param('deadlinefrom')){ $deadlinefrom = $params->param('deadlinefrom'); - Bugzilla::Util::ValidateDate($deadlinefrom, 'deadlinefrom'); + validate_date($deadlinefrom) + || ThrowUserError('illegal_date', {date => $deadlinefrom, + format => 'YYYY-MM-DD'}); $sql_deadlinefrom = &::SqlQuote($deadlinefrom); push(@wherepart, "bugs.deadline >= $sql_deadlinefrom"); } if ($params->param('deadlineto')){ $deadlineto = $params->param('deadlineto'); - Bugzilla::Util::ValidateDate($deadlineto, 'deadlineto'); + validate_date($deadlineto) + || ThrowUserError('illegal_date', {date => $deadlineto, + format => 'YYYY-MM-DD'}); $sql_deadlineto = &::SqlQuote($deadlineto); push(@wherepart, "bugs.deadline <= $sql_deadlineto"); } @@ -427,9 +432,14 @@ sub init { $term = "bugs.$f <> " . pronoun($1, $user); }, "^(assigned_to|reporter),(?!changed)" => sub { - push(@supptables, "INNER JOIN profiles AS map_$f " . - "ON bugs.$f = map_$f.userid"); - $f = "map_$f.login_name"; + my $list = $self->ListIDsForEmail($t, $v); + if ($list) { + $term = "bugs.$f IN ($list)"; + } else { + push(@supptables, "INNER JOIN profiles AS map_$f " . + "ON bugs.$f = map_$f.userid"); + $f = "map_$f.login_name"; + } }, "^qa_contact,(?!changed)" => sub { push(@supptables, "LEFT JOIN profiles AS map_qa_contact " . @@ -489,7 +499,7 @@ sub init { "AND cc_$chartseq.who = $match"); $term = "cc_$chartseq.who IS NULL"; }, - "^cc,(anyexact|substring)" => sub { + "^cc,(anyexact|substring|regexp)" => sub { my $list; $list = $self->ListIDsForEmail($t, $v); my $chartseq = $chartid; @@ -576,10 +586,8 @@ sub init { # $term1 searches comments. # $term2 searches summaries, which contributes to the relevance # ranking in SELECT but doesn't limit which bugs get retrieved. - my $term1 = $dbh->sql_fulltext_search("${table}.thetext", - ::SqlQuote($v)); - my $term2 = $dbh->sql_fulltext_search("bugs.short_desc", - ::SqlQuote($v)); + my $term1 = $dbh->sql_fulltext_search("${table}.thetext", $v); + my $term2 = $dbh->sql_fulltext_search("bugs.short_desc", $v); # The term to use in the WHERE clause. $term = "$term1 > 0"; @@ -716,14 +724,23 @@ sub init { } elsif ($t eq "notequal") { $oper = "<>"; } elsif ($t eq "regexp") { - $oper = $dbh->sql_regexp(); + # This is just a dummy to help catch bugs- $oper won't be used + # since "regexp" is treated as a special case below. But + # leaving $oper uninitialized seems risky... + $oper = "sql_regexp"; } elsif ($t eq "notregexp") { - $oper = $dbh->sql_not_regexp(); + # This is just a dummy to help catch bugs- $oper won't be used + # since "notregexp" is treated as a special case below. But + # leaving $oper uninitialized seems risky... + $oper = "sql_not_regexp"; } else { $oper = "noop"; } if ($oper ne "noop") { my $table = "longdescs_$chartid"; + if(lsearch(\@fields, "bugs.remaining_time") == -1) { + push(@fields, "bugs.remaining_time"); + } push(@supptables, "INNER JOIN longdescs AS $table " . "ON $table.bug_id = bugs.bug_id"); my $expression = "(100 * ((SUM($table.work_time) * @@ -733,7 +750,13 @@ sub init { COUNT(DISTINCT $table.bug_when) / COUNT(bugs.bug_id)) + bugs.remaining_time)))"; - push(@having, "$expression $oper " . &::SqlQuote($v)); + if ($t eq "regexp") { + push(@having, $dbh->sql_regexp($expression, &::SqlQuote($v))); + } elsif ($t eq "notregexp") { + push(@having, $dbh->sql_not_regexp($expression, &::SqlQuote($v))); + } else { + push(@having, "$expression $oper " . &::SqlQuote($v)); + } push(@groupby, "bugs.remaining_time"); } $term = "0=0"; @@ -751,6 +774,24 @@ sub init { "AND $term"); $term = "$ff IS NOT NULL"; }, + "^attach_data\.thedata,changed" => sub { + # Searches for attachment data's change must search + # the creation timestamp of the attachment instead. + $f = "attachments.whocares"; + }, + "^attach_data\.thedata," => sub { + my $atable = "attachments_$chartid"; + my $dtable = "attachdata_$chartid"; + my $extra = ""; + if (Param("insidergroup") && !UserInGroup(Param("insidergroup"))) { + $extra = "AND $atable.isprivate = 0"; + } + push(@supptables, "INNER JOIN attachments AS $atable " . + "ON bugs.bug_id = $atable.bug_id $extra"); + push(@supptables, "INNER JOIN attach_data AS $dtable " . + "ON $dtable.id = $atable.attach_id"); + $f = "$dtable.thedata"; + }, "^attachments\..*," => sub { my $table = "attachments_$chartid"; my $extra = ""; @@ -964,7 +1005,7 @@ sub init { } my $cutoff = "NOW() - " . $dbh->sql_interval($quantity, $unitinterval); - my $assigned_fieldid = &::GetFieldID('assigned_to'); + my $assigned_fieldid = get_field_id('assigned_to'); push(@supptables, "LEFT JOIN longdescs AS comment_$table " . "ON comment_$table.who = bugs.assigned_to " . "AND comment_$table.bug_id = bugs.bug_id " . @@ -1003,10 +1044,10 @@ sub init { $term = $dbh->sql_position(lc($q), "LOWER($ff)") . " = 0"; }, ",regexp" => sub { - $term = "$ff " . $dbh->sql_regexp() . " $q"; + $term = $dbh->sql_regexp($ff, $q); }, ",notregexp" => sub { - $term = "$ff " . $dbh->sql_not_regexp() . " $q"; + $term = $dbh->sql_not_regexp($ff, $q); }, ",lessthan" => sub { $term = "$ff < $q"; @@ -1125,7 +1166,9 @@ sub init { $params->param("type$chart-$row-$col", shift(@$ref)); $params->param("value$chart-$row-$col", shift(@$ref)); if ($debug) { - print qq{<p>$params->param("field$chart-$row-$col") | $params->param("type$chart-$row-$col") | $params->param("value$chart-$row-$col")*</p>\n}; + push(@debugdata, "$row-$col = " . + $params->param("field$chart-$row-$col") . ' | ' . $params->param("type$chart-$row-$col") . ' | ' . + $params->param("value$chart-$row-$col") . ' *'); } $col++; @@ -1263,7 +1306,7 @@ sub init { if ("$f,$t,$rhs" =~ m/$key/) { my $ref = $funcsbykey{$key}; if ($debug) { - print "<p>$key ($f , $t , $rhs ) => "; + push(@debugdata, "$key ($f / $t / $rhs) =>"); } $ff = $f; if ($f !~ /\./) { @@ -1271,7 +1314,8 @@ sub init { } &$ref; if ($debug) { - print "$f , $t , $v , $term</p>"; + push(@debugdata, "$f / $t / $v / " . + ($term || "undef") . " *"); } if ($term) { last; @@ -1401,12 +1445,8 @@ sub init { $query .= " ORDER BY " . join(',', @orderby); } - if ($debug) { - print "<p><code>" . value_quote($query) . "</code></p>\n"; - exit; - } - $self->{'sql'} = $query; + $self->{'debugdata'} = \@debugdata; } ############################################################################### @@ -1421,7 +1461,7 @@ sub SqlifyDate { } - if ($str =~ /^(-|\+)?(\d+)([dDwWmMyY])$/) { # relative date + if ($str =~ /^(-|\+)?(\d+)([hHdDwWmMyY])$/) { # relative date my ($sign, $amount, $unit, $date) = ($1, $2, lc $3, time); my ($sec, $min, $hour, $mday, $month, $year, $wday) = localtime($date); if ($sign && $sign eq '+') { $amount = -$amount; } @@ -1441,6 +1481,15 @@ sub SqlifyDate { while ($month<0) { $year--; $month += 12; } return sprintf("%4d-%02d-01 00:00:00", $year+1900, $month+1); } + elsif ($unit eq 'h') { + # Special case 0h for 'beginning of this hour' + if ($amount == 0) { + $date -= $sec + 60*$min; + } else { + $date -= 3600*$amount; + } + return time2str("%Y-%m-%d %H:%M:%S", $date); + } return undef; # should not happen due to regexp at top } my $date = str2time($str); @@ -1453,8 +1502,8 @@ sub SqlifyDate { # ListIDsForEmail returns a string with a comma-joined list # of userids matching email addresses # according to the type specified. -# Currently, this only supports exact, anyexact, and substring matches. -# Substring matches will return up to 50 matching userids +# Currently, this only supports regexp, exact, anyexact, and substring matches. +# Matches will return up to 50 matching userids # If a match type is unsupported or returns too many matches, # ListIDsForEmail returns an undef. sub ListIDsForEmail { @@ -1483,7 +1532,18 @@ sub ListIDsForEmail { my ($id) = &::FetchSQLData(); push(@list, $id); } - if (@list < 50) { + if (scalar(@list) < 50) { + $list = join(',', @list); + } + } elsif ($type eq 'regexp') { + &::SendSQL("SELECT userid FROM profiles WHERE " . + $dbh->sql_regexp("login_name", ::SqlQuote($email)) . + " " . $dbh->sql_limit(51)); + while (&::MoreSQLData()) { + my ($id) = &::FetchSQLData(); + push(@list, $id); + } + if (scalar(@list) < 50) { $list = join(',', @list); } } @@ -1518,7 +1578,7 @@ sub GetByWordList { $word =~ s/^'//; $word =~ s/'$//; $word = '(^|[^a-z0-9])' . $word . '($|[^a-z0-9])'; - push(@list, "$field " . $dbh->sql_regexp() . " '$word'"); + push(@list, $dbh->sql_regexp($field, "'$word'")); } } @@ -1546,6 +1606,11 @@ sub getSQL { return $self->{'sql'}; } +sub getDebugData { + my $self = shift; + return $self->{'debugdata'}; +} + sub pronoun { my ($noun, $user) = (@_); if ($noun eq "%user%") { diff --git a/Bugzilla/Search/CVS/Entries b/Bugzilla/Search/CVS/Entries new file mode 100644 index 000000000..a60b50baa --- /dev/null +++ b/Bugzilla/Search/CVS/Entries @@ -0,0 +1,2 @@ +/Quicksearch.pm/1.2/Fri Aug 26 23:11:31 2005//TBUGZILLA-2_22 +D diff --git a/Bugzilla/Search/CVS/Repository b/Bugzilla/Search/CVS/Repository new file mode 100644 index 000000000..d9a78ec93 --- /dev/null +++ b/Bugzilla/Search/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/Bugzilla/Search diff --git a/Bugzilla/Search/CVS/Root b/Bugzilla/Search/CVS/Root new file mode 100644 index 000000000..cdb6f4a07 --- /dev/null +++ b/Bugzilla/Search/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot diff --git a/Bugzilla/Search/CVS/Tag b/Bugzilla/Search/CVS/Tag new file mode 100644 index 000000000..4f143e35f --- /dev/null +++ b/Bugzilla/Search/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-2_22 diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm new file mode 100644 index 000000000..365e56469 --- /dev/null +++ b/Bugzilla/Search/Quicksearch.pm @@ -0,0 +1,499 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): C. Begle +# Jesse Ruderman +# Andreas Franke <afranke@mathweb.org> +# Stephen Lee <slee@uk.bnsmc.com> +# Marc Schumann <wurblzap@gmail.com> + +package Bugzilla::Search::Quicksearch; + +# Make it harder for us to do dangerous things in Perl. +use strict; + +use Bugzilla; +use Bugzilla::Config; +use Bugzilla::Error; + +use base qw(Exporter); +@Bugzilla::Search::Quicksearch::EXPORT = qw(quicksearch); + +my $cgi = Bugzilla->cgi; + +# Word renamings +my %mappings = (# Status, Resolution, Platform, OS, Priority, Severity + "status" => "bug_status", + "resolution" => "resolution", # no change + "platform" => "rep_platform", + "os" => "op_sys", + "opsys" => "op_sys", + "priority" => "priority", # no change + "pri" => "priority", + "severity" => "bug_severity", + "sev" => "bug_severity", + # People: AssignedTo, Reporter, QA Contact, CC, Added comment (?) + "owner" => "assigned_to", # deprecated since bug 76507 + "assignee" => "assigned_to", + "assignedto" => "assigned_to", + "reporter" => "reporter", # no change + "rep" => "reporter", + "qa" => "qa_contact", + "qacontact" => "qa_contact", + "cc" => "cc", # no change + # Product, Version, Component, Target Milestone + "product" => "product", # no change + "prod" => "product", + "version" => "version", # no change + "ver" => "version", + "component" => "component", # no change + "comp" => "component", + "milestone" => "target_milestone", + "target" => "target_milestone", + "targetmilestone" => "target_milestone", + # Summary, Description, URL, Status whiteboard, Keywords + "summary" => "short_desc", + "shortdesc" => "short_desc", + "desc" => "longdesc", + "description" => "longdesc", + #"comment" => "longdesc", # ??? + # reserve "comment" for "added comment" email search? + "longdesc" => "longdesc", + "url" => "bug_file_loc", + "whiteboard" => "status_whiteboard", + "statuswhiteboard" => "status_whiteboard", + "sw" => "status_whiteboard", + "keywords" => "keywords", # no change + "kw" => "keywords", + # Attachments + "attachment" => "attachments.description", + "attachmentdesc" => "attachments.description", + "attachdesc" => "attachments.description", + "attachmentdata" => "attach_data.thedata", + "attachdata" => "attach_data.thedata", + "attachmentmimetype" => "attachments.mimetype", + "attachmimetype" => "attachments.mimetype"); + +# We might want to put this into localconfig or somewhere +my @platforms = ('pc', 'sun', 'macintosh', 'mac'); +my @productExceptions = ('row' # [Browser] + # ^^^ + ,'new' # [MailNews] + # ^^^ + ); +my @componentExceptions = ('hang' # [Bugzilla: Component/Keyword Changes] + # ^^^^ + ); + +# Quicksearch-wide globals for boolean charts. +my $chart = 0; +my $and = 0; +my $or = 0; + +sub quicksearch { + my ($searchstring) = (@_); + + # Remove leading and trailing commas and whitespace. + $searchstring =~ s/(^[\s,]+|[\s,]+$)//g; + ThrowUserError('buglist_parameters_required') unless ($searchstring); + + if ($searchstring =~ m/^[0-9,\s]*$/) { + # Bug number(s) only. + + # Allow separation by comma or whitespace. + $searchstring =~ s/[,\s]+/,/g; + + if (index($searchstring, ',') < $[) { + # Single bug number; shortcut to show_bug.cgi. + print $cgi->redirect(-uri => Param('urlbase') . + "show_bug.cgi?id=$searchstring"); + exit; + } + else { + # List of bug numbers. + $cgi->param('bug_id', $searchstring); + $cgi->param('order', 'bugs.bug_id'); + $cgi->param('bugidtype', 'include'); + } + } + else { + # It's not just a bug number or a list of bug numbers. + # Maybe it's an alias? + if ($searchstring =~ /^([^,\s]+)$/) { + if (Bugzilla->dbh->selectrow_array(q{SELECT COUNT(*) + FROM bugs + WHERE alias = ?}, + undef, + $1)) { + print $cgi->redirect(-uri => Param('urlbase') . + "show_bug.cgi?id=$1"); + exit; + } + } + + # It's no alias either, so it's a more complex query. + + &::GetVersionTable(); + + # Globally translate " AND ", " OR ", " NOT " to space, pipe, dash. + $searchstring =~ s/\s+AND\s+/ /g; + $searchstring =~ s/\s+OR\s+/|/g; + $searchstring =~ s/\s+NOT\s+/ -/g; + + my @words = splitString($searchstring); + my $searchComments = $#words < Param('quicksearch_comment_cutoff'); + my @openStates = &::OpenStates(); + my @closedStates; + my (%states, %resolutions); + + foreach (@::legal_bug_status) { + push(@closedStates, $_) unless &::IsOpenedState($_); + } + foreach (@openStates) { $states{$_} = 1 } + if ($words[0] eq 'ALL') { + foreach (@::legal_bug_status) { $states{$_} = 1 } + shift @words; + } + elsif ($words[0] eq 'OPEN') { + shift @words; + } + elsif ($words[0] =~ /^\+[A-Z]+(,[A-Z]+)*$/) { + # e.g. +DUP,FIX + if (matchPrefixes(\%states, + \%resolutions, + [split(/,/, substr($words[0], 1))], + \@closedStates, + \@::legal_resolution)) { + shift @words; + # Allowing additional resolutions means we need to keep + # the "no resolution" resolution. + $resolutions{'---'} = 1; + } + else { + # Carry on if no match found. + } + } + elsif ($words[0] =~ /^[A-Z]+(,[A-Z]+)*$/) { + # e.g. NEW,ASSI,REOP,FIX + undef %states; + if (matchPrefixes(\%states, + \%resolutions, + [split(/,/, $words[0])], + \@::legal_bug_status, + \@::legal_resolution)) { + shift @words; + } + else { + # Carry on if no match found + foreach (@openStates) { $states{$_} = 1 } + } + } + else { + # Default: search for unresolved bugs only. + # Put custom code here if you would like to change this behaviour. + } + + # If we have wanted resolutions, allow closed states + if (keys(%resolutions)) { + foreach (@closedStates) { $states{$_} = 1 } + } + + $cgi->param('bug_status', keys(%states)); + $cgi->param('resolution', keys(%resolutions)); + + # Loop over all main-level QuickSearch words. + foreach my $qsword (@words) { + my $negate = substr($qsword, 0, 1) eq '-'; + if ($negate) { + $qsword = substr($qsword, 1); + } + + my $firstChar = substr($qsword, 0, 1); + my $baseWord = substr($qsword, 1); + my @subWords = split(/[\|,]/, $baseWord); + if ($firstChar eq '+') { + foreach (@subWords) { + addChart('short_desc', 'substring', $qsword, $negate); + } + } + elsif ($firstChar eq '#') { + addChart('short_desc', 'anywords', $baseWord, $negate); + if ($searchComments) { + addChart('longdesc', 'anywords', $baseWord, $negate); + } + } + elsif ($firstChar eq ':') { + foreach (@subWords) { + addChart('product', 'substring', $_, $negate); + addChart('component', 'substring', $_, $negate); + } + } + elsif ($firstChar eq '@') { + foreach (@subWords) { + addChart('assigned_to', 'substring', $_, $negate); + } + } + elsif ($firstChar eq '[') { + addChart('short_desc', 'substring', $baseWord, $negate); + addChart('status_whiteboard', 'substring', $baseWord, $negate); + } + elsif ($firstChar eq '!') { + addChart('keywords', 'anywords', $baseWord, $negate); + + } + else { # No special first char + + # Split by '|' to get all operands for a boolean OR. + foreach my $or_operand (split(/\|/, $qsword)) { + if ($or_operand =~ /^votes:([0-9]+)$/) { + # votes:xx ("at least xx votes") + addChart('votes', 'greaterthan', $1, $negate); + } + elsif ($or_operand =~ /^([^:]+):([^:]+)$/) { + # generic field1,field2,field3:value1,value2 notation + my @fields = split(/,/, $1); + my @values = split(/,/, $2); + foreach my $field (@fields) { + # Be tolerant about unknown fields + next unless defined($mappings{$field}); + $field = $mappings{$field}; + foreach (@values) { + addChart($field, 'substring', $_, $negate); + } + } + + } + else { + + # Having ruled out the special cases, we may now split + # by comma, which is another legal boolean OR indicator. + foreach my $word (split(/,/, $or_operand)) { + # Platform + if (grep({lc($word) eq $_} @platforms)) { + addChart('rep_platform', 'substring', + $word, $negate); + } + # Priority + elsif ($word =~ m/^[pP]([1-5](-[1-5])?)$/) { + addChart('priority', 'regexp', + "[$1]", $negate); + } + # Severity + elsif (grep({lc($word) eq substr($_, 0, 3)} + @::legal_severity)) { + addChart('bug_severity', 'substring', + $word, $negate); + } + # Votes (votes>xx) + elsif ($word =~ m/^votes>([0-9]+)$/) { + addChart('votes', 'greaterthan', + $1, $negate); + } + # Votes (votes>=xx, votes=>xx) + elsif ($word =~ m/^votes(>=|=>)([0-9]+)$/) { + addChart('votes', 'greaterthan', + $2-1, $negate); + + } + else { # Default QuickSearch word + + if (!grep({lc($word) eq $_} + @productExceptions) && + length($word)>2 + ) { + addChart('product', 'substring', + $word, $negate); + } + if (!grep({lc($word) eq $_} + @componentExceptions) && + length($word)>2 + ) { + addChart('component', 'substring', + $word, $negate); + } + if (grep({lc($word) eq $_} + @::legal_keywords)) { + addChart('keywords', 'substring', + $word, $negate); + if (length($word)>2) { + addChart('short_desc', 'substring', + $word, $negate); + addChart('status_whiteboard', + 'substring', + $word, $negate); + } + + } + else { + + addChart('short_desc', 'substring', + $word, $negate); + addChart('status_whiteboard', 'substring', + $word, $negate); + } + if ($searchComments) { + addChart('longdesc', 'substring', + $word, $negate); + } + } + # URL field (for IP addrs, host.names, + # scheme://urls) + if ($word =~ m/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ + || $word =~ /^[A-Za-z]+(\.[A-Za-z]+)+/ + || $word =~ /:[\\\/][\\\/]/ + || $word =~ /localhost/ + || $word =~ /mailto[:]?/ + # || $word =~ /[A-Za-z]+[:][0-9]+/ #host:port + ) { + addChart('bug_file_loc', 'substring', + $word, $negate); + } + } # foreach my $word (split(/,/, $qsword)) + } # votes and generic field detection + } # foreach (split(/\|/, $_)) + } # "switch" $firstChar + $chart++; + $and = 0; + $or = 0; + } # foreach (@words) + + # We've been very tolerant about invalid queries, so all that's left + # may be an empty query. + scalar($cgi->param())>0 || ThrowUserError("buglist_parameters_required"); + } + + # List of quicksearch-specific CGI parameters to get rid of. + my @params_to_strip = ('quicksearch', 'load', 'run'); + my $modified_query_string = $cgi->canonicalise_query(@params_to_strip); + + if ($cgi->param('load')) { + # Param 'load' asks us to display the query in the advanced search form. + print $cgi->redirect(-uri => Param('urlbase') . "query.cgi?" . + "format=advanced&" . + $modified_query_string); + } + + # Otherwise, pass the modified query string to the caller. + # We modified $cgi->params, so the caller can choose to look at that, too, + # and disregard the return value. + $cgi->delete(@params_to_strip); + return $modified_query_string; +} + +########################################################################### +# Helpers +########################################################################### + +# Split string on whitespace, retaining quoted strings as one +sub splitString { + my $string = shift; + my @quoteparts; + my @parts; + my $i = 0; + + # Escape backslashes + $string =~ s/\\/\\\//g; + + # Now split on quote sign; be tolerant about unclosed quotes + @quoteparts = split(/"/, $string); + foreach (@quoteparts) { + # After every odd quote, escape whitespace + s/(\s)/\\$1/g if $i++ % 2; + } + # Join again + $string = join('"', @quoteparts); + + # Now split on unescaped whitespace + @parts = split(/(?<!\\)\s+/, $string); + foreach (@parts) { + # Restore whitespace + s/\\(\s)/$1/g; + # Restore backslashes + s/\\\//\\/g; + # Remove quotes + s/"//g; + } + return @parts; +} + +# Expand found prefixes to states or resolutions +sub matchPrefixes { + my $hr_states = shift; + my $hr_resolutions = shift; + my $ar_prefixes = shift; + my $ar_check_states = shift; + my $ar_check_resolutions = shift; + my $foundMatch = 0; + + foreach my $prefix (@$ar_prefixes) { + foreach (@$ar_check_states) { + if (/^$prefix/) { + $$hr_states{$_} = 1; + $foundMatch = 1; + } + } + foreach (@$ar_check_resolutions) { + if (/^$prefix/) { + $$hr_resolutions{$_} = 1; + $foundMatch = 1; + } + } + } + return $foundMatch; +} + +# Negate comparison type +sub negateComparisonType { + my $comparisonType = shift; + + if ($comparisonType eq 'substring') { + return 'notsubstring'; + } + elsif ($comparisonType eq 'anywords') { + return 'nowords'; + } + elsif ($comparisonType eq 'regexp') { + return 'notregexp'; + } + else { + # Don't know how to negate that + ThrowCodeError('unknown_comparison_type'); + } +} + +# Add a boolean chart +sub addChart { + my ($field, $comparisonType, $value, $negate) = @_; + + $negate && ($comparisonType = negateComparisonType($comparisonType)); + makeChart("$chart-$and-$or", $field, $comparisonType, $value); + if ($negate) { + $and++; + $or = 0; + } + else { + $or++; + } +} + +# Create the CGI parameters for a boolean chart +sub makeChart { + my ($expr, $field, $type, $value) = @_; + + $cgi->param("field$expr", $field); + $cgi->param("type$expr", $type); + $cgi->param("value$expr", $value); +} + +1; diff --git a/Bugzilla/Series.pm b/Bugzilla/Series.pm index e1d37423b..521357488 100644 --- a/Bugzilla/Series.pm +++ b/Bugzilla/Series.pm @@ -18,6 +18,7 @@ # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> +# Lance Larsh <lance.larsh@oracle.com> use strict; use lib "."; @@ -31,7 +32,6 @@ use lib "."; package Bugzilla::Series; -use Bugzilla; use Bugzilla::Util; use Bugzilla::User; @@ -91,7 +91,7 @@ sub initFromDatabase { my $dbh = Bugzilla->dbh; my @series = $dbh->selectrow_array("SELECT series.series_id, cc1.name, " . "cc2.name, series.name, series.creator, series.frequency, " . - "series.query, series.public " . + "series.query, series.is_public " . "FROM series " . "LEFT JOIN series_categories AS cc1 " . " ON series.category = cc1.id " . @@ -104,11 +104,11 @@ sub initFromDatabase { " AND ugm.user_id = " . Bugzilla->user->id . " AND isbless = 0 " . "WHERE series.series_id = $series_id AND " . - "(public = 1 OR creator = " . Bugzilla->user->id . " OR " . + "(is_public = 1 OR creator = " . Bugzilla->user->id . " OR " . "(ugm.group_id IS NOT NULL)) " . $dbh->sql_group_by('series.series_id', 'cc1.name, cc2.name, ' . 'series.name, series.creator, series.frequency, ' . - 'series.query, series.public')); + 'series.query, series.is_public')); if (@series) { $self->initFromParameters(@series); @@ -190,7 +190,7 @@ sub writeToDatabase { my $dbh = Bugzilla->dbh; $dbh->do("UPDATE series SET " . "category = ?, subcategory = ?," . - "name = ?, frequency = ?, public = ? " . + "name = ?, frequency = ?, is_public = ? " . "WHERE series_id = ?", undef, $category_id, $subcategory_id, $self->{'name'}, $self->{'frequency'}, $self->{'public'}, @@ -199,7 +199,7 @@ sub writeToDatabase { else { # Insert the new series into the series table $dbh->do("INSERT INTO series (creator, category, subcategory, " . - "name, frequency, query, public) VALUES " . + "name, frequency, query, is_public) VALUES " . "($self->{'creator'}, " . "$category_id, $subcategory_id, " . $dbh->quote($self->{'name'}) . ", $self->{'frequency'}," . diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index f4bcc7105..08bcfacdf 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -25,15 +25,20 @@ # Tobias Burnus <burnus@net-b.de> # Myk Melez <myk@mozilla.org> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Frédéric Buclin <LpSolit@gmail.com> +# Greg Hendricks <ghendricks@novell.com> package Bugzilla::Template; use strict; -use Bugzilla::Config qw(:DEFAULT $templatedir $datadir); +use Bugzilla::Constants; +use Bugzilla::Config qw(:DEFAULT $templatedir $datadir $project); use Bugzilla::Util; use Bugzilla::User; +use Bugzilla::Error; +use MIME::Base64; # for time2str - replace by TT Date plugin?? use Date::Format (); @@ -95,7 +100,7 @@ sub sortAcceptLanguage { # Returns the path to the templates based on the Accept-Language # settings of the user and of the available languages # If no Accept-Language is present it uses the defined default -sub getTemplateIncludePath () { +sub getTemplateIncludePath { # Return cached value if available # XXXX - mod_perl! @@ -104,10 +109,21 @@ sub getTemplateIncludePath () { } my $languages = trim(Param('languages')); if (not ($languages =~ /,/)) { - return $template_include_path = - ["$templatedir/$languages/custom", - "$templatedir/$languages/extension", - "$templatedir/$languages/default"]; + if ($project) { + $template_include_path = [ + "$templatedir/$languages/$project", + "$templatedir/$languages/custom", + "$templatedir/$languages/extension", + "$templatedir/$languages/default" + ]; + } else { + $template_include_path = [ + "$templatedir/$languages/custom", + "$templatedir/$languages/extension", + "$templatedir/$languages/default" + ]; + } + return $template_include_path; } my @languages = sortAcceptLanguage($languages); my @accept_language = sortAcceptLanguage($ENV{'HTTP_ACCEPT_LANGUAGE'} || "" ); @@ -123,13 +139,84 @@ sub getTemplateIncludePath () { } } push(@usedlanguages, Param('defaultlanguage')); - return $template_include_path = - [map(("$templatedir/$_/custom", - "$templatedir/$_/extension", - "$templatedir/$_/default"), - @usedlanguages)]; + if ($project) { + $template_include_path = [ + map(( + "$templatedir/$_/$project", + "$templatedir/$_/custom", + "$templatedir/$_/extension", + "$templatedir/$_/default" + ), @usedlanguages + ) + ]; + } else { + $template_include_path = [ + map(( + "$templatedir/$_/custom", + "$templatedir/$_/extension", + "$templatedir/$_/default" + ), @usedlanguages + ) + ]; + } + return $template_include_path; } +sub put_header { + my $self = shift; + my $vars = {}; + ($vars->{'title'}, $vars->{'h1'}, $vars->{'h2'}) = (@_); + + $self->process("global/header.html.tmpl", $vars) + || ThrowTemplateError($self->error()); + $vars->{'header_done'} = 1; +} + +sub put_footer { + my $self = shift; + $self->process("global/footer.html.tmpl") + || ThrowTemplateError($self->error()); +} + +sub get_format { + my $self = shift; + my ($template, $format, $ctype) = @_; + + $ctype ||= 'html'; + $format ||= ''; + + # Security - allow letters and a hyphen only + $ctype =~ s/[^a-zA-Z\-]//g; + $format =~ s/[^a-zA-Z\-]//g; + trick_taint($ctype); + trick_taint($format); + + $template .= ($format ? "-$format" : ""); + $template .= ".$ctype.tmpl"; + + # Now check that the template actually exists. We only want to check + # if the template exists; any other errors (eg parse errors) will + # end up being detected later. + eval { + $self->context->template($template); + }; + # This parsing may seem fragile, but its OK: + # http://lists.template-toolkit.org/pipermail/templates/2003-March/004370.html + # Even if it is wrong, any sort of error is going to cause a failure + # eventually, so the only issue would be an incorrect error message + if ($@ && $@->info =~ /: not found$/) { + ThrowUserError('format_not_found', {'format' => $format, + 'ctype' => $ctype}); + } + + # Else, just return the info + return + { + 'template' => $template, + 'extension' => $ctype, + 'ctype' => Bugzilla::Constants::contenttypes->{$ctype} + }; +} ############################################################################### # Templatization Code @@ -275,7 +362,13 @@ sub create { $var =~ s/\@/\\x40/g; # anti-spam for email addresses return $var; }, - + + # Converts data to base64 + base64 => sub { + my ($data) = @_; + return encode_base64($data); + }, + # HTML collapses newlines in element attributes to a single space, # so form elements which may have whitespace (ie comments) need # to be encoded using 
 @@ -368,11 +461,41 @@ sub create { # Format a time for display (more info in Bugzilla::Util) time => \&Bugzilla::Util::format_time, - # Override html filter to obscure the '@' in user visible strings - # See bug 120030 for details + # Bug 120030: Override html filter to obscure the '@' in user + # visible strings. + # Bug 319331: Handle BiDi disruptions. html => sub { my ($var) = Template::Filters::html_filter(@_); + # Obscure '@'. $var =~ s/\@/\@/g; + if (Param('utf8')) { + # Remove the following characters because they're + # influencing BiDi: + # -------------------------------------------------------- + # |Code |Name |UTF-8 representation| + # |------|--------------------------|--------------------| + # |U+202a|Left-To-Right Embedding |0xe2 0x80 0xaa | + # |U+202b|Right-To-Left Embedding |0xe2 0x80 0xab | + # |U+202c|Pop Directional Formatting|0xe2 0x80 0xac | + # |U+202d|Left-To-Right Override |0xe2 0x80 0xad | + # |U+202e|Right-To-Left Override |0xe2 0x80 0xae | + # -------------------------------------------------------- + # + # The following are characters influencing BiDi, too, but + # they can be spared from filtering because they don't + # influence more than one character right or left: + # -------------------------------------------------------- + # |Code |Name |UTF-8 representation| + # |------|--------------------------|--------------------| + # |U+200e|Left-To-Right Mark |0xe2 0x80 0x8e | + # |U+200f|Right-To-Left Mark |0xe2 0x80 0x8f | + # -------------------------------------------------------- + # + # Do the replacing in a loop so that we don't get tricked + # by stuff like 0xe2 0xe2 0x80 0xae 0x80 0xae. + while ($var =~ s/\xe2\x80(\xaa|\xab|\xac|\xad|\xae)//g) { + } + } return $var; }, @@ -426,8 +549,13 @@ sub create { 'lsearch' => \&Bugzilla::Util::lsearch, # Currently logged in user, if any + # If an sudo session is in progress, this is the user we're faking 'user' => sub { return Bugzilla->user; }, + # If an sudo session is in progress, this is the user who + # started the session. + 'sudoer' => sub { return Bugzilla->sudoer; }, + # UserInGroup. Deprecated - use the user.* functions instead 'UserInGroup' => \&Bugzilla::User::UserInGroup, @@ -452,12 +580,19 @@ __END__ =head1 NAME -Bugzilla::Template - Wrapper arround the Template Toolkit C<Template> object +Bugzilla::Template - Wrapper around the Template Toolkit C<Template> object -=head1 SYNOPSYS +=head1 SYNOPSIS my $template = Bugzilla::Template->create; + $template->put_header($title, $h1, $h2); + $template->put_footer(); + + my $format = $template->get_format("foo/bar", + scalar($cgi->param('format')), + scalar($cgi->param('ctype'))); + =head1 DESCRIPTION This is basically a wrapper so that the correct arguments get passed into @@ -466,6 +601,41 @@ the C<Template> constructor. It should not be used directly by scripts or modules - instead, use C<Bugzilla-E<gt>instance-E<gt>template> to get an already created module. +=head1 METHODS + +=over + +=item C<put_header($title, $h1, $h2)> + + Description: Display the header of the page for non yet templatized .cgi files. + + Params: $title - Page title. + $h1 - Main page header. + $h2 - Page subheader. + + Returns: nothing + +=item C<put_footer()> + + Description: Display the footer of the page for non yet templatized .cgi files. + + Params: none + + Returns: nothing + +=item C<get_format($file, $format, $ctype)> + + Description: Construct a format object from URL parameters. + + Params: $file - Name of the template to display. + $format - When the template exists under several formats + (e.g. table or graph), specify the one to choose. + $ctype - Content type, see Bugzilla::Constants::contenttypes. + + Returns: A format object. + +=back + =head1 SEE ALSO L<Bugzilla>, L<Template> diff --git a/Bugzilla/Template/CVS/Tag b/Bugzilla/Template/CVS/Tag index a2edadf24..2ccb6d6d4 100644 --- a/Bugzilla/Template/CVS/Tag +++ b/Bugzilla/Template/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-2_20_2 +TBUGZILLA-2_22 diff --git a/Bugzilla/Template/Plugin/CVS/Entries b/Bugzilla/Template/Plugin/CVS/Entries index 7cc05a261..fe83097ce 100644 --- a/Bugzilla/Template/Plugin/CVS/Entries +++ b/Bugzilla/Template/Plugin/CVS/Entries @@ -1,4 +1,4 @@ -/Bugzilla.pm/1.2/Fri Feb 7 07:19:15 2003//TBUGZILLA-2_20_2 -/Hook.pm/1.1.10.1/Fri Mar 3 12:23:24 2006//TBUGZILLA-2_20_2 -/User.pm/1.1/Wed Aug 4 18:08:21 2004//TBUGZILLA-2_20_2 +/Bugzilla.pm/1.2/Fri Feb 7 07:19:15 2003//TBUGZILLA-2_22 +/Hook.pm/1.1.12.1/Fri Mar 3 12:21:21 2006//TBUGZILLA-2_22 +/User.pm/1.1/Wed Aug 4 18:08:21 2004//TBUGZILLA-2_22 D diff --git a/Bugzilla/Template/Plugin/CVS/Tag b/Bugzilla/Template/Plugin/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/Template/Plugin/CVS/Tag +++ b/Bugzilla/Template/Plugin/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Token.pm b/Bugzilla/Token.pm index 7404d61e5..dfc7be418 100644 --- a/Bugzilla/Token.pm +++ b/Bugzilla/Token.pm @@ -37,8 +37,8 @@ use Bugzilla::Util; use Date::Format; use Date::Parse; -# This module requires that its caller have said "require CGI.pl" to import -# relevant functions from that script and its companion globals.pl. +# This module requires that its caller have said "require globals.pl" to import +# relevant functions from that script. ################################################################################ # Constants @@ -60,8 +60,8 @@ sub IssueEmailChangeToken { # Mail the user the token along with instructions for using it. - my $template = $::template; - my $vars = $::vars; + my $template = Bugzilla->template; + my $vars = {}; $vars->{'oldemailaddress'} = $old_email . Param('emailsuffix'); $vars->{'newemailaddress'} = $new_email . Param('emailsuffix'); @@ -115,8 +115,8 @@ sub IssuePasswordToken { # Mail the user the token along with instructions for using it. - my $template = $::template; - my $vars = $::vars; + my $template = Bugzilla->template; + my $vars = {}; $vars->{'token'} = $token; $vars->{'emailaddress'} = $loginname . Param('emailsuffix'); @@ -150,24 +150,28 @@ sub CleanTokenTable { } sub GenerateUniqueToken { - # Generates a unique random token. Uses &GenerateRandomPassword + # Generates a unique random token. Uses generate_random_password # for the tokens themselves and checks uniqueness by searching for # the token in the "tokens" table. Gives up if it can't come up # with a token after about one hundred tries. + my ($table, $column) = @_; + my $token; my $duplicate = 1; my $tries = 0; + $table ||= "tokens"; + $column ||= "token"; my $dbh = Bugzilla->dbh; - my $sth = $dbh->prepare("SELECT userid FROM tokens WHERE token = ?"); + my $sth = $dbh->prepare("SELECT userid FROM $table WHERE $column = ?"); while ($duplicate) { ++$tries; if ($tries > 100) { ThrowCodeError("token_generation_error"); } - $token = &::GenerateRandomPassword(); + $token = generate_random_password(); $sth->execute($token); $duplicate = $sth->fetchrow_array; } @@ -180,9 +184,10 @@ sub Cancel { # This should only happen when the user accidentally makes a token request # or when a malicious hacker makes a token request on behalf of a user. - my ($token, $cancelaction) = @_; + my ($token, $cancelaction, $vars) = @_; my $dbh = Bugzilla->dbh; + $vars ||= {}; # Quote the token for inclusion in SQL statements. my $quotedtoken = &::SqlQuote($token); @@ -198,8 +203,7 @@ sub Cancel { # Get the email address of the Bugzilla maintainer. my $maintainer = Param('maintainer'); - my $template = $::template; - my $vars = $::vars; + my $template = Bugzilla->template; $vars->{'emailaddress'} = $loginname . Param('emailsuffix'); $vars->{'maintainer'} = $maintainer; @@ -249,7 +253,7 @@ sub HasEmailChangeToken { return $token; } -sub GetTokenData($) { +sub GetTokenData { # Returns the userid, issuedate and eventdata for the specified token my ($token) = @_; @@ -263,7 +267,7 @@ sub GetTokenData($) { WHERE token = ?", undef, $token); } -sub DeleteToken($) { +sub DeleteToken { # Deletes specified token my ($token) = @_; @@ -280,7 +284,7 @@ sub DeleteToken($) { # Internal Functions ################################################################################ -sub _create_token($$$) { +sub _create_token { # Generates a unique token and inserts it into the database # Returns the token and the token timestamp my ($userid, $tokentype, $eventdata) = @_; diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index f28669bfe..c34239b0f 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -25,6 +25,7 @@ # Shane H. W. Travis <travis@sedsystems.ca> # Max Kanat-Alexander <mkanat@bugzilla.org> # Gervase Markham <gerv@gerv.net> +# Lance Larsh <lance.larsh@oracle.com> # Justin C. De Vries <judevries@novell.com> ################################################################################ @@ -42,6 +43,8 @@ use Bugzilla::Error; use Bugzilla::Util; use Bugzilla::Constants; use Bugzilla::User::Setting; +use Bugzilla::Product; +use Bugzilla::Classification; use base qw(Exporter); @Bugzilla::User::EXPORT = qw(insert_new_user is_available_username @@ -67,7 +70,7 @@ use constant MATCH_SKIP_CONFIRM => 1; sub new { my $invocant = shift; - my ($user_id, $tables_locked) = @_; + my $user_id = shift; if ($user_id) { my $uid = $user_id; @@ -76,7 +79,7 @@ sub new { {argument => 'userID', value => $uid, function => 'Bugzilla::User::new'}); - return $invocant->_create('userid = ?', $user_id, $tables_locked); + return $invocant->_create("userid=?", $user_id); } else { return $invocant->_create; @@ -93,11 +96,10 @@ sub new { # in the id its already had to validate (or the User.pm object, of course) sub new_from_login { my $invocant = shift; - my ($login, $tables_locked) = @_; + my $login = shift; my $dbh = Bugzilla->dbh; - return $invocant->_create($dbh->sql_istrcmp('login_name', '?'), - $login, $tables_locked); + return $invocant->_create($dbh->sql_istrcmp('login_name', '?'), $login); } # Internal helper for the above |new| methods @@ -125,8 +127,6 @@ sub _create { # We're checking for validity here, so any value is OK trick_taint($val); - my $tables_locked_for_derive_groups = shift; - my $dbh = Bugzilla->dbh; my ($id, @@ -151,26 +151,6 @@ sub _create { $self->{'disabledtext'} = $disabledtext; $self->{'showmybugslink'} = $mybugslink; - # Now update any old group information if needed - my $result = $dbh->selectrow_array(q{SELECT 1 - FROM profiles, groups - WHERE userid=? - AND profiles.refreshed_when <= - groups.last_changed}, - undef, - $id); - - if ($result) { - my $is_main_db; - unless ($is_main_db = Bugzilla->dbwritesallowed()) { - $dbh = Bugzilla->switch_to_main_db(); - } - $self->derive_groups($tables_locked_for_derive_groups); - unless ($is_main_db) { - $dbh = Bugzilla->switch_to_shadow_db(); - } - } - return $self; } @@ -236,9 +216,9 @@ sub queries { INNER JOIN whine_queries wq ON we.id = wq.eventid WHERE we.owner_userid = ?}, undef, $self->{id}); - + my $queries_ref = $dbh->selectall_arrayref(q{ - SELECT name, query, linkinfooter + SELECT name, query, linkinfooter, query_type FROM namedqueries WHERE userid = ? ORDER BY UPPER(name)},{'Slice'=>{}}, $self->{id}); @@ -297,11 +277,36 @@ sub groups { # The above gives us an arrayref [name, id, name, id, ...] # Convert that into a hashref my %groups = @$groups; + my $sth; + my @groupidstocheck = values(%groups); + my %groupidschecked = (); + $sth = $dbh->prepare("SELECT groups.name, groups.id + FROM group_group_map + INNER JOIN groups + ON groups.id = grantor_id + WHERE member_id = ? + AND grant_type = " . GROUP_MEMBERSHIP); + while (my $node = shift @groupidstocheck) { + $sth->execute($node); + my ($member_name, $member_id); + while (($member_name, $member_id) = $sth->fetchrow_array) { + if (!$groupidschecked{$member_id}) { + $groupidschecked{$member_id} = 1; + push @groupidstocheck, $member_id; + $groups{$member_name} = $member_id; + } + } + } $self->{groups} = \%groups; return $self->{groups}; } +sub groups_as_string { + my $self = shift; + return (join(',',values(%{$self->groups})) || '-1'); +} + sub bless_groups { my $self = shift; @@ -322,8 +327,6 @@ sub bless_groups { # Get all groups for the user where: # + They have direct bless privileges # + They are a member of a group that inherits bless privs. - # Because of the second requirement, derive_groups must be up-to-date - # for this to function properly in all circumstances. $query = q{ SELECT DISTINCT groups.id, groups.name, groups.description FROM groups, user_group_map, group_group_map AS ggm @@ -332,8 +335,9 @@ sub bless_groups { AND groups.id=user_group_map.group_id) OR (groups.id = ggm.grantor_id AND ggm.grant_type = ? - AND user_group_map.group_id = ggm.member_id - AND user_group_map.isbless = 0))}; + AND ggm.member_id IN(} . + $self->groups_as_string . + q{)))}; $connector = 'AND'; @bindValues = ($self->id, GROUP_BLESS); } @@ -354,26 +358,56 @@ sub bless_groups { sub in_group { my ($self, $group) = @_; + return exists $self->groups->{$group} ? 1 : 0; +} - # If we already have the info, just return it. - return defined($self->{groups}->{$group}) if defined $self->{groups}; - return 0 unless $self->id; +sub in_group_id { + my ($self, $id) = @_; + my %j = reverse(%{$self->groups}); + return exists $j{$id} ? 1 : 0; +} - # Otherwise, go check for it +sub can_see_user { + my ($self, $otherUser) = @_; + my $query; - my $dbh = Bugzilla->dbh; + if (Param('usevisibilitygroups')) { + # If the user can see no groups, then no users are visible either. + my $visibleGroups = $self->visible_groups_as_string() || return 0; + $query = qq{SELECT COUNT(DISTINCT userid) + FROM profiles, user_group_map + WHERE userid = ? + AND user_id = userid + AND isbless = 0 + AND group_id IN ($visibleGroups) + }; + } else { + $query = qq{SELECT COUNT(userid) + FROM profiles + WHERE userid = ? + }; + } + return Bugzilla->dbh->selectrow_array($query, undef, $otherUser->id); +} - my ($res) = $dbh->selectrow_array(q{SELECT 1 - FROM groups, user_group_map - WHERE groups.id=user_group_map.group_id - AND user_group_map.user_id=? - AND isbless=0 - AND groups.name=?}, - undef, - $self->id, - $group); - - return defined($res); +sub can_edit_product { + my ($self, $prod_id) = @_; + my $dbh = Bugzilla->dbh; + my $sth = $self->{sthCanEditProductId}; + my $userid = $self->{id}; + my $query = q{SELECT group_id FROM group_control_map + WHERE product_id =? + AND canedit != 0 }; + if (%{$self->groups}) { + my $groups = join(',', values(%{$self->groups})); + $query .= qq{AND group_id NOT IN($groups)}; + } + unless ($sth) { $sth = $dbh->prepare($query); } + $sth->execute($prod_id); + $self->{sthCanEditProductId} = $sth; + my $result = $sth->fetchrow_array(); + + return (!defined($result)); } sub can_see_bug { @@ -396,7 +430,7 @@ sub can_see_bug { LEFT JOIN bug_group_map ON bugs.bug_id = bug_group_map.bug_id AND bug_group_map.group_ID NOT IN(" . - join(',',(-1, values(%{$self->groups}))) . + $self->groups_as_string . ") WHERE bugs.bug_id = ? AND creation_ts IS NOT NULL " . $dbh->sql_group_by('bugs.bug_id', 'reporter, ' . @@ -416,16 +450,24 @@ sub can_see_bug { || (!$missinggroup))); } +sub can_see_product { + my ($self, $product_name) = @_; + + return scalar(grep {$_->name eq $product_name} @{$self->get_selectable_products}); +} + sub get_selectable_products { - my ($self, $by_id) = @_; + my $self = shift; + my $classification_id = shift; - if (defined $self->{SelectableProducts}) { - my %list = @{$self->{SelectableProducts}}; - return \%list if $by_id; - return values(%list); + if (defined $self->{selectable_products}) { + return $self->{selectable_products}; } - my $query = "SELECT id, name " . + my $dbh = Bugzilla->dbh; + my @params = (); + + my $query = "SELECT id " . "FROM products " . "LEFT JOIN group_control_map " . "ON group_control_map.product_id = products.id "; @@ -436,19 +478,121 @@ sub get_selectable_products { CONTROLMAPMANDATORY . " "; } $query .= "AND group_id NOT IN(" . - join(',', (-1,values(%{Bugzilla->user->groups}))) . ") " . - "WHERE group_id IS NULL ORDER BY name"; + $self->groups_as_string . ") " . + "WHERE group_id IS NULL "; + + if (Param('useclassification') && $classification_id) { + $query .= "AND classification_id = ? "; + detaint_natural($classification_id); + push(@params, $classification_id); + } + + $query .= "ORDER BY name"; + + my $prod_ids = $dbh->selectcol_arrayref($query, undef, @params); + my @products; + foreach my $prod_id (@$prod_ids) { + push(@products, new Bugzilla::Product($prod_id)); + } + $self->{selectable_products} = \@products; + return $self->{selectable_products}; +} + +sub get_selectable_classifications { + my ($self) = @_; + + if (defined $self->{selectable_classifications}) { + return $self->{selectable_classifications}; + } + + my $products = $self->get_selectable_products; + + my $class; + foreach my $product (@$products) { + $class->{$product->classification_id} ||= + new Bugzilla::Classification($product->classification_id); + } + my @sorted_class = sort {lc($a->name) cmp lc($b->name)} (values %$class); + $self->{selectable_classifications} = \@sorted_class; + return $self->{selectable_classifications}; +} + +sub can_enter_product { + my ($self, $product_name, $warn) = @_; my $dbh = Bugzilla->dbh; - my $sth = $dbh->prepare($query); - $sth->execute(); - my @products = (); - while (my @row = $sth->fetchrow_array) { - push(@products, @row); + + if (!defined($product_name)) { + return unless $warn; + ThrowUserError('no_products'); } - $self->{SelectableProducts} = \@products; - my %list = @products; - return \%list if $by_id; - return values(%list); + trick_taint($product_name); + + # Checks whether the user has access to the product. + my $has_access = $dbh->selectrow_array('SELECT CASE WHEN group_id IS NULL + THEN 1 ELSE 0 END + FROM products + LEFT JOIN group_control_map + ON group_control_map.product_id = products.id + AND group_control_map.entry != 0 + AND group_id NOT IN (' . $self->groups_as_string . ') + WHERE products.name = ? ' . + $dbh->sql_limit(1), + undef, $product_name); + + if (!$has_access) { + return unless $warn; + ThrowUserError('entry_access_denied', { product => $product_name }); + } + + # Checks whether the product is open for new bugs and + # has at least one component and one version. + my ($is_open, $has_version) = + $dbh->selectrow_array('SELECT CASE WHEN disallownew = 0 + THEN 1 ELSE 0 END, + CASE WHEN versions.value IS NOT NULL + THEN 1 ELSE 0 END + FROM products + INNER JOIN components + ON components.product_id = products.id + LEFT JOIN versions + ON versions.product_id = products.id + WHERE products.name = ? ' . + $dbh->sql_limit(1), undef, $product_name); + + # Returns undef if the product has no components + # Returns 0 if the product has no versions, or is closed for bug entry + # Returns 1 if the user can enter bugs into the product + return ($is_open && $has_version) unless $warn; + + # (undef, undef): the product has no components, + # (0, ?) : the product is closed for new bug entry, + # (?, 0) : the product has no versions, + # (1, 1) : the user can enter bugs into the product, + if (!defined $is_open) { + ThrowUserError('missing_component', { product => $product_name }); + } elsif (!$is_open) { + ThrowUserError('product_disabled', { product => $product_name }); + } elsif (!$has_version) { + ThrowUserError('missing_version', { product => $product_name }); + } + return 1; +} + +sub get_enterable_products { + my $self = shift; + + if (defined $self->{enterable_products}) { + return $self->{enterable_products}; + } + + my @products; + foreach my $product (Bugzilla::Product::get_all_products()) { + if ($self->can_enter_product($product->name)) { + push(@products, $product); + } + } + $self->{enterable_products} = \@products; + return $self->{enterable_products}; } # visible_groups_inherited returns a reference to a list of all the groups @@ -487,8 +631,13 @@ sub visible_groups_direct { return $self->{visible_groups_direct}; } -sub derive_groups { - my ($self, $already_locked) = @_; +sub visible_groups_as_string { + my $self = shift; + return join(', ', @{$self->visible_groups_inherited()}); +} + +sub derive_regexp_groups { + my ($self) = @_; my $id = $self->id; return unless $id; @@ -497,71 +646,32 @@ sub derive_groups { my $sth; - $dbh->bz_lock_tables('profiles WRITE', 'user_group_map WRITE', - 'group_group_map READ', - 'groups READ') unless $already_locked; - # avoid races, we are only up to date as of the BEGINNING of this process my $time = $dbh->selectrow_array("SELECT NOW()"); - # first remove any old derived stuff for this user - $dbh->do(q{DELETE FROM user_group_map - WHERE user_id = ? - AND grant_type != ?}, - undef, - $id, - GRANT_DIRECT); - - my %groupidsadded = (); # add derived records for any matching regexps - $sth = $dbh->prepare("SELECT id, userregexp FROM groups WHERE userregexp != ''"); - $sth->execute; - - my $group_insert; - while (my $row = $sth->fetch) { - if ($self->{login} =~ m/$row->[1]/i) { - $group_insert ||= $dbh->prepare(q{INSERT INTO user_group_map - (user_id, group_id, isbless, grant_type) - VALUES (?, ?, 0, ?)}); - $groupidsadded{$row->[0]} = 1; - $group_insert->execute($id, $row->[0], GRANT_REGEXP); - } - } - - # Get a list of the groups of which the user is a member. - my %groupidschecked = (); - - my @groupidstocheck = @{$dbh->selectcol_arrayref(q{SELECT group_id - FROM user_group_map - WHERE user_id=?}, - undef, - $id)}; - - # Each group needs to be checked for inherited memberships once. - my $group_sth; - while (@groupidstocheck) { - my $group = shift @groupidstocheck; - if (!defined($groupidschecked{"$group"})) { - $groupidschecked{"$group"} = 1; - $group_sth ||= $dbh->prepare(q{SELECT grantor_id - FROM group_group_map - WHERE member_id=? - AND grant_type = } . - GROUP_MEMBERSHIP); - $group_sth->execute($group); - while (my ($groupid) = $group_sth->fetchrow_array) { - if (!defined($groupidschecked{"$groupid"})) { - push(@groupidstocheck,$groupid); - } - if (!$groupidsadded{$groupid}) { - $groupidsadded{$groupid} = 1; - $group_insert ||= $dbh->prepare(q{INSERT INTO user_group_map - (user_id, group_id, isbless, grant_type) - VALUES (?, ?, 0, ?)}); - $group_insert->execute($id, $groupid, GRANT_DERIVED); - } - } + $sth = $dbh->prepare("SELECT id, userregexp, user_group_map.group_id + FROM groups + LEFT JOIN user_group_map + ON groups.id = user_group_map.group_id + AND user_group_map.user_id = ? + AND user_group_map.grant_type = ?"); + $sth->execute($id, GRANT_REGEXP); + + my $group_insert = $dbh->prepare(q{INSERT INTO user_group_map + (user_id, group_id, isbless, grant_type) + VALUES (?, ?, 0, ?)}); + my $group_delete = $dbh->prepare(q{DELETE FROM user_group_map + WHERE user_id = ? + AND group_id = ? + AND isbless = 0 + AND grant_type = ?}); + while (my ($group, $regexp, $present) = $sth->fetchrow_array()) { + if (($regexp ne '') && ($self->{login} =~ m/$regexp/i)) { + $group_insert->execute($id, $group, GRANT_REGEXP) unless $present; + } else { + $group_delete->execute($id, $group, GRANT_REGEXP) if $present; } } @@ -571,7 +681,6 @@ sub derive_groups { undef, $time, $id); - $dbh->bz_unlock_tables() unless $already_locked; } sub product_responsibilities { @@ -676,8 +785,8 @@ sub match { $query .= "AND user_group_map.user_id = userid " . "AND isbless = 0 " . "AND group_id IN(" . - join(', ', (-1, @{$user->visible_groups_inherited})) . ") " . - "AND grant_type <> " . GRANT_DERIVED; + join(', ', (-1, @{$user->visible_groups_inherited})) . + ")"; } $query .= " AND disabledtext = '' " if $exclude_disabled; $query .= "ORDER BY namelength "; @@ -729,8 +838,7 @@ sub match { $query .= " AND user_group_map.user_id = userid" . " AND isbless = 0" . " AND group_id IN(" . - join(', ', (-1, @{$user->visible_groups_inherited})) . ")" . - " AND grant_type <> " . GRANT_DERIVED; + join(', ', (-1, @{$user->visible_groups_inherited})) . ")"; } $query .= " AND disabledtext = ''" if $exclude_disabled; $query .= " ORDER BY namelength"; @@ -802,8 +910,6 @@ sub match_field { # prepare default form values - my $vars = $::vars; - # What does a "--do_not_change--" field look like (if any)? my $dontchange = $cgi->param('dontchange'); @@ -982,6 +1088,9 @@ sub match_field { # Skip confirmation if we were told to, or if we don't need to confirm. return $retval if ($behavior == MATCH_SKIP_CONFIRM || !$need_confirm); + my $template = Bugzilla->template; + my $vars = {}; + $vars->{'script'} = Bugzilla->cgi->url(-relative => 1); # for self-referencing URLs $vars->{'fields'} = $fields; # fields being matched $vars->{'matches'} = $matches; # matches that were made @@ -989,8 +1098,8 @@ sub match_field { print Bugzilla->cgi->header(); - $::template->process("global/confirm-user-match.html.tmpl", $vars) - || ThrowTemplateError($::template->error()); + $template->process("global/confirm-user-match.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; @@ -1009,7 +1118,9 @@ our %names_to_events = ( 'Target Milestone' => EVT_PROJ_MANAGEMENT, 'Attachment description' => EVT_ATTACHMENT_DATA, 'Attachment mime type' => EVT_ATTACHMENT_DATA, - 'Attachment is patch' => EVT_ATTACHMENT_DATA); + 'Attachment is patch' => EVT_ATTACHMENT_DATA, + 'BugsThisDependsOn' => EVT_DEPEND_BLOCK, + 'OtherBugsDependingOnThis' => EVT_DEPEND_BLOCK); # Returns true if the user wants mail for a given bug change. # Note: the "+" signs before the constants suppress bareword quoting. @@ -1164,8 +1275,7 @@ sub get_userlist { $query .= "LEFT JOIN user_group_map " . "ON user_group_map.user_id = userid AND isbless = 0 " . "AND group_id IN(" . - join(', ', (-1, @{$self->visible_groups_inherited})) . ") " . - "AND grant_type <> " . GRANT_DERIVED; + join(', ', (-1, @{$self->visible_groups_inherited})) . ")"; } $query .= " WHERE disabledtext = '' "; $query .= $dbh->sql_group_by('userid', 'login_name, realname'); @@ -1187,7 +1297,7 @@ sub get_userlist { return $self->{'userlist'}; } -sub insert_new_user ($$;$$) { +sub insert_new_user { my ($username, $realname, $password, $disabledtext) = (@_); my $dbh = Bugzilla->dbh; @@ -1196,10 +1306,10 @@ sub insert_new_user ($$;$$) { # If not specified, generate a new random password for the user. # If the password is '*', do not encrypt it; we are creating a user # based on the ENV auth method. - $password ||= &::GenerateRandomPassword(); + $password ||= generate_random_password(); my $cryptpassword = ($password ne '*') ? bz_crypt($password) : $password; - # XXX - These should be moved into ValidateNewUser or CheckEmailSyntax + # XXX - These should be moved into is_available_username or validate_email_syntax # At the least, they shouldn't be here. They're safe for now, though. trick_taint($username); trick_taint($realname); @@ -1235,13 +1345,17 @@ sub insert_new_user ($$;$$) { "(user_id, relationship, event) " . "VALUES ($userid, " . REL_ANY . ", $event)"); } + + my $user = new Bugzilla::User($userid); + $user->derive_regexp_groups(); + # Return the password to the calling code so it can be included # in an email sent to the user. return $password; } -sub is_available_username ($;$) { +sub is_available_username { my ($username, $old_username) = @_; if(login_to_id($username) != 0) { @@ -1277,7 +1391,7 @@ sub is_available_username ($;$) { return 1; } -sub login_to_id ($) { +sub login_to_id { my ($login) = (@_); my $dbh = Bugzilla->dbh; # $login will only be used by the following SELECT statement, so it's safe. @@ -1292,8 +1406,8 @@ sub login_to_id ($) { } } -sub UserInGroup ($) { - return defined Bugzilla->user->groups->{$_[0]} ? 1 : 0; +sub UserInGroup { + return exists Bugzilla->user->groups->{$_[0]} ? 1 : 0; } 1; @@ -1310,6 +1424,9 @@ Bugzilla::User - Object for a Bugzilla user my $user = new Bugzilla::User($id); + my @get_selectable_classifications = + $user->get_selectable_classifications; + # Class Functions $password = insert_new_user($username, $realname, $password, $disabledtext); @@ -1368,10 +1485,6 @@ C<undef> if no matching user is found. This routine should not be required in general; most scripts should be using userids instead. -This routine and C<new> both take an extra optional argument, which is -passed as the argument to C<derive_groups> to avoid locking. See that -routine's documentation for details. - =end undocumented =item C<id> @@ -1398,7 +1511,7 @@ the page footer, and C<0> otherwise. =item C<identity> -Retruns a string for the identity of the user. This will be of the form +Returns a string for the identity of the user. This will be of the form C<name E<lt>emailE<gt>> if the user has specified a name, and C<email> otherwise. @@ -1461,12 +1574,19 @@ are the names of the groups, whilst the values are the respective group ids. (This is so that a set of all groupids for groups the user is in can be obtained by C<values(%{$user-E<gt>groups})>.) +=item C<groups_as_string> + +Returns a string containing a comma-seperated list of numeric group ids. If +the user is not a member of any groups, returns "-1". This is most often used +within an SQL IN() function. + =item C<in_group> -Determines whether or not a user is in the given group. This method is mainly -intended for cases where we are not looking at the currently logged in user, -and only need to make a quick check for the group, where calling C<groups> -and getting all of the groups would be overkill. +Determines whether or not a user is in the given group by name. + +=item C<in_group_id> + +Determines whether or not a user is in the given group by id. =item C<bless_groups> @@ -1477,11 +1597,26 @@ The arrayref consists of the groups the user can bless, taking into account that having editusers permissions means that you can bless all groups, and that you need to be aware of a group in order to bless a group. +=item C<can_see_user(user)> + +Returns 1 if the specified user account exists and is visible to the user, +0 otherwise. + +=item C<can_edit_product(prod_id)> + +Determines if, given a product id, the user can edit bugs in this product +at all. + =item C<can_see_bug(bug_id)> Determines if the user can see the specified bug. -=item C<derive_groups> +=item C<can_see_product(product_name)> + +Returns 1 if the user can access the specified product, and 0 if the user +should not be aware of the existence of the product. + +=item C<derive_regexp_groups> Bugzilla allows for group inheritance. When data about the user (or any of the groups) changes, the database must be updated. Handling updated groups is taken @@ -1489,12 +1624,52 @@ care of by the constructor. However, when updating the email address, the user may be placed into different groups, based on a new email regexp. This method should be called in such a case to force reresolution of these groups. -=item C<get_selectable_products(by_id)> +=item C<get_selectable_products> + + Description: Returns all products the user is allowed to access. This list + is restricted to some given classification if $classification_id + is given. + + Params: $classification_id - (optional) The ID of the classification + the products belong to. + + Returns: An array of product objects, sorted by the product name. + +=item C<get_selectable_classifications> + + Description: Returns all classifications containing at least one product + the user is allowed to view. -Returns an alphabetical list of product names from which -the user can select bugs. If the $by_id parameter is true, it returns -a hash where the keys are the product ids and the values are the -product names. + Params: none + + Returns: An array of Bugzilla::Classification objects, sorted by + the classification name. + +=item C<can_enter_product($product_name, $warn)> + + Description: Returns 1 if the user can enter bugs into the specified product. + If the user cannot enter bugs into the product, the behavior of + this method depends on the value of $warn: + - if $warn is false (or not given), a 'false' value is returned; + - if $warn is true, an error is thrown. + + Params: $product_name - a product name. + $warn - optional parameter, indicating whether an error + must be thrown if the user cannot enter bugs + into the specified product. + + Returns: 1 if the user can enter bugs into the product, + 0 if the user cannot enter bugs into the product and if $warn + is false (an error is thrown if $warn is true). + +=item C<get_enterable_products> + + Description: Returns an array of product objects into which the user is + allowed to enter bugs. + + Params: none + + Returns: an array of product objects. =item C<get_userlist> @@ -1520,22 +1695,10 @@ be have derived groups up-to-date to select the users meeting this criteria. Returns a list of groups that the user is aware of. -=begin undocumented - -This routine takes an optional argument. If true, then this routine will not -lock the tables, but will rely on the caller to have done so itsself. +=item C<visible_groups_as_string> -This is required because mysql will only execute a query if all of the tables -are locked, or if none of them are, not a mixture. If the caller has already -done some locking, then this routine would fail. Thus the caller needs to lock -all the tables required by this method, and then C<derive_groups> won't do -any locking. - -This is a really ugly solution, and when Bugzilla supports transactions -instead of using the explicit table locking we were forced to do when thats -all MySQL supported, this will go away. - -=end undocumented +Returns the result of C<visible_groups_direct> as a string (a comma-separated +list). =item C<product_responsibilities> diff --git a/Bugzilla/User/CVS/Entries b/Bugzilla/User/CVS/Entries index 5d6fff3c4..bcd448921 100644 --- a/Bugzilla/User/CVS/Entries +++ b/Bugzilla/User/CVS/Entries @@ -1,2 +1,2 @@ -/Setting.pm/1.4.2.2/Wed Jul 27 19:08:43 2005//TBUGZILLA-2_20_2 +/Setting.pm/1.6/Tue Jul 26 14:09:48 2005//TBUGZILLA-2_22 D diff --git a/Bugzilla/User/CVS/Tag b/Bugzilla/User/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/Bugzilla/User/CVS/Tag +++ b/Bugzilla/User/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 9d5f40ffb..28f5e71bc 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -23,6 +23,7 @@ # Bradley Baetz <bbaetz@student.usyd.edu.au> # Christopher Aillon <christopher@aillon.com> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Frédéric Buclin <LpSolit@gmail.com> package Bugzilla::Util; @@ -37,13 +38,15 @@ use base qw(Exporter); lsearch max min diff_arrays diff_strings trim wrap_comment find_wrap_point - format_time format_time_decimal - file_mod_time - bz_crypt clean_text); + perform_substs + format_time format_time_decimal validate_date + file_mod_time is_7bit_clean + bz_crypt generate_random_password + validate_email_syntax clean_text); use Bugzilla::Config; -use Bugzilla::Error; use Bugzilla::Constants; + use Date::Parse; use Date::Format; use Text::Wrap; @@ -91,7 +94,7 @@ sub html_quote { return $var; } -# This orignally came from CGI.pm, by Lincoln D. Stein +# This originally came from CGI.pm, by Lincoln D. Stein sub url_quote { my ($toencode) = (@_); $toencode =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg; @@ -131,6 +134,13 @@ sub xml_quote { return $var; } +sub url_decode { + my ($todecode) = (@_); + $todecode =~ tr/+/ /; # pluses become spaces + $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; + return $todecode; +} + sub i_am_cgi { # I use SERVER_SOFTWARE because it's required to be # defined for all requests in the CGI spec. @@ -214,7 +224,7 @@ sub diff_strings { return ($removed, $added); } -sub wrap_comment ($) { +sub wrap_comment { my ($comment) = @_; my $wrappedcomment = ""; @@ -238,7 +248,7 @@ sub wrap_comment ($) { return $wrappedcomment; } -sub find_wrap_point ($$) { +sub find_wrap_point { my ($string, $maxpos) = @_; if (!$string) { return 0 } if (length($string) < $maxpos) { return length($string) } @@ -257,7 +267,13 @@ sub find_wrap_point ($$) { return $wrappoint; } -sub format_time ($;$) { +sub perform_substs { + my ($str, $substs) = (@_); + $str =~ s/%([a-z]*)%/(defined $substs->{$1} ? $substs->{$1} : Param($1))/eg; + return $str; +} + +sub format_time { my ($date, $format) = @_; # If $format is undefined, try to guess the correct date format. @@ -309,7 +325,7 @@ sub format_time_decimal { return $newtime; } -sub file_mod_time ($) { +sub file_mod_time { my ($filename) = (@_); my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) @@ -317,7 +333,7 @@ sub file_mod_time ($) { return $mtime; } -sub bz_crypt ($) { +sub bz_crypt { my ($password) = @_; # The list of characters that can appear in a salt. Salts and hashes @@ -342,8 +358,20 @@ sub bz_crypt ($) { return $cryptedpassword; } -sub ValidateDate { - my ($date, $format) = @_; +sub generate_random_password { + my $size = shift || 10; # default to 10 chars if nothing specified + return join("", map{ ('0'..'9','a'..'z','A'..'Z')[rand 62] } (1..$size)); +} + +sub validate_email_syntax { + my ($addr) = @_; + my $match = Param('emailregexp'); + my $ret = ($addr =~ /$match/ && $addr !~ /[\\\(\)<>&,;:"\[\] \t\r\n]/); + return $ret ? 1 : 0; +} + +sub validate_date { + my ($date) = @_; my $date2; # $ts is undefined if the parser fails. @@ -354,14 +382,17 @@ sub ValidateDate { $date =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; $date2 =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; } - if (!$ts || $date ne $date2) { - ThrowUserError('illegal_date', {date => $date, format => $format}); - } + my $ret = ($ts && $date eq $date2); + return $ret ? 1 : 0; +} + +sub is_7bit_clean { + return $_[0] !~ /[^\x20-\x7E\x0A\x0D]/; } sub clean_text { my ($dtext) = shift; - $dtext =~ s/[\x00-\x1F\x7F]+/ /g; # change control characters to a space + $dtext =~ s/[\x00-\x1F\x7F]+/ /g; # change control characters into a space return trim($dtext); } @@ -389,6 +420,12 @@ Bugzilla::Util - Generic utility functions for bugzilla value_quote($var); xml_quote($var); + # Functions for decoding + $rv = url_decode($var); + + # Functions that tell you about your environment + my $is_cgi = i_am_cgi(); + # Functions for searching $loc = lsearch(\@arr, $val); $val = max($a, $b, $c); @@ -401,6 +438,7 @@ Bugzilla::Util - Generic utility functions for bugzilla $val = trim(" abc "); ($removed, $added) = diff_strings($old, $new); $wrapped = wrap_comment($comment); + $msg = perform_substs($str, $substs); # Functions for formatting time format_time($time); @@ -410,6 +448,11 @@ Bugzilla::Util - Generic utility functions for bugzilla # Cryptographic Functions $crypted_password = bz_crypt($password); + $new_password = generate_random_password($password_length); + + # Validation Functions + validate_email_syntax($email); + validate_date($date); =head1 DESCRIPTION @@ -493,6 +536,16 @@ This is similar to C<html_quote>, except that ' is escaped to '. This is kept separate from html_quote partly for compatibility with previous code (for ') and partly for future handling of non-ASCII characters. +=item C<url_decode($val)> + +Converts the %xx encoding from the given URL back to its original form. + +=item C<i_am_cgi()> + +Tells you whether or not you are being run as a CGI script in a web +server. For example, it would return false if the caller is running +in a command-line script. + =back =head2 Searching @@ -569,6 +622,33 @@ Search for a comma, a whitespace or a hyphen to split $string, within the first $maxpos characters. If none of them is found, just split $string at $maxpos. The search starts at $maxpos and goes back to the beginning of the string. +=item C<perform_substs($str, $substs)> + +Performs substitutions for sending out email with variables in it, +or for inserting a parameter into some other string. + +Takes a string and a reference to a hash containing substitution +variables and their values. + +If the hash is not specified, or if we need to substitute something +that's not in the hash, then we will use parameters to do the +substitution instead. + +Substitutions are always enclosed with '%' symbols. So they look like: +%some_variable_name%. If "some_variable_name" is a key in the hash, then +its value will be placed into the string. If it's not a key in the hash, +then the value of the parameter called "some_variable_name" will be placed +into the string. + +=item C<is_7bit_clean($str)> + +Returns true is the string contains only 7-bit characters (ASCII 32 through 126, +ASCII 10 (LineFeed) and ASCII 13 (Carrage Return). + +=item C<clean_text($str)> +Returns the parameter "cleaned" by exchanging non-printable characters with spaces. +Specifically characters (ASCII 0 through 31) and (ASCII 127) will become ASCII 32 (Space). + =back =head2 Formatting Time @@ -617,10 +697,6 @@ Takes a string and returns a C<crypt>ed value for it, using a random salt. Please always use this function instead of the built-in perl "crypt" when initially encrypting a password. -=item C<clean_text($str)> -Returns the parameter "cleaned" by exchanging non-printable characters with a space. -Specifically characters (ASCII 0 through 31) and (ASCII 127) will become ASCII 32 (Space). - =begin undocumented Random salts are generated because the alternative is usually @@ -631,4 +707,26 @@ characters of the password to anyone who views the encrypted version. =end undocumented +=item C<generate_random_password($password_length)> + +Returns an alphanumeric string with the specified length +(10 characters by default). Use this function to generate passwords +and tokens. + +=back + +=head2 Validation + +=over 4 + +=item C<validate_email_syntax($email)> + +Do a syntax checking for a legal email address and returns 1 if +the check is successful, else returns 0. + +=item C<validate_date($date)> + +Make sure the date has the correct format and returns 1 if +the check is successful, else returns 0. + =back diff --git a/Bugzilla/Version.pm b/Bugzilla/Version.pm new file mode 100644 index 000000000..9492e8135 --- /dev/null +++ b/Bugzilla/Version.pm @@ -0,0 +1,177 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): Tiago R. Mello <timello@async.com.br> + +use strict; + +package Bugzilla::Version; + +use Bugzilla::Util; +use Bugzilla::Error; + +################################ +##### Initialization ##### +################################ + +use constant DEFAULT_VERSION => 'unspecified'; + +use constant DB_COLUMNS => qw( + versions.value + versions.product_id +); + +our $columns = join(", ", DB_COLUMNS); + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + my $self = {}; + bless($self, $class); + return $self->_init(@_); +} + +sub _init { + my $self = shift; + my ($product_id, $value) = (@_); + my $dbh = Bugzilla->dbh; + + my $version; + + if (defined $product_id + && detaint_natural($product_id) + && defined $value) { + + trick_taint($value); + $version = $dbh->selectrow_hashref(qq{ + SELECT $columns FROM versions + WHERE value = ? + AND product_id = ?}, undef, ($value, $product_id)); + } else { + ThrowCodeError('bad_arg', + {argument => 'product_id/value', + function => 'Bugzilla::Version::_init'}); + } + + return undef unless (defined $version); + + foreach my $field (keys %$version) { + $self->{$field} = $version->{$field}; + } + return $self; +} + +sub bug_count { + my $self = shift; + my $dbh = Bugzilla->dbh; + + if (!defined $self->{'bug_count'}) { + $self->{'bug_count'} = $dbh->selectrow_array(qq{ + SELECT COUNT(*) FROM bugs + WHERE product_id = ? AND version = ?}, undef, + ($self->product_id, $self->name)) || 0; + } + return $self->{'bug_count'}; +} + +############################### +##### Accessors #### +############################### + +sub name { return $_[0]->{'value'}; } +sub product_id { return $_[0]->{'product_id'}; } + +############################### +##### Subroutines ### +############################### + +sub check_version { + my ($product, $version_name) = @_; + + $version_name || ThrowUserError('version_not_specified'); + my $version = new Bugzilla::Version($product->id, $version_name); + unless ($version) { + ThrowUserError('version_not_valid', + {'product' => $product->name, + 'version' => $version_name}); + } + return $version; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Version - Bugzilla product version class. + +=head1 SYNOPSIS + + use Bugzilla::Version; + + my $version = new Bugzilla::Version(1, 'version_value'); + + my $product_id = $version->product_id; + my $value = $version->value; + + my $version = $hash_ref->{'version_value'}; + + my $version = Bugzilla::Version::check_version($product_obj, + 'acme_version'); + +=head1 DESCRIPTION + +Version.pm represents a Product Version object. + +=head1 METHODS + +=over + +=item C<new($product_id, $value)> + + Description: The constructor is used to load an existing version + by passing a product id and a version value. + + Params: $product_id - Integer with a product id. + $value - String with a version value. + + Returns: A Bugzilla::Version object. + +=item C<bug_count()> + + Description: Returns the total of bugs that belong to the version. + + Params: none. + + Returns: Integer with the number of bugs. + +=back + +=head1 SUBROUTINES + +=over + +=item C<check_version($product, $version_name)> + + Description: Checks if the version name exists for the product name. + + Params: $product - A Bugzilla::Product object. + $version_name - String with a version name. + + Returns: Bugzilla::Version object. + +=back + +=cut diff --git a/CGI.pl b/CGI.pl deleted file mode 100644 index 190fc8de8..000000000 --- a/CGI.pl +++ /dev/null @@ -1,374 +0,0 @@ -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Terry Weissman <terry@mozilla.org> -# Dan Mosedale <dmose@mozilla.org> -# Joe Robins <jmrobins@tgix.com> -# Dave Miller <justdave@syndicomm.com> -# Christopher Aillon <christopher@aillon.com> -# Gervase Markham <gerv@gerv.net> -# Christian Reis <kiko@async.com.br> - -# Contains some global routines used throughout the CGI scripts of Bugzilla. - -use strict; -use lib "."; - -# use Carp; # for confess - -BEGIN { - if ($^O =~ /MSWin32/i) { - # Help CGI find the correct temp directory as the default list - # isn't Windows friendly (Bug 248988) - $ENV{'TMPDIR'} = $ENV{'TEMP'} || $ENV{'TMP'} || "$ENV{'WINDIR'}\\TEMP"; - } -} - -use Bugzilla::Util; -use Bugzilla::Config; -use Bugzilla::Constants; -use Bugzilla::Error; -use Bugzilla::BugMail; -use Bugzilla::Bug; -use Bugzilla::User; - -# Used in LogActivityEntry(). Gives the max length of lines in the -# activity table. -use constant MAX_LINE_LENGTH => 254; - -# Shut up misguided -w warnings about "used only once". For some reason, -# "use vars" chokes on me when I try it here. - -sub CGI_pl_sillyness { - my $zz; - $zz = $::buffer; -} - -use CGI::Carp qw(fatalsToBrowser); - -require 'globals.pl'; - -use vars qw($template $vars); - -# If Bugzilla is shut down, do not go any further, just display a message -# to the user about the downtime and log out. (do)editparams.cgi is exempted -# from this message, of course, since it needs to be available in order for -# the administrator to open Bugzilla back up. -if (Param("shutdownhtml") && $0 !~ m:(^|[\\/])(do)?editparams\.cgi$:) { - # For security reasons, log out users when Bugzilla is down. - # Bugzilla->login() is required to catch the logincookie, if any. - my $user = Bugzilla->login(LOGIN_OPTIONAL); - my $userid = $user->id; - Bugzilla->logout(); - - # Return the appropriate HTTP response headers. - print Bugzilla->cgi->header(); - - $::vars->{'message'} = "shutdown"; - $::vars->{'userid'} = $userid; - # Generate and return an HTML message about the downtime. - $::template->process("global/message.html.tmpl", $::vars) - || ThrowTemplateError($::template->error()); - exit; -} - -# Implementations of several of the below were blatently stolen from CGI.pm, -# by Lincoln D. Stein. - -# Get rid of all the %xx encoding and the like from the given URL. -sub url_decode { - my ($todecode) = (@_); - $todecode =~ tr/+/ /; # pluses become spaces - $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; - return $todecode; -} - -# check and see if a given field exists, is non-empty, and is set to a -# legal value. assume a browser bug and abort appropriately if not. -# if $legalsRef is not passed, just check to make sure the value exists and -# is non-NULL -sub CheckFormField ($$;\@) { - my ($cgi, # a CGI object - $fieldname, # the fieldname to check - $legalsRef # (optional) ref to a list of legal values - ) = @_; - - if (!defined $cgi->param($fieldname) - || trim($cgi->param($fieldname)) eq "" - || (defined($legalsRef) - && lsearch($legalsRef, $cgi->param($fieldname))<0)) - { - SendSQL("SELECT description FROM fielddefs WHERE name=" . SqlQuote($fieldname)); - my $result = FetchOneColumn(); - my $field; - if ($result) { - $field = $result; - } - else { - $field = $fieldname; - } - - ThrowCodeError("illegal_field", { field => $field }); - } -} - -# check and see if a given field is defined, and abort if not -sub CheckFormFieldDefined ($$) { - my ($cgi, # a CGI object - $fieldname, # the fieldname to check - ) = @_; - - if (!defined $cgi->param($fieldname)) { - ThrowCodeError("undefined_field", { field => $fieldname }); - } -} - -sub ValidateBugID { - # Validates and verifies a bug ID, making sure the number is a - # positive integer, that it represents an existing bug in the - # database, and that the user is authorized to access that bug. - # We detaint the number here, too - - my ($id, $field) = @_; - - # Get rid of white-space around the ID. - $id = trim($id); - - # If the ID isn't a number, it might be an alias, so try to convert it. - my $alias = $id; - if (!detaint_natural($id)) { - $id = bug_alias_to_id($alias); - $id || ThrowUserError("invalid_bug_id_or_alias", - {'bug_id' => $alias, - 'field' => $field }); - } - - # Modify the calling code's original variable to contain the trimmed, - # converted-from-alias ID. - $_[0] = $id; - - # First check that the bug exists - SendSQL("SELECT bug_id FROM bugs WHERE bug_id = $id"); - - FetchOneColumn() - || ThrowUserError("invalid_bug_id_non_existent", {'bug_id' => $id}); - - return if (defined $field && ($field eq "dependson" || $field eq "blocked")); - - return if Bugzilla->user->can_see_bug($id); - - # The user did not pass any of the authorization tests, which means they - # are not authorized to see the bug. Display an error and stop execution. - # The error the user sees depends on whether or not they are logged in - # (i.e. $::userid contains the user's positive integer ID). - if ($::userid) { - ThrowUserError("bug_access_denied", {'bug_id' => $id}); - } else { - ThrowUserError("bug_access_query", {'bug_id' => $id}); - } -} - -sub CheckEmailSyntax { - my ($addr) = (@_); - my $match = Param('emailregexp'); - if ($addr !~ /$match/ || $addr =~ /[\\\(\)<>&,;:"\[\] \t\r\n]/) { - ThrowUserError("illegal_email_address", { addr => $addr }); - } -} - -sub MailPassword { - my ($login, $password) = (@_); - my $urlbase = Param("urlbase"); - my $template = Param("passwordmail"); - my $msg = PerformSubsts($template, - {"mailaddress" => $login . Param('emailsuffix'), - "login" => $login, - "password" => $password}); - - Bugzilla::BugMail::MessageToMTA($msg); -} - -sub PutHeader { - ($vars->{'title'}, $vars->{'h1'}, $vars->{'h2'}) = (@_); - - $::template->process("global/header.html.tmpl", $::vars) - || ThrowTemplateError($::template->error()); - $vars->{'header_done'} = 1; -} - -sub PutFooter { - $::template->process("global/footer.html.tmpl", $::vars) - || ThrowTemplateError($::template->error()); -} - -sub LogActivityEntry { - my ($i,$col,$removed,$added,$whoid,$timestamp) = @_; - # in the case of CCs, deps, and keywords, there's a possibility that someone - # might try to add or remove a lot of them at once, which might take more - # space than the activity table allows. We'll solve this by splitting it - # into multiple entries if it's too long. - while ($removed || $added) { - my ($removestr, $addstr) = ($removed, $added); - if (length($removestr) > MAX_LINE_LENGTH) { - my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH); - $removestr = substr($removed,0,$commaposition); - $removed = substr($removed,$commaposition); - $removed =~ s/^[,\s]+//; # remove any comma or space - } else { - $removed = ""; # no more entries - } - if (length($addstr) > MAX_LINE_LENGTH) { - my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH); - $addstr = substr($added,0,$commaposition); - $added = substr($added,$commaposition); - $added =~ s/^[,\s]+//; # remove any comma or space - } else { - $added = ""; # no more entries - } - $addstr = SqlQuote($addstr); - $removestr = SqlQuote($removestr); - my $fieldid = GetFieldID($col); - SendSQL("INSERT INTO bugs_activity " . - "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . - "($i,$whoid," . SqlQuote($timestamp) . ",$fieldid,$removestr,$addstr)"); - } -} - -sub GetBugActivity { - my ($id, $starttime) = (@_); - my $datepart = ""; - my $dbh = Bugzilla->dbh; - - die "Invalid id: $id" unless $id=~/^\s*\d+\s*$/; - - if (defined $starttime) { - $datepart = "AND bugs_activity.bug_when > " . SqlQuote($starttime); - } - my $suppjoins = ""; - my $suppwhere = ""; - if (Param("insidergroup") && !UserInGroup(Param('insidergroup'))) { - $suppjoins = "LEFT JOIN attachments - ON attachments.attach_id = bugs_activity.attach_id"; - $suppwhere = "AND COALESCE(attachments.isprivate, 0) = 0"; - } - my $query = " - SELECT COALESCE(fielddefs.description, " - # This is a hack - PostgreSQL requires both COALESCE - # arguments to be of the same type, and this is the only - # way supported by both MySQL 3 and PostgreSQL to convert - # an integer to a string. MySQL 4 supports CAST. - . $dbh->sql_string_concat('bugs_activity.fieldid', q{''}) . - "), fielddefs.name, bugs_activity.attach_id, " . - $dbh->sql_date_format('bugs_activity.bug_when', '%Y.%m.%d %H:%i:%s') . - ", bugs_activity.removed, bugs_activity.added, profiles.login_name - FROM bugs_activity - $suppjoins - LEFT JOIN fielddefs - ON bugs_activity.fieldid = fielddefs.fieldid - INNER JOIN profiles - ON profiles.userid = bugs_activity.who - WHERE bugs_activity.bug_id = $id - $datepart - $suppwhere - ORDER BY bugs_activity.bug_when"; - - SendSQL($query); - - my @operations; - my $operation = {}; - my $changes = []; - my $incomplete_data = 0; - - while (my ($field, $fieldname, $attachid, $when, $removed, $added, $who) - = FetchSQLData()) - { - my %change; - my $activity_visible = 1; - - # check if the user should see this field's activity - if ($fieldname eq 'remaining_time' || - $fieldname eq 'estimated_time' || - $fieldname eq 'work_time' || - $fieldname eq 'deadline') { - - if (!UserInGroup(Param('timetrackinggroup'))) { - $activity_visible = 0; - } else { - $activity_visible = 1; - } - } else { - $activity_visible = 1; - } - - if ($activity_visible) { - # This gets replaced with a hyperlink in the template. - $field =~ s/^Attachment// if $attachid; - - # Check for the results of an old Bugzilla data corruption bug - $incomplete_data = 1 if ($added =~ /^\?/ || $removed =~ /^\?/); - - # An operation, done by 'who' at time 'when', has a number of - # 'changes' associated with it. - # If this is the start of a new operation, store the data from the - # previous one, and set up the new one. - if ($operation->{'who'} - && ($who ne $operation->{'who'} - || $when ne $operation->{'when'})) - { - $operation->{'changes'} = $changes; - push (@operations, $operation); - - # Create new empty anonymous data structures. - $operation = {}; - $changes = []; - } - - $operation->{'who'} = $who; - $operation->{'when'} = $when; - - $change{'field'} = $field; - $change{'fieldname'} = $fieldname; - $change{'attachid'} = $attachid; - $change{'removed'} = $removed; - $change{'added'} = $added; - push (@$changes, \%change); - } - } - - if ($operation->{'who'}) { - $operation->{'changes'} = $changes; - push (@operations, $operation); - } - - return(\@operations, $incomplete_data); -} - -############# Live code below here (that is, not subroutine defs) ############# - -use Bugzilla; - -# XXX - mod_perl - reset this between runs -$::cgi = Bugzilla->cgi; - -$::buffer = $::cgi->query_string(); - -# This could be needed in any CGI, so we set it here. -$vars->{'help'} = $::cgi->param('help') ? 1 : 0; - -1; diff --git a/CVS/Entries b/CVS/Entries index 191b52ac5..d1c4f75e1 100644 --- a/CVS/Entries +++ b/CVS/Entries @@ -1,77 +1,68 @@ -/.cvsignore/1.6/Mon May 13 22:28:26 2002//TBUGZILLA-2_20_2 -/Bugzilla.pm/1.17.4.1/Sun Nov 13 17:57:26 2005//TBUGZILLA-2_20_2 -/CGI.pl/1.242.2.1/Wed Jul 27 20:01:38 2005//TBUGZILLA-2_20_2 -/QUICKSTART/1.4/Thu Jul 8 19:59:25 2004//TBUGZILLA-2_20_2 -/README/1.52/Fri Oct 10 02:22:39 2003//TBUGZILLA-2_20_2 -/UPGRADING/1.1/Fri Aug 10 22:35:21 2001//TBUGZILLA-2_20_2 -/UPGRADING-pre-2.8/1.3/Thu Mar 27 00:06:37 2003//TBUGZILLA-2_20_2 -/ant.jpg/1.2/Wed Aug 26 22:36:05 1998/-kb/TBUGZILLA-2_20_2 -/attachment.cgi/1.89.2.4/Sun Apr 9 18:33:34 2006//TBUGZILLA-2_20_2 -/buglist.cgi/1.299.2.10/Tue Feb 21 00:12:01 2006//TBUGZILLA-2_20_2 -/bugzilla.dtd/1.11/Thu Jun 2 21:26:43 2005//TBUGZILLA-2_20_2 -/chart.cgi/1.11/Thu May 12 01:52:13 2005//TBUGZILLA-2_20_2 -/checksetup.pl/1.412.2.22/Thu Jan 12 07:13:14 2006//TBUGZILLA-2_20_2 -/colchange.cgi/1.49/Fri Jul 8 03:39:19 2005//TBUGZILLA-2_20_2 -/collectstats.pl/1.43.4.3/Fri Dec 23 02:08:46 2005//TBUGZILLA-2_20_2 -/config.cgi/1.8.4.2/Sat Oct 1 01:09:04 2005//TBUGZILLA-2_20_2 -/createaccount.cgi/1.39.2.1/Wed Jul 27 20:18:20 2005//TBUGZILLA-2_20_2 -/defparams.pl/1.160.2.5/Thu Feb 23 01:51:23 2006//TBUGZILLA-2_20_2 -/describecomponents.cgi/1.29/Wed Mar 9 20:53:20 2005//TBUGZILLA-2_20_2 -/describekeywords.cgi/1.14/Wed Mar 16 00:27:14 2005//TBUGZILLA-2_20_2 -/doeditparams.cgi/1.33/Tue Mar 15 22:10:13 2005//TBUGZILLA-2_20_2 -/duplicates.cgi/1.44/Sat Jul 10 07:17:02 2004//TBUGZILLA-2_20_2 -/duplicates.xul/1.2/Thu Oct 21 19:02:28 2004//TBUGZILLA-2_20_2 -/editclassifications.cgi/1.12.2.1/Wed Jul 27 19:36:50 2005//TBUGZILLA-2_20_2 -/editcomponents.cgi/1.54.4.1/Sun Jan 1 21:19:21 2006//TBUGZILLA-2_20_2 -/editflagtypes.cgi/1.19.4.2/Wed Jan 11 13:19:53 2006//TBUGZILLA-2_20_2 -/editgroups.cgi/1.52.4.3/Sun Jan 22 20:12:20 2006//TBUGZILLA-2_20_2 -/editkeywords.cgi/1.26.4.2/Mon Dec 12 02:42:50 2005//TBUGZILLA-2_20_2 -/editmilestones.cgi/1.38/Tue May 3 19:41:22 2005//TBUGZILLA-2_20_2 -/editparams.cgi/1.24/Tue Mar 15 22:10:13 2005//TBUGZILLA-2_20_2 -/editproducts.cgi/1.85.2.8/Thu Jan 19 11:30:26 2006//TBUGZILLA-2_20_2 -/editsettings.cgi/1.2.4.1/Wed Jul 20 02:23:33 2005//TBUGZILLA-2_20_2 -/editusers.cgi/1.90.2.9/Tue Dec 13 20:20:43 2005//TBUGZILLA-2_20_2 -/editvalues.cgi/1.3.2.2/Wed Jul 27 19:36:50 2005//TBUGZILLA-2_20_2 -/editversions.cgi/1.34/Wed Apr 6 00:19:51 2005//TBUGZILLA-2_20_2 -/editwhines.cgi/1.8.2.2/Thu Feb 2 19:09:01 2006//TBUGZILLA-2_20_2 -/enter_bug.cgi/1.114.4.3/Sun Oct 23 21:50:34 2005//TBUGZILLA-2_20_2 -/globals.pl/1.326.2.5/Mon Jan 9 19:02:51 2006//TBUGZILLA-2_20_2 -/importxml.pl/1.44.2.1/Fri Aug 5 01:01:40 2005//TBUGZILLA-2_20_2 -/index.cgi/1.13.10.1/Sun Aug 21 19:30:07 2005//TBUGZILLA-2_20_2 -/localconfig.js/1.2/Thu Jul 17 22:49:47 2003//TBUGZILLA-2_20_2 -/long_list.cgi/1.45.6.1/Tue Oct 25 19:26:56 2005//TBUGZILLA-2_20_2 -/move.pl/1.31.4.2/Thu Sep 8 23:45:14 2005//TBUGZILLA-2_20_2 -/page.cgi/1.15/Sat Apr 17 04:41:14 2004//TBUGZILLA-2_20_2 -/post_bug.cgi/1.118.2.5/Sun Jan 8 19:54:34 2006//TBUGZILLA-2_20_2 -/process_bug.cgi/1.263.2.6/Sun Jan 8 19:54:34 2006//TBUGZILLA-2_20_2 -/productmenu.js/1.2/Tue Dec 14 02:29:56 2004//TBUGZILLA-2_20_2 -/query.cgi/1.146.2.1/Sun Aug 21 20:46:56 2005//TBUGZILLA-2_20_2 -/quicksearch.html/1.3/Mon Apr 15 02:47:55 2002//TBUGZILLA-2_20_2 -/quicksearch.js/1.12/Thu Jun 9 09:32:24 2005//TBUGZILLA-2_20_2 -/quicksearchhack.html/1.6/Mon Jun 20 19:16:26 2005//TBUGZILLA-2_20_2 -/quips.cgi/1.28/Wed Jun 29 21:54:49 2005//TBUGZILLA-2_20_2 -/relogin.cgi/1.25.10.1/Sat Aug 13 14:17:16 2005//TBUGZILLA-2_20_2 -/report.cgi/1.29.4.2/Fri Dec 2 20:51:14 2005//TBUGZILLA-2_20_2 -/reports.cgi/1.74.4.1/Thu Aug 4 16:06:36 2005//TBUGZILLA-2_20_2 -/request.cgi/1.23.2.2/Tue Mar 21 18:50:13 2006//TBUGZILLA-2_20_2 -/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-2_20_2 -/runtests.pl/1.4/Fri Sep 3 06:59:08 2004//TBUGZILLA-2_20_2 -/sanitycheck.cgi/1.97.2.5/Mon Jan 16 10:32:30 2006//TBUGZILLA-2_20_2 -/show_activity.cgi/1.15/Sat Mar 27 03:51:44 2004//TBUGZILLA-2_20_2 -/show_bug.cgi/1.32.4.1/Sun Aug 21 20:56:12 2005//TBUGZILLA-2_20_2 -/showattachment.cgi/1.14/Mon May 5 01:15:29 2003//TBUGZILLA-2_20_2 -/showdependencygraph.cgi/1.38.4.2/Tue Feb 7 09:22:56 2006//TBUGZILLA-2_20_2 -/showdependencytree.cgi/1.32/Mon Apr 4 21:52:06 2005//TBUGZILLA-2_20_2 -/sidebar.cgi/1.14/Sat Mar 27 03:51:44 2004//TBUGZILLA-2_20_2 -/summarize_time.cgi/1.7.4.2/Wed Apr 12 22:51:20 2006//TBUGZILLA-2_20_2 -/testagent.cgi/1.2/Thu Jul 22 07:05:05 2004//TBUGZILLA-2_20_2 -/testserver.pl/1.6.4.1/Thu Sep 15 10:37:33 2005//TBUGZILLA-2_20_2 -/token.cgi/1.31.2.2/Sun Oct 23 21:50:34 2005//TBUGZILLA-2_20_2 -/userprefs.cgi/1.75.4.6/Tue Dec 20 21:49:26 2005//TBUGZILLA-2_20_2 -/votes.cgi/1.29.4.1/Tue Aug 23 12:22:26 2005//TBUGZILLA-2_20_2 -/whine.pl/1.13.2.6/Mon Feb 27 23:13:10 2006//TBUGZILLA-2_20_2 -/whineatnews.pl/1.19/Fri Jul 8 02:17:04 2005//TBUGZILLA-2_20_2 -/xml.cgi/1.12/Thu Mar 27 00:06:50 2003//TBUGZILLA-2_20_2 +/.cvsignore/1.6/Mon May 13 22:28:26 2002//TBUGZILLA-2_22 +/Bugzilla.pm/1.29/Tue Feb 7 22:46:28 2006//TBUGZILLA-2_22 +/QUICKSTART/1.6/Mon Dec 26 19:43:57 2005//TBUGZILLA-2_22 +/README/1.52/Fri Oct 10 02:22:39 2003//TBUGZILLA-2_22 +/UPGRADING/1.1/Fri Aug 10 22:35:21 2001//TBUGZILLA-2_22 +/UPGRADING-pre-2.8/1.3/Thu Mar 27 00:06:37 2003//TBUGZILLA-2_22 +/attachment.cgi/1.103.2.1/Sun Apr 9 18:28:49 2006//TBUGZILLA-2_22 +/buglist.cgi/1.325/Tue Feb 21 00:05:56 2006//TBUGZILLA-2_22 +/bugzilla.dtd/1.13/Tue Jan 10 23:30:33 2006//TBUGZILLA-2_22 +/chart.cgi/1.17/Sun Oct 30 21:31:27 2005//TBUGZILLA-2_22 +/checksetup.pl/1.469/Thu Jan 12 07:03:46 2006//TBUGZILLA-2_22 +/colchange.cgi/1.51/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/collectstats.pl/1.46/Fri Dec 23 02:01:51 2005//TBUGZILLA-2_22 +/config.cgi/1.14/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/createaccount.cgi/1.46/Tue Dec 20 22:16:07 2005//TBUGZILLA-2_22 +/describecomponents.cgi/1.33/Wed Oct 26 16:15:48 2005//TBUGZILLA-2_22 +/describekeywords.cgi/1.17/Wed Oct 26 16:15:50 2005//TBUGZILLA-2_22 +/duplicates.cgi/1.51/Sun Nov 13 17:50:47 2005//TBUGZILLA-2_22 +/duplicates.xul/1.2/Thu Oct 21 19:02:28 2004//TBUGZILLA-2_22 +/editclassifications.cgi/1.18/Thu Oct 13 23:42:32 2005//TBUGZILLA-2_22 +/editcomponents.cgi/1.68/Fri Jan 6 14:38:35 2006//TBUGZILLA-2_22 +/editflagtypes.cgi/1.31/Wed Jan 11 13:16:39 2006//TBUGZILLA-2_22 +/editgroups.cgi/1.65/Sun Jan 22 20:10:08 2006//TBUGZILLA-2_22 +/editkeywords.cgi/1.35/Mon Dec 12 02:38:40 2005//TBUGZILLA-2_22 +/editmilestones.cgi/1.49/Fri Jan 6 14:38:35 2006//TBUGZILLA-2_22 +/editparams.cgi/1.32.2.1/Mon Mar 6 22:16:24 2006//TBUGZILLA-2_22 +/editproducts.cgi/1.110.2.1/Tue Feb 28 22:09:46 2006//TBUGZILLA-2_22 +/editsettings.cgi/1.6/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/editusers.cgi/1.113/Tue Jan 3 08:40:45 2006//TBUGZILLA-2_22 +/editvalues.cgi/1.9/Mon Oct 24 00:44:10 2005//TBUGZILLA-2_22 +/editversions.cgi/1.44/Thu Dec 29 22:55:59 2005//TBUGZILLA-2_22 +/editwhines.cgi/1.13/Thu Feb 2 19:04:03 2006//TBUGZILLA-2_22 +/enter_bug.cgi/1.126/Thu Jan 5 14:54:52 2006//TBUGZILLA-2_22 +/globals.pl/1.348/Mon Jan 9 18:59:53 2006//TBUGZILLA-2_22 +/importxml.pl/1.47.2.2/Wed Apr 19 22:27:08 2006//TBUGZILLA-2_22 +/index.cgi/1.17/Sun Oct 30 21:31:27 2005//TBUGZILLA-2_22 +/long_list.cgi/1.47/Tue Oct 25 19:31:31 2005//TBUGZILLA-2_22 +/page.cgi/1.18/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/post_bug.cgi/1.135/Sun Jan 8 19:56:03 2006//TBUGZILLA-2_22 +/process_bug.cgi/1.302/Tue Feb 7 22:25:23 2006//TBUGZILLA-2_22 +/productmenu.js/1.3/Sun Aug 21 20:05:39 2005//TBUGZILLA-2_22 +/query.cgi/1.155.2.1/Thu Mar 30 22:23:06 2006//TBUGZILLA-2_22 +/quips.cgi/1.32/Sun Oct 30 21:31:28 2005//TBUGZILLA-2_22 +/relogin.cgi/1.32.2.2/Thu Apr 6 22:21:00 2006//TBUGZILLA-2_22 +/report.cgi/1.37/Fri Dec 2 20:48:03 2005//TBUGZILLA-2_22 +/reports.cgi/1.80/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/request.cgi/1.29.2.1/Wed Mar 8 21:40:34 2006//TBUGZILLA-2_22 +/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-2_22 +/runtests.pl/1.4/Fri Sep 3 06:59:08 2004//TBUGZILLA-2_22 +/sanitycheck.cgi/1.110/Mon Jan 16 10:29:18 2006//TBUGZILLA-2_22 +/show_activity.cgi/1.20/Fri Jan 6 14:38:35 2006//TBUGZILLA-2_22 +/show_bug.cgi/1.38/Sun Oct 30 21:31:28 2005//TBUGZILLA-2_22 +/showattachment.cgi/1.14/Mon May 5 01:15:29 2003//TBUGZILLA-2_22 +/showdependencygraph.cgi/1.48/Tue Feb 7 09:22:25 2006//TBUGZILLA-2_22 +/showdependencytree.cgi/1.40/Fri Jan 6 14:38:35 2006//TBUGZILLA-2_22 +/sidebar.cgi/1.16/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/summarize_time.cgi/1.13.2.1/Wed Apr 12 22:49:11 2006//TBUGZILLA-2_22 +/testagent.cgi/1.2/Thu Jul 22 07:05:05 2004//TBUGZILLA-2_22 +/testserver.pl/1.9/Thu Jan 5 11:07:01 2006//TBUGZILLA-2_22 +/token.cgi/1.39/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/userprefs.cgi/1.95/Tue Dec 20 22:25:57 2005//TBUGZILLA-2_22 +/votes.cgi/1.34/Mon Oct 24 23:11:55 2005//TBUGZILLA-2_22 +/whine.pl/1.22.2.1/Mon Feb 27 23:12:33 2006//TBUGZILLA-2_22 +/whineatnews.pl/1.20/Mon Aug 15 17:58:10 2005//TBUGZILLA-2_22 +/xml.cgi/1.13/Wed Aug 10 01:30:39 2005//TBUGZILLA-2_22 D/Bugzilla//// D/contrib//// D/docs//// diff --git a/CVS/Tag b/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/CVS/Tag +++ b/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/QUICKSTART b/QUICKSTART index 3f26f06d1..7da834b17 100644 --- a/QUICKSTART +++ b/QUICKSTART @@ -4,13 +4,13 @@ Bugzilla Quick Start Guide Christian Reis <kiko@async.com.br> This express installation guide is for "normal" Bugzilla installations, -which means a Linux or Unix system on which Apache, Perl, MySQL and -Sendmail are available. For other configurations, please see Section 4 -of the Bugzilla Guide in the docs/ directory. +which means a Linux or Unix system on which Apache, Perl, MySQL or PostgreSQL +and a Sendmail compatible MTA are available. For other configurations, please +see Section 4 of the Bugzilla Guide in the docs/ directory. 1. Decide from which URL and directory under your webserver root you will be serving the Bugzilla webpages from. - + 2. Unpack distribution into the chosen directory (there is no copying or installation involved). @@ -18,7 +18,8 @@ of the Bugzilla Guide in the docs/ directory. You can run checksetup as many times as necessary to check if everything required is installed. - This will usually include assorted Perl modules, MySQL and sendmail. + This will usually include assorted Perl modules, MySQL or PostgreSQL, + and a MTA. After a successful dependency check, checksetup should complain that localconfig needs to be edited. @@ -30,17 +31,14 @@ of the Bugzilla Guide in the docs/ directory. If you want to change platforms, operating systems, severities and priorities, this can also be done in localconfig at this time. - You should also update localconfig.js to reflect these changes. This - includes setting the URL you chose in step 1 as the 'bugzilla' JS - variable. - 5. Using the name you provided as $db_name above, create a MySQL database for Bugzilla. You should also create a user permission for the name supplied as $db_user with read/write access to that database. If you are not familiar with MySQL permissions, it's a good idea to use the mysql_setpermission script that is installed with the MySQL - distribution, and be sure to read section 4.1.6 in the Bugzilla Guide. + distribution, and be sure to read Bugzilla Security - MySQL section + in the Bugzilla Guide or PostgreSQL documentation. 6. Run checksetup.pl once more; if all goes well, it should set up the Bugzilla database for you. If not, move back to step 5. @@ -52,15 +50,15 @@ of the Bugzilla Guide in the docs/ directory. 7. Configure Apache (or install and configure, if you don't have it up yet) to point to the Bugzilla directory. You should enable and activate mod_cgi, and add the configuration entries - + Options +ExecCGI AllowOverride Limit DirectoryIndex index.cgi - + to your Bugzilla <Directory> block. You may also need - + AddHandler cgi-script .cgi - + if you don't have that in your Apache configuration file yet. 8. Visit the URL you chose for Bugzilla. Your browser should display the @@ -86,5 +84,4 @@ Support and installation questions should be directed to the mozilla-webtools@mozilla.org mailing list -- don't write to the developer mailing list: your post *will* be ignored if you do. -Further support information is at http://www.bugzilla.org/discussion.html - +Further support information is at http://www.bugzilla.org/support/ diff --git a/ant.jpg b/ant.jpg deleted file mode 100644 index 7cfaaed630d4866e9368e3638b3a20c0fa79ea96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8474 zcmex=<NpH&0WUXCHwH#V1_nk3Mh1re{}`gUxSWGr9Yg$stP~=`6v9%AiZk=`6pZx@ z4H6X;f>O(@6by~@jV$#oO%yZ&{M;1^5=)XZ6b$u@G!+yAOA~W4ODYv?6-<nD6oPZ} z^Gh-^^U@V;6%4rk-)3-T5a#6*<l_+*<QEhb5f+y<ke8K`lC{#(Q8sY3^>lZ!b$0X# z%Z>F3%m{LHj&DlHC@ih6srHI#o6uU`pIcE~_Wu9_HwVKVMo&gYL5BZF7~~lk7+D#? zfB^~^nV4Bv+1NQaxw!uyVc06bz{JSR%*4XX%F4pRz`$6`$i&RRBFHMFXz0i$9GJ+i zR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWzS~<J8y19FJdIg7s zhJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_Ow0OzVWy@ErT(xQQ zmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrHe)|07>$mSee*XG@ zi-7|aCH4&Gw{7j>E}gI;z4T;O`qaH2kG;xTSXncJ{rCI7tgfrJPYSzg_u=W!_b(%R zyym3Ms8|{}Nh{>IS6Hd*Pq(Or%bEMOCW${umyp|9#=-k9sZ(HA&#Z;z>AG85Q=FER zDXpH^cV)(F4|bEq*BNG&WbgDp#rZ2_+ee-0Tue{&b&rdj{I<Df)#ASwyV@DPz4Q`a zAd+K0SIy8*-cLjM>07ru4>J@Py8;+wi)uA2Y-EBOTYqoaA^E~?N<s>sCfBc$r7u1E z^D><tTrl?TSt;{q_Le60z}IixE{7f7+`#=Hp>#RtzIZ*g{BQH-%e?1KQ@h=GC)D|w z$I-rLDo^I^TqaWg&hU?B&9d{(KLe6;ekDzuIBk|2uY#zKz)9<t-Xi}ec3UrJM%AvJ zC+Fs=`tNg}_}}}Ve}*mHdumhL9m$A4OHw}i?%&)T(4DfJ$9R+D)%x>G3#V@@io9bI z%)7>_O7NA|3ieWoN0TL1^R!tUKhxv!V%hS|or`*Jb}g*4%lFFMc3<zkp@{s-CEg*A zOYT;)EVy;d%J=r~{eP>H9h-J@SeSCU-FfABf+6ACOSdx#zkYpRu2ZQZd?Ed3Fu#2i zhuwdMUfKT)Q<;})$&{}C_A7G|znQ1ahPoF=gQnW-<eF2EIdgHB)xVG(kEZaoO%Q&0 ze61SOrMLN6b)L-XUBN9ff&1BQ|4lWxlIOr&z)+>J<llvz$M3Pv`Le{S<!Srf$F~+$ zw@rRu{$+{Y?ZWFH7r*BTUf6s_z3^7^d(+J5QxjH1T+jN|x8?O)_tV?OJ~GI*spLDp z49NVoWSW25&qeA}zx)cj75_x@yu{;KHE-Eg%TFxYE&ng_^j-fS;rgYys!NYd@Yzvf z@oj}<-J&(Fd6CZhxvHwRM)u^!xXthXapl|5yB)VU<MzIGyLZcSXDH+6%l4O+Mw|SU zPI|bBFZ0@GM;^U>QO*4`9<PsD@L}=6XAI%IP4})c{S4=FSyd*gJ@NXL5c6xgTnF6W zFRp1#uzbwSQuet2K&Xn7x7LTUbh{bKe>9_npS`(N_c3tZ-S*c3J7feeH2$lfYtH=A z@pX{X?7nA`%-h$-W~R>gbR+QXg;2=|<2mWK79THm-^-G`)uQ%Jv4`=`pguo$nM(}( z{$6G06MtT4pZM0<%=4(>Z1ygn-$8G6J-bBxs)MJ<UDYv6nRF(Uy=sn7UEl#(hUK0H z+kEDwB!2o`eO2k^bCvDE^P_w|c3rrv=k}4Mz3n0AKjEloIZdm?_N?4bwcAvk`|Sij z&3jT`axHi2%;IOKmbmaS9KUBb-#=>alXsTI^9p~2<V!L?ef%<f&05cdO8xVv=bu_r zDRlduY>(5|n?D|eJXkr&qLa&9^WdA}6MwU&-u*ta=3YWrhZ)o3Rado7s?K^UbyvzX zPE>f&<$VVW9)=k-Y<R&N*L?W=r_C{}cdF~>uZ@qkNZFoky^^PS(Z2UHs|zE=Z^^8# z*5*tMsh{b+@BZcWF`?p@(hGkt+g@Z{xj^{mqt*8^znf*v&uCqI_kjAupM6@p+%9>n zXnvN&8sYLptN-<^+GmQL$`U+(wg$)+I?4o<{R<I1a8$$O;pI!S`z&8NvLxS{eCk_N zLH^_gXN_z1A9~-KY&T`@i<J+0`e*KtKesgD{Dt7#Vz1BZRdFp>NV+{^n%c}+adU#c zn(kbFPr759$NfG2@sA|_l_vS$%S)Vp<Z9W}E{5aQZfw=X{~4~YkgE4<nq)mS{2b$f zwI2Gxw)XtaVd;CK8&r;;TmJO?(x7eAOCH(qJY5oeU(r+k)TECrTG9-wi;t%5)ZH?< z?`o!MiS`!3gED`8vtE7|I{B$B#pCj-2itXQ>$YyqX9-XX5T5_Y*4HdLJM+7Er^GzY z<7a<f3Cs*D?4KrPA7-j^?WOI`CKq05zR+Fa8oz3G<*k^PpffL_^h*L?{j@9z;ZwH` zPoBs4KJvT%zH)^Re8ycZkIOGj&wuRU%KS6%rJKWXnTrh~e>2%FmfrMv>)n@W71VsM zZ`p(^8(gQ|xogcIwefVxO4&UvFSxfmz6_Z;yX?88`d$rteJ`hle>G<ujcz*h@M7wx z87}p`JLIG8w>xgKj=J|LWeU%qACEsASi0--^KI7OW+tE4ne+I=>&Q(uxmy?I&;Ipn zwU0yW=?TW?w}z&zTs%8JxNFOHo>hjI*4^|Kj*Whht997s+xuUk+B>^bL%Vq%W=Ymx zlfBDo89R4(Rmtmf*-JJZiayMcv$?f0=4;a3{XG8}=3G0qE|j5mb>pSUHH8`nnPzSG z`rY>Qc;H#<sxNm#^%wC<%Pg*0uJH9`%-K8jX&omdcg9cj5Ac`2v?+))vZ(XZuUW}z z5>0%W?9M-f_e&*wTWa(DtoqN_UN??ko84n-tsOY;3Qy96j}9;W<fE$8o&PAW^)okI zwz=iRc~fr7^m7?HWuG0++J-OFdb@W9-+HAs+cLT4*Ws$A@tX2k>?iJ?t5|*3WOnH0 zo%MSxSLS}z47PlEBPjO9%~vxsX6C-Dt#948|M}-N+^Z|!JTr_@bUXgw@Rd+=36a^I zF>(wmLmqd<TTbcMU$Jr_>#;X{eDz$B4D6TY=gV=XTZdXcUim9*Z}ZRVT5R0L$<N*t z82(vx^y%-)wNJJQ$nd`mm3rl{Bwxqj!C$SXTlVZJXsx};C0V?C&VL52OM$zTR`%~b zW|jP>tMF%NQ}2^L+tu^0tQE;qV7hUKP1|tl?Ma@izW--1dEIzUYq|fS#%ujiWfo@{ zl3&zjR^B{avSRn8{|pD}qkMw6oZowCzSw)-t9tGNu?OFx`m5(ZvRLr<^VcQkGS0pK zuyP{9@4H!Vd-r|6cVCNd=DX~mdxm?&;_kPm#NGM%-S0)6<EQnP|9p=6r6%k@D|WH2 z8v8!>{|s?U)7#uqZ$I7t&nk26E=$Aa{+P67(JR&~X6R3h(>uQFck``{Uv)L#OgSlC z`EB`<)qm{YSB0frJ}C37mHqmsm6LSzEZHyr$vV6I-JCoN`DNBuXTF{2<RSee=k4*T zb?-bLlssCSdG58b(Z+Z^GyD0c|1)f^n{qw>lP3SYyUknX-7O4Xd+upy@;SFV^B>v% zXV8BcJ#9^7aM6UF$CV|HMjfy}#9npoN+Nr@N}h$XETibTwp$W!6%?K;ZGP$=Dd~Ri z{MoN7q{LiL7t|V`_@lWyL$*3-{d3RjYt^ssHFPibZhq@I%h5fnBy<0~?qEaC>+7?c zS?4^t;Bk!I%da{pX-SO6_tjz>wjSAC+`_DroySpR@%L7l>?+&1=Wnk4b1M4O|NCkE zdC}G#*Ikp9{xc-qUeEp6-17CwRZl<M`5cxwyHUF4<ky!z6U*kFDr%WmtL2^jQ=vwg zcS%wEge=W1zpW3&-Mw}$CjE5&j=K4G*WB*5o-M<<NMrfpKF42Dy)lMd`;FxcUq}B6 zn<+gZkA2473$<5%{hHPHPu}pxk@l?r3><OYk@|D*ZC#lt((E(KhyR|30Ke~o{|p~P zncePI*M(?_yx+cYt+qt!4EfDR4_K<C%l-NIGwe#(B`vp2B8M6*o||S)ejTu<aHpZM z!1K$Js}{R#R)5C#VB4cLcj~4*yR_ya*YRxmvse0d{JO4RyZq3qLpp~Q9?Kuf7QL`| zO6g(#bB(SF#~(YF*j<&sG(CTBY_`V7!$~u)saDBc(akwgS5=)Vu4UJ>@aOho-?TTH zGnW_Dt~}Cs=<*`BsfQLlo$+WFw|1y2=LNp<s#%*03uWi1&UiZAy7qidxS{Rgv&uHT z)6{467J07CuAEx(;<A0|jOwcY3{kzy?2gTw{2=7C<uPa3;~W2JRa88ET-Y;j!KI%@ z{JSq-F);a9SjaB8G4}9QCW-VZUiBphgq77#PyA<Udu_GyiZ0Pl599s*GsJ}LT{|r) zxa9cR=ZezO#kV$X)fLNl-v8!JYM0xw=ki9i{tvG$-?~@-X~bzEr<u2wl*mm@t2HY) zvhKL-^`&A}iBrG(HMq4e$a(&sVQn<yRFOpu3kn!yHFs}U(Ejt%`(0>4^`%V=2i~&o zEe!NmpSJiJvuRxPrXELot6y^bw%XzWlQi#_RO)Un6m74TP(FKHx%r*eq}n%^uYX!{ z)O6Rpie>AI{r=cT?UL`2f9`czL~h?zq4hI<>SSF=xp{eM`khlt{{=SsG|3xGE8gnr zuHbNAUHRVR>E{?NmOcnuHmOUgQo7AXuexim>Y>BpXR5<guU?sM^sczUxbbD^XYV;& z^EmC?d%m2@NIS1IHGZRn$s)I}rdrme=d^;An=BdrW*&PuHJo?yyJGj->kLmnsMWeQ zQ`^5@BtqUe<?-$LFQYy;nJH}(^K>$Qd^CHvyqUe`^!&4X4PV}=N_hNvjcl6A<cy^9 z?_d6fhJKa)(xQAW#qm?~yo#@Xeq9gG7r&XS+%acLj7+)he}<@a*X{TGEPM02wey%i z`+tVDKf20qu}|@su#E9-^Vh$etDZei-7-h*$#d4ic@F1)zVyppuNvaf|5@+h<T?GH zwATD;Ni|>6klxU4({*~+{-Oiwr&eFio~Jc&XTE;YhQMQ$uLB>SllU5wv|>}u>~_CL zv#d*>Uz&T--99RjWqr;pC+p<T%X9xTRDW9eJt0_Jee%5}{65oSSD$<xYWKN5s%BE* z_61A3g#Ju!4C9D+lp5F=aQpD{b1UcYq;|Z~dU|D%#G&J#=09Zq;Tl{id9~TBs`S~S zB}+`6=B^Ers}k&TExiBbtv{=OU8aTX$#08oIsa(6PU!Q`j|zI)adP!9=buq6Lh~GJ z<o5pfxAjtt$NbDbg#~kOZ>knN8?kqX*)*q+nASW8iB}x*D@D)vmtFS!EK`1B<(DgJ z-|lulths9KZ~3I`S9oBh{&ewEWgCAlzi{1dyR&MPpF1PhyP%5KuP=W->b0GX^{{cr z)drcAImu7$+rPZLmpWsK(7!iR1phNs_dBq&umAaFm42a2jm~cQA03i%k1hXAje7M| zHZ+MrB{{FasMa^QjAyxy`+{Rx`#w~KY<v6r%JCJePG1+5`c<}^$>Q~iB`<dTS-Jl9 ztg?^)ioGN@J_%lFdDP{|_9&;l4a;>R?9J6LEqkH4?q=}WsO^qCtaJXHF*o0^=4Z<1 zIoo}{$TiLOs0u1K>GiNmTH^Mc_vfY0_ZpAKP1)TcxA&!+@mUL*uYXqlIBqxPuwwpn znQ+%-uaw?yKV@IjWp4PwEhKNPt>-LXp{Kztf96`eI6ePq%%!*fGaKJu@7lT0``PQV z*}tbBkYzt{<8O9xbY<v-<R`yAM+CiZX^YX6sh^)UGcqpX+?5df?plkt$7{-0s#WHu zX3o0lC473FgTmuUH(viU^$YvY;Qsf?#Ld(0ewshyKZ8%{%TP{>$17h4&i^`Z-&cVL zA>SVSZ1`)j>c-*f;Hqua!L#3MoU?tow5<Q*GIN=(*yi7dKdqK#dcc(^`E5z^OW#!4 z%;MH%@19Ms_0L)qe&>E+wczzzlYS-Dx#s<6Fb#gZ{jsa6dd)1i6U+Lxyeh~kG1>W8 z<ej1C@u;buZwy^#Pc7W?@mywC#oAatr|Cht7C&umkCsf%sg-(TZ_#*L@_DODxb&PJ zsmmX(OWoa8)qAA=K5wks;<g(cKikjj{K_!@h4%c3ET_1hdOUK=`NuZnI@ikIE9Fd- zpC;_I_et;n&k*Wvcj<u6Btr?sqVQ+G<o+}K+m|`<)B?RvUB!O{(`9Y#&wpBV$?!8@ zZQ*fI!3mSEtIfRrpJ8p-nqx6#GNGnV+cHJ|GnDlon(}E*=~=f5o8);@cEpGLd3Ctv z`K=kJihI&UE*ails>dO6`Mk)r*Rvef9M9^@x^zy6r{wm_dn-2TUb&?I)GNbeO7HPH z&Be_<#qQ2;y<hq>_g8UUYMgfbb$D*#z49`-tt%F(|4a>i`O?oScF*C)=C0CdbFN+I zJNUzJs{GQt%vYNpsU_TQyC%Ew%b)C4S;ptHu6(%Xw>7i*?|+8BjH_4d(Yt+BUZsE6 z&OiJ1W(&QNO!z5Yc2x4AzfIxwJ91Y&Jy_eG#4edCacbWF<?{b_HSBxNJTr3VVYLhV z+wFUG3Qt<U?Q~FYaAxd}^B3vs<yo_a@i@a1`H!N3jpq#SP2iuAwC>11-`#fa7MnWR zPgj@SVbUz|^2^e5!96lTkDprm2X}Qmw%1kr_U+HnIPI6SGGvcu1u(L|7j}%f>=K)0 z<{xvZ_VC2(3zqG;<LdUZ`O~G`mq#U(W@T0$Rs0oH@~qKS<H4m>lfM_g?Ao56;jep4 z>y;bRL&t9`FV_1<&6I3cUK+h^!gTI=3qJYAUQTnJsQhzEll%92uQp$yYx%p@O8;jN zcm8=TZl?Urt-DKG-rZKaba&&0{|r_yo--b9sIEPeFtK_5>mS!t4^A|HpdoqaV}IS; zU4I!YzOFeL(yFl1^6OuF$3Say)?IT7uZ#Q;m~lTjC&@hBl$+`Ij1@eUFaLQioAT#) z7T1$>nULwKL03cF&no_9k6PWM`2Er3^>M6Rw)|BFcNtfFn_$ILw$jXe`Rnj5gEyJ` z_5@3C709H`KL2oD=8m7MY|>&3kFnb4i%R;R>eu*H=#%j`%PcN)&#$kGZ8hz=f~>h1 zWI`61o;Yrrr6f?WAZdAIkpr`+#RRFM=i5!*q!iEH?=|h}%=Dh(X*p86bIwfCSE#wk zY$Jd8+L9~zcE{4C`(pbH-(T9`Am|ovG0AV<)xE_l7Qanlsh3*${F$xRl3T5N)|IV@ znZtNnW`gIR`nf^HxeChld7iShg`rD7O^Z=Z`Kxu=X;<wfm3K8~{=8yyS}FUtZhq7< zXS0tNe$V;OV3j9Q_|o_GuF!LgHYwk}FN;0<JjPgGYrj_Et;IDhG4qz2oROXLZ_29W z?323;FZ77L^gYJzIIHZY{q8@jS5)&%D7#v|G5_83d#m=Ym(g6YXPs5BB*)vMZYR$_ z4m@U;R2aly%c{&gE5Pvb`lX6q9n0#r9GdyoC*^onf8ue8rP{xO1kZ1^toWn(@Pw(- z>C3iS2PQmzYVj+i+x~RpoRCL(_qN&yt)I1a`<$NY(9@btcLd7y_@(Q%^6lRFHCgV= z!h`2yzL^R|{ayC7TI1Q=6$dvtJ?!vFkoh?4Y{bkv?h=*K8yt5lzp!2Pbzfs`(W;2r zxzQ`9e5!w7TW=HAb@Sz|pnUbW;oRqEJjjhd@WDPf=Jna<-aEUC=boQb9K6|uF~m*& ztzh8XRp!NwUqp^nbjEMV|Frp{<;$;Ycb5E?^|~2%Id$)em)lz>-+uk;Z}z+$eI83c zJqrs9yl|yfAn@SJUtJafhS#@(TC}2SkN=%5zww_TMJj!o^{)`$oVAl1vi3}K&X?7i zGp+u)XjpdGi=C_Hr>3wg%&Q6zczjt_lPmY@VhNc`RhJ{(3$M*6;B^ar>Dl=6Qm(vL zw!)IY#y-u${zFp=gS3++R*G&s>$&Iq!Ign0l;yT=U3&9qiQv;r=cy7}$88K(F1@5a z?c1y1{(FYEj&3~oD|B_X#F}$zJDlEL{*f{7)5)Z#H5blqSSk5eYxk?(T%kqBS?46n zYkw$wv-pp;*6X-T;jG=BUt_y}75`bSRo$7ExVKGw(RwaTWuB{g5BEAvet%SH!OYVq zINFRq%f~zZxSad;-h&f2Z*5$dbl0#eTKc5!l0$zk?&oRw7&ZOd?H_aN0u0voh5z|g z|Le6_gp~N<;(5;cPMWg|YFDl^*F5ps_ZXl5gUp-%8M6FO?PaOW2)zE%?cTB}YOW?n z)?VN1th&II`Nm_@z%_2)ELLrbc)-Kea@#;wvzM8FZ-7m8=Dv8#qlS~&ml~`*ztpt- zRAE=9^E_8I=}UcuUl#Nqnq%)(^n_3Iuxi6Wm3fEONld%{zW4p*iI=u0?yRoY4CkI_ z&zJS~>YI&scXM7<Na8r1tSoDIeS6l*Z!bg{em=MLEYq^O;#;d{C|z0kO1S^?e}-$T zrvGQy=kRCJ{(E26Y|^ZB;?r`S@a|X0w~yYX3SD-#wR>L&{kj>bo0AZ9barvoMrO&s zSw}voM5Qd^DVkqVxNDP1n&GR$2c<u=muI-F+}dz7>CUZ6mNnhG%>ME^{W7fBb36Ui zFS)DpO{aW(V3XS)wdy~ECgZMRpXb-Vu6GN3?ZsxV75v@Tf~SjBPveHImND17ts>KA z+DNTdo%p1uYt6To0{4fZPq$d_3QgOlFz3k?ea5%vMLGMKFU<(J;xl)pnV`q%`%5Lh zF1daD%ktL8mzHhr@h)d^?dnvCIL)^}xNEy*W1gy!$6>x3A#eTetk39Mxy9{B|7)Ks zhAOLW9Qbt1;`r0h>wS#MCc9_f{=8i5p4mp3Z|b6<4^#52r1H-EXZZRmLgBNK<Bc8m z?V>v~g&f5$m_3;PJZyW@(LM`P);Ifn=j@PmV@=7_I=kZ7-Lj|sPh)L@WQt#Ud|dO& znem_KT#??y!lx&s^W5COu2t(zi3>5BA6FdteOBz2C8;cV78a(_zr}9<t2Te4y(E6A z((mB?EtfYQ)p#_0ufBY*#A1<F<6Da}8f~pZGjsRl&G%aI?SSxc(Xi;e3emuY&zCw~ z>^p4Ay?n)ro3$0o-X4GIoBDMr_w}Da$+zaS%uk=C+4OXA!Gl`9Z1=EjY%lMb#!jkv z5&mP<)@|=M#<ZLZSp83C{a2Cg&V`-(_bj(>Jn9fGYtQ9W7u@HU5o7rLKg0DP1D=I` zc3X6`iYNJB@7kVqQYts_Xhf!?eSZ~8`=?b_tp_u%=^aS9GRseqSDm?BCTvS_fBdnf zk><i}&tLoO3AWw%{F&qNOTAi7r=M)RbNHF4$-5;9=63t$)*qU=)ArRV|D9DSRSVDB z<|Wyl`s?boNt=0V<FAnB1xrPeX9ZqseCu~q;%5f4`iF&+w>n+WE)x~L#bgy~nZx%_ z<gut%wD|L<reWS`cfb3FW*AtqD=o_Cw_q2!EPwW`vwPp2;IdyqMvu2gU2NETZr<+i zmc4s6Fg<y5;P}I9i?%Z{R!BUkOsFk7{3|%6-t3my!?JB6)%6p9U6F2ANf+s1zbw+g zDpR_!E!?L6(%jwGdy<y*PT}dx3i$K<^12ND`|?xMc2{l|d>?hP#ex0QDy@_Q3SU-E znPl~$_Ep5w8$V_KTCUpYr@SjtR3dTT`=v2+FP!kR?=}^G_n+bU`j=5>dGb$doL}+a zvg>Z<Po5KBJT{pZ81t_Cqw}mHQ5CII;eRI|TzO?*727Yl%tN8)E#udESOt2y>RFg1 zKl`J3Ah^&`q_rqZt<|q$#gffoGFK%{KK4AGzcgspab{C555B69xCmxxkFU#2Dps6& zyf$Lvfr*dRpH3{WH81q7_;ccBxJ*IuLA&|qmVTO&x#E;#?R^8;c8h=UKfZ=(Ut5%T zey_TJO;CTK1N;8VYkd~?q)+w_+*0^;;qEz7OY>Tv$y!*Nu3)saN?X$LueA7dM&f5R z#rm7)&tz?x?7!E==i+kv@}HL<`53B9PpVX3YvmMW7e43D{Y#5K`+uMPX>H3+_MU&G zMrSzA=aj8vW@DQZ8e3P&V>feIhe)xsQ7ym7+f99Z$Ky|2$=z9eT3z-y^GA^<m7c1F zO23+CO+TwrbJ~w@$HBjuk6C}%t~?Ozuspf{(CofU4x3Ajvl4scu8M41<-RmzvUgB% z&&QC|OH1Oax)$rs>9PvV)V=HO9B7g|vG3TD?&4j~=UM(|uwVZ$O6}&n<B2{tx!bkR z`4|4`|NZ1DXYMRbo;<t6pI6fYCo#UNkFuG@JXPWMC5}^{|Ge}#9#vGt&JfbY@NY{W zw;~s}p$+S^xrvDdpAwvYpSO<4{ZqMC?b17?m=k8d`Da}I^1I{VXR|}DhrZ}ktazIA zX{L(xjIR<eecu>gn=C0ak8x?4VpaKn2K#eMZp^=*|M|z2SKTVfrwWet*&1YoPUXAT z*1EG`v8j#u?8%FDqnn=CyYU9EUM;`Y%Wxk5Yu}8(+d2#8zb`Q{-T6;aqT2k7#;sSD zp@nbi7cM!){8`h_x+nOXkhx0x&r3}Q9=1RAw>YX^Wxy)$rJ*!||EZ&cYj|}^-Tu~~ z9hY31+t&R2QaR-*-@B|eV#P}jt=5!2cj4a52lG#xRzKUeZF<5<ixcs2hJX5BMvD7f zirM^xEx2*ps(s#*=kfWQTHT9TrNw!J_51R<ezlFE`@L3O*EwS(e!C~MJ3YK}pO1V@ z=wGFmO1m^ZF1)u~QdT?p?FDVIUQzj}JchTo%eRKl4pCCQ`@Q&k<MGG8u3GoHN-~6{ zy(!9C?RVx$|Mc}<MH_E7UikHG`BU$N2V4_H3$z>-JTQDPFLQoc{k!_dTPmZcGd#9< zdDNF>nb~c_&%*LY|JY5bykLLs;?x5_ua|Gn63h6mJpXI%p^rfw+Y%>!o_}d+WQ0tU zR?4p2gJqwzj+A@tjp$z+6?x_BQ5%6ny?bW)t9qUcoF8~pv3KXKs&9$D8T(>#^X4DQ zGK<|`y6tbp0-MFF-pOtGI=8s(XXYu#nC4k!8gG9DC3pEh6v<t3W63AYHjyN|IQOca zXohnU%{!ip3cuW7-Mo2UVW{dwg`~Q`pP`X8R(qzX6wlL|d#t%&#_jgMS}nV3&*XkS z^7{O;%nQyNw|zaoe68=32@e~On*KRZ_ucK$;@rCt&srJX&(8m_eA(6KlYfP_9=l+C zRA2JBdROR#l7n(rzRj$2?!EI|WPV2dr$uWkvv(^bm$9)se)+SCZR!*OtF(4`{p%w8 zq8{)U2e~WXp8Rw-&&Q@B!?S{?eoOOSSk1>STkln|Bi*HT6{pXfbe2bJTtA=iF8<Wq zHBC&-iPM6&|I%FED@%B`M{O59JgK<n@j9&&6F1+Qw_Iti;}=u;N$nHN<_8`PpRy&l z_jX%-2eW6+qKZy?J^S4rXD-gsHZ$%?n=5ms><M4iIm@GpBFXPAHXb$kDpD_|$;!Ue zqA_s0>#xgRnom}o6pf0uP$}MJIPw18z?~agm08RA_P#b<6mYxp;Il=73lhw_vJcI) rc<a%@!F(lT)ec*KFY!4{Rl#0wEm@vhEO(T8e^PeU`APGp{=W$Tl&GgT diff --git a/attachment.cgi b/attachment.cgi index 64bec6e5a..09cde402f 100755 --- a/attachment.cgi +++ b/attachment.cgi @@ -24,6 +24,8 @@ # Dave Miller <justdave@syndicomm.com> # Alexander J. Vincent <ajvincent@juno.com> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Greg Hendricks <ghendricks@novell.com> +# Frédéric Buclin <LpSolit@gmail.com> ################################################################################ # Script Initialization @@ -34,26 +36,26 @@ use strict; use lib qw(.); -use vars qw( - $template - $vars -); - # Include the Bugzilla CGI and general utility library. -require "CGI.pl"; -use Bugzilla::Config qw(:locations); +require "globals.pl"; -# Use these modules to handle flags. +use Bugzilla; +use Bugzilla::Config qw(:locations); use Bugzilla::Constants; use Bugzilla::Flag; use Bugzilla::FlagType; use Bugzilla::User; use Bugzilla::Util; use Bugzilla::Bug; +use Bugzilla::Field; +use Bugzilla::Attachment; Bugzilla->login(); my $cgi = Bugzilla->cgi; +my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; ################################################################################ # Main Body Execution @@ -134,7 +136,7 @@ sub validateID # Happens when calling plain attachment.cgi from the urlbar directly if ($param eq 'id' && !$cgi->param('id')) { - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("attachment/choose.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -219,7 +221,7 @@ sub validateCanChangeAttachment ON bugs.bug_id = attachments.bug_id WHERE attach_id = $attachid"); my $productid = FetchOneColumn(); - CanEditProductId($productid) + Bugzilla->user->can_edit_product($productid) || ThrowUserError("illegal_attachment_edit", { attach_id => $attachid }); } @@ -231,7 +233,7 @@ sub validateCanChangeBug FROM bugs WHERE bug_id = $bugid"); my $productid = FetchOneColumn(); - CanEditProductId($productid) + Bugzilla->user->can_edit_product($productid) || ThrowUserError("illegal_attachment_edit_bug", { bug_id => $bugid }); } @@ -335,7 +337,22 @@ sub validateData $data || ($cgi->param('bigfile')) || ThrowUserError("zero_length_file"); - + + # Windows screenshots are usually uncompressed BMP files which + # makes for a quick way to eat up disk space. Let's compress them. + # We do this before we check the size since the uncompressed version + # could easily be greater than maxattachmentsize. + if (Param('convert_uncompressed_images') && $cgi->param('contenttype') eq 'image/bmp'){ + require Image::Magick; + my $img = Image::Magick->new(magick=>'bmp'); + $img->BlobToImage($data); + $img->set(magick=>'png'); + my $imgdata = $img->ImageToBlob(); + $data = $imgdata; + $cgi->param('contenttype', 'image/png'); + $vars->{'convertedbmp'} = 1; + } + # Make sure the attachment does not exceed the maximum permitted size my $len = $data ? length($data) : 0; if ($maxsize && $len > $maxsize) { @@ -459,6 +476,7 @@ sub view # Retrieve the attachment content and its content type from the database. SendSQL("SELECT mimetype, filename, thedata FROM attachments " . + "INNER JOIN attach_data ON id = attach_id " . "WHERE attach_id = $attach_id"); my ($contenttype, $filename, $thedata) = FetchSQLData(); @@ -496,9 +514,9 @@ sub view $filename =~ s/\\/\\\\/g; # escape backslashes $filename =~ s/"/\\"/g; # escape quotes - print Bugzilla->cgi->header(-type=>"$contenttype; name=\"$filename\"", - -content_disposition=> "inline; filename=\"$filename\"", - -content_length => $filesize); + print $cgi->header(-type=>"$contenttype; name=\"$filename\"", + -content_disposition=> "inline; filename=\"$filename\"", + -content_length => $filesize); if ($thedata) { print $thedata; @@ -582,11 +600,15 @@ sub get_unified_diff require File::Temp; # Get the patch - SendSQL("SELECT bug_id, description, ispatch, thedata FROM attachments WHERE attach_id = $id"); + SendSQL("SELECT bug_id, description, ispatch, thedata " . + "FROM attachments " . + "INNER JOIN attach_data " . + "ON id = attach_id " . + "WHERE attach_id = $id"); my ($bugid, $description, $ispatch, $thedata) = FetchSQLData(); if (!$ispatch) { $vars->{'attach_id'} = $id; - ThrowUserError("must_be_patch"); + ThrowCodeError("must_be_patch"); } # Reads in the patch, converting to unified diff in a temp file @@ -713,6 +735,7 @@ sub diff # Get patch data SendSQL("SELECT bug_id, description, ispatch, thedata FROM attachments " . + "INNER JOIN attach_data ON id = attach_id " . "WHERE attach_id = $attach_id"); my ($bugid, $description, $ispatch, $thedata) = FetchSQLData(); @@ -730,7 +753,6 @@ sub diff require PatchReader::DiffPrinter::raw; $last_reader->sends_data_to(new PatchReader::DiffPrinter::raw()); # Actually print out the patch - use vars qw($cgi); print $cgi->header(-type => 'text/plain', -expires => '+3M'); $reader->iterate_string("Attachment $attach_id", $thedata); @@ -785,7 +807,10 @@ sub viewall $dbh->sql_date_format('creation_ts', '%Y.%m.%d %H:%i') . ", mimetype, description, ispatch, isobsolete, isprivate, LENGTH(thedata) - FROM attachments WHERE bug_id = $bugid $privacy + FROM attachments + INNER JOIN attach_data + ON attach_id = id + WHERE bug_id = $bugid $privacy ORDER BY attach_id"); my @attachments; # the attachments array while (MoreSQLData()) @@ -814,7 +839,7 @@ sub viewall $vars->{'bugsummary'} = $bugsummary; $vars->{'GetBugLink'} = \&GetBugLink; - print Bugzilla->cgi->header(); + print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. $template->process("attachment/show-multiple.html.tmpl", $vars) @@ -871,7 +896,7 @@ sub enter $vars->{'any_flags_requesteeble'} = grep($_->{'is_requesteeble'}, @$flag_types); - print Bugzilla->cgi->header(); + print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. $template->process("attachment/create.html.tmpl", $vars) @@ -889,11 +914,31 @@ sub insert ValidateBugID($bugid); validateCanChangeBug($bugid); ValidateComment(scalar $cgi->param('comment')); - my $filename = validateFilename(); + my $attachurl = $cgi->param('attachurl') || ''; + my $data; + my $filename; + my $contenttype; + my $isurl; validateIsPatch(); - my $data = validateData(); validateDescription(); - validateContentType() unless $cgi->param('ispatch'); + + if (($attachurl =~ /^(http|https|ftp):\/\/\S+/) + && !(defined $cgi->upload('data'))) { + $filename = ''; + $data = $attachurl; + $isurl = 1; + $contenttype = SqlQuote('text/plain'); + $cgi->param('ispatch', 0); + $cgi->delete('bigfile'); + } else { + $filename = validateFilename(); + # need to validate content type before data as + # we now check the content type for image/bmp in validateData() + validateContentType() unless $cgi->param('ispatch'); + $data = validateData(); + $contenttype = SqlQuote($cgi->param('contenttype')); + $isurl = 0; + } my @obsolete_ids = (); @obsolete_ids = validateObsolete() if $cgi->param('obsolete'); @@ -902,7 +947,7 @@ sub insert # and FlagType::validate assume User::match_field has ensured that the # values in the requestee fields are legitimate user email addresses. my $match_status = Bugzilla::User::match_field($cgi, { - '^requestee(_type)?-(\d+)$' => { 'type' => 'single' }, + '^requestee(_type)?-(\d+)$' => { 'type' => 'multi' }, }, MATCH_SKIP_CONFIRM); $vars->{'match_field'} = 'requestee'; @@ -922,7 +967,6 @@ sub insert # Escape characters in strings that will be used in SQL statements. my $sql_filename = SqlQuote($filename); my $description = SqlQuote($cgi->param('description')); - my $contenttype = SqlQuote($cgi->param('contenttype')); my $isprivate = $cgi->param('isprivate') ? 1 : 0; # Figure out when the changes were made. @@ -931,19 +975,23 @@ sub insert # Insert the attachment into the database. my $sth = $dbh->prepare("INSERT INTO attachments - (thedata, bug_id, creation_ts, filename, description, - mimetype, ispatch, isprivate, submitter_id) - VALUES (?, $bugid, $sql_timestamp, $sql_filename, + (bug_id, creation_ts, filename, description, + mimetype, ispatch, isurl, isprivate, submitter_id) + VALUES ($bugid, $sql_timestamp, $sql_filename, $description, $contenttype, " . $cgi->param('ispatch') . ", - $isprivate, $userid)"); + $isurl, $isprivate, $userid)"); + $sth->execute(); + # Retrieve the ID of the newly created attachment record. + my $attachid = $dbh->bz_last_key('attachments', 'attach_id'); + # We only use $data here in this INSERT with a placeholder, # so it's safe. + $sth = $dbh->prepare("INSERT INTO attach_data + (id, thedata) VALUES ($attachid, ?)"); trick_taint($data); $sth->bind_param(1, $data, $dbh->BLOB_TYPE); $sth->execute(); - # Retrieve the ID of the newly created attachment record. - my $attachid = $dbh->bz_last_key('attachments', 'attach_id'); # If the file is to be stored locally, stream the file from the webserver # to the local file without reading it into a local variable. @@ -981,7 +1029,7 @@ sub insert AppendComment($bugid, $userid, $comment, $isprivate, $timestamp); # Make existing attachments obsolete. - my $fieldid = GetFieldID('attachments.isobsolete'); + my $fieldid = get_field_id('attachments.isobsolete'); foreach my $obsolete_id (@obsolete_ids) { # If the obsolete attachment has request flags, cancel them. # This call must be done before updating the 'attachments' table. @@ -1035,7 +1083,7 @@ sub insert # Add the changes to the bugs_activity table for (my $i = 0; $i < 4; $i++) { if ($oldvalues[$i] ne $newvalues[$i]) { - my $fieldid = GetFieldID($fields[$i]); + my $fieldid = get_field_id($fields[$i]); SendSQL("INSERT INTO bugs_activity " . "(bug_id, who, bug_when, fieldid, removed, added) " . "VALUES ($bugid, $userid, $sql_timestamp, " . @@ -1045,8 +1093,7 @@ sub insert } # Create flags. - my $target = Bugzilla::Flag::GetTarget(undef, $attachid); - Bugzilla::Flag::process($target, $timestamp, $cgi); + Bugzilla::Flag::process($bugid, $attachid, $timestamp, $cgi); # Define the variables and functions that will be passed to the UI template. $vars->{'mailrecipients'} = { 'changer' => Bugzilla->user->login, @@ -1057,7 +1104,7 @@ sub insert $vars->{'contenttypemethod'} = $cgi->param('contenttypemethod'); $vars->{'contenttype'} = $cgi->param('contenttype'); - print Bugzilla->cgi->header(); + print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. $template->process("attachment/created.html.tmpl", $vars) @@ -1068,53 +1115,40 @@ sub insert # Any user is allowed to access this page, unless the attachment # is private and the user does not belong to the insider group. # Validations are done later when the user submits changes. -sub edit -{ - # Retrieve and validate parameters +sub edit { my ($attach_id) = validateID(); + my $dbh = Bugzilla->dbh; - # Retrieve the attachment from the database. - SendSQL("SELECT description, mimetype, filename, bug_id, ispatch, isobsolete, isprivate, LENGTH(thedata) - FROM attachments WHERE attach_id = $attach_id"); - my ($description, $contenttype, $filename, $bugid, $ispatch, $isobsolete, $isprivate, $datasize) = FetchSQLData(); - - my $isviewable = isViewable($contenttype); + my $attachment = Bugzilla::Attachment->get($attach_id); + my $isviewable = !$attachment->isurl && isViewable($attachment->contenttype); # Retrieve a list of attachments for this bug as well as a summary of the bug # to use in a navigation bar across the top of the screen. - SendSQL("SELECT attach_id FROM attachments WHERE bug_id = $bugid ORDER BY attach_id"); - my @bugattachments; - push(@bugattachments, FetchSQLData()) while (MoreSQLData()); - SendSQL("SELECT short_desc FROM bugs WHERE bug_id = $bugid"); - my ($bugsummary) = FetchSQLData(); - + my $bugattachments = + $dbh->selectcol_arrayref('SELECT attach_id FROM attachments + WHERE bug_id = ? ORDER BY attach_id', + undef, $attachment->bug_id); + + my ($bugsummary, $product_id, $component_id) = + $dbh->selectrow_array('SELECT short_desc, product_id, component_id + FROM bugs + WHERE bug_id = ?', undef, $attachment->bug_id); + # Get a list of flag types that can be set for this attachment. - SendSQL("SELECT product_id, component_id FROM bugs WHERE bug_id = $bugid"); - my ($product_id, $component_id) = FetchSQLData(); my $flag_types = Bugzilla::FlagType::match({ 'target_type' => 'attachment' , 'product_id' => $product_id , 'component_id' => $component_id }); foreach my $flag_type (@$flag_types) { $flag_type->{'flags'} = Bugzilla::Flag::match({ 'type_id' => $flag_type->{'id'}, - 'attach_id' => $attach_id, + 'attach_id' => $attachment->id, 'is_active' => 1 }); } $vars->{'flag_types'} = $flag_types; $vars->{'any_flags_requesteeble'} = grep($_->{'is_requesteeble'}, @$flag_types); - - # Define the variables and functions that will be passed to the UI template. - $vars->{'attachid'} = $attach_id; - $vars->{'description'} = $description; - $vars->{'contenttype'} = $contenttype; - $vars->{'filename'} = $filename; - $vars->{'bugid'} = $bugid; + $vars->{'attachment'} = $attachment; $vars->{'bugsummary'} = $bugsummary; - $vars->{'ispatch'} = $ispatch; - $vars->{'isobsolete'} = $isobsolete; - $vars->{'isprivate'} = $isprivate; - $vars->{'datasize'} = $datasize; $vars->{'isviewable'} = $isviewable; - $vars->{'attachments'} = \@bugattachments; + $vars->{'attachments'} = $bugattachments; $vars->{'GetBugLink'} = \&GetBugLink; # Determine if PatchReader is installed @@ -1122,7 +1156,7 @@ sub edit require PatchReader; $vars->{'patchviewerinstalled'} = 1; }; - print Bugzilla->cgi->header(); + print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. $template->process("attachment/edit.html.tmpl", $vars) @@ -1154,7 +1188,7 @@ sub update # and FlagType::validate assume User::match_field has ensured that the # values in the requestee fields are legitimate user email addresses. Bugzilla::User::match_field($cgi, { - '^requestee(_type)?-(\d+)$' => { 'type' => 'single' } + '^requestee(_type)?-(\d+)$' => { 'type' => 'multi' } }); Bugzilla::Flag::validate($cgi, $bugid, $attach_id); Bugzilla::FlagType::validate($cgi, $bugid, $attach_id); @@ -1166,12 +1200,10 @@ sub update # cc, bug_group_map, user_group_map, and groups are in here so we # can check the permissions of flag requestees and email addresses # on the flag type cc: lists via the CanSeeBug - # function call in Flag::notify. group_group_map is in here in case - # Bugzilla::User needs to rederive groups. profiles and - # user_group_map would be READ locks instead of WRITE locks if it - # weren't for derive_groups, which needs to write to those tables. - 'bugs WRITE', 'profiles WRITE', 'email_setting READ', - 'cc READ', 'bug_group_map READ', 'user_group_map WRITE', + # function call in Flag::notify. group_group_map is in here si + # Bugzilla::User can flatten groups. + 'bugs WRITE', 'profiles READ', 'email_setting READ', + 'cc READ', 'bug_group_map READ', 'user_group_map READ', 'group_group_map READ', 'groups READ'); # Get a copy of the attachment record before we make changes @@ -1194,8 +1226,7 @@ sub update # to attachments so that we can delete pending requests if the user # is obsoleting this attachment without deleting any requests # the user submits at the same time. - my $target = Bugzilla::Flag::GetTarget(undef, $attach_id); - Bugzilla::Flag::process($target, $timestamp, $cgi); + Bugzilla::Flag::process($bugid, $attach_id, $timestamp, $cgi); # Update the attachment record in the database. SendSQL("UPDATE attachments @@ -1212,7 +1243,7 @@ sub update my $sql_timestamp = SqlQuote($timestamp); if ($olddescription ne $cgi->param('description')) { my $quotedolddescription = SqlQuote($olddescription); - my $fieldid = GetFieldID('attachments.description'); + my $fieldid = get_field_id('attachments.description'); SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid, @@ -1220,7 +1251,7 @@ sub update } if ($oldcontenttype ne $cgi->param('contenttype')) { my $quotedoldcontenttype = SqlQuote($oldcontenttype); - my $fieldid = GetFieldID('attachments.mimetype'); + my $fieldid = get_field_id('attachments.mimetype'); SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid, @@ -1228,28 +1259,28 @@ sub update } if ($oldfilename ne $cgi->param('filename')) { my $quotedoldfilename = SqlQuote($oldfilename); - my $fieldid = GetFieldID('attachments.filename'); + my $fieldid = get_field_id('attachments.filename'); SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid, $quotedoldfilename, $quotedfilename)"); } if ($oldispatch ne $cgi->param('ispatch')) { - my $fieldid = GetFieldID('attachments.ispatch'); + my $fieldid = get_field_id('attachments.ispatch'); SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid, $oldispatch, " . $cgi->param('ispatch') . ")"); } if ($oldisobsolete ne $cgi->param('isobsolete')) { - my $fieldid = GetFieldID('attachments.isobsolete'); + my $fieldid = get_field_id('attachments.isobsolete'); SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid, $oldisobsolete, " . $cgi->param('isobsolete') . ")"); } if ($oldisprivate ne $cgi->param('isprivate')) { - my $fieldid = GetFieldID('attachments.isprivate'); + my $fieldid = get_field_id('attachments.isprivate'); SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added) VALUES ($bugid, $attach_id, $userid, $sql_timestamp, $fieldid, @@ -1277,7 +1308,7 @@ sub update $vars->{'attachid'} = $attach_id; $vars->{'bugid'} = $bugid; - print Bugzilla->cgi->header(); + print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. $template->process("attachment/updated.html.tmpl", $vars) diff --git a/buglist.cgi b/buglist.cgi index c8a43ee3e..ba105eab8 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -34,18 +34,17 @@ use strict; use lib qw(.); -use vars qw($template $vars); - use Bugzilla; use Bugzilla::Search; +use Bugzilla::Search::Quicksearch; use Bugzilla::Constants; use Bugzilla::User; +use Bugzilla::Bug; # Include the Bugzilla CGI and general utility library. -require "CGI.pl"; +require "globals.pl"; -use vars qw($db_name - @components +use vars qw(@components @legal_keywords @legal_platform @legal_priority @@ -53,21 +52,33 @@ use vars qw($db_name @legal_severity @settable_resolution @target_milestone - $userid @versions); my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; +my $buffer = $cgi->query_string(); -# We have to check the login here to get the correct footer -# if an error is thrown. +# We have to check the login here to get the correct footer if an error is +# thrown and to prevent a logged out user to use QuickSearch if 'requirelogin' +# is turned 'on'. Bugzilla->login(); -if (length($::buffer) == 0) { +if (length($buffer) == 0) { print $cgi->header(-refresh=> '10; URL=query.cgi'); ThrowUserError("buglist_parameters_required"); } +# Determine whether this is a quicksearch query. +my $searchstring = $cgi->param('quicksearch'); +if (defined($searchstring)) { + $buffer = quicksearch($searchstring); + # Quicksearch may do a redirect, in which case it does not return. + # If it does return, it has modified $cgi->params so we can use them here + # as if this had been a normal query from the beginning. +} + ################################################################################ # Data and Security Validation ################################################################################ @@ -110,8 +121,8 @@ if ((defined $cgi->param('ctype')) && ($cgi->param('ctype') eq "js")) { # Determine the format in which the user would like to receive the output. # Uses the default format if the user did not specify an output format; # otherwise validates the user's choice against the list of available formats. -my $format = GetFormat("list/list", scalar $cgi->param('format'), - scalar $cgi->param('ctype')); +my $format = $template->get_format("list/list", scalar $cgi->param('format'), + scalar $cgi->param('ctype')); # Use server push to display a "Please wait..." message for the user while # executing their query if their browser supports it and they are viewing @@ -152,8 +163,8 @@ if (defined $cgi->param('regetlastlist')) { }); } -if ($::buffer =~ /&cmd-/) { - my $url = "query.cgi?$::buffer#chart"; +if ($buffer =~ /&cmd-/) { + my $url = "query.cgi?$buffer#chart"; print $cgi->redirect(-location => $url); # Generate and return the UI (HTML page) from the appropriate template. $vars->{'message'} = "buglist_adding_field"; @@ -198,14 +209,15 @@ sub DiffDate { sub LookupNamedQuery { my ($name) = @_; - Bugzilla->login(LOGIN_REQUIRED); + my $user = Bugzilla->login(LOGIN_REQUIRED); my $dbh = Bugzilla->dbh; # $name is safe -- we only use it below in a SELECT placeholder and then # in error messages (which are always HTML-filtered). + $name || ThrowUserError("query_name_missing"); trick_taint($name); my $result = $dbh->selectrow_array("SELECT query FROM namedqueries" . " WHERE userid = ? AND name = ?" - , undef, (Bugzilla->user->id, $name)); + , undef, ($user->id, $name)); defined($result) || ThrowUserError("missing_query", {'queryname' => $name}); $result @@ -227,14 +239,17 @@ sub LookupNamedQuery { # empty, or we will throw a UserError. # link_in_footer (optional) - 1 if the Named Query should be # displayed in the user's footer, 0 otherwise. +# query_type (optional) - 1 if the Named Query contains a list of +# bug IDs only, 0 otherwise (default). # # All parameters are validated before passing them into the database. # # Returns: A boolean true value if the query existed in the database # before, and we updated it. A boolean false value otherwise. -sub InsertNamedQuery ($$$;$) { - my ($userid, $query_name, $query, $link_in_footer) = @_; +sub InsertNamedQuery { + my ($userid, $query_name, $query, $link_in_footer, $query_type) = @_; $link_in_footer ||= 0; + $query_type ||= QUERY_LIST; $query_name = trim($query_name); Bugzilla->login(LOGIN_REQUIRED); my $dbh = Bugzilla->dbh; @@ -263,15 +278,15 @@ sub InsertNamedQuery ($$$;$) { if ($result) { $query_existed_before = 1; $dbh->do("UPDATE namedqueries" - . " SET query = ?, linkinfooter = ?" + . " SET query = ?, linkinfooter = ?, query_type = ?" . " WHERE userid = ? AND name = ?" - , undef, ($query, $link_in_footer, $userid, $query_name)); + , undef, ($query, $link_in_footer, $query_type, $userid, $query_name)); } else { $query_existed_before = 0; $dbh->do("INSERT INTO namedqueries" - . " (userid, name, query, linkinfooter)" - . " VALUES (?, ?, ?, ?)" - , undef, ($userid, $query_name, $query, $link_in_footer)); + . " (userid, name, query, linkinfooter, query_type)" + . " VALUES (?, ?, ?, ?, ?)" + , undef, ($userid, $query_name, $query, $link_in_footer, $query_type)); } $dbh->bz_unlock_tables(); @@ -304,25 +319,21 @@ sub GetQuip { return $quip; } -sub GetGroupsByUserId { - my ($userid) = @_; +sub GetGroups { my $dbh = Bugzilla->dbh; - - return if !$userid; + my $user = Bugzilla->user; # Create an array where each item is a hash. The hash contains # as keys the name of the columns, which point to the value of # the columns for that row. + my $grouplist = $user->groups_as_string; my $groups = $dbh->selectall_arrayref( - "SELECT DISTINCT groups.id, name, description, isactive + "SELECT id, name, description, isactive FROM groups - INNER JOIN user_group_map - ON user_group_map.group_id = groups.id - WHERE user_id = ? - AND isbless = 0 + WHERE id IN ($grouplist) AND isbuggroup = 1 ORDER BY description " - , {Slice => {}}, ($userid)); + , {Slice => {}}); return $groups; } @@ -367,22 +378,22 @@ if ($cgi->param('cmdtype') eq "dorem" && $cgi->param('remaction') =~ /^run/) { # Take appropriate action based on user's request. if ($cgi->param('cmdtype') eq "dorem") { if ($cgi->param('remaction') eq "run") { - $::buffer = LookupNamedQuery(scalar $cgi->param("namedcmd")); + $buffer = LookupNamedQuery(scalar $cgi->param("namedcmd")); $vars->{'searchname'} = $cgi->param('namedcmd'); $vars->{'searchtype'} = "saved"; - $params = new Bugzilla::CGI($::buffer); + $params = new Bugzilla::CGI($buffer); $order = $params->param('order') || $order; } elsif ($cgi->param('remaction') eq "runseries") { - $::buffer = LookupSeries(scalar $cgi->param("series_id")); + $buffer = LookupSeries(scalar $cgi->param("series_id")); $vars->{'searchname'} = $cgi->param('namedcmd'); $vars->{'searchtype'} = "series"; - $params = new Bugzilla::CGI($::buffer); + $params = new Bugzilla::CGI($buffer); $order = $params->param('order') || $order; } elsif ($cgi->param('remaction') eq "forget") { - Bugzilla->login(LOGIN_REQUIRED); + my $user = Bugzilla->login(LOGIN_REQUIRED); # Copy the name into a variable, so that we can trick_taint it for # the DB. We know it's safe, because we're using placeholders in # the SQL, and the SQL is only a DELETE. @@ -400,7 +411,7 @@ if ($cgi->param('cmdtype') eq "dorem") { = ? AND whine_queries.query_name = ? - ', undef, Bugzilla->user->id, $qname); + ', undef, $user->id, $qname); if (scalar(@$whines_in_use)) { ThrowUserError('saved_search_used_by_whines', { subjects => join(',', @$whines_in_use), @@ -411,10 +422,10 @@ if ($cgi->param('cmdtype') eq "dorem") { # If we are here, then we can safely remove the saved search $dbh->do("DELETE FROM namedqueries" . " WHERE userid = ? AND name = ?" - , undef, ($userid, $qname)); + , undef, ($user->id, $qname)); # Now reset the cached queries - Bugzilla->user->flush_queries_cache(); + $user->flush_queries_cache(); print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. @@ -428,19 +439,42 @@ if ($cgi->param('cmdtype') eq "dorem") { } elsif (($cgi->param('cmdtype') eq "doit") && defined $cgi->param('remtype')) { if ($cgi->param('remtype') eq "asdefault") { - Bugzilla->login(LOGIN_REQUIRED); - InsertNamedQuery(Bugzilla->user->id, DEFAULT_QUERY_NAME, $::buffer); + my $user = Bugzilla->login(LOGIN_REQUIRED); + InsertNamedQuery($user->id, DEFAULT_QUERY_NAME, $buffer); $vars->{'message'} = "buglist_new_default_query"; } elsif ($cgi->param('remtype') eq "asnamed") { - Bugzilla->login(LOGIN_REQUIRED); - my $userid = Bugzilla->user->id; + my $user = Bugzilla->login(LOGIN_REQUIRED); my $query_name = $cgi->param('newqueryname'); - + my $new_query = $cgi->param('newquery'); + my $query_type = QUERY_LIST; + # If add_bugids is true, we are adding individual bugs to a saved + # search. We get the existing list of bug IDs (if any) and append + # the new ones. + if ($cgi->param('add_bugids')) { + my %bug_ids; + foreach my $bug_id (split(/[\s,]+/, $cgi->param('bug_ids'))) { + next unless $bug_id; + ValidateBugID($bug_id); + $bug_ids{$bug_id} = 1; + } + ThrowUserError("no_bug_ids") unless scalar(keys %bug_ids); + + if (!trim($query_name)) { + # No new query name has been given. We append new bug IDs + # to the existing list. + $query_name = $cgi->param('oldqueryname'); + my $old_query = LookupNamedQuery($query_name); + foreach my $bug_id (split(/[\s,=]+/, $old_query)) { + $bug_ids{$bug_id} = 1 if detaint_natural($bug_id); + } + } + $new_query = "bug_id=" . join(',', sort {$a <=> $b} keys %bug_ids); + $query_type = LIST_OF_BUGS; + } my $tofooter = 1; - my $existed_before = InsertNamedQuery($userid, $query_name, - scalar $cgi->param('newquery'), - $tofooter); + my $existed_before = InsertNamedQuery($user->id, $query_name, $new_query, + $tofooter, $query_type); if ($existed_before) { $vars->{'message'} = "buglist_updated_named_query"; } @@ -450,7 +484,7 @@ elsif (($cgi->param('cmdtype') eq "doit") && defined $cgi->param('remtype')) { # Make sure to invalidate any cached query data, so that the footer is # correctly displayed - Bugzilla->user->flush_queries_cache(); + $user->flush_queries_cache(); $vars->{'queryname'} = $query_name; @@ -466,7 +500,7 @@ elsif (($cgi->param('cmdtype') eq "doit") && defined $cgi->param('remtype')) { # form - see bug 252295 if (!$params->param('query_format')) { $params->param('query_format', 'advanced'); - $::buffer = $params->query_string; + $buffer = $params->query_string; } ################################################################################ @@ -655,6 +689,9 @@ if ($format->{'extension'} eq 'ics') { } if ($format->{'extension'} eq 'atom') { + # The title of the Atom feed will be the same one as for the bug list. + $vars->{'title'} = $cgi->param('title'); + # This is the list of fields that are needed by the Atom filter. my @required_atom_columns = ( 'short_desc', @@ -834,6 +871,7 @@ elsif ($fulltext) { if ($cgi->param('debug')) { $vars->{'debug'} = 1; $vars->{'query'} = $query; + $vars->{'debugdata'} = $search->getDebugData(); } # Time to use server push to display an interim message to the user until @@ -976,12 +1014,11 @@ $vars->{'closedstates'} = ['CLOSED', 'VERIFIED', 'RESOLVED']; # The list of query fields in URL query string format, used when creating # URLs to the same query results page with different parameters (such as # a different sort order or when taking some action on the set of query -# results). To get this string, we start with the raw URL query string -# buffer that was created when we initially parsed the URL on script startup, -# then we remove all non-query fields from it, f.e. the sort order (order) -# and command type (cmdtype) fields. -$vars->{'urlquerypart'} = $::buffer; -$vars->{'urlquerypart'} =~ s/(order|cmdtype)=[^&]*&?//g; +# results). To get this string, we call the Bugzilla::CGI::canoncalise_query +# function with a list of elements to be removed from the URL. +$vars->{'urlquerypart'} = $params->canonicalise_query('order', + 'cmdtype', + 'query_based_on'); $vars->{'order'} = $order; $vars->{'caneditbugs'} = UserInGroup('editbugs'); @@ -1005,9 +1042,9 @@ if ($dotweak) { $vars->{'dotweak'} = 1; $vars->{'use_keywords'} = 1 if @::legal_keywords; - my @enterable_products = GetEnterableProducts(); - $vars->{'products'} = \@enterable_products; + $vars->{'products'} = Bugzilla->user->get_enterable_products; $vars->{'platforms'} = \@::legal_platform; + $vars->{'op_sys'} = \@::legal_opsys; $vars->{'priorities'} = \@::legal_priority; $vars->{'severities'} = \@::legal_severity; $vars->{'resolutions'} = \@::settable_resolution; @@ -1017,7 +1054,7 @@ if ($dotweak) { $vars->{'bugstatuses'} = [ keys %$bugstatuses ]; # The groups to which the user belongs. - $vars->{'groups'} = GetGroupsByUserId($::userid); + $vars->{'groups'} = GetGroups(); # If all bugs being changed are in the same product, the user can change # their version and component, so generate a list of products, a list of @@ -1082,7 +1119,11 @@ if ($format->{'extension'} eq "csv") { if ($serverpush) { # close the "please wait" page, then open the buglist page print $cgi->multipart_end(); - print $cgi->multipart_start(-type => $contenttype, -content_disposition => $disposition); + my @extra; + push @extra, (-charset => "utf8") if Param("utf8"); + print $cgi->multipart_start(-type => $contenttype, + -content_disposition => $disposition, + @extra); } else { # Suggest a name for the bug list if the user wants to save it as a file. # If we are doing server push, then we did this already in the HTTP headers diff --git a/bugzilla.dtd b/bugzilla.dtd index 9b4ed4f67..25a0a895b 100644 --- a/bugzilla.dtd +++ b/bugzilla.dtd @@ -5,7 +5,7 @@ maintainer CDATA #REQUIRED exporter CDATA #IMPLIED > -<!ELEMENT bug (bug_id, (alias?, creation_ts, short_desc, delta_ts, reporter_accessible, cclist_accessible, classification_id, classification, product, component, version, rep_platform, op_sys, bug_status, resolution?, bug_file_loc?, status_whiteboard?, keywords*, priority, bug_severity, target_milestone?, dependson*, blocked*, votes?, reporter, assigned_to, qa_contact?, cc*, (estimated_time, remaining_time, actual_time)?, group*, long_desc*, attachment*)?)> +<!ELEMENT bug (bug_id, (alias?, creation_ts, short_desc, delta_ts, reporter_accessible, cclist_accessible, classification_id, classification, product, component, version, rep_platform, op_sys, bug_status, resolution?, bug_file_loc?, status_whiteboard?, keywords*, priority, bug_severity, target_milestone?, dependson*, blocked*, votes?, everconfirmed, reporter, assigned_to, qa_contact?, cc*, (estimated_time, remaining_time, actual_time, deadline)?, group*, flag*, long_desc*, attachment*)?)> <!ATTLIST bug error (NotFound | NotPermitted | InvalidBugId) #IMPLIED > @@ -39,25 +39,36 @@ <!ELEMENT dependson (#PCDATA)> <!ELEMENT blocked (#PCDATA)> <!ELEMENT votes (#PCDATA)> +<!ELEMENT everconfirmed (#PCDATA)> <!ELEMENT cc (#PCDATA)> <!ELEMENT group (#PCDATA)> <!ELEMENT estimated_time (#PCDATA)> <!ELEMENT remaining_time (#PCDATA)> <!ELEMENT actual_time (#PCDATA)> +<!ELEMENT deadline (#PCDATA)> <!ELEMENT long_desc (who, bug_when, thetext)> +<!ATTLIST long_desc + encoding (base64) #IMPLIED + isprivate (0|1) #IMPLIED + > <!ELEMENT who (#PCDATA)> <!ELEMENT bug_when (#PCDATA)> <!ELEMENT thetext (#PCDATA)> -<!ELEMENT attachment (attachid, date, desc, type?, data?, flag*)> +<!ELEMENT attachment (attachid, date, desc, filename?, type?, data?, flag*)> <!ATTLIST attachment isobsolete (0|1) #IMPLIED ispatch (0|1) #IMPLIED + isprivate (0|1) #IMPLIED > <!ELEMENT attachid (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT desc (#PCDATA)> +<!ELEMENT filename (#PCDATA)> <!ELEMENT type (#PCDATA)> <!ELEMENT data (#PCDATA)> +<!ATTLIST data + encoding (base64) #IMPLIED +> <!ELEMENT flag EMPTY> <!ATTLIST flag name CDATA #REQUIRED diff --git a/chart.cgi b/chart.cgi index bc25d52e9..c60eedac4 100755 --- a/chart.cgi +++ b/chart.cgi @@ -19,6 +19,7 @@ # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> +# Lance Larsh <lance.larsh@oracle.com> # Glossary: # series: An individual, defined set of data plotted over time. @@ -44,13 +45,16 @@ use strict; use lib qw(.); -require "CGI.pl"; +require "globals.pl"; +use Bugzilla; use Bugzilla::Constants; use Bugzilla::Chart; use Bugzilla::Series; use Bugzilla::User; -use vars qw($cgi $template $vars); +my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; # Go back to query.cgi if we are adding a boolean chart parameter. if (grep(/^cmd-/, $cgi->param())) { @@ -60,7 +64,6 @@ if (grep(/^cmd-/, $cgi->param())) { exit; } -my $template = Bugzilla->template; my $action = $cgi->param('action'); my $series_id = $cgi->param('series_id'); @@ -83,7 +86,7 @@ if ($action eq "search") { exit; } -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); UserInGroup(Param("chartgroup")) || ThrowUserError("auth_failure", {group => Param("chartgroup"), @@ -100,7 +103,7 @@ if ($action =~ /^(assemble|add|remove|sum|subscribe|unsubscribe)$/) { if ($action =~ /^subscribe|unsubscribe$/) { detaint_natural($series_id) || ThrowCodeError("invalid_series_id"); my $series = new Bugzilla::Series($series_id); - $series->$action($::userid); + $series->$action($user->id); } my $chart = new Bugzilla::Chart($cgi); @@ -200,13 +203,15 @@ sub getSelectedLines { # Check if the user is the owner of series_id or is an admin. sub assertCanEdit { my ($series_id) = @_; - - return if UserInGroup("admin"); + my $user = Bugzilla->user; + + return if $user->in_group('admin'); my $dbh = Bugzilla->dbh; - my $iscreator = $dbh->selectrow_array("SELECT creator = ? FROM series " . + my $iscreator = $dbh->selectrow_array("SELECT CASE WHEN creator = ? " . + "THEN 1 ELSE 0 END FROM series " . "WHERE series_id = ?", undef, - $::userid, $series_id); + $user->id, $series_id); $iscreator || ThrowUserError("illegal_series_edit"); } @@ -262,9 +267,7 @@ sub plot { validateWidthAndHeight(); $vars->{'chart'} = new Bugzilla::Chart($cgi); - my $format = &::GetFormat("reports/chart", - "", - $cgi->param('ctype')); + my $format = $template->get_format("reports/chart", "", scalar($cgi->param('ctype'))); # Debugging PNGs is a pain; we need to be able to see the error messages if ($cgi->param('debug')) { diff --git a/checksetup.pl b/checksetup.pl index 2f3307a5e..4ec455efa 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -31,6 +31,9 @@ # Erik Stambaugh <erik@dasbistro.com> # Dave Lawrence <dkl@redhat.com> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Joel Peshkin <bugreport@peshkin.net> +# Lance Larsh <lance.larsh@oracle.com> +# A. Karl Kornel <karl@kornel.name> # Marc Schumann <wurblzap@gmail.com> # # @@ -318,7 +321,16 @@ my $modules = [ }, { name => 'Mail::Mailer', - version => '1.65' + version => '1.67' + }, + { + name => 'MIME::Base64', + version => '3.01' + }, + { + # MIME::Parser is packaged as MIME::Tools on ActiveState Perl + name => $^O =~ /MSWin32/i ? 'MIME::Tools' : 'MIME::Parser', + version => '5.406' }, { name => 'Storable', @@ -340,6 +352,8 @@ my %ppm_modules = ( 'GD::Graph' => 'GDGraph', 'GD::Text::Align' => 'GDTextUtil', 'Mail::Mailer' => 'MailTools', + 'Mail::Base64' => 'MIME-Base64', + 'MIME::Tools' => 'MIME-Tools', ); sub install_command { @@ -365,10 +379,11 @@ foreach my $module (@{$modules}) { print "\nThe following Perl modules are optional:\n" unless $silent; my $gd = have_vers("GD","1.20"); my $chartbase = have_vers("Chart::Base","1.0"); -my $xmlparser = have_vers("XML::Parser",0); +my $xmlparser = have_vers("XML::Twig",0); my $gdgraph = have_vers("GD::Graph",0); my $gdtextalign = have_vers("GD::Text::Align",0); my $patchreader = have_vers("PatchReader","0.9.4"); +my $imagemagick = have_vers("Image::Magick",0); print "\n" unless $silent; @@ -390,8 +405,16 @@ if ((!$gd || !$chartbase) && !$silent) { if (!$xmlparser && !$silent) { print "If you want to use the bug import/export feature to move bugs to\n", "or from other bugzilla installations, you will need to install\n ", - "the XML::Parser module by running (as $::root):\n\n", - " " . install_command("XML::Parser") . "\n\n"; + "the XML::Twig module by running (as $::root):\n\n", + " " . install_command("XML::Twig") . "\n\n"; +} +if (!$imagemagick && !$silent) { + print "If you want to convert BMP image attachments to PNG to conserve\n", + "disk space, you will need to install the ImageMagick application\n", + "Available from http://www.imagemagick.org, and the Image::Magick\n", + "Perl module by running (as $::root):\n\n", + " " . install_command("Image::Magick") . "\n\n"; + } if ((!$gd || !$gdgraph || !$gdtextalign) && !$silent) { print "If you you want to see graphical bug reports (bar, pie and line "; @@ -501,14 +524,14 @@ EOT die "Syntax error in localconfig"; } -sub LocalVarExists ($) +sub LocalVarExists { my ($name) = @_; return $main::{$name}; # if localconfig declared it, we're done. } my $newstuff = ""; -sub LocalVar ($$) +sub LocalVar { my ($name, $definition) = @_; return if LocalVarExists($name); # if localconfig declared it, we're done. @@ -980,9 +1003,6 @@ if ($my_create_htaccess) { <FilesMatch ^(.*\.pm|.*\.pl|.*localconfig.*)$> deny from all </FilesMatch> -<FilesMatch ^(localconfig.js|localconfig.rdf)$> - allow from all -</FilesMatch> END close HTACCESS; chmod $fileperm, ".htaccess"; @@ -1006,11 +1026,6 @@ END print "Repairing .htaccess...\n"; open HTACCESS, '>', '.htaccess'; print HTACCESS $oldaccess; - print HTACCESS <<'END'; -<FilesMatch ^(localconfig.js|localconfig.rdf)$> - allow from all -</FilesMatch> -END close HTACCESS; } @@ -1126,6 +1141,10 @@ END # Just to be sure ... unlink "$datadir/versioncache"; +# Check for a new install + +my $newinstall = !-e "$datadir/params"; + # Remove parameters from the params file that no longer exist in Bugzilla, # and set the defaults for new ones @@ -1172,6 +1191,11 @@ if ($^O =~ /MSWin32/i SetParam('smtpserver', $smtp); } +# Enable UTF-8 on new installs +if ($newinstall) { + SetParam('utf8', 1); +} + # WriteParams will only write out still-valid entries WriteParams(); @@ -1414,7 +1438,7 @@ require Bugzilla::User::Setting; import Bugzilla::User::Setting qw(add_setting); require Bugzilla::Util; -import Bugzilla::Util qw(bz_crypt trim html_quote); +import Bugzilla::Util qw(bz_crypt trim html_quote is_7bit_clean); require Bugzilla::User; import Bugzilla::User qw(insert_new_user); @@ -1488,12 +1512,6 @@ if ($my_db_check) { " Bugzilla requires version $sql_want or later of $sql_server.\n" . " Please download and install a newer version.\n"; } - # This message is specific to MySQL. - if ($dbh->isa('Bugzilla::DB::Mysql') && ($sql_vers =~ /^4\.0\.(\d+)/) && ($1 < 2)) { - die "\nYour MySQL server is incompatible with Bugzilla.\n" . - " Bugzilla does not support versions 4.x.x below 4.0.2.\n" . - " Please visit http://www.mysql.com/ and download a newer version.\n"; - } # See if we can connect to the database. my $conn_success = eval { @@ -1586,7 +1604,7 @@ $dbh->bz_setup_database(); # Populate groups table ########################################################################### -sub GroupDoesExist ($) +sub GroupDoesExist { my ($name) = @_; my $sth = $dbh->prepare("SELECT name FROM groups WHERE name='$name'"); @@ -1627,7 +1645,7 @@ sub AddGroup { my $headernum = 1; -sub AddFDef ($$$) { +sub AddFDef { my ($name, $description, $mailhead) = (@_); my $sth = $dbh->prepare("SELECT fieldid FROM fielddefs " . @@ -1650,7 +1668,7 @@ sub AddFDef ($$$) { } -# Note that all of these entries are unconditional, from when GetFieldID +# Note that all of these entries are unconditional, from when get_field_id # used to create an entry if it wasn't found. New fielddef columns should # be created with their associated schema change. AddFDef("bug_id", "Bug \#", 1); @@ -1676,7 +1694,6 @@ AddFDef("cc", "CC", 1); AddFDef("dependson", "BugsThisDependsOn", 1); AddFDef("blocked", "OtherBugsDependingOnThis", 1); AddFDef("attachments.description", "Attachment description", 0); -AddFDef("attachments.thedata", "Attachment data", 0); AddFDef("attachments.filename", "Attachment filename", 0); AddFDef("attachments.mimetype", "Attachment mime type", 0); AddFDef("attachments.ispatch", "Attachment is patch", 0); @@ -1684,6 +1701,7 @@ AddFDef("attachments.isobsolete", "Attachment is obsolete", 0); AddFDef("attachments.isprivate", "Attachment is private", 0); AddFDef("target_milestone", "Target Milestone", 0); +AddFDef("creation_ts", "Creation date", 0); AddFDef("delta_ts", "Last changed date", 0); AddFDef("longdesc", "Comment", 0); AddFDef("alias", "Alias", 0); @@ -1710,6 +1728,10 @@ AddFDef("percentage_complete", "Percentage Complete", 0); AddFDef("content", "Content", 0); +$dbh->do("DELETE FROM fielddefs WHERE name='attachments.thedata'"); +AddFDef("attach_data.thedata", "Attachment data", 0); +AddFDef("attachments.isurl", "Attachment is a URL", 0); + # 2005-11-13 LpSolit@gmail.com - Bug 302599 # One of the field names was a fragment of SQL code, which is DB dependent. # We have to rename it to a real name, which is DB independent. @@ -1779,7 +1801,7 @@ AddFDef($new_field_name, $field_description, 0); # entries, fill it with the entries in the list @values, in the same # order as that list. -sub PopulateEnumTable ($@) { +sub PopulateEnumTable { my ($table, @valuelist) = @_; # If we encounter any of the keys in this hash, they are @@ -2474,9 +2496,9 @@ if (!($sth->fetchrow_arrayref()->[0])) { $sth = $dbh->prepare( "SELECT longdescs.bug_id, thetext " . "FROM longdescs " . - "LEFT JOIN bugs using(bug_id) " . - "WHERE (thetext " . $dbh->sql_regexp . - " '[.*.]{3} This bug has been marked as a duplicate of [[:digit:]]+ [.*.]{3}') " . + "LEFT JOIN bugs ON longdescs.bug_id = bugs.bug_id " . + "WHERE (" . $dbh->sql_regexp("thetext", + "'[.*.]{3} This bug has been marked as a duplicate of [[:digit:]]+ [.*.]{3}'") . ") " . "AND (resolution = 'DUPLICATE') " . "ORDER BY longdescs.bug_when"); $sth->execute(); @@ -3453,10 +3475,6 @@ if (!$series_exists) { my $all_name = "-All-"; my $open_name = "All Open"; - # We can't give the Series we create a meaningful owner; that's not a big - # problem. But we do need to set this global, otherwise Series.pm objects. - $::userid = 0; - my $products = $dbh->selectall_arrayref("SELECT name FROM products"); foreach my $product ((map { $_->[0] } @$products), "-All-") { @@ -3474,9 +3492,10 @@ if (!$series_exists) { $queries{$_} = ($query_prod . "resolution=$_") foreach (@resolutions); foreach my $field (@fields) { - # Create a Series for each field in this product + # Create a Series for each field in this product. + # user ID = 0 is used. my $series = new Bugzilla::Series(undef, $product, $all_name, - $field, $::userid, 1, + $field, 0, 1, $queries{$field}, 1); $series->writeToDatabase(); $seriesids{$field} = $series->{'series_id'}; @@ -3487,7 +3506,7 @@ if (!$series_exists) { my @openedstatuses = ("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"); my $query = join("&", map { "bug_status=$_" } @openedstatuses); my $series = new Bugzilla::Series(undef, $product, $all_name, - $open_name, $::userid, 1, + $open_name, 0, 1, $query_prod . $query, 1); $series->writeToDatabase(); $seriesids{$open_name} = $series->{'series_id'}; @@ -3580,11 +3599,8 @@ AddFDef("owner_idle_time", "Time Since Assignee Touched", 0); if ($dbh->bz_column_info("user_group_map", "isderived")) { $dbh->bz_add_column('user_group_map', 'grant_type', {TYPE => 'INT1', NOTNULL => 1, DEFAULT => '0'}); - $dbh->do("UPDATE user_group_map SET grant_type = " . - "IF(isderived, " . GRANT_DERIVED . ", " . - GRANT_DIRECT . ")"); - $dbh->do("DELETE FROM user_group_map - WHERE isbless = 0 AND grant_type != " . GRANT_DIRECT); + $dbh->do("DELETE FROM user_group_map WHERE isderived != 0"); + $dbh->do("UPDATE user_group_map SET grant_type = " . GRANT_DIRECT); $dbh->bz_drop_column("user_group_map", "isderived"); $dbh->bz_drop_index('user_group_map', 'user_group_map_user_id_idx'); @@ -3592,21 +3608,6 @@ if ($dbh->bz_column_info("user_group_map", "isderived")) { {TYPE => 'UNIQUE', FIELDS => [qw(user_id group_id grant_type isbless)]}); - # Evaluate regexp-based group memberships - my $sth = $dbh->prepare("SELECT profiles.userid, profiles.login_name, - groups.id, groups.userregexp - FROM profiles, groups - WHERE userregexp != ''"); - $sth->execute(); - my $sth2 = $dbh->prepare("INSERT IGNORE INTO user_group_map - (user_id, group_id, isbless, grant_type) - VALUES(?, ?, 0, " . GRANT_REGEXP . ")"); - while (my ($uid, $login, $gid, $rexp) = $sth->fetchrow_array()) { - if ($login =~ m/$rexp/i) { - $sth2->execute($uid, $gid); - } - } - # Make sure groups get rederived $dbh->do("UPDATE groups SET last_changed = NOW() WHERE name = 'admin'"); } @@ -3937,6 +3938,26 @@ if ($dbh->bz_column_info("profiles", "emailflags")) { $dbh->bz_drop_column("profiles", "emailflags"); } +# Check for any "new" email settings that wouldn't have been ported over +# during the block above. Since these settings would have otherwise +# fallen under EVT_OTHER, we'll just clone those settings. That way if +# folks have already disabled all of that mail, there won't be any change. +{ + my %events = ("Dependency Tree Changes" => EVT_DEPEND_BLOCK); + + foreach my $desc (keys %events) { + my $event = $events{$desc}; + $sth = $dbh->prepare("SELECT count(*) FROM email_setting WHERE event = $event"); + $sth->execute(); + if (!($sth->fetchrow_arrayref()->[0])) { + # No settings in the table yet, so we assume that this is the + # first time it's being set. + print "Initializing \"$desc\" email_setting ...\n" unless $silent; + CloneEmailEvent(EVT_OTHER, $event); + } + } +} + sub CloneEmailEvent { my ($source, $target) = @_; @@ -3963,8 +3984,12 @@ if ( $dbh->isa('Bugzilla::DB::Mysql') ) { if ( $approved_col->{TYPE_NAME} eq 'TINYINT' and $approved_col->{COLUMN_SIZE} == 1 ) { - $dbh->bz_alter_column_raw('series', 'public', - {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '0'}); + # series.public could have been renamed to series.is_public, + # and so wouldn't need to be fixed manually. + if ($dbh->bz_column_info('series', 'public')) { + $dbh->bz_alter_column_raw('series', 'public', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '0'}); + } $dbh->bz_alter_column_raw('bug_status', 'isactive', {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '1'}); $dbh->bz_alter_column_raw('rep_platform', 'isactive', @@ -4046,7 +4071,27 @@ if (!exists $dbh->bz_column_info('whine_queries', 'title')->{DEFAULT}) { NOTNULL => 1, DEFAULT => "''"}); } -# 2005-12-30 - wurblzap@gmail.com - Bug 300473 +# 2005-06-29 bugreport@peshkin.net, bug 299156 +if ($dbh->bz_index_info('attachments', 'attachments_submitter_id_idx') + && (scalar(@{$dbh->bz_index_info('attachments', + 'attachments_submitter_id_idx' + )->{FIELDS}}) < 2) + ) { + $dbh->bz_drop_index('attachments', 'attachments_submitter_id_idx'); +} +$dbh->bz_add_index('attachments', 'attachments_submitter_id_idx', + [qw(submitter_id bug_id)]); + +# 2005-08-25 - bugreport@peshkin.net - Bug 305333 +if ($dbh->bz_column_info("attachments", "thedata")) { + print "Migrating attachment data to its own table...\n"; + print "(This may take a very long time)\n"; + $dbh->do("INSERT INTO attach_data (id, thedata) + SELECT attach_id, thedata FROM attachments"); + $dbh->bz_drop_column("attachments", "thedata"); +} + +# 2005-11-26 - wurblzap@gmail.com - Bug 300473 # Repair broken automatically generated series queries for non-open bugs. my $broken_series_indicator = 'field0-0-0=resolution&type0-0-0=notequals&value0-0-0=---'; @@ -4168,13 +4213,38 @@ if (@$broken_nonopen_series) { print " done.\n"; } +# 2005-09-15 lance.larsh@oracle.com Bug 308717 +if ($dbh->bz_column_info("series", "public")) { + # PUBLIC is a reserved word in Oracle, so renaming the column + # PUBLIC in table SERIES avoids having to quote the column name + # in every query against that table + $dbh->bz_rename_column('series', 'public', 'is_public'); +} + +# 2005-09-28 bugreport@peshkin.net Bug 149504 +$dbh->bz_add_column('attachments', 'isurl', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 0}); + +# 2005-10-21 LpSolit@gmail.com - Bug 313020 +$dbh->bz_add_column('namedqueries', 'query_type', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 0}); + +# 2005-11-04 LpSolit@gmail.com - Bug 305927 +$dbh->bz_alter_column('groups', 'userregexp', + {TYPE => 'TINYTEXT', NOTNULL => 1, DEFAULT => "''"}); + +# 2005-09-26 - olav@bkor.dhs.org - Bug 119524 +# Convert logincookies into a varchar +# this allows to store a random token instead of a guessable auto_increment +$dbh->bz_alter_column('logincookies', 'cookie', + {TYPE => 'varchar(16)', PRIMARYKEY => 1, NOTNULL => 1}); + # Fixup for Bug 101380 # "Newlines, nulls, leading/trailing spaces are getting into summaries" my $controlchar_bugs = $dbh->selectall_arrayref("SELECT short_desc, bug_id FROM bugs WHERE " . - "'short_desc' " . $dbh->sql_regexp . - " '[[:cntrl:]]'"); + $dbh->sql_regexp('short_desc', "'[[:cntrl:]]'")); if (scalar(@$controlchar_bugs)) { my $msg = 'Cleaning control characters from bug summaries...'; @@ -4215,17 +4285,6 @@ AddGroup('editcomponents', 'Can create, destroy, and edit components.'); AddGroup('editkeywords', 'Can create, destroy, and edit keywords.'); AddGroup('admin', 'Administrators'); -# 2005-06-29 bugreport@peshkin.net, bug 299156 -if ($dbh->bz_index_info('attachments', 'attachments_submitter_id_idx') - && (scalar(@{$dbh->bz_index_info('attachments', - 'attachments_submitter_id_idx' - )->{FIELDS}}) < 2) - ) { - $dbh->bz_drop_index('attachments', 'attachments_submitter_id_idx'); -} -$dbh->bz_add_index('attachments', 'attachments_submitter_id_idx', - [qw(submitter_id bug_id)]); - if (!GroupDoesExist("editbugs")) { my $id = AddGroup('editbugs', 'Can edit all bug fields.', ".*"); my $sth = $dbh->prepare("SELECT userid FROM profiles"); @@ -4266,6 +4325,63 @@ if (!GroupDoesExist('bz_canusewhines')) { GROUP_MEMBERSHIP . ")") unless $group_exists; } +# 2005-08-14 bugreport@peshkin.net -- Bug 304583 +use constant GRANT_DERIVED => 1; +# Get rid of leftover DERIVED group permissions +$dbh->do("DELETE FROM user_group_map WHERE grant_type = " . GRANT_DERIVED); +# Evaluate regexp-based group memberships +$sth = $dbh->prepare("SELECT profiles.userid, profiles.login_name, + groups.id, groups.userregexp, + user_group_map.group_id + FROM (profiles + CROSS JOIN groups) + LEFT JOIN user_group_map + ON user_group_map.user_id = profiles.userid + AND user_group_map.group_id = groups.id + AND user_group_map.grant_type = ? + WHERE (userregexp != '' + OR user_group_map.group_id IS NOT NULL)"); + +my $sth_add = $dbh->prepare("INSERT INTO user_group_map + (user_id, group_id, isbless, grant_type) + VALUES(?, ?, 0, " . GRANT_REGEXP . ")"); + +my $sth_del = $dbh->prepare("DELETE FROM user_group_map + WHERE user_id = ? + AND group_id = ? + AND isbless = 0 + AND grant_type = " . GRANT_REGEXP); + +$sth->execute(GRANT_REGEXP); +while (my ($uid, $login, $gid, $rexp, $present) = $sth->fetchrow_array()) { + if ($login =~ m/$rexp/i) { + $sth_add->execute($uid, $gid) unless $present; + } else { + $sth_del->execute($uid, $gid) if $present; + } +} + +# 2005-10-10 karl@kornel.name -- Bug 204498 +if (!GroupDoesExist('bz_sudoers')) { + my $sudoers_group = AddGroup('bz_sudoers', + 'Can perform actions as other users'); + my $sudo_protect_group = AddGroup('bz_sudo_protect', + 'Can not be impersonated by other users'); + my ($admin_group) = $dbh->selectrow_array('SELECT id FROM groups + WHERE name = ?', undef, 'admin'); + + # Admins should be given sudo access + # Everyone in sudo should be in sudo_protect + # Admins can grant membership in both groups + my $sth = $dbh->prepare('INSERT INTO group_group_map + (member_id, grantor_id, grant_type) + VALUES (?, ?, ?)'); + $sth->execute($admin_group, $sudoers_group, GROUP_MEMBERSHIP); + $sth->execute($sudoers_group, $sudo_protect_group, GROUP_MEMBERSHIP); + $sth->execute($admin_group, $sudoers_group, GROUP_BLESS); + $sth->execute($admin_group, $sudo_protect_group, GROUP_BLESS); +} + ########################################################################### # Create --SETTINGS-- users can adjust ########################################################################### @@ -4279,14 +4395,23 @@ add_setting ("comment_sort_order", {"oldest_to_newest" => 1, "newest_to_oldest_desc_first" => 3}, "oldest_to_newest" ); +# 2005-05-12 bugzilla@glob.com.au -- Bug 63536 +add_setting ("post_bug_submit_action", {"next_bug" => 1, + "same_bug" => 2, + "nothing" => 3, + }, + "next_bug" ); + # 2005-06-29 wurblzap@gmail.com -- Bug 257767 add_setting ('csv_colsepchar', {',' => 1, ';' => 2 }, ',' ); +# 2005-10-21 LpSolit@gmail.com -- Bug 313020 +add_setting('per_bug_queries', {'on' => 1, 'off' => 2}, 'on'); + ########################################################################### # Create Administrator --ADMIN-- ########################################################################### - sub bailout { # this is just in case we get interrupted while getting passwd if ($^O !~ /MSWin32/i) { system("stty","echo"); # re-enable input echoing @@ -4312,6 +4437,11 @@ if (@admins) { (user_id, group_id, isbless, grant_type) VALUES ($userid, $adminid, 1, " . GRANT_DIRECT . ")"); } + + $dbh->bz_lock_tables('groups READ', + 'group_group_map WRITE'); + $dbh->do('DELETE FROM group_group_map WHERE member_id = ?', + undef, $adminid); $sth = $dbh->prepare("SELECT id FROM groups"); $sth->execute(); while ( my ($id) = $sth->fetchrow_array() ) { @@ -4329,6 +4459,7 @@ if (@admins) { (member_id, grantor_id, grant_type) VALUES ($adminid, $id," . GROUP_MEMBERSHIP . ")"); } + $dbh->bz_unlock_tables(); } @@ -4427,7 +4558,6 @@ if ($sth->rows == 0) { } if ($admin_create) { - while( $realname eq "" ) { print "Enter the real name of the administrator: "; $realname = $answer{'ADMIN_REALNAME'} @@ -4437,6 +4567,13 @@ if ($sth->rows == 0) { if(! $realname ) { print "\nReally. We need a full name.\n"; } + if(! is_7bit_clean($realname)) { + print "\nSorry, but at this stage the real name can only " . + "contain standard English\ncharacters. Once Bugzilla " . + "has been installed, you can use the 'Prefs' page\nto " . + "update the real name.\n"; + $realname = ''; + } } # trap a few interrupts so we can fix the echo if we get aborted. @@ -4544,4 +4681,21 @@ $dbh->do("UPDATE components " . unlink "$datadir/versioncache"; +# Check if the default parameter for urlbase is still set, and if so, give +# notification that they should go and visit editparams.cgi + +my @params = Bugzilla::Config::Core::get_param_list(); +my $urlbase_default = ''; +foreach my $item (@params) { + next unless $item->{'name'} eq 'urlbase'; + $urlbase_default = $item->{'default'}; + last; +} + +if (Param('urlbase') eq $urlbase_default) { + print "Now that you have installed Bugzilla, you should visit the \n" . + "'Parameters' page (linked in the footer of the Administrator \n" . + "account) to ensure it is set up as you wish - this includes \n" . + "setting the 'urlbase' option to the correct url.\n" unless $silent; +} ################################################################################ diff --git a/colchange.cgi b/colchange.cgi index 30103406f..43bfd86ee 100755 --- a/colchange.cgi +++ b/colchange.cgi @@ -27,21 +27,20 @@ use lib qw(.); use vars qw( @legal_keywords - $buffer - $template - $vars ); use Bugzilla; use Bugzilla::Constants; use Bugzilla::User; -require "CGI.pl"; +require "globals.pl"; Bugzilla->login(); GetVersionTable(); my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; # The master list not only says what fields are possible, but what order # they get displayed in. @@ -150,7 +149,7 @@ if (defined $cgi->cookie('COLUMNLIST')) { $vars->{'collist'} = \@collist; $vars->{'splitheader'} = $cgi->cookie('SPLITHEADER') ? 1 : 0; -$vars->{'buffer'} = $::buffer; +$vars->{'buffer'} = $cgi->query_string(); # Generate and return the UI (HTML page) from the appropriate template. print $cgi->header(); diff --git a/config.cgi b/config.cgi index f1bc5f0f1..bea4f6faa 100755 --- a/config.cgi +++ b/config.cgi @@ -30,7 +30,7 @@ use strict; # Include the Bugzilla CGI and general utility library. use lib qw(.); -require "CGI.pl"; +require "globals.pl"; use Bugzilla; use Bugzilla::Constants; @@ -51,13 +51,12 @@ use vars # Use the global template variables defined in globals.pl # to generate the output. -use vars qw($template $vars); -Bugzilla->login(LOGIN_OPTIONAL); +my $user = Bugzilla->login(LOGIN_OPTIONAL); # If the 'requirelogin' parameter is on and the user is not # authenticated, return empty fields. -if (Param('requirelogin') && !Bugzilla->user->id) { +if (Param('requirelogin') && !$user->id) { display_data(); } @@ -65,6 +64,7 @@ if (Param('requirelogin') && !Bugzilla->user->id) { GetVersionTable(); # Pass a bunch of Bugzilla configuration to the templates. +my $vars = {}; $vars->{'priority'} = \@::legal_priority; $vars->{'severity'} = \@::legal_severity; $vars->{'platform'} = \@::legal_platform; @@ -73,11 +73,8 @@ $vars->{'keyword'} = \@::legal_keywords; $vars->{'resolution'} = \@::legal_resolution; $vars->{'status'} = \@::legal_bug_status; -# Include lists of products, components, versions, and target milestones. -my $selectables = GetSelectableProductHash(); -foreach my $selectable (keys %$selectables) { - $vars->{$selectable} = $selectables->{$selectable}; -} +# Include a list of product objects. +$vars->{'products'} = $user->get_selectable_products; # Create separate lists of open versus resolved statuses. This should really # be made part of the configuration. @@ -100,10 +97,12 @@ sub display_data { my $vars = shift; my $cgi = Bugzilla->cgi; + my $template = Bugzilla->template; + # Determine how the user would like to receive the output; # default is JavaScript. - my $format = GetFormat("config", scalar($cgi->param('format')), - scalar($cgi->param('ctype')) || "js"); + my $format = $template->get_format("config", scalar($cgi->param('format')), + scalar($cgi->param('ctype')) || "js"); # Return HTTP headers. print "Content-Type: $format->{'ctype'}\n\n"; diff --git a/contrib/BugzillaEmail.pm b/contrib/BugzillaEmail.pm index 473169c9e..db31d1f24 100644 --- a/contrib/BugzillaEmail.pm +++ b/contrib/BugzillaEmail.pm @@ -16,6 +16,7 @@ # Gregor Fischer <fischer@suse.de> # Klaas Freitag <freitag@suse.de> # Seth Landsman <seth@dworkin.net> +# Lance Larsh <lance.larsh@oracle.com> # The purpose of this module is to abstract out a bunch of the code # that is central to email interfaces to bugzilla and its database @@ -54,8 +55,8 @@ sub findUser($) { return $found_address; } elsif ($email_transform eq $EMAIL_TRANSFORM_BASE_DOMAIN) { my ($username) = ($address =~ /(.+)@/); - my $stmt = "SELECT login_name FROM profiles WHERE " . $dbh->sql_istrcmp( - 'login_name', $dbh->quote($username), $dbh->sql_regexp()); + my $stmt = "SELECT login_name FROM profiles WHERE " . $dbh->sql_regexp( + $dbh->sql_istring('login_name'), $dbh->sql_istring($dbh->quote($username))); SendSQL($stmt); my $domain; @@ -72,8 +73,8 @@ sub findUser($) { return $new_address; } elsif ($email_transform eq $EMAIL_TRANSFORM_NAME_ONLY) { my ($username) = ($address =~ /(.+)@/); - my $stmt = "SELECT login_name FROM profiles WHERE " .$dbh->sql_istrcmp( - 'login_name', $dbh->quote($username), $dbh->sql_regexp()); + my $stmt = "SELECT login_name FROM profiles WHERE " .$dbh->sql_regexp( + $dbh->sql_istring('login_name'), $dbh->sql_istring($dbh->quote($username))); SendSQL($stmt); my $found_address = FetchOneColumn(); return $found_address; diff --git a/contrib/CVS/Entries b/contrib/CVS/Entries index 7211402e2..02cc82300 100644 --- a/contrib/CVS/Entries +++ b/contrib/CVS/Entries @@ -1,21 +1,21 @@ -/BugzillaEmail.pm/1.3/Fri Jul 8 02:31:43 2005//TBUGZILLA-2_20_2 -/README/1.10/Mon Jul 5 21:54:00 2004//TBUGZILLA-2_20_2 -/README.Mailif/1.3/Wed Mar 15 23:39:03 2000//TBUGZILLA-2_20_2 -/bug_email.pl/1.28.2.1/Tue Feb 21 14:52:58 2006//TBUGZILLA-2_20_2 -/bugmail_help.html/1.2/Mon Jun 20 19:16:27 2005//TBUGZILLA-2_20_2 -/bugzilla.procmailrc/1.1/Wed Mar 15 23:39:09 2000//TBUGZILLA-2_20_2 -/bugzilla_email_append.pl/1.9/Fri Jul 8 02:31:43 2005//TBUGZILLA-2_20_2 -/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-2_20_2 -/bzdbcopy.pl/1.1.2.2/Tue Oct 18 22:26:27 2005//TBUGZILLA-2_20_2 -/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-2_20_2 -/gnats2bz.pl/1.6/Thu Jan 31 14:29:21 2002//TBUGZILLA-2_20_2 -/jb2bz.py/1.4/Tue Feb 8 16:51:03 2005//TBUGZILLA-2_20_2 -/merge-users.pl/1.1.4.2/Sun Feb 26 13:20:04 2006//TBUGZILLA-2_20_2 -/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-2_20_2 -/sendbugmail.pl/1.3/Thu Feb 24 23:42:48 2005//TBUGZILLA-2_20_2 -/sendunsentbugmail.pl/1.5.4.1/Sun Nov 13 17:36:21 2005//TBUGZILLA-2_20_2 -/syncLDAP.pl/1.3/Fri Jul 8 02:31:43 2005//TBUGZILLA-2_20_2 -/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-2_20_2 +/BugzillaEmail.pm/1.4/Wed Aug 31 08:00:25 2005//TBUGZILLA-2_22 +/README/1.10/Mon Jul 5 21:54:00 2004//TBUGZILLA-2_22 +/README.Mailif/1.4/Fri Nov 25 19:47:38 2005//TBUGZILLA-2_22 +/bug_email.pl/1.31.2.1/Tue Feb 21 14:52:37 2006//TBUGZILLA-2_22 +/bugmail_help.html/1.3/Fri Nov 25 19:47:38 2005//TBUGZILLA-2_22 +/bugzilla.procmailrc/1.1/Wed Mar 15 23:39:09 2000//TBUGZILLA-2_22 +/bugzilla_email_append.pl/1.10/Fri Nov 25 21:57:07 2005//TBUGZILLA-2_22 +/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-2_22 +/bzdbcopy.pl/1.1/Tue Jul 12 07:56:16 2005//TBUGZILLA-2_22 +/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-2_22 +/gnats2bz.pl/1.6/Thu Jan 31 14:29:21 2002//TBUGZILLA-2_22 +/jb2bz.py/1.5/Fri Aug 26 23:11:32 2005//TBUGZILLA-2_22 +/merge-users.pl/1.1.2.2/Sun Feb 26 13:17:48 2006//TBUGZILLA-2_22 +/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-2_22 +/sendbugmail.pl/1.3/Thu Feb 24 23:42:48 2005//TBUGZILLA-2_22 +/sendunsentbugmail.pl/1.7/Sun Nov 13 17:32:12 2005//TBUGZILLA-2_22 +/syncLDAP.pl/1.4/Wed Aug 10 01:30:40 2005//TBUGZILLA-2_22 +/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-2_22 D/bugzilla-submit//// D/cmdline//// D/gnatsparse//// diff --git a/contrib/CVS/Tag b/contrib/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/contrib/CVS/Tag +++ b/contrib/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/contrib/README.Mailif b/contrib/README.Mailif index 8b6604438..0c65cef83 100644 --- a/contrib/README.Mailif +++ b/contrib/README.Mailif @@ -54,7 +54,7 @@ Search the script after 'default' - you find some default-Settings for bug reports, which are used, if the sender did not send a field for it. The defaults should be checked and changed. -Thats hopefully all, we will come up with any configuration file or something. +That's hopefully all, we will come up with any configuration file or something. If your mail works, your script will insert mails from now on. diff --git a/contrib/bug_email.pl b/contrib/bug_email.pl index 67524816c..3fcede9cf 100755 --- a/contrib/bug_email.pl +++ b/contrib/bug_email.pl @@ -38,7 +38,7 @@ # # You need to work with bug_email.pl the MIME::Parser installed. # -# $Id: bug_email.pl,v 1.28.2.1 2006/02/21 14:52:58 jocuri%softhome.net Exp $ +# $Id: bug_email.pl,v 1.31.2.1 2006/02/21 14:52:37 jocuri%softhome.net Exp $ ############################################################### # 02/12/2000 (SML) @@ -164,14 +164,16 @@ sub storeAttachments( $$ ) # Make SQL-String - my $sql = "insert into attachments (bug_id, creation_ts, description, mimetype, ispatch, filename, thedata, submitter_id) values ("; + my $sql = "insert into attachments (bug_id, creation_ts, description, mimetype, ispatch, filename, submitter_id) values ("; $sql .= "$bugid, now(), " . SqlQuote( $description ) . ", "; $sql .= SqlQuote( $mime ) . ", "; $sql .= "0, "; $sql .= SqlQuote( $decoded_file ) . ", "; - $sql .= SqlQuote( $data ) . ", "; $sql .= "$submitter_id );"; SendSQL( $sql ) unless( $test ); + $sql = "insert into attach_data (id, thedata) values (LAST_INSERT_ID(), "; + $sql .= SqlQuote( $data ) . ")"; + SendSQL( $sql ) unless( $test ); } return( $att_count ); @@ -191,7 +193,7 @@ sub horLine( ) # Check if $Name is in $GroupName # This is no more CreateBugs group, so I'm using this routine to just determine if the user is -# in the database. Eventually, here should be a seperate routine or renamed, or something (SML) +# in the database. Eventually, here should be a separate routine or renamed, or something (SML) sub CheckPermissions { my ($GroupName, $Name) = @_; @@ -441,16 +443,16 @@ sub FetchAllSQLData( ) # BugMailError takes two arguments: The first one is a flag, how heavy # the error is: # -# 0 - Its an error, but bugzilla can process the bug. The user should +# 0 - It's an error, but Bugzilla can process the bug. The user should # handle that as a warning. # -# 1 - Its a real bug. Bugzilla cant store the bug. The mail has to be +# 1 - It's a real bug. Bugzilla can't store the bug. The mail has to be # resent. # # 2 - Permission error: The user does not have the permission to send # a bug. # -# The second argument is a Text which describs the bug. +# The second argument is a Text which describes the bug. # # # # @@ -458,7 +460,7 @@ sub BugMailError($ $ ) { my ( $errflag, $text ) = @_; - # On permission error, dont sent all other Errors back -> just quit ! + # On permission error, don't sent all other Errors back -> just quit ! if( $errflag == 2 ) { # Permission-Error Reply( $SenderShort, $Message_ID, "Bugzilla Error", "Permission denied.\n\n" . "You do not have the permissions to create a new bug. Sorry.\n" ); @@ -670,7 +672,7 @@ sub extractControls( $ ) } } - # thats it. + # that's it. return( $backbody ); } @@ -740,7 +742,7 @@ my $Sender = $entity->get( 'From' ); $Sender ||= $entity->get( 'Reply-To' ); $Message_ID = $entity->get( 'Message-Id' ); -die (" *** Cant find Sender-adress in sent mail ! ***\n" ) unless defined( $Sender ); +die (" *** Can't find Sender-address in sent mail ! ***\n" ) unless defined( $Sender ); chomp( $Sender ); chomp( $Message_ID ); @@ -845,7 +847,7 @@ my $Product = $DEFAULT_PRODUCT; $Product = CheckProduct( $Control{'product'} ) if( defined( $Control{ 'product'} )); if ( $Product eq "" ) { - my $Text = "You didnt send a value for the required key \@product !\n\n"; + my $Text = "You didn't send a value for the required key \@product !\n\n"; $Text = "You sent the invalid product \"$Control{'product'}\"!\n\n" if( defined( $Control{ 'product'} )); diff --git a/contrib/bugmail_help.html b/contrib/bugmail_help.html index a2f89f260..1b43cd2b5 100644 --- a/contrib/bugmail_help.html +++ b/contrib/bugmail_help.html @@ -39,7 +39,7 @@ You receive a reply mail with the new bug-ID if your request was ok. If not, you get a mail with some help on the bugmail system and a specific analysis of your request. <P> -Please dont refuse to send one or two wrong mails, you will get all the information +Please don't refuse to send one or two wrong mails, you will get all the information you need in the replies, and <I>only</I> in the mail replies. The information on this page, concerning available products, versions and so on, is not dynamicly generated and may be old therefore. @@ -91,23 +91,23 @@ hopefully valid value. <TR> <TD>@rep_platform</TD> <TD>The desired platform</TD> - <TD>no.<br>If you dont give a value, this field is set to <I>All</I>.</TD> + <TD>no.<br>If you don't give a value, this field is set to <I>All</I>.</TD> </TR> <TR> <TD>@bug_severity</TD> <TD>The severity of the bug</TD> - <TD>no. <br> If you dont give a value, this field is set to + <TD>no. <br> If you don't give a value, this field is set to <I>normal</I></TD> </TR> <TR> <TD>@priority</TD> <TD>The priority of the bug</TD> - <TD>no.<br>If you dont give a value, this field is set to <I>P3</I></TD> + <TD>no.<br>If you don't give a value, this field is set to <I>P3</I></TD> </TR> <TR> <TD>@op_sys</TD> <TD>The operating system</TD> - <TD>no.<br>If you dont give a value, this field is set to <I>Linux</I>.</TD> + <TD>no.<br>If you don't give a value, this field is set to <I>Linux</I>.</TD> </TR> <TR> <TD>@assigned_to</TD> @@ -150,7 +150,7 @@ Give string values for the most keys above. Some keywords require special value <ol> <li>E-Mail adresses: If you want to set the qa-contact, specify a email-adress for @qa_contact. The email must be known by bugzilla of course.</li> <li>Listvalues: Most of the values have to be one of a list of valid values. Try by sending -a mail and read the reply. Skip fields if you dont get help for them unless you dont know +a mail and read the reply. Skip fields if you don't get help for them unless you don't know which values you may choose.</li> <li>free Text: The descriptions may be free text. </li> <li>Special: The field groupset may be specified in different in three different kinds: @@ -181,7 +181,7 @@ Some of the values must be choosen from a list:<br> <p> After you have specified the required keywords and maybe some other value, you may -describe your bug. You dont need a keyword for starting your bug description. All +describe your bug. You don't need a keyword for starting your bug description. All text which follows the keyword block is handled as long description of the bug. <p> @@ -198,7 +198,7 @@ the attachment in bugzilla. <H1><A NAME="examplemail">Example Mail</A></H1> -See the example of the mail <b>body</b> (Dont forget to specify the short description +See the example of the mail <b>body</b> (Don't forget to specify the short description in the mail subject):<hr><pre> @product = Bugzilla diff --git a/contrib/bugzilla-submit/CVS/Entries b/contrib/bugzilla-submit/CVS/Entries index 1278e9938..f1c46eea0 100644 --- a/contrib/bugzilla-submit/CVS/Entries +++ b/contrib/bugzilla-submit/CVS/Entries @@ -1,5 +1,5 @@ -/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-2_20_2 -/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-2_20_2 -/bugzilla-submit/1.6/Fri Jul 16 03:56:35 2004//TBUGZILLA-2_20_2 -/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-2_20_2 +/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-2_22 +/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-2_22 +/bugzilla-submit/1.6/Fri Jul 16 03:56:35 2004//TBUGZILLA-2_22 +/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-2_22 D diff --git a/contrib/bugzilla-submit/CVS/Tag b/contrib/bugzilla-submit/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/contrib/bugzilla-submit/CVS/Tag +++ b/contrib/bugzilla-submit/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/contrib/bugzilla_email_append.pl b/contrib/bugzilla_email_append.pl index e409f0862..abf2c0b78 100755 --- a/contrib/bugzilla_email_append.pl +++ b/contrib/bugzilla_email_append.pl @@ -65,7 +65,7 @@ my $Sender = $entity->get( 'From' ); $Sender ||= $entity->get( 'Reply-To' ); my $Message_ID = $entity->get( 'Message-Id' ); -die (" *** Cant find Sender-adress in sent mail ! ***\n" ) unless defined( $Sender ); +die (" *** Can't find Sender-address in sent mail ! ***\n" ) unless defined( $Sender ); chomp( $Sender ); chomp( $Message_ID ); diff --git a/contrib/cmdline/CVS/Entries b/contrib/cmdline/CVS/Entries index 9c077b723..a1b96b59b 100644 --- a/contrib/cmdline/CVS/Entries +++ b/contrib/cmdline/CVS/Entries @@ -1,8 +1,8 @@ -/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 -/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 -/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 -/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 -/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 -/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 -/query.conf/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_20_2 +/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_22 +/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_22 +/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_22 +/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_22 +/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_22 +/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-2_22 +/query.conf/1.3/Fri Aug 26 23:11:32 2005//TBUGZILLA-2_22 D diff --git a/contrib/cmdline/CVS/Tag b/contrib/cmdline/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/contrib/cmdline/CVS/Tag +++ b/contrib/cmdline/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/contrib/cmdline/query.conf b/contrib/cmdline/query.conf index a44347b2b..87390cd3f 100644 --- a/contrib/cmdline/query.conf +++ b/contrib/cmdline/query.conf @@ -43,7 +43,7 @@ bug_file_loc substring "u","url" status_whiteboard substring "w","whiteboard" keywords substring "k","K","keywords" attachments.description substring "attachdesc" -attachments.thedata substring "attachdata" +attach_data.thedata substring "attachdata" attachments.mimetype substring "attachmime" dependson substring # bug 30823 blocked substring # bug 30823 diff --git a/contrib/gnatsparse/CVS/Entries b/contrib/gnatsparse/CVS/Entries index e00ef0e03..d8b175145 100644 --- a/contrib/gnatsparse/CVS/Entries +++ b/contrib/gnatsparse/CVS/Entries @@ -1,5 +1,5 @@ -/README/1.2/Tue Mar 23 17:59:11 2004//TBUGZILLA-2_20_2 -/gnatsparse.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_20_2 -/magic.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_20_2 -/specialuu.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_20_2 +/README/1.2/Tue Mar 23 17:59:11 2004//TBUGZILLA-2_22 +/gnatsparse.py/1.3/Fri Nov 25 19:47:38 2005//TBUGZILLA-2_22 +/magic.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_22 +/specialuu.py/1.1/Sun Mar 21 21:32:16 2004//TBUGZILLA-2_22 D diff --git a/contrib/gnatsparse/CVS/Tag b/contrib/gnatsparse/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/contrib/gnatsparse/CVS/Tag +++ b/contrib/gnatsparse/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/contrib/gnatsparse/gnatsparse.py b/contrib/gnatsparse/gnatsparse.py index 5f7cde713..5315ee8b0 100755 --- a/contrib/gnatsparse/gnatsparse.py +++ b/contrib/gnatsparse/gnatsparse.py @@ -270,7 +270,7 @@ def load_responsible(fname): rfp.close() def split_csl(list): - """ Split a comma seperated list """ + """ Split a comma separated list """ newlist = re.split(r"""\s*,\s*""", list) return newlist @@ -451,7 +451,7 @@ class Bugzillabug(object): print >>outfile, " %s, %s, %s, %s);" % (id, who, when, text) for name, data, who in self.attachments: print >>outfile, "\ninsert into attachments (" - print >>outfile, " bug_id, filename, description, mimetype, ispatch, submitter_id, thedata) values (" + print >>outfile, " bug_id, filename, description, mimetype, ispatch, submitter_id) values (" ftype = None # It's *magic*! if name.endswith(".ii") == 1: @@ -463,7 +463,10 @@ class Bugzillabug(object): if ftype is None: ftype = "application/octet-stream" - print >>outfile, "%s,%s,%s, %s,0, %s,%s);" %(self.bug_id, SqlQuote(name), SqlQuote(name), SqlQuote (ftype), who, SqlQuote(zlib.compress(data))) + print >>outfile, "%s,%s,%s, %s,0, %s,%s);" %(self.bug_id, SqlQuote(name), SqlQuote(name), SqlQuote (ftype), who) + print >>outfile, "\ninsert into attach_data (" + print >>outfile, "\n(id, thedata) values (last_insert_id()," + print >>outfile, "%s);" % (SqlQuote(zlib.compress(data))) for newstate, oldstate, fieldid, changedby, changedwhen in self.bug_activity: print >>outfile, "\ninsert into bugs_activity (" print >>outfile, " bug_id, who, bug_when, fieldid, added, removed) values (" diff --git a/contrib/jb2bz.py b/contrib/jb2bz.py index ed8231dfc..e2f502927 100644 --- a/contrib/jb2bz.py +++ b/contrib/jb2bz.py @@ -248,10 +248,13 @@ def process_jitterbug(filename): for a in current['attachments']: cursor.execute( "INSERT INTO attachments SET " \ "bug_id=%s, creation_ts=%s, description='', mimetype=%s," \ - "filename=%s, thedata=%s, submitter_id=%s", + "filename=%s, submitter_id=%s", [ current['number'], time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]), - a[1], a[0], a[2], reporter ]) + a[1], a[0], reporter ]) + cursor.execute( "INSERT INTO attach_data SET " \ + "id=LAST_INSERT_ID(), thedata=%s", + [ a[2] ]) cursor.close() db.close() diff --git a/contrib/sendunsentbugmail.pl b/contrib/sendunsentbugmail.pl index 0bd6a9b17..bf31f2d4b 100644 --- a/contrib/sendunsentbugmail.pl +++ b/contrib/sendunsentbugmail.pl @@ -25,7 +25,7 @@ use strict; use lib qw(.); -require "CGI.pl"; +require "globals.pl"; use Bugzilla::Constants; use Bugzilla::BugMail; diff --git a/contrib/syncLDAP.pl b/contrib/syncLDAP.pl index 14ba1402c..6e78854e0 100755 --- a/contrib/syncLDAP.pl +++ b/contrib/syncLDAP.pl @@ -23,7 +23,7 @@ use strict; -require "CGI.pl"; +require "globals.pl"; use lib qw(.); diff --git a/createaccount.cgi b/createaccount.cgi index 3465800a3..01b746c89 100755 --- a/createaccount.cgi +++ b/createaccount.cgi @@ -28,14 +28,13 @@ use strict; use lib qw(.); -require "CGI.pl"; +require "globals.pl"; use Bugzilla; use Bugzilla::Constants; use Bugzilla::User; - -# Shut up misguided -w warnings about "used only once": -use vars qw($template $vars); +use Bugzilla::BugMail; +use Bugzilla::Util; # Just in case someone already has an account, let them get the correct footer # on an error message. The user is logged out just after the account is @@ -44,6 +43,9 @@ Bugzilla->login(LOGIN_OPTIONAL); my $dbh = Bugzilla->dbh; my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; + print $cgi->header(); # If we're using LDAP for login, then we can't create a new account here. @@ -61,10 +63,15 @@ my $login = $cgi->param('login'); if (defined($login)) { # We've been asked to create an account. my $realname = trim($cgi->param('realname')); - CheckEmailSyntax($login); + + validate_email_syntax($login) + || ThrowUserError('illegal_email_address', {addr => $login}); + $vars->{'login'} = $login; - $dbh->bz_lock_tables('profiles WRITE', 'email_setting WRITE', 'tokens READ'); + $dbh->bz_lock_tables('profiles WRITE', 'groups READ', + 'user_group_map WRITE', 'email_setting WRITE', + 'tokens READ'); if (!is_available_username($login)) { # Account already exists @@ -86,7 +93,7 @@ if (defined($login)) { # Clear out the login cookies in case the user is currently logged in. Bugzilla->logout(); - MailPassword($login, $password); + Bugzilla::BugMail::MailPassword($login, $password); $template->process("account/created.html.tmpl", $vars) || ThrowTemplateError($template->error()); diff --git a/defparams.pl b/defparams.pl deleted file mode 100644 index 7e48ff951..000000000 --- a/defparams.pl +++ /dev/null @@ -1,1479 +0,0 @@ -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Terry Weissman <terry@mozilla.org> -# Dawn Endico <endico@mozilla.org> -# Dan Mosedale <dmose@mozilla.org> -# Joe Robins <jmrobins@tgix.com> -# Jacob Steenhagen <jake@bugzilla.org> -# J. Paul Reed <preed@sigkill.com> -# Bradley Baetz <bbaetz@student.usyd.edu.au> -# Joseph Heenan <joseph@heenan.me.uk> -# Erik Stambaugh <erik@dasbistro.com> -# - -# This file defines all the parameters that we have a GUI to edit within -# Bugzilla. - -# ATTENTION!!!! THIS FILE ONLY CONTAINS THE DEFAULTS. -# You cannot change your live settings by editing this file. -# Only adding new parameters is done here. Once the parameter exists, you -# must use %baseurl%/editparams.cgi from the web to edit the settings. - -# This file is included via |do|, mainly because of circular dependency issues -# (such as globals.pl -> Bugzilla::Config -> this -> Bugzilla::Config) -# which preclude compile time loading. - -# Those issues may go away at some point, and the contents of this file -# moved somewhere else. Please try to avoid more dependencies from here -# to other code - -# (Note that these aren't just added directly to Bugzilla::Config, because -# the backend prefs code is separate to this...) - -use strict; -use vars qw(@param_list); -use File::Spec; # for find_languages -use Socket; - -use Bugzilla::Config qw(:DEFAULT $templatedir $webdotdir); -use Bugzilla::Util; -use Bugzilla::Constants; - -# Checking functions for the various values -# Some generic checking functions are included in Bugzilla::Config - -sub check_sslbase { - my $url = shift; - if ($url ne '') { - if ($url !~ m#^https://([^/]+).*/$#) { - return "must be a legal URL, that starts with https and ends with a slash."; - } - my $host = $1; - if ($host =~ /:\d+$/) { - return "must not contain a port."; - } - local *SOCK; - my $proto = getprotobyname('tcp'); - socket(SOCK, PF_INET, SOCK_STREAM, $proto); - my $sin = sockaddr_in(443, inet_aton($host)); - if (!connect(SOCK, $sin)) { - return "Failed to connect to " . html_quote($host) . - ":443, unable to enable SSL."; - } - } - return ""; -} - -sub check_priority { - my ($value) = (@_); - &::GetVersionTable(); - if (lsearch(\@::legal_priority, $value) < 0) { - return "Must be a legal priority value: one of " . - join(", ", @::legal_priority); - } - return ""; -} - -sub check_severity { - my ($value) = (@_); - &::GetVersionTable(); - if (lsearch(\@::legal_severity, $value) < 0) { - return "Must be a legal severity value: one of " . - join(", ", @::legal_severity); - } - return ""; -} - -sub check_platform { - my ($value) = (@_); - &::GetVersionTable(); - if (lsearch(['', @::legal_platform], $value) < 0) { - return "Must be empty or a legal platform value: one of " . - join(", ", @::legal_platform); - } - return ""; -} - -sub check_opsys { - my ($value) = (@_); - &::GetVersionTable(); - if (lsearch(['', @::legal_opsys], $value) < 0) { - return "Must be empty or a legal operating system value: one of " . - join(", ", @::legal_opsys); - } - return ""; -} - -sub check_shadowdb { - my ($value) = (@_); - $value = trim($value); - if ($value eq "") { - return ""; - } - - if (!Param('shadowdbhost')) { - return "You need to specify a host when using a shadow database"; - } - - # Can't test existence of this because ConnectToDatabase uses the param, - # but we can't set this before testing.... - # This can really only be fixed after we can use the DBI more openly - return ""; -} - -sub check_urlbase { - my ($url) = (@_); - if ($url && $url !~ m:^http.*/$:) { - return "must be a legal URL, that starts with http and ends with a slash."; - } - return ""; -} - -sub check_webdotbase { - my ($value) = (@_); - $value = trim($value); - if ($value eq "") { - return ""; - } - if($value !~ /^https?:/) { - if(! -x $value) { - return "The file path \"$value\" is not a valid executable. Please specify the complete file path to 'dot' if you intend to generate graphs locally."; - } - # Check .htaccess allows access to generated images - if(-e "$webdotdir/.htaccess") { - open HTACCESS, "$webdotdir/.htaccess"; - if(! grep(/ \\\.png\$/,<HTACCESS>)) { - return "Dependency graph images are not accessible.\nAssuming that you have not modified the file, delete $webdotdir/.htaccess and re-run checksetup.pl to rectify.\n"; - } - close HTACCESS; - } - } - return ""; -} - -sub check_netmask { - my ($mask) = @_; - my $res = check_numeric($mask); - return $res if $res; - if ($mask < 0 || $mask > 32) { - return "an IPv4 netmask must be between 0 and 32 bits"; - } - # Note that if we changed the netmask from anything apart from 32, then - # existing logincookies which aren't for a single IP won't work - # any more. We can't know which ones they are, though, so they'll just - # take space until they're preiodically cleared, later. - - return ""; -} - -sub check_user_verify_class { - # doeditparams traverses the list of params, and for each one it checks, - # then updates. This means that if one param checker wants to look at - # other params, it must be below that other one. So you can't have two - # params mutually dependent on each other. - # This means that if someone clears the LDAP config params after setting - # the login method as LDAP, we won't notice, but all logins will fail. - # So don't do that. - - my ($list, $entry) = @_; - for my $class (split /,\s*/, $list) { - my $res = check_multi($class, $entry); - return $res if $res; - if ($class eq 'DB') { - # No params - } elsif ($class eq 'LDAP') { - eval "require Net::LDAP"; - return "Error requiring Net::LDAP: '$@'" if $@; - return "LDAP servername is missing" unless Param("LDAPserver"); - return "LDAPBaseDN is empty" unless Param("LDAPBaseDN"); - } else { - return "Unknown user_verify_class '$class' in check_user_verify_class"; - } - } - return ""; -} - -sub check_languages { - my @languages = split /[,\s]+/, trim($_[0]); - if(!scalar(@languages)) { - return "You need to specify a language tag." - } - foreach my $language (@languages) { - if( ! -d "$templatedir/$language/custom" - && ! -d "$templatedir/$language/default") { - return "The template directory for $language does not exist"; - } - } - return ""; -} - -sub find_languages { - my @languages = (); - opendir(DIR, $templatedir) || return "Can't open 'template' directory: $!"; - foreach my $dir (readdir(DIR)) { - next unless $dir =~ /^([a-z-]+)$/i; - my $lang = $1; - next if($lang =~ /^CVS$/i); - my $deft_path = File::Spec->catdir('template', $lang, 'default'); - my $cust_path = File::Spec->catdir('template', $lang, 'custom'); - push(@languages, $lang) if(-d $deft_path or -d $cust_path); - } - closedir DIR; - return join(', ', @languages); -} - -sub check_mail_delivery_method { - my $check = check_multi(@_); - return $check if $check; - my $mailer = shift; - if ($mailer eq 'sendmail' && $^O =~ /MSWin32/i) { - # look for sendmail.exe - return "Failed to locate " . SENDMAIL_EXE - unless -e SENDMAIL_EXE; - } - return ""; -} - -# OK, here are the parameter definitions themselves. -# -# Each definition is a hash with keys: -# -# name - name of the param -# desc - description of the param (for editparams.cgi) -# type - see below -# choices - (optional) see below -# default - default value for the param -# checker - (optional) checking function for validating parameter entry -# It is called with the value of the param as the first arg and a -# reference to the param's hash as the second argument -# -# The type value can be one of the following: -# -# t -- A short text entry field (suitable for a single line) -# l -- A long text field (suitable for many lines) -# b -- A boolean value (either 1 or 0) -# m -- A list of values, with many selectable (shows up as a select box) -# To specify the list of values, make the 'choices' key be an array -# reference of the valid choices. The 'default' key should be an array -# reference for the list of selected values (which must appear in the -# first anonymous array), i.e.: -# { -# name => 'multiselect', -# desc => 'A list of options, choose many', -# type => 'm', -# choices => [ 'a', 'b', 'c', 'd' ], -# default => [ 'a', 'd' ], -# checker => \&check_multi -# } -# -# Here, 'a' and 'd' are the default options, and the user may pick any -# combination of a, b, c, and d as valid options. -# -# &check_multi should always be used as the param verification function -# for list (single and multiple) parameter types. -# -# s -- A list of values, with one selectable (shows up as a select box) -# To specify the list of values, make the 'choices' key be an array -# reference of the valid choices. The 'default' key should be one of -# those values, i.e.: -# { -# name => 'singleselect', -# desc => 'A list of options, choose one', -# type => 's', -# choices => [ 'a', 'b', 'c' ], -# default => 'b', -# checker => \&check_multi -# } -# -# Here, 'b' is the default option, and 'a' and 'c' are other possible -# options, but only one at a time! -# -# &check_multi should always be used as the param verification function -# for list (single and multiple) parameter types. - -# XXXX - would be nice for doeditparams to 'know' about types s and m, and call -# check_multi without it having to be explicitly specified here - bbaetz - -@param_list = ( - { - name => 'maintainer', - desc => 'The email address of the person who maintains this installation ' . - 'of Bugzilla.', - type => 't', - default => 'THE MAINTAINER HAS NOT YET BEEN SET' - }, - - { - name => 'urlbase', - desc => 'The URL that is the common initial leading part of all Bugzilla ' . - 'URLs.', - type => 't', - default => '', - checker => \&check_urlbase - }, - - { - name => 'sslbase', - desc => 'The URL that is the common initial leading part of all HTTPS ' . - '(SSL) Bugzilla URLs.', - type => 't', - default => '', - checker => \&check_sslbase - }, - - { - name => 'ssl', - desc => 'Controls when Bugzilla should enforce sessions to use HTTPS by ' . - 'using <tt>sslbase</tt>.', - type => 's', - choices => ['never', 'authenticated sessions', 'always'], - default => 'never' - }, - - { - name => 'languages' , - desc => 'A comma-separated list of RFC 1766 language tags. These ' . - 'identify the languages in which you wish Bugzilla output ' . - 'to be displayed. Note that you must install the appropriate ' . - 'language pack before adding a language to this Param. The ' . - 'language used is the one in this list with the highest ' . - 'q-value in the user\'s Accept-Language header.<br>' . - 'Available languages: ' . find_languages() , - type => 't' , - default => 'en' , - checker => \&check_languages - }, - - { - name => 'defaultlanguage', - desc => 'The UI language Bugzilla falls back on if no suitable ' . - 'language is found in the user\'s Accept-Language header.' , - type => 't' , - default => 'en' , - checker => \&check_languages - }, - - { - name => 'cookiedomain', - desc => 'The domain for Bugzilla cookies. Normally blank. ' . - 'If your website is at "www.foo.com", setting this to ' . - '".foo.com" will also allow bar.foo.com to access ' . - 'Bugzilla cookies. This is useful if you have more than ' . - 'one hostname pointing at the same web server, and you ' . - 'want them to share the Bugzilla cookie.', - type => 't', - default => '' - }, - { - name => 'cookiepath', - desc => 'Path, relative to your web document root, to which to restrict ' . - 'Bugzilla cookies. Normally this is the URI portion of your URL ' . - 'base. Begin with a / (single slash mark). For instance, if ' . - 'Bugzilla serves from http://www.somedomain.com/bugzilla/, set ' . - 'this parameter to /bugzilla/ . Setting it to / will allow ' . - 'all sites served by this web server or virtual host to read ' . - 'Bugzilla cookies.', - type => 't', - default => '/' - }, - - { - name => 'timezone', - desc => 'The timezone that your database server lives in. If set to "", ' . - 'then the timezone won\'t be displayed with the timestamps.', - type => 't', - default => '', - }, - - { - name => 'quip_list_entry_control', - desc => 'Controls how easily users can add entries to the quip list.' . - '<ul><li>open - Users may freely add to the quip list, and ' . - 'their entries will immediately be available for viewing.</li>' . - '<li>moderated - quips can be entered, but need to be approved ' . - 'by an admin before they will be shown</li><li>closed - no new ' . - 'additions to the quips list are allowed.</li></ul>', - type => 's', - choices => ['open', 'moderated', 'closed'], - default => 'open', - checker => \&check_multi - }, - - { - name => 'useclassification', - desc => 'If this is on, Bugzilla will associate each product with a ' . - 'specific classification. But you must have "editclassification" ' . - 'permissions enabled in order to edit classifications', - type => 'b', - default => 0 - }, - - { - name => 'showallproducts', - desc => 'If this is on and useclassification is set, Bugzilla will add a' . - '"All" link in the "New Bug" page to list all available products', - type => 'b', - default => 0 - }, - - { - name => 'makeproductgroups', - desc => 'If this is on, Bugzilla will associate a bug group with each ' . - 'product in the database, and use it for querying bugs.', - type => 'b', - default => 0 - }, - - { - name => 'useentrygroupdefault', - desc => 'If this is on, Bugzilla will use product bug groups by default ' . - 'to restrict who can enter bugs. If this is on, users can see ' . - 'any product to which they have entry access in search menus. ' . - 'If this is off, users can see any product to which they have not ' . - 'been excluded by a mandatory restriction.', - type => 'b', - default => 0 - }, - - { - name => 'shadowdbhost', - desc => 'The host the shadow database is on.', - type => 't', - default => '', - }, - - { - name => 'shadowdbport', - desc => 'The port the shadow database is on. Ignored if ' . - '<tt>shadowdbhost</tt> is blank. Note: if the host is the local ' . - 'machine, then MySQL will ignore this setting, and you must ' . - 'specify a socket below.', - type => 't', - default => '3306', - checker => \&check_numeric, - }, - - { - name => 'shadowdbsock', - desc => 'The socket used to connect to the shadow database, if the host ' . - 'is the local machine. This setting is required because MySQL ' . - 'ignores the port specified by the client and connects using ' . - 'its compiled-in socket path (on unix machines) when connecting ' . - 'from a client to a local server. If you leave this blank, and ' . - 'have the database on localhost, then the <tt>shadowdbport</tt> ' . - 'will be ignored.', - type => 't', - default => '', - }, - - # This entry must be _after_ the shadowdb{host,port,sock} settings so that - # they can be used in the validation here - { - name => 'shadowdb', - desc => 'If non-empty, then this is the name of another database in ' . - 'which Bugzilla will use as a read-only copy of everything. ' . - 'This is done so that long slow read-only operations can be used ' . - 'against this db, and not lock up things for everyone else. This ' . - 'database is on the <tt>shadowdbhost</tt>, and must exist. ' . - 'Bugzilla does not update it, if you use this parameter, then ' . - 'you need to set up replication for your database', - type => 't', - default => '', - checker => \&check_shadowdb - }, - - { - name => 'LDAPserver', - desc => 'The name (and optionally port) of your LDAP server. (e.g. ' . - 'ldap.company.com, or ldap.company.com:portnum)', - type => 't', - default => '' - }, - - { - name => 'LDAPbinddn', - desc => 'If your LDAP server requires that you use a binddn and password ' . - 'instead of binding anonymously, enter it here ' . - '(e.g. cn=default,cn=user:password). ' . - 'Leave this empty for the normal case of an anonymous bind.', - type => 't', - default => '' - }, - - { - name => 'LDAPBaseDN', - desc => 'The BaseDN for authenticating users against. (e.g. ' . - '"ou=People,o=Company")', - type => 't', - default => '' - }, - - { - name => 'LDAPuidattribute', - desc => 'The name of the attribute containing the user\'s login name.', - type => 't', - default => 'uid' - }, - - { - name => 'LDAPmailattribute', - desc => 'The name of the attribute of a user in your directory that ' . - 'contains the email address.', - type => 't', - default => 'mail' - }, - - { - name => 'LDAPfilter', - desc => 'LDAP filter to AND with the <tt>LDAPuidattribute</tt> for ' . - 'filtering the list of valid users.', - type => 't', - default => '', - }, - - { - name => 'auth_env_id', - desc => 'Environment variable used by external authentication system ' . - 'to store a unique identifier for each user. Leave it blank ' . - 'if there isn\'t one or if this method of authentication ' . - 'is not being used.', - type => 't', - default => '', - }, - - { - name => 'auth_env_email', - desc => 'Environment variable used by external authentication system ' . - 'to store each user\'s email address. This is a required ' . - 'field for environmental authentication. Leave it blank ' . - 'if you are not going to use this feature.', - type => 't', - default => '', - }, - - { - name => 'auth_env_realname', - desc => 'Environment variable used by external authentication system ' . - 'to store the user\'s real name. Leave it blank if there ' . - 'isn\'t one or if this method of authentication is not being ' . - 'used.', - type => 't', - default => '', - }, - - # XXX in the future: - # - # user_verify_class and user_info_class should have choices gathered from - # whatever sits in their respective directories - # - # rather than comma-separated lists, these two should eventually become - # arrays, but that requires alterations to editparams first - - { - name => 'user_info_class', - desc => 'Mechanism(s) to be used for gathering a user\'s login information. - <add> - More than one may be selected. If the first one returns nothing, - the second is tried, and so on.<br /> - The types are: - <dl> - <dt>CGI</dt> - <dd> - Asks for username and password via CGI form interface. - </dd> - <dt>Env</dt> - <dd> - Info for a pre-authenticated user is passed in system - environment variables. - </dd> - </dl>', - type => 's', - choices => [ 'CGI', 'Env', 'Env,CGI' ], - default => 'CGI', - checker => \&check_multi - }, - - { - name => 'user_verify_class', - desc => 'Mechanism(s) to be used for verifying (authenticating) information - gathered by user_info_class. - More than one may be selected. If the first one cannot find the - user, the second is tried, and so on.<br /> - The types are: - <dl> - <dt>DB</dt> - <dd> - Bugzilla\'s built-in authentication. This is the most common - choice. - </dd> - <dt>LDAP</dt> - <dd> - LDAP authentication using an LDAP server. This method is - experimental; please see the Bugzilla documentation for more - information. Using this method requires additional parameters - to be set above. - </dd> - </dl>', - type => 's', - choices => [ 'DB', 'LDAP', 'DB,LDAP', 'LDAP,DB' ], - default => 'DB', - checker => \&check_user_verify_class - }, - - { - name => 'rememberlogin', - desc => 'Controls management of session cookies - <ul> - <li>on - Session cookies never expire (the user has to login only - once per browser).</li> - <li>off - Session cookies last until the users session ends (the user - will have to login in each new browser session).</li> - <li>defaulton/defaultoff - Default behavior as described - above, but user can choose whether bugzilla will remember his - login or not.</li> - </ul>', - type => 's', - choices => ['on', 'defaulton', 'defaultoff', 'off'], - default => 'on', - checker => \&check_multi - }, - - { - name => 'mostfreqthreshold', - desc => 'The minimum number of duplicates a bug needs to show up on the ' . - '<a href="duplicates.cgi">most frequently reported bugs page</a>. ' . - 'If you have a large database and this page takes a long time to ' . - 'load, try increasing this number.', - type => 't', - default => '2', - checker => \&check_numeric - }, - - { - name => 'mybugstemplate', - desc => 'This is the URL to use to bring up a simple \'all of my bugs\' ' . - 'list for a user. %userid% will get replaced with the login ' . - 'name of a user.', - type => 't', - default => 'buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=%userid%&emailtype1=exact&emailassigned_to1=1&emailreporter1=1' - }, - - { - name => 'shutdownhtml', - desc => 'If this field is non-empty, then Bugzilla will be completely ' . - 'disabled and this text will be displayed instead of all the ' . - 'Bugzilla pages.', - type => 'l', - default => '' - }, - - { - name => 'mail_delivery_method', - desc => 'Defines how email is sent, or if it is sent at all.<br><ul>' . - '<li>\'sendmail\', \'smtp\' and \'qmail\' are all MTAs. ' . - 'You need to install a third-party sendmail replacement if ' . - 'you want to use sendmail on Windows.' . - '<li>\'testfile\' is useful for debugging: all email is stored' . - 'in data/mailer.testfile instead of being sent. For more ' . - 'information, see the Mail::Mailer manual.</li>' . - '<li>\'none\' will completely disable email. Bugzilla continues ' . - 'to act as though it is sending mail, but nothing is sent or ' . - 'stored.</li></ul>' , - type => 's', - choices => $^O =~ /MSWin32/i - ? ['smtp', 'testfile', 'sendmail', 'none'] - : ['sendmail', 'smtp', 'qmail', 'testfile', 'none'], - default => 'sendmail', - checker => \&check_mail_delivery_method - }, - - { - name => 'sendmailnow', - desc => 'Sites using anything older than version 8.12 of \'sendmail\' ' . - 'can achieve a significant performance increase in the ' . - 'UI -- at the cost of delaying the sending of mail -- by ' . - 'disabling this parameter. Sites using \'sendmail\' 8.12 or ' . - 'higher should leave this on, as they will see no benefit from ' . - 'turning it off. Sites using an MTA other than \'sendmail\' ' . - '*must* leave it on, or no bug mail will be sent.', - type => 'b', - default => 1 - }, - - { - name => 'smtpserver', - desc => 'The SMTP server address (if using SMTP for mail delivery).', - type => 't', - default => 'localhost' - }, - - { - name => 'passwordmail', - desc => 'The email that gets sent to people to tell them their password.' . - 'Within this text, %mailaddress% gets replaced by the person\'s ' . - 'email address, %login% gets replaced by the person\'s login ' . - '(usually the same thing), and %password% gets replaced by their ' . - 'password. %<i>anythingelse</i>% gets replaced by the ' . - 'definition of that parameter (as defined on this page).', - type => 'l', - default => 'From: bugzilla-daemon -To: %mailaddress% -Subject: Your Bugzilla password. - -To use the wonders of Bugzilla, you can use the following: - - E-mail address: %login% - Password: %password% - - To change your password, go to: - %urlbase%userprefs.cgi -' - }, - - { - name => 'newchangedmail', - desc => 'The email that gets sent to people when a bug changes. Within ' . - 'this text, %to% gets replaced with the e-mail address of the ' . - 'person receiving the mail. %bugid% gets replaced by the bug ' . - 'number. %diffs% gets replaced with what\'s changed. ' . - '%neworchanged% is "New:" if this mail is reporting a new bug or ' . - 'empty if changes were made to an existing one. %summary% gets ' . - 'replaced by the summary of this bug. %reasonsheader% is ' . - 'replaced by an abbreviated list of reasons why the user is ' . - 'getting the email, suitable for use in an email header (such ' . - 'as X-Bugzilla-Reason). %reasonsbody% is replaced by text that ' . - 'explains why the user is getting the email in more user ' . - 'friendly text than %reasonsheader%. ' . - '%threadingmarker% will become either a Message-ID line (for ' . - 'new-bug messages) or a In-Reply-To line (for bug-change ' . - 'messages). ' . - '%<i>anythingelse</i>% gets ' . - 'replaced by the definition of that parameter (as defined on ' . - 'this page).', - type => 'l', - default => 'From: bugzilla-daemon -To: %to% -Subject: [Bug %bugid%] %neworchanged%%summary% -%threadingmarker% -X-Bugzilla-Reason: %reasonsheader% -X-Bugzilla-Product: %product% -X-Bugzilla-Component: %component% - -%urlbase%show_bug.cgi?id=%bugid% - -%diffs% - ---%space% -Configure bugmail: %urlbase%userprefs.cgi?tab=email -%reasonsbody%' - }, - - { - name => 'whinedays', - desc => q{The number of days that we'll let a bug sit untouched in a NEW - state before our cronjob will whine at the owner.<br> - Set to 0 to disable whining.}, - type => 't', - default => 7, - checker => \&check_numeric - }, - - { - name => 'whinemail', - desc => 'The email that gets sent to anyone who has a NEW or REOPENED ' . - 'bug that hasn\'t been touched for more than <b>whinedays</b>. ' . - 'Within this text, %email% gets replaced by the offender\'s ' . - 'email address. %userid% gets replaced by the offender\'s ' . - 'bugzilla login (which, in most installations, is the same as ' . - 'the email address.) %<i>anythingelse</i>% gets replaced by the ' . - 'definition of that parameter (as defined on this page).<p> It ' . - 'is a good idea to make sure this message has a valid From: ' . - 'address, so that if the mail bounces, a real person can know '. - 'that there are bugs assigned to an invalid address.', - type => 'l', - default => 'From: %maintainer% -To: %email% -Subject: Your Bugzilla buglist needs attention. - -[This e-mail has been automatically generated.] - -You have one or more bugs assigned to you in the Bugzilla -bugsystem (%urlbase%) that require -attention. - -All of these bugs are in the NEW or REOPENED state, and have not -been touched in %whinedays% days or more. You need to take a look -at them, and decide on an initial action. - -Generally, this means one of three things: - -(1) You decide this bug is really quick to deal with (like, it\'s INVALID), - and so you get rid of it immediately. -(2) You decide the bug doesn\'t belong to you, and you reassign it to someone - else. (Hint: if you don\'t know who to reassign it to, make sure that - the Component field seems reasonable, and then use the "Reassign bug to - default assignee of selected component" option.) -(3) You decide the bug belongs to you, but you can\'t solve it this moment. - Just use the "Accept bug" command. - -To get a list of all NEW/REOPENED bugs, you can use this URL (bookmark -it if you like!): - - %urlbase%buglist.cgi?bug_status=NEW&bug_status=REOPENED&assigned_to=%userid% - -Or, you can use the general query page, at -%urlbase%query.cgi - -Appended below are the individual URLs to get to all of your NEW bugs that -haven\'t been touched for a week or more. - -You will get this message once a day until you\'ve dealt with these bugs! - -' - }, - - { - name => 'defaultquery', - desc => 'This is the default query that initially comes up when you ' . - 'access the advanced query page. It\'s in URL parameter ' . - 'format, which makes it hard to read. Sorry!', - type => 't', - default => 'bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailqa_contact2=1&order=Importance&long_desc_type=substring' - }, - - { - name => 'letsubmitterchoosepriority', - desc => 'If this is on, then people submitting bugs can choose an ' . - 'initial priority for that bug. If off, then all bugs initially ' . - 'have the default priority selected below.', - type => 'b', - default => 1 - }, - - { - name => 'defaultpriority', - desc => 'This is the priority that newly entered bugs are set to.', - type => 't', - default => 'P2', - checker => \&check_priority - }, - - { - name => 'defaultseverity', - desc => 'This is the severity that newly entered bugs are set to.', - type => 't', - default => 'normal', - checker => \&check_severity - }, - - { - name => 'defaultplatform', - desc => 'This is the platform that is preselected on the bug '. - 'entry form.<br>'. - 'You can leave this empty: '. - 'Bugzilla will then use the platform that the browser '. - 'reports to be running on as the default.', - type => 't', - default => '', - checker => \&check_platform - }, - - { - name => 'defaultopsys', - desc => 'This is the operating system that is preselected on the bug '. - 'entry form.<br>'. - 'You can leave this empty: '. - 'Bugzilla will then use the operating system that the browser '. - 'reports to be running on as the default.', - type => 't', - default => '', - checker => \&check_opsys - }, - - { - name => 'usetargetmilestone', - desc => 'Do you wish to use the Target Milestone field?', - type => 'b', - default => 0 - }, - - { - name => 'letsubmitterchoosemilestone', - desc => 'If this is on, then people submitting bugs can choose the ' . - 'Target Milestone for that bug. If off, then all bugs initially ' . - 'have the default milestone for the product being filed in.', - type => 'b', - default => 1 - }, - - { - name => 'musthavemilestoneonaccept', - desc => 'If you are using Target Milestone, do you want to require that ' . - 'the milestone be set in order for a user to ACCEPT a bug?', - type => 'b', - default => 0 - }, - - { - name => 'useqacontact', - desc => 'Do you wish to use the QA Contact field?', - type => 'b', - default => 0 - }, - - { - name => 'usestatuswhiteboard', - desc => 'Do you wish to use the Status Whiteboard field?', - type => 'b', - default => 0 - }, - - { - name => 'usevotes', - desc => 'Do you wish to allow users to vote for bugs? Note that in order ' . - 'for this to be effective, you will have to change the maximum ' . - 'votes allowed in a product to be non-zero in ' . - '<a href="editproducts.cgi">the product edit page</a>.', - type => 'b', - default => 1 - }, - - { - name => 'usebugaliases', - desc => 'Do you wish to use bug aliases, which allow you to assign bugs ' . - 'an easy-to-remember name by which you can refer to them?', - type => 'b', - default => 0 - }, - - { - name => 'usevisibilitygroups', - desc => 'Do you wish to restrict visibility of users to members of ' . - 'specific groups?', - type => 'b', - default => 0 - }, - - { - name => 'webdotbase', - desc => 'It is possible to show graphs of dependent bugs. You may set ' . - 'this parameter to any of the following: - <ul> - <li>A complete file path to \'dot\' (part of <a - href="http://www.graphviz.org">GraphViz</a>) will generate the graphs - locally.</li> - <li>A URL prefix pointing to an installation of the <a - href="http://www.research.att.com/~north/cgi-bin/webdot.cgi">webdot - package</a> will generate the graphs remotely.</li> - <li>A blank value will disable dependency graphing.</li> - </ul> - The default value is a publicly-accessible webdot server. If you change - this value, make certain that the webdot server can read files from your - webdot directory. On Apache you do this by editing the .htaccess file, - for other systems the needed measures may vary. You can run checksetup.pl - to recreate the .htaccess file if it has been lost.', - type => 't', - default => 'http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%', - checker => \&check_webdotbase - }, - - { - name => 'emailregexp', - desc => 'This defines the regexp to use for legal email addresses. The ' . - 'default tries to match fully qualified email addresses. Another ' . - 'popular value to put here is <tt>^[^@]+$</tt>, which means ' . - '"local usernames, no @ allowed."', - type => 't', - default => q:^[\\w\\.\\+\\-=]+@[\\w\\.\\-]+\\.[\\w\\-]+$:, - checker => \&check_regexp - }, - - { - name => 'emailregexpdesc', - desc => 'This describes in English words what kinds of legal addresses ' . - 'are allowed by the <tt>emailregexp</tt> param.', - type => 'l', - default => 'A legal address must contain exactly one \'@\', and at least ' . - 'one \'.\' after the @.' - }, - - { - name => 'emailsuffix', - desc => 'This is a string to append to any email addresses when actually ' . - 'sending mail to that address. It is useful if you have changed ' . - 'the <tt>emailregexp</tt> param to only allow local usernames, ' . - 'but you want the mail to be delivered to username@my.local.hostname.', - type => 't', - default => '' - }, - - { - name => 'createemailregexp', - desc => 'This defines the regexp to use for email addresses that are ' . - 'permitted to self-register using a "New Account" feature. The ' . - 'default (.*) permits any account matching the emailregexp ' . - 'to be created. If this parameter is left blank, no users ' . - 'will be permitted to create their own accounts and all accounts ' . - 'will have to be created by an administrator', - type => 't', - default => q:.*:, - checker => \&check_regexp - }, - - { - name => 'voteremovedmail', - desc => 'This is a mail message to send to anyone who gets a vote removed ' . - 'from a bug for any reason. %to% gets replaced by the person who ' . - 'used to be voting for this bug. %bugid% gets replaced by the ' . - 'bug number. %reason% gets replaced by a short reason describing ' . - 'why the vote(s) were removed. %votesremoved%, %votesold% and ' . - '%votesnew% is the number of votes removed, before and after ' . - 'respectively. %votesremovedtext%, %votesoldtext% and ' . - '%votesnewtext% are these as sentences, e.g. "You had 2 votes on ' . - 'this bug." %count% is also supported for backwards ' . - 'compatibility. %<i>anythingelse</i>% gets replaced by the ' . - 'definition of that parameter (as defined on this page).', - type => 'l', - default => 'From: bugzilla-daemon -To: %to% -Subject: [Bug %bugid%] Some or all of your votes have been removed. - -Some or all of your votes have been removed from bug %bugid%. - -%votesoldtext% - -%votesnewtext% - -Reason: %reason% - -%urlbase%show_bug.cgi?id=%bugid% -' - }, - - { - name => 'allowbugdeletion', - desc => 'The pages to edit products and components and versions can delete ' . - 'all associated bugs when you delete a product (or component or ' . - 'version). Since that is a pretty scary idea, you have to turn on ' . - 'this option before any such deletions will ever happen.', - type => 'b', - default => 0 - }, - - { - name => 'allowemailchange', - desc => 'Users can change their own email address through the preferences. ' . - 'Note that the change is validated by emailing both addresses, so ' . - 'switching this option on will not let users use an invalid address.', - type => 'b', - default => 0 - }, - - { - name => 'allowuserdeletion', - desc => q{The user editing pages are capable of letting you delete user - accounts. - Bugzilla will issue a warning in case you'd run into - inconsistencies when you're about to do so, - but such deletions remain kinda scary. - So, you have to turn on this option before any such deletions - will ever happen.}, - type => 'b', - default => 0 - }, - - { - name => 'browserbugmessage', - desc => 'If bugzilla gets unexpected data from the browser, in addition to ' . - 'displaying the cause of the problem, it will output this HTML as ' . - 'well.', - type => 'l', - default => 'this may indicate a bug in your browser.' - }, - - { - name => 'commentoncreate', - desc => 'If this option is on, the user needs to enter a description ' . - 'when entering a new bug', - type => 'b', - default => 0 - }, - - { - name => 'commentonaccept', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'he accepts the bug', - type => 'b', - default => 0 - }, - - { - name => 'commentonclearresolution', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug\'s resolution is cleared', - type => 'b', - default => 0 - }, - - { - name => 'commentonconfirm', - desc => 'If this option is on, the user needs to enter a short comment ' . - 'when confirming a bug', - type => 'b', - default => 0 - }, - - { - name => 'commentonresolve', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug is resolved', - type => 'b', - default => 0 - }, - - { - name => 'commentonreassign', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug is reassigned', - type => 'b', - default => 0 - }, - - { - name => 'commentonreassignbycomponent', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug is reassigned by component', - type => 'b', - default => 0 - }, - { - name => 'commentonreopen', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug is reopened', - type => 'b', - default => 0 - }, - - { - name => 'commentonverify', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug is verified', - type => 'b', - default => 0 - }, - - { - name => 'commentonclose', - desc => 'If this option is on, the user needs to enter a short comment if ' . - 'the bug is closed', - type => 'b', - default => 0 - }, - - { - name => 'commentonduplicate', - desc => 'If this option is on, the user needs to enter a short comment ' . - 'if the bug is marked as duplicate', - type => 'b', - default => 0 - }, - - { - name => 'supportwatchers', - desc => 'Support one user watching (ie getting copies of all related ' . - 'email about) another\'s bugs. Useful for people going on ' . - 'vacation, and QA folks watching particular developers\' bugs', - type => 'b', - default => 0 - }, - - { - name => 'move-enabled', - desc => 'If this is on, Bugzilla will allow certain people to move bugs ' . - 'to the defined database.', - type => 'b', - default => 0 - }, - - { - name => 'move-button-text', - desc => 'The text written on the Move button. Explain where the bug is ' . - 'being moved to.', - type => 't', - default => 'Move To Bugscape' - }, - - { - name => 'move-to-url', - desc => 'The URL of the database we allow some of our bugs to be moved to.', - type => 't', - default => '' - }, - - { - name => 'move-to-address', - desc => 'To move bugs, an email is sent to the target database. This is ' . - 'the email address that database uses to listen for incoming bugs.', - type => 't', - default => 'bugzilla-import' - }, - - { - name => 'moved-from-address', - desc => 'To move bugs, an email is sent to the target database. This is ' . - 'the email address from which this mail, and error messages are ' . - 'sent.', - type => 't', - default => 'bugzilla-admin' - }, - - { - name => 'movers', - desc => 'A list of people with permission to move bugs and reopen moved ' . - 'bugs (in case the move operation fails).', - type => 't', - default => '' - }, - - { - name => 'moved-default-product', - desc => 'Bugs moved from other databases to here are assigned to this ' . - 'product.', - type => 't', - default => '' - }, - - { - name => 'moved-default-component', - desc => 'Bugs moved from other databases to here are assigned to this ' . - 'component.', - type => 't', - default => '' - }, - - # The maximum size (in bytes) for patches and non-patch attachments. - # The default limit is 1000KB, which is 24KB less than mysql's default - # maximum packet size (which determines how much data can be sent in a - # single mysql packet and thus how much data can be inserted into the - # database) to provide breathing space for the data in other fields of - # the attachment record as well as any mysql packet overhead (I don't - # know of any, but I suspect there may be some.) - - { - name => 'maxpatchsize', - desc => 'The maximum size (in kilobytes) of patches. Bugzilla will not ' . - 'accept patches greater than this number of kilobytes in size.' . - 'To accept patches of any size (subject to the limitations of ' . - 'your server software), set this value to zero.', - type => 't', - default => '1000', - checker => \&check_numeric - }, - - { - name => 'maxattachmentsize', - desc => 'The maximum size (in kilobytes) of non-patch attachments. ' . - 'Bugzilla will not accept attachments greater than this number' . - 'of kilobytes in size. To accept attachments of any size ' . - '(subject to the limitations of your server software), set this ' . - 'value to zero.', - type => 't', - default => '1000', - checker => \&check_numeric - }, - - { - name => 'maxlocalattachment', - desc => 'The maximum size (in Megabytes) of attachments identified by ' . - 'the user as "Big Files" to be stored locally on the webserver. ' . - 'If set to zero, attachments will never be kept on the local ' . - 'filesystem.', - type => 't', - default => '0', - checker => \&check_numeric - }, - - { - name => 'chartgroup', - desc => 'The name of the group of users who can use the "New Charts" ' . - 'feature. Administrators should ensure that the public categories ' . - 'and series definitions do not divulge confidential information ' . - 'before enabling this for an untrusted population. If left blank, ' . - 'no users will be able to use New Charts.', - type => 't', - default => 'editbugs' - }, - - { - name => 'insidergroup', - desc => 'The name of the group of users who can see/change private ' . - 'comments and attachments.', - type => 't', - default => '' - }, - - { - name => 'timetrackinggroup', - desc => 'The name of the group of users who can see/change time tracking ' . - 'information.', - type => 't', - default => '' - }, - - { - name => 'loginnetmask', - desc => 'The number of bits for the netmask used if a user chooses to ' . - 'allow a login to be valid for more than a single IP. Setting ' . - 'this to 32 disables this feature.<br>' . - 'Note that enabling this may decrease the security of your system.', - type => 't', - default => '32', - checker => \&check_netmask - }, - - { - name => 'requirelogin', - desc => 'If this option is set, all access to the system beyond the ' . - ' front page will require a login. No anonymous users will ' . - ' be permitted.', - type => 'b', - default => '0' - }, - - { - name => 'usemenuforusers', - desc => 'If this option is set, Bugzilla will offer you a list' . - ' to select from (instead of a text entry field) where a user' . - ' needs to be selected. This option should not be enabled on' . - ' sites where there are a large number of users.', - type => 'b', - default => '0' - }, - - { - name => 'usermatchmode', - desc => 'Allow match strings to be entered for user names when entering ' . - 'and editing bugs. <p>' . - '"off" disables matching,<br> ' . - '"wildcard" allows only wildcards,<br> ' . - 'and "search" allows both wildcards and substring (freetext) ' . - 'matches.', - type => 's', - choices => ['off', 'wildcard', 'search'], - default => 'off' - }, - - { - name => 'maxusermatches', - desc => 'Search for no more than this many matches. <br>'. - 'If set to "1", no users will be displayed on ambiguous matches. '. - 'This is useful for user privacy purposes. <br>'. - 'A value of zero means no limit.', - type => 't', - default => '1000', - checker => \&check_numeric - }, - - { - name => 'confirmuniqueusermatch', - desc => 'Whether a confirmation screen should be displayed when only ' . - 'one user matches a search entry', - type => 'b', - default => 1, - }, - -# Added for Patch Viewer stuff (attachment.cgi?action=diff) - { - name => 'cvsroot', - desc => 'The <a href="http://www.cvshome.org">CVS</a> root that most ' . - 'users of your system will be using for "cvs diff". Used in ' . - 'Patch Viewer ("Diff" option on patches) to figure out where ' . - 'patches are rooted even if users did the "cvs diff" from ' . - 'different places in the directory structure. (NOTE: if your ' . - 'CVS repository is remote and requires a password, you must ' . - 'either ensure the Bugzilla user has done a "cvs login" or ' . - 'specify the password ' . - '<a href="http://www.cvshome.org/docs/manual/cvs_2.html#SEC26">as ' . - 'part of the CVS root.</a>) Leave this blank if you have no ' . - 'CVS repository.', - type => 't', - default => '', - }, - - { - name => 'cvsroot_get', - desc => 'The CVS root Bugzilla will be using to get patches from. ' . - 'Some installations may want to mirror their CVS repository on ' . - 'the Bugzilla server or even have it on that same server, and ' . - 'thus the repository can be the local file system (and much ' . - 'faster). Make this the same as cvsroot if you don\'t ' . - 'understand what this is (if cvsroot is blank, make this blank ' . - 'too).', - type => 't', - default => '', - }, - - { - name => 'bonsai_url', - desc => 'The URL to a ' . - '<a href="http://www.mozilla.org/bonsai.html">Bonsai</a> ' . - 'server containing information about your CVS repository. ' . - 'Patch Viewer will use this information to create links to ' . - 'bonsai\'s blame for each section of a patch (it will append ' . - '"/cvsblame.cgi?..." to this url). Leave this blank if you ' . - 'don\'t understand what this is.', - type => 't', - default => '' - }, - - { - name => 'lxr_url', - desc => 'The URL to an ' . - '<a href="http://sourceforge.net/projects/lxr">LXR</a> server ' . - 'that indexes your CVS repository. Patch Viewer will use this ' . - 'information to create links to LXR for each file in a patch. ' . - 'Leave this blank if you don\'t understand what this is.', - type => 't', - default => '' - }, - - { - name => 'lxr_root', - desc => 'Some LXR installations do not index the CVS repository from ' . - 'the root--' . - '<a href="http://lxr.mozilla.org/mozilla">Mozilla\'s</a>, for ' . - 'example, starts indexing under <code>mozilla/</code>. This ' . - 'means URLs are relative to that extra path under the root. ' . - 'Enter this if you have a similar situation. Leave it blank ' . - 'if you don\'t know what this is.', - type => 't', - default => '', - }, - - { - name => 'noresolveonopenblockers', - desc => 'Don\'t allow bugs to be resolved as fixed if they have unresolved dependencies.', - type => 'b', - default => 0, - }, - -); -1; - diff --git a/describecomponents.cgi b/describecomponents.cgi index 8e1755498..1b1ccbfe0 100755 --- a/describecomponents.cgi +++ b/describecomponents.cgi @@ -26,20 +26,22 @@ use lib qw(.); use Bugzilla; use Bugzilla::Constants; -require "CGI.pl"; +require "globals.pl"; -use vars qw($vars @legal_product); +use vars qw(@legal_product); -Bugzilla->login(); +my $user = Bugzilla->login(); GetVersionTable(); my $cgi = Bugzilla->cgi; +my $dbh = Bugzilla->dbh; my $template = Bugzilla->template; +my $vars = {}; my $product = trim($cgi->param('product') || ''); my $product_id = get_product_id($product); -if (!$product_id || !CanEnterProduct($product)) { +if (!$product_id || !$user->can_enter_product($product)) { # Reference to a subset of %::proddesc, which the user is allowed to see my %products; @@ -47,7 +49,7 @@ if (!$product_id || !CanEnterProduct($product)) { # OK, now only add products the user can see Bugzilla->login(LOGIN_REQUIRED); foreach my $p (@::legal_product) { - if (CanEnterProduct($p)) { + if ($user->can_enter_product($p)) { $products{$p} = $::proddesc{$p}; } } @@ -86,12 +88,13 @@ if (!$product_id || !CanEnterProduct($product)) { ###################################################################### my @components; -SendSQL("SELECT name, initialowner, initialqacontact, description FROM " . - "components WHERE product_id = $product_id ORDER BY name"); -while (MoreSQLData()) { - my ($name, $initialowner, $initialqacontact, $description) = - FetchSQLData(); - +my $comps = $dbh->selectall_arrayref( + q{SELECT name, initialowner, initialqacontact, description + FROM components + WHERE product_id = ? + ORDER BY name}, undef, $product_id); +foreach my $comp (@$comps) { + my ($name, $initialowner, $initialqacontact, $description) = @$comp; my %component; $component{'name'} = $name; diff --git a/describekeywords.cgi b/describekeywords.cgi index e7b3b759b..2b21e712c 100755 --- a/describekeywords.cgi +++ b/describekeywords.cgi @@ -27,35 +27,26 @@ use lib "."; use Bugzilla; use Bugzilla::User; -require "CGI.pl"; - -# Use the global template variables. -use vars qw($vars $template); +require "globals.pl"; Bugzilla->login(); my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; - -SendSQL("SELECT keyworddefs.name, keyworddefs.description, - COUNT(keywords.bug_id) - FROM keyworddefs LEFT JOIN keywords - ON keyworddefs.id = keywords.keywordid " . +my $template = Bugzilla->template; +my $vars = {}; + +my $keywords = $dbh->selectall_arrayref( + q{SELECT keyworddefs.name, keyworddefs.description, + COUNT(keywords.bug_id) AS bugcount + FROM keyworddefs + LEFT JOIN keywords + ON keyworddefs.id = keywords.keywordid } . $dbh->sql_group_by('keyworddefs.id', - 'keyworddefs.name, keyworddefs.description') . " - ORDER BY keyworddefs.name"); - -my @keywords; - -while (MoreSQLData()) { - my ($name, $description, $bugs) = FetchSQLData(); - - push (@keywords, { name => $name, - description => $description, - bugcount => $bugs }); -} - -$vars->{'keywords'} = \@keywords; + 'keyworddefs.name, keyworddefs.description') . + " ORDER BY keyworddefs.name", {'Slice' => {}}); + +$vars->{'keywords'} = $keywords; $vars->{'caneditkeywords'} = UserInGroup("editkeywords"); print Bugzilla->cgi->header(); diff --git a/docs/CVS/Entries b/docs/CVS/Entries index 10a1d6e97..06345e8cc 100644 --- a/docs/CVS/Entries +++ b/docs/CVS/Entries @@ -1,6 +1,6 @@ -/.cvsignore/1.2/Wed Mar 17 05:15:41 2004//TBUGZILLA-2_20_2 -/README.docs/1.10/Sun May 30 21:46:07 2004//TBUGZILLA-2_20_2 -/makedocs.pl/1.7/Thu Feb 5 04:49:08 2004//TBUGZILLA-2_20_2 -/rel_notes.txt/1.32.2.5/Fri Apr 21 21:32:26 2006//TBUGZILLA-2_20_2 +/.cvsignore/1.2/Wed Mar 17 05:15:41 2004//TBUGZILLA-2_22 +/README.docs/1.10/Sun May 30 21:46:07 2004//TBUGZILLA-2_22 +/makedocs.pl/1.10/Sat Aug 13 12:27:04 2005//TBUGZILLA-2_22 +/rel_notes.txt/1.36.2.2/Fri Apr 21 21:44:07 2006//TBUGZILLA-2_22 D/images//// D/xml//// diff --git a/docs/CVS/Tag b/docs/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/docs/CVS/Tag +++ b/docs/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/docs/html/Bugzilla-Guide.html b/docs/html/Bugzilla-Guide.html index f11da7a25..d324c6fd8 100644 --- a/docs/html/Bugzilla-Guide.html +++ b/docs/html/Bugzilla-Guide.html @@ -2,7 +2,7 @@ <HTML ><HEAD ><TITLE ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TITLE ><META NAME="GENERATOR" @@ -43,7 +43,7 @@ CLASS="TITLEPAGE" CLASS="title" ><A NAME="AEN2" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</A ></H1 ><H3 @@ -608,11 +608,6 @@ HREF="#security-mysql-network-ex" >Disabling Networking in MySQL</A ></DT ><DT ->4-4. <A -HREF="#security-bugzilla-charset-ex" ->Forcing Bugzilla to output a charset</A -></DT -><DT >B-1. <A HREF="#trbl-relogin-everyone-share" >Examples of urlbase/cookiepath pairs for sharing login cookies</A @@ -709,7 +704,7 @@ NAME="newversions" >1.3. New Versions</A ></H2 ><P -> This is the 2.20.2 version of The Bugzilla Guide. It is so named +> This is the 2.22 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. </P ><P @@ -1473,7 +1468,7 @@ HREF="http://www.mysql.com" TARGET="_top" >http://www.mysql.com</A >. You need MySQL version - 3.23.41 or higher. + 4.0.14 or higher. </P ><DIV CLASS="note" @@ -1916,7 +1911,17 @@ HREF="#install-modules-template" ></LI ><LI ><P -> Mail::Mailer (1.65) +> Mail::Mailer (1.67) + </P +></LI +><LI +><P +> MIME::Base64 (3.01) + </P +></LI +><LI +><P +> MIME::Parser (5.406) </P ></LI ><LI @@ -1988,11 +1993,7 @@ HREF="#install-modules-patchreader" ></LI ><LI ><P -> <A -HREF="#install-modules-mime-parser" ->MIME::Parser</A -> - (any) for the optional email interface +> Image::Magick (any) for converting BMP image attachments to PNG </P ></LI ></OL @@ -2190,31 +2191,14 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="install-modules-mime-parser" ->2.1.5.8. MIME::Parser (any)</A -></H4 -><P ->The MIME::Parser module is only required if you want to use the - email interface - located in the <TT -CLASS="filename" ->contrib</TT -> directory. - </P -></DIV -><DIV -CLASS="section" -><HR><H4 -CLASS="section" -><A NAME="install-modules-patchreader" ->2.1.5.9. PatchReader (0.9.4)</A +>2.1.5.8. PatchReader (0.9.4)</A ></H4 ><P ->The PatchReader module is only required if you want to use +>The PatchReader module is only required if you want to use Patch Viewer, a Bugzilla feature to show code patches in your web browser in a more - readable form. + readable form. </P ></DIV ></DIV @@ -2591,7 +2575,7 @@ CLASS="section" ><HR><H5 CLASS="section" ><A -NAME="AEN445" +NAME="AEN444" >2.2.2.1.2. Allow small words in full-text indexes</A ></H5 ><P @@ -2665,7 +2649,7 @@ CLASS="section" ><HR><H5 CLASS="section" ><A -NAME="AEN455" +NAME="AEN454" >2.2.2.1.3. Permit attachments table to grow beyond 4GB</A ></H5 ><P @@ -2912,7 +2896,7 @@ CLASS="section" ><HR><H5 CLASS="section" ><A -NAME="AEN496" +NAME="AEN495" >2.2.2.2.1. Add a User to PostgreSQL</A ></H5 ><P @@ -2993,7 +2977,7 @@ CLASS="section" ><HR><H5 CLASS="section" ><A -NAME="AEN512" +NAME="AEN511" >2.2.2.2.2. Configure PostgreSQL</A ></H5 ><P @@ -3007,7 +2991,7 @@ CLASS="filename" >. In this file, you will need to add a new line to it as follows:</P ><P -> <SAMP +> <SAMP CLASS="computeroutput" >host all bugs 127.0.0.1 255.255.255.255 md5</SAMP > @@ -3030,7 +3014,7 @@ CLASS="filename" > folder. You will need to make a single line change, changing</P ><P -> <SAMP +> <SAMP CLASS="computeroutput" ># tcpip_socket = false</SAMP > @@ -3038,11 +3022,11 @@ CLASS="computeroutput" ><P >to</P ><P -> <SAMP +> <SAMP CLASS="computeroutput" >tcpip_socket = true</SAMP > - </P + </P ><P >Now, you will need to restart PostgreSQL, but you will need to fully stop and start the server rather than just restarting due to the possibility @@ -3074,7 +3058,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN535" +NAME="AEN534" >2.2.3. checksetup.pl</A ></H3 ><P @@ -3619,7 +3603,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN634" +NAME="AEN633" >2.3.1. Bug Graphs</A ></H3 ><P @@ -3677,7 +3661,7 @@ CLASS="programlisting" </P ><P > When upgrading Bugzilla, this format may change. - To create new status data, (re)move old data and run the following + To create new status data, (re)move old data and run the following commands: </P ><TABLE @@ -3751,7 +3735,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN653" +NAME="AEN652" >2.3.2. Dependency Charts</A ></H3 ><P @@ -4964,7 +4948,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN872" +NAME="AEN871" >2.5.1. Introduction</A ></H3 ><P @@ -4984,7 +4968,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN876" +NAME="AEN875" >2.5.2. MySQL</A ></H3 ><P @@ -5040,7 +5024,7 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="AEN884" +NAME="AEN883" >2.5.2.1. Running MySQL as Non-Root</A ></H4 ><DIV @@ -5048,7 +5032,7 @@ CLASS="section" ><H5 CLASS="section" ><A -NAME="AEN886" +NAME="AEN885" >2.5.2.1.1. The Custom Configuration Method</A ></H5 ><P @@ -5092,7 +5076,7 @@ CLASS="section" ><HR><H5 CLASS="section" ><A -NAME="AEN890" +NAME="AEN889" >2.5.2.1.2. The Custom Built Method</A ></H5 ><P @@ -5115,7 +5099,7 @@ CLASS="section" ><HR><H5 CLASS="section" ><A -NAME="AEN895" +NAME="AEN894" >2.5.2.1.3. Starting the Server</A ></H5 ><P @@ -5243,7 +5227,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN911" +NAME="AEN910" >2.5.3. Perl</A ></H3 ><P @@ -5336,7 +5320,7 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="AEN930" +NAME="AEN929" >2.5.4.1. The Independant Method</A ></H4 ><P @@ -5408,7 +5392,7 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="AEN943" +NAME="AEN942" >2.5.4.2. The Mixed Method</A ></H4 ><P @@ -5613,7 +5597,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN976" +NAME="AEN975" >2.5.5. HTTP Server</A ></H3 ><P @@ -5627,7 +5611,7 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="AEN979" +NAME="AEN978" >2.5.5.1. Running Apache as Non-Root</A ></H4 ><P @@ -5709,7 +5693,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN988" +NAME="AEN987" >2.5.6. Bugzilla</A ></H3 ><P @@ -6517,6 +6501,95 @@ CLASS="filename" ></LI ></UL ></DIV +><DIV +CLASS="section" +><HR><H4 +CLASS="section" +><A +NAME="impersonatingusers" +>3.2.2.3. Impersonating Users</A +></H4 +><P +> There may be times when an administrator would like to do something as + another user. The <B +CLASS="command" +>sudo</B +> feature may be used to do + this. + </P +><DIV +CLASS="note" +><P +></P +><TABLE +CLASS="note" +WIDTH="100%" +BORDER="0" +><TR +><TD +WIDTH="25" +ALIGN="CENTER" +VALIGN="TOP" +><IMG +SRC="../images/note.gif" +HSPACE="5" +ALT="Note"></TD +><TD +ALIGN="LEFT" +VALIGN="TOP" +><P +> To use the sudo feature, you must be in the + <EM +>bz_sudoers</EM +> group. By default, all + administrators are in this group.</P +></TD +></TR +></TABLE +></DIV +><P +> If you have access to this feature, you may start a session by + going to the Edit Users page, Searching for a user and clicking on + their login. You should see a link below their login name titled + "Impersonate this user". Click on the link. This will take you + to a page where you will see a description of the feature and + instructions for using it. After reading the text, simply + enter the login of the user you would like to impersonate, provide + a short message explaining why you are doing this, and press the + button.</P +><P +> As long as you are using this feature, everything you do will be done + as if you were logged in as the user you are impersonating.</P +><DIV +CLASS="warning" +><P +></P +><TABLE +CLASS="warning" +WIDTH="100%" +BORDER="0" +><TR +><TD +WIDTH="25" +ALIGN="CENTER" +VALIGN="TOP" +><IMG +SRC="../images/warning.gif" +HSPACE="5" +ALT="Warning"></TD +><TD +ALIGN="LEFT" +VALIGN="TOP" +><P +> The user you are impersonating will not be told about what you are + doing. If you do anything that results in mail being sent, that + mail will appear to be from the user you are impersonating. You + should be extremely careful while using this feature.</P +></TD +></TR +></TABLE +></DIV +></DIV ></DIV ></DIV ><DIV @@ -7736,7 +7809,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN1465" +NAME="AEN1475" >3.11.1. Creating Groups</A ></H3 ><P @@ -7874,7 +7947,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN1492" +NAME="AEN1502" >3.11.2. Assigning Users to Groups</A ></H3 ><P @@ -7906,7 +7979,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN1502" +NAME="AEN1512" >3.11.3. Assigning Group Controls to Products</A ></H3 ><P @@ -7998,7 +8071,7 @@ CLASS="section" ><HR><H3 CLASS="section" ><A -NAME="AEN1520" +NAME="AEN1530" >3.11.4. Common Applications of Group Controls</A ></H3 ><DIV @@ -8006,7 +8079,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN1522" +NAME="AEN1532" >3.11.4.1. General User Access With Security Group</A ></H4 ><P @@ -8041,7 +8114,7 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="AEN1526" +NAME="AEN1536" >3.11.4.2. General User Access With A Security Product</A ></H4 ><P @@ -8073,7 +8146,7 @@ CLASS="section" ><HR><H4 CLASS="section" ><A -NAME="AEN1530" +NAME="AEN1540" >3.11.4.3. Product Isolation With Common Group</A ></H4 ><P @@ -9324,18 +9397,6 @@ CLASS="filename" > </P ></LI -><LI -><P ->But allow: - <TT -CLASS="filename" ->localconfig.js</TT ->, <TT -CLASS="filename" ->localconfig.rdf</TT -> - </P -></LI ></UL ></LI ><LI @@ -9636,73 +9697,34 @@ NAME="security-bugzilla-charset" >4.4.1. Prevent users injecting malicious Javascript</A ></H3 ><P ->It is possible for a Bugzilla user to take advantage of character - set encoding ambiguities to inject HTML into Bugzilla comments. This - could include malicious scripts. - Due to internationalization concerns, we are unable to - incorporate by default the code changes suggested by +>If you installed Bugzilla version 2.22 or later from scratch, + then the <EM +>utf8</EM +> parameter is switched on by default. + This makes Bugzilla explicitly set the character encoding, following <A HREF="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3" TARGET="_top" ->the +>a CERT advisory</A -> on this issue. - Making the change in <A -HREF="#security-bugzilla-charset-ex" ->Example 4-4</A -> will - prevent this problem. +> recommending exactly this. + The following therefore does not apply to you; just keep + <EM +>utf8</EM +> turned on. </P -><DIV -CLASS="example" -><A -NAME="security-bugzilla-charset-ex" -></A -><P -><B ->Example 4-4. Forcing Bugzilla to output a charset</B -></P ><P ->Locate the following line in - <TT -CLASS="filename" ->Bugzilla/CGI.pm</TT ->: - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->$self->charset('');</PRE -></FONT -></TD -></TR -></TABLE -> - and change it to: - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->$self->charset('UTF-8');</PRE -></FONT -></TD -></TR -></TABLE -> - </P -></DIV +>If you've upgraded from an older version, then it may be possible + for a Bugzilla user to take advantage of character set encoding + ambiguities to inject HTML into Bugzilla comments. + This could include malicious scripts. + This is because due to internationalization concerns, we are unable to + turn the <EM +>utf8</EM +> parameter on by default for upgraded + installations. + Turning it on manually will prevent this problem. + </P ></DIV ></DIV ></DIV @@ -10127,7 +10149,7 @@ CLASS="filename" > To see if a CGI supports multiple output formats and types, grep the CGI for <SPAN CLASS="QUOTE" ->"GetFormat"</SPAN +>"get_format"</SPAN >. If it's not present, adding multiple format/type support isn't too hard - see how it's done in other CGIs, e.g. config.cgi. @@ -11747,9 +11769,9 @@ NAME="myaccount" Bugzilla for the URL you should use to access it. If you're test-driving Bugzilla, use this URL: <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/" TARGET="_top" ->http://landfill.bugzilla.org/bugzilla-2.20-branch/</A +>http://landfill.bugzilla.org/bugzilla-2.22-branch/</A >. </P ><P @@ -11815,7 +11837,7 @@ NAME="bug_page" >The core of Bugzilla is the screen which displays a particular bug. It's a good place to explain some Bugzilla concepts. <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/show_bug.cgi?id=1" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/show_bug.cgi?id=1" TARGET="_top" > Bug 1 on Landfill</A > @@ -12227,9 +12249,9 @@ NAME="query" any bug report, comment, or patch currently in the Bugzilla system. You can play with it here: <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/query.cgi" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/query.cgi" TARGET="_top" ->http://landfill.bugzilla.org/bugzilla-2.20-branch/query.cgi</A +>http://landfill.bugzilla.org/bugzilla-2.22-branch/query.cgi</A >.</P ><P >The Search page has controls for selecting different possible @@ -12591,7 +12613,7 @@ NAME="bugreports" >Years of bug writing experience has been distilled for your reading pleasure into the <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/page.cgi?id=bug-writing.html" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/page.cgi?id=bug-writing.html" TARGET="_top" > Bug Writing Guidelines</A >. @@ -12611,13 +12633,13 @@ TYPE="1" ><P >Go to <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/" TARGET="_top" > Landfill</A > in your browser and click <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/enter_bug.cgi" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/enter_bug.cgi" TARGET="_top" > Enter a new bug report</A >. @@ -12923,15 +12945,16 @@ CLASS="filename" >:BazProduct</TT >" would search only in that product. + You can use it to find a bug by its number or its alias, too. </P ><P ->You'll find the Quicksearch box on Bugzilla's - front page, along with a +>You'll find the Quicksearch box in Bugzilla's footer area. + On Bugzilla's front page, there is an additional <A -HREF="../../quicksearch.html" +HREF="../../page.cgi?id=quicksearch.html" TARGET="_top" >Help</A -> +> link which details how to use it.</P ></DIV ><DIV @@ -17431,13 +17454,13 @@ TARGET="_top" enhancement for Bugzilla. </P ><P -> You can view bugs marked for 2.20.3 release +> You can view bugs marked for 2.22.1 release <A HREF="http://bugzilla.mozilla.org/buglist.cgi?product=Bugzilla&target_milestone=Bugzilla+&bz-nextver;" TARGET="_top" >here</A >. - This list includes bugs for the 2.20.3 release that have already + This list includes bugs for the 2.22.1 release that have already been fixed and checked into CVS. Please consult the <A HREF="http://www.bugzilla.org/" @@ -18836,6 +18859,52 @@ TARGET="_top" >http://stein.cshl.org/WWW/software/GD/</A ><br> </P +> + </P +><P +> MIME::Base64: + <P +CLASS="literallayout" +><br> + CPAN Download Page: <A +HREF="http://search.cpan.org/dist/MIME-Base64/" +TARGET="_top" +>http://search.cpan.org/dist/MIME-Base64/</A +><br> + PPM Download Link: <A +HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-Base64-2.20.zip" +TARGET="_top" +>http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-Base64-2.20.zip</A +><br> + Documentation: <A +HREF="http://search.cpan.org/dist/MIME-Base64/Base64.pm" +TARGET="_top" +>http://search.cpan.org/dist/MIME-Base64/Base64.pm</A +><br> + </P +> + </P +><P +> MIME::Parser (part of MIME-tools): + <P +CLASS="literallayout" +><br> + CPAN Download Page: <A +HREF="http://search.cpan.org/dist/MIME-tools/" +TARGET="_top" +>http://search.cpan.org/dist/MIME-tools/</A +><br> + PPM Download Link: <A +HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip" +TARGET="_top" +>http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip</A +><br> + Documentation: <A +HREF="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm" +TARGET="_top" +>http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm</A +><br> + </P > </P ></DIV @@ -18917,29 +18986,6 @@ TARGET="_top" > </P ><P -> MIME::Parser (part of MIME-tools): - <P -CLASS="literallayout" -><br> - CPAN Download Page: <A -HREF="http://search.cpan.org/dist/MIME-tools/" -TARGET="_top" ->http://search.cpan.org/dist/MIME-tools/</A -><br> - PPM Download Link: <A -HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip" -TARGET="_top" ->http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip</A -><br> - Documentation: <A -HREF="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm" -TARGET="_top" ->http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm</A -><br> - </P -> - </P -><P > XML::Parser: <P CLASS="literallayout" @@ -18979,6 +19025,25 @@ TARGET="_top" >http://www.johnkeiser.com/mozilla/Patch_Viewer.html</A ><br> </P +> + </P +><P +> Image::Magick: + <P +CLASS="literallayout" +><br> + CPAN Download Page: <A +HREF="http://search.cpan.org/dist/PerlMagick/" +TARGET="_top" +>http://search.cpan.org/dist/PerlMagick/</A +><br> + PPM Download Link: Included in Windows binary package.<br> + Documentation: <A +HREF="http://www.imagemagick.org/script/resources.php" +TARGET="_top" +>http://www.imagemagick.org/script/resources.php</A +><br> + </P > </P ></DIV @@ -18993,7 +19058,7 @@ NAME="gfdl" ><P >Version 1.1, March 2000</P ><A -NAME="AEN3445" +NAME="AEN3454" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -19456,7 +19521,7 @@ NAME="gfdl-howto" of the License in the document and put the following copyright and license notices just after the title page:</P ><A -NAME="AEN3535" +NAME="AEN3544" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -19493,7 +19558,7 @@ CLASS="glossdiv" ><H1 CLASS="glossdiv" ><A -NAME="AEN3540" +NAME="AEN3549" >0-9, high ascii</A ></H1 ><DL @@ -20411,7 +20476,7 @@ NAME="gloss-zarro" Terry had the following to say: </P ><A -NAME="AEN3787" +NAME="AEN3796" ></A ><TABLE BORDER="0" diff --git a/docs/html/about.html b/docs/html/about.html index 662292ddb..b6810d9ae 100644 --- a/docs/html/about.html +++ b/docs/html/about.html @@ -7,11 +7,11 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="NEXT" @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -154,7 +154,7 @@ ACCESSKEY="N" WIDTH="33%" ALIGN="left" VALIGN="top" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TD ><TD WIDTH="34%" diff --git a/docs/html/administration.html b/docs/html/administration.html index fc7342a42..dc543cb07 100644 --- a/docs/html/administration.html +++ b/docs/html/administration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -183,22 +183,22 @@ HREF="groups.html" ><DL ><DT >3.11.1. <A -HREF="groups.html#AEN1465" +HREF="groups.html#AEN1475" >Creating Groups</A ></DT ><DT >3.11.2. <A -HREF="groups.html#AEN1492" +HREF="groups.html#AEN1502" >Assigning Users to Groups</A ></DT ><DT >3.11.3. <A -HREF="groups.html#AEN1502" +HREF="groups.html#AEN1512" >Assigning Group Controls to Products</A ></DT ><DT >3.11.4. <A -HREF="groups.html#AEN1520" +HREF="groups.html#AEN1530" >Common Applications of Group Controls</A ></DT ></DL diff --git a/docs/html/bug_page.html b/docs/html/bug_page.html index a4ebee838..7224dfce0 100644 --- a/docs/html/bug_page.html +++ b/docs/html/bug_page.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -82,7 +82,7 @@ NAME="bug_page" >The core of Bugzilla is the screen which displays a particular bug. It's a good place to explain some Bugzilla concepts. <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/show_bug.cgi?id=1" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/show_bug.cgi?id=1" TARGET="_top" > Bug 1 on Landfill</A > diff --git a/docs/html/bugreports.html b/docs/html/bugreports.html index da352f0c9..26a695f37 100644 --- a/docs/html/bugreports.html +++ b/docs/html/bugreports.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -82,7 +82,7 @@ NAME="bugreports" >Years of bug writing experience has been distilled for your reading pleasure into the <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/page.cgi?id=bug-writing.html" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/page.cgi?id=bug-writing.html" TARGET="_top" > Bug Writing Guidelines</A >. @@ -102,13 +102,13 @@ TYPE="1" ><P >Go to <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/" TARGET="_top" > Landfill</A > in your browser and click <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/enter_bug.cgi" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/enter_bug.cgi" TARGET="_top" > Enter a new bug report</A >. diff --git a/docs/html/classifications.html b/docs/html/classifications.html index 6452bf965..c8f2849c7 100644 --- a/docs/html/classifications.html +++ b/docs/html/classifications.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/cmdline-bugmail.html b/docs/html/cmdline-bugmail.html index 61c8f3a74..df1ccd74e 100644 --- a/docs/html/cmdline-bugmail.html +++ b/docs/html/cmdline-bugmail.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/cmdline.html b/docs/html/cmdline.html index 85d2b4d1e..644806e42 100644 --- a/docs/html/cmdline.html +++ b/docs/html/cmdline.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/components.html b/docs/html/components.html index ce39736be..5b0ea354b 100644 --- a/docs/html/components.html +++ b/docs/html/components.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/configuration.html b/docs/html/configuration.html index 403f754e9..460538a0d 100644 --- a/docs/html/configuration.html +++ b/docs/html/configuration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -365,7 +365,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN445" +NAME="AEN444" >2.2.2.1.2. Allow small words in full-text indexes</A ></H4 ><P @@ -439,7 +439,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN455" +NAME="AEN454" >2.2.2.1.3. Permit attachments table to grow beyond 4GB</A ></H4 ><P @@ -686,7 +686,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN496" +NAME="AEN495" >2.2.2.2.1. Add a User to PostgreSQL</A ></H4 ><P @@ -767,7 +767,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN512" +NAME="AEN511" >2.2.2.2.2. Configure PostgreSQL</A ></H4 ><P @@ -781,7 +781,7 @@ CLASS="filename" >. In this file, you will need to add a new line to it as follows:</P ><P -> <SAMP +> <SAMP CLASS="computeroutput" >host all bugs 127.0.0.1 255.255.255.255 md5</SAMP > @@ -804,7 +804,7 @@ CLASS="filename" > folder. You will need to make a single line change, changing</P ><P -> <SAMP +> <SAMP CLASS="computeroutput" ># tcpip_socket = false</SAMP > @@ -812,11 +812,11 @@ CLASS="computeroutput" ><P >to</P ><P -> <SAMP +> <SAMP CLASS="computeroutput" >tcpip_socket = true</SAMP > - </P + </P ><P >Now, you will need to restart PostgreSQL, but you will need to fully stop and start the server rather than just restarting due to the possibility @@ -848,7 +848,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN535" +NAME="AEN534" >2.2.3. checksetup.pl</A ></H2 ><P diff --git a/docs/html/conventions.html b/docs/html/conventions.html index cd825397b..bcdc4a037 100644 --- a/docs/html/conventions.html +++ b/docs/html/conventions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/copyright.html b/docs/html/copyright.html index 3f9d53bcf..9a65f0afd 100644 --- a/docs/html/copyright.html +++ b/docs/html/copyright.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/credits.html b/docs/html/credits.html index 24e08d324..1262bab95 100644 --- a/docs/html/credits.html +++ b/docs/html/credits.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/cust-change-permissions.html b/docs/html/cust-change-permissions.html index 8e6251a3a..2d8569e22 100644 --- a/docs/html/cust-change-permissions.html +++ b/docs/html/cust-change-permissions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/cust-hooks.html b/docs/html/cust-hooks.html index b8478b36d..d6954311b 100644 --- a/docs/html/cust-hooks.html +++ b/docs/html/cust-hooks.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/cust-templates.html b/docs/html/cust-templates.html index 97aa82986..4ed07966c 100644 --- a/docs/html/cust-templates.html +++ b/docs/html/cust-templates.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -484,7 +484,7 @@ CLASS="filename" > To see if a CGI supports multiple output formats and types, grep the CGI for <SPAN CLASS="QUOTE" ->"GetFormat"</SPAN +>"get_format"</SPAN >. If it's not present, adding multiple format/type support isn't too hard - see how it's done in other CGIs, e.g. config.cgi. diff --git a/docs/html/customization.html b/docs/html/customization.html index e0656044b..a2122ddf2 100644 --- a/docs/html/customization.html +++ b/docs/html/customization.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/dbdoc.html b/docs/html/dbdoc.html index 052c38068..220de9365 100644 --- a/docs/html/dbdoc.html +++ b/docs/html/dbdoc.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/dbmodify.html b/docs/html/dbmodify.html index 50d500386..1a3b86ddc 100644 --- a/docs/html/dbmodify.html +++ b/docs/html/dbmodify.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/disclaimer.html b/docs/html/disclaimer.html index 918daa94b..f96df24e6 100644 --- a/docs/html/disclaimer.html +++ b/docs/html/disclaimer.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/extraconfig.html b/docs/html/extraconfig.html index aa6bb6e64..6900a2760 100644 --- a/docs/html/extraconfig.html +++ b/docs/html/extraconfig.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -87,7 +87,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN634" +NAME="AEN633" >2.3.1. Bug Graphs</A ></H2 ><P @@ -145,7 +145,7 @@ CLASS="programlisting" </P ><P > When upgrading Bugzilla, this format may change. - To create new status data, (re)move old data and run the following + To create new status data, (re)move old data and run the following commands: </P ><TABLE @@ -219,7 +219,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN653" +NAME="AEN652" >2.3.2. Dependency Charts</A ></H2 ><P diff --git a/docs/html/faq.html b/docs/html/faq.html index 62bcc80f1..5deada2de 100644 --- a/docs/html/faq.html +++ b/docs/html/faq.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -3424,13 +3424,13 @@ TARGET="_top" enhancement for Bugzilla. </P ><P -> You can view bugs marked for 2.20.3 release +> You can view bugs marked for 2.22.1 release <A HREF="http://bugzilla.mozilla.org/buglist.cgi?product=Bugzilla&target_milestone=Bugzilla+&bz-nextver;" TARGET="_top" >here</A >. - This list includes bugs for the 2.20.3 release that have already + This list includes bugs for the 2.22.1 release that have already been fixed and checked into CVS. Please consult the <A HREF="http://www.bugzilla.org/" diff --git a/docs/html/flags-overview.html b/docs/html/flags-overview.html index abaaab7c9..40ba78d6a 100644 --- a/docs/html/flags-overview.html +++ b/docs/html/flags-overview.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/flags.html b/docs/html/flags.html index 56e929395..083423c01 100644 --- a/docs/html/flags.html +++ b/docs/html/flags.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/general-advice.html b/docs/html/general-advice.html index 5eba42398..ccb0f78bc 100644 --- a/docs/html/general-advice.html +++ b/docs/html/general-advice.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-0.html b/docs/html/gfdl-0.html index dd9a831f5..0748c3570 100644 --- a/docs/html/gfdl-0.html +++ b/docs/html/gfdl-0.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-1.html b/docs/html/gfdl-1.html index 1dc927432..c2e668862 100644 --- a/docs/html/gfdl-1.html +++ b/docs/html/gfdl-1.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-10.html b/docs/html/gfdl-10.html index 6d4cba695..94df1bec5 100644 --- a/docs/html/gfdl-10.html +++ b/docs/html/gfdl-10.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-2.html b/docs/html/gfdl-2.html index 63f5526d6..c2f8779f2 100644 --- a/docs/html/gfdl-2.html +++ b/docs/html/gfdl-2.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-3.html b/docs/html/gfdl-3.html index b71eebc80..ec205b6aa 100644 --- a/docs/html/gfdl-3.html +++ b/docs/html/gfdl-3.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-4.html b/docs/html/gfdl-4.html index e734619e5..b3d1ddee1 100644 --- a/docs/html/gfdl-4.html +++ b/docs/html/gfdl-4.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-5.html b/docs/html/gfdl-5.html index c61a60fda..39c698b7d 100644 --- a/docs/html/gfdl-5.html +++ b/docs/html/gfdl-5.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-6.html b/docs/html/gfdl-6.html index 1559d05c9..aed78d494 100644 --- a/docs/html/gfdl-6.html +++ b/docs/html/gfdl-6.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-7.html b/docs/html/gfdl-7.html index 6dafd56bd..84e6c10aa 100644 --- a/docs/html/gfdl-7.html +++ b/docs/html/gfdl-7.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-8.html b/docs/html/gfdl-8.html index 49ec49d5b..d2415f132 100644 --- a/docs/html/gfdl-8.html +++ b/docs/html/gfdl-8.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-9.html b/docs/html/gfdl-9.html index 112e87751..53c6ff254 100644 --- a/docs/html/gfdl-9.html +++ b/docs/html/gfdl-9.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/gfdl-howto.html b/docs/html/gfdl-howto.html index 6d1ddaea6..d471a572f 100644 --- a/docs/html/gfdl-howto.html +++ b/docs/html/gfdl-howto.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -83,7 +83,7 @@ NAME="gfdl-howto" of the License in the document and put the following copyright and license notices just after the title page:</P ><A -NAME="AEN3535" +NAME="AEN3544" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" diff --git a/docs/html/gfdl.html b/docs/html/gfdl.html index 9a3a3bfa0..cb9b0d8be 100644 --- a/docs/html/gfdl.html +++ b/docs/html/gfdl.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -146,7 +146,7 @@ HREF="gfdl-howto.html" ><P >Version 1.1, March 2000</P ><A -NAME="AEN3445" +NAME="AEN3454" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" diff --git a/docs/html/glossary.html b/docs/html/glossary.html index 1e45e3cd8..7e9cba16c 100644 --- a/docs/html/glossary.html +++ b/docs/html/glossary.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -32,7 +32,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -72,7 +72,7 @@ CLASS="glossdiv" ><H1 CLASS="glossdiv" ><A -NAME="AEN3540" +NAME="AEN3549" >0-9, high ascii</A ></H1 ><DL @@ -990,7 +990,7 @@ NAME="gloss-zarro" Terry had the following to say: </P ><A -NAME="AEN3787" +NAME="AEN3796" ></A ><TABLE BORDER="0" diff --git a/docs/html/groups.html b/docs/html/groups.html index ebeb11dfa..175faac44 100644 --- a/docs/html/groups.html +++ b/docs/html/groups.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -150,7 +150,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN1465" +NAME="AEN1475" >3.11.1. Creating Groups</A ></H2 ><P @@ -288,7 +288,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN1492" +NAME="AEN1502" >3.11.2. Assigning Users to Groups</A ></H2 ><P @@ -320,7 +320,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN1502" +NAME="AEN1512" >3.11.3. Assigning Group Controls to Products</A ></H2 ><P @@ -412,7 +412,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN1520" +NAME="AEN1530" >3.11.4. Common Applications of Group Controls</A ></H2 ><DIV @@ -420,7 +420,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN1522" +NAME="AEN1532" >3.11.4.1. General User Access With Security Group</A ></H3 ><P @@ -455,7 +455,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN1526" +NAME="AEN1536" >3.11.4.2. General User Access With A Security Product</A ></H3 ><P @@ -487,7 +487,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN1530" +NAME="AEN1540" >3.11.4.3. Product Isolation With Common Group</A ></H3 ><P diff --git a/docs/html/hintsandtips.html b/docs/html/hintsandtips.html index 253f701ac..2bba9c9e8 100644 --- a/docs/html/hintsandtips.html +++ b/docs/html/hintsandtips.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -172,15 +172,16 @@ CLASS="filename" >:BazProduct</TT >" would search only in that product. + You can use it to find a bug by its number or its alias, too. </P ><P ->You'll find the Quicksearch box on Bugzilla's - front page, along with a +>You'll find the Quicksearch box in Bugzilla's footer area. + On Bugzilla's front page, there is an additional <A -HREF="../../quicksearch.html" +HREF="../../page.cgi?id=quicksearch.html" TARGET="_top" >Help</A -> +> link which details how to use it.</P ></DIV ><DIV diff --git a/docs/html/index.html b/docs/html/index.html index e7b8c1596..b7ee1dc14 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -2,7 +2,7 @@ <HTML ><HEAD ><TITLE ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TITLE ><META NAME="GENERATOR" @@ -46,7 +46,7 @@ CLASS="TITLEPAGE" CLASS="title" ><A NAME="AEN2" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</A ></H1 ><H3 @@ -611,11 +611,6 @@ HREF="security-mysql.html#security-mysql-network-ex" >Disabling Networking in MySQL</A ></DT ><DT ->4-4. <A -HREF="security-bugzilla.html#security-bugzilla-charset-ex" ->Forcing Bugzilla to output a charset</A -></DT -><DT >B-1. <A HREF="trbl-relogin-everyone.html#trbl-relogin-everyone-share" >Examples of urlbase/cookiepath pairs for sharing login cookies</A diff --git a/docs/html/install-perlmodules-manual.html b/docs/html/install-perlmodules-manual.html index 9a145b2ce..d51788cab 100644 --- a/docs/html/install-perlmodules-manual.html +++ b/docs/html/install-perlmodules-manual.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/installation.html b/docs/html/installation.html index cb57ce0ba..30e9fb85b 100644 --- a/docs/html/installation.html +++ b/docs/html/installation.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -293,7 +293,7 @@ HREF="http://www.mysql.com" TARGET="_top" >http://www.mysql.com</A >. You need MySQL version - 3.23.41 or higher. + 4.0.14 or higher. </P ><DIV CLASS="note" @@ -736,7 +736,17 @@ HREF="installation.html#install-modules-template" ></LI ><LI ><P -> Mail::Mailer (1.65) +> Mail::Mailer (1.67) + </P +></LI +><LI +><P +> MIME::Base64 (3.01) + </P +></LI +><LI +><P +> MIME::Parser (5.406) </P ></LI ><LI @@ -808,11 +818,7 @@ HREF="installation.html#install-modules-patchreader" ></LI ><LI ><P -> <A -HREF="installation.html#install-modules-mime-parser" ->MIME::Parser</A -> - (any) for the optional email interface +> Image::Magick (any) for converting BMP image attachments to PNG </P ></LI ></OL @@ -1010,31 +1016,14 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="install-modules-mime-parser" ->2.1.5.8. MIME::Parser (any)</A -></H3 -><P ->The MIME::Parser module is only required if you want to use the - email interface - located in the <TT -CLASS="filename" ->contrib</TT -> directory. - </P -></DIV -><DIV -CLASS="section" -><H3 -CLASS="section" -><A NAME="install-modules-patchreader" ->2.1.5.9. PatchReader (0.9.4)</A +>2.1.5.8. PatchReader (0.9.4)</A ></H3 ><P ->The PatchReader module is only required if you want to use +>The PatchReader module is only required if you want to use Patch Viewer, a Bugzilla feature to show code patches in your web browser in a more - readable form. + readable form. </P ></DIV ></DIV diff --git a/docs/html/installing-bugzilla.html b/docs/html/installing-bugzilla.html index 7100e0a4c..cf79d7c03 100644 --- a/docs/html/installing-bugzilla.html +++ b/docs/html/installing-bugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -139,7 +139,7 @@ HREF="configuration.html#database-engine" ></DT ><DT >2.2.3. <A -HREF="configuration.html#AEN535" +HREF="configuration.html#AEN534" >checksetup.pl</A ></DT ><DT @@ -163,12 +163,12 @@ HREF="extraconfig.html" ><DL ><DT >2.3.1. <A -HREF="extraconfig.html#AEN634" +HREF="extraconfig.html#AEN633" >Bug Graphs</A ></DT ><DT >2.3.2. <A -HREF="extraconfig.html#AEN653" +HREF="extraconfig.html#AEN652" >Dependency Charts</A ></DT ><DT @@ -234,17 +234,17 @@ HREF="nonroot.html" ><DL ><DT >2.5.1. <A -HREF="nonroot.html#AEN872" +HREF="nonroot.html#AEN871" >Introduction</A ></DT ><DT >2.5.2. <A -HREF="nonroot.html#AEN876" +HREF="nonroot.html#AEN875" >MySQL</A ></DT ><DT >2.5.3. <A -HREF="nonroot.html#AEN911" +HREF="nonroot.html#AEN910" >Perl</A ></DT ><DT @@ -254,12 +254,12 @@ HREF="nonroot.html#install-perlmodules-nonroot" ></DT ><DT >2.5.5. <A -HREF="nonroot.html#AEN976" +HREF="nonroot.html#AEN975" >HTTP Server</A ></DT ><DT >2.5.6. <A -HREF="nonroot.html#AEN988" +HREF="nonroot.html#AEN987" >Bugzilla</A ></DT ></DL diff --git a/docs/html/integration.html b/docs/html/integration.html index b38d39093..eb18de8e6 100644 --- a/docs/html/integration.html +++ b/docs/html/integration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/lifecycle.html b/docs/html/lifecycle.html index 31efa7edb..fc234e743 100644 --- a/docs/html/lifecycle.html +++ b/docs/html/lifecycle.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/list.html b/docs/html/list.html index 9dc14d802..b615a7902 100644 --- a/docs/html/list.html +++ b/docs/html/list.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/milestones.html b/docs/html/milestones.html index 9cd539830..3d72540bc 100644 --- a/docs/html/milestones.html +++ b/docs/html/milestones.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/modules-manual-download.html b/docs/html/modules-manual-download.html index 0d0a980c2..8822e9c3c 100644 --- a/docs/html/modules-manual-download.html +++ b/docs/html/modules-manual-download.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -339,6 +339,52 @@ TARGET="_top" >http://stein.cshl.org/WWW/software/GD/</A ><br> </P +> + </P +><P +> MIME::Base64: + <P +CLASS="literallayout" +><br> + CPAN Download Page: <A +HREF="http://search.cpan.org/dist/MIME-Base64/" +TARGET="_top" +>http://search.cpan.org/dist/MIME-Base64/</A +><br> + PPM Download Link: <A +HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-Base64-2.20.zip" +TARGET="_top" +>http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-Base64-2.20.zip</A +><br> + Documentation: <A +HREF="http://search.cpan.org/dist/MIME-Base64/Base64.pm" +TARGET="_top" +>http://search.cpan.org/dist/MIME-Base64/Base64.pm</A +><br> + </P +> + </P +><P +> MIME::Parser (part of MIME-tools): + <P +CLASS="literallayout" +><br> + CPAN Download Page: <A +HREF="http://search.cpan.org/dist/MIME-tools/" +TARGET="_top" +>http://search.cpan.org/dist/MIME-tools/</A +><br> + PPM Download Link: <A +HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip" +TARGET="_top" +>http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip</A +><br> + Documentation: <A +HREF="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm" +TARGET="_top" +>http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm</A +><br> + </P > </P ></DIV diff --git a/docs/html/modules-manual-instructions.html b/docs/html/modules-manual-instructions.html index b101ff0cc..321adca48 100644 --- a/docs/html/modules-manual-instructions.html +++ b/docs/html/modules-manual-instructions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/modules-manual-optional.html b/docs/html/modules-manual-optional.html index 78db79b2d..c806c9ec1 100644 --- a/docs/html/modules-manual-optional.html +++ b/docs/html/modules-manual-optional.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -148,29 +148,6 @@ TARGET="_top" > </P ><P -> MIME::Parser (part of MIME-tools): - <P -CLASS="literallayout" -><br> - CPAN Download Page: <A -HREF="http://search.cpan.org/dist/MIME-tools/" -TARGET="_top" ->http://search.cpan.org/dist/MIME-tools/</A -><br> - PPM Download Link: <A -HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip" -TARGET="_top" ->http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip</A -><br> - Documentation: <A -HREF="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm" -TARGET="_top" ->http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm</A -><br> - </P -> - </P -><P > XML::Parser: <P CLASS="literallayout" @@ -210,6 +187,25 @@ TARGET="_top" >http://www.johnkeiser.com/mozilla/Patch_Viewer.html</A ><br> </P +> + </P +><P +> Image::Magick: + <P +CLASS="literallayout" +><br> + CPAN Download Page: <A +HREF="http://search.cpan.org/dist/PerlMagick/" +TARGET="_top" +>http://search.cpan.org/dist/PerlMagick/</A +><br> + PPM Download Link: Included in Windows binary package.<br> + Documentation: <A +HREF="http://www.imagemagick.org/script/resources.php" +TARGET="_top" +>http://www.imagemagick.org/script/resources.php</A +><br> + </P > </P ></DIV diff --git a/docs/html/myaccount.html b/docs/html/myaccount.html index 1e3800323..f2bd3d7b9 100644 --- a/docs/html/myaccount.html +++ b/docs/html/myaccount.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -84,9 +84,9 @@ NAME="myaccount" Bugzilla for the URL you should use to access it. If you're test-driving Bugzilla, use this URL: <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/" TARGET="_top" ->http://landfill.bugzilla.org/bugzilla-2.20-branch/</A +>http://landfill.bugzilla.org/bugzilla-2.22-branch/</A >. </P ><P diff --git a/docs/html/newversions.html b/docs/html/newversions.html index 990d453a6..8f8b8c6dd 100644 --- a/docs/html/newversions.html +++ b/docs/html/newversions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -79,7 +79,7 @@ NAME="newversions" >1.3. New Versions</A ></H1 ><P -> This is the 2.20.2 version of The Bugzilla Guide. It is so named +> This is the 2.22 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. </P ><P diff --git a/docs/html/nonroot.html b/docs/html/nonroot.html index 646ef0429..f40809c64 100644 --- a/docs/html/nonroot.html +++ b/docs/html/nonroot.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -83,7 +83,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN872" +NAME="AEN871" >2.5.1. Introduction</A ></H2 ><P @@ -103,7 +103,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN876" +NAME="AEN875" >2.5.2. MySQL</A ></H2 ><P @@ -159,7 +159,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN884" +NAME="AEN883" >2.5.2.1. Running MySQL as Non-Root</A ></H3 ><DIV @@ -167,7 +167,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN886" +NAME="AEN885" >2.5.2.1.1. The Custom Configuration Method</A ></H4 ><P @@ -211,7 +211,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN890" +NAME="AEN889" >2.5.2.1.2. The Custom Built Method</A ></H4 ><P @@ -234,7 +234,7 @@ CLASS="section" ><H4 CLASS="section" ><A -NAME="AEN895" +NAME="AEN894" >2.5.2.1.3. Starting the Server</A ></H4 ><P @@ -362,7 +362,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN911" +NAME="AEN910" >2.5.3. Perl</A ></H2 ><P @@ -455,7 +455,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN930" +NAME="AEN929" >2.5.4.1. The Independant Method</A ></H3 ><P @@ -527,7 +527,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN943" +NAME="AEN942" >2.5.4.2. The Mixed Method</A ></H3 ><P @@ -732,7 +732,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN976" +NAME="AEN975" >2.5.5. HTTP Server</A ></H2 ><P @@ -746,7 +746,7 @@ CLASS="section" ><H3 CLASS="section" ><A -NAME="AEN979" +NAME="AEN978" >2.5.5.1. Running Apache as Non-Root</A ></H3 ><P @@ -828,7 +828,7 @@ CLASS="section" ><H2 CLASS="section" ><A -NAME="AEN988" +NAME="AEN987" >2.5.6. Bugzilla</A ></H2 ><P diff --git a/docs/html/os-specific.html b/docs/html/os-specific.html index 6c2323508..0914463e7 100644 --- a/docs/html/os-specific.html +++ b/docs/html/os-specific.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/parameters.html b/docs/html/parameters.html index 80cb87647..bde4798be 100644 --- a/docs/html/parameters.html +++ b/docs/html/parameters.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/paranoid-security.html b/docs/html/paranoid-security.html index 596df7e0e..0d9fed7d2 100644 --- a/docs/html/paranoid-security.html +++ b/docs/html/paranoid-security.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/patches.html b/docs/html/patches.html index 102bc09a9..e22e3b627 100644 --- a/docs/html/patches.html +++ b/docs/html/patches.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/patchviewer.html b/docs/html/patchviewer.html index 1f502541f..647640abf 100644 --- a/docs/html/patchviewer.html +++ b/docs/html/patchviewer.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/products.html b/docs/html/products.html index ded57686b..9ee80e36b 100644 --- a/docs/html/products.html +++ b/docs/html/products.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/query.html b/docs/html/query.html index cdd40550d..a1e0387be 100644 --- a/docs/html/query.html +++ b/docs/html/query.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -83,9 +83,9 @@ NAME="query" any bug report, comment, or patch currently in the Bugzilla system. You can play with it here: <A -HREF="http://landfill.bugzilla.org/bugzilla-2.20-branch/query.cgi" +HREF="http://landfill.bugzilla.org/bugzilla-2.22-branch/query.cgi" TARGET="_top" ->http://landfill.bugzilla.org/bugzilla-2.20-branch/query.cgi</A +>http://landfill.bugzilla.org/bugzilla-2.22-branch/query.cgi</A >.</P ><P >The Search page has controls for selecting different possible diff --git a/docs/html/quips.html b/docs/html/quips.html index 42e8d77ae..94fc2a70c 100644 --- a/docs/html/quips.html +++ b/docs/html/quips.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/reporting.html b/docs/html/reporting.html index a824644a1..e451efb54 100644 --- a/docs/html/reporting.html +++ b/docs/html/reporting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/security-bugzilla.html b/docs/html/security-bugzilla.html index 0b3699e24..b4819c96f 100644 --- a/docs/html/security-bugzilla.html +++ b/docs/html/security-bugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -87,73 +87,34 @@ NAME="security-bugzilla-charset" >4.4.1. Prevent users injecting malicious Javascript</A ></H2 ><P ->It is possible for a Bugzilla user to take advantage of character - set encoding ambiguities to inject HTML into Bugzilla comments. This - could include malicious scripts. - Due to internationalization concerns, we are unable to - incorporate by default the code changes suggested by +>If you installed Bugzilla version 2.22 or later from scratch, + then the <EM +>utf8</EM +> parameter is switched on by default. + This makes Bugzilla explicitly set the character encoding, following <A HREF="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3" TARGET="_top" ->the +>a CERT advisory</A -> on this issue. - Making the change in <A -HREF="security-bugzilla.html#security-bugzilla-charset-ex" ->Example 4-4</A -> will - prevent this problem. +> recommending exactly this. + The following therefore does not apply to you; just keep + <EM +>utf8</EM +> turned on. </P -><DIV -CLASS="example" -><A -NAME="security-bugzilla-charset-ex" -></A -><P -><B ->Example 4-4. Forcing Bugzilla to output a charset</B -></P ><P ->Locate the following line in - <TT -CLASS="filename" ->Bugzilla/CGI.pm</TT ->: - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->$self->charset('');</PRE -></FONT -></TD -></TR -></TABLE -> - and change it to: - <TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->$self->charset('UTF-8');</PRE -></FONT -></TD -></TR -></TABLE -> - </P -></DIV +>If you've upgraded from an older version, then it may be possible + for a Bugzilla user to take advantage of character set encoding + ambiguities to inject HTML into Bugzilla comments. + This could include malicious scripts. + This is because due to internationalization concerns, we are unable to + turn the <EM +>utf8</EM +> parameter on by default for upgraded + installations. + Turning it on manually will prevent this problem. + </P ></DIV ></DIV ><DIV diff --git a/docs/html/security-mysql.html b/docs/html/security-mysql.html index 78df44302..178029a82 100644 --- a/docs/html/security-mysql.html +++ b/docs/html/security-mysql.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/security-os.html b/docs/html/security-os.html index c933a9ac1..90ca404a8 100644 --- a/docs/html/security-os.html +++ b/docs/html/security-os.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/security-webserver.html b/docs/html/security-webserver.html index df770fae8..138d3d79d 100644 --- a/docs/html/security-webserver.html +++ b/docs/html/security-webserver.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -166,18 +166,6 @@ CLASS="filename" > </P ></LI -><LI -><P ->But allow: - <TT -CLASS="filename" ->localconfig.js</TT ->, <TT -CLASS="filename" ->localconfig.rdf</TT -> - </P -></LI ></UL ></LI ><LI diff --git a/docs/html/security.html b/docs/html/security.html index ad9efc80a..d0280ed8e 100644 --- a/docs/html/security.html +++ b/docs/html/security.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-bundlebugzilla.html b/docs/html/trbl-bundlebugzilla.html index b1620429f..3d9f2ccf9 100644 --- a/docs/html/trbl-bundlebugzilla.html +++ b/docs/html/trbl-bundlebugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-dbdsponge.html b/docs/html/trbl-dbdsponge.html index 1dabcb9b1..7fd04baba 100644 --- a/docs/html/trbl-dbdsponge.html +++ b/docs/html/trbl-dbdsponge.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-index.html b/docs/html/trbl-index.html index 1aa946e18..0d79d44b5 100644 --- a/docs/html/trbl-index.html +++ b/docs/html/trbl-index.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -41,7 +41,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-passwd-encryption.html b/docs/html/trbl-passwd-encryption.html index e7a01ab03..aeabe1d20 100644 --- a/docs/html/trbl-passwd-encryption.html +++ b/docs/html/trbl-passwd-encryption.html @@ -9,7 +9,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-perlmodule.html b/docs/html/trbl-perlmodule.html index c5745fd56..56f3da517 100644 --- a/docs/html/trbl-perlmodule.html +++ b/docs/html/trbl-perlmodule.html @@ -8,7 +8,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-relogin-everyone.html b/docs/html/trbl-relogin-everyone.html index 1476dfbba..bc5fdf001 100644 --- a/docs/html/trbl-relogin-everyone.html +++ b/docs/html/trbl-relogin-everyone.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trbl-testserver.html b/docs/html/trbl-testserver.html index 1687d3817..c6cbde935 100644 --- a/docs/html/trbl-testserver.html +++ b/docs/html/trbl-testserver.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/trouble-filetemp.html b/docs/html/trouble-filetemp.html index fb421e5b3..e54abbb66 100644 --- a/docs/html/trouble-filetemp.html +++ b/docs/html/trouble-filetemp.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/troubleshooting.html b/docs/html/troubleshooting.html index c4b617c0b..9d00c34b7 100644 --- a/docs/html/troubleshooting.html +++ b/docs/html/troubleshooting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/upgrading.html b/docs/html/upgrading.html index f5edeef8f..372a7f5c1 100644 --- a/docs/html/upgrading.html +++ b/docs/html/upgrading.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/useradmin.html b/docs/html/useradmin.html index a413a06cd..b87feac5f 100644 --- a/docs/html/useradmin.html +++ b/docs/html/useradmin.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR @@ -442,6 +442,95 @@ CLASS="filename" ></LI ></UL ></DIV +><DIV +CLASS="section" +><H3 +CLASS="section" +><A +NAME="impersonatingusers" +>3.2.2.3. Impersonating Users</A +></H3 +><P +> There may be times when an administrator would like to do something as + another user. The <B +CLASS="command" +>sudo</B +> feature may be used to do + this. + </P +><DIV +CLASS="note" +><P +></P +><TABLE +CLASS="note" +WIDTH="100%" +BORDER="0" +><TR +><TD +WIDTH="25" +ALIGN="CENTER" +VALIGN="TOP" +><IMG +SRC="../images/note.gif" +HSPACE="5" +ALT="Note"></TD +><TD +ALIGN="LEFT" +VALIGN="TOP" +><P +> To use the sudo feature, you must be in the + <EM +>bz_sudoers</EM +> group. By default, all + administrators are in this group.</P +></TD +></TR +></TABLE +></DIV +><P +> If you have access to this feature, you may start a session by + going to the Edit Users page, Searching for a user and clicking on + their login. You should see a link below their login name titled + "Impersonate this user". Click on the link. This will take you + to a page where you will see a description of the feature and + instructions for using it. After reading the text, simply + enter the login of the user you would like to impersonate, provide + a short message explaining why you are doing this, and press the + button.</P +><P +> As long as you are using this feature, everything you do will be done + as if you were logged in as the user you are impersonating.</P +><DIV +CLASS="warning" +><P +></P +><TABLE +CLASS="warning" +WIDTH="100%" +BORDER="0" +><TR +><TD +WIDTH="25" +ALIGN="CENTER" +VALIGN="TOP" +><IMG +SRC="../images/warning.gif" +HSPACE="5" +ALT="Warning"></TD +><TD +ALIGN="LEFT" +VALIGN="TOP" +><P +> The user you are impersonating will not be told about what you are + doing. If you do anything that results in mail being sent, that + mail will appear to be from the user you are impersonating. You + should be extremely careful while using this feature.</P +></TD +></TR +></TABLE +></DIV +></DIV ></DIV ></DIV ><DIV diff --git a/docs/html/userpreferences.html b/docs/html/userpreferences.html index 5b22c117f..c017368e9 100644 --- a/docs/html/userpreferences.html +++ b/docs/html/userpreferences.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/using-intro.html b/docs/html/using-intro.html index edb7b210f..80c93427d 100644 --- a/docs/html/using-intro.html +++ b/docs/html/using-intro.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/using.html b/docs/html/using.html index 2a465f55c..af982c6de 100644 --- a/docs/html/using.html +++ b/docs/html/using.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="PREVIOUS" @@ -35,7 +35,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/versions.html b/docs/html/versions.html index fb1a41728..b84166a52 100644 --- a/docs/html/versions.html +++ b/docs/html/versions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/voting.html b/docs/html/voting.html index 67ecd3173..f0d313a08 100644 --- a/docs/html/voting.html +++ b/docs/html/voting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/whining.html b/docs/html/whining.html index a02f5f3c2..e0ac503e7 100644 --- a/docs/html/whining.html +++ b/docs/html/whining.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/html/x3269.html b/docs/html/x3269.html index 32d02b39d..75b5b546d 100644 --- a/docs/html/x3269.html +++ b/docs/html/x3269.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 2.20.2 +TITLE="The Bugzilla Guide - 2.22 Release" HREF="index.html"><LINK REL="UP" @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 2.20.2 +>The Bugzilla Guide - 2.22 Release</TH ></TR ><TR diff --git a/docs/images/CVS/Entries b/docs/images/CVS/Entries index d73ba3368..94d69de49 100644 --- a/docs/images/CVS/Entries +++ b/docs/images/CVS/Entries @@ -1,7 +1,7 @@ -/bzLifecycle.png/1.1.10.2/Fri Oct 14 04:44:13 2005/-kb/TBUGZILLA-2_20_2 -/bzLifecycle.xml/1.1.10.1/Tue Jul 12 10:30:44 2005//TBUGZILLA-2_20_2 -/caution.gif/1.2/Wed May 8 21:16:44 2002/-kb/TBUGZILLA-2_20_2 -/note.gif/1.1/Thu Aug 23 14:30:18 2001/-kb/TBUGZILLA-2_20_2 -/tip.gif/1.2/Wed May 8 21:16:44 2002/-kb/TBUGZILLA-2_20_2 -/warning.gif/1.2/Wed May 8 21:16:44 2002/-kb/TBUGZILLA-2_20_2 +/bzLifecycle.png/1.3/Fri Oct 14 04:44:54 2005/-kb/TBUGZILLA-2_22 +/bzLifecycle.xml/1.2/Tue Jul 12 10:29:52 2005//TBUGZILLA-2_22 +/caution.gif/1.2/Wed May 8 21:16:44 2002/-kb/TBUGZILLA-2_22 +/note.gif/1.1/Thu Aug 23 14:30:18 2001/-kb/TBUGZILLA-2_22 +/tip.gif/1.2/Wed May 8 21:16:44 2002/-kb/TBUGZILLA-2_22 +/warning.gif/1.2/Wed May 8 21:16:44 2002/-kb/TBUGZILLA-2_22 D/callouts//// diff --git a/docs/images/CVS/Tag b/docs/images/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/docs/images/CVS/Tag +++ b/docs/images/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/docs/images/callouts/CVS/Entries b/docs/images/callouts/CVS/Entries index 1d74731a8..074d24a9e 100644 --- a/docs/images/callouts/CVS/Entries +++ b/docs/images/callouts/CVS/Entries @@ -1,4 +1,4 @@ -/1.gif/1.1/Sat May 17 01:27:53 2003/-kb/TBUGZILLA-2_20_2 -/2.gif/1.1/Sat May 17 01:27:54 2003/-kb/TBUGZILLA-2_20_2 -/3.gif/1.1/Thu Jul 3 20:23:39 2003/-kb/TBUGZILLA-2_20_2 +/1.gif/1.1/Sat May 17 01:27:53 2003/-kb/TBUGZILLA-2_22 +/2.gif/1.1/Sat May 17 01:27:54 2003/-kb/TBUGZILLA-2_22 +/3.gif/1.1/Thu Jul 3 20:23:39 2003/-kb/TBUGZILLA-2_22 D diff --git a/docs/images/callouts/CVS/Tag b/docs/images/callouts/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/docs/images/callouts/CVS/Tag +++ b/docs/images/callouts/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/docs/makedocs.pl b/docs/makedocs.pl index 2fb0911b2..5a001ea06 100644 --- a/docs/makedocs.pl +++ b/docs/makedocs.pl @@ -52,7 +52,7 @@ else { # Subs ############################################################################### -sub MakeDocs($$) { +sub MakeDocs { my ($name, $cmdline) = @_; diff --git a/docs/pdf/Bugzilla-Guide.pdf b/docs/pdf/Bugzilla-Guide.pdf index 6acb495de..e2d4e522a 100644 --- a/docs/pdf/Bugzilla-Guide.pdf +++ b/docs/pdf/Bugzilla-Guide.pdf @@ -3,7 +3,7 @@ << /S /GoTo /D (1.0) >> endobj 4 0 obj -(The Bugzilla Guide 2.20.2 Release) +(The Bugzilla Guide 2.22 Release) endobj 5 0 obj << /S /GoTo /D (2.0) >> @@ -159,355 +159,355 @@ endobj << /S /GoTo /D (6.6.5.10.3) >> endobj 108 0 obj -(2.1.5.8. MIME::Parser \(any\)) +(2.1.5.8. PatchReader \(0.9.4\)) endobj 109 0 obj -<< /S /GoTo /D (6.6.5.11.3) >> +<< /S /GoTo /D (6.6.6.2) >> endobj 112 0 obj -(2.1.5.9. PatchReader \(0.9.4\)) +(2.1.6. Mail Transfer Agent \(MTA\)) endobj 113 0 obj -<< /S /GoTo /D (6.6.6.2) >> +<< /S /GoTo /D (6.7.1) >> endobj 116 0 obj -(2.1.6. Mail Transfer Agent \(MTA\)) +(2.2. Configuration) endobj 117 0 obj -<< /S /GoTo /D (6.7.1) >> +<< /S /GoTo /D (6.7.7.2) >> endobj 120 0 obj -(2.2. Configuration) +(2.2.1. localconfig) endobj 121 0 obj -<< /S /GoTo /D (6.7.7.2) >> +<< /S /GoTo /D (6.7.8.2) >> endobj 124 0 obj -(2.2.1. localconfig) +(2.2.2. Database Server) endobj 125 0 obj -<< /S /GoTo /D (6.7.8.2) >> +<< /S /GoTo /D (6.7.8.11.3) >> endobj 128 0 obj -(2.2.2. Database Server) +(2.2.2.1. MySQL) endobj 129 0 obj -<< /S /GoTo /D (6.7.8.12.3) >> +<< /S /GoTo /D (6.7.8.11.1.4) >> endobj 132 0 obj -(2.2.2.1. MySQL) +(2.2.2.1.1. Allow large attachments) endobj 133 0 obj -<< /S /GoTo /D (6.7.8.12.1.4) >> +<< /S /GoTo /D (6.7.8.11.2.4) >> endobj 136 0 obj -(2.2.2.1.1. Allow large attachments) +(2.2.2.1.2. Allow small words in fulltext indexes) endobj 137 0 obj -<< /S /GoTo /D (6.7.8.12.2.4) >> +<< /S /GoTo /D (6.7.8.11.3.4) >> endobj 140 0 obj -(2.2.2.1.2. Allow small words in fulltext indexes) +(2.2.2.1.3. Permit attachments table to grow beyond 4GB) endobj 141 0 obj -<< /S /GoTo /D (6.7.8.12.3.4) >> +<< /S /GoTo /D (6.7.8.11.4.4) >> endobj 144 0 obj -(2.2.2.1.3. Permit attachments table to grow beyond 4GB) +(2.2.2.1.4. Add a user to MySQL) endobj 145 0 obj -<< /S /GoTo /D (6.7.8.12.4.4) >> +<< /S /GoTo /D (6.7.8.12.3) >> endobj 148 0 obj -(2.2.2.1.4. Add a user to MySQL) +(2.2.2.2. PostgreSQL) endobj 149 0 obj -<< /S /GoTo /D (6.7.8.13.3) >> +<< /S /GoTo /D (6.7.8.12.5.4) >> endobj 152 0 obj -(2.2.2.2. PostgreSQL) +(2.2.2.2.1. Add a User to PostgreSQL) endobj 153 0 obj -<< /S /GoTo /D (6.7.8.13.5.4) >> +<< /S /GoTo /D (6.7.8.12.6.4) >> endobj 156 0 obj -(2.2.2.2.1. Add a User to PostgreSQL) +(2.2.2.2.2. Configure PostgreSQL) endobj 157 0 obj -<< /S /GoTo /D (6.7.8.13.6.4) >> +<< /S /GoTo /D (6.7.9.2) >> endobj 160 0 obj -(2.2.2.2.2. Configure PostgreSQL) +(2.2.3. checksetup.pl) endobj 161 0 obj -<< /S /GoTo /D (6.7.9.2) >> +<< /S /GoTo /D (6.7.10.2) >> endobj 164 0 obj -(2.2.3. checksetup.pl) +(2.2.4. Web server) endobj 165 0 obj -<< /S /GoTo /D (6.7.10.2) >> +<< /S /GoTo /D (6.7.10.13.3) >> endobj 168 0 obj -(2.2.4. Web server) +(2.2.4.1. Apache httpd) endobj 169 0 obj << /S /GoTo /D (6.7.10.14.3) >> endobj 172 0 obj -(2.2.4.1. Apache httpd) +(2.2.4.2. Microsoft Internet Information Services) endobj 173 0 obj -<< /S /GoTo /D (6.7.10.15.3) >> +<< /S /GoTo /D (6.7.11.2) >> endobj 176 0 obj -(2.2.4.2. Microsoft Internet Information Services) +(2.2.5. Bugzilla) endobj 177 0 obj -<< /S /GoTo /D (6.7.11.2) >> +<< /S /GoTo /D (6.8.1) >> endobj 180 0 obj -(2.2.5. Bugzilla) +(2.3. Optional Additional Configuration) endobj 181 0 obj -<< /S /GoTo /D (6.8.1) >> +<< /S /GoTo /D (6.8.12.2) >> endobj 184 0 obj -(2.3. Optional Additional Configuration) +(2.3.1. Bug Graphs) endobj 185 0 obj -<< /S /GoTo /D (6.8.12.2) >> +<< /S /GoTo /D (6.8.13.2) >> endobj 188 0 obj -(2.3.1. Bug Graphs) +(2.3.2. Dependency Charts) endobj 189 0 obj -<< /S /GoTo /D (6.8.13.2) >> +<< /S /GoTo /D (6.8.14.2) >> endobj 192 0 obj -(2.3.2. Dependency Charts) +(2.3.3. The Whining Cron) endobj 193 0 obj -<< /S /GoTo /D (6.8.14.2) >> +<< /S /GoTo /D (6.8.15.2) >> endobj 196 0 obj -(2.3.3. The Whining Cron) +(2.3.4. Whining) endobj 197 0 obj -<< /S /GoTo /D (6.8.15.2) >> +<< /S /GoTo /D (6.8.16.2) >> endobj 200 0 obj -(2.3.4. Whining) +(2.3.5. Patch Viewer) endobj 201 0 obj -<< /S /GoTo /D (6.8.16.2) >> +<< /S /GoTo /D (6.8.17.2) >> endobj 204 0 obj -(2.3.5. Patch Viewer) +(2.3.6. LDAP Authentication) endobj 205 0 obj -<< /S /GoTo /D (6.8.17.2) >> +<< /S /GoTo /D (6.8.18.2) >> endobj 208 0 obj -(2.3.6. LDAP Authentication) +(2.3.7. Serving Alternate Formats with the right MIME type) endobj 209 0 obj -<< /S /GoTo /D (6.8.18.2) >> +<< /S /GoTo /D (6.9.1) >> endobj 212 0 obj -(2.3.7. Serving Alternate Formats with the right MIME type) +(2.4. OSSpecific Installation Notes) endobj 213 0 obj -<< /S /GoTo /D (6.9.1) >> +<< /S /GoTo /D (6.9.19.2) >> endobj 216 0 obj -(2.4. OSSpecific Installation Notes) +(2.4.1. Microsoft Windows) endobj 217 0 obj -<< /S /GoTo /D (6.9.19.2) >> +<< /S /GoTo /D (6.9.19.15.3) >> endobj 220 0 obj -(2.4.1. Microsoft Windows) +(2.4.1.1. Win32 Perl) endobj 221 0 obj << /S /GoTo /D (6.9.19.16.3) >> endobj 224 0 obj -(2.4.1.1. Win32 Perl) +(2.4.1.2. Perl Modules on Win32) endobj 225 0 obj << /S /GoTo /D (6.9.19.17.3) >> endobj 228 0 obj -(2.4.1.2. Perl Modules on Win32) +(2.4.1.3. Code changes required to run on Win32) endobj 229 0 obj << /S /GoTo /D (6.9.19.18.3) >> endobj 232 0 obj -(2.4.1.3. Code changes required to run on Win32) +(2.4.1.4. Serving the web pages) endobj 233 0 obj << /S /GoTo /D (6.9.19.19.3) >> endobj 236 0 obj -(2.4.1.4. Serving the web pages) +(2.4.1.5. Sending Email) endobj 237 0 obj -<< /S /GoTo /D (6.9.19.20.3) >> +<< /S /GoTo /D (6.9.20.2) >> endobj 240 0 obj -(2.4.1.5. Sending Email) +(2.4.2. Mac OS X) endobj 241 0 obj -<< /S /GoTo /D (6.9.20.2) >> +<< /S /GoTo /D (6.9.20.20.3) >> endobj 244 0 obj -(2.4.2. Mac OS X) +(2.4.2.1. Sendmail) endobj 245 0 obj << /S /GoTo /D (6.9.20.21.3) >> endobj 248 0 obj -(2.4.2.1. Sendmail) +(2.4.2.2. Libraries \046 Perl Modules on Mac OS X) endobj 249 0 obj -<< /S /GoTo /D (6.9.20.22.3) >> +<< /S /GoTo /D (6.9.21.2) >> endobj 252 0 obj -(2.4.2.2. Libraries \046 Perl Modules on Mac OS X) +(2.4.3. LinuxMandrake 8.0) endobj 253 0 obj -<< /S /GoTo /D (6.9.21.2) >> +<< /S /GoTo /D (6.10.1) >> endobj 256 0 obj -(2.4.3. LinuxMandrake 8.0) +(2.5. UNIX \(nonroot\) Installation Notes) endobj 257 0 obj -<< /S /GoTo /D (6.10.1) >> +<< /S /GoTo /D (6.10.22.2) >> endobj 260 0 obj -(2.5. UNIX \(nonroot\) Installation Notes) +(2.5.1. Introduction) endobj 261 0 obj -<< /S /GoTo /D (6.10.22.2) >> +<< /S /GoTo /D (6.10.23.2) >> endobj 264 0 obj -(2.5.1. Introduction) +(2.5.2. MySQL) endobj 265 0 obj -<< /S /GoTo /D (6.10.23.2) >> +<< /S /GoTo /D (6.10.23.22.3) >> endobj 268 0 obj -(2.5.2. MySQL) +(2.5.2.1. Running MySQL as NonRoot) endobj 269 0 obj -<< /S /GoTo /D (6.10.23.23.3) >> +<< /S /GoTo /D (6.10.23.22.7.4) >> endobj 272 0 obj -(2.5.2.1. Running MySQL as NonRoot) +(2.5.2.1.1. The Custom Configuration Method) endobj 273 0 obj -<< /S /GoTo /D (6.10.23.23.7.4) >> +<< /S /GoTo /D (6.10.23.22.8.4) >> endobj 276 0 obj -(2.5.2.1.1. The Custom Configuration Method) +(2.5.2.1.2. The Custom Built Method) endobj 277 0 obj -<< /S /GoTo /D (6.10.23.23.8.4) >> +<< /S /GoTo /D (6.10.23.22.9.4) >> endobj 280 0 obj -(2.5.2.1.2. The Custom Built Method) +(2.5.2.1.3. Starting the Server) endobj 281 0 obj -<< /S /GoTo /D (6.10.23.23.9.4) >> +<< /S /GoTo /D (6.10.24.2) >> endobj 284 0 obj -(2.5.2.1.3. Starting the Server) +(2.5.3. Perl) endobj 285 0 obj -<< /S /GoTo /D (6.10.24.2) >> +<< /S /GoTo /D (6.10.25.2) >> endobj 288 0 obj -(2.5.3. Perl) +(2.5.4. Perl Modules) endobj 289 0 obj -<< /S /GoTo /D (6.10.25.2) >> +<< /S /GoTo /D (6.10.25.23.3) >> endobj 292 0 obj -(2.5.4. Perl Modules) +(2.5.4.1. The Independant Method) endobj 293 0 obj << /S /GoTo /D (6.10.25.24.3) >> endobj 296 0 obj -(2.5.4.1. The Independant Method) +(2.5.4.2. The Mixed Method) endobj 297 0 obj -<< /S /GoTo /D (6.10.25.25.3) >> +<< /S /GoTo /D (6.10.26.2) >> endobj 300 0 obj -(2.5.4.2. The Mixed Method) +(2.5.5. HTTP Server) endobj 301 0 obj -<< /S /GoTo /D (6.10.26.2) >> +<< /S /GoTo /D (6.10.26.25.3) >> endobj 304 0 obj -(2.5.5. HTTP Server) +(2.5.5.1. Running Apache as NonRoot) endobj 305 0 obj -<< /S /GoTo /D (6.10.26.26.3) >> +<< /S /GoTo /D (6.10.27.2) >> endobj 308 0 obj -(2.5.5.1. Running Apache as NonRoot) +(2.5.6. Bugzilla) endobj 309 0 obj -<< /S /GoTo /D (6.10.27.2) >> +<< /S /GoTo /D (7.0) >> endobj 312 0 obj -(2.5.6. Bugzilla) +(Chapter 3. Administering Bugzilla) endobj 313 0 obj -<< /S /GoTo /D (7.0) >> +<< /S /GoTo /D (7.11.1) >> endobj 316 0 obj -(Chapter 3. Administering Bugzilla) +(3.1. Bugzilla Configuration) endobj 317 0 obj -<< /S /GoTo /D (7.11.1) >> +<< /S /GoTo /D (7.12.1) >> endobj 320 0 obj -(3.1. Bugzilla Configuration) +(3.2. User Administration) endobj 321 0 obj -<< /S /GoTo /D (7.12.1) >> +<< /S /GoTo /D (7.12.28.2) >> endobj 324 0 obj -(3.2. User Administration) +(3.2.1. Creating the Default User) endobj 325 0 obj -<< /S /GoTo /D (7.12.28.2) >> +<< /S /GoTo /D (7.12.29.2) >> endobj 328 0 obj -(3.2.1. Creating the Default User) +(3.2.2. Managing Other Users) endobj 329 0 obj -<< /S /GoTo /D (7.12.29.2) >> +<< /S /GoTo /D (7.12.29.26.3) >> endobj 332 0 obj -(3.2.2. Managing Other Users) +(3.2.2.1. Creating new users) endobj 333 0 obj << /S /GoTo /D (7.12.29.27.3) >> endobj 336 0 obj -(3.2.2.1. Creating new users) +(3.2.2.2. Modifying Users) endobj 337 0 obj << /S /GoTo /D (7.12.29.28.3) >> endobj 340 0 obj -(3.2.2.2. Modifying Users) +(3.2.2.3. Impersonating Users) endobj 341 0 obj << /S /GoTo /D (7.13.1) >> @@ -1677,12 +1677,11 @@ endobj << /S /GoTo /D [1118 0 R /Fit ] >> endobj 1120 0 obj << -/Length 183 +/Length 181 /Filter /FlateDecode >> stream -xڍP1�0�� -���8M����#ʆ*�R;�.���V�!��l��N��Kkd����p��.3�Ы�r�R��� ��:�͎P� ^!0Ze��B"�x9�JI�z��0���L�e%����������Sy��W�f$m�m�.X�d:[�ʈ�SEj��Fl�����G���O<�jHendstream +xڍP=�@��+2���K�#w��G�M��U�����=�""��%��=�t)!S�#�wp�V�´��{dǥ�B*gc0�>��Z���[����-.Z#3C:��tb ���?.��MS{�gBM��d�y��-7���I�ɍL��bc�;��!5^��d�Uz�2'a���xG�G�endstream endobj 1118 0 obj << /Type /Page @@ -1701,19 +1700,21 @@ endobj /D [1118 0 R /XYZ 71.731 718.306 null] >> endobj 2 0 obj << -/D [1118 0 R /XYZ 512.21 700.222 null] +/D [1118 0 R /XYZ 501.873 700.222 null] >> endobj 1119 0 obj << /Font << /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1129 0 obj << -/Length 526 +/Length 525 /Filter /FlateDecode >> stream -xڍT���0��*% �I�N�H�@�E�.IAKԁ�0H*���3�P>����f���,��cA�H���+��,h� z���H�����g�%��$�^���O��Ty�ݭ-I��A�~�AF1/��e���i��nc�1>�D,�pT��I --���W�Q�k� f�TШ�?]!<��e�9*h(�lal&�HE�����Q��HNi�4��[�������<��C�ꁡ]�m��f\�u�B������"Ní��ͯq�ѩ��H``�j�1|^PV�=A�Ø]�u�G�����Ih�=��/��hdn��C�ڙK�h(����x���Q��6���ް��U,��Q�Mz#�°-���_~�(����Ѻ��us�i����vUSKnc��&�����A�ٔz@)i�;b@��۞��>l�q;�Ҿb`I���lid�1���uة�e�������~���v%��=����9</�K�&��#9ږ�1��d0��̱t�\�>l�ɦ%)Y���L�$endstream +xڍT���0��*% �I�N�H�@�E�.IAKԁ�0H*���3�P>����f���,��cA�H���+��,h� z���H�����g�%��$�^���O��Ty�ݭ-I��A�~�AF1/��e���i��nc�1>�D,��or�B��g�*� +4�'�i�OWϨ/�Ck� +J1[��3R��e�m�iԃl1�S��4���[�������<��C�ꁡ]�m��f\�u�B������"Ní��ͯq�ѩ��H��j�1|^PV�=A�Ø]�u�G�����Ih�=��/��hdn��C�ڙK�h(����x���Q��6���ް��U,��Q�Mz#�°-���_~�(����Ѻ��us�i����vUSKnc��&�����A�ٔz@)i�;b@��۞��>l�q;�Ҿb`I���lid�1���uة�e�������~���v%��=����9</�K�&��#9ږ�1��d0��̱t�\�>k���%)Y�� +��G#�endstream endobj 1128 0 obj << /Type /Page @@ -1730,29 +1731,23 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1135 0 obj << -/Length 56611 +/Length 56771 /Filter /FlateDecode >> stream -xڜ�M�l�ae7ׯ�0]Y��YS�r4�h���H�(�A@��տ�=�d�SyW.:4���:����+��������^Χ���_��N��O_�����?m������8���|��������o�^No�_���w���������������uZ�N��_��_������������7绯���ܿ�~�ӿ����?���w?���7�������?N٠<���ޞ���7��o>��r����������er��2��f~���?��O�u�������������n�����t��L��;�|����G�h}����E�ϧ���k�lgٺ����Wk��ް6���|zxy���� k�����i��ް6�u����IZ�Y�.���_�u?{�����ޤu?{������u?{�������1�;�~���;Pn��|���� i��3����� k����7����ް6���|�߾*�8��x`}8��X�~���������u?{�������7�q����W��w�cxt֜E� -<�n���YZ��7� <�n���EZ��7� <�n��l����^����p���,[�������&����X�O�Wk��ް6���zz�_�/Go8w]y>m���,K��u{�ֺ��am��u{O�Һ��am��u{ +xڔ�M�lGb%���Xt����wC��6���ҴI2�����&Lh���p~�n�'�NT^Oo�?p�����+��{��n���7/�����/�o���o���u�͟������y�x|~>�?�o�����wO/��ׇo~�������������������yZ�N�������o����ݷ���w�o�����_^�����������O������������lP�_�NoOW���q�w�|����7�����29�~��i3?�}�����m����~��������e�����t��L��;�|����G�h}����E�ϧ���k�lgٺ����Wk��ް6���|zxy���� k�����i��ް6�u����IZ�Y�.���_�u?{�����ޤu?{������u?{�������1�;�~���;Pn��|���� i��3����� k����7����ް6���|�߾*�8��x`}8��X�~���������u?{�������7�q����W��w�cxt֜E� +<�n���YZ��7� <�n���EZ��7� <�n��l����^����p���,[�������&����X�O�Wk��ް6���zz�_�Go8w]y>m���,K��u{�ֺ��am��u{O�Һ��am��u{ �Һ��am�u����u�e�<�n���QZ��7� <�n��,�ጳ7� <�n���Z��7� �n}<���u�e�<�>��^�7�q���������goXx`}==ٿ ��7� �n}�Ó��3βuX���h����X�� �"���,܁r{��8{C�������K�8��x`ݞ�Y~�goXx`ݞ��goXx`}==��os�� k�[_�No����q�����pz|���� k�O�y�mn��am��u{O���8{�������1<J�8��x`�Ã�67�ް6���=�{�mn��am��u{gk��ް6��m{w���8��x`��t���a�;�=��oY��7��;P��^�7�q����W�ww����&gѺ���gk��ް6���=��i��ް6���=��Gi��ް6���=�igٺ���c����� k��c8?K�~������1�Y�~�����w��7� .gٺ��������goXx`}:��X�~����������goXx���=�'�~���;Pn�@�Zݏ�P�@�=�dzt�goHx`���G�9{��������K�8��x`ݞ�Y~�goXx`���1D�ް6���z:�Y�~����Ow�g�ɓ�e�<�>���/�� k�O��gk��ް6���=�ɓ��am�u����'Or�����=�k��ް6���=�ɓ��am��u{�/�����]W�l�@~�ُ��q���Y�~����֧ӓ��I�ް6���z�{���� k�[_�NO�c'9��x`}8�ɏ��� k��cx���� k��c�;���^��m��AZ�Y�.�������q������1ȏ��� k��c����� k�Z��N�o�{\uX�Oo�gx9{��������Z��7� <��������]W��g ���,K��u{Oֺ��am��u{��Һ��am��u{ -�c'9{�������1�K�8��x`���QZ��7� <�n�A~�$goXx`}9��Y�~����w��W�m.gٺ����W�����am������l����X���$�͍�7� �n}����IβuX���`����X�� �Ҵ��,܁r{�c'9{C���֧��`"gٺ���3�;���X�N��c'9{��������Z��7� �n}�;�ˏ��,[�����"?v��7� <�n���Z��7� <�n�A~�$goXx���=����e�<�n���Z��7� <�n�A~�$goXx`����I�ް6����t��DβuX�O�V��� g��O����I�ސ6���rz~���� k�[߶g ?|��l]���)���� k��cx���� k��c�>���^�>�m�A��E� -<�n��l����X�� ?|��7� <�����ϙr�����ӝ&r����zz�>���X�Nw�ֺ��am��u{2����^��o�A��ُ��q��<J嗣7��;Pn@�9{C������Or�����#���7gٺ���S�{�%��\p4 �p����`s�6[>_d���}���s<��xx�u�����l�b��|���q�N�pY�y�\h�ɑ}C&+2�ӿ����������ƚ�?���?���o�����ޏ�ɸ�>�6��/ߥ�������u�������� ��[Y�������ɺ���V���hm ��ʚ�� ��[IG����q�m���&���[Y�����+k�o�6��oeM���r�m���&���[Y�����+k�o�6��oeM���r�m���&���[Y�����+k�o�6��oeM���r�m���&���[Y�����+���Y83�7J����������oeM���r������@5�7Z����������oeM���r������@5�7Z����������oeM���r������@5�7Z����������o���o4~�a�����Fc��V���(m ���z�����V���hm ��ʚ�� ��[Y�������ɺ���V���hm ��ʚ�� ��[Y�������ɺ���V���hm ��ʚ�� ��[Y�����i�or6�o��7*���r��Fi��V���hm ���:�o�.@5�7Z������Fk��V���hm ���:�o�.@5�7Z������Fk��V���hm ���:�o�.@5�7Z������Fk��V����p�e�oR6��o�L���r������@5�7Z����������oeM���r������@5�7Z����������oeM���r������@5�7Z����^�o��@5�7Z������Fk��V����p���I����V���hm ��ʚ�� ��[Y�������ɺ���V���hm ��ʚ�� ��[Y�������ɺ���V���hm ��ʚ�� ��[Y�������ɺ���V���hm ��J:�ot��o�L���r�m���&���[Y�����+k�o�6��oeM���r�m���&���[Y�����+k�o�6��oeM���r�m���&���[Y�����+k�o�6��oeM���r�m���&���[IG����q����Q�@5�7Z����������oeM���r������@5�7Z����^�o��@5�7Z������Fk��V���hm ���:�o�.@5�7Z������Fk��V���hm ��F�������[)G����q����Q�@5�7Z����������o�M���������>�ȇ�����7������qd��G��������������-�Oϧ���wE:ow���:?��|v��C���u�������,?_�u�e�<�>�^_�u?{���������6ʺ��am�������3Ke��ް6��e{O�:βuX����Qe��ް6���=���Y*�~������1�[�~������c�w��(;w�ܞ��,����X�gpg����X_��.ۯ�~����o����oX�:βuXN//ֺ��am����t��(����X���$�ጳ7� <�4�ã��,ZW��u��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����c5����㜫1$]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Akq5FI�j:ǫ1ʙ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j�r�1h���%�1h,��(gVcP�@^���jXW ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Akq5�H�C���j�R��T�Wc�3�1(m ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(�X�Ag�p5�(�C���j�rf5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc����ȫ1ʚ��6�Wc�5�1hm ��(�X�Ag�x5�8�jI ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@\�Qұ����j�rf5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����c5������jJȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc����ȫ1ʚ��6�Wc�5�1hm ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(kVc��@\�1ҬƐ�q���c5������jJȫ1ʚ��6�Wc�u�Ɛu�j���[�����+-��1�YVcμ��^�h�~bߌy�1��w��?}�������|>��Ͽ|�ӏ�\y|���]��ݿM�̩��{Υ��E��F>�vF@�8^1ʌ���p<1b�Y!e�x_�(3/B��Ḉ0f[��e#̰dz"F�UR�7E�2�"�,���e�xM�(3&B���QfI�����̌)�#"��� �c���̀)��!F��R��C�2�!�,��� e�x5�(3B���d�Qf1���ýcs!$��!�[!`l/�e�BHY8� 1ʬ���p�b��!e�x D(�>(�� F�qR��A�2� �,�efAHY8ʹ ���"�Qf����9��)�[ F�)R��@�r�q�b�!e�p�� ?�x��3�A�����P��P6��?�2��,�~eV?HY8��0�L~��p<�!�s�������)�SF��R�w>�23�,�|����e�x��(3�A���Qf݃���m�̴)��B9w=@�8Z�0�}ԃtP8�alcуta��a��� c�x����q�\p��a�� e�x��(��A���Qf�������l�we�;HY8��0�,w��p��a��� e�x�C(�f(NjF��R��:�2k�,oue�:HY8���t��`��a|c��|a<�a�Y� c�x��(3�A���8�P�mP6��9�2��,�reV9HY8��0�Lr��p<�!�s����5��)�SF�%R�w8�23�,�p����e�x��(3�A�����Qf}����� c�$��� ���� -ƫF�� 2�'7�2��,�me�6HY8�ʹ����҆Qfh���� ���)�F�� R�6�r�k��q��a�� e�xZ�(��A���QfV����Q���˦Ʊr��QfP����9 �̚)�[�8�4H��CB8w4��8^�0ʌh��p<�a�Y� e�x?�(3�A���x�P��P6��3�2��,�feV3HY8��0�Lf��p<�!�s/�����X)�SF��R�w2�23�,�d����e�x!�(3�A���<�1�u~��6�f����a����l�beF1HY8��0�,b��p��a��� e�xC(�(�KF�!R�g0�2+�,o`e&0HY8�ʹ�����Qf���������)ǻF��R�G/�rn^��q�xa�c���a<wa�Y� c�x��(3uA���ЅPΝP6�W.�2#�,O\e.HY80��[��p<nq[yٶ8V.8^�0�[��p<ka�Y� e�x��(3iA���P�=P6��,�2c�,OYe�,HY8ޱ0��X��p8b!�ٰ�a�p���ƀ�>�x���^A���v�Qf������ -����l�V�����[�͊#������+�?�����Ɋqd߬x���w�����*���v.��}����h������ςk�3����~|>=>��]�s?{C�������Z��7� �n}ڞ�����u�e�<�nO��'�ʺ��am��u{gk��ް6���=���Q)�~������������u�e�<�>�^_�u?{��������YZ��7� <���e�vZ��9�:�sȺ�y@GY����fD� �e͎Z�K:F�)r6��t�3k:(m ��(ku��@��Q�l꠵���c�sV����u�5�:hm o�(k�u��@��Q��렵���#�����@�Q֬젵������AkyjGY�����ڎ�ι�.@�Q�,������AkqvGI��:��;�9�wH��y|GY��������f�� � e�Z�+<�:gxȺ�y�GY�ă����f�� �9e�Zȋ<�:'yȺ�y�GY�ʃ��.��f�� �ie�6Z��<�:�yȺ�y�GY�Ѓ��F����t�gz�3;=(m /���!��e�ZZ�{=ʚ��6�'{�5�=hm ����!���e�rZ��=ʚ��6��{�5�=hm /���!��e͊Z�;>ʚ!�6��|�5[>hm ����!��A��}����>J8F}�X8��Q��������#��i��@�Q֬������Aky�GY����ʏ�Ι�.@�Q�,���������Aky�GY�����⏱���.@�Q֬���������Aky�GY��������f����� �@�,o�)gF�P�@�R�������d�s -���ǀ�5k@hm �)k���@�R�l���� -d�s������5�@hm o)kƁ��@�R������d�s"���G��5+Ahm �)k����@� -Rұ����Z�Qf.����� ��bJțAʚ� �6�g��5�Ahm /�"��� e�zZ��Aʚ!�6�'��5Bhm ��"��!!e͒Z�[Bʚ1!�6�焔5{Bhm / - �eR�+�G��5�Bhm � -)k����@�Rұ-����q�y!�.@R�,����1��BkyfHY�3���Ґ�Ω!�.@R֬ ����7��BkyrHY�9���ꐱ��!�.@R�,����=��Bky~HY�?������ "�.@!R֬����C��c����)"��J�kD�:�Ⱥ�y�HY�H���&��f�� �Y"e�.Z��D�:��Ⱥ�y�HY�N���>��f�� �"e�FZ�+E�:g�Ⱥ�y�HY�T���V��f�� �"e�^ZȋE�:'�Ⱥ�q�HI�j:ǻEʙ�"�6����5�Ehm ��/"��#e͂Z�Fʚ#�6�g��5;Fhm / �e��+�nj�5kFhm �)k���@�4R�l����jd�sֈ�����5�Fhm o)kƍ��@�7R������pd��8"g�p�H)��*�;Gʙ�#�6����5[Ghm ��;"�����-�x��G.r�yt|�e��G���}~�ѣqd=z�G�������~�uL ���7�w_��o�O_o���?��˵�����/�z�������Kx��Ƴ��p��.��E��&��.ZY�E����E+k�h�6�h%]4:�]�q�.����heM��r�����@5]4Z�]���.����heM��r�����@5]4Z�]���.����heM��r�����@5]4Z�]���.����heM��b����FgḋV�t�(m w��:�h�.@5]4Z�]����Fk��V�t�hm w��:�h�.@5]4Z�]����Fk��V�t�hm w��:�h�.@5]4Z�]����Fk��V�t�hm w��:�h�.@ꢕs����]��.���.Z9�E����E륋� -�.ZY�E����E+k�h�6��heM��rm���&��.ZY�E����E+k�h�6��heM��rm���&��.ZY�E����E+k�h�6��heM��bm����8좕rtѨ,w�ʙ.� �.ZY�E����E��ɺ���V�t�hm w�ʚ.� �.ZY�E����E��ɺ���V�t�hm w�ʚ.� �.ZY�E����E��ɺ���V�t�hm w�ʚ.� �.ZIG���am��I�83]4J�]����Fk��V�t�hm w��:�h�.@5]4Z�]����Fk��V�t�hm w��:�h�.@5]4Z�]����Fk��V�t�hm w��z�����V�t�hm w�ʚ.� �.ZIG���qm���&��.ZY�E����E+k�h�6��heM��rm���&��.ZY�E����E+k�h�6��heM��rm���&��.ZY�E����E+k�h�6��heM��rm���&��.ZY�E����E+���Y83]4J�]���.����heM��r�����@5]4Z�]���.����heM��r�����@5]4Z�]���.����heM��r�����@5]4Z�]���.���h%]4:�]�r��Fi��V�t�hm w��:�h�.@5]4Z�]����Fk��V�t�hm w��z�����V�t�hm w�ʚ.� �.ZY�E����E��ɺ���V�t�hm w�ʚ.� �.ZY�E����Ei�hr6�h�]4*�]�r��Fi��V�t�hm w��:�h�.@�^�E�EF��"�]��E��s<o��y����μ�O/�le<m��z��\h�ɑ/�U�?��˯�����?�i�Ͽ�˟���?����7}?��_/��1���P���������&�9��_9��pz}}�v�+��� k�ϧ��gi��ް6���zz}~���� k�[�?]��u�e�<�n���UZ��7� <�n���MZ��7� <�n���Z��7� �n}�ý��G�ٸ���g���ސ6���=�;k��ް6���zzy�_��� k�[�Χ��ۈ���l]�և�ˋ��goXx`ݾ>?J�~������1<�o8�� k�>w�cxt֜E� -<�n���YZ��7� <�n���EZ��7� <���+�:�\��@�rQ�l��u▋��-�6�\�ul���������;�[.ʙ-�.@�rqֱ���▋��-�6�\�ul�����墬�rA��-g[.lm n�8��rakq��Yǖ[�[.ʚ-�.@�rqֱ���▋��-�6�\�ul�����墬�rA��-g[.lm m�8�����ᖋs�-�6�\�5[.h]����c˅� �-g[.lm n�8��rakq�EY����[.�:�\��@�rqֱ���▋��-�6�\�5[.h]����c˅� �-g[.lm n�8��rakq�EY���[.��e˅�a������[.�9�\X�@�r1ֹ�B��[.�:�\��@�rqֱ���▋��-�6�\�5[.h]����c˅� �-g[.lm n�8��rakq�EY����[.�:�\��@�rqֱ���▋��-�6��\�tl���q�����+�[.�9�\X�@�rqֱ���▋�f���\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[�[.�:�\��@�rqֱ���▋�f���\�ul�������c˅� �-'ݷ\�Y8�rQʱ���ᖋs�-�6�\�ul�������c˅� �-e͖Z n�8��rakq��Yǖ[�[.�:�\��@�rQ�l��u▋��-�6�\�ul�������c˅� �-c�[.d]����c˅� �-g[.lm m�8�����ᖋrf���\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[�[.�:�\��@�rqֱ���▋�f���\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[H[.N�o���p���c˅� �-e͖Z n�8��rakq��Yǖ[�[.�:�\��@�rQ�l��u▋��-�6�\�ul�������c˅� �-e͖Z n�8��rakq��Yǖ[�[.�:�\��@�rQ�l��uҖ���[.�,n�8��raiq��Yǖ[�[.ʚ-�.@�rqֱ���▋��-�6�\�ul������b�s˅�+�\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[�[.�:�\��@�rqֱ���Җ���-t6��\�r�rae�p��9ǖK�[.�:�\��@�rQ�l��u�l��-��~��E��\�"_~��o�<\=�}�}�����o����W�eƙٷ\ν������������������z���|�������|��x�+�&c���E`7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�ٍ!g�x7F9����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZȻ1�zٍ� +�c'9{�������1�K�8��x`���QZ��7� <�n�A~�$goXx`}9��Y�~����w��W�m.gٺ����W�����am������l����X���$�͍�7� �n}����IβuX���`����X�� �Ҵ��,܁r{�c'9{C���֧��`"gٺ���3�;���X�N��c'9{��������Z��7� �n}�;�ˏ��,[�����"?v��7� <�n���Z��7� <�n�A~�$goXx���=����e�<�n���Z��7� <�n�A~�$goXx`����I�ް6����t��DβuX�O�V��� g��O����I�ސ6���rz~���� k�[߶g ?|��l]���)���� k��cx���� k��c�>���^�>�m�A��E� +<�n��l����X�� ?|��7� <�����ϙr�����ӝ&r����zz�>���X�Nw�ֺ��am��u{2����^��o�A��ُ��q��<J�ף7��;Pn@�9{C������Or�����#���7gٺ���S�{�%��\p4 �p����`s�6[>_d���}���s<��xx�u�����l�b��~���q�N�pY�y�\h�ɑ}C&+2������/?��_ƚ�����������?]���?�q�}��m��_�K� �������ߟ��7Z������Fk��6���ur������@5�7Z�����������8g�M�������Fk��V���hm ��ʚ�� ���Xg�M�������Fk��V���hm ��ʚ�� ���Xg�M�������Fk��V���hm ��ʚ�� ���Xg�M�������Fk��V����p�+g�o�6��oc��7Y ��ʚ�� ��[Y�����+k�o�6��oc��7Y ��ʚ�� ��[Y�����+k�o�6��oc��7Y ��ʚ�� ��[Y�����+k�o�6��oc��7Y ��ʹ��h���[ G����q����Q�@���ur������@5�7Z������Fk��6���ur������@5�7Z������Fk��6���ur������@5�7Z������Fk��6����l��J9�oT��o�L���r������@u��d]��+k�o�6��oeM���r������@u��d]��+k�o�6��oeM���r������@u��d]��+k�o�6��oeM���b�����Fg��6��ߤl��ʙ�� ��[Y�����+k�o�6��oc��7Y ��ʚ�� ��[Y�����+k�o�6��oc��7Y ��ʚ�� ��[Y�����+k�o�6��oa���`]��+k�o�6��oeM���b�����Fg��6���tr������@5�7Z������Fk��6���ur������@5�7Z������Fk��6���ur������@5�7Z������Fk��6���ur������@쿕t���,��ʙ�� ���Xg�M�������Fk��V���hm ��ʚ�� ���Xg�M�������Fk��V���hm ��ʚ�� ���Xg�M�������Fk��V���hm ��ʚ�� ���Xg�M�����������[9�����+k�o�6��oc��7Y ��ʚ�� ��[Y�����+k�o�6��oa���`]��+k�o�6��oeM���r������@u��d]��+k�o�6��oeM���r������@쿍4�79���R������[9�����+k�o�6��oc��7Y ���/��/2��a�}|����ϝo��O�!&�����ߏ��?���?~�ß����-�Oϧ���wE:ow���:?��~v��C���u�������,?_�u�e�<�>�^_�u?{���������6ʺ��am�������3Ke��ް6��e{O�:βuX����Qe��ް6���=���Y*�~������1�[�~������c�w��(;w�ܞ��,����X�gpg����X_��.ۯ�~����o����oX�:βuXN//ֺ��am����t��(����X���$�ጳ7� <�4�ã��,ZW��u��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����c5����㜫1$]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Akq5FI�j:ǫ1ʙ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j�r�1h���%�1h,��(gVcP�@^���jXW ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Akq5�H�C���j�R��T�Wc�3�1(m ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(�X�Ag�p5�(�C���j�rf5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc����ȫ1ʚ��6�Wc�5�1hm ��(�X�Ag�x5�8�jI ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@^�Q֬Ơ�����Y�Aky5�X�jY ��(kVc��@\�Qұ����j�rf5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����Y�Aky5FY����j��f5� ��c��1d]����c5������jJȫ1ʚ��6�Wc�u�Ɛu�j��f5� ��e�jZȫ1ʚ��6�Wc����ȫ1ʚ��6�Wc�5�1hm ��(kVc��@^�1ֹC�ȫ1ʚ��6�Wc�5�1hm ��(kVc��@\�1ҬƐ�q���c5������jJȫ1ʚ��6�Wc�u�Ɛu�j���[�����+-��1�YVcμ��^�h�~bߌy�1��������}w>����˯?��ӯ׆E�?+0EW�p�oG2sj���si�r�㡑O���P6�WF�2##�,O�eFHY8�1�̋��p8."��a�xY�3,B���QfU����M�̤)ǃ"B9�D@�8^1ʌ���p<%b�Y!e�xG�(3#B����m�eC�X��xA�(3 B���|�Qf=�������t)��!B9wC@�8^ 1ʌ���p<b�Y!e�p/��\ ?�x,D�V�K!F��R�gB�2+!�,o�e&BHY8ʹ���:�Qf����i��2)ǻ F�YR�GA�rn���q�b�!e�x�(�B����Qf +����!��; �l��eF@HY8��1Ʊ�B0��0����p<�!�s��������)dzF��R�7?�2��,~����e�x��(3�A���ԇQf郔�����)�#B97>@�8^�0�|��p<�a�Y� e�x��(3�A���P�]P6�V=�p� �Nz�X� �G�ya�<�X8ly+/ye�<HY8��0ʬx��p��a��� e�x�C(�~(��F��R��;�2��,�vef;HY8�ʹ����b�Qf�������Z)�[F��R�:�1; ,�t�� �GOta:�X8��0��s��p<�!�s����e��0)dzF�UR�79�2��,r����e�x��(3�A����Qf�������)�#B978@�8^�0�p��p<�a�Y� e�p{��� ?�pxC�������ft����� ���)�{F�� R��6�rnm��q��a�� e�xf�(��A���ƆQfb���� ����l�ke�5HY8��0�,k��p��a��� e�xT��q�\p��a�� e�xN�(��A��ᖆ1�) ~��� 06�W4�2#�,Ohe4HY8��0��g��p<�!�s;������p)dzF��R�73�2��,f����e�x-�(3�A���T�Qf)������L)�#B972@�8^�0�d��p8�a�c��a��a��� c�xC(�.(ǫF�QR�'1�2��,�ae�0HY8�ʹ�����Qf������ +)�F� R�0�r�_��q�~a�� e�x��(�|A����Qf����������l.^�� �G�]a�.�X80�L]��p<t!�s�������)�F��R��-�2��,�[�V^�-����-�2��,�ZeV-HY80�LZ��p<h!�s����5�̘)�SF�%R�w,�23�,�Xc6,@X0\�0�1`A��0��0¬W��p�]a��� e�x�B(�n(ǫ�� F+�c���H��d��-��Ŋ��lm�bh�b�7+�f�����~���@��y��΅��﷿��-T<>���Yp�q��>7ۏϧǧ�k\q�goHx`}=�=Z�~����O�Sy������l]���)���[Y��7� <�n��l����X����1*e��ް6���|zx������l]�և�뫵�goXx`}>=�<K�~����ֱu����Aky=�X�|Y �(kt��@��Q蠵�<�����AkqI�H3�C���rfM� �=e͠Zȓ:ʚM�6�Wu�u��ufY� �meZ��:ʚ}�6�v��2���#;ʚ��6�wv�5C;hm O�(k�v��@^�1�9�C�ȃ;ʚ��6�7w�5�;hm ��(���Ag�xy�8��I ��(k�w��@��Q�𠵁<�����Aky��X�Y �(k�x��@��Q<ǣ���Aky��X�$Y ��(kVy��@��Q�<ͣ���Aky��X�<Y �(kz��@��Q�1҃���L�rf�� �c�S=d]�<֣�Y�Aky�GY3��d��f�� ��c��=d]�<ܣ�Y�Aky�GY3ރ��|��f�� �c�>d]�<⣬Y�Aky�GY3��f�� �5c�s>d]�4補��?�p�G Ǩdz>ʙ]�6��}��2����>ʚu�6��}�5?hm O�(k6~��@^�1�9�C��C?ʚ��6��~�5c?hm ��(k�~��@^�1�9�C�ȣ?ʚ��6�w�5�?hm O�(k���@\�1�����q8���c��� ��J�3@ʚ �6����uN�u���f � �= e� Zȓ@ʚM �6�W��u��u�0��f� �m e�8Z��@ʚ} �6���uN�u�H��f%� � e�PZ�SAJ:���Y8\2����q<��YBiy3HY3���l��f7� �� c��Ad]�<��YBky?HY3 ��fC� �!c�3Bd]�<$��YBkyKHY3&��fO� �E!a�L +�ufU� �]!eͰZ��BJ:���Y8^2�9/D��Cʚ�!�6�7��5#Chm �)kv���@^2�95D��cCʚ�!�6����5�Chm O)k6���@^2�9;D���Cʚ�!�6����5�Chm �)k����@^ 2�9AD��#Dʚ"�6w��t��p<E���"Biy��X�Y )k���@�$R���<K���%Bky��X�4Y �)k։��@�'R����<Q���(Bky��X�LY )k����@�*R���<W���+Bky��X�dY �)�X-Bg�x�H93\���t��f�� ��"c��Ed]�<`��Y0Bky�HY3b��f�� �%#a�L�uf�� �=#e͠ZȓFʚM#�6�W��u��uf�� �m#eZ��Fʚ}#�6��4G�l�)�X9Be�x�H93t���ԑ�f�� �#c�sGd]�<xt�����"c���E�7��/����������/8z4��GOc��?�����O�� ������������������~��^����b\ou>��?| /]4�xv��|�E�t�d]��E+k�h�6��heM��b����Fgḋ6��E�tr�����@5]4Z�]����Fk��6��E�ur�����@5]4Z�]����Fk��6��E�ur�����@5]4Z�]����Fk��6��E�ur�����@좕tt��,w�ʙ.� �.�XgM��]����Fk��V�t�hm w�ʚ.� �.�XgM��]����Fk��V�t�hm w�ʚ.� �.�XgM��]����Fk��V�t�hm w�ʚ.� �.�XgM�H]�r�]4?°�V��E��p�E+g�h�6��ha�t�`]��E+k�h�6��heM��r�����@uv�d]��E+k�h�6��heM��r�����@uv�d]��E+k�h�6��heM��r�����@좍4]49�]�R�.���.Z9�E����E+k�h�6��hc�]4Y w�ʚ.� �.ZY�E����E+k�h�6��hc�]4Y w�ʚ.� �.ZY�E����E+k�h�6��hc�]4Y w�ʚ.� �.ZY�E����E+���Y8좍2]4)�]�r��Fi��V�t�hm w�ʚ.� �.�XgM��]����Fk��V�t�hm w�ʚ.� �.�XgM��]����Fk��V�t�hm w�ʚ.� �.ZX/]4XW w�ʚ.� �.ZY�E����E+���Y8sv�$]��E+k�h�6��heM��r�����@uv�d]��E+k�h�6��heM��r�����@uv�d]��E+k�h�6��heM��r�����@uv�d]��E+k�h�6�h%]4:�]�r��Fi��6��E�ur�����@5]4Z�]����Fk��6��E�ur�����@5]4Z�]����Fk��6��E�ur�����@5]4Z�]����Fk��6��E�ub����FgḋV�t�(m w�ʚ.� �.�XgM��]����Fk��V�t�hm w�ʚ.� �.ZX/]4XW w�ʚ.� �.ZY�E����E+k�h�6��hc�]4Y w�ʚ.� �.ZY�E����E+k�h�6�h#MM��a����FeḋV�t�(m w�ʚ.� �.�XgM��]�q��h���?\下>���{���71�]���>�ڙ�����ς�����7=�B���39��>���O?����?���O���_�۟��?����7}?��_/��1���P���������&�9��_9��pz}}�v�+��� k�ϧ��gi��ް6���zz}~���� k�[�?]��u�e�<�n���UZ��7� <�n���MZ��7� <�n���Z��7� �n}�ý��G�ٸ���g���ސ6���=�;k��ް6���zzy�_��� k�[�Χ��ۈ���l]�և�ˋ��goXx`ݾ>?J�~������1<�o8�� k�>w�cxt֜E� +<�n���YZ��7� <�n���EZ��7� <���+�:�\��@�rQ�l��u▋��-�6�\�ul���������;�[.ʙ-�.@�rqֱ���▋��-�6�\�ul�����墬�rA��-g[.lm n�8��rakq��Yǖ[�[.ʚ-�.@�rqֱ���▋��-�6�\�ul�����墬�rA��-g[.lm m�8�����ᖋs�-�6�\�5[.h]����c˅� �-g[.lm n�8��rakq�EY����[.�:�\��@�rqֱ���▋��-�6�\�5[.h]����c˅� �-g[.lm n�8��rakq�EY���[.��u˅�a������[.�9�\X�@�r1ֹ�B��[.�:�\��@�rqֱ���▋��-�6�\�5[.h]����c˅� �-g[.lm n�8��rakq�EY����[.�:�\��@�rqֱ���▋��-�6��\�tl���q�����+�[.�9�\X�@�rqֱ���▋�f���\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[�[.�:�\��@�rqֱ���▋�f���\�ul�������c˅� �-'ݷ\�Y8�rQʱ���ᖋs�-�6�\�ul�������c˅� �-e͖Z n�8��rakq��Yǖ[�[.�:�\��@�rQ�l��u▋��-�6�\�ul�������c˅� �-c�[.d]����c˅� �-g[.lm m�8�����ᖋrf���\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[�[.�:�\��@�rqֱ���▋�f���\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[H[.N�o���p���c˅� �-e͖Z n�8��rakq��Yǖ[�[.�:�\��@�rQ�l��u▋��-�6�\�ul�������c˅� �-e͖Z n�8��rakq��Yǖ[�[.�:�\��@�rQ�l��uҖ���[.�,n�8��raiq��Yǖ[�[.ʚ-�.@�rqֱ���▋��-�6�\�ul������b�s˅�+�\�ul�������c˅� �-g[.lm n�(k�\к�q��Yǖ[�[.�:�\��@�rqֱ���Җ���-t6��\�r�rae�p��9ǖK�[.�:�\��@�rQ�l��u�l��-��~��E��\�"_��o�<\=�}�}�����o����W�eƙٷ\ν���o?�������������z���|�������|��x�+�&c���E`7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�ٍ!g�x7F9����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZȻ1�zٍ� ��e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6wc�t�Ơ�p�c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(�؍Ag�x7F9����n�����.@ލQ��Ơ�����ٍAky7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n�����.@ڍQ�}7�a���c7������nJȻ1�zٍ� -��e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ��ivc��8܍Qʱ����n�rf7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��%�1�,��evcH�8ލQ��Ơ�����ٍAky7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n��^vc��y7FY����n��f7� ��%�1�,���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZ��1J:vc�Y8ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7��wc�t�Ơ�p���ٍAiy7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n��^vc��y7FY����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZ��1F��r6wc�r�Ơ�p���ٍAiy7FY����n�����.@ލ�%���1.r�s|��<�_O��x����6��m�����y~��^��ǡ��rL�c���<$r�}�^������z}=܌��-t���|���z���zZ��-ʚ��6��[�5�-hm ���\o!���e�zZ��-ʚ��6��[�5�-hm ��i�[��8^oQά�����ޢ�YoAky�EY�ނ��z�����.@^oQ֬�����ޢ�YoAky�EY�ނ��z��^�[��y�EY�ނ��z��f�� ��e�zZ��-�:�[Ⱥ�y�EY�ނ��z��f�� ��%�-�,���\o!���e�zZ��-ʚ��6��[�5�-hm ���\o!���e�zZ��-ʚ��6��[�5�-hm ���\o!���e�zZ��-ʚ��6��[�5�-hm ���\o!���e�zZ��-J:�[�Y8^oQά������b�s�����[�5�-hm ��(k�[��@^oQ֬������b�s�����[�5�-hm ��(k�[��@^oQ֬������b�s�����[�5�-hm ��(k�[��@^oQ֬������b�s�����[�s_oA�G��(�XoAc�x�E9�ނ��z��^�[��y�EY�ނ��z��f�� ��e�zZ��-�:�[Ⱥ�y�EY�ނ��z��f�� ��e�zZ��-�:�[Ⱥ�y�EY�ނ��z��f�� ��e�zZ��-F��r6�[�r����p�ޢ�YoAiy�EY�ނ��z�����.@^oQ֬�����ޢ�YoAky�EY�ނ��z�����.@^oQ֬�����ޢ�YoAky�EY�ނ��z�����.@^oQ֬�����ޢ�YoAkq�EI�z:��-F��R6��[�3�-(m ��(k�[��@^oQ֬������b�s�����[�5�-hm ��(k�[��@^oQ֬������b�s�����[�5�-hm ��(k�[��@^oQ֬������"�����@^oQ֬�����ޢ�YoAkq�EI�z:��-�9�[H��y�EY�ނ��z��f�� ��e�zZ��-�:�[Ⱥ�y�EY�ނ��z��f�� ��e�zZ��-�:�[Ⱥ�y�EY�ނ��z��f�� ��e�zZ��-�:�[Ⱥ�y�EY�ނ��z����t��[�3�-(m ���\o!���e�zZ��-ʚ��6��[�5�-hm ���\o!���e�zZ��-ʚ��6��[�5�-hm ���\o!���e�zZ��-ʚ��6��[�5�-hm ���\o!���%�-�,��(g�[P�@^oQ֬������b�s�����[�5�-hm ��(k�[��@^oQ֬������"�����@^oQ֬�����ޢ�YoAky�EY�ނ��z�����.@^oQ֬�����ޢ�YoAky�EY�ނ��z��f��������-�,��(g�[P�@^oQ֬������b�s�����[h�Ĭ��E�zˇ���_dYo�������������3Yo��-����o���_�����������Z����#��g�����8��]a��L�?��8�|H���@L��t$��,'��9a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Z�����D���DX9������L�ɺ�9V�$�hm '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������L�ɺ�)V�=F�G&�J8a4�a�L"��r",��D�+�aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Z����&&g�0Vʑ��p�+ga�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6a%�0:���Q&&e�8V�$�(m '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������%� -�DXY�����+ka�6a%�0:lj�q�D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��b"��#Fg�8V�$�(m '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@L��t$��,'�ʙD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������%� -�DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��b"l�I���8L��r$¨,'�ʙD� �DXY������L�ɺ�9>]]"�����<&��������uL"|=#����M��go�_�W�q(g.��yD�����_��7"�G'��/�������d��|I��$��E�%�d]���deM��r��)���@,��t��,��9h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�������Z9S@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@�,�ɺ���Vν�F�G�J8 +��e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ��ivc��8܍Qʱ����n�rf7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��%�1�,��evcH�8ލQ��Ơ�����ٍAky7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n��^vc��y7FY����n��f7� ��%�1�,���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZȻ1ʚ��6�wc�5�1hm ���܍!���e�nZ��1J:vc�Y8ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7���wc�5�1hm ��(kvc��@ލQ��Ơ���c�s7��wc�t�Ơ�p���ٍAiy7FY����n�����.@ލQ��Ơ�����ٍAky7FY����n��^vc��y7FY����n��f7� ��e�nZȻ1�:wcȺ�y7FY����n��f7� ��e�nZ��1F��r6wc�r�Ơ�p���ٍAiy7FY����n�����.@ލ�%���1.r�s|��=�_O��x����6��m�����y~��^��ǡ��rL�c���/?~�۾R��|�~�J��n����W�[>��x���E`�� ��e�zZ��-ʚ��6��[�u���u�z��f�� ��e�zZ��-ʚ��6�[�4�-�l��(g�[P�@^oQ֬�����ޢ�YoAky��X�zY ��(k�[��@^oQ֬�����ޢ�YoAky�EX/�-`]��ޢ�YoAky�EY�ނ��z��f�� ��c��-d]��ޢ�YoAky�EY�ނ��z����t��[�s���t�z��f�� ��e�zZ��-ʚ��6��[�u���u�z��f�� ��e�zZ��-ʚ��6��[�u���u�z��f�� ��e�zZ��-ʚ��6��[�u���u�z��f�� ��%�-�,��(g�[P�@^o1ֹ�B���-ʚ��6��[�5�-hm ��(k�[��@^o1ֹ�B���-ʚ��6��[�5�-hm ��(k�[��@^o1ֹ�B���-ʚ��6��[�5�-hm ��(k�[��@^o1ֹ�B�H�-ʹ����#�[�p����p�ޢ�YoAiy�EX/�-`]��ޢ�YoAky�EY�ނ��z��f�� ��c��-d]��ޢ�YoAky�EY�ނ��z��f�� ��c��-d]��ޢ�YoAky�EY�ނ��z��f�� ��#�z9��-J9�[PY8^oQά�����ޢ�YoAky��X�zY ��(k�[��@^oQ֬�����ޢ�YoAky��X�zY ��(k�[��@^oQ֬�����ޢ�YoAky��X�zY ��(k�[��@^oQ֬�����ޢ�c�������z)��-ʙ��6��[�5�-hm ��(k�[��@^o1ֹ�B���-ʚ��6��[�5�-hm ��(k�[��@^o1ֹ�B���-ʚ��6��[�5�-hm ��(k�[��@^o��zXW ��(k�[��@^oQ֬�����ޢ�c�������-$]��ޢ�YoAky�EY�ނ��z��f�� ��c��-d]��ޢ�YoAky�EY�ނ��z��f�� ��c��-d]��ޢ�YoAky�EY�ނ��z��f�� ��c��-d]��ޢ�YoAkq�EI�z:��-ʙ��6��[�u���u�z��f�� ��e�zZ��-ʚ��6��[�u���u�z��f�� ��e�zZ��-ʚ��6��[�u���u�z��f�� ��e�zZ��-ʚ��6��[�u���u�z����t��[�3�-(m ��(k�[��@^o1ֹ�B���-ʚ��6��[�5�-hm ��(k�[��@^o��zXW ��(k�[��@^oQ֬�����ޢ�YoAky��X�zY ��(k�[��@^oQ֬�����ޢ�YoAkq��H��B���z�R��T��[�3�-(m ��(k�[��@^o1ֹ�B���-�Ib�[�"c���E��[�/�����Xoyz������[ƙ����?|�������_�����?}�V!?����Y/s�}��r�D�9��<N�?_a�6a%�0:lj�q�D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��b"��#Fg�8V�$�(m '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@J��sO�������D���DX9������%� +�DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��b"l�I���8L��r$¨,'�ʙD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXIG"���a"l�I�I�8N��3�0Jȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��zI���9V�$�hm '�ʚD� �DXIG"���q"l�3&��DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��r"l�3&��DXY�����+ka�6�aeM"��r"l�3&��DXY�����+�H��Y8N��3�0Jȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D���aeM"��r"��I���@N��5�0Zȉ���D��a%�0:lj�r&Fi9V�$�hm '��:a�.@N��5�0Zȉ��&Fk9V�$�hm '��zI���9V�$�hm '�ʚD� �DXY������L�ɺ�9V�$�hm '�ʚD� �DXY�����iar6a��0*lj�r&Fi9V�$�hm '��:a�.@N��CW��EF"��"O����E~����}�_ψ�ﯧǯ���ٛ���DxʙK"|������_��7"�G'��/�������d��|I��$��E�%�d]���deM��r��)���@,��t��,��9h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�������Z9S@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@�,�ɺ���Vν�F�G�J8 h4�h�L��r-���+�heM��r��)���@.��54Z�������heM��r��)���@.��54Z�������heM��r��)���@.��54Z�����&g㰀V�Q@��p\@+g h�6�heM��rm���&��ZYS@���\@+k h�6�heM��rm���&��ZYS@���\@+k @@ -1762,86 +1757,99 @@ h h�6h%4:��q����heM��r��)���@.��54Z�������heM��r��)���@.��54Z�������heM��r��)���@.��54Z�������heM��b����FgḀV��(m ��:h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�����Fk��V��hm ��:h�.@.��54Z�����Fk��V��hm ��:h�.@,��t��,�ʙ� �ZYS@���\@�,�ɺ���V��hm �ʚ� �ZYS@���\@륀� �ZYS@���\@+k h�6�heM��rm���&��ZYS@���\@+k -h�6�heM��bm�)���8,��rШ,�ʙ� �ZYS@���\@�,�ɺ�������x�Q@��q}|�����Q@�������8s)�����_���w�2����/_}ௗ8��2��s��f���~�=��@ω�r�i���$��SY�s����s*kzN�6�{NeMω�r�i���$��SY�s����s*kzN�6�{NeMω�r�i���$��SY�s����s*��9�Y8�9�3='J�=��Ξ���{NeMω�rϩ��9��@�9�5='Z�=��Ξ���{NeMω�rϩ��9��@�9�5='Z�=��Ξ���{NeMω�rϩ��9��@�9�5='Z�=��Ξ���zN��{N4~�aϩ���Dc��T���(m ���z�9����T���hm ��ʚ�� �SY�s����s��9ɺ���T���hm ��ʚ�� �SY�s����s��9ɺ���T���hm ��ʚ�� �SY�s����sizNr6{N�='*�=�r��Di��T���hm ���:{N�.@�9�5='Z�=����Dk��T���hm ���:{N�.@�9�5='Z�=����Dk��T���hm ���:{N�.@�9�5='Z�=����Dk��T��s��p�sezNR6�{N�Lω�rϩ��9��@�9�5='Z�=��Ξ���{NeMω�rϩ��9��@�9�5='Z�=��Ξ���{NeMω�rϩ��9��@�9�5='Z�=��^zN��@�9�5='Z�=����Dk��T��s��p�s��9I����T���hm ��ʚ�� �SY�s����s��9ɺ���T���hm ��ʚ�� �SY�s����s��9ɺ���T���hm ��ʚ�� �SY�s����s��9ɺ���T���hm ��J:zNt�{N�Lω�r�i���$��SY�s����s*kzN�6�{NeMω�r�i���$��SY�s����s*kzN�6�{NeMω�r�i���$��SY�s����s*kzN�6�{NeMω�r�i���$�ĞSIGω��qϩ��9Q�@�9�5='Z�=��Ξ���{NeMω�rϩ��9��@�9�5='Z�=��^zN��@�9�5='Z�=����Dk��T���hm ���:{N�.@�9�5='Z�=����Dk��T���hm ��F�����ÞS)Gω��qϩ��9Q�@�9�5='Z�=��Ξ���{��:���x��s~��q�y|��<�_O�7�h{~�~������g]�9ǡ�I��0j���������?���~�oߜ����������]^�NzQ]��=����v>���1]u�x���<�^^�]�u?{��������QZ��7� <���^�'�����^������5gѺ��cxx���� k��cx�����goXx`�rVּ� �wC�|74Y �ZY�nh�6�� ��y74Z��V��nht�� m����$]��nheͻ���@~7��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��▀��-t���3[(m o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-�ܷ���[J8��X8�P�l ����% ��-��@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%��▀�fK����-�[�,o (g�P�@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK�����5[hm o (k���@�Pұ%���ᖀQfK����-�̖�J�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �eK��+���5[hm o (k���@�Pұ%����q�-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%��cK����-�̖�J�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�qK@Iǖ�:�[ʙ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �eK��+���5[hm o (k���@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�� g�pK@)ǖ�*�[ʙ-�6���5[hm o �� ��-��Ŗ�^dl |�����E��-��������ƙl <�-����O���~��S���z���Å����|w��z��_�|��6}�����|z��v����(;w�|8���ҹ��!m�����pg����X_O/o�뻟�am��J�0ֹCA��;ʚ -�6�w(�5;hm �P(kv(��@ޡ��XW �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��c���� -�;$]��C��١@ky�BY�C�����f�� � +h�6�heM��bm�)���8,��rШ,�ʙ� �ZYS@���\@�,�ɺ�������x�Q@��q}|�����Q@�������8s)���������˗k��v�Ǘo>��K���s��9�~���p����E��Dk��4��s�urϩ��9��@�9�5='Z�=����Dk��4��s�urϩ��9��@�9�5='Z�=����Dk��4��s�urϩ��9��@�9�t���,��ʙ�� ��Xg�I��=����Dk��T���hm ��ʚ�� ��Xg�I��=����Dk��T���hm ��ʚ�� ��Xg�I��=����Dk��T���hm ��ʚ�� ��Xg�I�H=�r�='?°�T��s��p�s*gzN�6�{Na���`]��s*kzN�6�{NeMω�rϩ��9��@�9�u��d]��s*kzN�6�{NeMω�rϩ��9��@�9�u��d]��s*kzN�6�{NeMω�rϩ��9��@�9�4='9�=�R�����S9�s����s*kzN�6�{Nc�='Y ��ʚ�� �SY�s����s*kzN�6�{Nc�='Y ��ʚ�� �SY�s����s*kzN�6�{Nc�='Y ��ʚ�� �SY�s����s*��9�Y8�9�2=')�=�r��Di��T���hm ��ʚ�� ��Xg�I��=����Dk��T���hm ��ʚ�� ��Xg�I��=����Dk��T���hm ��ʚ�� �SX/='XW ��ʚ�� �SY�s����s*��9�Y8�9�s��$]��s*kzN�6�{NeMω�rϩ��9��@�9�u��d]��s*kzN�6�{NeMω�rϩ��9��@�9�u��d]��s*kzN�6�{NeMω�rϩ��9��@�9�u��d]��s*kzN�6{N%=':�=�r��Di��4��s�urϩ��9��@�9�5='Z�=����Dk��4��s�urϩ��9��@�9�5='Z�=����Dk��4��s�urϩ��9��@�9�5='Z�=����Dk��4��s�ubϩ���Dg��T���(m ��ʚ�� ��Xg�I��=����Dk��T���hm ��ʚ�� �SX/='XW ��ʚ�� �SY�s����s*kzN�6�{Nc�='Y ��ʚ�� �SY�s����s*kzN�6{N#M�I��aϩ���De��T���(m ��ʚ�� ��Xg�I��=�q��zN���9?\��<���ϯ�LJo�=�m�z��_k�ﳮ���PΤ�|5�����ݷ_�a����/����ӷ_~Y�|�������Օ/���n�o������Uǡ�W=}��������E�X��7� <�>���u?{��������w�ʺ��am����m���Ys�+���=��gi��ް6���=����*�~������*geͻ���@~7���wC�u5�Fk���ʚwC����nh%�Fg�����9� M���Vּ� �wC+k���@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK�����5[hm n (��@g�xK@9�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�}K��a�%��cK����-�̖�J�[�z��� +�-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm n i���8�Pʱ%����rfK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-%[�,n e�H�8�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%���-�.@�P�l ����%���@kyK@Y�%��^���yK@Y�%��fK�� �-%[�,o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[ʚ-�6���5[hm o �� ��-e͖�Z�[J:��Y8�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK�����5[hm o (k���@�P�l ����%`�sK����tl ��p�%���@iyK@Y�%���-�.@�P�l ����%���@kyK@Y�%��^���yK@Y�%��fK�� �-e͖�Z�[�:�Ⱥ�yK@Y�%��fK�� �-e͖�Z�[F�-r6��rl ��p�%���@iyK@Y�%���-�.@��^l �EƖ���o _�/��{<=�yK`�ɖ������������Ա������pa�j=�}����ׯ����C��9�=����t?���(N��t�goHx`}>=�Y�~�������˛���goXx��0f#�u�P�u���f�� � +e�Z�;ʚ +�6�w(���C��;ʚ +�6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ +�6�w(�5;hm �P(�ء@g�x��8�I �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ܡPұC�����rf�� � c�;d]��C��١@ky�BY�C�����f�� � c�;d]��C��١@ky�BY�C�����f�� � -c�;d]��C��١@kq�BI�:�;ʙ -�6�w(�u�P�u���f�� � -e�Z�;ʚ -�6�w(�u�P�u���f�� � -e�Z�;ʚ -�6�w(�u�P�u���f�� � -e�Z�;ʚ -�6�w(�u�P�u��r�;h�� -%;h,�P(gv(P�@ޡ��XW �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@kq��H�CA����R� -T�w(�3;(m �P(kv(��@ޡ0ֹCA��;ʚ +c�;d]��C��١@ky�BY�C�����f�� � +c�;d]��C���?�p�B ��;ʙ +�6�w(���C��;ʚ �6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ �6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ -�6�w(�5;hm �P(�ء@g�p��(�CA����rf�� � -e�Z�;ʚ +�6�w(�5;hm �P(kv(��@ܡ0��P��q�C��c���� +��J�;ʚ �6�w(�u�P�u���f�� � e�Z�;ʚ �6�w(�u�P�u���f�� � e�Z�;ʚ -�6�w(���C��;ʚ -�6�w(�5;hm �P(�ء@g�x��8�I �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ܡPұC�����rf�� � +�6�w(�u�P�u���f�� � +e�Z�;J:v(�Y8ܡ0��P��q�C��١@iy�BY�C�����f�� � c�;d]��C��١@ky�BY�C�����f�� � c�;d]��C��١@ky�BY�C�����f�� � +a��P�u���f�� � +e�Z�;J:v(�Y8ޡ0ιCA��;ʚ +�6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ +�6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ +�6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ +�6w(�t�P��p�C��١@iy��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(kv(��@ޡP��P����C��١@ky��X�Y �P(�ء@g�x�B9�C�����f�� � c�;d]��C��١@ky�BY�C�����f�� � -c�;d]��C��c���� -��J�;ʚ +a��P�u���f�� � +e�Z�;ʚ �6�w(�u�P�u���f�� � e�Z�;ʚ -�6�w(���C��;ʚ -�6�w(�5;hm �P(kv(��@ޡ0ֹCA��;ʚ -�6�w(�5;hm �P(kv(��@ܡ0��P��q�C��c���� -��J�;ʚ -�6�w(�u�P�u�-+� -��ء�p����,;��C��v>m��������ء���~�a�w��_���w�|�_N��/_}�|����R�q�K�C/yظ_��q�N������Ɲ� ���YG���b�qgk�qW�4�h]�ظ;�h���@lܝu4�lm 5�N�7��,6�ʙ��wg�;[�����Ɲ� ���YG���b㮬i�Ѻ��qw�Ѹ���ظ;�h���@lܝu4�lm 6�ʚ��wg�;[�����Ɲ� ���YG���b㮬i�Ѻ��qw�Ѹ���Ը;���pظ;�h�Y�@lܕ5�;Z 6��:w�6wg�;[�����Ɲ� ��]YӸ�ub�qgk�qw�Ѹ���ظ;�h���@lܕ5�;Z 6��:w�6wg�;[�����Ɲ� ��]YӸ�uB��_w6~�Q��{����a�qgi�q7�ٸ�ub�qgk�qw�Ѹ���ظ;�h���@lܕ5�;Z 6��:w�6wg�;[�����Ɲ� ��]YӸ�ub�qgk�qw�Ѹ���ظ;�h���@jܕt4��l5�N�7�,6��9w�6wg�;[�����qG����YG���b�qgk�qw�Ѹ���ظ+kw�.@lܝu4�lm 6��:w�6wg�;[�����qG����YG���b�qgk�qwҽqgg�qW�Ѹ��qظ;�h�Y�@lܝu4�lm 6��:w�6weM�������Ɲ� ���YG���b�qgk�qW�4�h]�ظ;�h���@lܝu4�lm 6��:w�6wc��;YW 6��:w�6wg�;[H����;;���r�qG����YG���b�qgk�qw�Ѹ���ظ+kw�.@lܝu4�lm 6��:w�6wg�;[�����qG����YG���b�qgk�qw�Ѹ���ظ+kw�.@lܝu4�lm 5�N�7��,6��9w�6weM�������Ɲ� ���YG���b�qgk�qW�4�h]�ظ;�h���@lܝu4�lm 6��:w�6weM�������Ɲ� ���YG���b�qgk�qW�4�h]�Ը;���pظ;�h�Y�@lܝu4�lm 6�ʚ��wg�;[�����Ɲ� ���YG���b�n��q'� -���YG���b�qgk�qw�Ѹ���ظ+kw�.@lܝu4�lm 6��:w�6wg�;[H����������)�Ɲ�����9G���b�qgk�qW�4�h]�ظc�-w��~��E��w��o���c���|�����������|����C9si�ϣr���~�����?~���o���-ᅿ^�|z�~[y�+v)+�~���p����E��$��RYSV���\V*k�J�6��JeMY��rYi���$��RYSV���\V*k�J�6��JeMY��rYi���$��RYSV���XV*�(+�Y8.+�3e%J�e��β����JeMY��rY��)+��@.+�5e%Z�e��β����JeMY��rY��)+��@.+�5e%Z�e��β����JeMY��rY��)+��@.+�5e%Z�e��β����J���J4~�aY����DcḬTΔ�(m ���z)+����T֔�hm ��ʚ�� �RYSV���\V�,+ɺ���T֔�hm ��ʚ�� �RYSV���\V�,+ɺ���T֔�hm ��ʚ�� �RYSV���XVi�Jr6�J�e%*�e�r��Di��T֔�hm ���:�J�.@.+�5e%Z�e����Dk��T֔�hm ���:�J�.@.+�5e%Z�e����Dk��T֔�hm ���:�J�.@.+�5e%Z�e����Dk��T�QV��pXVe�JR6��J�LY��rY��)+��@.+�5e%Z�e��β����JeMY��rY��)+��@.+�5e%Z�e��β����JeMY��rY��)+��@.+�5e%Z�e��^�J��@.+�5e%Z�e����Dk��T�QV��p\V�,+I����T֔�hm ��ʚ�� �RYSV���\V�,+ɺ���T֔�hm ��ʚ�� �RYSV���\V�,+ɺ���T֔�hm ��ʚ�� �RYSV���\V�,+ɺ���T֔�hm ��J:�Jt��J�LY��rYi���$��RYSV���\V*k�J�6��JeMY��rYi���$��RYSV���\V*k�J�6��JeMY��rYi���$��RYSV���\V*k�J�6��JeMY��rYi���$�IJRIGY���qY��)+Q�@.+�5e%Z�e��β����JeMY��rY��)+��@.+�5e%Z�e��^�J��@.+�5e%Z�e����Dk��T֔�hm ���:�J�.@.+�5e%Z�e����Dk��T֔�hm ��F�����òR)GY���qY��)+Q�@.+�5e%Z�e��β������NЕ�x�QV~���aYy|�����QV>?}�e�e�8s)+�GY��o^������÷�~������~���������?��ܽn�z�f<��&�r��_����Q~9[ �1[��#�[���V� �VCY�j����j(kZ �6�[ c��Y �ʚV� �VCY�j����j(kZ �6�[ c��Y �ʹ�h��VC G����q���i5P�@n5���j�ur���i5��@n5�5�Zȭ����@k��0��j�ur���i5��@n5�5�Zȭ����@k��0��j�ur���i5��@n5�5�Zȭ����@k��0Ҵ�l�J9Z T�[ �L���r���i5��@n5�u�d]��j(kZ �6�[ eM���r���i5��@n5�u�d]��j(kZ �6�[ eM���r���i5��@n5�u�d]��j(kZ �6�[ eM���b�����@g��0ʴ�l�ʙV� �VCY�j����j(kZ �6�[ c��Y �ʚV� �VCY�j����j(kZ �6�[ c��Y �ʚV� �VCY�j����j(kZ �6�[ a��`]��j(kZ �6�[ eM���b�����@g��0��j�tr���i5��@n5�5�Zȭ����@k��0��j�ur���i5��@n5�5�Zȭ����@k��0��j�ur���i5��@n5�5�Zȭ����@k��0��j�ur���i5��@l5�t��,�ʙV� �V�Xg�A�ȭ����@k��Pִhm �ʚV� �V�Xg�A�ȭ����@k��Pִhm �ʚV� �V�Xg�A�ȭ����@k��Pִhm �ʚV� �V�Xg�A������V���VC9�j����j(kZ �6�[ c��Y �ʚV� �VCY�j����j(kZ �6�[ a��`]��j(kZ �6�[ eM���r���i5��@n5�u�d]��j(kZ �6�[ eM���r���i5��@l5�4�9���R�V���VC9�j����j(kZ �6�[ c��Y ��V/2Z�y=l5�/�W�k�����+��̥�x�����d�O�wW������֗�>���k���A�q~=}�+\t��x�ϟ}�?��/�k���,K������l����X�O�{i��ް6��:^J��y�Z�o93���3�.@~˙��-ghm ��LY�3�6��r��y�Z�o93���3�.@~˙��-ghm ��LY�3�6��r��y�Z�o93���3�.@~˙��-ghm ��LI�[��Y8~˙r�-g(m ���X�[�Ⱥ��-gʚ�������3e�[���@~˙��-ghm ���Xg9K��嬲��Ek��U֔�hm ��ʚr� �r�Xg9K��嬲��Ek��U֔�hm ��ʚr� �r�Xg9K�H�r��,?°�U�Q�p\�*g�Y�6��Ya���`]�\�*k�Y�6��YeM9��r9��)g��@.g�u��d]�\�*k�Y�6��YeM9��r9��)g��@.g�u��d]�\�*k�Y�6��YeM9��r9��)g��@,g�4�,9��R�r���rV9S��\�*k�Y�6��Yc��,Y ��ʚr� �rVYS��\�*k�Y�6��Yc��,Y ��ʚr� �rVYS��\�*k�Y�6��Yc��,Y ��ʚr� �rVYS��X�*�(g�Y8,g�2�,)��r��Ei��U֔�hm ��ʚr� �r�Xg9K��嬲��Ek��U֔�hm ��ʚr� �r�Xg9K��嬲��Ek��U֔�hm ��ʚr� �rVX/�,XW ��ʚr� �rVYS��X�*�(g�Y8.g�s��$]�\�*k�Y�6��YeM9��r9��)g��@.g�u��d]�\�*k�Y�6��YeM9��r9��)g��@.g�u��d]�\�*k�Y�6��YeM9��r9��)g��@.g�u��d]�\�*k�Y�6�Y%�,:��r��Ei��5�YΒur9��)g��@.g�5�,Z�嬲��Ek��5�YΒur9��)g��@.g�5�,Z�嬲��Ek��5�YΒur9��)g��@.g�5�,Z�嬲��Ek��5�YΒub9����EgḜUΔ�(m ��ʚr� �r�Xg9K��嬲��Ek��U֔�hm ��ʚr� �rVX/�,XW ��ʚr� �rVYS��\�*k�Y�6��Yc��,Y ��ʚr� �rVYS��\�*k�Y�6�Y#M9K��a9����EeḜUΔ�(m ��ʚr� �r�Xg9K����q���Y��(g?\东=��_������[�3���̥�}����۷?�������_����^/h�v��}��tP��bn<��7>.�>_�1�6��1c��Y cʚb� �bLIG1���q1��)�P�@.ƌucd]�\�)k�1�6��1eM1��r1��)���@.ƌucd]�\�)k�1�6��1eM1��r1��)���@.ƌucd]�\�)k�1�6��1eM1��r1��)���@.ƌucd]�T�)�^���#�1%��Řr�Ci��K1��Ř��Ck�S�chm cʚb� �b�Xg1F��Ř��Ck�S�chm cʚb� �b�Xg1F��Ř��Ck�S�chm cʚb� �b�HS���qX�)�(�PY8.Ɣ3�J�Ř��Ck�3�Y��ur1��)���@.Ɣ5�Z�Ř��Ck�3�Y��ur1��)���@.Ɣ5�Z�Ř��Ck�3�Y��ur1��)���@.Ɣ5�Z�Ř��b���b�(S���q\�)g�1�6��1eM1��r1��)���@.ƌucd]�\�)k�1�6��1eM1��r1��)���@.ƌucd]�\�)k�1�6��1eM1��r1��)���@.Ƅ�R��ur1��)���@.Ɣ5�Z�Ř��b���b�8g1F��Ř��Ck�S�chm cʚb� �b�Xg1F��Ř��Ck�S�chm cʚb� �b�Xg1F��Ř��Ck�S�chm cʚb� �b�Xg1F��Ř��Ck�S�Q���p\�)g�1�6��1c��Y cʚb� �bLYS����\�)k�1�6��1c��Y cʚb� �bLYS����\�)k�1�6��1c��Y cʚb� �bLYS����\�)k�1�6��1c��Y cJ:�1t��1�L1��r1��)���@.ƌucd]�\�)k�1�6��1eM1��r1��)���@.Ƅ�R��ur1��)���@.Ɣ5�Z�Ř��Ck�3�Y��ur1��)���@.Ɣ5�Z�Ř��Ck�3�c�lcJ9�1T��1�L1��r1��)���@.ƌucd]�\��N�Ë�b��E�������Z�������q�R�=�w-�������o�^���9?}�G������.��b�ۯ�����y6c�|܌}�4chm 7c�:�1�.@nƔ5�Z�͘��f���fL9ӌ���܌�l�Ⱥ��S�4chm 7cʚf� �fLYӌ���܌�l�Ⱥ��S�4chm 7cʚf� �fLYӌ���܌�l�Ⱥ��S�4chm 7cʚf� �fLYӌ���܌�l�Ⱥ��SνC�G6cJ8�14��1�L3��r3&��f�+��1eM3��r3��i���@nƔ5�Z�͘��f����1eM3��r3��i���@nƔ5�Z�͘��f����1eM3��r3��i���@nƔ5�Z�͘��#g�S�ь��p܌)g�1�6��1eM3��r3f��#��fLYӌ���܌)k�1�6��1eM3��r3f��#��fLYӌ���܌)k�1�6��1eM3��r3f��#��fLYӌ���܌)k�1�6�1%�:�͘Q�#e�S�4c(m 7cʚf� �fLYӌ���܌�l�Ⱥ��S�4chm 7cʚf� �fLYӌ���܌�l�Ⱥ��S�4chm 7cʚf� �fLYӌ���܌ �� -�fLYӌ���܌)k�1�6�1%�:�͘q�f����1eM3��r3��i���@nƔ5�Z�͘��f����1eM3��r3��i���@nƔ5�Z�͘��f����1eM3��r3��i���@nƔ5�Z�͘��f����1eM3��b3���Cg�S�4c(m 7c�:�1�.@nƔ5�Z�͘��Ck�S�4chm 7c�:�1�.@nƔ5�Z�͘��Ck�S�4chm 7c�:�1�.@nƔ5�Z�͘��Ck�S�4chm 7c�:�1�.@lƔt4c�,7cʙf� �fLYӌ���܌�l�Ⱥ��S�4chm 7cʚf� �fLYӌ���܌ �� -�fLYӌ���܌)k�1�6��1eM3��r3f��#��fLYӌ���܌)k�1�6��1eM3��b3f�i���8lƔr4c�,7cʙf� �fLYӌ���܌�l�Ⱥ��;��\3��؇�7c��+�����e���q�Ҍ=h�������߽�b�ﯿ�����?�� -�������C.7��ֱ��磂lF)�`F)�G)�/Q -Z�Q���(����eM���r����R��@�R�5Q -Z�Q���(����eM���r����R��@�R�5Q -Z�Q���(�����ܣ4~�a���#JAc�8JQ�D)(m G)�z�R��9JQ�D)hm G)ʚ(� �(EY������RȺ�9JQ�D)hm G)ʚ(� �(EY������RȺ�9JQ�D)hm G)ʚ(� �(EY�����i�r6��Q -*�Q�r&JAi9JQ�D)hm G)�:��.@�R�5Q -Z�Q��&JAk9JQ�D)hm G)�:��.@�R�5Q -Z�Q��&JAk9JQ�D)hm G)�:��.@�R�5Q -Z�Q��&JAk1JQ����p�e�R6���L���r����R��@�R�5Q -Z�Q���(����eM���r����R��@�R�5Q -Z�Q���(����eM���r����R��@�R�5Q -Z�Q��^���@�R�5Q -Z�Q��&JAk1JQ����p��RH��9JQ�D)hm G)ʚ(� �(EY������RȺ�9JQ�D)hm G)ʚ(� �(EY������RȺ�9JQ�D)hm G)ʚ(� �(EY������RȺ�9JQ�D)hm F)J:�t���L���r�b�3J!��(EY�����(k��6��eM���r�b�3J!��(EY�����(k��6��eM���r�b�3J!��(EY�����(k��6��eM���r�b�3J!��(EIG����q����RP�@�R�5Q -Z�Q���(����eM���r����R��@�R�5Q -Z�Q��^���@�R�5Q -Z�Q��&JAk9JQ�D)hm G)�:��.@�R�5Q -Z�Q��&JAk9JQ�D)hm F)F�(����(E)G����q����RP�@�R�5Q -Z�Q���(�������E)x��|��q�r|�%J�������q����(�����o��;���_����(O����?���?�(o���3�/ہ�ϗ�|����v>���e;�,�lG9��6�_�c��e;d]���e��v��@~َ��kBk�kR�tMhm wM�:�&�.@5]Z�]���kBk�kR�tMhm wM�:�&�.@5]Z�]���kBk�kR�tMhm wM�:�&�.@Ꚕs����]��� ���I9�5����5 �k� -�IY�5����5)k�&�6��&eMׄ�r�d��k"��IY�5����5)k�&�6��&eMׄ�r�d��k"��IY�5����5)k�&�6��&eMׄ�b�d����8요rtM�,wMʙ� � �IY�5����5��Ⱥ��kR�tMhm wMʚ� � �IY�5����5��Ⱥ��kR�tMhm wMʚ� � �IY�5����5��Ⱥ��kR�tMhm wMʚ� � ĮIIGׄ��a�d��H�83]J�]���kBk�kR�tMhm wM�:�&�.@5]Z�]���kBk�kR�tMhm wM�:�&�.@5]Z�]���kBk�kR�tMhm wM�z����kR�tMhm wMʚ� � ĮIIGׄ��q�d��k"��IY�5����5)k�&�6��&eMׄ�r�d��k"��IY�5����5)k�&�6��&eMׄ�r�d��k"��IY�5����5)k�&�6��&eMׄ�r�d��k"��IY�5����5)���Y83]J�]��ή����&eMׄ�rפ����@5]Z�]��ή����&eMׄ�rפ����@5]Z�]��ή����&eMׄ�rפ����@5]Z�]��ή���&%]:�]�r�kBi�kR�tMhm wM�:�&�.@5]Z�]���kBk�kR�tMhm wM�z����kR�tMhm wMʚ� � �IY�5����5��Ⱥ��kR�tMhm wMʚ� � �IY�5����5i�&r6�&�]*�]�r�kBi�kR�tMhm wM�:�&�.@[�5�EF���"�]��E����<�����]S�\����5����w�?¦�����W�]������Ǚ�?�}�\��A����YG���b�㬣�ak��q�Q����X�(kj�.@�}�u�>lm �>�:j�6kg�[�������Ms��ym��a�@&���Pmww8⨏��8�x�S�U���R�h;ܿ��g?��ra�Le���"d�>�u��}P�X�8u�>�� �>N]��=���SW��jb����>��A�}����a�r�j�jkkg�ڇ���Ǩ��!ub���U��ڃX�8u�>�� �>N]��=���RS��:��q�}X�A�}��jV{k��ڇ���G��}P�X�8u�>�� �>N]��=���SW��jR���U���sT�8�T�0YsX�8s�>�� �>N]��=���RS��:��q�}X�A�}��jV{k��ڇ���G��}P�X�8u�>�� �>N]��=���SW��jb����>��A�}��jV{k��ڇ���ǡ�ڇ͚��G���A���q�}�A�}��jV{k��ڇ���G��}P�X�8u�>�� �>N]��=���SW��jb����>��A�}��jV{k��ڇ���ǩ��a���1�}H��X�8u�>�� �>N]��=H��CO��5���2S� :��q�}X�A�}��jV{k��ڇ���G��}P�X�8u�>�� �>N]��=���SW��jb����>��A�}��jV{k��ڇ���ǩ��a���QjjT� �>N]��=H��CO��5���3W��hb����>��A�}��jV{k��ڇ���ǩ��a���QjjT� �>N]��=���SW��jb���U��ڃX�(5��ck��ڇ���ǩ��a���q�}X�A�}����1H��CO��5���3W��hb���U��ڃX�(5��ck��ڇ���ǩ��a���q�}X�A�}��kR� �>N]��=���SW��jb���U��ڃX�(5��ck��ڇ���ǩ��a���q�}X�A�}�j4{�jG�j&kkg�ڇ���ǩ��a���QjjT� �>��ڇ���C�_�j�_��������������Y�9�>O��9u>�~������/��ϻ�G�_O}���z�+���W��������:!���3�����^��_'�hr`d��:90Rj#T{�#�&0B�90Rj#T{�#�����1ȁ�R�ڃ)5��=ȁ�R�ڃuF��A�������H� �P�A�������Ȩ;0"uR`��S`���F -\��5ǁ�2!ڃ ��:90Rj#T{�#�&0B�90Rj#T{�#�����1ȁ�R�ڃ)5��=ȁ�R�ڃuF��A�������H� �P�A�������Ƞ ���9��#$k�#e&0B�90Rj#T{�#�����1ȁ�R�ڃ)5��=ȁ�R�ڃuF��A�������H� �P�A�������Ȩ;0"ur`��F�� FJM`�jb`���Ys2��=ǁ�2!ڃ)5��=ȁ�R�ڃuF��A�������H� �P�A�������Ȩ;0"ur`��F�� FJM`�jr`��F�� FB=F��A�������H� �P�A��#4k�#c����1ȁ�R�ڃ)5��=ȁ�R�ڃuF��A�������H� �P�A�������Ȩ;0"ur`��F�� FJM`�jr`��F�� FF݁�c�#�&0B�10R� -�Ь9�������Ȩ;0"ur`��F�� FJM`�jr`��F�� FF݁�c�#�&0B�90Rj#T{�#�&0B�902��H�)5��=ȁ�R�ڃ)5��=ȁ�Qw`D���H�+0B��80Rf#D{�#�&0B�902��H�)5��=ȁ�R�ڃ)5��=ȁ�Pρ�s�#�&0B�90Rj#T{�#�&0B�902��H�)5��=ȁ�R�ڃ)5��=���A��s)rFH�F�L`�hr`��F�� FF݁�c�#�bL`�_dF_��j`t������xs���O���y��y8�<�?���3 ��2���9������_?~���R�|;G?~��?��t����`���������>���of@�f�@/�@��A.�����H�)�P�A.�����Ȩ��"ur��@�� @JM�jr��@�� @F��c� ���B���Rj - T{� ���B���2�.�H�T�)�T��x9��W�b�q��@�� @B=@��A.�����H�)�P�A.�����Ȩ��"ur��@�� @JM�jr��@�� @F��c� ���B���Rj - T{� ���B���2h - 2{ E�ɚ�H�)��A.�����Ȩ��"ur��@�� @JM�jr��@�� @F��c� ���B���Rj - T{� ���B���2�.�H�\�)5�=��RS��ڃX�)t@h�@�LDd�q��@�� @JM�jr��@�� @F��c� ���B���Rj - T{� ���B���2�.�H�\�)5�=��RS��ڃ\�)5�=��P��s� ���B���Rj - T{ ��͚�Ș��"tr��@�� @JM�jr��@�� @F��c� ���B���Rj - T{� ���B���2�.�H�\�)5�=��RS��ڃ\�)5�=��QwD��H�)�P�A,�� - 4k� e��B���2�.�H�\�)5�=��RS��ڃ\�)5�=��QwD��H�)�P�A.�����H�)�P�A.��� R� @JM�jr��@�� @JM�jrd�]��:��R�*�Ь9.�����H�)�P�A.��� R� @JM�jr��@�� @JM�jr$�s��H�)�P�A.�����H�)�P�A.��� R� @JM�jr��@�� @JM�jbd�@d�@�\�5��2S�!ڃ\�)5�=��QwD���z�� - �"����"���_����{�������o��뙕���W���L>r�nW����~��w�n���_?~����=�]������W~���=��?~�;f����/��'w�p��{��/�R]�eu^Q�n��z��j^Q�C�'��>��ڃW���֪�Ͼ��������p���G��+��gp8H���7����z��j^Qo><�_��g�P{�u��ps���nF]�eu^Q�n>|���o�=xE}��}~4C��Ͼ�����cx�\J=}� �_�N��N�gQ��W����A��Ͼ�����c�� ��g�P{��z�1�z��j���?�w|��1xE��yxz���o�=xE}�9<Z���7���>�<�_��}ì�������� '�et^Q�?���>��ڃW������TO�}C��+��p'��g�P{�u���c����,�c��z�1��K���7�������j^Q�?�wV=}� �_W�7��os볬��+����G����j^Qn�}���o�=xE}�yo�[x}� �����cx/�Y�eu^Q�?�{��>��ڃW��[��^2�f��K���#�� �1�>1B��#J͉T{�O�(5'FP�A>1�ԜA��ĈQ��R� �QjN��ڃ|bD�91�j�����=�'F��O��:�ĈRsb��#J͉T{�O�(5'FP�A>1b�}b��1H'F�y:1����Q�:1�b��e���=�'F�z>1��#J͉T{�O�(5'FP�A>1�ԜA��ĈQ��R� �QjN��ڃ|bD�91�j�����=�'F��O��:�ĈRsb��#J͉T{�O�(5'FP�A<1bМ!���Ĉ"$k�O�(3'F�A>1�ԜA��ĈQ��R� �QjN��ڃ|bD�91�j�����=�'F��O��:�ĈRsb��#J͉T{�O�(5'FP�A>1b�}b��1�'F��#�� �QjN��ڃxbD����5�'F�#D��QfN� ڃ|bD�91�j�����=�'F��O��:�ĈRsb��#J͉T{�O�(5'FP�A>1b�}b��1�'F��#�� �QjN��ڃ|bD�91�j���O��:�ĈRsb��#J͉T{O�(t�A���Ĉ1��B� �QjN��ڃ|bD�91�j�����=�'F��O��:�ĈRsb��#J͉T{�O�(5'FP�A>1b�}b��1�'F��#�� �QjN��ڃ|bD�91�j���#��A>1�ԜA��ĈB4k�O�(3'F�A>1b�}b��1�'F��#�� �QjN��ڃ|bD�91�j���#��A>1�ԜA��ĈRsb��#J͉T{�O�u�!u�����=�'F��#�� �QjN��ڃ|bĨ���cO�(t�A���Ĉ2sb��#J͉T{�O�u�!u�����=�'F��#�� �QjN��ڃ|bD��#��A>1�ԜA��ĈRsb��#J͉T{�O�u�!u�����=�'F��#�� �QjN��ڃxbĠ91Bf��E�#H��QfN� ڃ|bD�91�j���#��A>1�3ĉ�"�����~b����/�{��O��%��392rXgF~�������n��z������/��w�+7F���~9[p����-x�=�l�c��(5gP�A>[�Ԝ-@��l�Rs����B=�-�u����l�=�g����� �-Pj��ڃ|����l�c��(5gP�A>[�Ԝ-@��l�B��4k��s�- t����l�=�g����� �-Pj��ڃ|����l�c��(5gP�A>[�Ԝ-@��l�Rs����F�gH�|�@�9[�j����l�=�g����� �-0�>[@��J��T{�(t�-@���l�2s����F�gH�|�@�9[�j����l�=�g����� �-0�>[@��J��T{��(5gP�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�2OgP�ó -\gP�9>[�̜-@��l�P�g@��|�@�9[�j����l�=�g����� �-0�>[@��J��T{��(5gP�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g��d��-P�:[�d���e�l�=�g����� �-0�>[@��J��T{��(5gP�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{�(t�-@���l�!s��Ȟ����D{��(5gP�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{��(5gP�A>[ ���P� �-Pj��ڃ|�@�9[�j�����h��-0�>[@��J��T{��(5gP�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{��(5gP�A>[`�}���1�g����� �-P�:[�f���e�l�=�g����:�l�Rs����J��T{��(5gP�A>[`�}���1�g����� �-Pj��ڃ|�@�9[�j������A>[�Ԝ-@��l�Rs����J��T{��u�- u�����h��-Pf� ڃ|�@�9[�j������A>[�Ԝ-@��l�Rs����J��T{���|���9�g����� �-Pj��ڃ|�@�9[�j������A>[�Ԝ-@��l�Rs����J��T{�4g��9<[��u��ɚ����D{��(5gP�A>[`�}���1�g��7g����_��ق�_�w�-�=�O�|�`}&gn�ق�������ۧ�����������O__��O7w���l�/t�y<�/^��;���]w�|�]���/��ɨ� ��JM��jb���'�Ys's�Ʉ�A����8��8Y���Q�A����8��8٨;N&ur����ɨ� ��JM��jr����ɨ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�9N6ꎓI�'+5q2�=�q�BW��f�q����Ɉ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�9N6ꎓI�'+5q2�=�q�R'�ڃ'+5q2�=�q�Qw�L��8Y���Q�A����8��8Y���Q�A�����dR� ���<��(^�a���'�Xs'+3q2�=�q�P�q2�s��d�&NF�9NVj�dT{��d�&NF�9N6ꎓI�'+5q2�=�q�R'�ڃ'+5q2�=�q�Qw�L��8Y���Q�A����8��8Y���Q�A�� �8�̞�8Y�+NF��8NVf�dD{��d�&NF�9N6ꎓI�'+5q2�=�q�R'�ڃ'+5q2�=�q�Qw�L��8Y���Q�A����8��8Y���Q�A�����dR� ��JM��jr����ɨ� �� -]q2�5�q�!'�s'+3q2�=�q�R'�ڃ'+5q2�=�q�Qw�L��8Y���Q�A����8��8Y���Q�A�����dR� ��JM��jr����ɨ� ��JM��jr�,�s���8Y���Q�A����8��8Y�+NF��8N6掓 �'+5q2�=�q�R'�ڃ'+5q2�=�q�Qw�L��8Y���Q�A����8��8Y���Q�A�����dR� ��JM��jr����ɨ� ��JM��jr�l�'�:9NVj�dT{�d��8͚�8Y����A�����dR� ��JM��jr����ɨ� ��JM��jr�l�'�:9NVj�dT{��d�&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'u�ɤ�A����d4k��de&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'�'�:9NVj�dT{��d�&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'4q2�=�q�"W��d�q����Ɉ� ��דSvoo������˯qxw��=�p�t���uo_�u��n��>|���������P>s�u��?�ן�����뉿�ӄ���_���ӵ<w����~c��W����_�`R� G�JM�jr��D��� F� -]Q0�5�Q�1wL��(X���Q�A����(��(X���Q�A�����`R� G�JM�jr��D��� G�JM�jrl��:9 -Vj�`T{��`�& +�6w(�4;�l�P(�ء@e�x�B9�C�����f�� � +c�;d]��CA� +f�/2v(>\�x���"��=�P<��O��p�"g�C�4v(���/?����~����˯��������7$��l����i�����K6�W.rܸ�ub�qgk�qw�Ѹ���ظ;�h���@lܕ5�;Z 6��:w�6wg�;[H����;;���r�qG����YG���b�qgk�qw�Ѹ���ظ+kw�.@lܝu4�lm 6��:w�6wg�;[�����qG����YG���b�qgk�qw�Ѹ���ظ+kw�.@lܝu4�lm 5�N�7��,6��9w�6weM�������Ɲ� ���YG���b�qgk�qW�4�h]�ظ;�h���@lܝu4�lm 6��:w�6weM�������Ɲ� ���YG���b�qgk�qW�4�h]�и;��Ɲ�aԸ;���pظ;�h�Y�@l܍u6�d]�ظ;�h���@lܝu4�lm 6��:w�6weM�������Ɲ� ���YG���b�qgk�qW�4�h]�ظ;�h���@lܝu4�lm 6��:w�6�w%�;:G��S�;+���s�Ɲ� ���YG���b㮬i�Ѻ��qw�Ѹ���ظ;�h���@lܝu4�lm 6�ʚ��wg�;[�����Ɲ� ���YG���b㮬i�Ѻ��qw�Ѹ���ظ;�h���@jܝto��Y8jܕr4�l6��9w�6wg�;[�����Ɲ� ��]YӸ�ub�qgk�qw�Ѹ���ظ;�h���@lܕ5�;Z 6��:w�6wg�;[�����Ɲ� ���Xg�N������Ɲ� ���YG���R��{����a㮜i�Q���qw�Ѹ���ظ;�h���@lܝu4�lm 6�ʚ��wg�;[�����Ɲ� ���YG���b㮬i�Ѻ��qw�Ѹ���ظ;�h���@lܝu4�lm 6�ʚ��wg�;[H����;;���s�Ɲ� ��]YӸ�ub�qgk�qw�Ѹ���ظ;�h���@lܕ5�;Z 6��:w�6wg�;[�����Ɲ� ��]YӸ�ub�qgk�qw�Ѹ���ظ;�h���@lܕ5�;Z 5�N�7��,6��9w�6wg�;[�����qG����YG���b�qgk�qw�Ѹ���ظ�l�ɺ�qw�Ѹ���ظ;�h���@lܝu4�lm 6�ʚ��wg�;[�����Ɲ� ���YG���R㮤�qGg�qwʽqge�qw�Ѹ���ظ;�h���@lܕ5�;Z 6�k�Ɲ/��x���.�����|=|���o#�zz:�����P�\��������������?^�7_�����_/q>�n�������p�YV~��qY��"PV�urY��)+��@.+�5e%Z�e����Dk��4�YV�urY��)+��@.+�5e%Z�e����Dk��4�YV�urY��)+��@,+�t���,��ʙ�� ��XgYI��e����Dk��T֔�hm ��ʚ�� ��XgYI��e����Dk��T֔�hm ��ʚ�� ��XgYI��e����Dk��T֔�hm ��ʚ�� ��XgYI�He�r�e%?°�T�QV��p\V*g�J�6��Ja���`]�\V*k�J�6��JeMY��rY��)+��@.+�u��d]�\V*k�J�6��JeMY��rY��)+��@.+�u��d]�\V*k�J�6��JeMY��rY��)+��@,+�4e%9�e�R�����R9SV���\V*k�J�6��Jc�e%Y ��ʚ�� �RYSV���\V*k�J�6��Jc�e%Y ��ʚ�� �RYSV���\V*k�J�6��Jc�e%Y ��ʚ�� �RYSV���XV*�(+�Y8,+�2e%)�e�r��Di��T֔�hm ��ʚ�� ��XgYI��e����Dk��T֔�hm ��ʚ�� ��XgYI��e����Dk��T֔�hm ��ʚ�� �RX/e%XW ��ʚ�� �RYSV���XV*�(+�Y8.+�s��$]�\V*k�J�6��JeMY��rY��)+��@.+�u��d]�\V*k�J�6��JeMY��rY��)+��@.+�u��d]�\V*k�J�6��JeMY��rY��)+��@.+�u��d]�\V*k�J�6�J%e%:�e�r��Di��4�YV�urY��)+��@.+�5e%Z�e����Dk��4�YV�urY��)+��@.+�5e%Z�e����Dk��4�YV�urY��)+��@.+�5e%Z�e����Dk��4�YV�ubY����DgḬTΔ�(m ��ʚ�� ��XgYI��e����Dk��T֔�hm ��ʚ�� �RX/e%XW ��ʚ�� �RYSV���\V*k�J�6��Jc�e%Y ��ʚ�� �RYSV���\V*k�J�6�J#MYI��aY����DeḬTΔ�(m ��ʚ�� ��XgYI��e�q'��J��(+?\�尬<��RV��(+����2²r���������w/w�~�����o_��}���?�??�������w����_������].����|~;�/g��#f����q���"�j����j(kZ �6�[ eM���r�a��� ��VCY�j����j(kZ �6�[ eM���r�a��� ��VC9�V�a�j(�h5�X8n5�3�Jȭ��^Z ��@n5�5�Zȭ����@k��Pִhm ��:[ �.@n5�5�Zȭ����@k��Pִhm ��:[ �.@n5�5�Zȭ����@k��Pִhm �F�V����VC)G����q���i5P�@n5�5�Zȭ���V���[ eM���r���i5��@n5�5�Zȭ���V���[ eM���r���i5��@n5�5�Zȭ���V���[ eM���r���i5��@l5�t��,�F�V����VC9�j����j(kZ �6�[ eM���r�a��� ��VCY�j����j(kZ �6�[ eM���r�a��� ��VCY�j����j(kZ �6�[ eM���r�!��V�+�[ eM���r���i5��@l5�t��,��9[ �.@n5�5�Zȭ����@k��Pִhm ��:[ �.@n5�5�Zȭ����@k��Pִhm ��:[ �.@n5�5�Zȭ����@k��Pִhm ��:[ �.@n5�5�Z�����V���VC9�j����j�l5Ⱥ���Pִhm �ʚV� �VCY�j����j�l5Ⱥ���Pִhm �ʚV� �VCY�j����j�l5Ⱥ���Pִhm �ʚV� �VCY�j����j�l5Ⱥ���P��j��p�j(gZ �6�[ eM���r�a��� ��VCY�j����j(kZ �6�[ eM���r�!��V�+�[ eM���r���i5��@n5�5�Zȭ���V���[ eM���r���i5��@n5�5�Z������ g��P��j��p�j(gZ �6�[ eM���r�a��� ��V���j�EF���"�����E�·`m�~�{�Vc�������?\������j�q~�~����ӕ�am��>2ί�����3����������|�W����e�<�>����u?{�������t/����X�Kɔ5o9Ck�-g�:�rF��o9Sּ�� ䷜)k�r���[Δ5o9Ck�-g�:�rF��o9Sּ�� ䷜)k�r���[Δ5o9Ck�-g�:�rF��o9Sּ�� ķ�)�x�:�o9Sμ�� ䷜�|�Y ��LY�3�6��r��y�Z�o9Sּ�� ䷜�,gɺ���U֔�hm ��ʚr� �rVYS��\��,gɺ���U֔�hm ��ʚr� �rVYS��\��,gɺ���Uν�E�G��J8�Y4��Y�L9��r9+��r�+��YeM9��r9��)g��@.g�5�,Z�嬱�r����YeM9��r9��)g��@.g�5�,Z�嬱�r����YeM9��r9��)g��@.g�5�,Z�嬑��%g㰜U�Q�p\�*g�Y�6��YeM9��r9k���%��rVYS��\�*k�Y�6��YeM9��r9k���%��rVYS��\�*k�Y�6��YeM9��r9k���%��rVYS��\�*k�Y�6�Y%�,:��Q��%e㸜UΔ�(m ��ʚr� �rVYS��\��,gɺ���U֔�hm ��ʚr� �rVYS��\��,gɺ���U֔�hm ��ʚr� �rVYS��\� +륜� +�rVYS��\�*k�Y�6�Y%�,:��q�r����YeM9��r9��)g��@.g�5�,Z�嬱�r����YeM9��r9��)g��@.g�5�,Z�嬱�r����YeM9��r9��)g��@.g�5�,Z�嬱�r����YeM9��b9����EgḜUΔ�(m ���:�Y�.@.g�5�,Z�嬲��Ek��U֔�hm ���:�Y�.@.g�5�,Z�嬲��Ek��U֔�hm ���:�Y�.@.g�5�,Z�嬲��Ek��U֔�hm ���:�Y�.@,g�t���,��ʙr� �rVYS��\��,gɺ���U֔�hm ��ʚr� �rVYS��\� +륜� +�rVYS��\�*k�Y�6��YeM9��r9k���%��rVYS��\�*k�Y�6��YeM9��b9k�)g��8,g�r���,��ʙr� �rVYS��\��,gɺ���=�?]9��쇋�����r��}��rv�������������~������/����cѮ��ߕ +�Y���g1�������@1��r1f��#��bLYS����X�)�(��Y8.Ɣ3�J�Ř��b����1eM1��r1��)���@.Ɣ5�Z�Ř��b����1eM1��r1��)���@.Ɣ5�Z�Ř��b����1eM1��r1��)���@.Ɣ5�Z�Ř��b����1�܋14~�a1���Cc�S�c(m c�z)����S�chm cʚb� �bLYS����\��,�Ⱥ��S�chm cʚb� �bLYS����\��,�Ⱥ��S�chm cʚb� �bLYS����X�i�1r6�1��*�Řr�Ci�S�chm c�:�1�.@.Ɣ5�Z�Ř��Ck�S�chm c�:�1�.@.Ɣ5�Z�Ř��Ck�S�chm c�:�1�.@.Ɣ5�Z�Ř��Ck�S�Q���pX�e�1R6��1�L1��r1��)���@.Ɣ5�Z�Ř��b����1eM1��r1��)���@.Ɣ5�Z�Ř��b����1eM1��r1��)���@.Ɣ5�Z�Ř�^�1��@.Ɣ5�Z�Ř��Ck�S�Q���p\��,�H���S�chm cʚb� �bLYS����\��,�Ⱥ��S�chm cʚb� �bLYS����\��,�Ⱥ��S�chm cʚb� �bLYS����\��,�Ⱥ��S�chm cJ:�1t��1�L1��r1f��#��bLYS����\�)k�1�6��1eM1��r1f��#��bLYS����\�)k�1�6��1eM1��r1f��#��bLYS����\�)k�1�6��1eM1��r1f��#��bLIG1���q1��)�P�@.Ɣ5�Z�Ř��b����1eM1��r1��)���@.Ɣ5�Z�Ř�^�1��@.Ɣ5�Z�Ř��Ck�S�chm c�:�1�.@.Ɣ5�Z�Ř��Ck�S�chm cF�b����bL)G1���q1��)�P�@.Ɣ5�Z�Ř��b��������cx�Q�}��q1v|���]����ߣ>q16�\���������o��_��ҋ}��w�o����{��Ź^�~���p��;�f�Ý�����f� �f�Xg3F��͘��Ck�S�ь��p܌)g�1�6��1c��Y 7cʚf� �fLYӌ���܌)k�1�6��1c��Y 7cʚf� �fLYӌ���܌)k�1�6��1c��Y 7cʚf� �fLYӌ���܌)k�1�6��1c��Y 5cʹ7ch��fL G3���q3��i�P�@nƄ�Ҍ�ur3��i���@nƔ5�Z�͘��Ck�3�ٌ�ur3��i���@nƔ5�Z�͘��Ck�3�ٌ�ur3��i���@nƔ5�Z�͘��Ck�3�4c�l6cJ9�1T��1�L3��r3��i���@nƌu6cd]�܌)k�1�6��1eM3��r3��i���@nƌu6cd]�܌)k�1�6��1eM3��r3��i���@nƌu6cd]�܌)k�1�6��1eM3��b3���Cg�3�4c�l7cʙf� �fLYӌ���܌)k�1�6��1c��Y 7cʚf� �fLYӌ���܌)k�1�6��1c��Y 7cʚf� �fLYӌ���܌)k�1�6��1a�4c`]�܌)k�1�6��1eM3��b3���Cg�3�ٌ�tr3��i���@nƔ5�Z�͘��Ck�3�ٌ�ur3��i���@nƔ5�Z�͘��Ck�3�ٌ�ur3��i���@nƔ5�Z�͘��Ck�3�ٌ�ur3��i���@lƔt4c�,7cʙf� �f�Xg3F��͘��Ck�S�4chm 7cʚf� �f�Xg3F��͘��Ck�S�4chm 7cʚf� �f�Xg3F��͘��Ck�S�4chm 7cʚf� �f�Xg3F��͘��f���fL9ӌ���܌)k�1�6��1c��Y 7cʚf� �fLYӌ���܌)k�1�6��1a�4c`]�܌)k�1�6��1eM3��r3��i���@nƌu6cd]�܌)k�1�6��1eM3��r3��i���@lƌ4�9�͘R�f���fL9ӌ���܌)k�1�6��1c��Y 7cǵ�k��"��p��f��"a3v~8�l�a36�\������{����{(��~����Ï?��'W�=?�^�?r��緎��?d3J��3J���8J�|�R��@�R�uF)d]��(k��6��eM���r����R��@�R�uF)d]��(k��6��eM���r����R��@�R�uF)d]��(����#�%Q +�Q�r&JAi9J�K���Q��&JAk9JQ�D)hm G)ʚ(� �(�Xg�B��Q��&JAk9JQ�D)hm G)ʚ(� �(�Xg�B��Q��&JAk9JQ�D)hm G)ʚ(� �(�H���q�(�RPY8�R�3Q +J�Q��&JAk9J1���ur����R��@�R�5Q +Z�Q��&JAk9J1���ur����R��@�R�5Q +Z�Q��&JAk9J1���ur����R��@�R�5Q +Z�Q���(���(�(���q�(g��6��eM���r����R��@�R�uF)d]��(k��6��eM���r����R��@�R�uF)d]��(k��6��eM���r����R��@�R����ur����R��@�R�5Q +Z�Q���(���(�8g�B��Q��&JAk9JQ�D)hm G)ʚ(� �(�Xg�B��Q��&JAk9JQ�D)hm G)ʚ(� �(�Xg�B��Q��&JAk9JQ�D)hm G)ʚ(� �(�Xg�B��Q��&JAk1JQ����p�(g��6��c�Q +Y G)ʚ(� �(EY�����(k��6��c�Q +Y G)ʚ(� �(EY�����(k��6��c�Q +Y G)ʚ(� �(EY�����(k��6��c�Q +Y F)J:�t���L���r����R��@�R�uF)d]��(k��6��eM���r����R��@�R����ur����R��@�R�5Q +Z�Q��&JAk9J1���ur����R��@�R�5Q +Z�Q��&JAk1J1�D)�lF)J9�T���L���r����R��@�R�uF)d]��.J���(��E����,Q���(����w���3�(�eD)��������������/.Fy:��������9Fy�?|��|��|�l���_����/�Ag��e;ʙ�������c�/�!���(k^�����v�5]Z�]���kBk�k2��5�urפ����@5]Z�]���kBk�k2��5�urפ����@5]Z�]���kBk�k2��5�uRפ�{ׄƏ0요ptMh,wMʙ� � �IX/]XW wMʚ� � �IY�5����5)k�&�6��&c�]Y wMʚ� � �IY�5����5)k�&�6��&c�]Y wMʚ� � �IY�5����5)k�&�6�&#M�D��aפ��kBe�kR�tM(m wMʚ� � ��Xg�D��]���kBk�kR�tMhm wMʚ� � ��Xg�D��]���kBk�kR�tMhm wMʚ� � ��Xg�D��]���kBk�kR�tMhm vMJ:�&t�&�L�D��qפ��P�@5]Z�]���kBk�k2��5�urפ����@5]Z�]���kBk�k2��5�urפ����@5]Z�]���kBk�k�K���]���kBk�kR�tMhm vMJ:�&t��&�]I wMʚ� � �IY�5����5)k�&�6��&c�]Y wMʚ� � �IY�5����5)k�&�6��&c�]Y wMʚ� � �IY�5����5)k�&�6��&c�]Y wMʚ� � ĮIIGׄ��qפ��P�@uvMd]��5)k�&�6��&eMׄ�rפ����@uvMd]��5)k�&�6��&eMׄ�rפ����@uvMd]��5)k�&�6��&eMׄ�rפ����@uvMd]��5)���Y83]J�]���kBk�k2��5�urפ����@5]Z�]���kBk�k�K���]���kBk�kR�tMhm wMʚ� � ��Xg�D��]���kBk�kR�tMhm wMʚ� � Į�H�5��q�5)��PY83]J�]���kBk�k2��5�ur�t�⸮ /2��9/�l����@g�r��5���iO�~���_�|�O�������zմ���������W����j�#��8��և�ѕkF,m Fʚ��#g�[�������� ���YG`��b`�� �к�10r�����i�3=�l�W<��@����hu���O�%Z��j��E����'�|���7�+�f*;��a����]��=���SW`�jb`���ڃ)5��c#�������ȩ+0b�10r� +�X�A�����1��3�F,���ȁ���Ś��ș+0b�102��H��9uF�� FN]��=���SW`�jb`��F��A���#V{#�������ȩ+0b�10Rj#T� FN]��=���SW`�jb`���ڃ)tFh�F�<FL�F�\��=���SW`�jb`��F��A���#V{#�������ȩ+0b�10Rj#T� FN]��=���SW`�jb`���ڃ)5��c#�������ȩ+0b�)0r�)0b��(0R� +���9���#F{#�������ȩ+0b�10Rj#T� FN]��=���SW`�jb`���ڃ)5��c#�������ȩ+0b�10r� +�X�A���#R� FN]��=���SW`�jR`��S`�f�a`��F��A���#V{#�������ȩ+0b�10Rj#T� FN]��=���SW`�jb`���ڃ)5��c#�������ȩ+0b�10r� +�X�A�����1���SW`�jR`��S`�f�a`��1ڃ)5��c#�������ȩ+0b�10r� +�X�A�����1���SW`�jb`���ڃ9uF�� FJM`����ȩ+0b�10r� +�X�A���#V{#�&0BuR`��S`�f�a`��1ڃ9uF�� FJM`����ȩ+0b�10r� +�X�A���#V{#�����9���SW`�jb`���ڃ9uF�� FJM`����ȩ+0b�10r� +�X�A���#V{�#���͞��ȑ���ɚ��ș+0b�10r� +�X�A�����1��f1"0�/r���/�t)0�/������ݕ'������K������g�oF�C�L�������_N���{��_~��TF���/���я����?>����������� +�_f~��t�]J)��?�.�^���\���"P��:��Rj + T{� ���B���Rj + T{� ����1��RS��ڃ\�)5�=��RS��ڃ\�u@��A.�����H�)�P�A.�����Ȩ��"uR��S���1,�� + k� e��B�����ur��@�� @JM�jr��@�� @F��c� ���B���Rj + T{� ���B���2�.�H�\�)5�=��RS��ڃ\�)5�=��AS���sX�)r@H�@�L�hr��@�� @F��c� ���B���Rj + T{� ���B���2�.�H�\�)5�=��RS��ڃ\�)5�=��QwD��H�)�P�A.�����H���B���2d + "{� e��B���Rj + T{� ���B���2�.�H�\�)5�=��RS��ڃ\�)5�=��QwD��H�)�P�A.�����H�)�P�A.��z.�@��\�)5�=��RS��ڃX�)t@h�@���c� ���B���Rj + T{� ���B���2�.�H�\�)5�=��RS��ڃ\�)5�=��QwD��H�)�P�A.�����H�)�P�A.��� R� @JM�jb��U��Ys\�)3�=��QwD��H�)�P�A.�����H�)�P�A.��� R� @JM�jr��@�� @JM�jrd�]��:��Rj + T{� ���B���Rj + T{� ����1��BW�f�q��@�� @JM�jrd�]��:��Rj + T{� ���B���Rj + T{� �� P� @JM�jr��@�� @JM�jrd�]��:��Rj + T{� ���B���Rj + T{ ���"���R�*���9.�����H�)�P�A.��� R� @�W��YЋ/r����E��͐��=�:������������_h}&9�?�����_���w����>��e~��s���t�y��_����`�������_>�����>n��x닼V�gY�Ի���G��>{E���sH�$��g��=xA=�n�z����V�?�[��>�f�] �?��A���^A{��z�����W���>�|x�����^Q{�m��ps���nF]�eu^P�n>|���W���>��>?����g��=xA=����RO�������ɻ��ީ�,�s��z�1�=H���+j^P�?��R=}��ڃ���`��g��=��z8����YV�������I���^Q{���psx���W���>�<�_���b�������������2:/�ǟ��UO�������3x+��g��=xA=���z����V�?�;��ϲ:/�����TO�������c8��p�g��=xA=��Y���+j���n�=����gY�Ի����7���+j^Pn�}���W���>��-�>{E��o�=����p�gY����ު��^Q{��zz+�B�K�Ѭ9~ɰ2sb��#F�'FH�|bD�91�j�����=�'F��#�� �1�>1B��#J͉T{�O�(5'FP�A>1�ԜA��ĈQ��R� �QjN��ڃ|bD�91�j�����=�'F��O��:�Ĉ2O'FP|9�'F�N��Xs|bD�91�h���O��:�ĈRsb��#J͉T{�O�(5'FP�A>1b�}b��1�'F��#�� �QjN��ڃ|bD�91�j���#��A>1�ԜA��ĈRsb��#J͉T{O�4'F��9<1��ubɚ�#�̉D{�O�(5'FP�A>1b�}b��1�'F��#�� �QjN��ڃ|bD�91�j���#��A>1�ԜA��ĈRsb��#J͉T{�O�u�!u�����=�'F��#�� �Q�:1�f��C���=�'F��#�� �QjN��ڃ|bD�91�j���#��A>1�ԜA��ĈRsb��#J͉T{�O�u�!u�����=�'F��#�� �QjN��ڃ|bD��#��A>1�ԜA��ĈRsb��# +]'FЬ9>1b�}b��1�'F��#�� �QjN��ڃ|bD�91�j���#��A>1�ԜA��ĈRsb��#J͉T{�O�u�!u�����=�'F��#�� �QjN��ڃ|bĨ���c�O�(5'FP�A<1��ub͚�#�̉D{�O�u�!u�����=�'F��#�� �QjN��ڃ|bĨ���c�O�(5'FP�A>1�ԜA��ĈRsb��#F�'FH�|bD�91�j�����=�'F��#�� �1�>1B��# +]'FЬ9>1�̜A��ĈRsb��#F�'FH�|bD�91�j�����=�'F��#�� �����s�O�(5'FP�A>1�ԜA��ĈRsb��#F�'FH�|bD�91�j�����=�'F��#�� �1hN���sxbD����5�'F��#�� �QjN��ڃ|bĨ���c�O���qb��:1��\>1r����/��yzz�������a���ן>��Ӻ5�摂����_���n����r�����|��������A>[�Ԝ-@��l�Rs����J��T{���|���9�g����� �-Pj��ڃ|�@�9[�j������A>[�Ԝ-@��l�Rs���ij +]gЬ9>[`�}���1�g����� �-Pj��ڃ|�@�9[�j������A>[�Ԝ-@��l�Rs����J��T{��u�- u����l�=�g����� �-Pj��ڃ|����l�c��(5gP�A<[��u��͚����D{��u�- u����l�=�g����� �-Pj��ڃ|����l�c��(5gP�A>[�Ԝ-@��l�Rs����F�gH�|�@�9[�j����l�=�g����� �-0�>[@����<�-@���-P�:[�b���e�l�=�g�z>[���J��T{��(5gP�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{��(5gP�A<[`М- ���l�"��$k��(3g�A>[�Ԝ-@��l�Q��R� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{��(5gP�A>[`�}���1�g����� �-Pj��ڃx�@��l�5�g��D��-Pf� ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{��(5gP�A>[`�}���1�g����� �-Pj��ڃ|�@�9[�j������:�l�Rs����J��T{�(t�-@���l�1��B� �-Pj��ڃ|�@�9[�j����l�=�g����:�l�Rs����J��T{��(5gP�A>[`�}���1�g����� �-Pj��ڃ|�@�9[�j������A>[�Ԝ-@��l�B��4k��(3g�A>[`�}���1�g����� �-Pj��ڃ|�@�9[�j������A>[�Ԝ-@��l�Rs����J��T{��u�- u����l�=�g����� �-Pj��ڃ|����l�c�(t�-@���l�2s����J��T{��u�- u����l�=�g����� �-Pj��ڃ|�@����A>[�Ԝ-@��l�Rs����J��T{��u�- u����l�=�g����� �-Pj��ڃx���9[@f���E��H��-Pf� ڃ|�@�9[�j������A>[@ �9[�_d�-x�E.�-��E�قÕ�w����-X��ق�u��>~���>����G����<�������������(=[�n��/���d��;N~�]/�ɯ��ɨ� ��JM��jb���'�Ys's�Ʉ�A����8��8Y���Q�A����8��8٨;N&ur����ɨ� ��JM��jr����ɨ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�9N6ꎓI�'+5q2�=�q�BW��f�q����Ɉ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�9N6ꎓI�'+5q2�=�q�R'�ڃ'+5q2�=�q�Qw�L��8Y���Q�A����8��8Y���Q�A�����dR� ���<��(��8Y�+NF��8NVf�dD{��d���dP� ��JM��jr����ɨ� ��JM��jr�l�'�:9NVj�dT{��d�&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'4q2�=�q�"W��d�q����Ɉ� ��JM��jr�l�'�:9NVj�dT{��d�&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'u�ɤ�A����8��8Y���Q�A����d4k�dC&N&��8NVf�dD{��d�&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'u�ɤ�A����8��8Y���Q�A����8��8Y��8�9�q�R'�ڃ'+5q2�=�q�BW��f�q�l�':9NVj�dT{��d�&NF�9NVj�dT{��d��8��1�q�R'�ڃ'+5q2�=�q�R'�ڃ'u�ɤ�A����8��8Y���Q�A����8��8٨;N&ur����ɨ� �� +]q2�5�q�2'#ڃ'u�ɤ�A����8��8Y���Q�A����8��8٨;N&ur����ɨ� ��JM��jr����ɨ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�9N6ꎓI�'+t��h����L��hr����ɨ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�9N�9Nur����ɨ� ��JM��jr����ɨ� ��F�q2�c��d�&NF�9NVj�dT{��d�&NF�1N6h�d2{�dE�8ɚ�8Y����A��/'���>�\������_���b�{�{������]����w7�����y�t�v��>�Ϝ{ݼh���������z���4�<������t)��o,����X��]~c��/Q0�c��`�& +F�9 +Vj�`T{�`��(͚�(ؘ; +&tr��D��� G�JM�jr��D��� G�F�Q0�c��`�& F�9 -Vj�`T{��`��(��1�Q�R�ڃ+tE�h�G��L�hrl��:9 Vj�`T{��`�& F�9 -Vj�`T{��`��(��1�Q�R�ڃ+5Q0�=�Q�R�ڃuG���A����(��(X���Q�A����(��(ب; -&uR��S���F� +6ꎂI�+5Q0�=�Q�R�ڃ+5Q0�=�Q�QwL��(X���Q�A����`4k��`e& +F�9 +6ꎂI�+5Q0�=�Q�R�ڃ+5Q0�=�Q�QwL��(X���Q�A����(��(X���Q�A�����`R� G�JM�jr��D��� G�JM�jrl��:) +V�) +F��F� \Q0�5�Q�2#ڃ��:9 Vj�`T{��`�& F�9 @@ -1865,43 +1873,44 @@ F F�9 Vj�`T{��`�& F�9 -6ꎂI�+5Q0�=�Q�R�ڃ+5Q0�=�Q�A��s+rE�H�G��L�hrL�����{�����Q���1��G���� O���s����ӯ�}���O�����/q���.�_����(�R'q��]~����+_�z��jb��$���AL��GV{G��đ���ѩ+qd�1qTjGT� &�N]�#�=���SW��jb��ԕ8�ڃ�8*5�#�cG��đ���ѡ�đ͚��љ+qd�1qTjGT� &�N]�#�=���SW��jb��ԕ8�ڃ�8*5�#�cG��đ���ѩ+qd�1qt�JY�AL����1���SW��jb��ԕ8�ڃ�8:u%��� &�JM����љ�G/�(qt�)qd��0qt�J�AL��GR� &�N]�#�=���SW��jb��ԕ8�ڃ�8*5�#�cG��đ���ѩ+qd�1qt�JY�AL����1���SW��jb��ԕ8�ڃ�8:u%��� %� -]�#�=G��#O�#�5���3W��hb��ԕ8�ڃ�8*5�#�cG��đ���ѩ+qd�1qt�JY�AL����1���SW��jb��ԕ8�ڃ�8:u%��� &�JM����ѩ+qd�1qt�JY�AJzJ٬9J�G${Gg�đ���ѩ+qd�1qt�JY�AL����1���SW��jb��ԕ8�ڃ�8:u%��� &�JM����ѩ+qd�1qt�JY�AL��GV{G��đ�9���SW��jb��ԕ8�ڃ�8:��8�Ys�8*3�#�cG��đ���ѩ+qd�1qt�JY�AL����1���SW��jb��ԕ8�ڃ�8:u%��� &�JM����ѩ+qd�1qt�JY�AL��GV{G�&qDub��ԕ8�ڃ�8:��8�Ys�8:s%��� &�JM����ѩ+qd�1qt�JY�AL��GV{G�&qDub��ԕ8�ڃ�8:u%��� &�N]�#�=���R�8�:1qt�JY�AL��GV{G��đ���Q�IQ��8:��8�Ys�8:s%��� &�N]�#�=���R�8�:1qt�JY�AL��GV{G��đ���Ѩ;q$ub��ԕ8�ڃ�8:u%��� &�N]�#�=���R�8�:1qt�JY�AL��GV{G��đ���Q�+qD��(qt�)qd��0qt�J�AL��3�#����k�#|�?�o���x�������o�x������|&��� -���O��o�����n���������;��ǭ�۫o?=��~��`���/��9�ww7�^�"���Ͼ��������O��z��j^QO��u�z�,�=��Uj�/�����:u�_�����:u�_�����:��~Y6k�/�̼_�1��u�z�,�=��uj�kT{��k�&�F�9�6ꎯI�_+5�5�=��R_�ڃ_+5�5�=��Qw|M���Z���Q�A��������Z���Q�A�����kR� ��JM|�jb|��_�Ys_+3�5�=��Qw|M���Z���Q�A��������Z���Q�A�����kR� ��JM|�jr|���ר� ��JM|�jr|m�_�:9�Vj�kT{��k�&�F�9�Vj�kT{��k�����1H�2O�5��c_+p��(����L|�hr|-�s| ���Z���Q�A��������Z���Q�A�����kR� ��JM|�jr|���ר� ��JM|�jr|m�_�:9�Vj�kT{��k�&�F�9�Vj�kT{�k�&�&��0�V䊯��9��������Z���Q�A�����kR� ��JM|�jr|���ר� ��JM|�jr|m�_�:9�Vj�kT{��k�&�F�9�Vj�kT{��k�����1��R_�ڃ_+5�5�=��BW|�f�a|m���D����L|�hr|���ר� ��JM|�jr|m�_�:9�Vj�kT{��k�&�F�9�Vj�kT{��k�����1��R_�ڃ_+5�5�=��R_�ڃ_�_�:9�Vj�kT{��k�&�F�1�V芯Ѭ9�����kB� ��JM|�jr|���ר� ��JM|�jr|m�_�:9�Vj�kT{��k�&�F�9�Vj�kT{��k�����1��R_�ڃ_+5�5�=��R_�ڃ_u�פ�A��������Z�+�F��8�Vf�kD{��k�����1��R_�ڃ_+5�5�=��R_�ڃ_u�פ�A��������Z���Q�A��������ڨ;�&ur|���ר� ��JM|�jr|���ר� ��F��5�c�k���͚��Z����A��������ڨ;�&ur|���ר� ��JM|�jr|���ר� ��B=�נ�A��������Z���Q�A��������ڨ;�&ur|���ר� ��JM|�jr|���ר� ��M|Mf�a|��_#Ys_+3�5�=�����X���=N����8�]����_ވ�?�?8����L���_�ˏ��~��?O�ۧ���������Ȱ�n����,�������O��gwo|����oz�2������/�z��j^Qnn����RO�}C��+��͇��z��j^i�W/�s]��^���Q�A�땚���^���Q�A�덺�zR� ��JM]�jr]������ �� -]u=�5�u�1w]O��^���Q�A�땚���^���Q�A�덺�zR� ��JM]�jr]������ ��JM]�jr]o�]ד:��Wj�zT{��z���G���Wj�zT{��z��1�u�RSףڃX�+t��h����L]�hr]o�]ד:��Wj�zT{��z���G���Wj�zT{��z��1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚���ި��'uR]��S]����� -\u=�5�u�2S�#ڃ\��\׃:��Wj�zT{��z���G���Wj�zT{��z��1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚��ĺޠ����9����z$k��ze��G���Wj�zT{��z��1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚���ި��'ur]������ ��JM]�jb]��UףYsX�2u=�=�u�2S�#ڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚���ި��'ur]������ ��JM]�jr]������ ��B=����A�땚���^���Q�A����z4k��zc�1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚���ި��'ur]������ ��JM]�jr]������ ��F�u=�c��z���G���W��Ѭ9�땙���ި��'ur]������ ��JM]�jr]������ ��F�u=�c��z���G���Wj�zT{��z���G���7��I�\�+5u=�=�u�RSףڃ\�+5u=�=�u�Qw]O�ĺ^���G�渮Wf�zD{��z���G���7��I�\�+5u=�=�u�RSףڃ\�+5u=�=�u�P�u=�s��z���G���Wj�zT{��z���G���7��I�\�+5u=�=�u�RSףڃ\�+5u=�=�u�ASד�sX�+r��H����L]�hr]=Wu=~�S]�5����=�p�t��o���������������zQ�>�Ϝ���������?��������oy>�<'rge~����ӵ��������ŷ����"��ڃ�)5��=��R��ڃ�u���A��������O���P�A��������Ϩ;�#ur������ � -]��5��2�!ڃ�u���A��������O���P�A��������Ϩ;�#ur������ �JM��jr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)���x9��W��b�q������ �B=���A��������O���P�A��������Ϩ;�#ur������ �JM��jr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�1�3h�?2{�?E��ɚ��O����A��������Ϩ;�#ur������ �JM��jr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)t�h���L�Gd�q������ �JM��jr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)5��=��P���s��?�&�C�9�Sj�?T{�?���͚��Ϙ;�#tr������ �JM��jr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)5��=��Qw�G���O���P�A����?4k��?e&�C�9�3��H��)5��=��R��ڃ�)5��=��Qw�G���O���P�A��������O���P�A�����?R� �JM��jr������ �JM��jr�g���:1�S��Ь9��������O���P�A�����?R� �JM��jr������ �JM��jr�'�s����O���P�A��������O���P�A�����?R� �JM��jr������ �JM��jb�g��d���\��5��2�!ڃ�]��T�����]| �����ވ������=��3���v�����_��߾����|���˧�G����_�����>����?������O��|������L����x����}��6����l�ſ���6��"�l�=��6u?�D��g���g�P�A~�I�y� ��g���g�P�A~�ɨ��&R� ?ۤ�<ۄj�MJͳM�� ?ۤ�<ۄj�MF��6�:��&���&T{��mRj�mB���&��g�Ь9|�ɐy��Ȟ�g���g��A~�I�y� ��g���g�P�A~�ɨ��&R� ?ۤ�<ۄj�MJͳM�� ?ۤ�<ۄj�MF��6�:��&���&T{��mRj�mB���&���&T{��m���&P� ?ۤ�<ۄj�MJͳM�� >ۤ��l�5��6s?�D��g���g�P�A~�I�y� ��g���g�P�A~�ɨ��&R� ?ۤ�<ۄj�MJͳM�� ?ۤ�<ۄj�MF��6�:��&���&T{��mRj�mB���&���&T{��m2�~���1��6)5�6�ڃ�l�B׳Mh�?ۤ�<ۄh�MF��6�:��&���&T{��mRj�mB���&���&T{��m2�~���1��6)5�6�ڃ�l�R�l�=��6)5�6�ڃ�l�Q��M��A~�I�y� ��g���g�P�A~�I�y� ��g����m"u�M -]�6�Ys�l�2�l�=��6)5�6�ڃ�l�Q��M��A~�I�y� ��g���g�P�A~�I�y� ��g��z~� �9��6)5�6�ڃ�l�R�l�=��6)5�6�ڃ�l�Q��M��A~�I�y� ��g���g�P�A~�I�y� ��g��g���9|�I���&$k��mRf�mB���&z�F<ۄ���l���8�_}������������g�O��@=�����_�i}(�ɳM�דM�ۿ������/�<|x��}�K����_��w�~������r�n�C����O��'L7w��}����l������p���o�=xE}��{g��g�P{���x������>��ڃ��O�7�>������|�`��g�P{���ps�����z��j^Q�?��1���g�P{��[��?�{�注��+���p� ��g�P{��z�1<����>��ڃW���`��g�P{�u�p�1��^�볬��+���/ҟ�z��j^Q��n��g�P{���x�`��� ��^'o7��7�|��1xE=��z��j^Q�?���R=}� ���ǟ���TO�}C��+/EYo�1�~��c�_;�Լv����(5��A���3J�kgP�A~�Q�kgH�����3�� �vF�y��=ȯ�Qj^;�j�kg��_;C����(5��A��3 -]��A����3��kg�A~�Q�kgH�����3�� �vF�y��=ȯ�Qj^;�j�kg��_;C����(5��A���3J�kgP�A~�R��T{�_;c���R� �vF�y��=ȯ�Qj^;�j�kg���Πڃ�����ΐ:�3�<�v��1|��kgP�9~�2��D{�_;#��kg@������3�� �vF�y��=ȯ�Qj^;�j�kg��_;C����(5��A���3J�kgP�A~�R��T{�_;c���R� �vF�y��=ȯ�Qj^;�j�kg���Πڃ����3d��vF��3H��vF�9̀h�i��4�=ȧ��O3�:�4�Rs����J�iT{�O3(5�P�A>�`�}���1ȧ����� �fPjN3�ڃ|�A�9̀j�i�����A>͠Ԝf@��4�Rs���� -]�Ь9<�`Ȝf ���4�2s����J�iT{�O3(5�P�A>�`�}���1ȧ����� �fPjN3�ڃ|�A�9̀j�i�����A>͠Ԝf@��4�Rs����J�iT{�O3�|��9ȧ����� �fPjN3�ڃx�A��4�5ǧ��O3:�4�Rs����J�iT{�O3(5�P�A>�`�}���1ȧ����� �fPjN3�ڃ|�A�9̀j�i�����A>͠Ԝf@��4�Rs����J�iT{�O3u�f u�i��4�=���N3�Ys|�A�9̀h�i�����A>͠Ԝf@��4�Rs����J�iT{�O3u�f u�i��4�=ȧ����� �fPjN3�ڃ|����4�c�O3(5�P�A>͠Ԝf@��4�Rs����FݧH�x�A��4�5ǧ����� �fPjN3�ڃ|����4�c�O3(5�P�A>͠Ԝf@��4�Rs����B=�f�u�i��4�=ȧ����� �fPjN3�ڃ|����4�c�O3(5�P�A>͠Ԝf@��4�Rs�����i2{O3(r�f@���4�2s����tm@�f��q:�p�5ﯞf��=������c��o�����:ߟ:<��|��/�>���3ܭ���o����������|�����˿�{w��������[g^D/�n�������=<����3#�7�3���3��_2#T{3#���͚��H�Ɍ�AΌ��3#R� gFJMf�jrf��dF�� gFJMf�jrfdԝ�:93Rj2#T{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�ugF��Aʌ�yʌP���H�+3B��83Rf2#D{�3#��3#P� gFJMf�jrf��dF�� gFJMf�jrfdԝ�:93Rj2#T{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�4��=���"Wf�d�qf��dF�� gFJMf�jrfdԝ�:93Rj2#T{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�ugF��AΌ������H�ɌP�Ǎ�2#4k3#C&3"��83Rf2#D{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�ugF��AΌ������H�ɌP�AΌ������H����9ș�R��ڃ�)5��=���BWf�f�qfd̝:93Rj2#T{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�ugF��AΌ������H�ɌP�AΌ������Ȩ;3"urf��dF�� fF -]��5Ǚ�2�!ڃ�ugF��AΌ������H�ɌP�AΌ������Ȩ;3"urf��dF�� gFJMf�jrf��dF�� gFFݙ�c�3#�&3B�93Rj2#T{�3#�&3B�932�ΌH��)teFh�gF�Lf�hrf��dF�� gFFݙ�c�3#�&3B�93Rj2#T{�3#�&3B�93�93urf��dF�� gFJMf�jrf��dF�� gFFݙ�c�3#�&3B�93Rj2#T{�3#�&3B�132h2#2{3#E��ɚ��H�Ɍ�AΌ���~�Sft�5 3��=~�`�=|oE� ��3 ��7���������~���$�~~��L��q����E��=���͋�x�=�/��G���h*5��D��=�B=�G�9���Tjޣ�j�{4���h�ڃ�M��=��� �GӨ�=���A~��R�MT{�ߣ�ԼG���h*t�G͚��hs�G��1���Tjޣ�j�{4���h�ڃ�M��=��� �GӨ�=���A~��R�MT{�ߣ�ԼG���h*5��D��=�F���$u�{4���h�ڃ�M��=��� �GS�y�&�=���4��I��+5�;�=���BW��f�q���� �F݁;�c�w�&pG�9pWjwT{�w�&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]� �Q�Aܕ�����]� �Q�A܍�wR� ��<�(^�a����Xs�+3�;�=ȁ�Pρ;�s�w�&pG�9pWjwT{�w�&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]� �Q�Aܕ�����]� �Q�A� ���̞��]�+pG��8pWfwD{�w�&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]� �Q�Aܕ�����]� �Q�A܍�wR� �JM��jr���� � -]�;�5���!��s�+3�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]� �Q�Aܕ�����]� �Q�A܍�wR� �JM��jr���� �JM��jr�.�s����]� �Q�Aܕ�����]�+pG��8p7�� ��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]� �Q�Aܕ�����]� �Q�A܍�wR� �JM��jr���� �JM��jr�n���:9pWjwT{w���͚��]� ��A܍�wR� �JM��jr���� �JM��jr�n���:9pWjwT{�w�&pG�9pWjwT{�w�����1ȁ�R��ڃ�+5�;�=ȁ�R��ڃ�uA��w4k�we&pG�9pWjwT{�w�����1ȁ�R��ڃ�+5�;�=ȁ�R��ڃ����:9pWjwT{�w�&pG�9pWjwT{�w�����1ȁ�R��ڃ�+5�;�=ȁ�R��ڃ�4�;�=���"W��d�q���� ��cm���8�_���c��?��?<a���$p�]��?|�ۧ/�������͟?~�������{>v��l�߽����d��m��o{5�|�\�,Y�A�,��2KV{3K�&�Dubf�ԕY�ڃ�Y:ue��� f�N]�%�=���R�Y�:1�t��,Y�A�,��2KV{3K��̒���R��,Q��Y:ue��� e�=e�l�f��\�%�=���R�Y�:1�t��,Y�A�,��2KV{3K��̒���R��,Q��Y:ue��� f�N]�%�=���SWf�jbf��d���A�,��2KV{3K��̒���ҩ+�d�1�Tj2KT� d����Y�x9F��O�%�5���3Wf�hbfiԝY�:1�t��,Y�A�,��2KV{3K��̒���R��,Q��Y:ue��� f�N]�%�=���SWf�jbf��d���A�,��2KV{3K��̒���ҩ+�d�)�T��,��9�,y�,��9�,��2KF{3K��̒���R��,Q��Y:ue��� f�N]�%�=���SWf�jbf��d���A�,��2KV{3K��̒���ҩ+�d�1�Tj2KT� f�N]�%�=���SWf�jRf��Sf�f�Qf�ȕY"�s�Y:se��� f�N]�%�=���SWf�jbf��d���A�,��2KV{3K��̒���ҩ+�d�1�Tj2KT� f�N]�%�=���SWf�jbf�ԕY�ڃ�Yug���A�,��2KV{3K��̒���ҡ�͚̒��R��,��Y:ue��� f�N]�%�=���SWf�jbf��d���A�,��2KV{3K��̒���ҩ+�d�1�Tj2KT� f�N]�%�=���SWf�jbf�ԕY�ڃ�Y*5�%�c3K��̒���ҡ�͚̒��ҙ+�d�1�Tj2KT� f�N]�%�=���SWf�jbf�ԕY�ڃ�Y*5�%�c3K��̒���ҩ+�d�1�t��,Y�A�,����1���SWf�jbf�ԕY�ڃ�Y:ue��� f�JMf����ҡ�͚̒��ҙ+�d�1�t��,Y�A�,����1���SWf�jbf�ԕY�ڃ�Y:ue��� f�Fݙ%�s3K��̒���ҩ+�d�1�t��,Y�A�,����1���SWf�jbf�ԕY�ڃ�Y:ue��� e� -]�%�=G��#O�%�5���3Wf�hbf ���,�{|����8<\�,�{�����p�ș��L2˻�Y��ϟN��_~�����R���뗗��|:�����]h������m��o{���|�;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*tŝh�ǝ�L܉hr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;�����S��;Q�A�;�����Ө;�$uRܩ�S܉��Ɲ -\q'�5�q�2w"ڃw -�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;�����S��;Q�A�;����ĸӠ�;��9�;��N$k��Ne&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;�����S��;Q�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jbܩ�w�Ysw2q'�=�q�2w"ڃw*5q'�=�q�Rw�ڃwuǝ��A�;�����S��;Q�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ǝB=ǝ��A�;�����S��;Q�A�;��N4k��Nc�1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;�����S��;Q�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ǝF�q'�c��N�&�D�1�T�;Ѭ9�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ǝF�q'�c��N�&�D�9�Tj�NT{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�Qw�I�ĸS�+�D��8�Tf�ND{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�P�q'�s��N�&�D�9�Tj�NT{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�Aw��sw*rŝH�ǝ�L܉hr�y�NTq'~�S�y�5 ��=~�;4���s}&q��M7��;><��=�Y�y�e��t������ss��7;}�����n�����x�<}� ���7w�z��j^Qo><�J���7�|]}:��>��Ѩ볬��+��͇V=}� ���7���pY��Ͼ�����cx�Kt��>��ڃ�?9���c�wj>����wR=}� �������e��z��j^Q�?��UO�}C���������ѩ볬��+���/���z��j^Q��l��g�P{���x�`��� ��$�릁1��B� IPj�$�ڃ|$A�9��j���H�=�G���$�:�H�Rs$��# J͑T{��$(5GP�A>�`�}$��1�G��# �� IPj�$�ڃ|$A�9��j���# ��A>���I@��H�Bב4k��$(3G�A>�`�}$��1�G��# �� IPj�$�ڃ|$A�9��j���# ��A>���I@��H�Rs$��# J͑T{��$uI u���H�=�G��# �� IPj�$�ڃ|$���H�c��$(�t$��1<���u$Ś�# �̑D{��$�|$�9�G��# �� IPj�$�ڃ|$A�9��j���# ��A>���I@��H�Rs$��# J͑T{��$uI u���H�=�G��# �� IPj�$�ڃx$��9�@f��E�# H�IPf�$ ڃ|$A�9��j���# ��A>���I@��H�Rs$��# J͑T{��$uI u���H�=�G��# �� IPj�$�ڃ|$���H�c��$(5GP�A>���I@��H�Bב4k�$2G��9>���I@��H�Rs$��# J͑T{��$uI u���H�=�G��# �� IPj�$�ڃ|$���H�c��$(5GP�A>���I@��H�Rs$��# B=I�u���H�=�G��# �� IP�:��f��c�# ��A>���I@��H�Rs$��# J͑T{��$uI u���H�=�G��# �� IPj�$�ڃ|$���H�c��$(5GP�A>���I@��H�Rs$��# F�GH�|$A�9��j���# h�IPf�$ ڃ|$���H�c��$(5GP�A>���I@��H�Rs$��# F�GH�|$A�9��j���H�=�G��# �� I0�>�@��# J͑T{��$(5GP�A>���I@��H�Q��R� IP�:��f��e�H�=�G��# �� I0�>�@��# J͑T{��$(5GP�A>���I@��H�P�G@��|$A�9��j���H�=�G��# �� I0�>�@��# J͑T{��$(5GP�A>���I@��H�As$�̞�# �\G��9>���I@��H���_I��q:�p�5�I��=~������=IX�ɑ���H�?�xx���o?�|�����û>��������������������ap�t�N��'�����_pP� '�JM�jr��$�� '�JM�jrnԝ��:9WjpT{�p�&G�1W�J�Ѭ9N���pB� '�JM�jr��$�� '�JM�jrnԝ��:9WjpT{�p�&G�9WjpT{�p����1� �R���ڃ��+5 8�=� �R���ڃ��u'ऎAN�����\�+G��8WfpD{�p����1� �R���ڃ��+5 8�=� �R���ڃ��u'ऎAN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�pe�p/�0W�J�Q�9N�����\���9� �R���ڃ��+5 8�=� �R���ڃ��u'ऎAN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� &�MNf�a�ȕ�#Ys��+3 8�=� �R���ڃ��u'ऎAN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�p�&G�9WjpT{p��͚�ܐI���9N�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�p�&G�9WjpT{�p�&G�9�9ur��$�� '�JM�jb�Е��Ys��s'���AN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�p�&G�9WjpT{�p�&G�97�N�I���+5 8�=� �BW�f�q��$��� '�F� 8�c�p�&G�9WjpT{�p�&G�97�N�I���+5 8�=� �R���ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AN���pR� &� -] 8�5� �2��#ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AN��zN�A����+5 8�=� �R���ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AL� ��̞�\�+G��8WfpD{����J��{���� ����;���͇�_�`�>��a%���~������G��o?����O�}���k�������������_�s�_w�x_�z���@��jr����x�� �xF�=�c�{<���C���Sjz<T{�{<���C���3���H���)5=�=�=�BW��f�q����x�� �xF�=�c�{<���C���Sjz<T{�{<���C���3���H���)5=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A����O���P�A��{<R� �x�<�x(^�a�����Xs��)3=�=�=�P�=�s�{<���C���Sjz<T{�{<���C���3���H���)5=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A����O���P�A����̞�O���C���Sfz<D{�{<���C���3���H���)5=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A����O���P�A��{<R� �xJM��jr����x�� �x -]=�5�=�!���s��)3=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A����O���P�A��{<R� �xJM��jr����x�� �xJM��jr�'�s���O���P�A����O���C���3������)5=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A����O���P�A��{<R� �xJM��jr����x�� �xJM��jr�g���:��Sjz<T{{<��͚�O����A��{<R� �xJM��jr����x�� �xJM��jr�g���:��Sjz<T{�{<���C���Sjz<T{�{<����1�=�R��ڃ��)5=�=�=�R��ڃ��u�x��A���z<4k�{<e��C���Sjz<T{�{<����1�=�R��ڃ��)5=�=�=�R��ڃ�� ���:��Sjz<T{�{<���C���Sjz<T{�{<����1�=�R��ڃ��)5=�=�=�R��ڃ��4=�=�=�"W��d�q����x�� �x�{2����8�x_z���c�x�o�xG����{����xV���O_���o��~������������x����N�����m������c_?���o������������O�=9q����������p�p~����).��^�����)P�A~�¨�a -R� ?L��<L�j��J���� >L���0�5�S2S�s�0�2�0�=�S(5S�ڃ�0�R�0�=�Su?LA��)���)P�A~�B�y���)���)P�A~�¨�a -R� ?L��<L�j��J���� ?L��<L�j��B=?L��)���)P�A~�B�y��ć)��@���a -c�)��0�R�0�=�S(5S�ڃ�0�R�0�=�Su?LA��)���)P�A~�B�y���)���)P�A~�¨�a -R� ?L��<L�j��J���� ?L��<L�j��F�S�:�a +6ꎂI�+5Q0�=�Q�R�ڃ+5Q0�=�Q�A��s+rE�H�G��L�hrL�����{���_����cD��W������o9 +^�9G�y��?��۷?��V|{��������>e���8��ۉ��w9q|�E qD�9q4�NI��8*5�#�=ȉ�R�8�ڃ�8*5�#�=ȉ�Qw�H���Q�IQ�AN������Q�IQ�AN��GR� '�JM�jb�Е8�Ys�8*3�#�=ȉ�Qw�H���Q�IQ�AN������Q�IQ�AN��GR� '�JM�jr��$��� '�JM�jr�hԝ8�:9qTjGT{�G�&qD�9qTjGT{�G��đ�1H��2O�#�/�0qT�JQ�9N������Q����9ȉ�R�8�ڃ�8*5�#�=ȉ�R�8�ڃ�8u'���AN������Q�IQ�AN������Ѩ;q$ur��$��� '�JM�jr��$��� &�M�Hf�a�ȕ8"Ys�8*3�#�=ȉ�R�8�ڃ�8u'���AN������Q�IQ�AN������Ѩ;q$ur��$��� '�JM�jr��$��� '�F݉#�c�G�&qD�9qTjGT{G���͚��ѐI��9N������Q�IQ�AN������Ѩ;q$ur��$��� '�JM�jr��$��� '�F݉#�c�G�&qD�9qTjGT{�G�&qD�9q�9qur��$��� '�JM�jb�Е8�Ys�8s'���AN������Q�IQ�AN������Ѩ;q$ur��$��� '�JM�jr��$��� '�F݉#�c�G�&qD�9qTjGT{�G�&qD�9q4�NI��8*5�#�=���BW�f�q��$��� '�F݉#�c�G�&qD�9qTjGT{�G�&qD�9q4�NI��8*5�#�=ȉ�R�8�ڃ�8*5�#�=ȉ�Qw�H���Q�IQ�AN������Q�IQ�AN��GR� &� +]�#�5lj�2�8"ڃ�8*5�#�=ȉ�Qw�H���Q�IQ�AN������Q�IQ�AN�zNA���8*5�#�=ȉ�R�8�ڃ�8*5�#�=ȉ�Qw�H���Q�IQ�AN������Q�IQ�AL �đ̞��Q�+qD��8qTfGD{���ŞJ�{��_�p{1q��=~wx������������n��|�p���ۉ��P>���n�?�����ۧo���_~������}�0��q�����O7�����`>���~���͇�������W���>���]N=}��ڃ���`���/�j��e���ˢ:���N]�e����N]�e����=�_�͚���*3�Et��e���/�j��e���kV{�k�������Z���Q�_;u�� ��N]�5�=��SW|�jb|���ר�A�����kV{�k�������ک+�f�1�Vj�kT� ��N]�5�=H�CO�5�5��3W|�hb|���ר�A�����kV{�k�������ک+�f�1�Vj�kT� ��N]�5�=��SW|�jb|��_�ڃ_+5�5�c�k�������ک+�f�1�vꊯY�A������1�3���,���ځ���Ś��ڙ+�f�1�6ꎯI��_;u�� ��N]�5�=��SW|�jb|���ר�A�����kV{�k�������ک+�f�1�Vj�kT� ��N]�5�=��SW|�jb|��_�ڃ_+t��h��<��L����\�5�=��SW|�jb|���ר�A�����kV{�k�������ک+�f�1�Vj�kT� ��N]�5�=��SW|�jb|��_�ڃ_+5�5�c�k�������ک+�f�)�v�)�f��(�V䊯��9�����kF{�k�������ک+�f�1�Vj�kT� ��N]�5�=��SW|�jb|��_�ڃ_+5�5�c�k�������ک+�f�1�vꊯY�A�����kR� ��N]�5�=��SW|�jR|��S|�f�a|����A�����kV{�k�������ک+�f�1�Vj�kT� ��N]�5�=��SW|�jb|��_�ڃ_+5�5�c�k�������ک+�f�1�vꊯY�A������1��SW|�jR|��S|�f�a|��_3ڃ_+5�5�c�k�������ک+�f�1�vꊯY�A������1��SW|�jb|��_�ڃ_;u�� ��JM|����ک+�f�1�vꊯY�A�����kV{�k�&�FuR|��S|�f�a|��_3ڃ_;u�� ��JM|����ک+�f�1�vꊯY�A�����kV{�k�����9��SW|�jb|��_�ڃ_;u�� ��JM|����ک+�f�1�vꊯY�A�����kV{��k���͞��ڑ���ɚ��ڙ+�f�1�������=����8�]���{����J|�x��'���g_߯��_~||�ç�u���>}������U���t��߿g�u��\��Kw�Oys��/雮���7�s����"o���^Q{���ps��O%�z���/��7���W���~�^���9�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A����z4k��zc�1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚���ި��'ur]������ ��JM]�jr]������ ��F�u=�c��z���G���W��Ѭ9�땙���ި��'ur]������ ��JM]�jr]������ ��F�u=�c��z���G���Wj�zT{��z���G���7��I�\�+5u=�=�u�RSףڃ\�+5u=�=�u�Qw]O���^���ŗcX�+p��(����L]�hr]/�s]��^���Q�A�땚���^���Q�A�덺�zR� ��JM]�jr]������ ��JM]�jr]o�]ד:��Wj�zT{��z���G���Wj�zT{�z���'�簮W�둬9�땙���^���Q�A�덺�zR� ��JM]�jr]������ ��JM]�jr]o�]ד:��Wj�zT{��z���G���Wj�zT{��z��1�u�RSףڃ\�+5u=�=�u�BW]�f�a]o���D����L]�hr]������ ��JM]�jr]o�]ד:��Wj�zT{��z���G���Wj�zT{��z��1�u�RSףڃ\�+5u=�=�u�RSףڃ\��\׃:��Wj�zT{��z���G���W��Ѭ9�덹�zB� ��JM]�jr]������ ��JM]�jr]o�]ד:��Wj�zT{��z���G���Wj�zT{��z��1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚��ĺ^���G�渮Wf�zD{��z��1�u�RSףڃ\�+5u=�=�u�RSףڃ\�u����A�땚���^���Q�A�땚���ި��'ur]������ ��JM]�jr]������ ��F�u=�c�z���͚�^����A�땚���ި��'ur]������ ��JM]�jr]������ ��B=����A�땚���^���Q�A�땚���ި��'ur]������ ��JM]�jr]������ ��M]Of�a]��U�#Ys\�+3u=�=�u��D\���=Nu���u�����w��j������8|p�͢z}(�9�������/����_����_��:0|�yN����*��ǧKe�9��o����r����@��jr������ �JM��jr�g���:9�Sj�?T{��?�&�C�9�Sj�?T{��?�����1��R��ڃ�)t�h���L��hr�g���:9�Sj�?T{��?�&�C�9�Sj�?T{��?�����1��R��ڃ�)5��=��R��ڃ�u���A��������O���P�A��������Ϩ;�#uR���S����1����?k��?e&�C�9��9�ur������ �JM��jr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)5��=��A���s�)r�H���L��hr������ �F���c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)5��=��Qw�G���O���P�A��������O�+�C��0�3d�?"{��?e&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)5��=��Qw�G���O���P�A��������O���P�A���z��@���)5��=��R��ڃ�)t�h������c��?�&�C�9�Sj�?T{��?�&�C�9�3��H��)5��=��R��ڃ�)5��=��Qw�G���O���P�A��������O���P�A�����?R� �JM��jb�����Ys�)3��=��Qw�G���O���P�A��������O���P�A�����?R� �JM��jr������ �JM��jr�g���:9�Sj�?T{��?�&�C�9�Sj�?T{��?�����1��BW��f�q������ �JM��jr�g���:9�Sj�?T{��?�&�C�9�Sj�?T{��?���?P� �JM��jr������ �JM��jr�g���:9�Sj�?T{��?�&�C�9�Sj�?T{�?�&�#��0�S����9���������rŦ�?�����׀�������������8�[�9��+���矾��ۯ�������ۧ�_>�?��?����|����/���?}���?}���#E�7Owg��_���^���{~� ���g�^�ǹ�l��/�6�ڃ�l�Q��M��A~�I�y� ��g���g�P�A~�I�y� ��g����m"u�MJͳM�� ?ۤ�<ۄj�MJͳM�� ?�d��l�c��mRj�mB���&���&T{�mR�z� ͚�g��g���9~�I�y� ��g���g�P�A~�I�y� ��g����m"u�MJͳM�� ?ۤ�<ۄj�MJͳM�� ?�d��l�c��mRj�mB���&���&T{��mRj�mB���&���mu�MJͳM�� ?ۤ�<ۄj�M +]�6�Ys�l�1��M��A~�I�y� ��g���g�P�A~�I�y� ��g����m"u�MJͳM�� ?ۤ�<ۄj�MJͳM�� ?�d��l�c��mRj�mB���&���&T{��mRj�mB���&��g�H��l�R�l�=��6)t=ۄf��M�̳M�� ?�d��l�c��mRj�mB���&���&T{��mRj�mB���&��g�H��l�R�l�=��6)5�6�ڃ�l�R�l�=��6u?�D��g���g�P�A~�I�y� ��g���g�P�A~�ɨ��&R� >ۤ��l�5��6)3�6!ڃ�l�R�l�=��6u?�D��g���g�P�A~�I�y� ��g���g�P�A~�I��g�@���l�R�l�=��6)5�6�ڃ�l�R�l�=��6u?�D��g���g�P�A~�I�y� ��g���g�P�A|�ɠy��̞�g���mB����&e��&D{��m�goijM�=N�6������6]���?<���]9l~x:���7z�k���o?۴>���٦��ɦ������������7��I~�~������/�����? ��>�������������=}�͞�@��<�<}� +ڃԇ��wV=}��ڃ�ǛO�����+j��>=?�w���YV��������>{E�������?�V��W����c@���^Q{��[��?�{�注�����p�/R��>{E�������7�z���/�������^Q{�m�p�1��^�볬�����/ҟ�z���/�ǿJ���W���>�<�_���b�������������2:/�ǟ��UO�������3x+��g��=xA=���z���/�e�%ƨ��3��A~�R��T{�_;�Լv����(5��A���3Fݯ�!u�kg���Πڃ����3�� �vF�y��=ȯ�1�~��c�_;�Լv����(t�v͚���(3��A���3Fݯ�!u�kg���Πڃ����3�� �vF�y��=ȯ�1�~��c�_;�Լv����(5��A���3J�kgP�A~�Q�kgH�����3�� �vF�y��=ȯ�Qj^;�j�kg��_;C����(���_��kg�^;�b��kg���� ڃ����_;����(5��A���3J�kgP�A~�R��T{�_;c���R� �vF�y��=ȯ�Qj^;�j�kg���Πڃ�����ΐ:��3J�kgP�A~�R��T{�_;�Լv����4��!���3�\��A����3��iD{�O3(5�P�A>�`�}���1ȧ����� �fPjN3�ڃ|�A�9̀j�i�����A>͠Ԝf@��4�Rs����J�iT{�O3u�f u�i��4�=ȧ����� �fP�:̀f��iC�4�=ǧ����� �fPjN3�ڃ|�A�9̀j�i�����A>͠Ԝf@��4�Rs����J�iT{�O3u�f u�i��4�=ȧ����� �fPjN3�ڃ|�A�����A>͠Ԝf@��4�Rs���� +]�Ь9>�`�}���1ȧ����� �fPjN3�ڃ|�A�9̀j�i�����A>͠Ԝf@��4�Rs����J�iT{�O3u�f u�i��4�=ȧ����� �fPjN3�ڃ|����4�c�O3(5�P�A<͠�u�͚����iD{�O3u�f u�i��4�=ȧ����� �fPjN3�ڃ|����4�c�O3(5�P�A>͠Ԝf@��4�Rs����FݧH�|�A�9̀j�i��4�=ȧ����� �f0�>�@��� +]�Ь9>̜͠f@��4�Rs����FݧH�|�A�9̀j�i��4�=ȧ����� �f��4�s�O3(5�P�A>͠Ԝf@��4�Rs����FݧH�|�A�9̀j�i��4�=ȧ����� �f0hN3��sx�A��4�5ǧ����� �f�k�4~��i�_����i�������{�;�p�������g��no����g��a��u�����]29�������/�����������?~�zz�̫������?r8����Å_�sf�vf��?����������H�+3B��83Rf2#D{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�ugF��AΌ������H�ɌP�AΌ������Ȩ;3"urf��dF�� gFJMf�jrf��dF�� gFFݙ�c�2#e�2#_�af����Xs�)3��=ș�Pϙ�s�3#�&3B�93Rj2#T{�3#�&3B�932�ΌH��)5��=ș�R��ڃ�)5��=ș�QwfD���H�ɌP�AΌ������H�ɌP�Ǎ�̞̈��H�+3B��83Rf2#D{�3#�&3B�932�ΌH��)5��=ș�R��ڃ�)5��=ș�QwfD���H�ɌP�AΌ������H�ɌP�AΌ��3#R� gFJMf�jrf��dF�� fF +]��5���!��s�)3��=ș�R��ڃ�)5��=ș�QwfD���H�ɌP�AΌ������H�ɌP�AΌ��3#R� gFJMf�jrf��dF�� gFJMf�jrf$�sf���H�ɌP�AΌ������H�+3B��832�Ό��)5��=ș�R��ڃ�)5��=ș�QwfD���H�ɌP�AΌ������H�ɌP�AΌ��3#R� gFJMf�jrf��dF�� gFJMf�jrfdԝ�:93Rj2#T{3#���͚��H�Ɍ�AΌ��3#R� gFJMf�jrf��dF�� gFJMf�jrfdԝ�:93Rj2#T{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�ugF��Ǎ�2#4k�3#e&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ� ���:93Rj2#T{�3#�&3B�93Rj2#T{�3#��̈�1ș�R��ڃ�)5��=ș�R��ڃ�4��=���"Wf�d�qf��dF�� gFTň���)3z�5 3��=�`o����/�B�o�]�Iht8���/������/�<~����31�����������h�W�{4_|����|�E�=��� �GS�y�&�=�����=���A~��R�MT{�ߣ�ԼG���h*5��D��=�F���$u�{4���h�ڃ�M��=��� �GS��=�h��GӘ�=���A~��R�MT{�ߣ�ԼG���h*5��D��=�F���$u�{4���h�ڃ�M��=��� �GS�y�&�=���4�~�&�c�ߣ�ԼG���h*5��D��=�J�{4Q�A~��Qw�N���]� �Q�A��w4k�we&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]� �Q�Aܕ�����]� �Q�A܍�wR� �JM��jr���� �JM��jr�n���:)pW�)pG��� +\�;�5ǁ�2�#ڃ����:9pWjwT{�w�&pG�9pWjwT{�w�����1ȁ�R��ڃ�+5�;�=ȁ�R��ڃ�uAܕ�����]� �Q�Aܕ�����ݠ ���9��w$k�we&pG�9pWjwT{�w�����1ȁ�R��ڃ�+5�;�=ȁ�R��ڃ�uAܕ�����]� �Q�Aܕ�����ݨ;p'ur���� �JM��jb����Ys�2�;�=ǁ�2�#ڃ�+5�;�=ȁ�R��ڃ�uAܕ�����]� �Q�Aܕ�����ݨ;p'ur���� �JM��jr���� �B=��Aܕ�����]� �Q�A��w4k�wc����1ȁ�R��ڃ�+5�;�=ȁ�R��ڃ�uAܕ�����]� �Q�Aܕ�����ݨ;p'ur���� �JM��jr���� �F݁;�c�w�&pG�1pW� +�Ѭ9ܕ�����ݨ;p'ur���� �JM��jr���� �F݁;�c�w�&pG�9pWjwT{�w�&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Qw�N���]�+pG��8pWfwD{�w�&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=ȁ�Pρ;�s�w�&pG�9pWjwT{�w�&pG�9p7��I��+5�;�=ȁ�R��ڃ�+5�;�=���A���s�+r�H���L��hr�~9�V�;~�S���k@�~�{���p%p����}}&��� +����_>}�ӧ/?�xx���7h�����^w���|쬽n�߽���̝Y·ݙ�o{9�|�E �D�9�Tj2KT{�3K��̒�1ș�R�Y�ڃ�Y*5�%�=ș�R�Y�ڃ�Yug���A�,������R��,Q�A�,������Ҩ;�$urf��d��� f� +]�%�5Ǚ�2�Y"ڃ�Yug���A�,������R��,Q�A�,������Ҩ;�$urf��d��� g�JMf�jrf��d��� g�Fݙ%�c�3K�&�D�9�Tj2KT{�3K�&�D�9�4��,I��Y*�Y��r3K��Ś��R��,�A�,�z�,A���Y*5�%�=ș�R�Y�ڃ�Y*5�%�=ș�QwfI���R��,Q�A�,������R��,Q�A�,��3KR� g�JMf�jrf��d��� g�JMf�jbfi�d�d�f��\�%�5Ǚ�2�Y"ڃ�Y*5�%�=ș�QwfI���R��,Q�A�,������R��,Q�A�,��3KR� g�JMf�jrf��d��� g�JMf�jrfiԝY�:9�Tj2KT{�3K�&�D�1�T��,Ѭ9�, �̒Ȟ��R��,�A�,������R��,Q�A�,��3KR� g�JMf�jrf��d��� g�JMf�jrfiԝY�:9�Tj2KT{�3K�&�D�9�Tj2KT{�3K��3KP� g�JMf�jrf��d��� f� +]�%�5Ǚ�1wfI���R��,Q�A�,������R��,Q�A�,��3KR� g�JMf�jrf��d��� g�JMf�jrfiԝY�:9�Tj2KT{�3K�&�D�9�Tj2KT{�3K��̒�1ș�R�Y�ڃ�Y*te�h�g��Lf�hrfiԝY�:9�Tj2KT{�3K�&�D�9�Tj2KT{�3K��̒�1ș�R�Y�ڃ�Y*5�%�=ș�R�Y�ڃ�Yug���A�,������R��,Q�A�,������Ҩ;�$ubf�ЕY�Ys�Y*3�%�=ș�R�Y�ڃ�Yug���A�,������R��,Q�A�,������R����9ș�R�Y�ڃ�Y*5�%�=ș�R�Y�ڃ�Yug���A�,������R��,Q�A�,������Ҡ�,��9�,�2K$k�3Ke&�D�9��� ����)�|�53����o{���x�x��2�Ify�2�����_��ϟ�|��^*��_����O�?~�����J��M�����o{��o|��q'�=�q�SW��jb���w�ڃw*5q'�c�N�����ĸө+�d�1�t�;Y�A�;����1�q�SW��jb���w�ڃw:uŝ�� ƝJM܉�ĸө+�d�)�t�)�d��0�t�;�A�;����1�q�SW��jb���w�ڃw:uŝ�� ƝJM܉�ĸө+�d�1�t�;Y�A�;���NV{�N�&�Dub���w�ڃw:uŝ�� ƝN]q'�=�q�Rw�:!�t����ŗcw:�w�Xsw:sŝ�� ƝF�q'�s�N�����ĸө+�d�1�t�;Y�A�;����1�q�SW��jb���w�ڃw:uŝ�� ƝJM܉�ĸө+�d�1�t�;Y�A�;���NV{��N���͞��ӑ���ɚøә+�d�1�t�;Y�A�;����1�q�SW��jb���w�ڃw:uŝ�� ƝJM܉�ĸө+�d�1�t�;Y�A�;���NV{�N�&�Dub���w�ڃw:uŝ�� ŝ=ŝl�ŝ�\q'�=�q�3W��hb���w�ڃw:uŝ�� ƝJM܉�ĸө+�d�1�t�;Y�A�;���NV{�N�&�Dub���w�ڃw:uŝ�� ƝN]q'�=�q�Qw�I�ĸө+�d�1�t�;Y�A�;z�;٬9�;����1�q�SW��jb���w�ڃw:uŝ�� ƝJM܉�ĸө+�d�1�t�;Y�A�;���NV{�N�&�Dub���w�ڃw:uŝ�� ƝN]q'�=�q�Rw�:1�t�;Y�A�;z�;٬9�;���NF{�N�&�Dub���w�ڃw:uŝ�� ƝN]q'�=�q�Rw�:1�t�;Y�A�;���NV{�N�����ĸS��;Q�w:uŝ�� ƝN]q'�=�q�SW��jbܩ�ĝ��A�;z�;٬9�;���NF{�N�����ĸS��;Q�w:uŝ�� ƝN]q'�=�q�SW��jb�i�w�:1�t�;Y�A�;���NV{�N�����ĸS��;Q�w:uŝ�� ƝN]q'�=�q�SW��jRܩ�w��sw:�w2Ysw:sŝ�� ƝP'������ϼ���N��;4�?�z�}�s}&q��M7��;><��=�Y�y�u��t�ʷ���ssw훝>�����n�����x�<}� +ڃԇ��wV=}��ڃ�ǛO�R=}��ڃo�O�����c4��,�c��zw��UO����������.+���+j^P�?��DW��W�|���w�ýS�YT����c�{���W���o�����W�����>{E���������ѩ볬�����/���z���/�ǿ^���W���>�<�_���b�܅��40�>�@��# J͑T{��$(5GP�A>���I@��H�Q��R� IPj�$�ڃ|$A�9��j���H�=�G���$�:�H�Rs$��# J͑T{��$(5GP�A>�`�}$��1�G��# �� IP�:��f��e�H�=�G���$�:�H�Rs$��# J͑T{��$(5GP�A>�`�}$��1�G��# �� IPj�$�ڃ|$A�9��j���# ��A>���I@��H�Rs$��# J͑T{��$uI uґe��$��r�$(pI@���H�2s$��# B=I�u���H�=�G��# �� IPj�$�ڃ|$���H�c��$(5GP�A>���I@��H�Rs$��# F�GH�|$A�9��j���H�=�G��# �� I0h�$��sx$A��H�5�G��# �� IPj�$�ڃ|$���H�c��$(5GP�A>���I@��H�Rs$��# F�GH�|$A�9��j���H�=�G��# �� I0�>�@��# J͑T{��$(5GP�A<���u$͚�# �̑"{��$(3G�A>���I@��H�Rs$��# F�GH�|$A�9��j���H�=�G��# �� I0�>�@��# J͑T{��$(5GP�A>���I@��H�P�G@��|$A�9��j���H�=�G��$�Ys|$���H�c��$(5GP�A>���I@��H�Rs$��# F�GH�|$A�9��j���H�=�G��# �� I0�>�@��# J͑T{��$(5GP�A>���I@��H�Q��R� IPj�$�ڃx$A��H�5�G��# �� I0�>�@��# J͑T{��$(5GP�A>���I@��H�Q��R� IPj�$�ڃ|$A�9��j���H�=�G���$�:�H�Rs$��# J͑T{��$(5GP�A>�`�}$��1�G��$�Ys|$A�9��h���H�=�G���$�:�H�Rs$��# J͑T{��$(5GP�A>� ��P� IPj�$�ڃ|$A�9��j���H�=�G���$�:�H�Rs$��# J͑T{��$(5GP�A<�`�I ���H�"ב$k��$(3G�A>�p9�WG�{��$����$\������# �39��~I��������O������ϟ~�}��|�����ps���g��鄻�_\8��p��I�_|�� ��/ 8�s�p�&G�9WjpT{�p�&G�97�N�I���+5 8�=� �R���ڃ��+t%�h�'��� 8�c�p�&G�9WjpT{�p�&G�97�N�I���+5 8�=� �R���ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AN���pR� '�JM�jb�Е��Ys��+3 8�=� �QwN��\�I�Q�AN�����\�I�Q�AN���pR� '�JM�jr��$�� '�JM�jrnԝ��:9WjpT{�p�&G�9WjpT{�p����1H �2O 8�/�0W�J�Q�9N�����\���9� �R���ڃ��+5 8�=� �R���ڃ��u'ऎAN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� &�MNf�a�ȕ�#Ys��+3 8�=� �R���ڃ��u'ऎAN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�p�&G�9WjpT{p��͚�ܐI���9N�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�p�&G�9WjpT{�p�&G�9�9ur��$�� '�JM�jb�Е��Ys��s'���AN�����\�I�Q�AN�����ܨ;'ur��$�� '�JM�jr��$�� '�F� 8�c�p�&G�9WjpT{�p�&G�97�N�I���+5 8�=� �BW�f�q��$��� '�F� 8�c�p�&G�9WjpT{�p�&G�97�N�I���+5 8�=� �R���ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AN���pR� &� +] 8�5� �2��#ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AN��zN�A����+5 8�=� �R���ڃ��+5 8�=� �QwN��\�I�Q�AN�����\�I�Q�AL� ��̞�\�+G��8WfpD{����J��{��_���c$��+ ���㟢��|}& ��J���?�x������~��o?����O�}���[�������������_�s�_w�x/��������O���P�A��{<R� �xJM��jr����x�� �xJM��jr�g���:��Sjz<T{{<��͚�O����A��{<R� �xJM��jr����x�� �xJM��jr�g���:��Sjz<T{�{<���C���Sjz<T{�{<����1�=�R��ڃ��)5=�=�=�R��ڃ��u�x��A��y��P|9�=�W��b�q����x�� �xB=�x��A����O���P�A����Ϩ��#ur����x�� �xJM��jr����x�� �xF�=�c�{<���C���Sjz<T{�{<���C���3hz<2{{<E�ɚ�O����A����Ϩ��#ur����x�� �xJM��jr����x�� �xF�=�c�{<���C���Sjz<T{�{<���C���3���H���)5=�=�=�R��ڃ��)t�xh��x�L�Gd�q����x�� �xJM��jr����x�� �xF�=�c�{<���C���Sjz<T{�{<���C���3���H���)5=�=�=�R��ڃ��)5=�=�=�P�=�s�{<���C���Sjz<T{{<��͚�Ϙ��#tr����x�� �xJM��jr����x�� �xF�=�c�{<���C���Sjz<T{�{<���C���3���H���)5=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A���z<4k�{<e��C���3���H���)5=�=�=�R��ڃ��)5=�=�=�Qw�G��O���P�A����O���P�A��{<R� �xJM��jr����x�� �xJM��jr�g���:��S���Ь9����O���P�A��{<R� �xJM��jr����x�� �xJM��jr�'�s���O���P�A����O���P�A��{<R� �xJM��jr����x�� �xJM��jb�g��xd��x�\=�5�=�2��!ڃ��]��T���������]�c�w��p����g��}X=�?}���_��r�_�}����O�?��ϯk���������o���g����z{뷟�Ǿ~����N������������Oo=9q����������p�p~����)^���0��/S�ڃ�0�Q����A~�B�y���)���)P�A|�B��a +4k�0d� ���a +e�a +D{��Pj�@��a ��a -T{�P�z�͚�)���)�A~�¨�a -R� ?L��<L�j��J���� ?L��<L�j��F�S�:�a +T{��0�~���1�S(5S�ڃ�0�R�0�=�S(5S�ڃ�0�Q����A~�B�y���)���)P�A~�B�y���)�z~��9�S(5S�ڃ�0�R�0�=�S(t=L�f�����S:�a ��a T{��Pj�@��a ��a -T{��0�~���1�S(5S�ڃ�0�R�0�=�S(5S�ڃ�0�Q����A|�B��a -4k��Pf�@��a +T{��0�~���1�S(5S�ڃ�0�R�0�=�S(5S�ڃ�0�Q����A~�B�y���)���)P�A~�B�y���)��� u��J���� >L���0�5�S(3S ڃ�0�Q����A~�B�y���)���)P�A~�B�y���)��� u��J���� ?L��<L�j��J���� ?La��0�c��Pj�@��a ��a -T{��0�~���1�S(5S�ڃ�0�R�0�=�S(5S�ڃ�0�P�S�:�a +T{��Pj�@��a +��)H��0�B��h�?L��<L�h��J���� ?La��0�c��Pj�@��a ��a T{��Pj�@��a +����u��J���� ?L��<L�j��J���� ?La��0�c��Pj�@��a ��a -T{��0�~���1�S(5S�ڃ�0�R�0�=�S(5S�ڃ�0�A�0�=�S(r=L�d�������� ?LA�,_<L����0���8<]}��������N���q���:��<�9�px����#�G)�׃������>���_߽����?��/�}���/�����'��~��鷗�~�o�O�W.߽�z�87����������_n�ڃ|sب��0�c�o+57�Q�A�9���F���Rss���F�7�I�|sX��9�j��a����h��Vfn#ڃ|sب��0�c�o+57�Q�A�9���F���Rss���F�7�I�|sX��9�j��a���0�=�7����è� �6�9L���J��aT{�o+57�Q�A�9���F���Q��aR� �V���0��cxsX���0�5�7����È� ����0�s�o+57�Q�A�9���F���Rss���F�7�I�|sX��9�j��a���0�=�7����è� �6�9L���J��aT{�o+57�Q�A�9���F���Ass�̞ÛÊ\7���9�9���F���Rss���F�7�I�|sX��9�j��a���0�=�7����è� �6�9L���J��aT{�o+5��=ș�R�ɡڃ��ugr��A�䔚L��LN���P�A���294k39C&�#��8�Sf29D{�39�&�C�9�Sj29T{�39��L��1ș�R�ɡڃ��)5��=ș�R�ɡڃ��ugr��A�䔚L��LN���P�A�䔚L��LN��L�9ș�R�ɡڃ��)5��=���BW&�f�q&g̝�:9�Sj29T{�39�&�C�9�Sj29T{�39��L��1ș�R�ɡڃ��)5��=ș�R�ɡڃ��ugr��A�䔚L��LN���P�A�䔚L��LΨ;�#ur&��dr�� fr -]��5Ǚ�2��!ڃ��ugr��A�䔚L��LN���P�A�䔚L��LΨ;�#ur&��dr�� grJM&�jr&��dr�� grFݙ�c�39�&�C�9�Sj29T{�39�&�C�9�3���H���)terh�gr�L&�hr&��dr�� grFݙ�c�39�&�C�9�Sj29T{�39�&�C�9��9�ur&��dr�� grJM&�jr&��dr�� grFݙ�c�39�&�C�9�Sj29T{�39�&�C�1�3h292{39E�Lɚ�LN����A�䮗]*���q��.�dr��9��7�O|sx}&��a�r����_���������������o���/۸ۻ���w=��[���}�����>�������~�\������wܗ_����7��R�nwR]�eu^Q�nn�z��j^QW���4��� 7�JM�jr�h��<�:�yTj�GT{��G��yD��yTj�GT{��G����1�ͣR�<�ڃ�<*t5�h�7��L�hr�h��<�:�yTj�GT{��G��yD��yTj�GT{��G����1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$uR��S���6� +T{��Pj�@��a +��a +2{�P�z�ɚ�)���)�A~���Y�x����a�_��t�a���������wL��V�훟9�������}��}����#�G)�׃����_>���_߽����?��/�}���/�����'�����~����[��7ϧ�������_�t��������������_n�ڃ|sب��0�c�o+57�Q�A�9���F���Rss���F�7�I�|sX��9�j��a����h��Vfn#ڃ|sب��0�c�o+57�Q�A�9���F���Rss���F�7�I�|sX��9�j��a���0�=�7����è� �6�9L���J��aT{�o+57�Q�A�9���F���Q��aR� �V���0�/�����ak�o+37��A�9,���aP� �Vjn�ڃ|sX��9�j��a���0�=�7���o�:��Rss���J��aT{�o+57�Q�A�9l�}s��1�7����è� �Vjn�ڃ|sX��9�j��a���0�=�7��n#Ys|sX��9�h��a���0�=�7���o�:��Rss���J��aT{�o+57�Q�A�9l�}s��1�7����è� �Vj29T{�39�&�C�9�3���H���)5��=ș�R�ɡڃ��)terh�fr�L&Gd�q&��dr�� grJM&�jr&��dr�� grFݙ�c�39�&�C�9�Sj29T{�39�&�C�9�3���H���)5��=ș�R�ɡڃ��)5��=ș�Pϙ�s�39�&�C�9�Sj29T{39��L͚�LΘ;�#tr&��dr�� grJM&�jr&��dr�� grFݙ�c�39�&�C�9�Sj29T{�39�&�C�9�3���H���)5��=ș�R�ɡڃ��)5��=ș�Qw&G��LN���P�A���294k�39e&�C�9�3���H���)5��=ș�R�ɡڃ��)5��=ș�Qw&G��LN���P�A�䔚L��LN���P�A�䌺39R� grJM&�jr&��dr�� grJM&�jr&gԝɑ:1�S���Ь9�䔙L��LN���P�A�䌺39R� grJM&�jr&��dr�� grJM&�jr&'�s&��LN���P�A�䔚L��LN���P�A�䌺39R� grJM&�jr&��dr�� grJM&�jb&g�drd�fr�\��5Ǚ�2��!ڃ��].�T&���ɽ���]�����G�>����LB��J���������뿭�������>�ӯ?��?^�q�w7���z緺���p{���}�9\�����/�����/���︯����W��P�nwR]�eu^P�nn�z���/�+QTj�GT{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣQw�H���Q�iQ�Al��G4k��Ge�yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣQw�H���Q�iQ�An������Q�iQ�An���GR� 7�JM�jr��4��� 7�JM�jr�h��<�:�yT�yD��6� \�#�5�ͣ2�<"ڃ�< -��<�:�yTj�GT{��G��yD��yTj�GT{��G����1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѡi��9l��G$k��Ge�yD��yTj�GT{��G����1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$ur��4��� 7�JM�jb���<�Ys�<2�#�=�ͣ2�<"ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$ur��4��� 7�JM�jr��4��� 7�B=7���An������Q�iQ�Al��G4k��Gc���1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$ur��4��� 7�JM�jr��4��� 7�F��#�c��G��yD��yT�jѬ9n������Ѩ�y$ur��4��� 7�JM�jr��4��� 7�F��#�c��G��yD��yTj�GT{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣQw�H���Q��yD��yTf�GD{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣP��#�s��G��yD��yTj�GT{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣA�<��s�<*r5�H�7��L�hr�x��S�#~�S�x�5�y��=��p��������_A�7�7��Y������>ǿz��>O�����n}���|����:����k�endstream +��<�:�yTj�GT{��G��yD��yTj�GT{��G����1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѡi��9l��G$k��Ge�yD��yTj�GT{��G����1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$ur��4��� 7�JM�jb���<�Ys�<2�#�=�ͣ2�<"ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$ur��4��� 7�JM�jr��4��� 7�B=7���An������Q�iQ�Al��G4k��Gc���1�ͣR�<�ڃ�<*5�#�=�ͣR�<�ڃ�<u7���An������Q�iQ�An������Ѩ�y$ur��4��� 7�JM�jr��4��� 7�F��#�c��G��yD��yT�jѬ9n������Ѩ�y$ur��4��� 7�JM�jr��4��� 7�F��#�c��G��yD��yTj�GT{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣQw�H���Q��yD��yTf�GD{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣP��#�s��G��yD��yTj�GT{��G��yD��y4�nI��<*5�#�=�ͣR�<�ڃ�<*5�#�=�ͣA�<��s�<*r5�H�7��L�hr�x��S�#~�S���k@�x�{������]�j��o97��~����������|��<�z\���������_^'���?m=C���}��:����,�g>��{�\><��=�PO�����uU�JM։jr֩�d��� g�F�Y'�c��N�&�D�9�Tj�NT{��N�&�D�9�4��:I��u*5Y'�=�Y�R�u�ڃ�u*5Y'�=�Y�Qw�I��S��:Q�A�:��N4k��Ne&�D�9�4��:I��u*5Y'�=�Y�R�u�ڃ�u*5Y'�=�Y�Qw�I��S��:Q�A�:�����S��:Q�A�:���NR� g�JM։jr֩�d��� g�JM։jr�iԝu�:)�T�)�D��f� +\Y'�5�Y�2�u"ڃ�u +��u�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�Y�R�u�ڃ�u*5Y'�=�Y�R�u�ڃ�uug���A�:�����S��:Q�A�:����ĬӠ�:��9�:��N$k��Ne&�D�9�Tj�NT{��N��1�Y�R�u�ڃ�u*5Y'�=�Y�R�u�ڃ�uug���A�:�����S��:Q�A�:�����Ө;�$ur֩�d��� g�JM։jb֩Еu�Ys�u2Y'�=�Y�2�u"ڃ�u*5Y'�=�Y�R�u�ڃ�uug���A�:�����S��:Q�A�:�����Ө;�$ur֩�d��� g�JM։jr֩�d��� g�B=g���A�:�����S��:Q�A�:��N4k��Nc�1�Y�R�u�ڃ�u*5Y'�=�Y�R�u�ڃ�uug���A�:�����S��:Q�A�:�����Ө;�$ur֩�d��� g�JM։jr֩�d��� g�F�Y'�c��N�&�D�1�T��:Ѭ9�:�����Ө;�$ur֩�d��� g�JM։jr֩�d��� g�F�Y'�c��N�&�D�9�Tj�NT{��N�&�D�9�4��:I��u*5Y'�=�Y�R�u�ڃ�u*5Y'�=�Y�Qw�I�ĬS�+�D��8�Tf�ND{��N�&�D�9�4��:I��u*5Y'�=�Y�R�u�ڃ�u*5Y'�=�Y�P�Y'�s��N�&�D�9�Tj�NT{��N�&�D�9�4��:I��u*5Y'�=�Y�R�u�ڃ�u*5Y'�=�Y�A�u��s�u*re�H�g��L։hr�Iq��:�{���_���������?�?j����v���p������<>��s�������{��߭�<�ϟ?_�B�X�?U[�:endstream endobj 1134 0 obj << /Type /Page @@ -2222,324 +2231,324 @@ endobj 1183 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 385.694 256.607 394.605] +/Rect [143.462 386.067 255.093 394.605] /Subtype /Link -/A << /S /GoTo /D (install-modules-mime-parser) >> +/A << /S /GoTo /D (install-modules-patchreader) >> >> endobj 1184 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [533.001 385.694 537.983 394.605] +/Rect [533.001 386.067 537.983 394.605] /Subtype /Link -/A << /S /GoTo /D (install-modules-mime-parser) >> +/A << /S /GoTo /D (install-modules-patchreader) >> >> endobj 1185 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 373.116 255.093 381.654] +/Rect [119.552 372.742 256.338 381.654] /Subtype /Link -/A << /S /GoTo /D (install-modules-patchreader) >> +/A << /S /GoTo /D (install-MTA) >> >> endobj 1186 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [533.001 373.116 537.983 381.654] +/Rect [533.001 372.742 537.983 381.654] /Subtype /Link -/A << /S /GoTo /D (install-modules-patchreader) >> +/A << /S /GoTo /D (install-MTA) >> >> endobj 1187 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 359.791 256.338 368.702] +/Rect [95.641 359.791 168.428 368.702] /Subtype /Link -/A << /S /GoTo /D (install-MTA) >> +/A << /S /GoTo /D (configuration) >> >> endobj 1188 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [533.001 359.791 537.983 368.702] /Subtype /Link -/A << /S /GoTo /D (install-MTA) >> +/A << /S /GoTo /D (configuration) >> >> endobj 1189 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 346.84 168.428 355.751] +/Rect [119.552 346.84 188.732 355.751] /Subtype /Link -/A << /S /GoTo /D (configuration) >> +/A << /S /GoTo /D (localconfig) >> >> endobj 1190 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [533.001 346.84 537.983 355.751] /Subtype /Link -/A << /S /GoTo /D (configuration) >> +/A << /S /GoTo /D (localconfig) >> >> endobj 1191 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 333.888 188.732 342.8] +/Rect [119.552 335.945 209.314 342.8] /Subtype /Link -/A << /S /GoTo /D (localconfig) >> +/A << /S /GoTo /D (database-engine) >> >> endobj 1192 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [533.001 333.888 537.983 342.8] +/Rect [528.02 335.945 537.983 342.8] /Subtype /Link -/A << /S /GoTo /D (localconfig) >> +/A << /S /GoTo /D (database-engine) >> >> endobj 1193 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 322.994 209.314 329.848] +/Rect [143.462 320.937 208.498 329.848] /Subtype /Link -/A << /S /GoTo /D (database-engine) >> +/A << /S /GoTo /D (mysql) >> >> endobj 1194 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 322.994 537.983 329.848] +/Rect [528.02 320.937 537.983 329.848] /Subtype /Link -/A << /S /GoTo /D (database-engine) >> +/A << /S /GoTo /D (mysql) >> >> endobj 1195 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 307.985 208.498 316.897] +/Rect [143.462 307.985 224.547 316.897] /Subtype /Link -/A << /S /GoTo /D (mysql) >> +/A << /S /GoTo /D (postgresql) >> >> endobj 1196 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 307.985 537.983 316.897] /Subtype /Link -/A << /S /GoTo /D (mysql) >> +/A << /S /GoTo /D (postgresql) >> >> endobj 1197 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 295.034 224.547 303.945] +/Rect [119.552 295.034 198.963 303.945] /Subtype /Link -/A << /S /GoTo /D (postgresql) >> +/A << /S /GoTo /D (533) >> >> endobj 1198 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 295.034 537.983 303.945] /Subtype /Link -/A << /S /GoTo /D (postgresql) >> +/A << /S /GoTo /D (533) >> >> endobj 1199 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 282.082 198.963 290.994] +/Rect [119.552 284.14 189.15 290.994] /Subtype /Link -/A << /S /GoTo /D (534) >> +/A << /S /GoTo /D (http) >> >> endobj 1200 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 282.082 537.983 290.994] +/Rect [528.02 284.14 537.983 290.994] /Subtype /Link -/A << /S /GoTo /D (534) >> +/A << /S /GoTo /D (http) >> >> endobj 1201 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 271.188 189.15 278.042] +/Rect [143.462 269.131 229.24 278.042] /Subtype /Link -/A << /S /GoTo /D (http) >> +/A << /S /GoTo /D (http-apache) >> >> endobj 1202 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 271.188 537.983 278.042] +/Rect [528.02 269.131 537.983 278.042] /Subtype /Link -/A << /S /GoTo /D (http) >> +/A << /S /GoTo /D (http-apache) >> >> endobj 1203 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 256.18 229.24 265.091] +/Rect [143.462 258.237 334.932 265.091] /Subtype /Link -/A << /S /GoTo /D (http-apache) >> +/A << /S /GoTo /D (http-iis) >> >> endobj 1204 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 256.18 537.983 265.091] +/Rect [528.02 258.237 537.983 265.091] /Subtype /Link -/A << /S /GoTo /D (http-apache) >> +/A << /S /GoTo /D (http-iis) >> >> endobj 1205 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 245.285 334.932 252.14] +/Rect [119.552 243.228 178.221 252.14] /Subtype /Link -/A << /S /GoTo /D (http-iis) >> +/A << /S /GoTo /D (install-config-bugzilla) >> >> endobj 1206 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 245.285 537.983 252.14] +/Rect [528.02 243.228 537.983 252.14] /Subtype /Link -/A << /S /GoTo /D (http-iis) >> +/A << /S /GoTo /D (install-config-bugzilla) >> >> endobj 1207 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 230.277 178.221 239.188] +/Rect [95.641 230.277 250.898 239.188] /Subtype /Link -/A << /S /GoTo /D (install-config-bugzilla) >> +/A << /S /GoTo /D (extraconfig) >> >> endobj 1208 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 230.277 537.983 239.188] /Subtype /Link -/A << /S /GoTo /D (install-config-bugzilla) >> +/A << /S /GoTo /D (extraconfig) >> >> endobj 1209 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 217.325 250.898 226.237] +/Rect [119.552 217.325 192.328 226.237] /Subtype /Link -/A << /S /GoTo /D (extraconfig) >> +/A << /S /GoTo /D (632) >> >> endobj 1210 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 217.325 537.983 226.237] /Subtype /Link -/A << /S /GoTo /D (extraconfig) >> +/A << /S /GoTo /D (632) >> >> endobj 1211 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 204.374 192.328 213.285] +/Rect [119.552 204.374 222.605 213.285] /Subtype /Link -/A << /S /GoTo /D (633) >> +/A << /S /GoTo /D (651) >> >> endobj 1212 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 204.374 537.983 213.285] /Subtype /Link -/A << /S /GoTo /D (633) >> +/A << /S /GoTo /D (651) >> >> endobj 1213 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 191.422 222.605 200.334] +/Rect [119.552 191.422 219.726 200.334] /Subtype /Link -/A << /S /GoTo /D (652) >> +/A << /S /GoTo /D (installation-whining-cron) >> >> endobj 1214 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 191.422 537.983 200.334] /Subtype /Link -/A << /S /GoTo /D (652) >> +/A << /S /GoTo /D (installation-whining-cron) >> >> endobj 1215 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 178.471 219.726 187.382] +/Rect [119.552 178.471 179.327 187.382] /Subtype /Link -/A << /S /GoTo /D (installation-whining-cron) >> +/A << /S /GoTo /D (installation-whining) >> >> endobj 1216 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 178.471 537.983 187.382] /Subtype /Link -/A << /S /GoTo /D (installation-whining-cron) >> +/A << /S /GoTo /D (installation-whining) >> >> endobj 1217 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 165.52 179.327 174.431] +/Rect [119.552 167.577 197.409 174.431] /Subtype /Link -/A << /S /GoTo /D (installation-whining) >> +/A << /S /GoTo /D (patch-viewer) >> >> endobj 1218 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 165.52 537.983 174.431] +/Rect [528.02 167.577 537.983 174.431] /Subtype /Link -/A << /S /GoTo /D (installation-whining) >> +/A << /S /GoTo /D (patch-viewer) >> >> endobj 1219 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 154.625 197.409 161.48] +/Rect [119.552 154.625 231.78 161.48] /Subtype /Link -/A << /S /GoTo /D (patch-viewer) >> +/A << /S /GoTo /D (bzldap) >> >> endobj 1220 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 154.625 537.983 161.48] /Subtype /Link -/A << /S /GoTo /D (patch-viewer) >> +/A << /S /GoTo /D (bzldap) >> >> endobj 1221 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 141.674 231.78 148.528] +/Rect [119.552 139.617 355.445 148.528] /Subtype /Link -/A << /S /GoTo /D (bzldap) >> +/A << /S /GoTo /D (apache-addtype) >> >> endobj 1222 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 141.674 537.983 148.528] +/Rect [528.02 139.617 537.983 148.528] /Subtype /Link -/A << /S /GoTo /D (bzldap) >> +/A << /S /GoTo /D (apache-addtype) >> >> endobj 1223 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 126.665 355.445 135.577] +/Rect [95.641 126.665 234.28 135.577] /Subtype /Link -/A << /S /GoTo /D (apache-addtype) >> +/A << /S /GoTo /D (os-specific) >> >> endobj 1224 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 126.665 537.983 135.577] /Subtype /Link -/A << /S /GoTo /D (apache-addtype) >> +/A << /S /GoTo /D (os-specific) >> >> endobj 1225 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 113.714 234.28 122.625] +/Rect [119.552 115.651 223.78 122.625] /Subtype /Link -/A << /S /GoTo /D (os-specific) >> +/A << /S /GoTo /D (os-win32) >> >> endobj 1226 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 113.714 537.983 122.625] +/Rect [528.02 115.651 537.983 122.625] /Subtype /Link -/A << /S /GoTo /D (os-specific) >> +/A << /S /GoTo /D (os-win32) >> >> endobj 1227 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 102.7 223.78 109.674] +/Rect [143.462 102.7 221.101 109.674] /Subtype /Link -/A << /S /GoTo /D (os-win32) >> +/A << /S /GoTo /D (win32-perl) >> >> endobj 1228 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 102.7 537.983 109.674] /Subtype /Link -/A << /S /GoTo /D (os-win32) >> +/A << /S /GoTo /D (win32-perl) >> >> endobj 1136 0 obj << /D [1134 0 R /XYZ 71.731 729.265 null] @@ -2552,148 +2561,172 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1278 0 obj << -/Length 58274 +/Length 58088 /Filter /FlateDecode >> stream -xڔ�_�dW~]��O�'��te��G��m:4E��������$ٟ^���}2���+C3��\+�9�Bc~k��7w��;�r>�<l�p�v�~����������ouO<>?�������������~�'�w���?z���pz|����������㗇�����_�_�y;�=?|����M�3�������x:o������?�{����������O��������������~{��+��Y�Nw/�?����ۿ�3]�����pz~���|`ݟ�am����t~������X_OϏҺ?{�������� ��Y�.���5�?J��� k���p~�����X����Z�goX����|�{{v��,[�������"���7� <�>o6�����X_OOϯҺ?{�����O������Y�.���5<Z��� k��� �$�?z�Y���<�8���~l}�{iϲuX���,̍goXx`ݾ�;kݟ�am������&̍goX���e�k�W����,[��u��kݟ�am���i{^���ް6���} O���x����[_���QZdzl]���kx�?�Ƴ7� <�n_ý�17��am��u��ֺ?{�����o��p'̍gٺ���� �_��a����N����7��;Pn���7��!m��և�����Q�gѺ���gkݟ�am��u���u�������t����~l=o_Ã��gٺ����p�$���7� <�n_��YZ�goXx`���;kݟ�am������˛��gٺ���������ް6���tzy�����X_O��oҺ?{������� �ô?���(��@�wu�p��x<K��� i��� ڌgoX���q� -�u<��x`ݾ���7��am��u��߆ȳ7� <����oֺ?{�����Ow��W�ߛ�,[����t���ް6���tz~�����X���I���ް6�c���5<ʟ6�Y�.���5<X��� k���p/ƍgoXx`ݾ�'�����}�|پ��f���;Pn_��u��ސ6���tzz������X_Ow�ֺ?{������w���3n<��x`}8�=˟6���X����Z�goXx`ݾ�G�3n<{�����o��� ��Y�.���5�˟q���X���,ƍgoXx`ݾ�;kݟ�am���ǻ�����gѺ���7����� k�O��kݟ�am����$���x�p+��w ��Y�.���<Y��� k��w�x/���7� <�n߂<;ɳ7� ��z�} ��:�e�<�n_��QZ�goXx`ݾyv�goXx`}9��Y��� k?�>ܝ^ݏ�<��x`�?�ʳ�<{��������Z�goXx`ݾ�'�cn<{�������� �N�,[��u��u������k�j���,܁r���I��!m��֧�;8K�x�����}��$�ް6���t��g'y����֗�˫���ް6�c����^���Y�.����E�����X����Z�goXx`ݾyv�goX���e���I�e�<�n_ý���ް6���} ��$�ް6���} ��$�ް6�c�����&��Y�.�����J�>z�Y����,�O�� i�/��kݟ�am��ַ�;��'y�����}��$�ް6���} �ֺ?{�����5��<{����Ow�� ��<��x`ݾ�����ް6���} ��$�ް6���rz��)�ް6�c���t'��<��x`�?=��<{��������Z�goXx`ݾL���~l�߾�_��Qv6�@�}�R�����(�/@�y����������R'~�[�O���[���TBy��s<���>�m�����ߊ���y����v�Ug��T�������?��/?�������k��Q�p~����/�=�-Ч�Cן��[���wlm v�:��6�g�[�݂��[@��n�YG���b�ଣ[`k�[p��-����-(k��.@���k���kuN�wl,v�9��6�c��YW v�:��6�g�[�݂��n�� �nAY�-�ub�ଣ[`k�[p��-����-8����@��5�Z v�:��6�g�[�݂��n�� �nAIG����Q���{����a����[`i�[p��-����-(k��.@��utlm v�:��6�g�[�݂��[@��n�YG���b�ଣ[`k�[p��-����-(k��.@��utlm v�:��6��'ݻv����*�݂s�n�� �n�YG���b�ଣ[`k�[P�th]��-8����@��utlm v�:��6�eM����݂��n�� �n�YG���b�ଣ[`k�[0��-�ub�ଣ[`k�[p��-����-8��-��p�-(g��.@��utlm v�:��6�g�[�݂��[@��n�YG���b�ଣ[`k�[p��-����-(k��.@��utlm v�:��6�g�[�݂��[@��n�YG���R��{����a����[`i�[P�th]��-8����@��utlm v�:��6�eM����݂��n�� �n�YG���b�ଣ[`k�[P�th]��-8����@��utlm v�:��6�eM���H݂���;�݂s�n�� �n�YG���b����к��[p��-����-8����@��utlm v�:���@��utlm v�:��6�g�[�݂��[@��n�YG���b�ଣ[`k�[p��-����-(����8��r�XY8��st,m vxh�[��������K�p�mT��_�<>��[�\����-��/?~���?����J�������~�����~����/�����,O�_�d.���/����7r�c'���NW|��N�?;���|�d��؉�����5�Nhm ;)k����@>vR�;���|�d��؉�����5�Nhm ;)k����@>vR�;���|�d��؉�����5�Nhm ;)k����@<vR�q���᱓Q�؉���c'�̱J��Nʚc'�6����5�Nhm ;�<v"��c'eͱZ��Nʚc'�6����5�Nhm ;�<v"��c'eͱZ��Nʚc'�6����5�Nhm ; ��� �+����5�Nhm ;)k����@<vR�q����q�c'�.@>vR�;���|줬9vBk��IYs���c'�.@>vR�;���|줬9vBk��IYs���c'�.@>vR�;���|줬9vBk��IYs���c'�.@>vR�;���x줤�� ���c'�̱J��N�:��Ⱥ���IYs���� � �c'eͱZ��N�:��Ⱥ���IYs���� � �c'eͱZ��N�:��Ⱥ���IYs���� � �c'eͱZ��N�:��Ⱥ���IIDZ:��Nʙc'�6����5�Nhm ;�<v"��c'eͱZ��Nʚc'�6����5�Nhm ; ��� �+����5�Nhm ;)k����@>vR�;���|�d��؉�����5�Nhm ;)k����@>vR�;���x�d�9v"g���I)DZ*��Nʙc'�6�����F;��؏��/�����?ǿp���������N�˱��8v��O��ן>�i5�y>��O�y�'��×��u�p�m��&�2����<�g}~>��=��C��������}�9>���ް6�`)uL��ܢ%��-Ze�-Z�[�ʚ-Z�6��h�5[�hm o��ܢ%��-Ze�-Z�[�ʚ-Z�6��h�5[�hm o��ܢ%��-Z�ܷh�x �-Z%[�h,o�*g�hQ�@ޢ��-XW o�*k�h��@ޢU�lѢ���E��٢Eky��X�-Y o�*k�h��@ޢU�lѢ���E��٢Eky��X�-Y o�*k�h��@ޢU�lѢ���E��٢Ekq��H�EK����R�-ZT��h�3yJ�y��&�@k9�0֙g�ur����3��@�3�5yZ�y��&�@k9�0֙g�ur����3��@�3�5yZ�y��&�@k9�0֙g�ur����3��@�3�5yZ�y���<���<�(�g��q�g(g��6��eM���r����3��@�3�u�d]��g(k��6��eM���r����3��@�3�u�d]��g(k��6��eM���r����3��@�3���g�ur����3��@�3�5yZ�y���<���<�8g�A��y��&�@k9�P��hm �ʚ<� �<�Xg�A��y��&�@k9�P��hm �ʚ<� �<�Xg�A��y��&�@k9�P��hm �ʚ<� �<�Xg�A��y��&�@k1�Pґg��p�g(g��6��c�yY �ʚ<� �<CY�g����g(k��6��c�yY �ʚ<� �<CY�g����g(k��6��c�yY �ʚ<� �<CY�g����g(k��6��c�yY �J:�t���L���r����3��@�3�u�d]��g(k��6��eM���r����3��@�3���g�ur����3��@�3�5yZ�y��&�@k9�0֙g�ur����3��@�3�5yZ�y��&�@k1�0���l�J9�T���L���r�AM��3�s�y�uq�g�����������%�x�y��g��o�釟~~w����6��+��aΧ������t��gx��y��s�?~x==�=}�A>���ް6�c���t����Y�.�����˟��u����������ް6���zz��'deݟ�am��֧�kxzs��,[��u��u������kx�ү��p�@�}_������7� <����^Zdzl]���;8�K��� k�_ -6kݟ�am 'qʚ$� �$�XgG��I��&�Ck9�S�$qhm 'qʚ$� �$�XgG��I��&�Ck9�S�$qhm 'qʚ$� �$�XgG�HI�r�I�a��)�H��X8N�3IJ�I��^�8��@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@N�5IZ�I��&�Ck9�S�$qhm &qF�$����$N)G���q��I�P�@N�5IZ�I���$����8eM��r��I���@N�5IZ�I���$����8eM��r��I���@N�5IZ�I���$����8eM��r��I���@L�t$q�,&qF�$����$N9�ġ����)k�8�6��8eM��rg�3�#��$NY�ġ����)k�8�6��8eM��rg�3�#��$NY�ġ����)k�8�6��8eM��r'��$�+��8eM��r��I���@L�t$q�,'q�9�8�.@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@N�5IZ�I���$���$N9�ġ�����L�Ⱥ�9�S�$qhm 'qʚ$� �$NY�ġ�����L�Ⱥ�9�S�$qhm 'qʚ$� �$NY�ġ�����L�Ⱥ�9�S�$qhm 'qʚ$� �$NY�ġ�����L�Ⱥ�1�Sґġ�p��)g�8�6��8eM��rg�3�#��$NY�ġ����)k�8�6��8eM��r'��$�+��8eM��r��I���@N�5IZ�I���$����8eM��r��I���@N�5IZ�I��&�#g�0�Sʑġ�p��)g�8�6����K%q�9�$�?;&qǟ��������Fw~��������$n<�g��ݏ �?���O��?���{�����[.��A����ί����[�r<t�)�}����˯����:�e�<�>�^^�u����������TY�goXx`ݾ�/��T����~|�}�} �ΚgѺ�����,���7� <�n_×�M*��� k���p�����~l=o_�ݫ��gٺ�����ޤu��������vֺ?{��������}�p+�ϧ��M�x�����}�ֺ?{�����\��d��� k�۷�� ���7� <�ͷ��AZdzl]���k������XG~������@���5=?Z�=��Ξ���{~eMϏ�rϯ�����@���5=?Z�=��Ξ���{~eMϏ�bϯ���Gg��W���(m ���:{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���s���x Þ_ GϏ��qϯ���Q�@������urϯ�����@���5=?Z�=����Gk��7���urϯ�����@���5=?Z�=����Gk��7���urϯ�����@���5=?Z�=����Gk��7����l��J9z~T�{~�LϏ�rϯ�����@���u��d]���+kz~�6�{~eMϏ�rϯ�����@���u��d]���+kz~�6�{~eMϏ�rϯ�����@���u��d]���+kz~�6�{~eMϏ�bϯ���Gg��7����l��ʙ�� �_Y���+kz~�6�{~c�=?Y ��ʚ�� �_Y���+kz~�6�{~c�=?Y ��ʚ�� �_Y���+kz~�6�{~a���`]���+kz~�6�{~eMϏ�bϯ���Gg��7���trϯ�����@���5=?Z�=����Gk��7���urϯ�����@���5=?Z�=����Gk��7���urϯ�����@���5=?Z�=����Gk��7���urϯ�����@���t���,��ʙ�� ��Xg�O��=����Gk��W���hm ��ʚ�� ��Xg�O��=����Gk��W���hm ��ʚ�� ��Xg�O��=����Gk��W���hm ��ʚ�� ��Xg�O��=�������_9���+kz~�6�{~c�=?Y ��ʚ�� �_Y���+kz~�6�{~a���`]���+kz~�6�{~eMϏ�rϯ�����@���u��d]���+kz~�6�{~eMϏ�rϯ�����@���4=?9�=�R�����_9�������ϱ�����q��9�W���x��������_q;�����W�~�b����7�/���\�/��{mg*n��W�8�}�9 �Ek1�Uґʢ�p���LeI��9�U֤�hm ��ʚT� �TVY�ʢ�����Leɺ�9�U֤�hm ��ʚT� �TVY�ʢ�����Leɺ�9�U֤�hm ��ʚT� �TVY�ʢ�����Leɺ�9�U֤�hm ��J:RYt�SY�L*��r*k�3�%��TVY�ʢ����*kRY�6�SYeM*��r*k�3�%��TVY�ʢ����*kRY�6�SYeM*��r*k�3�%��TVY�ʢ����*kRY�6�SYeM*��r*k�3�%��TV9�T��0Le�p��h,��ʙT� �TVX/�,XW ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6SY#M*K��a*��#�Ee�8�UΤ�(m ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��J:RYtSY�L*K��q*��IeQ�@Ne�5�,Zȩ��&�Ek9�5֙ʒur*��Ie��@Ne�5�,Zȩ��&�Ek9�5֙ʒur*��Ie��@Ne�5�,Zȩ��&�Ek9��K*�ȩ��&�Ek9�U֤�hm ��J:RYt�SY㜩,I ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVIG*���q*��IeQ�@Ne�u��d]���*kRY�6�SYeM*��r*��Ie��@Ne�u��d]���*kRY�6�SYeM*��r*��Ie��@Ne�u��d]���*kRY�6�SYeM*��r*��Ie��@Ne�u��d]���*�He�Y8Ne�3�,Jȩ��&�Ek9�5֙ʒur*��Ie��@Ne�5�,Zȩ��&�Ek9��K*�ȩ��&�Ek9�U֤�hm ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��ʚT� �T�H�ʒ�q��*�HeQY8Ne�3�,Jȩ,��"��ϱ���]�q*{�9�T�|#�������ȩ�x���������������/�������O��<^��ˏ�w���<��g���/�HO�\}�R����/��� ����������Nhm �:�<u"��S'eͩZȧNʚS'�6�O��5�Nhm �:�<u"��S'eͩZȧNʚS'�6�O��5�Nhm �:�<u"��S'eͩZȧNʚS'�6O��t�:��px�d�9u"e���I9s���� � �S'eͩZȧN�:O�Ⱥ���IYs���� � �S'eͩZȧN�:O�Ⱥ���IYs���� � �S'eͩZȧN�z9u� -�S'eͩZȧNʚS'�6O��t�:��p|�d��ԉ��O��5�Nhm �:)kN���@>uR֜:���|�d��ԉ��O��5�Nhm �:)kN���@>uR֜:���|�d��ԉ��O��5�Nhm �:)kN���@>uR֜:���|�d��ԉ��O��5�Nhm �:)�8uBg���I9s���S'�.@>uR֜:���|꤬9uBk��IYs���S'�.@>uR֜:���|꤬9uBk��IYs���S'�.@>uR֜:���|꤬9uBk��IYs���S'�.@<uR�q����r�� � �S'eͩZȧN�:O�Ⱥ���IYs���� � �S'eͩZȧN�z9u� -�S'eͩZȧNʚS'�6�O��5�Nhm �:�<u"��S'eͩZȧNʚS'�6�O��5�Nhm �:iN���8<uR�q����r�� � �S'���N�9�S�뻢�S����������p����?P_>��������S��P�ɩ��<t�����?|�������w�~����?����_����E�~���巃�̙u��sf���Ϭ�� 0�N��3�ʚ�u�6�g֕53�hm Ϭ+kf���@�Y7�9�N��3�ʚ�u�6�g֕53�hm Ϭ+kf���@�Y7�9�N��3�ʚ�u�6g֕t̬��p<����YGiyf�X��:Y Ϭ+kf���@�YW�̬���<����YGkyf�X��:Y Ϭ+kf���@�YW�̬���<����YGkyf�X��:Y Ϭ+kf���@�YW�̬���<����YGkyf�X��:Y ͬ+�>���kά+�YGc�xf]93����̺�^f���yf]Y3����̺�ff� �ue��:Z�3��:g�ɺ�yf]Y3����̺�ff� �ue��:Z�3��:g�ɺ�yf]Y3����̺�ff� �ue��:Z�3�F��ur6g֕r̬��p<���iQ�@n�5�!Z����������CeM{��r{��i��@n�5�!Z����������CeM{��r{��i��@n�5�!Z����������CeM{��r{��i��@l�t���,��F�������P9�����*k�C�6��CeM{��r{h��=$���PY�����*k�C�6��CeM{��r{h��=$���PY�����*k�C�6��CeM{��r{(����+��CeM{��r{��i��@l�t���,���9�C�.@n�5�!Z�����=Dk�=Tִ�hm ���:�C�.@n�5�!Z�����=Dk�=Tִ�hm ���:�C�.@n�5�!Z�����=Dk�=Tִ�hm ���:�C�.@n�5�!Z����������P9������lɺ��=Tִ�hm ��ʚ�� ��PY������lɺ��=Tִ�hm ��ʚ�� ��PY������lɺ��=Tִ�hm ��ʚ�� ��PY������lɺ��=T����p�*g�C�6��CeM{��r{h��=$���PY�����*k�C�6��CeM{��r{(����+��CeM{��r{��i��@n�5�!Z����������CeM{��r{��i��@n�5�!Z�����=$g�=T����p�*g�C�6����vN���9���:��?l�?�?��������S���-���y�]���4��#{y�4����������>����_��ퟟ��߿����~���~����ߎu����Oy��<�����(�ħ��,qT8�G2���#9�p>��K�����A�� -�YG���b�㬣�ak��q�Qᰵ�X�(k*�.@�p�uT8lm V8�:*�6+g[�����A�� -�YG���b�㬣�ak��q�Qᰵ�X�(k*�.@�p��k���kU8N�W8l,V8�9*�6+c�YW V8�:*�6+g[���� -�� � -GYS�ub�㬣�ak��q�Qᰵ�X�8�p��@�p�5Z V8�:*�6+g[���� -�� � -GIG����Q��{����a�㜣�ai��q�Qᰵ�X�(k*�.@�p�uT8lm V8�:*�6+g[�����A�� -�YG���b�㬣�ak��q�Qᰵ�X�(k*�.@�p�uT8lm V8�:*�6�*'�+v�*�*��s� -�� � -�YG���b�㬣�ak��Q�T8h]�X�8�p��@�p�uT8lm V8�:*�6+eM������� -�� � -�YG���b�㬣�ak��1�Y�ub�㬣�ak��q�Qᰵ�T�8�^ᰳpX�(g*�.@�p�uT8lm V8�:*�6+g[�����A�� -�YG���b�㬣�ak��q�Qᰵ�X�(k*�.@�p�uT8lm V8�:*�6+g[�����A�� -�YG���R��{����a�㜣�ai��Q�T8h]�X�8�p��@�p�uT8lm V8�:*�6+eM������� -�� � -�YG���b�㬣�ak��Q�T8h]�X�8�p��@�p�uT8lm V8�:*�6+eM���H���;��s� -�� � -�YG���b����pк���q�Qᰵ�X�8�p��@�p�uT8lm V8�:+��@�p�uT8lm V8�:*�6+g[�����A�� -�YG���b�㬣�ak��q�Qᰵ�T�(�p��8�p�r�pXY8�p�sT8,m V8��� -�?��g*z9�p�s������7h����,Ϥ�9�R����/?������������N/_�\.���`wGi�����+#}�����;��ϧ�/������u�������˗�Z)��� k?�x�;���5ϢuX����YZ�goXx`ݾ�/��R����X���l���7� ��z��WgϲuX���I��� k����s�u������ӳ���� g�>VޟO�/��2��,K��u���u������;��A�����X�7B:�x�$[���Tּb�_1���lm �b�Y�+&��@|Ť��WL�����Ie�+&Ѻ����:^1���+&�u�b�� �WL:�x�$[���Tּb�_1���lm �b�IG��qܮ���Q�@�ۍu��d]��+k�v�6��veM�rܮ�����@�ۍu��d]��+k�v�6��veM�rܮ�����@�ۍu��d]��+k�v�6��veM�rܮ�����@�ۍu��d]��+�����q������]9������%n� -�]Y�����+k�v�6��veM�r�n�3n'��]Y�����+k�v�6��veM�r�n�3n'��]Y�����+k�v�6��veM�b�n�����8�ەr���,��ʙ�� �]Y�������ɺ�9nW���hm ��ʚ�� �]Y�������ɺ�9nW���hm ��ʚ�� �]Y�������ɺ�9nW���hm ��ʚ�� ĸ]IG��a�n���I�8�ە3q;J�q��&nGk9nW���hm ���:�v�.@�ە5q;Z�q��&nGk9nW���hm ���:�v�.@�ە5q;Z�q��&nGk9nW���hm ���z����9nW���hm ��ʚ�� ĸ]IG��q�n�3n'��]Y�����+k�v�6��veM�r�n�3n'��]Y�����+k�v�6��veM�r�n�3n'��]Y�����+k�v�6��veM�r�n�3n'��]Y�����+���Y8�ە3q;J�q��θ����veM�rܮ�����@�ە5q;Z�q��θ����veM�rܮ�����@�ە5q;Z�q��θ����veM�rܮ�����@�ە5q;Z�q��θ���v%q;:�q�r&nGi9nW���hm ���:�v�.@�ە5q;Z�q��&nGk9nW���hm ���z����9nW���hm ��ʚ�� �]Y�������ɺ�9nW���hm ��ʚ�� �]Y�����i�vr6�v�q;*�q�r&nGi9n�V[���9����$?�ۏ?���o���o^��a�>�I�~?��?��������{����[���#�d�Y���6��`����������^�?���(N�_���r��ސ6���|z������X_O/o��w������������x����:f�5�hm �2(kv��@�eP��2����� ��]��@�eP��2����ˠ��e@ky�AY�ˀ��.���]�.@�eP��2����ˠ��e@kq�AI�.:ǻ�9wH��y�AY�ˀ��.��f�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.��f�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.��f�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.���]t�w�3�(m �2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]��w�x �]%�h,�2(gvP�@�e��.XW �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�eP��2����ˠ��e@kq��H��@���.�R�]T�w�3�(m �2(kv��@�e0ֹ�@�Ȼʚ]�6�w�5�hm �2(kv��@�e0ֹ�@�Ȼʚ]�6�w�5�hm �2(kv��@�e0ֹ�@�Ȼʚ]�6�w�5�hm �2(��e@g�p��(��@���.�rf�� �]e�.ZȻʚ]�6�w�u�2�u�.��f�� �]e�.ZȻʚ]�6�w�u�2�u�.��f�� �]e�.ZȻʚ]�6�w������Ȼʚ]�6�w�5�hm �2(��e@g�x��8�.I �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�ePұˀ���.�rf�� �]c��d]��ˠ��e@ky�AY�ˀ��.��f�� �]c��d]��ˠ��e@ky�AY�ˀ��.��f�� �]c��d]��ˠ��e@ky�AY�ˀ��.��f�� �]c��d]��ˠ�c����]��.JȻʚ]�6�w�u�2�u�.��f�� �]e�.ZȻʚ]�6�w������Ȼʚ]�6�w�5�hm �2(kv��@�e0ֹ�@�Ȼʚ]�6�w�5�hm �2(kv��@�e0��2��q�ˠ�c����]��.JȻ�kj�?Ǿ�p=�p��p�9�x{�>�]�LJ��ן��o)߶��aQ=�3�]��Xf���?���g�����������������/����yˋ����LJ��_���,|�y:{���Og�8�Ek�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Y#��,9���J9NgQY8>�UΜ��|:��9�Ek�t�X��,Y ��*kNg��@>�U֜��|:��9�Ek�t�X��,Y ��*kNg��@>�U֜��|:��9�Ek�t�X��,Y ��*kNg��@>�U֜��x:���t����Y���,)ǧ�ʙ�Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>����,XW ��*kNg��@>�U֜��x:���t����Y㜧�$]�|:��9�Ek�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVI��,:ǧ�ʙ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Zȧ�ʚ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Zȧ�ʚ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Zȧ�ʚ�Y�6�Og�u�Βu�鬒��Yt�Og�3��(m ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>����,XW ��*kNg��@>�U֜��|:��9�Ek�t�X��,Y ��*kNg��@>�U֜��|:��9�Ek�t�Hs:K����R��YT�Og�3��(m ��_z��Y�������������X^iv�f�xy�W��gr:�0g��ӯ?�{#����/���p��B�n�8x�����������]���fz~�<O}����7� <�>��\�(��� k����/;MY�goX���e���u<��x`ݾ��Wiݟ�am��u����4eݟ�am��u��OY�.@�6�h�y 9��Tμ� �w*k������5�Dk�]��:�H���Tּ� �w*k������5�Dk�]��zy XW �PY�.@�6����y Z��Tּ� �w�| Y �PY�.@�6����y Z��T��.@t��h��]�$]��.@eͻ���@~���]�hm �PY�.@�6��h��]�d]��.@eͻ���@~���]�hm �PY�.@�6��h��]�d]��.@eͻ���@~���]�hm �PY�.@�6��h��]�d]��.@eͻ���@|���w��p�.@�̻�Q�@~���w�u���5�Dk�]�ʚw����.@eͻ���@~���w�u���5�Dk�]�ʚw����.@eͻ���@~���w�u���5�Dk�]�ʚw����.@eͻ���@~���w�uһ��s �a�.@%�Dc��]�ʙw����.@a���uf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6M�4�&�l�(�4Ae�x�D93h��f�� �Ac��&d]�<h��4Aky�DY3h��f�� �Ac��&d]�<h��4Aky�DY3h��f�� �Ac��&d]�<h��4Aky�DY3h��⠉��AtM�2�&�l�(gMP�@4Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Aky�DX/�&`]�<h��4Aky�DY3h��⠉��At�M�s��tf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �A%�&�,�(gMP�@41�9hB�ȃ&ʚA�6�M�5�&hm �(kM��@41�9hB�ȃ&ʚA�6�M�5�&hm �(kM��@41�9hB�ȃ&ʚA�6�M�5�&hm �(kM��@41�9hB���&J:M�Y84Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Aky�DX/�&`]�<h��4Aky�DY3h��f�� �Ac��&d]�<h��4Aky�DY3h��f�� �A#͠ 9��&J9MPY84Q�����<hB;b�?�>hr��x8hr�9�A��A������M�34y�4�_�ˏ����/��}�"�h���W�}ӇL�}�!�����o��@ξ�5�7Z�ٷ�&�Fk9�V�d�hm g��:�o�.@ξ�5�7Z�ٷ�&�Fk1�Vґ}��p�}�̾I��9�V�d�hm g�ʚ�� ��[Y�}����}�̾ɺ�9�V�d�hm g�ʚ�� ��[Y�}����}�̾ɺ�9�V�d�hm g�ʚ�� ��[Y�}����}�̾ɺ�9�V�d�hm f�J:�ot��o�L���r�m�3�&���[Y�}����}+k�o�6��oeM���r�m�3�&���[Y�}����}+k�o�6��oeM���r�m�3�&���[Y�}����}+k�o�6��oeM���r�m�3�&���[9����0̾�pd�h,g�ʙ�� ��[X/�7XW g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6�o#M�M��a���#�Fe�8�V�d�(m g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm f�J:�ot�o�L�M��q���ɾQ�@ξ�5�7Z�ٷ�&�Fk9�6֙}�ur���ɾ��@ξ�5�7Z�ٷ�&�Fk9�6֙}�ur���ɾ��@ξ�5�7Z�ٷ�&�Fk9��K� ��ٷ�&�Fk9�V�d�hm f�J:�ot��o��7I g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[IG����q���ɾQ�@ξ�uf�d]��}+k�o�6��oeM���r���ɾ��@ξ�uf�d]��}+k�o�6��oeM���r���ɾ��@ξ�uf�d]��}+k�o�6��oeM���r���ɾ��@ξ�uf�d]��}+�Ⱦ�Y8ξ�3�7J�ٷ�&�Fk9�6֙}�ur���ɾ��@ξ�5�7Z�ٷ�&�Fk9��K� ��ٷ�&�Fk9�V�d�hm g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm g�ʚ�� ���H�}��q�}+�ȾQY8ξ�3�7J��7�"��ϱg��q�}�9�x{�>k������LJ��ן��������E�x(�\�������O�?���?~��O����o#��۟�������_��G;���~/����5�է>���A�������5��hm _�+k����@��W�\ӣ��|Mo����s��G�5��p\ӣ�p|M����Gi��^X/��`]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk��^YsM���5���� �kz#�5=9���J9��QY8��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��xM������kz��5=)���ʙkz�6���5��hm _�+k����@��7�yMO����ʚkz�6���5��hm _�+k����@��7�yMO����ʚkz�6���5��hm _�+k����@����5=XW _�+k����@��W�\ӣ��xM������kz���$]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk�^I�5=:���ʙkz�6���u^ӓu�5���� �kze�5=Z���ʚkz�6���u^ӓu�5���� �kze�5=Z���ʚkz�6���u^ӓu�5���� �kze�5=Z���ʚkz�6���u^ӓu�5���kzt���3��(m _�+k����@��7�yMO����ʚkz�6���5��hm _�+k����@����5=XW _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk��HsMO���5�R�kzT���3��(m _����kz��5�����5���X���7����۟��|M?��\�߯����w~��ӏxK��D�+��_Ç���S������W����?��3�Y8~c�r�(m �1�X�3Ⱥ���ʚ7f�����e�3��@~c���hm �1�X�3Ⱥ���ʚ7f�����e�3��@~c����Ak��1����ur㣬i|��@n|�5�Zȍ����Ak��1����uR㣜{��k6>J84��L��r�#����+�eM��r㣬i|��@n|�5�Zȍ���Ƈ��eM��r㣬i|��@n|�5�Zȍ���Ƈ��eM��r㣬i|��@n|�5�Z������!g��Q�����p��(g�6�eM��r�c���!���GY�������(k�6�eM��r�c���!���GY�������(k�6�eM��r�c���!���GY�������(k�6%�:���Q��!e��Q�4>(m 7>ʚ�� ��GY��������l|Ⱥ���Q�4>hm 7>ʚ�� ��GY��������l|Ⱥ���Q�4>hm 7>ʚ�� ��GY���������� -��GY�������(k�6%�:Ǎ�q�Ƈ��eM��r㣬i|��@n|�5�Zȍ���Ƈ��eM��r㣬i|��@n|�5�Zȍ���Ƈ��eM��r㣬i|��@n|�5�Zȍ���Ƈ��eM��b㣤��Ag��Q�4>(m 7>�:�.@n|�5�Zȍ����Ak��Q�4>hm 7>�:�.@n|�5�Zȍ����Ak��Q�4>hm 7>�:�.@n|�5�Zȍ����Ak��Q�4>hm 7>�:�.@l|�t4>�,7>ʙ�� ��GY��������l|Ⱥ���Q�4>hm 7>ʚ�� ��GY���������� -��GY�������(k�6�eM��r�c���!���GY�������(k�6�eM��b�c�i|��8l|�r4>�,7>ʙ�� �Ƈ�����������9��?�_O�7ޘq~����/^���o7>�<���i>����w�?��O��ׯ�ϯ�>�}����o�<�ߑq��r�w~{=�|��~�����|����?>}�Aޟ�gѺ����giݟ�am����t��_9��� k���p�����~l=o_���{oϲuX���I��� k���o�u������ӳ���� g�>V�oz{9;�x�����}�ֺ?{�����\�Y����7� <�n����gݟ�am��և�kx���,[��u���u������k8�8���X����Z�goX���q�!�&̍gٺ����W�g<{��������Z�goXx`}==�?�goXx�&o_Ó��3�e�<���� ���I����9G���b���)�Ѻ���v�Q~���X~;�(���@,��u��lm ��ʚ���og�7[�巳�� ���YG���b���)�Ѻ���v�Q~���X~;�(���@,��u��lm ��ʚ���o��Z~��F���7��s�� ���Xg�M��巳�� ���YG���b�����fk��V֔�h]�X~;�(���@,��u��lm ���:�o�6�oeM����巳�� ���YG���b�����fk��V�Q~��qT~;�^~��pX~;�(�Y�@,��u��lm ��ʚ���og�7[�巳�� ���YG���b���)�Ѻ���v�Q~���X~;�(���@,��u��lm ��ʚ���og�7[�巳�� ���I���[)G����a�휣�fi��v�Q~���X~;�(���@,��5�7Z ���:�o�6�og�7[�巳�� ��[YS~�ub�����fk��v�Q~���X~;�(���@,��u��d]�X~;�(���@,��u��lm ��N����,��ʙ���og�7[�巳�� ���YG���b���)�Ѻ���v�Q~���X~;�(���@,��u��lm ��ʚ���og�7[�巳�� ���YG���b���)�Ѻ���v�Q~���T~;�^~��pX~;�(�Y�@,��5�7Z ���:�o�6�og�7[�巳�� ��[YS~�ub�����fk��v�Q~���X~;�(���@,��5�7Z ���:�o�6�og�7[�巳�� ��[YS~�uR���{����a�휣�fi��v�Q~���X~+k�o�.@,��u��lm ���:�o�6�og�7[�己��+�og�7[�巳�� ���YG���b���)�Ѻ���v�Q~���X~;�(���@,��u��lm ��J:�ot6��o���oV�o��7K��7̦������ʬ���o����;�/��y�R~�G��������?���_�����=��������w���������{a{��Ǽ?�_�^�8Ov�`��^���� p���'�ʚ�]�6�Ov�5'�hm ��*kNv��@>�5�y�K��'�ʚ�]�6�Ov�5'�hm ��*kNv��@>�5�y�K��'�ʚ�]�6�Ov�5'�hm ��*kNv��@<�5Ҝ쒳qx����d���]���.J�'�ʚ�]�6�Ov�u��u�ɮ��d� �]e��.Z�'�ʚ�]�6�Ov�u��u�ɮ��d� �]e��.Z�'�ʚ�]�6�Ov�u��u�ɮ��d� �]e��.Z�'�J:Nv�Y8<�5ʜ쒲q|���9�Ei�dWYs����ɮ��d� �]c�'�d]�|���9�Ek�dWYs����ɮ��d� �]c�'�d]�|���9�Ek�dWYs����ɮ��d� �]a���u�ɮ��d� �]e��.Z�'�J:Nv�Y8>�5�y�K��'�ʚ�]�6�Ov�5'�hm ��*kNv��@>�5�y�K��'�ʚ�]�6�Ov�5'�hm ��*kNv��@>�5�y�K��'�ʚ�]�6�Ov�5'�hm ��*kNv��@>�5�y�K��'�ʚ�]�6Ov�t�좳p|���9�Ei�d�X��.Y ��*kNv��@>�U֜좵�|���9�Ek�d�X��.Y ��*kNv��@>�U֜좵�|���9�Ek�d�X��.Y ��*kNv��@>�U֜좵�|���9�Ek�d�X��.Y ��*�8�Eg��dW9s����ɮ��d� �]c�'�d]�|���9�Ek�dWYs����ɮ��d� �]a���u�ɮ��d� �]e��.Z�'�ʚ�]�6�Ov�u��u�ɮ��d� �]e��.Z�'�ʚ�]�6Ov�4'��l��*�8�Ee��dW9s�������}�:��ϱ��^������eM�/k�~�q���/k��d�y�����������?�{A����������/����/֗��ׯ�9}����g{��m�tz���s���qʇ���,���7� <�>��u�������˛��ݟ�am��ַ�����u<��x`}8��X��� k��ۿ�(���7� <����)kަ����Ԅ��65��@~����mjhm �MMY�65�6�ߦ��y�Z�oS3��65�.@~����mjhm �MMY�65�6ߦ���mj�,�M�8���H���mjʚ������65e�����@~����mjhm �M�X���Ⱥ��mjʚ������65e�����@~����mjhm �M�X���Ⱥ��mjʚ������65e�����@~����mjhm �M�X���Ⱥ��mjʚ������65%oSCg��mjʙ������65c�oS#�䷩)kަ����Ԕ5oSCk�mjʚ������65c�oS#�䷩)kަ����Ԕ5oSCk�mjʚ������65c�oS#�䷩)kަ����Ԕ5oSCk�mjʚ������65c�oS#����)��654^��mjJ8ަ�����Ԕ3�(m O3�e��+���5�hm O3(k���@�fP�L3���<�`�s������5�hm O3(k���@�fP�L3���<�`�s������5�hm O3(k���@�fP�L3���8�`��f g�p�A)�4*��ʙi�6���5�hm O3�f ��ie�4Z��ʚi�6���5�hm O3�f ��ie�4Z��ʚi�6���5�hm O3�f ��ie�4Z��ʚi�6��tL3��p8�`��f e�x�A93̀��4��f�� �ie�4Z���:�Ⱥ�y�AY3̀��4��f�� �ie�4Z���:�Ⱥ�y�AY3̀��4��f�� �ie�4Z���z�f�� +xڔ�͒dWz]9�S`�� +�ߡDI-�T�,�d��THU��d�GR�ӷG��>w��qP(��Z��*$�־�o���w���xx>�����p���͟���������uO<<=��Ͽ�������px�?��������=s|8�������pzxx{�_���ſ������t�����<�g���������p<�������ۿ�����o��ˏ�������|��������۟>�����������q����x��ʾ~Ļ���q�����?}��������������={�������Giݞ�am�������$�۳7� ���r��u<���c= �giݞ�am����5ܿH��� kw���h�۳7� ���z��^�u<���c= ���� �5l��xx��_�a,��;_�ҹ={C����������Y�����pz������X����IZ�goX�c�~��n�ܰ6�c���5��u<���c= ��Һ={�����k8>I��� kw���yg�۳7� ��z����W�\�e�ܱ���u{����;����n�ް6p��r���Wiݞ�am�����k��e�eg�v���@�ou{�p;���p������X�_�I�l3��am��և�Wp/��Y�.���[8ʟ�Ƴ7� ܱ���;���x����;֗���Z�goX�������"�w3�e�ܱ�G�'��� kw����'kݞ�am����5<ʟ�Ƴ7� ���t���6�Y�.���k8Y��� kw���^�7��am����5�?!n��p�c���;�?�l���q;��pg�۳7� ܱ>_��x����;֗��n�ް6�c�����Y�7�e�ܱ�wO�g��� kw����Z�goX�c= ���� k?��������gٺ�w���^�7��am����5��q����X�_Ý�n�ް6�C���������gѺw���W����� kw����gkݞ�am���� ���x�p+���@�ԚgY��w�����Z�goX�c=�Һ={�����[8��u{����[��_ý��gٺ�w���� �۳7� ܱ����Giݞ�am������j�۳7� ��z�;�^�Osy��p�zxy�f�ް6p��x8=Y��� kw���Q�47��am��և��� �ϲu�X�_��Z�goX�c= �OMۣ7���Q���{��x����[���QZdzl]�;��wp'��ް6p��x����x����;����n�ް6�c����^���Y�.����Y������X�_ã�n�ް6p�z���I��am������ �N�,[����5�[��� kw��A������X�_�<;ɳ7� ���rw8�J�x��p�zx�ү��pnG�x8��<{C�������Z�goX�������<���c=��$�ް6p�z��u{����;��� �O�� k?�>ޝ����,ZW����5�u{����;��� �O�� kw�χG����� k?��w/�:�e�ܱ���I��am����p�d�۳7� ܱ����Wiݞ�am������ ���=����(����T~}�p;��p:J��� iw��/���ˡ���B�������p�w㙊��}������/��{��������=vy��-�F���_~���֟����?�[������O�|�q�w�}w������e���px9����|���N�wڍ;�_����=v����;���x줬9vB��c'g�Nlm ;9�8vbk���YDZ[��Nʚc'�.@<vr�q���ⱓ��c'�6���u;���x줬9vB��c'g�Nlm ;9�8vbk���I�c'v����r;��qx���؉� �c'g�Nlm ;9�8vbk��IYs����N�:����@<vr�q���ⱓ��c'�6���5�Nh]�x���؉� �c'g�Nlm ;9�8vbk���X�YW ;9�8vbk���YDZ[H�NN�;��px줜9vB��c'g�Nlm ;9�8vbk���YDZ[��Nʚc'�.@<vr�q���ⱓ��c'�6���u;���x줬9vB��c'g�Nlm ;9�8vbk���YDZ[��Nʚc'�.@<vr�q���ұ��n�N�,;9�8vbi��IYs����N�:����@<vr�q���ⱓ��c'�6���5�Nh]�x���؉� �c'g�Nlm ;9�8vbk��IYs����N�:����@<vr�q���ⱓ��c'�6���5�Nh]�t��۱;��N�9��X�@<vr�q���ⱓ��� ����u;���x���؉� �c'g�Nlm ;�<v"� +�c'g�Nlm ;9�8vbk���YDZ[��Nʚc'�.@<vr�q���ⱓ��c'�6���u;���t줤�� ���c'��XY8<vr�q�������>v������,�=v�ϱ;�i}:����Ñ���3�c��q���~�?}��8j��8|������������:Bx�e��Ype~�Cy������t��;��C���������s|`ݞ�am��R�6��٢E��-Zg[�lm n�:�آekq��Y�-[�[�ʚ-Z�.@ܢuֱE������-Z�6�h�ulѲ���E��٢E��-Z���E��km�:�E�����s�-Z�6�h�unђu����-Z�6�h�ulѲ���E�c��� �-Ze�-Z n�:�آekq��Y�-[�[��:�h��@ܢU�lѢu����-Z�6�h�ulѲ���E�c��� �-Z%[��lm�:�E�����s&�@i9�P��hm ��:��.@�3�5yZ�y��&�@k9�P��hm ��:��.@�3�5yZ�y��&�@k9�P��hm ��:��.@�3�5yZ�y��&�@k1�Pґg��p�ge�R6���L���r����3��@�3�5yZ�y���<����eM���r����3��@�3�5yZ�y���<����eM���r����3��@�3�5yZ�y��^���@�3�5yZ�y��&�@k1�Pґg��p�g��3H��9�P��hm �ʚ<� �<CY�g����g��3Ⱥ�9�P��hm �ʚ<� �<CY�g����g��3Ⱥ�9�P��hm �ʚ<� �<CY�g����g��3Ⱥ�9�P��hm �J:�t���L���r�a�3� ��<CY�g����g(k��6��eM���r�a�3� ��<CY�g����g(k��6��eM���r�a�3� ��<CY�g����g(k��6��eM���r�a�3� ��<CIG����q����3P�@�3�5yZ�y���<����eM���r����3��@�3�5yZ�y��^���@�3�5yZ�y��&�@k9�P��hm ��:��.@�3�5yZ�y��&�@k9�P��hm �F�<����<C)G����q����3P�@�3�)y~�-ϸn!������ܢ}z=<��r�1����3�����3��?�����pO�_ƽ~s�Y?��p�ګ1NO���?����Cן��9����t������={��������듳�gٺ�w����۟��u{����;֧�ݳ�n�ް6p��rx|���n�ް6�c���kx|u��,[����5<X��� kw���AJ�>z�Y���;x�s�rn�ސ6p'�:��:�e�ܱ���㽴n�ް6p��V�Y��� k9�S�$qhm 'q�:�8�.@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@N�5IZ�I��&�Ck9�S�$qhm 'q�:�8�.@J�sK��x �$N G���q��I�P�@N���āur��I���@N�5IZ�I��&�Ck9�3֙đur��I���@N�5IZ�I��&�Ck9�3֙đur��I���@N�5IZ�I��&�Ck1�3�$q�l&qJ9�8T��8�L��r��I���@N�u&qd]���)k�8�6��8eM��r��I���@N�u&qd]���)k�8�6��8eM��r��I���@N�u&qd]���)k�8�6��8eM��b��#�Cg�0�3�$q�l'qʙ$� �$NY�ġ����)k�8�6��8c�IY 'qʚ$� �$NY�ġ����)k�8�6��8c�IY 'qʚ$� �$NY�ġ����)k�8�6��8a�$q`]���)k�8�6��8eM��b��#�Cg�8�3Ιđtr��I���@N�5IZ�I��&�Ck9�3֙đur��I���@N�5IZ�I��&�Ck9�3֙đur��I���@N�5IZ�I��&�Ck9�3֙đur��I���@L�t$q�,'qʙ$� �$�XgG��I��&�Ck9�S�$qhm 'qʚ$� �$�XgG��I��&�Ck9�S�$qhm 'qʚ$� �$�XgG��I��&�Ck9�S�$qhm 'qʚ$� �$�XgG��I���$���$N9�ġ����)k�8�6��8c�IY 'qʚ$� �$NY�ġ����)k�8�6��8a�$q`]���)k�8�6��8eM��r��I���@N�u&qd]���)k�8�6��8eM��r��I���@L�4I9�I�R�$���$N9�ġ�����]*��ϱ%q���~��9�8�N7�Xt|=���=>O/'q�<�$�~q��O�o��������x�뇯�k�X�qϻ�':���_o}�����|��_�������u<���c=���u{����;֧���?U�����X�_�ۯ&�u{����yߝ��gͳh]�;���pz������X�_�ۯ&�u{����;���p�����~l=����gϲu�XO�_ٽJ��� kw�O�_�Y��� kw�/�'������}��?�o��4��,K����<Y��� kw������N�n�ް6p�z�NҺ={�������5��u<���c= �Һ={������5=?Z�=����Gk��7���urϯ�����@���5=?Z�=����Gk��7���urϯ�����@���t���,��ʙ�� ��Xg�O��=����Gk��W���hm ��ʚ�� ��Xg�O��=����Gk��W���hm ��ʚ�� ��Xg�O��=����Gk��W���hm ��ʚ�� ��Xg�O�H=�rn=?�a��+����X8���3=?J�=��^z~��@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=����Gk��W���hm ��F�����Þ_)GϏ��qϯ���Q�@���5=?Z�=��Ξ���{~eMϏ�rϯ�����@���5=?Z�=��Ξ���{~eMϏ�rϯ�����@���5=?Z�=��Ξ���{~eMϏ�rϯ�����@���t���,��F������_9���+kz~�6�{~eMϏ�r�o���'��_Y���+kz~�6�{~eMϏ�r�o���'��_Y���+kz~�6�{~eMϏ�r�/����+�{~eMϏ�rϯ�����@���t���,���9{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=����Gk��W���hm ���:{~�.@���5=?Z�=�������_9������ɺ���W���hm ��ʚ�� �_Y������ɺ���W���hm ��ʚ�� �_Y������ɺ���W���hm ��ʚ�� �_Y������ɺ���W���p��+gz~�6�{~eMϏ�r�o���'��_Y���+kz~�6�{~eMϏ�r�/����+�{~eMϏ�rϯ�����@���5=?Z�=��Ξ���{~eMϏ�rϯ�����@���5=?Z�=����'g��W���p��+gz~�6�{��0]���9���:�����?����W� _q;����ǫW�~�b��i���������{mg*n��Wn?�}�9 �Ek1�Uґʢ�p���LeI��9�U֤�hm ��ʚT� �TVY�ʢ�����Leɺ�9�U֤�hm ��ʚT� �TVY�ʢ�����Leɺ�9�U֤�hm ��ʚT� �TVY�ʢ�����Leɺ�9�U֤�hm ��J:RYt�SY�L*��r*k�3�%��TVY�ʢ����*kRY�6�SYeM*��r*k�3�%��TVY�ʢ����*kRY�6�SYeM*��r*k�3�%��TVY�ʢ����*kRY�6�SYeM*��r*k�3�%��TV9�T��0Le�p��h,��ʙT� �TVX/�,XW ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6SY#M*K��a*��#�Ee�8�UΤ�(m ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��J:RYtSY�L*K��q*��IeQ�@Ne�5�,Zȩ��&�Ek9�5֙ʒur*��Ie��@Ne�5�,Zȩ��&�Ek9�5֙ʒur*��Ie��@Ne�5�,Zȩ��&�Ek9��K*�ȩ��&�Ek9�U֤�hm ��J:RYt�SY㜩,I ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVY�ʢ����*kRY�6�SYc��,Y ��ʚT� �TVIG*���q*��IeQ�@Ne�u��d]���*kRY�6�SYeM*��r*��Ie��@Ne�u��d]���*kRY�6�SYeM*��r*��Ie��@Ne�u��d]���*kRY�6�SYeM*��r*��Ie��@Ne�u��d]���*�He�Y8Ne�3�,Jȩ��&�Ek9�5֙ʒur*��Ie��@Ne�5�,Zȩ��&�Ek9��K*�ȩ��&�Ek9�U֤�hm ��ʚT� �T�Xg*K�ȩ��&�Ek9�U֤�hm ��ʚT� �T�H�ʒ�q��*�HeQY8Ne�3�,Jȩ,��"��ϱ���]�q7���K*{#�=ݝ&x�Tv<sIe��������_~����o���_���/?��c��������|�/�~;Dz����}��>w~�/�N�G7O�����O��8uBk���X�Y �:)kN���@>uR֜:���|꤬9uBk���X�Y �:)kN���@>uR֜:���|꤬9uBk���X�Y �:)kN���@>uR֜:���xꤤ�� ���S'�̩)ǧNʙS'�6�O��5�Nhm �:)kN���@>u2�y�D�ȧNʚS'�6�O��5�Nhm �:)kN���@>u2�y�D�ȧNʚS'�6�O��5�Nhm �:)kN���@>u�˩XW �:)kN���@>uR֜:���xꤤ�� ���S'㜧N$]�|꤬9uBk��IYs���� � �S'c��Nd]�|꤬9uBk��IYs���� � �S'c��Nd]�|꤬9uBk��IYs���� � �S'c��Nd]�|꤬9uBk��IIǩ:ǧNʙS'�6�O��u�:�u�� � �S'eͩZȧNʚS'�6�O��u�:�u�� � �S'eͩZȧNʚS'�6�O��u�:�u�� � �S'eͩZȧNʚS'�6�O��u�:�u⩓��S't�O��3�N(m �:)kN���@>u2�y�D�ȧNʚS'�6�O��5�Nhm �:)kN���@>u�˩XW �:)kN���@>uR֜:���|꤬9uBk���X�Y �:)kN���@>uR֜:���|꤬9uBk���Hs�D��ᩓR�S'T�O��3�N(m �:��8u�ϱ�:]��:����/��Ӎ�_���z�D��f=�<||�4�39u:�C�Ͽ������������x��������h�����/��3�.���'`ά�ǝ3�Wwf����u�.@�YW�̬���<����YGkyf]Y3����̺�Ιu�.@�YW�̬���<����YGkyf]Y3����̺�Ιu�.@�YW�̬���8���cf���u���:J�3��:g�ɺ�yf]Y3����̺�ff� �ue��:Z�3��:g�ɺ�yf]Y3����̺�ff� �ue��:Z�3��:g�ɺ�yf]Y3����̺�ff� �ue��:Z�3��:g�ɺ�if]9��u4^�pf] ��:�3�ʙ�u�6�gօ�2���3�ʚ�u�6�g֕53�hm Ϭ+kf���@�Y7�9�N��3�ʚ�u�6�g֕53�hm Ϭ+kf���@�Y7�9�N��3�ʚ�u�6�g֕53�hm Ϭ+kf���@�Y7�̬��q8���cf���u�L{��r{��i��@n�u��d]��*k�C�6��CeM{��r{��i��@n�u��d]��*k�C�6��CeM{��r{��i��@n�u��d]��*k�C�6��CeM{��b{���=Dg�=4ʴ��l��ʙ�� ��PY�����*k�C�6��Cc��!Y ��ʚ�� ��PY�����*k�C�6��Cc��!Y ��ʚ�� ��PY�����*k�C�6��Ca���`]��*k�C�6��CeM{��b{���=Dg�=4���tr{��i��@n�5�!Z�����=Dk�=4���ur{��i��@n�5�!Z�����=Dk�=4���ur{��i��@n�5�!Z�����=Dk�=4���ur{��i��@l�t���,��ʙ�� ���Xg{H������=Dk�=Tִ�hm ��ʚ�� ���Xg{H������=Dk�=Tִ�hm ��ʚ�� ���Xg{H������=Dk�=Tִ�hm ��ʚ�� ���Xg{H�����������P9�����*k�C�6��Cc��!Y ��ʚ�� ��PY�����*k�C�6��Ca���`]��*k�C�6��CeM{��r{��i��@n�u��d]��*k�C�6��CeM{��r{��i��@l�4�!9���R������P9������s�=�ϱ��ס�~{��9�������1�����:O_o��ϧ�?�x&�l����������~��=�}����_�|��������7��퇟�ᷟ�|w�v�����>��>y8<��c��Gy�%>>?�e��p��$���~���c@���r�c���!�� +GYSᠵ�\�(k*�6�+eM���r�c���!�� +GYSᠵ�\�(k*�6�+eM���r�c���!�� +GYSᠵ�\�(k*�6�+eM���r�c���!�� +G9� +��0�p�pT8h,W8ʙ +� � +GX/XW W8ʚ +� � +GYSᠵ�\�(k*�6�+c�Y W8ʚ +� � +GYSᠵ�\�(k*�6�+c�Y W8ʚ +� � +GYSᠵ�\�(k*�6+#M�C��a�����Ae��Q�T8(m W8ʚ +� � +�Xg�C������Ak��Q�T8hm W8ʚ +� � +�Xg�C������Ak��Q�T8hm W8ʚ +� � +�Xg�C������Ak��Q�T8hm V8J:*t+�L�C��q����pP�@�p�5Z�����Ak��1�Y�ur����p��@�p�5Z�����Ak��1�Y�ur����p��@�p�5Z�����Ak���K�������Ak��Q�T8hm V8J:*t�+�I W8ʚ +� � +GYSᠵ�\�(k*�6�+c�Y W8ʚ +� � +GYSᠵ�\�(k*�6�+c�Y W8ʚ +� � +GYSᠵ�\�(k*�6�+c�Y W8ʚ +� � +GIG����q����pP�@�p�uV8d]�\�(k*�6�+eM���r����p��@�p�uV8d]�\�(k*�6�+eM���r����p��@�p�uV8d]�\�(k*�6�+eM���r����p��@�p�uV8d]�X�(�p�Y8�p�3J�����Ak��1�Y�ur����p��@�p�5Z�����Ak���K�������Ak��Q�T8hm W8ʚ +� � +�Xg�C������Ak��Q�T8hm W8ʚ +� � +�HSᐳqX�(�pPY8�p�3J��~*�*�[�s���V8����������YG|X�I�s<����/?����~��y�������x�����n/����~������C����s<�>�X�goX�c}9<�i�۳7� �����x�p�<���c= �'iݞ�am����5��Sκ={�����k8Z��� k?��_���gٺ�w���/s^�u{����;֧�s�u{����;֗Ó���� g�>V���/��s<���c=Oֺ={�����;�����۳7� ܱno�t��I�6_1��y�$Z �b�Y�+&��@|Ť��WL�����Ig��dk��ʚWL�u�+&�u�b�� �WL:�x�$[���t��I�6_1��y�$Z �b�Y�+&��@zŤ�nq;;�q�s���� ĸ]Y��ub��#ngk1nw������;����@�ە5q;Z ���:�v�6�vgq;[�q������ ĸ]Y��ub��#ngk1nw������;����@�ە5q;Z ����5ng�5��v'��v6�v�q;K�q��θ��+�vgq;[�q������ ĸ�YG���bܮ���Ѻ�1nw������;����@�u��lm ��ʚ���vgq;[�q������ ĸ�YG���Rܮ�#nGg�(nw�-nge�0nw������;����@�ە5q;Z ���:�v�6�vgq;[�q������ ĸ]Y��ub��#ngk1nw������;����@�ە5q;Z ���:�v�6�vgq;[Hq��nq;;Gq�R����ø�9G���b��#ngk1nw������+k�v�.@�u��lm ���:�v�6�vgq;[�q��&nG�ĸ�YG���b��#ngk1nw��������ɺ1nw������;����@�t���Y8�ە3q;J ���:�v�6�vgq;[�q������ ĸ]Y��ub��#ngk1nw������;����@�ە5q;Z ���:�v�6�vgq;[�q������ ĸ]Y��ub��#ngk)nw�-ngg�0nw������+k�v�.@�u��lm ���:�v�6�vgq;[�q��&nG�ĸ�YG���b��#ngk1nw������+k�v�.@�u��lm ���:�v�6�vgq;[�q��&nG����I�����ø�9G���b��#ngk1nW���h]��;����@�u��lm ���:�v�6�vc�q;YW ���:�v�6�vgq;[�q������ ĸ]Y��ub��#ngk1nw������;����@�ەt���l��N����,���9�v�6�vl�o���9�>S%�n��c���o���/�_>�r�>�I�~?��?������w]����o�~��7F�e�;Y����������_����G��t{����Q�/oW@9�goH�c}:��u{����;֗����ݞ�am��j��p���cϲu�Xnj��f�� �]e�.ZȻʚ]�6�w������Ȼʚ]�6�w�5�hm �2(kv��@�e0ֹ�@�Ȼʚ]�6�w�5�hm �2(��e@g�x��8�.I �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�eP��2����ˠ��e@ky��X�.Y �2(kv��@�ePұˀ���.�rf�� �]c��d]��ˠ��e@ky�AY�ˀ��.��f�� �]c��d]��ˠ��e@ky�AY�ˀ��.��f�� �]c��d]��ˠ��e@ky�AY�ˀ��.��f�� �]c��d]��ˠ��.�a�ˠ�c����]��.JȻ�z�e�� +�]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.ZȻʚ]�6�w�5�hm �2iv��8�ePʱˀ���.�rf�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.��f�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.��f�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.��f�� �]%��,�2evH�8�eP��2����ˠ��e@ky�AY�ˀ��.���]�.@�eP��2����ˠ��e@ky�AY�ˀ��.���]�.@�eP��2����ˠ��e@ky�AY�ˀ��.��^v��y�AY�ˀ��.��f�� �]%��,�2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.ZȻʚ]�6�w�5�hm �2��e ��]e�.Z��J:v�Y8�eP��2�����`�s����w�5�hm �2(kv��@�eP��2�����`�s����w�5�hm �2(kv��@�eP��2�����`�s����w�5�hm �2(kv��@�eP��2�����`�s���w�t�2��p�ˠ��e@iy�AY�ˀ��.���]�.@�eP��2����ˠ��e@ky�AY�ˀ��.��^v��y�AY�ˀ��.��f�� �]e�.ZȻ�:wȺ�y�AY�ˀ��.��f�� �]e�.Z��F�]r6w�r�2��p�ˠ��e@iy�am@�2���v�G�w�?���ׇ�g�.��� �r_>�"��������P���2�2������O��|=���7�u����������/�}t��vty����p�������矧�W��t����Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@<�5ҜΒ�qx:���t����Y���,Jȧ�ʚ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Zȧ�ʚ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Zȧ�ʚ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Z���J:Ng�Y8<�5ʜΒ�q|:��9�Ei�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Ya��u�鬲�t� ��Ye��,Z���J:Ng�Y8>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6�Og�5��hm ��*kNg��@>�5�y:K�ȧ�ʚ�Y�6Og�t��p|:��9�Ei�t�X��,Y ��*kNg��@>�U֜��|:��9�Ek�t�X��,Y ��*kNg��@>�U֜��|:��9�Ek�t�X��,Y ��*kNg��@>�U֜��|:��9�Ek�t�X��,Y ��*�8�Eg��tV9s:���鬲�t� ��Yc���d]�|:��9�Ek�tVYs:���鬲�t� ��Ya��u�鬲�t� ��Ye��,Zȧ�ʚ�Y�6�Og�u�Βu�鬲�t� ��Ye��,Zȧ�ʚ�Y�6Og�4���l��*�8�Ee��tV9s:��������:��ϱ��^ߩ�����f��4;�����1�f㙜Ξ����}���woD:����3�����,v�h�t<����9�\������LO�����u{����;֧��� +DY�goX�c}9����4eݞ�am�������(��Y�.���kxx������X�_���NS�����Xǫ��5�Dk�]�F�w��q�.@�̻�Q�@~���]�hm �PY�.@�6��h��]�d]��.@eͻ���@~���]�hm �PY�.@�6��(��w�u���5�Dk�]�ʚw����.@eͻ���@~���w�u���5�Dk�]�ʚw����.@%�Dg��]��9�H���Tּ� �w*k������5�Dk�]��:�H���Tּ� �w*k������5�Dk�]��:�H���Tּ� �w*k������5�Dk�]��:�H���Tּ� �w*�x :��Tμ� �w�| Y �PY�.@�6����y Z��Tּ� �w�| Y �PY�.@�6����y Z��Tּ� �w�| Y �PY�.@�6����y Z��Tּ� �w�| Y �P9�w����T��.@4����y J���ˠ XW �(kM��@4Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Akq��H3hB��᠉R�AT�M�3�&(m �(kM��@41�9hB�ȃ&ʚA�6�M�5�&hm �(kM��@41�9hB�ȃ&ʚA�6�M�5�&hm �(kM��@41�9hB�ȃ&ʚA�6�M�5�&hm �(�4Ag�p��(3hB���rf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6�M��2h�ȃ&ʚA�6�M�5�&hm �(�4Ag�x��8� I �(kM��@4Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Aky��X� Y �(kM��@4Q�����<h��4Aky��X� Y �(kM��@4Q�1h����rf�� �Ac��&d]�<h��4Aky�DY3h��f�� �Ac��&d]�<h��4Aky�DY3h��f�� �Ac��&d]�<h��4Aky�DY3h��f�� �Ac��&d]�8h��c����A�̠ Jȃ&ʚA�6�M�u��uf�� �Ae͠ Zȃ&ʚA�6�M��2h�ȃ&ʚA�6�M�5�&hm �(kM��@41�9hB�ȃ&ʚA�6�M�5�&hm �(kM��@41����q8h��c����A�̠ Jȃ&��!M�sl�&��!��&��c4��1hr:��G4�d���z�d{ ����ӯ���m�"�h�d�G�}ӇL�}�!�����o��@ξ�5�7Z�ٷ�&�Fk9�V�d�hm g��:�o�.@ξ�5�7Z�ٷ�&�Fk1�Vґ}��p�}�̾I��9�V�d�hm g�ʚ�� ��[Y�}����}�̾ɺ�9�V�d�hm g�ʚ�� ��[Y�}����}�̾ɺ�9�V�d�hm g�ʚ�� ��[Y�}����}�̾ɺ�9�V�d�hm f�J:�ot��o�L���r�m�3�&���[Y�}����}+k�o�6��oeM���r�m�3�&���[Y�}����}+k�o�6��oeM���r�m�3�&���[Y�}����}+k�o�6��oeM���r�m�3�&���[9����0̾�pd�h,g�ʙ�� ��[X/�7XW g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6�o#M�M��a���#�Fe�8�V�d�(m g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm f�J:�ot�o�L�M��q���ɾQ�@ξ�5�7Z�ٷ�&�Fk9�6֙}�ur���ɾ��@ξ�5�7Z�ٷ�&�Fk9�6֙}�ur���ɾ��@ξ�5�7Z�ٷ�&�Fk9��K� ��ٷ�&�Fk9�V�d�hm f�J:�ot��o��7I g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[Y�}����}+k�o�6��oc��7Y g�ʚ�� ��[IG����q���ɾQ�@ξ�uf�d]��}+k�o�6��oeM���r���ɾ��@ξ�uf�d]��}+k�o�6��oeM���r���ɾ��@ξ�uf�d]��}+k�o�6��oeM���r���ɾ��@ξ�uf�d]��}+�Ⱦ�Y8ξ�3�7J�ٷ�&�Fk9�6֙}�ur���ɾ��@ξ�5�7Z�ٷ�&�Fk9��K� ��ٷ�&�Fk9�V�d�hm g�ʚ�� ���Xg�M��ٷ�&�Fk9�V�d�hm g�ʚ�� ���H�}��q�}+�ȾQY8ξ�3�7J��7�"��ϱe��~���9�?�>�?k����E��������������E�x(�\�������O�o���?�ӧ�?�������/_~|:������ю�����5=|�yM��������'��kze�5=Z���ʚkz�6���5��hm _�뼦'��kz�ܮ��x �kz%��h,_�+g��Q�@����5=XW _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk��HsMO���5�R�kzT���3��(m _�+k����@��7�yMO����ʚkz�6���5��hm _�+k����@��7�yMO����ʚkz�6���5��hm _�+k����@��7�yMO����ʚkz�6���5��hm ^�+鸦Gg���(sMO���5�r�� �kze�5=Z���ʚkz�6���u^ӓu�5���� �kze�5=Z���ʚkz�6���u^ӓu�5���� �kze�5=Z���ʚkz�6����rM����ʚkz�6���5��hm ^�+鸦Gg����8�5=I _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�\ӣ��|M����Gk���X�5=Y _�+k����@��W�qM����5�r�� �kzc���d]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk��^YsM���5���� �kzc���d]�|M����Gk��^YsM���5���� �kzc���d]�xM������kz��5=J���ʚkz�6���u^ӓu�5���� �kze�5=Z���ʚkz�6����rM����ʚkz�6���5��hm _�+k����@��7�yMO����ʚkz�6���5��hm _�+k����@��7�\ӓ�qxM������kz��5=J����g��?�vM}��M��9�k����LJ���=_ӏg.����5�~�_����#��=���J�������wJ?ߘy�1��#�1����c:�o�Pμ1� �7f�|cY �1CY���6�ߘ��ycZ�o�Pּ1� �7f�|cY �1CY���6�ߘ��ycZ�o�P�4>hm 7>�:�.@n|�5�Zȍ����Ak��Q�4>hm 7>�:�.@j|�sk|�x ��G G���q㣜i|P�@n|�����ur㣬i|��@n|�5�Zȍ����Ak��1����ur㣬i|��@n|�5�Zȍ����Ak��1����ur㣬i|��@n|�5�Zȍ����Ak��1�4>�l6>J9T��L��r㣬i|��@n|�u6>d]���(k�6�eM��r㣬i|��@n|�u6>d]���(k�6�eM��r㣬i|��@n|�u6>d]���(k�6�eM��b㣤��Ag��1�4>�l7>ʙ�� ��GY�������(k�6�c��Y 7>ʚ�� ��GY�������(k�6�c��Y 7>ʚ�� ��GY�������(k�6�a�4>`]���(k�6�eM��b㣤��Ag��1����tr㣬i|��@n|�5�Zȍ����Ak��1����ur㣬i|��@n|�5�Zȍ����Ak��1����ur㣬i|��@n|�5�Zȍ����Ak��1����ur㣬i|��@l|�t4>�,7>ʙ�� ���Xg�C�ȍ����Ak��Q�4>hm 7>ʚ�� ���Xg�C�ȍ����Ak��Q�4>hm 7>ʚ�� ���Xg�C�ȍ����Ak��Q�4>hm 7>ʚ�� ���Xg�C�����������G9�������(k�6�c��Y 7>ʚ�� ��GY�������(k�6�a�4>`]���(k�6�eM��r㣬i|��@n|�u6>d]���(k�6�eM��r㣬i|��@l|�4�9���R������G9�������P�"�[�s�<�6>���������t��ׯ��8�i�x�s����g<�g��<���������?|��|m|~Y?����/_���G������������2�9�Cן��9��w�?<~�Aޟ�gѺw�����IZ�goX�c}:ܿ��CY�goX�c= Gkݞ�am�����k���`��Y�.����k�Wiݞ�am�������kݞ�am�����d��>z�Y����������ϲt�X�����n�ް6p�z���,������X���ۯ;�u{����[O��y���,[����5�?H��� kw���(��ް6p�z��u{����[�?��ʟ�Ƴl]�;����E��3��am������^ֺ={��������Yx<{����4��5<ʟpƳl]�;�j+k�o�6�o%�7:��r��Fi��6�Y~�ur���)���@.��5�7Z�已��Fk��6�Y~�ur���)���@.��5�7Z�已��Fk��6�Y~�ur���)���@.��5�7Z�已��Fk��6�Y~�uR���[���k��J8�o4��o�L���r�-����+��oeM���r���)���@.��5�7Z�己����oeM���r���)���@.��5�7Z�己����oeM���r���)���@.��5�7Z�巑��&g��V�Q~��p\~+g�o�6��oeM���r�m���&���[YS~���\~+k�o�6��oeM���r�m���&���[YS~���\~+k�o�6��oeM���r�m���&���[YS~���\~+k�o�6�o%�7:��Q��&e��VΔ�(m ��ʚ�� ��[YS~���\~�,�ɺ���V֔�hm ��ʚ�� ��[YS~���\~�,�ɺ���V֔�hm ��ʚ�� ��[YS~���\~��� +��[YS~���\~+k�o�6�o%�7:��q����oeM���r���)���@.��5�7Z�己����oeM���r���)���@.��5�7Z�己����oeM���r���)���@.��5�7Z�己����oeM���b�����Fg��VΔ�(m ���:�o�.@.��5�7Z�已��Fk��V֔�hm ���:�o�.@.��5�7Z�已��Fk��V֔�hm ���:�o�.@.��5�7Z�已��Fk��V֔�hm ���:�o�.@,��t���,��ʙ�� ��[YS~���\~�,�ɺ���V֔�hm ��ʚ�� ��[YS~���\~��� +��[YS~���\~+k�o�6��oeM���r�m���&���[YS~���\~+k�o�6��oeM���b�m�)���8,��r�ߨ,��ʙ�� ��{?`V�7~����ά�v������{��������W|�c������~���?����ۿ����ß��~���o�|�������o��s���W�`������i�e�9٥?�<t�G�{����?�%� +ē]g'�lm ��:�8�ek�d�Y��.[�'�ʚ�]�.@<�u�q����ɮ���]�6Ov�u�첵�x���9�E�ē]g'�lm ��:�8�ek�d�Y��.[H'�J:Nv��8:�u��d���Ó]�'�,m ��:�8�ek�dWYs����'��:Nv��@<�u�q����ɮ���]�6Ov�5'�h]�x���d�� ē]g'�lm ��:�8�ek�dWYs����'��:Nv��@<�u�q����ɮ�n'��,��*�8�Ee��d�9��.K�'��:Nv��@<�u�q����ɮ��d�Ov�u�첵�x���d�� ē]g'�lm ��*kNvѺ��d�Y��.[�'��:Nv��@<�u�q����ɮ�Γ]��@<�u�q����ɮ���]�6�Nv�t;�eg��dW9s����'��:Nv��@<�u�q����ɮ���]�6Ov�5'�h]�x���d�� ē]g'�lm ��:�8�ek�dWYs����'��:Nv��@<�u�q����ɮ���]�6Ov�5'�h]�x���d�� ��]'�Nv�Y8<�u�q����ɮ��d�Ov�u�첵�x���d�� ē]g'�lm ��*kNvѺ��d�Y��.[�'��:Nv��@<�u�q����ɮ��d�Ov�u�첵�x���d�� ē]g'�lm ��*kNvѺ��d�I��]vOv�s�체�x���d�� ē]e��.Z ��:�8�ek�d�Y��.[�'��:Nv��@<�5�y�K��'��:Nv��@<�u�q����ɮ���]�6Ov�5'�h]�x���d�� ē]g'�lm ��:�8�ek�dWI��.:G'�N��첲px���d�� ē]�/5'��9�>S���'��9�y/k�_,�˚�LNv���������O?��û4=���/e�����������? ��6��lᄉ�_0N�}����Qv6nGy:��ҹ={C�����tg�۳7� ܱ��_���� k?���o�0��,[���tx~������X��o�H[Y�goX�c�^~��mjlm �M�X���Ⱥ�mj�:ަ����Ԝu�M�� ķ�9�x�[�oSSּM �ߦ��mjlm �M�Y�����@z���noScg��mjʙ���t��Ԝu�M�� ķ�9�x�[�oSs��65�6ߦ��y�Z �M�Y�����@|����������65goSck�mjʚ���u��Ԝu�M�� ķ�9�x�[�oSs��65�6ߦ��y�Z �M�Y�����@z���noScg��mj�9ަ����Ԕ5oSC�ķ�9�x�[�oSs��65�6ߦ��mjlm �MMY�65�.@|����������65goSck�mj�:ަ����Ԕ5oSC�ķ�9�x�[�oSs��65�6ߦ��mjlm �MMY�65�.@x��s~}��a�65'�ަ�����Ԝ3�(m O3�e��+���5�hm O3(k���@�fP�L3���<�`�s������5�hm O3(k���@�fP�L3���<�`�s������5�hm O3(k���@�fP�L3���8�`��f g�p�A)�4*��ʙi�6���5�hm O3�f ��ie�4Z��ʚi�6���5�hm O3�f ��ie�4Z��ʚi�6���5�hm O3�f ��ie�4Z��ʚi�6��tL3��p8�`��f e�x�A93̀��4��f�� �ie�4Z���:�Ⱥ�y�AY3̀��4��f�� �ie�4Z���:�Ⱥ�y�AY3̀��4��f�� �ie�4Z���z�f�� �ie�4Z��ʚi�6��tL3��p<�`�s������5�hm O3(k���@�fP�L3���<�`�s������5�hm O3(k���@�fP�L3���<�`�s������5�hm O3(k���@�fP�L3���<�`�s������5�hm N3(�f@g�x�A93̀��4���i�.@�fP�L3���<͠��f@ky�AY3̀��4���i�.@�fP�L3���<͠��f@ky�AY3̀��4���i�.@�fP�L3���<͠��f@ky�AY3̀��4���i�.@�fP�1̀���4�rf�� �ie�4Z���:�Ⱥ�y�AY3̀��4��f�� �ie�4Z���z�f�� -�ie�4Z��ʚi�6���5�hm O3�f ��ie�4Z��ʚi�6���5�hm N3i���8�fP�1̀���4�rf�� �iZ��9�i�����i��ϱI�����l�T�-=�r>�|��y|>��?��p�@�<��=�Q���?����������.�Ý�/�[��?��������p�!� �A3�p�A�'��L@iy2AY3����d��f2� ��c�� d]�<����L@ky2AY3����d��f2� ��a�L&�u�d��f2� ��e�dZȓ ʚ��6�'�uN&�u�d��f2� ��e�dZ�� J:&�Y8�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6'�tL&��p<����L@iy2�X�dY O&(k&��@�LP�L&���<����L@ky2�X�dY O&(k&��@�LP�L&���<����L@ky2�X�dY O&(k&��@�LP�L&���<����L@ky2�X�dY M&(�>���kN&(�L@c�x2A93����d��^&��y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZ�� F��r6'�rL&��p<����L@iy2AY3����d�����.@�LP�L&���<����L@ky2AY3����d�����.@�LP�L&���<����L@ky2AY3����d�����.@�LP�L&���<����L@kq2AI�d:�� F��R6�'�3� (m O&(k&��@�LP�L&���<�`�s2���'�5� hm O&(k&��@�LP�L&���<�`�s2���'�5� hm O&(k&��@�LP�L&���<� �����@�LP�L&���<����L@kq2AI�d:Ǔ �9'H��y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d����t�'�3� (m O&�L ���e�dZȓ ʚ��6�'�5� hm O&�L ���e�dZȓ ʚ��6�'�5� hm O&�L ���e�dZȓ ʚ��6�'�5� hm O&�L ���%� �,O&(g&P�@�LP�L&���<�`�s2���'�5� hm O&(k&��@�LP�L&���<� �����@�LP�L&���<����L@ky2AY3����d�����.@�LP�L&���<����L@ky2AY3����d��f2������� �,O&(g&P�@�L��_L&���'�>����d������3�p��3�O�篷@�������<�O&�O�B���|�Oww����~�����������'����7��]�d��3N����q��q2Z�q���8����deM���r�������@���t���,���9�d�.@���5q2Z�q��&NFk9NV���hm ���:�d�.@���5q2Z�q��&NFk9NV���hm ���:�d�.@���5q2Z�q��&NFk9NV���hm ���:�d�.@���5q2Z�q���8���8Y9'���'댓ɺ�9NV���hm ��ʚ8� �8YY'���'댓ɺ�9NV���hm ��ʚ8� �8YY'���'댓ɺ�9NV���hm ��ʚ8� �8YY'���'댓ɺ�)NV�=NF�5�d%q2�q�r&NFi9N�K���q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�H'��q'+刓QY8���3q2J�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q���8���8�('��q'+g�d�6��deM���r�������@���u��d]�'+k�d�6��deM���r�������@���u��d]�'+k�d�6��deM���r�������@����'�ur�������@���5q2Z�q���8���8�8g�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk1NV�'��p'+g�d�6��dc�q2Y ��ʚ8� �8YY'���'+k�d�6��dc�q2Y ��ʚ8� �8YY'���'+k�d�6��dc�q2Y ��ʚ8� �8YY'���'+k�d�6��dc�q2Y ��J:�dt��d�L���r�������@���u��d]�'+k�d�6��deM���r�������@����'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk1N6����l��J9�dT��d�L���r�|�ת8?�'_}���?�U���o�ވ��d��&�O�i��H���_>��ov��J>�=�Q85D��oA��>߄}�)狰/��=��>�����`�V^ށ}�\p�l���IY8~��Q&0'e�8/7���,��B9�rP6��r�LWN��qUn���IY8Lʍq�$��qO.�3'c�8&7ʴ�,��F�������(S���pܐ�L�A�8ȍ2�8)���Q&'e�87ʔ�,w�B9�qP6��q�L3N��q1n� �IY8�ō2�8)ǭ�P�T���P�(Ӊ��pX���Ix �D�S���p܇���A�8�Í2m8)�e�Q&'e�87�T�,7�B9�pP6��p�LN��q n���IY8N��2%8)��P�����(Ӏ��p\�epR��o�L�M��q�-�3�e�(�6½�&� -�oc�7�a�|a�o2�{���K�}�\p{eZoR�Ko�L�M��q�m���IY8n��r&ޠl�F�������(w��p�ve�nR��n��Y7(�Q�Q��&e��6�ݤ,��F�����Ö[�r��`r���w ��q��p�pe -nR��m���6(��Q��&e��6ʄۤ,g�F�j����f[(g� ��q�m��IY8���2�6)ǩ�Q��&e��ʙi��qiemR�m�L�M��a�m���&�5�l�K� ��q�m���X8���2Q6)�I�Q��&e��ʙc��qceZlR�Kl�L�M��q�m���IY8n��r&ؠl�F��������(_��p�^e�kR�����Kv}�\p]e�kR��k�LpM��anm���&�5�[k!��5ǡ�Q��&eḲ6�D֤,'�F����Z(g^ ��q\m�i�IY8.��2a5)�Y�Q��&eḩʙT��qTezjR�kj�LLM��qJm�)�IY8rfԠlG�F�����Â�G@M�k��F�z����vZ(g: ��q8m��IY8���2�4)�ɴQ��&eḗʙK��qKeZiR�Ki�L(M��q&m���IY8n��r&Ҡl�F�>����:�(G��p�Fe�hR��h��Y4(�Q�1�&���0.��0A4�9�Q��&eḅʙB��qBe:hR�+h�LM��qm�)�IY8�o+/��r�q�l�i�IY8.��2�3)�ٳQ�z&e�yʙ<��q<ezgR�kg�L�L��q�l�)�IY8윅1�3����ƙ|�0.��0�3�y�a���f�{�|��͇������۟V���?B��ߝ~~y������y��_����~����_���O�?�_>����w����Ͽ����_Z�w����\>�����ۘg��ƹ�C8�q��qȺ���Q�$9hm F9J:�t���L���r�c���!��:GY�砵��(k -�6�eM���r�c���!��RGY�꠵��(kj�6�{eM���r�c���!��jGY������(k��6��eM���r�c���!���G9����0�x�pT<h,w<ʙ�� �GX/-XW �<ʚ�� �GYS������(k��6��c�]Y �=ʚ�� �GYS������(k�6�c��Y W>ʚ�� ��GYS������(kb�6s#M�C��a�#�Ae�8�Q�T?(m w?ʚ�� ���Xg�C�����&�Ak9�R�@hm 7@ʚ� ��XgD��%��&Bk9R��@hm �@ʚ � �$�XgD��U��&Bk9R֔Ahm �AJ:� t� �LD��q!��I�P�@���5�Zȝ��&Bk92�� -�ur-��Ʌ��@��5�Z�͐�&Bk92�� �ur9��I���@���5�Z����& Bk9!�KC����&#Bk9$R֔Dhm �DJ:b"t�s"�=I Eʚ�� �HYS����)k�"�6��"c�mY �Eʚ�� ��HYS����)k"#�6�3#c��Y �Fʚ�� ��HYS����)k�#�6��#c��Y WGʚ�� ��HIGy���q{����P�@Ώ�u�Gd]�\ )k$�6�#$eM���r��� ���@N��u�Hd]�\#)kr$�6��$eM���r�������@Β�uvId]�\&)k�$�6��$eM���r��� ���@N��u6Jd]�X))�Ȕ�Y8��3�Jȭ��&VBk9W2��+�ur���I���@���5�Z�ݒ�&\Bk9]�K������&_Bk9`R�Lhm 7Lʚ� � ��Xg�D��%��&eBk9fR��Lhm �Lʚ� � Ĥ�H�4��qX5)�ȚPY8��3eJ�m�q���&�{�t�Mǟc��ozx�����<��)/p��������o������/�� ��e���7W����owG����T����'>|9����Tlm ��JY�*�.@|E���wT�����*g��bk�EU�:�8�6�8eM���q���8�� �8�I�8����8�9G��b����к�1�s�DZ���9����@��u�qlm �qʚ8��8gq[�q���8�� �8�YG��b����к�1�s�DZ���9����@��u�qlm �qʚ8��8��DZ�Fq��q�q�s�8�� �8�XgG��q���8�� �8�YG��b�#�ck1�S��qh]��9����@��u�qlm �q�:�8�6�8eM���q���8�� �8�YG��b�#�ck)�S�ǡ�q�9�DZ�p�9��X�@��u�qlm �qʚ8��8gq[�q���8�� �8�YG��b����к�1�s�DZ���9����@��u�qlm �qʚ8��8gq[�q���8�� �8�I�8����8N)G���a�#�ci1�s�DZ���9����@��5qZ �q�:�8�6�8gq[�q���8�� �8NYǡub�#�ck1�s�DZ���9����@��u�qd����rd�e�[�P$,@ �a�e�ڬ۪*G5a�X*�)I�Hvu�};¿���8�W�(���~Ac�>1�s��X�A�㜺�8V{��8�^�86k�8e&�Ctb��DZڃ�9u�q�� �qN]q�=�q�Rǡ:1�s��X�A�㜺�8V{�8��8���8N���P��9u�q�� �qN]q�=�q�SW�jb���q��A�㜺�8V{��8�^�86k�8g�8���8N���P��9u�q�� �qN]q�=�q�SW�jb���q��A�㜺�8V{�8��8���8Ω+�c�1�Sj�8T� �qN]q�=�q�SW�jb��DZڃ�)5q�c��8�^�86k�8g�8���8Ω+�c�1�Sj�8T� �qN]q�=�q�SW�jb��DZڃ�u�q��A�㜺�8V{�8��8���8Ω+�c�1�Sj�8T� �qN]q�=�q�SW�jb��DZڃ�)t�qh��q���qL��q�\q�=�q�]��8~���T�v:���=����]�|������������}{�<�[�k���������]���r_O�Wz�Í���}�}= -�v�o�3���>�|>��q�f�q��d>�� g>Fݙ�c�3�&�A�9�Qj2T{�3�&�A�9�1��|H���(5��=ș�R���ڃ��(5��=ș�Qw�C���G��|P�A�|������G��|P�A�|��3R� e>ʼd>(ގa�����Xs��(3��=ș�P���s�3�&�A�9�Qj2T{�3�&�A�9�1��|H���(5��=ș�R���ڃ��(5��=ș�Qw�C���G��|P�A�|������G��|P�A�|�̞̇��G�+�A��8�Qf2D{�3�&�A�9�1��|H���(5��=ș�R���ڃ��(5��=ș�Qw�C���G��|P�A�|������G��|P�A�|��3R� g>JM�jr��d>�� f> -]��5���!���s��(3��=ș�R���ڃ��(5��=ș�Qw�C���G��|P�A�|������G��|P�A�|��3R� g>JM�jr��d>�� g>JM�jr�#�k����G��|P�A�|������G�+�A��8�1��|���(5��=ș�R���ڃ��(5��=ș�Qw�C���G��|P�A�|������G��|P�A�|��3R� g>JM�jr��d>�� g>JM�jr�cԝ��:9�Qj2T{3���͚��G��|�A�|��3R� g>JM�jr��d>�� g>JM�jr�cԝ��:9�Qj2T{�3�&�A�9�Qj2T{�3��̇�1ș�R���ڃ��(5��=ș�R���ڃ��ug>��A�|�24k�3e&�A�9�Qj2T{�3��̇�1ș�R���ڃ��(5��=ș�R���ڃ������:9�Qj2T{�3�&�A�9�Qj2T{�3��̇�1ș�R���ڃ��(5��=ș�R���ڃ��4��=���"W�d�q��d>�� g>�}��|�=.��mSs�����|�d>//�|~��g=s�|��`����ǿ����Ͼ:��<���F������|:J{�g$����H�y���H��"�I�� F�Q�g$�:�3���x -��xJ�+�B��8�Rf�)D{��)��x��1��RO�ڃO)5��=��RO�ڃOu�S��A����x -��xJ���P�A����x -��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)e^�)o�0�R���P�9����x -��xJ��x -�9��RO�ڃO)5��=��RO�ڃOu�S��A����x -��xJ���P�A����x -��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SM<Ef�a<��O!YsO)3��=��RO�ڃOu�S��A����x +�ie�4Z��ʚi�6���5�hm O3�f ��ie�4Z��ʚi�6���5�hm N3i���8�fP�1̀���4�rf�� �iZ��9�i�����i���q����_ןm�����?�|�������������8?�����3y����(ÿ����ӯ�}�e�Kmw�����q]L��^��; �L��Ʉ��?���c�dJȓ ʚ��6�'�5� hm O&�L ���e�dZȓ ʚ��6�'�5� hm O&�e2�+�'�5� hm O&(k&��@�LP�L&���<�`�s2���'�5� hm O&(k&��@�LP�1�����d�q���.@�LP�L&���<����L@ky2AY3����d�����.@�LP�L&���<����L@ky2AY3����d�����.@�LP�L&���<����L@ky2AY3����d�����.@�LP�L&���8���c2������dJȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�y2AY3����d��f2� ��e�dZȓ �:'Ⱥ�i2A9��4^�p2A �dǓ ʙ��6�'��2���ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�L&��q8���c2������dJȓ ʚ��6�'�uN&�u�d��f2� ��e�dZȓ ʚ��6�'�uN&�u�d��f2� ��e�dZȓ ʚ��6�'�uN&�u�d��f2� ��e�dZ�� J:&�Y8�L0�L&��q<����L@iy2AY3����d��f2� ��c�� d]�<����L@ky2AY3����d��f2� ��c�� d]�<����L@ky2AY3����d��f2� ��a�L&�u�d��f2� ��e�dZ�� J:&�Y8�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6�'�5� hm O&(k&��@�L0�9�@�ȓ ʚ��6'�tL&��p<����L@iy2�X�dY O&(k&��@�LP�L&���<����L@ky2�X�dY O&(k&��@�LP�L&���<����L@ky2�X�dY O&(k&��@�LP�L&���<����L@ky2�X�dY N&(�L@g�x2A93����d��f2� ��c�� d]�<����L@ky2AY3����d��f2� ��a�L&�u�d��f2� ��e�dZȓ ʚ��6�'�uN&�u�d��f2� ��e�dZȓ ʚ��6'�4� �lN&(�L@e�x2A93����d��b2?�6�p�1�_v'�?�?pz�d���Ϝ�y�z��px<�>�p��m2�xX��������������_~���/��7�����Ot<�O;?z�8>팓�>�~����@���r�l�3N&��8YY'���'+k�d�6�d%q2:�q�q�8����deM���r�������@���5q2Z�q���8����deM���r�������@���5q2Z�q���8����deM���r�������@���5q2Z�q���8����deM���b���#NFg�8NV���(m ���:�d�.@���5q2Z�q��&NFk9NV���hm ���:�d�.@���5q2Z�q��&NFk9NV���hm ���:�d�.@���5q2Z�q��&NFk9NV���hm ���:�d�.@���s���x �8Y G����q�����Q�@����'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk1N6����l��J9�dT��d�L���r�������@���u��d]�'+k�d�6��deM���r�������@���u��d]�'+k�d�6��deM���r�������@���u��d]�'+k�d�6��deM���b���#NFg�0N6��ɤl��ʙ8� �8YY'���'+k�d�6��dc�q2Y ��ʚ8� �8YY'���'+k�d�6��dc�q2Y ��ʚ8� �8YY'���'+k�d�6��da���`]�'+k�d�6��deM���b���#NFg�8N6�'�tr�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���5q2Z�q��&NFk9N6�'�ur�������@���t���,��ʙ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q��&NFk9NV���hm ��ʚ8� �8�Xg�L��q���8���8Y9'���'+k�d�6��dc�q2Y ��ʚ8� �8YY'���'+k�d�6��da���`]�'+k�d�6��deM���r�������@���u��d]�'+k�d�6��deM���r�������@���4q29�q�R�8���8Y9'���'��*N�ϱ��W����q'o+������r�q�xd���G���~��K����.�����e�E�A�|�U�����˰�Ηa_}���a�� �2l�6�_�-���a�u�˰�5/�Fk�e�ʚ�� ��\Yӛ���ܛ���ɺ��7W���hm ��ʚ�� ��\IGo���qon��7'���\Yӛ���ܛ+kzs�6�{seMo��ron��7'���\Yӛ���ܛ+kzs�6�{seMo��ron��7'���\Yӛ���ܛ+kzs�6�{seMo��ron��7'���\Yӛ���؛+����Y8�͕3�9JȽ���ޜ��{seMo��ro������@�͕5�9ZȽ���ޜ��{seMo��ro������@�͕5�9ZȽ���ޜ��{seMo��ro������@�͕5�9ZȽ���ޜ��zs��zs4^ð7W�ћ��pܛ+gzs�6�{sa���`]�ܛ+kzs�6�{seMo��ro������@�͍u��d]�ܛ+kzs�6�{seMo��ro������@�͍u��d]�ܛ+kzs�6�{seMo��ro������@�͍4�99���R������\9ӛ���ܛ+kzs�6�{sc��9Y ��ʚ�� ��\Yӛ���ܛ+kzs�6�{sc��9Y ��ʚ�� ��\Yӛ���ܛ+kzs�6�{sc��9Y ��ʚ�� ��\Yӛ���؛+����Y8�͍2�9)ǽ�r�7Gi�7W���hm ��ʚ�� ���XgoN�Ƚ���7Gk�7W���hm ��ʚ�� ���XgoN�Ƚ���7Gk�7W���hm ��ʚ�� ��\X/�9XW ��ʚ�� ��\Yӛ���؛+����Y8�͍s��$]�ܛ+kzs�6�{seMo��ro������@�͍u��d]�ܛ+kzs�6�{seMo��ro������@�͍u��d]�ܛ+kzs�6�{seMo��ro������@�͍u��d]�ܛ+kzs�6{s%�9:ǽ�r�7Gi�77�ٛ�uro������@�͕5�9ZȽ���7Gk�77�ٛ�uro������@�͕5�9ZȽ���7Gk�77�ٛ�uro������@�͕5�9ZȽ���7Gk�77�ٛ�ubo���7Gg�7W���(m ��ʚ�� ���XgoN�Ƚ���7Gk�7W���hm ��ʚ�� ��\X/�9XW ��ʚ�� ��\Yӛ���ܛ+kzs�6�{sc��9Y ��ʚ�� ��\Yӛ���ܛ+kzs�6{s#MoN��ao���7Ge�7W���(m ���ٴ���sl��u�}�ۛ����/���?�+��g������>���x$�y^��|�ᷟ>�y�w����������x������(ӿ;~���K����b~�:����cϸi��϶����Ӧw��&P6��&�L�D��a�d��i"�5��&#L�D��q�$��fe�e2ʤL�,�LF�������(1��p�0 �,�@�82�)��Q�]"e�\2ʄK�,gKB9�%P6��%�L�D��q�d��HY8���2�)ǩ�P�R ���N��L�tW(���m4J���q�d� ��X8Γn+/uҾr�q�d�I�HY8��2])�U�Q&J"e�8I�Y$��q�#er$R�c$�L�D��q�d� �HY8ΐ�rVH�l7HF�������(���p\e�#R�#aLyawd|#;"�5��##LsD��qqd� �HY8�r�F�l�FF�Ԉ�����(���p\e"#R�#���(�}�Q&/"e�8.2ʴE�,�EF������H(gU��qSd�I�HY8��2=)�5�1�����0L��/%� +��&#"c�8"2�4D�,DF������|H(g=��q;d�I�HY8��2�)�ՐQ&"e�8�Y��q�er!R�c!�L+D��q)d� �HY8΄n+/�оr�q#d�I�HY8��2})�u�1�8���0N��p�A`lwAF�,����(�(���p\e� R�s ��5(�-�Q&"e�82�t@�,W@F�����H(g��q�c��HY8��2�)��Q&�!e�8��Y���q��e�R�c� �a\�ab2�S���(ǝ�Q&�!e�8�1�4>�,>F������G(g���q�c�I{HY8{�2])�U�Q&�!e�8��Y�q��erR�c�L�C��q�c� yHY8�x�rV<�l6<�8^�8�1��;d,�;F�x����tG(g���q�c��vHY8�v�2�)�ŎQ&�!e�8���:��ǭ�Q&�!e�8�1�t:�,W:F�H����DG(g���q�c��sHY8�s�2m)�e�Q&�!e�0��T9 ,69�7��]�8�1��8d,�8�툊q�Cl-�U�����~���9�(q�*zz~�g<�'o�����lq��o�� �^����C�����\���^��~�.���O<_Su���_S����k���@~M����T�u�k��5��Bk�5Uʚ�T�����*eMɅ�r�e�3�"��KY�s���Xt)�H��Y8���3UJ�]��ΰ����.eMۅ�rݥ�ɻ��@��5�Zȍ���ȋ��3/eM��r饬I���@���5�ZȽ��������/eM��r���ɾ��@��5�Z�헱������/���/4^ð�S���p�)g*0�6�;0a��``]���)kZ0�6�k0eM��r��)���@nuFad]���)k�0�6��0eM��r������@�Ìubd]���)k1�6�+1eM&��r(��)���@lŌ4�9���R�^���bL9������)k�1�6��1c��Y �cʚv� �zLY������)k +2�6�2c�Y gdʚ�� �LY������)kj2�6�{2c�AY 'eʚ�� �LY������)�(��Y8lˌ2q)�y�r�/Ci�0S�$fhm Gfʚ�� ���XghF�ȩ���5Ck�6S��fhm gʚ�� ���XgtF��ٙ��;Ck�<S֤ghm �gʚ�� ��LX/XW 'hʚ � � +MY������)�(��Y8nьs�h$]���)kz4�6��4eM���r�������@�Ҍu�id]���)k�4�6��4eM���r���)���@nԌuFjd]���)k:5�6�K5eM���r�������@�Ռukd]���)k�5�6�5%�:��r�\Ci�]3���ur�������@.ؔ5 Z����bCk�c3���urʦ�i���@�ٔ59Z�A���hCk�i3���ur֦�����@.۔5iZ�q���nCk�o3���ub⦤�qCg�rS�dn(m �nʚ� � ���Xg�F�ȹ���wCk�xS�$ohm Goʚ� � ��MX/�XW �oʚ� � ��MY������)k +8�6�8c�Y gpʚ� �NY�¡���)kj8�6{8#MG��a����CeḊS�dq(m �qTv�2?ǖ�]�h��6n�s|z}8���z8�~>�n��a7�3�8��WU}������s�7��=���+�/�z}���Ч�Cןz/���s�f>�,f>�92�63eM�������̇� ���YG���b��#�ak1�Q�d>h]���8��|��@�|�ud>lm f>�:2�63eM�������̇� ���YG���b��#�ak1�Q�d>h]���8��̇��0�|�p�|�X8�|�sd>,m f>�:3��@�|�ud>lm f>�:2�63g�[����&�A����YG���b��#�ak1�q֑������(k2�.@�|�ud>lm f>�:2�63g�[H����������)�̇�����9G���b��#�ak1�Q�d>h]���8��|��@�|�ud>lm f>�:2�63eM�������̇� ���YG���b��#�ak1�Q�d>h]���8��|��@�|�ud>lm e>N�e>�,e>J92T63��K�����̇� ���YG���b棬�|к�1�q֑������8��|��@�|�ud>lm f>ʚ��3g�[�����̇� ���YG���b�c�3�!� +���YG���b��#�ak)�q�-�ag�0�Q�d>(]���8��|��@�|�ud>lm f>�:2�63eM�������̇� ���YG���b��#�ak1�Q�d>h]���8��|��@�|�ud>lm f>�:2�63����;h��<���W����P(`9Ӟv�b"��W��82#$R)��|ϛy��֬�-~:���"���Tj2T� f>N]��=H��C/��5���3W��hb��d>��A�|��2V{3��̇���ǩ+�a�1�Qj2T� f>N]��=���SW��jb��ԕ��ڃ��(5��c3��̇���ǩ+�a�1�q��|X�A�|����1H��C/��5���3W��hb��ԕ��ڃ��(5��c3��̇���ǩ+�a�1�q��|X�A�|��3R� f>N]��=���SW��jb��ԕ��ڃ��(5��c3��̇���ǩ+�a�1�q��|X�A�|�24{�2G^2&k3g�̇�������{|������cd>�;�Ϸ��o�^8�Y�\3��)X������������+/O/�����<><?��Ҟ|F�i�}���H��E�?#����HRj># �1������S�� �S +]��5��2O!ڃOu�S��A����x ��xJ���P�A����x -��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{�)��x -͚�xʐ����9����x -��xJ���P�A����x -��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9��5�ur<���S�� �SJM<�jb<��O�YsOs�S��A����x +��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9�2ꎧH�O)�O�x;��W<�b�q<���S�� �SB��S��A����x ��xJ���P�A����x -��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9�2ꎧH�O)5��=��BW<�f�q<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9�2ꎧH�O)5��=��RO�ڃO)5��=��Qw<E��xJ���P�A����x -��xJ���P�A�����)R� �S -]��5��2O!ڃO)5��=��Qw<E��xJ���P�A����x -��xJ���P�A���z��@��O)5��=��RO�ڃO)5��=��Qw<E��xJ���P�A����x -��xJ���P�A���x�̞�xJ�+�B��8�Rf�)D{���H�S��x�T:�������<���)|F�������� �ߞ>}��L��SO�t�����?��/_����~���������wf��p#|�;���������2x�<t�����;������D�<{G��������_�zy��ڃ���� -�^�������������ˣl��y����4/��A{�@= �X�����ׇoo������?W�N���1�z��1x�>=|�f�˳w�<P_��R/��Q{�@=��E��g�=�y���exvj�Eu��/�{@��˳w�<P�_��oR�<{G����e8Y����?WO�/��m.ϲ:ԧ���7�^��������pz����;j��/����w̚��|<�=�7� '�2:����Ū�g�=x���_�zy��ڃ�����$�˳w��\}:����eu��/��T/��Q{�@=N��z��ڃ����Ū�g�=xp�����M~�[ϲ:ԧ�����z��ڃ�W���@����Rs���F�0H�|�C�9��j���h��Pf` ڃ|�è���c�`(50P�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A>����@����Q�R� �P�����cx�C����5�0���� �����s�`(50P�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A>����@����As��̞��\0��9>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A>����@����Q�R� �Pj`�ڃ|�C�9��j���h��0d`�s|�C�9��h�����=�0���� �0�>�A��J�T{�`(50P�A>����@����Q�R� �Pj`�ڃ|�C�9��j�����=�0�z=���J�T{�`(50P�A<���u�͚���0�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A>����@����Q�R� �Pj`�ڃ|�C�9��j�����=�0��`�:���Rs��� -]0Ь9>����@����Q�R� �Pj`�ڃ|�C�9��j�����=�0��`�:���Rs���J�T{�`(50P�A>�a�}���1�0���� �Pj`�ڃ|�C�9��j�����A<���u�͚���D{�`(50P�A>�a�}���1�0���� �Pj`�ڃ|�C�9��j��^`�:���Rs���J�T{�`(50P�A>�a�}���1�0���� �Pj`�ڃ|�C�9��j�����=�0�` Ys|�C�9��h�:� `�{\`�ޛx<<�q����_����z�r��y�����˟���>8����������z{;<|��z���y�<t�f���_S��E>��YV����t��OR�<{G������d�˳w�<P�_��_S��˳w��\}9=<�}u�z��1x�����j�˳w�<P_��M�R/��Q{�@}}x}��Y�^�������u�ƨ�<�c���(5�qP�A>��Ԝ�A��<�Rs���8�y2{���(3�q�A>��Ԝ�A��<�Rs���8F��qH�|G�9��j�y��<�=��q���8�� ����<�s���(5�qP�A>��Ԝ�A��<�Rs���8F��qH�|G�9��j�y��<�=��q���Ys|ǘ�<�c���(5�qP�A>��Ԝ�A��<�Rs���8F��qH�|G�9��j�y��<�=��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Qj��ڃxG��<�5��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Qj��ڃ|G�9��j�y��<�=��q����:�<�Rs���8J�yT{���(5�qP�A>�c�}��1H�q�y9������Q�:��b��ye�<�=��q�z=����8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Qj��ڃ|G�9��j�y��<�=��q����:�<�Rs���8J�yT{���(5�qP�A<�cМ�!���<�"�y$k���(3�q�A>��Ԝ�A��<�Q�yR� ��Qj��ڃ|G�9��j�y��<�=��q����:�<�Rs���8J�yT{���(5�qP�A>�c�}��1��q���8�� ��Qj��ڃxG��<�5��q��8D���Qf�� ڃ|G�9��j�y��<�=��q����:�<�Rs���8J�yT{���(5�qP�A>�c�}��1��q���8�� ��Qj��ڃ|G�9��j�y�^��:�<�Rs���8J�yT{��(t��A���<�1�yB� ��Qj��ڃ|G�9��j�y��<�=��q����:�<�Rs���8J�yT{���(5�qP�A>�c�}��1��q���8�� ��Qj��ڃ|G�9��j�y���8��A>��Ԝ�A��<�B�y4k���(3�q�A>�c�}��1��q���8�� ��Qj��ڃ|G�9��j�y���8��A>��Ԝ�A��<�Rs���8J�yT{���u��!u�y��<�=��q���8�� ��Qj��ڃ|Ǩ�<�c��(t��A���<�2s���8J�yT{���u��!u�y��<�=��q���8�� ��Qj��ڃ|G���8��A>��Ԝ�A��<�Rs���8J�yT{���u��!u�y��<�=��q���8�� ��Qj��ڃxǠ9�Cf��yE��8H���Qf�� ڃ|�����8���8��h�����8����q���4]ǹ<q9��u������~��ǟ?9����p�G�?\�?�qz:�q�^9~�}X��b�wE>��!�����!sS�Ț�"��E��9>'b�\!�����!sJ�Ț�C"��"k��1GD��1>!b�\!���~�!s>�Ț��!���"k�/�r���l�!s5�Ț�!���"k��2�B��9�r��9&�� +��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�1�2h�)2{�)E�x +ɚ�xJ����A����x +��xʨ;�"ur<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9�2ꎧH�O)5��=��RO�ڃO)t�Sh��S�L<Ed�q<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9�2ꎧH�O)5��=��RO�ڃO)5��=��P���s��)�&�B�9�Rj�)T{�)��x +͚�xʘ;�"tr<���S�� �SJM<�jr<���S�� �SF���c��)�&�B�9�Rj�)T{��)�&�B�9�2ꎧH�O)5��=��RO�ڃO)5��=��Qw<E��xJ���P�A����)4k��)e&�B�9�2ꎧH�O)5��=��RO�ڃO)5��=��Qw<E��xJ���P�A����x +��xJ���P�A�����)R� �SJM<�jr<���S�� �SJM<�jr<e�O�:1�R芧Ь9����x +��xJ���P�A�����)R� �SJM<�jr<���S�� �SJM<�jr<%�k<��xJ���P�A����x +��xJ���P�A�����)R� �SJM<�jr<���S�� �SJM<�jb<e��Sd��S�\��5��2O!ڃO@*�����S���q<u���g$����������5�zZ����_�ۯ��|�AI�T�E���3]�O��T�?��������'_�T{����?A��?Qj�T{�������1���Rӟ�ڃܟ(5� �=���Rӟ�ڃܟu�'��A�O������D��OP�A�O������Ĩ�?!uR��K����' +\� �5���2ӟ ڃܟ�ڟ�:�?Qj�T{����?A��?Qj�T{�������1���Rӟ�ڃܟ(5� �=���Rӟ�ڃܟu�'��A�O������D��OP�A�O������Ġ�O��9�O��$k��e�?A��?Qj�T{�������1���Rӟ�ڃܟ(5� �=���Rӟ�ڃܟu�'��A�O������D��OP�A�O������Ĩ�?!ur���'�� �'JM�jb��՟�Ys؟2� �=���2ӟ ڃܟ(5� �=���Rӟ�ڃܟu�'��A�O������D��OP�A�O������Ĩ�?!ur���'�� �'JM�jr���'�� �'B��'��A�O������D��OP�A�O��4k��c����1���Rӟ�ڃܟ(5� �=���Rӟ�ڃܟu�'��A�O������D��OP�A�O������Ĩ�?!ur���'�� �'JM�jr���'�� �'F�� �c����?A��?Q��OЬ9�O������Ĩ�?!ur���'�� �'JM�jr���'�� �'F�� �c����?A��?Qj�T{����?A��?1��OH�ܟ(5� �=���Rӟ�ڃܟ(5� �=���QwB���D��?A��?Qf�D{����?A��?1��OH�ܟ(5� �=���Rӟ�ڃܟ(5� �=���P�� �s����?A��?Qj�T{����?A��?1��OH�ܟ(5� �=���Rӟ�ڃܟ(5� �=���Aӟ��s؟(r�'H��'�L�hrrP����ҟ�������{|�����_1��9������ӧ/���#��$��?���_��}���o?���/?HNN�N�3��������������������>||���|������zy��ڃ�����/�(�������V�<{G�������ѡ�G����;O'i^������z�|����;j��������;j~�����Bc��,�c�@}z��ͪ�g�=x��<<��R/��Q{�@=��E��g�=�y���exvj�Eu��/���)��������T/��Q{�@=NV�<{G����������4�gY�����ۛT/��Q{�@}y8�Z�����ׇ����;f�}N>���� '�2:����Ū�g�=x���_�zy��ڃ�����$�˳w��\}:����eu��/��T/��Q{�@=N�'�������U/��Q{���AO_��Os�YV�������U����������>/U���VT{�?�U���VT{�?�ը�XI���J���ڃ�� +]��f���*3��h��u� u�����=�0���� �Pj`�ڃ|�è���c�`(50P�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��ʼ�@�v`(p�@�����2s���B���u�����=�0���� �Pj`�ڃ|�è���c�`(50P�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0h`��sx�C����5�0���� �Pj`�ڃ|�è���c�`(50P�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A<���u�͚���"{�`(30�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A>����@����P�0@��|�C�9��j�����=�0�`�Ys|�Ø���c�`(50P�A>����@����Rs���F�0H�|�C�9��j�����=�0���� �0�>�A��J�T{�`(50P�A>����@����Q�R� �Pj`�ڃx�C����5�0���� �0�>�A��J�T{�`(50P�A>����@����Q�R� �Pj`�ڃ|�C�9��j�����=�0��`�:���Rs���J�T{�`(50P�A>�a�}���1�0�`�Ys|�C�9��h�����=�0��`�:���Rs���J�T{�`(50P�A>�!��P� �Pj`�ڃ|�C�9��j�����=�0��`�:���Rs���J�T{�`(50P�A<�a�� �����"�$k�`(30�A>�A��|����{O�0���;�������`�G.0�����o�������ǻ�{�S��?Poo��/�_���;/��n��c_������=E_䣺�eu�O���$�˳w�<P_�OV�<{G����ex��"�^�������������S׳�������W�^�����������=EJ�<{G�������g�zy��ڃ�[�5���8��A>��Ԝ�A��<�Rs���8J�yT{��4�q��9>��̜�A��<�Rs���8J�yT{���u��!u�y��<�=��q���8�� ��Qj��ڃ|G���8��A>��Ԝ�A��<�Rs���8J�yT{���u��!u�y��<�=��q���8�� ��Q�:��f��yc��8��A>��Ԝ�A��<�Rs���8J�yT{���u��!u�y��<�=��q���8�� ��Qj��ڃ|Ǩ�<�c���(5�qP�A>��Ԝ�A��<�Rs���8F��qH�|G�9��j�y���8h���Qf�� ڃ|Ǩ�<�c���(5�qP�A>��Ԝ�A��<�Rs���8F��qH�|G�9��j�y��<�=��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Q��<��cxG��<�5��q���8�� ����<�s���(5�qP�A>��Ԝ�A��<�Rs���8F��qH�|G�9��j�y��<�=��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�As�̞��8�\�q��9>��̜�A��<�Rs���8F��qH�|G�9��j�y��<�=��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Qj��ڃ|G�9��j�y���8h���1d���s|G�9��h�y��<�=��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Qj��ڃ|G�9��j�y��<�=��q�z=����8J�yT{���(5�qP�A<���u͚��8���q�|G�9��j�y��<�=��q���8�� ��1�>�C���8J�yT{���(5�qP�A>��Ԝ�A��<�Q�yR� ��Qj��ڃ|G�9��j�y��<�=��q����:�<�Rs���8 +]�qЬ9>��̜�A��<�Q�yR� ��Qj��ڃ|G�9��j�y��<�=��q����:�<�Rs���8J�yT{���(5�qP�A>�c�}��1��q���8�� ��Qj��ڃ|G�9��j�y���8��A<���u͚��8��yD{���(5�qP�A>�c�}��1��q���8�� ��Qj��ڃ|G�9��j�y�^��:�<�Rs���8J�yT{���(5�qP�A>�c�}��1��q���8�� ��Qj��ڃ|G�9��j�y��<�=��q��� Ys|G�9��h�y��"���{\���^�9>�s��<�#��y��+�t����8��u���_��ǟ?9����p�G��]�?�qz:�q�^9~�}X��b�wE>��!�����!sS�Ț�"��E��9>'b�\!�����!sJ�Ț�C"��"k��1GD��1>!b�\!���~�!s>�Ț��!���"k�/�r���l�!s5�Ț�!���"k��2�B��9�r��9&�� 1d.�Ys|'Đ9Bd��C�F�5�B����s|Đ�Bd��mC�4�5��A���x;�WA�����s|Đ�Bd��=C��5��@�[ D�_�>d��C� �5�7@� D��1d�Ys|�C����=ǧ?��D���0d�~Ys|�Ð��Ad���A�@���0d�}Ysx�È����c|�À��Ab��A�#@���0d.|Ys|�Ð9�Ad��qC��5Ǘ=�{��s|�Ð��Ad��MC��5�=�{D�_��>�d��)C��5�w<�3D��0dnxYs|�C����=G�;x��A����0�:�A���0`�v�Xs|��>y=�qL�9>�a�\� ���^�!s��Ț�c�̭"k�/ur�����L�!s��Ț��̉"k�t2�9��9��!�}�Ȟ����e"k��r2g9��9>�a��� ���"�s���s�[�8Ȼ�[�)k�q2w8��9��!�}�Ȟ���"k��o2�7��9>�a��� ���� �� {��n2W7��9��aȜ� �����!so�Ț�k���6��9>�a�\� ���Ά!sf�Ț�#F\76���ˁ �j��k0�5H�9��aȜ� �����!sW�Ț���G5��9>�a�\� �����!sN�Ț�c��- "k�/ir�������!sE�Ț��� "k�h2�3��9��q���8&���0d.gYs|7Ð9�Ad���#��ގ��� ���0d�eYs|+Ð9�Ad��C�N�5�W2��d��s|"Ð��Ad��}C�<�5��1��D�_��>�d��YC�*�5�71��D��0d�aYs| C���=ǧ0�KD���0�:�A���0`n`�Xs|C����=��/��D�߾0dN_Ys|��{Ad���A�@���0d.^Ys|�9wAd��C���5Ǘ.�]��s|��rAd��C���5�.��D�_��>nd��i#��ގ�]��5�G-��D�_��>hd��9C��5Ƿ,�SD��0d�XYs|��>y=bqL�9>aa�\� ���~�!s��Ț����� "k�/Wr�����l�!s��Ț���� "k�V2�*��9�V!������T��֥ �n��N�s��Ě�#t{��� -z�ˉ����*_b�8��?{Oox�b=r9Q�NT�ӟN�����?����+�b~z�_�u}������:8S����v������}������������gY������O�*����ԗ��U/��Q{�@=��R/��Q{��������I���eu��4�Rsj��c+J͵T{��(5WP�A>�b�}s��1�WW���+�� ^Qj.��ڃ|{E�9��j����� -�=�X��,�� aQj���ڃ|�E�9Ăj�)��[,��A�ƢԜcA�� �Rs���,J�QT{�ϲ�z��9ȗY���,�� gQj���ڃ|�E�9Ђj���-��A�ҢԜiA��P�Rs���[- -]�ZЬ9>�b�}���1�[���-�� mQj���ڃ|�E�9܂j�����-��A�ޢԜoA����Rs���.J�T{�ϸu�q!u�%���=��\��k.�� �sQj��ڃ|�Ũ���c���(5g]P�A<��u�͚��.��qD{�ϻu�w!u�����=�G^��+/�� �yQj��ڃ|�Ũ���c���(5�^P�A>���\|A���Rs���/F�w_H�|�E�9��j������=��_��0�� ��1�C��+0ʼ��A�v�(p]�A����2s��s0B�ރu�E��$�=�Ga���0�� ߅Qjàڃ|ƨ�6�c���(5�aP�A>��\�A��F�Rs$��31F�wbH�|)F�9�j���Z�=��b���1�� ��1hnƐ�sx5F��l�5LJc���1�� ߎQj�Ǡڃ|>ƨ�~�c�/�(5'dP�A>"��\�A����RsH��S2FݷdH�|MF�9'�j�A���=�7e���2�� ��1�+C���2J�iT{���(5�eP�A�/��u`͚�3�̍"{���(3gf�A>4��\�A��Rsl��s3F��fH�|qF�99�j������=�wg���3�� ��1�=C���3J��T{��(5hP�A�A���A���P�wh@��|�F�9E�j�1�� �=��h�ҠYs|�Ƙ�& �c���(5giP�A>L��\�A��6�Rs����4F��iH�|�F�9Q�j���J �=�wj��C5�� ��1�UC��k5JT{��(5kP�A�Y���A��l�Q��R� _�QjNנڃx�F��z �5��k��6�� ��1�aC��+6J�T{��(5�lP�A�e���A����Q�=R� _�QjNڠڃ|�F��j�j�]�� �=ȧm��oې:���Rs���7JͅT{�o�(5GnP�A>sc�}��1��n�NݠYs|�F��v�h���� �=�'o��oސ:��Rs����7J��T{�o�(5�oP�A>#���P� _�QjN�ڃ|G����j����=ȧp��o�:��Rs��8J�ET{�o�(5GqP�A<�c���!���2�"�i$k���(3�q�A��s|�E����\ȹ=Is|"��=ƍ�G��s��㗗ox#g=r���m���?�돿����?��٭��/���'���/�OGr�!x�}H��ݎ�||8�B��C*J�!T{��(5�TP�A>���RA����Q�!R� RQj��ڃ|HE�9��j�!�� -�=��T�C*d�RQf� ڃ|HE�9��j�!�� -�=ȇT����:���RsH��C*J�!T{��(5�TP�A>�"��!P� RQj��ڃ|HE�9��j�!�� -�=ȇT����:���RsH��C*J�!T{�(tRA�����1�!B� RQj��ڃ|HE�9��j�!�� -�=ȇT����:���RsH��C*J�!T{��(5�TP�A>�b�}H��1ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA��B�!4k��(3�T�A>�b�}H��1ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!�� +z�ˉ���χ*_b�8��?{Oox�b=r9Q�NT��N����ۯ?����+�b~z�_�u}������:8S����v������}�����߿���|T׳���������G�zy��ڃ����ɪ�g�=x�����{��˳w�<�rzxz�uR��gY��:��ԜZA��؊Rsm��{+J��T{�O�u�\!u����� +�=ȇW���+�� �^Qj���ڃx~Š��Bf��e��=�GX��+,�� �aQj��ڃ|�Ũ��c���(5�XP�A>Ȣ�\dA��&�Rs���,B��eu�e��4�=��Y���,�� �gQj��ڃ|�Ũ�F�c���(5gZP�A>Ԣ�\jA��V�Bױ4k�ϵs�k!t����d�=�G[���-�� �mQj��ڃ|�Ũ�v�c���(5�[P�A>��\pA����Rs���3.F�w\H�|�E�9�j�1���=��\���.�� �t1��B��.J�YT{�(t]vA�����2s����.F��]H�|�E�9�j�����=�w^��C/�� �z1��B��k/JT{��(5_P�A����}A���Q��R� _~QjN��ڃ|�E����j������=�'`��o��:� +�2/g`P��C0 +\�`P�9����A���P��`@��|F�9 �j�Q��*�=�wa���0�� ��1� C���0J�yT{��(5bP�A����A��L�Q��R� _�QjNŠڃ|,F���j���`�=�'c��1d�^�Q�:�d���e�r�=ȷc���1�� ��1�C��2J� T{���(5WdP�A�#���A����Q�-R� _�Qj�ɠڃ|PF��(�j�M���=�ge���ʐ:���RsZ���2J�uT{��(t�A���Č!sc�Ȟ�+3�̙D{��(5�fP�A�5���A��܌Q��R� _�QjNΠڃ|tF��:�j������=ȧg��oϐ:���Rs~��4J�T{�o�(5GhP�A>C#��P� _�QjNѠڃ|�F��F�j�=���4h���1�IC��4J�YT{��(5�iP�A�M���A��<�Q�}R� _�QjNԠڃ|�F��R�j���P �=ȧj��oՐ:�Z�Rs���5J��T{�o�(5GkP�A>[c�}���1ȗk���5�� �Q�^�f���e� �=�'l��oؐ:���Rs���C6J�%T{�o�(5�lP�A>gc�}φ�1�m���6�� �Qj�ڠڃ|�F�9l�j�i���6��A�n�Ԝ�A����Rs���7J͑T{���u߹!u���S7h��Qf�� ڃ|�F�9x�j����7��A�z�Ԝ�A����Rs����7J��T{����z��9�p��8�� �Qj��ڃ|G�9��j�)��[8��A���Ԝ�A�� �Rs��8J�QT{��4wq��9����uɚ��8��uD{���_}Qr�=.rnO���9~�q#�o��������Y�\n�|[7r��O����~���_?���������<�����@�>����ܼ��!��/�TH�|HE�9��j�!�� +�=ȇT��C*�� R1�>�B��C*J�!T{��(5�TP�A>���RA��AsH�̞�C*��!D{��(5�TP�A>���RA����Q�!R� RQj��ڃ|HE�9��j�!�� +�=ȇT�z=���C*J�!T{��(5�TP�A>���RA����Q�!R� RQj��ڃ|HE�9��j�!��C*h�R1�>�B��C*J�!T{��(5�TP�A>���RA����Q�!R� RQj��ڃ|HE�9��j�!�� +�=ȇT����:���RsH��C*J�!T{��(5�TP�A>�b�}H��1ȇT��C*�� RQ�:��f��!e� +�=ȇT����:���RsH��C*J�!T{��(5�TP�A>�b�}H��1ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!e^��x;��T���Xs|HE�9��h�!�^��:���RsH��C*J�!T{��(5�TP�A>�b�}H��1ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{�4�T��9<���uHɚ�C*��!D{��(5�TP�A>�b�}H��1ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!�� +�=ȇT��C*�� RQ�:��f��!C� +�=LJT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!�� +�=ȇT��C*�� RQj��ڃ|HE��C*��A>���RA����RsH��C* +]�TЬ9>�b�}H��1ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!�� �=ȇT��C*�� RQj��ڃ|HŨ�� -�c��(�rH��1<���uHŚ�C*��!D{���zH�9ȇT��C*�� RQj��ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!�� -�=ȇT��C*�� RQj��ڃxHŠ9�Bf��!E�C*H�RQf� ڃ|HE�9��j�!��C*��A>���RA����RsH��C*J�!T{��uR!u�!�� +�c��(5�TP�A<���uH͚�C*��!D{��uR!u�!�� �=ȇT��C*�� RQj��ڃ|HŨ�� -�c��(5�TP�A>���RA��B�!4k�2�T��9>���RA����RsH��C*J�!T{��uR!u�!�� -�=ȇT��C*�� RQj��ڃ|HŨ�� -�c��(5�TP�A>���RA����RsH��C*B�Ru�!�� -�=ȇT��C*�� RQ�:��f��!c�C*��A>���RA����RsH��C*J�!T{��uR!u�!�� -�=ȇT��C*�� RQj��ڃ|HŨ�� -�c��(5�TP�A>���RA����RsH��C*F݇TH�|HE�9��j�!��C*h�RQf� ڃ|HŨ�� �c��(5�TP�A>���RA����RsH��C*F݇TH�|HE�9��j�!�� -�=ȇT��C*�� R1�>�B��C*J�!T{��(5�TP�A>���RA����Q�!R� RQ�:��f��!e� -�=ȇT��C*�� R1�>�B��C*J�!T{��(5�TP�A>���RA����P��T@��|HE�9��j�!�� -�=ȇT��C*�� R1�>�B��C*J�!T{��(5�TP�A>���RA��AsH�̞�C*�\�T��9>���RA�����uuH��rH��n���!����TNxH�����tz�C*y�rH�uR�ǿ��7T��^��s�:����o�<�<<��J7z�<t�Z��ׇ�oo���'���;j~�>��_���eu�O��%���;f����ד4/��A{�@= ��zy��ڃ��_�_��G��gY����p��S/��Q{�@=NV�<{G���rɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr�:��j�%��3K�� �Yr�:��jҙ%��3Kh��Yr�:��h�%��3K�� �Yr�:��j�%����c�,9u�Yb��̒Sי%V{�,9u�Yb��̒Q��%R� �Yr�:��j�%��3K�� �Yr�:��j�%����c�,9u�Yb��̒Sי%V{��,9�rf�͚�3K�̙%D� �Yr�:��j�%��3K�� �Yr�:��j�%����c�,9u�Yb��̒Sי%V{�,9u�Yb��̒Rsf �1�g����,�ڃxfɩ���=�g����,�ڃxfI�9����3KN]g�X�A:���˙%6k�,9s�Yb��̒Rsf �1�g����,�ڃxfɩ���=�g����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<��ԜYBu�%��3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒3��Yb�v��,9�rf�Ś�3K�\g��A<�d�}f��9�g����,�ڃxfɩ���=�g����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<��ԜYBu�%��3K�� �Yr�:��j�%��3K�� �YR�:��f�љ%G^�,1Ysxfə���=�g����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<��ԜYBu�%��3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒C/g�ج9:���uf ɞ�3K�\g��A<���uf���3KN]g�X�A<��ԜYBu�%��3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒Sי%V{�,u�Y"u�%��3K�� �Yr�:��jҙ%�^�,�YsxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<��ԜYBu�%��3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒Sי%V{�,)5g�P�xfɩ���=Hg�z9��f��%g�3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒Sי%V{�,)5g�P�xfɩ���=�g����,�ڃxfɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr����5�g����,1ڃxfɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3KF�g�H��xfɩ���=�g����,�ڃxfɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3K -]g���9:���˙%&k�,9s�Yb���2g��=�?SW��,�{�����������O�>~~���v���������>^T���L-�֩�w�?�����_�����~��>t�_.��U�����z��w�;�mw�y��q������S��;Q�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ǝF�q'�c��N�&�D�9�Tj�NT{��N�&�D�9�4�;I�w*5q'�=�q�BW܉f�qܩ�ĝ�� ǝF�q'�c��N�&�D�9�Tj�NT{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�;���NR� ŝʼĝ(ގaܩ�w�Xsw*3q'�=�q�P�q'�s��N�&�D�9�Tj�NT{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�; ���̞øS�+�D��8�Tf�ND{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� Ɲ -]q'�5�q�!w�sw*3q'�=�q�Rw�ڃw*5q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�)�k� ��S��;Q�A�;����ĸS�+�D��8�4�; �w*5q'�=�q�Rw�ڃw*5q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{�N���͚�S��;�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;��N4k��Ne&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃw -�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃw4q'�=�q�"W܉d�qܩ�ĝ�� ǝT'����wޖ��q��{���t'�|��r�;�3�;w��_~���������g�U���+�����Ƿ�����;��o����?�||1�=�_��||1�=�_,����:�㋕��/F��㋕��/F��㋕��/F��㋍�?���1�_��||1�=�_��||1�=�_�����h�|�1w�N���]�)�Q�A.ܕ�����]�)�Q�A.܍�wR� �JM�jr���� �JM�jr�n�]��:�pWj +�=ȇT��C*�� R1�>�B��C* +]�TЬ9>���RA����RsH��C*F݇TH�|HE�9��j�!�� +�=ȇT��C*�� R��� +�s��(5�TP�A>���RA����RsH��C*F݇TH�|HE�9��j�!�� +�=ȇT��C*�� R1h���sxHE�� +�5LJT��C*�� R9����{\���-9>�r��� �<��=�N/tH%�\���C*�������������cnV�|:���� �������t���C���1.z}x���ً|�^�����������E��YV����t~^���c��y�|=I��������٪�g�=�����5xzt�z��1x��� +���8�������d�˳w�<P/W����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<��ԜYBu�%��3K�� �Yr�:��j�%��3K�� �YR�:��f��%g�3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒Sי%V{�,u�Y"u�%��3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒C/g�ج9<��̜YBt�%��3K�� �Yr�:��j�%��3K�� �YRj�,�:�̒Sי%V{�,9u�Yb��̒Sי%V{�,)5g�P�xfɩ���=�g����,�ڃxfɩ���=�g���3K��A<���uf���3K��Yb���̒3י%F{�,)5g�P�xfɩ���=�g����,�ڃxfɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr�:��j�%��3K�� �Yr�:��j�%����c�,9���%o��̒/g�X�9<���uf���3KF�g�H��xfɩ���=�g����,�ڃxfɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr�:��j�%��3K�� �Yr�:��jҙ%��3Kh��Yr����5�g����,1ڃxfɩ���=�g���3K��A<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr�:��j�%��3K�� �Yr�:��j�%����c�,9u�Yb��̒Sי%V{��,9�rf�͚�3K�\g���9<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr�:��j�%��3K�� �Yr�:��j�%����c�,9u�Yb��̒Sי%V{�,9u�Yb��̒Q��%R� �Yr�:��j�%��3K�� �Yr����5�g���3K��A<���uf���3KN]g�X�A<���uf���3KJ͙%T� �Yr�:��j�%��3K�� �Yr�:��j�%����c�,9u�Yb��̒Sי%V{�,9u�Yb��̒Rsf �1�g����,�ڃtfɡ�3Kl��Yr�:��h�%����c�,9u�Yb��̒Sי%V{�,9u�Yb��̒Rsf �1�g����,�ڃxfɩ���=�g����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<��ԜYBuҙ%�^�,�Ysxfə���=�g����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A<�d�}f��9�g����,�ڃxfɩ���=�g����,�ڃxfI�9����3KN]g�X�A<���uf���3KN]g�X�A:���uf ͞�3K���Yb���̒3י%F{�,�!sf����3u���љ%x�z>�><��Q�����/���B��ѷ��ϵϟ��<�CK�uj�?\����/����O�������K�~�>����]�Nx�w�q���E �D�9�Tj�NT{��N�&�D�9�4�;I�w*5q'�=�q�Rw�ڃw*5q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jbܩ�w�Ysw*3q'�=�q�Qw�I��S��;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1Hq�2/q'��cw*pŝ(�ǝ�L܉hr�)�k� ��S��;Q�A�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{�N�&�$��0�T�;��9�;�����S��;Q�A�;���NR� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�BW܉f�a�i�ĝD�ǝ�L܉hrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃw +�w�:9�Tj�NT{��N�&�D�1�T�;Ѭ9�;���NB� ǝJM܉jrܩ�ĝ�� ǝJM܉jr�i�w�:9�Tj�NT{��N�&�D�9�Tj�NT{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;����ĸS�+�D��8�Tf�ND{��N��1�q�Rw�ڃw*5q'�=�q�Rw�ڃwuǝ��A�;�����S��;Q�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ǝF�q'�c�N���͚�S��;�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ǝB�Ɲ��A�;�����S��;Q�A�;�����Ө;�$urܩ�ĝ�� ǝJM܉jrܩ�ĝ�� ƝM�If�aܩ�w"Ysw*3q'�=�q'Չ"����ĝ�%�q�y�#�<݉;_.ߎ�q�z&q�c������������?���g?�c��������v��v��bz�||��;|����/F��㋕��/F��㋅z��bP� |�R��Ũ� |�R��Ũ� |�R��Ũ� |�Q���:�㋕��/F��㋕��/F����>�͚�/6�.� �\�+5�;�=ȅ�RS��ڃ\�+5�;�=ȅ�Qw�N���]�)�Q�A.ܕ�����]�)�Q�A.܍�wR� �JM�jr���� �JM�jr�n�]��:�pWj +wT{w���͚��]�)��A.܍�wR� �JM�jr���� �JM�jr�n�]��:�pWj wT{�w��pG��pWj -wT{�w���1ȅ�RS��ڃX�+t�h���L�hr�n�]��:�pWj +wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA*ܕy)�Q���]��pG��pWf +wD{�w�^wP� �JM�jr���� �JM�jr�n�]��:�pWj wT{�w��pG��pWj -wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݨ�p'uR��K���� -\�;�5Dž�2S�#ڃ\��Z��:�pWj +wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃX�4�;�=���"W�d�q���� �JM�jr�n�]��:�pWj wT{�w��pG��pWj -wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݠ)���9,�� -w$k�we�pG��pWj -wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݨ�p'ur���� �JM�jb��U��YsX�2�;�=Dž�2S�#ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݨ�p'ur���� �JM�jr���� �B���A.ܕ�����]�)�Q�A,�� -w4k�wc��1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݨ�p'ur���� �JM�jr���� �F݅;�c�w��pG��pW�*�Ѭ9.ܕ�����ݨ�p'ur���� �JM�jr���� �F݅;�c�w��pG��pWj -wT{�w��pG��p7�.�I�\�+5�;�=ȅ�RS��ڃ\�+5�;�=ȅ�Qw�N���]��pG��pWf -wD{�w��pG��p7�.�I�\�+5�;�=ȅ�RS��ڃ\�+5�;�=ȅ�P��;�s�w��pG��pWj -wT{�w��pG��p7�.�I�\�+5�;�=ȅ�RS��ڃ\�+5�;�=���AS���sX�+r�H���L�hr�N��(��=.��mN���p?~�xz{>������������?�>�<~^T���̵p��ӟN�����?���~|x~���W`��������'�^pg�7/x�A|ȠQ�AΠ����ڨ;�&ur��dШ� g�JM�jb�ЕA�Ys�AsgЄ�AΠ����Z�ɠQ�AΠ����ڨ;�&ur��dШ� g�JM�jr��dШ� g�F�4�c�3h�&�F�9�Vj2hT{�3h�&�F�9�6�ΠI��A+54�=��BW�f�q��dЈ� g�F�4�c�3h�&�F�9�Vj2hT{�3h�&�F�9�6�ΠI��A+54�=��R�A�ڃ�A+54�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� e�ʼd�(ގa���A�Xs�A+34�=��P�4�s�3h�&�F�9�Vj2hT{�3h�&�F�9�6�ΠI��A+54�=��R�A�ڃ�A+54�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�A̠ ��̞�Z�+�F��8�Vf2hD{�3h�&�F�9�6�ΠI��A+54�=��R�A�ڃ�A+54�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� g�JM�jr��dШ� f� -]4�5��!�A�s�A+34�=��R�A�ڃ�A+54�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� g�JM�jr��dШ� g�JM�jr-�k ��Z�ɠQ�AΠ����Z�+�F��8�6�Π ��A+54�=��R�A�ڃ�A+54�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� g�JM�jr��dШ� g�JM�jrmԝA�:9�Vj2hT{3h��͚�Z�ɠ�AΠ��3hR� g�JM�jr��dШ� g�JM�jrmԝA�:9�Vj2hT{�3h�&�F�9�Vj2hT{�3h����1��R�A�ڃ�A+54�=��R�A�ڃ�AugФ�A̠�2h4k�3he&�F�9�Vj2hT{�3h����1��R�A�ڃ�A+54�=��R�A�ڃ�A��A�:9�Vj2hT{�3h�&�F�9�Vj2hT{�3h����1��R�A�ڃ�A+54�=��R�A�ڃ�A44�=��"W�d�q��dЈ� g��Q�ʠ�=.�ms|�A������;�}|:��|_I������O?�����˗��o��������c����O���|���Q������q��u���/i'�5�a�!�uYs\u2Q'�5�I� w� d�q�i��D�ǜ�L�Id�q�iȄ�D�g���'�=� �!�pYsp2�&�5���!oYs�n -r��@�w��L�Id�a�i��lx;�Ŧl�Xs�k -rך@����L�Id�q�i�t�D�W��L�Id�q�)�]h�s�g2y&�5�q�!�fYs\f2a&�5�Y� w� d�q�i�$�D���L�Id�q�i�ĘD�����%&�=G�/&q7Sam5��ݎq�i��$����k}yL�9n/ ���Ț��Ґ�.��9�. ��Ț��R����縷4drK"k�cKC��$�渴4dBK"k�3KA��Ȟ��ҐI,��9, ���Ț�Ґ�+��9L+����î�x+�$�v��J��$�渨4d�J"k�sJA�Ȟ�ҐI)��9) ���Ț�Ґ�(��9N(�J {��IC&�$��8�4d�I"k��IC&�$��8��&��9n& �d�Ț�`Ґ�%��9�%��bIo�0�^JI�j�;I&�$��8�4dI"k�IC&�$��8��#��9n# �4�Ț�0Ґ�"��9�" �(�Ț�$R����縇4drH"k�cHC��$�渄4dBH"k�3��䵂<&�7��LId�q�i��D�֏F\�#��c�> -p�� �w��L�Hd�q�h�4�D���L�Hd�q�(�];�s�:2�#�5ǡ�!�9Ys\92�#�5lj� w�d�q�h��D�Ǎ�L�Hd�q�hȄ�D�g���U#�=�M�!�4Ys4q��ގq�h�Č$�����%#�=��!�1Ys12 #�5��!0Ys�/ -r@����L�Hd�q�h�t�D�W��L�Hd�q�(�],�s�+2�"�5DZ�!�*Ys\*2�"�5Ǚ� w�d�a�hĕ(x;Ɓ��'�Xs\'2q"�5�i� w�d�q�h�d�D�G��L�Hd�q�h��D����k�xL�9n ��Ț�ѐ���9� ��Ț�Q��@��?4d�C"k��CC�=$��<4d�C"k�C!�:�ư94�Jɻ��Ѐ� I�9� ���!�ĥ5�)��S�×���Ni����t�s S��LZ�����?�~������������~����������/���翯}��r}��?�o��9j��.o���S��/- �=�5�R��ڃu���An��(��,P��Q�A.��4��8Ш�$ur����� '�JM#�jr%��d��� ��Fݥ �c�[A�&D�1T��Ѭ9.��d��hШ�$ur7�Ԅ��� ��JM;�jr=��䃨� �F�!�c�B�&"D�9#Tj:BT{�KB�&%D�9&4� I��*5A!�=�I�R��ڃ\*5Y!�=�a�QwYH���P�����1���Bk�Ce&1D�92�2urg�Ԅ��� ��JMk�jrm��䆨� �F��!�c��C�&:D�9;Tj�CT{��C�&=D�9>4�I��*5"�=� �R� �ڃ\!*5"�=�!�AS"��s�"*rňH���L��hr���$��� G�F�U"�c��D�&LD�9MTj�DT{��D�&OD�9P4�.I��(*5�"�=ș�R�)�ڃ\**5�"�=ȱ�Qw�H��^Q� Q�AN��f��jQ�+[D��0\4d�E"{��Ee&^D�9_Tj�ET{�F�&aD�9b4�I��1*5!#�=�)�R�2�ڃ\3*59#�=�A�Qw�H��Q��Q�A������Q�IQ�A��z�A���7*5�#�=ȉ�R�8�ڃX9*te�h����ܥ#�c�[G�&vD�9wTjzGT{��G�&yD�9z4�I��=*5�#�=��R�>�ڃ\?*5�#�=��QwI��R�� Q�A� ����R�I!Q�A�!��kHR� ��JM�jb���D�Ys\E*3Y$�=�a�QwI��6R��#Q�A�#��>��BR�I$Q�A�$��+IR� w�JM(�jr*�Դ��� גJM.�jr0i�]L�:��Tj�IT{��I���D���Tj�IT{��I��z��1���BW@�f�qB��4��� W�JMF�jrHi�]R�:��TjbJT{�sJ���D���Tj�JT{��J�^�JP� w�JMX�jrZ�Դ��� וJM^�jr`i�]X�:��Tj"KT{�3K���D���TjRKT{cK���$�簷T� -.��9N.������:A�]�{\������0�<~�xz{>���x|~zx��}�tzx�����r=�g���i�����~����/?��5��/��ĻR�}����1�����U�;��/�c�;&��cB��cR��Ь9�� ��ɨ�c"urǤ�tL�� wLJMDŽjrǤ�tL�� wLF��c�;&��cB��cRj:&T{�;&��cB��c2��H��1)5�=��R�1�ڃ�1)5�=��Qw�D���I��� ��1��:&k�;&e�cB��c�curǤ�tL�� wLJMDŽjrǤ�tL�� wLF��c�;&��cB��cRj:&T{�;&��cB��c2��H��1)5�=��R�1�ڃ�1)5�=��A�1��s�1)ruLH�wL�LDŽhrǤ�tL�� wLF��c�;&��cB��cRj:&T{�;&��cB��c2��H��1)5�=��R�1�ڃ�1)5�=��Qw�D��I��P�A�� �ĎI��cB��c2d:&"{�;&e�cB��cRj:&T{�;&��cB��c2��H��1)5�=��R�1�ڃ�1)5�=��Qw�D��I��P�A�� ��I��P�Az�@���1)5�=��R�1�ڃ�1)tuLh�wL���c�;&��cB��cRj:&T{�;&��cB��c2��H��1)5�=��R�1�ڃ�1)5�=��Qw�D��I��P�A�� ��I��P�A�;&R� wLJMDŽjbǤ��1�Ys�1)3�=��Qw�D��I��P�A�� ��I��P�A�;&R� wLJMDŽjrǤ�tL�� wLJMDŽjr�d��1�:�cRj:&T{�;&��cB��cRj:&T{�;&��1��BWDŽf�qǤ�tL�� wLJMDŽjr�d��1�:�cRj:&T{�;&��cB��cRj:&T{�;&�^;&P� wLJMDŽjrǤ�tL�� wLJMDŽjr�d��1�:�cRj:&T{�;&��cB��cRj:&T{;&��c"��cR�ꘐ�9�� ����Q�ǥc����;���Ӊ;����מSǔg�����������r~��?��L_���������3�o�ɇ��N翉��5>���˳������uN]��j���9u}�=�����qx�� ~�R�qx��A�8<����c����>��ď�s��8<V{?O��8<T� ~�S���ڃ�qxN]��j���9ue��� f�JMF��Čԩ+#e�)#u�%#e��0#u��H�A�H����1��SWF�jbF�ԕ��ڃ��:ue��� f�JMF��Čԩ+#e�1#u��HY�A�H��2RV{3R�&#EubF�ԕ��ڃ��:ue��� f�N])�=��R���:!#u������1�Hx�HY�9�H��2RF{3R��9��SWF�jbF�ԕ��ڃ��:ue��� f�JMF��Čԩ+#e�1#u��HY�A�H��2RV{3R�&#EubF�ԕ��ڃ��:ue��� f�N])�=H�BWF�f�QF��KF�d�aF�̕�2ڃ��:ue��� f�JMF��Čԩ+#e�1#u��HY�A�H��2RV{3R�&#EubF�ԕ��ڃ��:ue��� f�N])�=��R���:1#u��HY�A�H��2RV{�2R�^2R6k�2RE��ɞÌԙ+#e�1#u��HY�A�H��2RV{3R�&#EubF�ԕ��ڃ��:ue��� f�N])�=��R���:1#u��HY�A�H��2RV{3R�����ČԨ;#%ubF�ԕ��ڃ��:ue��� e��d�l�f��LF��Čԩ+#e�1#u��HY�A�H��2RV{3R�&#EubF�ԕ��ڃ��:ue��� f�N])�=��R���:1#u��HY�A�H��2RV{3R�����ČT��HQ���:ue��� e��d�l�f��\)�=��R���:1#u��HY�A�H��2RV{3R�����ČT��HQ���:ue��� f�N])�=��SWF�jbF��d���A�H��2RV{3R�����Čԩ+#e�1#Uj2RT� e��d�l�f��\)�=��SWF�jbF��d���A�H��2RV{3R�����Čԩ+#e�1#5��HI����:ue��� f�N])�=��SWF�jbF��d���A�H��2RV{3R�����Čԩ+#e�)#U��H��9�Hy�H��9�H��2RF{3R("MF�����j63Rx�x>��ӝ��;����z��}����t=�g��~͇���_~���_���?��9�{���/\����/_OG9���]w�x�ǹ�������Ѩ;w$ur��䎨� �JM�jr��䎨� �Fݹ#�c�sG�&wD�9wTjrGT{�sG�&wD�9w4��I��;*5�#�=���BW�f�q��䎈� �Fݹ#�c�sG�&wD�9wTjrGT{�sG�&wD�9w4��I��;*5�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�Qw�H���Q��Q�A�������Q��Q�A���sGR� �ʼ�(ގa���;�Xs�;*3�#�=ȹ�P��#�s�sG�&wD�9wTjrGT{�sG�&wD�9w4��I��;*5�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�Qw�H���Q��Q�A�������Q��Q�A� �ܑ̞��Q�+wD��8wTfrGD{�sG�&wD�9w4��I��;*5�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�Qw�H���Q��Q�A�������Q��Q�A���sGR� �JM�jr��䎨� � -]�#�5���!�;�s�;*3�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�Qw�H���Q��Q�A�������Q��Q�A���sGR� �JM�jr��䎨� �JM�jr�(�k����Q��Q�A�������Q�+wD��8w4�� ��;*5�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�Qw�H���Q��Q�A�������Q��Q�A���sGR� �JM�jr��䎨� �JM�jr�hԝ;�:9wTjrGT{sG���͚��Q���A���sGR� �JM�jr��䎨� �JM�jr�hԝ;�:9wTjrGT{�sG�&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�;u玤�A��rG4k�sGe&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�; -��;�:9wTjrGT{�sG�&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�;4�#�=���"W�d�q��䎈� �T����;�ǹ��{�?5����_����S3�3��������m��?\�ǏAڷ˯ٺr�NOO/G��n��uw�v�Ǎ���F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM��QC��QSf5D{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5e^5oǰQS�j�P�9nԔ�F ��FM��F �9ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 6jM�Ff�a���ը!Ysܨ)3��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{5��F ͚�F͐iԈ�9nԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q�Qur���4j�� 7jJM��jb���ը�Ysܨs7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=���BW��f�q���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԌ�5R� 6j -]��5Ǎ�2Ө!ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԄzm�@��ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�Al��F�̞�FM��QC��QSf5D{����J5j��F�6;nԎ���ب}}{x��ȍ�z�ڨ=�F�?����m�ڕ��k��uw�v�Ǎ���F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM��QC��QSf5D{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5e^5oǰQS�j�P�9nԔ�F ��FM��F �9ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 6jM�Ff�a���ը!Ysܨ)3��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{5��F ͚�F͐iԈ�9nԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q�Qur���4j�� 7jJM��jb���ը�Ysܨs7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=���BW��f�q���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԌ�5R� 6j -]��5Ǎ�2Ө!ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԄzm�@��ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�Al��F�̞�FM��QC��QSf5D{����J5j��F�6{=lԎ�c4j�w���w=N�.�\��U���?�$���?@���j}ҧ=�iO/����y��U?�zৗ�����o� yy�ɚ; W5g�TxD�7x�� �=��!��Ys\�2��5��!S�Ys�� rgw@�Gw�LsGd�aqg��x;ƹ�SۑXs�� r�v@��v�LgGd�qeg�DvD�'v�LaGd�q_'ȝ��s�2m�5�e�!�Ys��2U�5�M� wRd�qPg��tD��t�LLGd�qJgȔtD�wt���=G�/ q7SX�mt�ݎq>g��s$��s��k:wL�9��n�Ț�jΐ�戬9N��b�Ț�^N�;���8�3dZ9"k�K9C&�#��8�3d*9"k�9A�DȞ�@ΐ�㈬9���8�Ț�4ΐ)㈬9�℘,��(�x��#�v��8&�#��8�3dj8"k�[8A�Ȟ�ΐ����9����Ț�ΐ)���9����7 {��7C�}#��|3d�7"k��7C�z#��y�Nހ�9��ލȚ��͐�݈�9L�J7oǰs^27�j�#7�q#��p3d7"k��6C�n#��m�Nۀ�9����Ț�͐�ڈ�9N����Ț�M�;g��8f3dZ6"k�K6C&d#��8c3d*6"k����5a;&�l�L�Fd�q�f��kD��kF\���cܭ pgk �Gk�L�Fd�q�f�kD��j�L�Fd�q�&ȝ��s�2��5Ǖ�!�Ys��2��5�}� w�d�q�fȴiD��i�L�Fd�q�f�TiD�7i��I�=�A�!ӣYsX�q�hގq�f��h$�wh���=��!ӠYs\�2�5���!S�Ysܞ r�g@��g�LwFd�quf�DgD�'g�LqFd�qo&ȝ��s�2��5ǥ�!�Ys��2��5Ǎ� wbd�a`f�x;�u���Xs��2e�5�]� wVd�qTf�4eD�e�LPFd�qNf��dD��d��kJvL�9����Ț�̐�Ȉ�9N����Ț�~L�;��83d�1"k��1C&#��83d�1"k�1!&��03���Ȼ�Z̀��H�9N�k'U��K\B��,���;|��������)�?���������y�����g��%{[��?������_�gb�OOo��?�rݞ��×/O?P�����7~�����}�r�Wn��Ƿ�4���K!Ys����ד4/��A{�@}}x{����;j~�~= �5�Q׳�����Ux��g�^������z�2��zy��ڃ�����˚�zy��ڃ��/������6�z��1x�>=��Z����ԗ��o���;j�����������?W���_���eu��/��/tR���;j��/��OJ+�������Ѫ�g�=�����X;��(�=w@��'� g={����5�b�˳w�<P_����˳w��\};=<��o8�YV�������U/��Q{�@}yx|���ֳw�<P�_����z��ڃ��W_�_�g��YT���z�2<�H��������T/��Q{�@=NV�<{G���������}�˳�����;�zy�ڃ����ժ�g�=x��>�����1k�s���p����YF���z��/V�<{G����5��(�˳w�<P�_��'�^���������I��YV����.�(5�qP�A�����A��<�Rs��9F�'rH�|$G����j���P�=ȧr��[9�� _�1�>�C��9J��T{o�(t�A���l�2s7���9FݧsH�|<G����j�����=�'t��:�� _�1�>�C��C:J�%T{�o�(5�tP�A>�����A����Q�IR� �Qj��ڃ|WG�9��j�i���=��u����:���2/vP��; -\GvP�9>�����A��ҎP��v@��|lG����j�����=�'w���;�� _�1�>�C���;J��T{�o�(5�wP�A>�����A���Q� R� �Qj��ڃ|�G�9ăj�)���=��x�s<d��Q�ȃd��Me�(�=�gy���<�� _�1�>�C���<J�uT{���(5zP�A>ѣ���A��J�Q��R� �Qj.��ڃ|�G�9փj���^�=�{��O��:�h�Rs���=J��T{O�(t��A���z�!s��Ȟ�>��D{�o�(5G|P�A>����A����Q�)R� �Qj���ڃ|�G�9�j�I���=�W}�����:���Rs����>J�qT{���(5�}P�A��#��P� �Qj���ڃ|�G�9�j���[?h�_�1�>�C��?J��T{�o�(5GP�A>�����A���Q��R� �Qj���ڃ|�G�9��j� ���=�W������:��Rs ��[@J�1 T{��)5��P�A�d�}��1�G����@�� �R�:�f��i e�6�=�ׁ����:�@�Rs!��AJ͑ T{��)5w�P�A�d�}*��1�ǂ��kA�� �Rj�ڃ|2H���j�� ��A��A>��\B��v�Rs<���AJ�� T{�/u�"u�!��+Bh��Rf !ڃ|JH��%�j�5!��sB��A>(��\B����RsT��BJ�]!T{�/ �zZ�9�Dž���B�� �Rj�ڃ|bH��1�j�!��3C��A>4��\B��Rsl��sCJͽ!T{/4'���9<:��uuɚ�C���!D{�O��Q���=.LJn��_:~�q~����j��ox~h=r9?t���������O���%���gX��/���G��� x���y��3@_��!ڃ|H�9�j� ��3@��A>�ԜB���Rs��3@J� T{���u�"u� ���=�g���3@�� �Rj���ڃ|Ȩ��c���)5g�P�A>�ԜB���Rs��3@� 2{���)3g��A>�ԜB���Rs��3@F�g�H�|H�9�j� ���=�g���3@�� ����s���)5g�P�A>�ԜB���Rs��3@F�g�H�|H�9�j� ���=�g�����Ys|Ș��c���)5g�P�A>�ԜB���Rs��3@F�g�H�|H�9�j� ���=�g���3@�� �2�>D��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃxH���5�g���3@�� �2�>D��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A>d�}��1Hg��y9����R�:�b�� e��=�g��z=��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A<dМ"����"� $k���)3g��A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A>d�}��1�g���3@�� �Rj���ڃxH���5�g��3@D��Rf��!ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A>d�}��1�g���3@�� �Rj���ڃ|H�9�j� �^���:��Rs��3@J� T{��)t�B����1� B� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A>d�}��1�g���3@�� �Rj���ڃ|H�9�j� ��3@��A>�ԜB���B� 4k���)3g��A>d�}��1�g���3@�� �Rj���ڃ|H�9�j� ��3@��A>�ԜB���Rs��3@J� T{���u�"u� ���=�g���3@�� �Rj���ڃ|Ȩ��c��)t�B����2s��3@J� T{���u�"u� ���=�g���3@�� �Rj���ڃ|H��3@��A>�ԜB���Rs��3@J� T{���u�"u� ���=�g���3@�� �Rj���ڃxȠ9Df�� E�3@H��Rf��!ڃ|����:��q9t{u����{�3@'>t�Ʒ�<�Yg�N�����_~�ۯ�����?��?/���������o��19<���yu�?�H~{:���V���B�y�� -��@�H�� +wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A,�� +w4kwC�p'��pWf +wD{�w��pG��pWj +wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����]����9ȅ�RS��ڃ\�+5�;�=���BW�f�q�n�]�:�pWj +wT{�w��pG��pWj +wT{�w���1ȅ�RS��ڃ\�+5�;�=ȅ�RS��ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݨ�p'ur���� � +]�;�5Dž�2S�#ڃ\�uA.ܕ�����]�)�Q�A.ܕ�����ݨ�p'ur���� �JM�jr���� �F݅;�c�w��pG��pWj +wT{�w��pG��p7�.�I�X�+t�h���L�hr���� �F݅;�c�w��pG��pWj +wT{�w��pG��p�pur���� �JM�jr���� �F݅;�c�w��pG��pWj +wT{�w��pG��p7h +w2{wE��ɚ��]�)��A.�)��;�ǥp��ɏ����������)ܟ����<|��Ǘ�ϋ��P���������t������~����-��oqzxz�z��;�����g�_2hT{�3h�&�F�9�6�ΠI��A+54�=��R�A�ڃ�A+te�h�g���4�c�3h�&�F�9�Vj2hT{�3h�&�F�9�6�ΠI��A+54�=��R�A�ڃ�A+54�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� g�JM�jb�ЕA�Ys�A+34�=��QwM��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� g�JM�jr��dШ� g�JM�jrmԝA�:9�Vj2hT{�3h�&�F�9�Vj2hT{�3h����1H�2/4��c�A+pe�(�g��L�hr-�k ��Z�ɠQ�AΠ����Z�ɠQ�AΠ��3hR� g�JM�jr��dШ� g�JM�jrmԝA�:9�Vj2hT{�3h�&�F�9�Vj2hT{3h�&�&��0�V�ʠ��9Π����Z�ɠQ�AΠ��3hR� g�JM�jr��dШ� g�JM�jrmԝA�:9�Vj2hT{�3h�&�F�9�Vj2hT{�3h����1��R�A�ڃ�A+54�=��BW�f�am�d�D�g��L�hr��dШ� g�JM�jrmԝA�:9�Vj2hT{�3h�&�F�9�Vj2hT{�3h����1��R�A�ڃ�A+54�=��R�A�ڃ�A��A�:9�Vj2hT{�3h�&�F�1�V�ʠѬ9Π��3hB� g�JM�jr��dШ� g�JM�jrmԝA�:9�Vj2hT{�3h�&�F�9�Vj2hT{�3h����1��R�A�ڃ�A+54�=��R�A�ڃ�AugФ�AΠ����Z�+�F��8�Vf2hD{�3h����1��R�A�ڃ�A+54�=��R�A�ڃ�AugФ�AΠ����Z�ɠQ�AΠ����ڨ;�&ur��dШ� g�JM�jr��dШ� g�F�4�c3h��͚�Z�ɠ�AΠ����ڨ;�&ur��dШ� g�JM�jr��dШ� g�B�fР�AΠ����Z�ɠQ�AΠ����ڨ;�&ur��dШ� g�JM�jr��dШ� f�MMf�a�ȕA#Ys�A+34�=��qԫ2h|�K}��f���1>����}��N�9ߗGA?��������t����������������c�������]�O>���(��u��������m燗���Ț�Ӑ�:��9�: ���Ț�S������4drN"k�cNC��$���4dBN"k�3NA�Ȟ�ӐI8��98 �~�Ț�zӐ�7��9N7��M {��MC&�$��0�4�j6 ��bӀ 6I�9�5�kM {�[MC&�$��8�4d:M"k�+MC&�$��8��.4��9�3 �<�Ț�8Ӑi3��9.3 �0�Ț�,S������4d�L"k��LC��$���4dbL"k�SLA�Ȟ�Ӏ����)�0��L�nǸ�4`Lk����䵾<&����LzId�qxi�t�D�W��LtId�qr)�]\�s�[2�%�5DZ�!�ZYs\Z2�%�5Ǚ� we d�qci�$�D���L_Id�q]i�ĕD���BLY `�aWi��U�w;�Q��T�Xs\T2A%�5�9� wM d�qKiȤ�D����LGId�qEi�D�D�'���%�=���!�OYsO2�$�5��!NYs�M +rW�@�7��L2Id�q0i���D�֒F\�$��c�J +/�$x5Ɲ��I�XsI2�$�5Dž�!HYs�G +rב@����LId�qi�t�D�W��LId�q)�]D�s�C29$�5�1�!�BYs\B2!$�5��}�ZA�c�HC&�$��8�4d�G"k�G#�����1N��G{��GC&{$��8z4d�G"k��GC&x$��8w���9n �ԑȚ��ѐ���9� �ȑȚ��Q��p��o4d�F"k��FC�m$��l4d�F"k��FA�Ȟ�ѐI��9��zFoǸf4`bFk�SFA�Ȟ�ѐ���9� ���Ț�ѐ ��9���E {��EC&]$��8\4d�E"k��EC&Z$��8Y�.��9� �\�Ț�Xѐi��9. �P�Ț�LQ��R��Q4�J ��@р�I�9� �8�Ț�4Q��L��K4d�D"k��DC�I$��H4d�D"k�s���F<&����L�Hd�q�h�t�D�W��L�Hd�q�(�] �s�2�!�5��!�Ys\2�!�5�١SXc�o%��ݎqph��$�׆�ʉؐ^��ޔ}ǩ��K���t�4||~x:�����z&���j ��?�~�����ӗ��r���_������?.��_��ß>)�_�����>�p��_�=L����8N?����� ׀JM�jrh�]�:� Tj�@T{��@��D��Tj�@T{��@��:��1�}�R�ڃ�*5� �=ȕ�R� �ڃ +u����An��X��\P��D��Tf�AD{��A��j��1�ݠR�ڃ�*5� �=���R��ڃu���An�����P��Q�A. �����Ш�&$urO����� '�JMS�jrU��d��� ��F�e!�c��Be^�Bo�0/T��Q�9.������P����9ȝ�R�ڃ�*5�!�=ȵ�R��ڃu���An������P��Q�A.������Ш�>$ur����� '�JM��jr���d��� ��M�Hf�a���#"Ys�#*3="�=�E�R�$�ڃ%uW���A���0��4Q�iQ�A���<��@Ѩ�P$ur���D��� g�JM��jr��Ԥ��� NJFݵ"�c�{E�&XD�9YTj�ET{�E��l͚�pѐ)��9n��x��|Q��Q�A.�����Ѩ�b$urǨԄ��� ��JMˈjrͨ�䌨� �F�E#�c��F�&jD�9kTj�FT{��F�&mD�9n�nurߨ���� '�JM�jb�Е9�Ys:s����An������Q��Q�A.������Ѩ�z$ur��Ԅ��� ��JM��jr���䏨� �F�$�c�H�&�D�9�Tj:HT{�KH�&�D�9�4�!I��C*5A$�=�I�BW�f�q��d��� ��F�e$�c��H�&�D�9�Tj�HT{�I�&�D�9�4�$I��I*5�$�=ȩ�R�J�ڃ\K*5�$�=���Qw1I��fR��&Q�A�&��n��rR�I'Q�A�'���IR� �� +]%�5� �2�P"ڃ\Q*5%�=�!�QwII��R��)Q�A�)�����R�I*Q�A�*�z�*A���U*5a%�=�i�R�V�ڃ\W*5y%�=ȁ�QwaI���R��,Q�A�,������R�I-Q�A�- �ڒ̞��R�+�D��8�Tf�KD{��K�Ev��q�.o3�����=�������w>��������ç���o����<s-/O������ÿ�_���ߨ�|~��"ޕ���x���騱����n^��c��"�1�:�cRj:&T{;&��� ͚�I���A�;&R� wLJMDŽjrǤ�tL�� wLJMDŽjr�d��1�:�cRj:&T{�;&��cB��cRj:&T{�;&��1��R�1�ڃ�1)5�=��R�1�ڃ�1uwL��Aꘔy�P�ÎI��cB��cRf:&D{�;&�^;&P� wLJMDŽjrǤ�tL�� wLJMDŽjr�d��1�:�cRj:&T{�;&��cB��cRj:&T{�;&��1��R�1�ڃ�1)5�=��R�1�ڃ�14�=��"WDŽd�qǤ�tL�� wLJMDŽjr�d��1�:�cRj:&T{�;&��cB��cRj:&T{�;&��1��R�1�ڃ�1)5�=��R�1�ڃ�1uwL��A�� ��I��P�A��:&4k;&C�c"��cRf:&D{�;&��cB��cRj:&T{�;&��1��R�1�ڃ�1)5�=��R�1�ڃ�1uwL��A�� ��I��P�A�� ��I� �9��R�1�ڃ�1)5�=��BWDŽf�q�d��1:�cRj:&T{�;&��cB��cRj:&T{�;&��1��R�1�ڃ�1)5�=��R�1�ڃ�1uwL��A�� ��I��P�A�� ��ɨ�c"urǤ�tL�� vL +]�5��2�1!ڃ�1uwL��A�� ��I��P�A�� ��ɨ�c"urǤ�tL�� wLJMDŽjrǤ�tL�� wLF��c�;&��cB��cRj:&T{�;&��cB��c2��H��1)tuLh�wL�LDŽhrǤ�tL�� wLF��c�;&��cB��cRj:&T{�;&��cB��c�curǤ�tL�� wLJMDŽjrǤ�tL�� wLF��c�;&��cB��cRj:&T{�;&��cB��c2h:&2{;&E�� ɚ�I���A[�1�{\:��h�c:~��1��c:�]���:�<s�W����' +�N/�y�ݍ�I����(`:�>��ϑ^q=s���|X���t���O^�k�<��<P/�^���qx�� ~�S���ڃ�qxN]��j���)5���ď�s��8<V{?ϩ���X�A�8<����c����Cu���9u}�=�����qx�� ~�SWF�jbF��d���A�H��2RV{�2R�^2R6k3Rg����ČT��HQ���:ue��� f�N])�=��SWF�jbF��d���A�H��2RV{3R�����Čԩ+#e�1#Uj2RT� f�N])�=��SWF�jbF�ԕ��ڃ��*5)�c2Rg~�HY���ԁ���ŚÌԙ+#e�1#5��HI����:ue��� f�N])�=��SWF�jbF��d���A�H��2RV{3R�����Čԩ+#e�1#Uj2RT� f�N])�=��SWF�jbF�ԕ��ڃ��*te�h�e���d�L�f��\)�=��SWF�jbF��d���A�H��2RV{3R�����Čԩ+#e�1#Uj2RT� f�N])�=��SWF�jbF�ԕ��ڃ��*5)�c3R�����Čԩ+#e�)#u�%#e��(#U��H��9�H��2RF{3R�����Čԩ+#e�1#Uj2RT� f�N])�=��SWF�jbF�ԕ��ڃ��*5)�c3R�����Čԩ+#e�1#u��HY�A�H��3RR� f�N])�=��SWF�jRF��KF�f�aF��d���A�H��2RV{3R�����Čԩ+#e�1#Uj2RT� f�N])�=��SWF�jbF�ԕ��ڃ��*5)�c3R�����Čԩ+#e�1#u��HY�A�H����1��SWF�jRF��KF�f�aF�̕�2ڃ��*5)�c3R�����Čԩ+#e�1#u��HY�A�H����1��SWF�jbF�ԕ��ڃ��:ue��� f�JMF��Čԩ+#e�1#u��HY�A�H��2RV{3R�&#EuRF��KF�f�aF�̕�2ڃ��:ue��� f�JMF��Čԩ+#e�1#u��HY�A�H��2RV{3R��9��SWF�jbF�ԕ��ڃ��:ue��� f�JMF��Čԩ+#e�1#u��HY�A�H��2RV{�2R���͞��ԑ���ɚÌԙ+#e�1#�"�d��ߟ�f��QF +��Oϧ��{��qx���P�o�����<�����L2ү�0�?�姟������Ϙ��������j}�����t�����u�7�z�;~|�Q�A���sGR� �JM�jr��䎨� �JM�jr�hԝ;�:9wTjrGT{�sG�&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*t�h���L�hr�hԝ;�:9wTjrGT{�sG�&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�;u玤�A�������Q��Q�A�������Ѩ;w$uR��K���� +\�#�5ǹ�2�;"ڃ�; +��;�:9wTjrGT{�sG�&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�;u玤�A�������Q��Q�A�������Ѡ���9��rG$k�sGe&wD�9wTjrGT{�sG��ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�;u玤�A�������Q��Q�A�������Ѩ;w$ur��䎨� �JM�jb�Е;�Ys�;2�#�=ǹ�2�;"ڃ�;*5�#�=ȹ�R�;�ڃ�;u玤�A�������Q��Q�A�������Ѩ;w$ur��䎨� �JM�jr��䎨� �B�掠�A�������Q��Q�A��rG4k�sGc�ܑ�1ȹ�R�;�ڃ�;*5�#�=ȹ�R�;�ڃ�;u玤�A�������Q��Q�A�������Ѩ;w$ur��䎨� �JM�jr��䎨� �Fݹ#�c�sG�&wD�1wT��Ѭ9�������Ѩ;w$ur��䎨� �JM�jr��䎨� �Fݹ#�c�sG�&wD�9wTjrGT{�sG�&wD�9w4��I��;*5�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�Qw�H���Q�+wD��8wTfrGD{�sG�&wD�9w4��I��;*5�#�=ȹ�R�;�ڃ�;*5�#�=ȹ�P��#�s�sG�&wD�9wTjrGT{�sG�&wD�9w4��I��;*5�#�=ȹ�R�;�ڃ�;*5�#�=���A�;��s�;*r�H���L�hr�HŞ��=.��m[x�;��?����E�z�Y?5s=s�O+x�����o�u��<~Ҿ]�g���w:=<=���Q��ݍ���7j_5R� 7jJM��jr���4j�� 7jJM��jr�f�ݨ�:�QSj5T{5��F ͚�FM�i��AnԌ�5R� 7jJM��jr���4j�� 7jJM��jr�f�ݨ�:�QSj5T{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AjԔyi�P��FM��QC��QSf5D{�5�^5P� 7jJM��jr���4j�� 7jJM��jr�f�ݨ�:�QSj5T{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃب4��=���"W��d�q���4j�� 7jJM��jr�f�ݨ�:�QSj5T{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�Al��54k5C�Q#��QSf5D{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��FM��F �9ȍ�RӨ�ڃܨ)5��=���BW��f�q�f�ݨ:�QSj5T{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 6j +]��5Ǎ�2Ө!ڃܨu7j��AnԔ�F ��FM�i�P�AnԔ�F ��Fͨ�Q#ur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3�n�H�ب)t5jh�7j�L��hr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q�Qur���4j�� 7jJM��jr���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3h52{5E�F ɚ�FM�i��AnԎ+ը�{\�� �Q;~��Q��������̵Q{\��������+�?ר���F��u���/��c�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=���BW��f�q���4j�� 7jFݍ�c�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԌ�5R� 5jʼ4j(ގa���ը�Xsܨ)3��=ȍ�P���s�5��QC��QSj5T{�5��QC��Q3�n�H�ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�Al��F�̞�FM��QC��QSf5D{�5��QC��Q3�n�H�ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԌ�5R� 7jJM��jr���4j�� 6j +]��5���!Ө�sܨ)3��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԌ�5R� 7jJM��jr���4j�� 7jJM��jr�&�k���FM�i�P�AnԔ�F ��FM��QC��Q3�n��ܨ)5��=ȍ�RӨ�ڃܨ)5��=ȍ�Qw�F��FM�i�P�AnԔ�F ��FM�i�P�AnԌ�5R� 7jJM��jr���4j�� 7jJM��jr�f�ݨ�:�QSj5T{5��F ͚�FM�i��AnԌ�5R� 7jJM��jr���4j�� 7jJM��jr�f�ݨ�:�QSj5T{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨu7j��Al��54k�5e�QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃܨ �ڨ�:�QSj5T{�5��QC��QSj5T{�5��F��1ȍ�RӨ�ڃܨ)5��=ȍ�RӨ�ڃب4��=���"W��d�q���4j�� 7jǍ�j��=.��m�vب��h��4j�/��8Q�<r-ԞV���������������I��xܧ==�<>�晛W����O/���>��'��Q&k�\՜!S�Ys�� r'x@�x�LGd�q}g��wD��w�LyGd�qw'ȝ��s�2��5�ŝWpG���vLmGb�qk'ȝ��s�2��5Ǖ�!�Ys��2��5�}� w^d�q\gȴuD��u�LXGd�qVg�TuD�7u��I�=�A�!��Ys\�21�5�)�!S�Ys�� rgt@�Et�4t��LaAg��w;���SϑXs���'���19�8�3d�9"k��9C&�#��8�3d�9"k�{9A�\Ȟ�Xΐi刬9.��P�Ț�Lΐ�䈬9n��9 {�9C��#�渎3d�8"k��8C��#�氋b�8�k�8�&���1.�� �Ě�ΐ�ሬ9n��S8 {�C8C��#�渂3d"8"k�8C��#����߀�9�����Ț��͐ ߈�9����Ț��M�;y��8x3dz7"k�k7C&v#��0u3�*����Mx����1���ƍĚ��͐ ܈�9�����Ț�M�;m��8l3d�6"k��6C&j#��8i3d�6"k�{6A� Ȟ�͐iو�9.����Ț�͐�؈�9n��ׄ�s�2��5���!�Ys��q�kގq�&�����s�2��5�Ś!�Ys��2��5ǭ� w�d�q�f�tjD�Wj�L�Fd�q�f�jD��i��y�=�q�!ӦYs\�2a�5�Y�!S�Ysܤ r'i@�i�L�Fd�a�f��x;�)�S��Xsܡ rgh@�Gh�L�Fd�q�f�hD��g�L}Fd�q{&ȝ��s�2��5�ՙ!�Ys��2��5ǽ� wnd�qlfȴfD��f�LhFd�qff�TfD�7f�܉�=���W_F���eL\Fb�qZfȔeD�we��Y�=�Q�!ӔYs\�2A�5�9�!S�Ysܒ�'�)�19�8$3d:2"k�+2C&"#��8!3d +2"k��1A�|Ȟ�x̐iLj�9.��p�Ț�l̐�ƈ�9lƄ�d��`�x�#�v�k1&#��8;��T)F/q �n���N��%��c���_�<�(��O&/߿C潯:�M�g����#�L�m%b�����������W<=�=<��Z�u{��_�<�@��O�����3������^��N���h�{/�d��/�_OҼ<{������٪�g�=�����%x�n&��gY������+�J�<{G����e8Y��������ۚ�zy��ڃ��/����_�6�z��1x�>=��Z����ԗ��o���;j�����������?W���_���eu��/��7:)����������zy��ڃ����h�˳w��\}}o�zy�͞; �_��� g={����5�b�˳w�<P_����˳w��\};=<�ʟpֳ�������7�^����������"�[��Q{�@=�ʟpֳw�����r�2<;5Ϣ:����E��g�=x����ߤzy��ڃ���p����;j~���_�/<��<P/�ө�g�=x��<�^�zy��ڃ��Ë������>'O�o�'�<��<PϿ�Ū�g�=x���_�zy��ڃ�����$�˳w�<8�r�2<Iu=��<P�%��2�=ȷq���8�� ��Qj��ڃ|!Ǩ�D�c���(5WrP�A�����A��T�Rs+��k9F��rH�|0G����j�����9h���Qf�� ڃ|9Ǩ�t�c���(5�sP�A�����A����RsC��+:F�gtH�|HG����j�-���=��t��{:�� _�1�>�C��:J�UT{���(5�uP�A>�����A����Q�yR� �Q�����cxcG����5�gv��;;�� _�����s���(5�vP�A�����A���Rss��;F�gwH�|xG����j������=��w���;�� _�1�>�C��#<J�T{���(5�xP�A>ţ���A���As��̞Ã<�\y��9�ɣ��A��,�Rs����<FݧyH�|�G��j�}��@�=�'z��=�� _�1�>�C��C=JͥT{�o�(5�zP�A>ף���A��b�Q��R� �Qj���ڃ|�G�9܃j�����=h�^�1d���s|�G����h� ���=�g|��;>�� _�1�>�C��c>J�5T{���(5}P�A>����A����Q�YR� �Qj.��ڃ|�G�9�j�y���=�~�z=���#?J͕T{���(5�~P�A<���u�͚�k?���~�|�G����j������=�g���?�� _�1�>�C���?J��T{���(5�P�A>����B�� +�Q� R� Rj.�ڃ|H�9�j�9 ���=����O�:�(�Rs�Ļ@ +]��Ь9> ���B��:�Q�y R� Rj.�ڃ|#H�9�j� ��N�=ȗ���O�:�X�Rs-��{AJ�� T{�O)57�P�A�d�}6��1ȇ����A�� �Rj��ڃ|>H���j�!��B��A<"��uE͚�;B��!!D{�O )5��P�A�&d�}N��1�����B�� �Rj� +�ڃ|VH��+�j�e!�^O�:���Rs]���BJ́!T{�O)57�P�A�2d�}f��1ȇ���KC�� �Rj� �ڃ|nH��7�j��!����=�G���!Ys|wH�9<�h���:������������C��1�=�����V{����#��C���_����鯿~��s�� +�u����������:o�3@7ou|��k� D{���)5g�P�A>d�}��1�g���3@�� �Rj���ڃ|H�9�j� ��3@��A>�ԜB���Rs��3@J� T{���u�"u� ���=�g���3@�� �Rj���ڃxȠ9Df�� e��=�g���3@�� �Rj���ڃ|Ȩ��c���)5g�P�A>�ԜB���Rs��3@B��u� ���=�g���3@�� �Rj���ڃ|Ȩ��c���)5g�P�A>�ԜB���B� 4k���s�"t� ���=�g���3@�� �Rj���ڃ|Ȩ��c���)5g�P�A>�ԜB���Rs��3@F�g�H�|H�9�j� ���=�g���3@�� �2�>D��3@J� T{��)t�B����2s��3@F�g�H�|H�9�j� ���=�g���3@�� �2�>D��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��2/g�P��3@ +\g�P�9>�̜B���P�g�@��|H�9�j� ���=�g���3@�� �2�>D��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g��3@d��R�:�d�� e��=�g���3@�� �2�>D��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{��)t�B����!s�Ȟ�3@�� D{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A>$�� P� �Rj���ڃ|H�9�j� ��3@h��2�>D��3@J� T{���)5g�P�A>�ԜB���Q� R� �Rj���ڃ|H�9�j� ���=�g������:��Rs��3@J� T{���)5g�P�A>d�}��1�g���3@�� �R�:�f�� e��=�g������:��Rs��3@J� T{���)5g�P�A>d�}��1�g���3@�� �Rj���ڃ|H�9�j� ��3@��A>�ԜB���Rs��3@J� T{���u�"u� ��3@h��Rf��!ڃ|H�9�j� ��3@��A>�ԜB���Rs��3@J� T{��� �z�9�g���3@�� �Rj���ڃ|H�9�j� ��3@��A>�ԜB���Rs��3@J� T{��4g���9<��uɚ�3@�� D{���߷Qg��=.g�n^�������g�N|���oo/xh=��������o�����^~����x�^~���o��O�������G����U��#����G�Z!� +��Տ+ď/"�c�+D��BD��BTj*DT{�+D��BD��B4�I�\!*5"�=��RS!�ڃ\!*5"�=��Qw�H�� +Q��Q�A��*D4k�+De�BD��B4�I�\!*5"�=��RS!�ڃ\!*5"�=��Qw�H�� Q��Q�A��� �� -Q��Q�A���+DR� W�JM��jr���T��� W�JM��jr�h�]!�:�BTj*DT{+D�� -͚� -Q���A���+DR� W�JM��jr���T��� W�JM��jr�h�]!�:�BTj*DT{�+D��BD��BTj*DT{�+D�� -��1��RS!�ڃ\!*5"�=��RS!�ڃ\!uW���A��y�Q�� -Q��BD��BTf*DD{�+D�^+DP� W�JM��jr���T��� W�JM��jr�h�]!�:�BTj*DT{�+D��BD��BTj*DT{�+D�� -��1��RS!�ڃ\!*5"�=��RS!�ڃX!4"�=��"W��d�q���T��� W�JM��jr�h�]!�:�BTj*DT{�+D��BD��BTj*DT{�+D�� -��1��RS!�ڃ\!*5"�=��RS!�ڃ\!uW���A��� +Q��Q�A���+DR� W�JM��jr���T��� W�JM��jr�h�]!�:�BT�BD�v+D� +Ś� +Q���A��z�A��\!*5"�=��RS!�ڃ\!*5"�=��Qw�H�� +Q��Q�A��� �� -Q��Q�A��*D4k+DC�B$��BTf*DD{�+D��BD��BTj*DT{�+D�� -��1��RS!�ڃ\!*5"�=��RS!�ڃ\!uW���A��� +Q��Q�A���+DR� W�JM��jr���T��� W�JM��jb�h�T�d�V��\"�5��2S!"ڃ\!*5"�=��Qw�H�� +Q��Q�A��� +�� +Q��Q�A���+DR� W�JM��jr���T��� W�JM��jr�h�]!�:�BTj*DT{�+D��BD��BT�Ѭ9� � +�Ȟ� +Q���A��� �� +Q��Q�A���+DR� W�JM��jr���T��� W�JM��jr�h�]!�:�BTj*DT{�+D��BD��BTj*DT{�+D�^+DP� W�JM��jr���T��� V� +]"�5��1w�H�� Q��Q�A��� �� -Q�� -�9��RS!�ڃ\!*5"�=��BW��f�q�h�]!:�BTj*DT{�+D��BD��BTj*DT{�+D�� +Q��Q�A���+DR� W�JM��jr���T��� W�JM��jr�h�]!�:�BTj*DT{�+D��BD��BTj*DT{�+D�� +��1��RS!�ڃX!*tU�h�W��L��hr�h�]!�:�BTj*DT{�+D��BD��BTj*DT{�+D�� ��1��RS!�ڃ\!*5"�=��RS!�ڃ\!uW���A��� �� Q��Q�A��� �� -Ѩ�B$ur���T��� V� -]"�5��2S!"ڃ\!uW���A��� +Ѩ�B$ub���U!�Ys\!*3"�=��RS!�ڃ\!uW���A��� �� Q��Q�A��� �� -Ѩ�B$ur���T��� W�JM��jr���T��� W�F�"�c�+D��BD��BTj*DT{�+D��BD��B4�I�X!*tU�h�W��L��hr���T��� W�F�"�c�+D��BD��BTj*DT{�+D��BD��B�Bur���T��� W�JM��jr���T��� W�F�"�c�+D��BD��BTj*DT{�+D��BD��B4h*D2{+DE� -ɚ� -Q���A���"�ǥB����+���8�m��������g�{���o��oO��.���t�"���~}��_�������������u&��u��Cendstream +Q�� +�9��RS!�ڃ\!*5"�=��RS!�ڃ\!uW���A��� +�� +Q��Q�A��� +�� +Ѡ���9��*D$k�+De�BD��B�vNT��� +��5�B<~��߆�����������O��vz�����^O�*��O���y����߭'�_����u�3��B�*Xendstream endobj 1277 0 obj << /Type /Page @@ -2706,380 +2739,380 @@ endobj 1280 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 708.244 221.101 715.098] +/Rect [143.462 708.244 270.913 715.098] /Subtype /Link -/A << /S /GoTo /D (win32-perl) >> +/A << /S /GoTo /D (win32-perl-modules) >> >> endobj 1281 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 708.244 537.983 715.098] /Subtype /Link -/A << /S /GoTo /D (win32-perl) >> +/A << /S /GoTo /D (win32-perl-modules) >> >> endobj 1282 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 695.293 270.913 702.147] +/Rect [143.462 693.235 334.813 702.147] /Subtype /Link -/A << /S /GoTo /D (win32-perl-modules) >> +/A << /S /GoTo /D (win32-code-changes) >> >> endobj 1283 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 695.293 537.983 702.147] +/Rect [528.02 693.235 537.983 702.147] /Subtype /Link -/A << /S /GoTo /D (win32-perl-modules) >> +/A << /S /GoTo /D (win32-code-changes) >> >> endobj 1284 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 680.284 334.813 689.195] +/Rect [143.462 680.284 265.763 689.195] /Subtype /Link -/A << /S /GoTo /D (win32-code-changes) >> +/A << /S /GoTo /D (win32-http) >> >> endobj 1285 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 680.284 537.983 689.195] /Subtype /Link -/A << /S /GoTo /D (win32-code-changes) >> +/A << /S /GoTo /D (win32-http) >> >> endobj 1286 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 667.333 265.763 676.244] +/Rect [143.462 667.333 234.789 676.244] /Subtype /Link -/A << /S /GoTo /D (win32-http) >> +/A << /S /GoTo /D (win32-email) >> >> endobj 1287 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 667.333 537.983 676.244] /Subtype /Link -/A << /S /GoTo /D (win32-http) >> +/A << /S /GoTo /D (win32-email) >> >> endobj 1288 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 654.381 234.789 663.293] +/Rect [119.552 656.438 187.068 663.293] /Subtype /Link -/A << /S /GoTo /D (win32-email) >> +/A << /S /GoTo /D (os-macosx) >> >> endobj 1289 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 654.381 537.983 663.293] +/Rect [528.02 656.438 537.983 663.293] /Subtype /Link -/A << /S /GoTo /D (win32-email) >> +/A << /S /GoTo /D (os-macosx) >> >> endobj 1290 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 643.487 187.068 650.341] +/Rect [143.462 643.487 213.479 650.341] /Subtype /Link -/A << /S /GoTo /D (os-macosx) >> +/A << /S /GoTo /D (macosx-sendmail) >> >> endobj 1291 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 643.487 537.983 650.341] /Subtype /Link -/A << /S /GoTo /D (os-macosx) >> +/A << /S /GoTo /D (macosx-sendmail) >> >> endobj 1292 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 630.536 213.479 637.39] +/Rect [143.462 630.536 335.5 637.39] /Subtype /Link -/A << /S /GoTo /D (macosx-sendmail) >> +/A << /S /GoTo /D (macosx-libraries) >> >> endobj 1293 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 630.536 537.983 637.39] /Subtype /Link -/A << /S /GoTo /D (macosx-sendmail) >> +/A << /S /GoTo /D (macosx-libraries) >> >> endobj 1294 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 617.584 335.5 624.438] +/Rect [119.552 617.584 226.809 624.438] /Subtype /Link -/A << /S /GoTo /D (macosx-libraries) >> +/A << /S /GoTo /D (os-mandrake) >> >> endobj 1295 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 617.584 537.983 624.438] /Subtype /Link -/A << /S /GoTo /D (macosx-libraries) >> +/A << /S /GoTo /D (os-mandrake) >> >> endobj 1296 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 604.633 226.809 611.487] +/Rect [95.641 602.949 254.464 611.487] /Subtype /Link -/A << /S /GoTo /D (os-mandrake) >> +/A << /S /GoTo /D (nonroot) >> >> endobj 1297 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 604.633 537.983 611.487] +/Rect [528.02 602.949 537.983 611.487] /Subtype /Link -/A << /S /GoTo /D (os-mandrake) >> +/A << /S /GoTo /D (nonroot) >> >> endobj 1298 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 589.998 254.464 598.535] +/Rect [119.552 591.681 193.713 598.535] /Subtype /Link -/A << /S /GoTo /D (nonroot) >> +/A << /S /GoTo /D (870) >> >> endobj 1299 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 589.998 537.983 598.535] +/Rect [528.02 591.681 537.983 598.535] /Subtype /Link -/A << /S /GoTo /D (nonroot) >> +/A << /S /GoTo /D (870) >> >> endobj 1300 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 578.73 193.713 585.584] +/Rect [119.552 576.673 177.116 585.584] /Subtype /Link -/A << /S /GoTo /D (871) >> +/A << /S /GoTo /D (874) >> >> endobj 1301 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 578.73 537.983 585.584] +/Rect [528.02 576.673 537.983 585.584] /Subtype /Link -/A << /S /GoTo /D (871) >> +/A << /S /GoTo /D (874) >> >> endobj 1302 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 563.721 177.116 572.633] +/Rect [143.462 563.721 298.44 572.633] /Subtype /Link -/A << /S /GoTo /D (875) >> +/A << /S /GoTo /D (882) >> >> endobj 1303 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 563.721 537.983 572.633] /Subtype /Link -/A << /S /GoTo /D (875) >> +/A << /S /GoTo /D (882) >> >> endobj 1304 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 550.77 298.44 559.681] +/Rect [119.552 552.827 160.508 559.681] /Subtype /Link -/A << /S /GoTo /D (883) >> +/A << /S /GoTo /D (909) >> >> endobj 1305 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 550.77 537.983 559.681] +/Rect [528.02 552.827 537.983 559.681] /Subtype /Link -/A << /S /GoTo /D (883) >> +/A << /S /GoTo /D (909) >> >> endobj 1306 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 539.876 160.508 546.73] +/Rect [119.552 539.876 197.867 546.73] /Subtype /Link -/A << /S /GoTo /D (910) >> +/A << /S /GoTo /D (install-perlmodules-nonroot) >> >> endobj 1307 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 539.876 537.983 546.73] /Subtype /Link -/A << /S /GoTo /D (910) >> +/A << /S /GoTo /D (install-perlmodules-nonroot) >> >> endobj 1308 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 526.924 197.867 533.778] +/Rect [143.462 524.867 276.552 533.778] /Subtype /Link -/A << /S /GoTo /D (install-perlmodules-nonroot) >> +/A << /S /GoTo /D (928) >> >> endobj 1309 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 526.924 537.983 533.778] +/Rect [528.02 524.867 537.983 533.778] /Subtype /Link -/A << /S /GoTo /D (install-perlmodules-nonroot) >> +/A << /S /GoTo /D (928) >> >> endobj 1310 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 511.915 276.552 520.827] +/Rect [143.462 513.973 253.17 520.827] /Subtype /Link -/A << /S /GoTo /D (929) >> +/A << /S /GoTo /D (941) >> >> endobj 1311 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 511.915 537.983 520.827] +/Rect [528.02 513.973 537.983 520.827] /Subtype /Link -/A << /S /GoTo /D (929) >> +/A << /S /GoTo /D (941) >> >> endobj 1312 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 501.021 253.17 507.875] +/Rect [119.552 501.021 197.708 507.875] /Subtype /Link -/A << /S /GoTo /D (942) >> +/A << /S /GoTo /D (974) >> >> endobj 1313 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 501.021 537.983 507.875] /Subtype /Link -/A << /S /GoTo /D (942) >> +/A << /S /GoTo /D (974) >> >> endobj 1314 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 488.07 197.708 494.924] +/Rect [143.462 486.013 296.208 494.924] /Subtype /Link -/A << /S /GoTo /D (975) >> +/A << /S /GoTo /D (977) >> >> endobj 1315 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 488.07 537.983 494.924] +/Rect [528.02 486.013 537.983 494.924] /Subtype /Link -/A << /S /GoTo /D (975) >> +/A << /S /GoTo /D (977) >> >> endobj 1316 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 473.061 296.208 481.973] +/Rect [119.552 473.061 178.221 481.973] /Subtype /Link -/A << /S /GoTo /D (978) >> +/A << /S /GoTo /D (986) >> >> endobj 1317 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 473.061 537.983 481.973] /Subtype /Link -/A << /S /GoTo /D (978) >> +/A << /S /GoTo /D (986) >> >> endobj 1318 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 460.11 178.221 469.021] +/Rect [71.731 457.853 180.502 466.74] /Subtype /Link -/A << /S /GoTo /D (987) >> +/A << /S /GoTo /D (administration) >> >> endobj 1319 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 460.11 537.983 469.021] +/Rect [528.02 457.853 537.983 466.74] /Subtype /Link -/A << /S /GoTo /D (987) >> +/A << /S /GoTo /D (administration) >> >> endobj 1320 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [71.731 444.902 180.502 453.788] +/Rect [95.641 442.376 204.681 451.288] /Subtype /Link -/A << /S /GoTo /D (administration) >> +/A << /S /GoTo /D (parameters) >> >> endobj 1321 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 444.902 537.983 453.788] +/Rect [528.02 442.376 537.983 451.288] /Subtype /Link -/A << /S /GoTo /D (administration) >> +/A << /S /GoTo /D (parameters) >> >> endobj 1322 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 429.425 204.681 438.336] +/Rect [95.641 431.482 194.709 438.336] /Subtype /Link -/A << /S /GoTo /D (parameters) >> +/A << /S /GoTo /D (useradmin) >> >> endobj 1323 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 429.425 537.983 438.336] +/Rect [528.02 431.482 537.983 438.336] /Subtype /Link -/A << /S /GoTo /D (parameters) >> +/A << /S /GoTo /D (useradmin) >> >> endobj 1324 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 418.531 194.709 425.385] +/Rect [119.552 416.473 247.002 425.385] /Subtype /Link -/A << /S /GoTo /D (useradmin) >> +/A << /S /GoTo /D (defaultuser) >> >> endobj 1325 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 418.531 537.983 425.385] +/Rect [528.02 416.473 537.983 425.385] /Subtype /Link -/A << /S /GoTo /D (useradmin) >> +/A << /S /GoTo /D (defaultuser) >> >> endobj 1326 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 403.522 247.002 412.433] +/Rect [119.552 403.522 235.207 412.433] /Subtype /Link -/A << /S /GoTo /D (defaultuser) >> +/A << /S /GoTo /D (manageusers) >> >> endobj 1327 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 403.522 537.983 412.433] /Subtype /Link -/A << /S /GoTo /D (defaultuser) >> +/A << /S /GoTo /D (manageusers) >> >> endobj 1328 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 390.57 235.207 399.482] +/Rect [143.462 390.57 251.954 399.482] /Subtype /Link -/A << /S /GoTo /D (manageusers) >> +/A << /S /GoTo /D (createnewusers) >> >> endobj 1329 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 390.57 537.983 399.482] /Subtype /Link -/A << /S /GoTo /D (manageusers) >> +/A << /S /GoTo /D (createnewusers) >> >> endobj 1330 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 377.619 251.954 386.53] +/Rect [143.462 377.619 243.636 386.53] /Subtype /Link -/A << /S /GoTo /D (createnewusers) >> +/A << /S /GoTo /D (modifyusers) >> >> endobj 1331 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 377.619 537.983 386.53] /Subtype /Link -/A << /S /GoTo /D (createnewusers) >> +/A << /S /GoTo /D (modifyusers) >> >> endobj 1332 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 364.668 243.636 373.579] +/Rect [143.462 364.668 258.569 373.579] /Subtype /Link -/A << /S /GoTo /D (modifyusers) >> +/A << /S /GoTo /D (impersonatingusers) >> >> endobj 1333 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 364.668 537.983 373.579] /Subtype /Link -/A << /S /GoTo /D (modifyusers) >> +/A << /S /GoTo /D (impersonatingusers) >> >> endobj 1334 0 obj << /Type /Annot @@ -3369,20 +3402,22 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1423 0 obj << -/Length 54351 +/Length 54354 /Filter /FlateDecode >> stream xڜ�_�l�}��{� ^lOO��KY�\vŎbIv��T �IT@@�qɯ>{�~�3������R�i�O�4�C���oο������ϧ����_O�O�����u��?n�ʿ���x����t�x���+����/��-���w�����g�������绗�������������w��ק�����.�������t>�Χo�x�������~���?�������������_�/�0�����������i�NO痃���������4}��������r�s\A�>zì�����ku����9�et <P/��'����P;�@ݾ��fau��ځ��-<\��?{C����e�.Rϲ����p� ���j���p~���� ���k����� �������Sdz�.������,���j�O��g����P;�@}9=����P;���} ��Nϲ�����`���j��� �Kb�Yq��\�o8��h^W����^��YV��u����� ���[����� ���H����Ƴ7���>o���E�;x<��x�^N�Vݟ��v����=/���P;�@ݾ�G���x��ځ��kx��x��%�@ݾ���mn<{C��u���os��j���p���� ������p'�ϲ���� ͷ'o����Ӌ����� ����_|����go�xU��ݝ^��o5y�5�@��.OVݟ��v���}�����P;�@��E����P;�z��Tdz�.���5�?Ju��ځ��5����?{C��u�ךּ?{C�����������gY]��i��A���7�<PO��Vݟ��v���r�z���� �����k��f�e����;��Y��AV��}gi���@;�@ݾ����f<{C�������Ku<��x�n��Y�7���v���} �!�� �ԗ��ժ��7���>ޝ�^�nƳ�.���t��1���v���xzz���� ���kx��Ǎgo�x]}ھ����x��%�@ݾ��U�go�x�n_ý�=n<{C��u��!��0+�:����ё��Lv��}w�ܟ��v���xz|�����j�/������P;��rwz|��ǍgY]����I�n3���v���} �Vݟ��v���} ����� ������p��x��%�@ݾ�{�{�x��ځ��5���q��j���pg���j^U��N����<��x�ޟ^����j����g����P;�@}>�?��0+�:y�[k�et <P���Ѫ��7�<P����^���7�<P�oA�N�� ������p/��,�K���} �����P;�@ݾY;ɳ7�<P�O/�Vݟ��v�u�rw������,�K��zz���<{C����ty���� ���kx��͍go�x]}ؾY;ɳ�.���5\��?{C��u��5��0+�ܾY;ɳ7���>n��Y��YV��u�d�$��P;�@}<���I���v���|z~���� ���Ow�{Y;ɳ�.����Y�N�� ���kx���� ���k���<{C������5��I�eu <P���ު��7�<P��A�N�� ���k���<{C��������*��,�K��zz���Go�w@>�β|�go�x�>�����?{C��������I�eu <P�oA�O�� ���kx���� ���k��<{C�������5��y�5�@ݾ��U�go�x�n_�,���j�ϧG��Ly��ځ�����N&�,�K��zz��<{C����t�d���j��� y��ځ����k����e����;x���Go�w@n_�\K��h��p�|�>�|�#��3����ӭ���|�w�>����z�o�>X��Q�=X���.��8`�3s�z?���?��`��_������y�Z�=s}�������>��<���O8صfC�?}���;�+�x���;����;����;����;�f���;����;����;����;�f���;����;����;����;�f��;g~����1�v0�w0,V�`�9v0�v �`�:w0�����q����ځ��q����ځ��q����ځ��Qjv0�.���q����ځ��q����ځ��q����ځ��Qjv0�.���q����ځ��q����ځ��q����ځ��Q�����q��q侃a��p�̱�a�q�Ա�a�q���`P]q�Ա�a�q�Ա�a�q�Ա�a�q���`P]q�Ա�a�q�Ա�a�q�Ա�a�q���`P]q�Ա�a�q�Ա�a�i��}�f��F�c�d��ƙc�h�Ʃc�j�Ʃc�j�F������Ʃc�j�Ʃc�j�Ʃc�j�F������Ʃc�j�Ʃc�j�Ʃc�j�ƨsC��;����;���H;��;6+w0���%w0N;V;w0N;V;w0N;V;w0J��%w0N;V;w0N;V;w0N;V;w0J��%w0N;V;w0N;V;w0N;V;w0J��%w0N;V;�v0�w0lV�`�9v0�v �`���K �`�:v0�v �`�:v0�v �`�:v0�v �`���K �`�:v0�v �`�:v0�v �`�:v0�v �`���K �`�:v0�v �`�:v0�v �`�:v0�v �`���K �`��`ج8��8s�`�@��8u�`X�@��(5;T�@��8u�`X�@��8u�`X�@��8u�`X�@��u�`H]q�Ա�a�q�Ա�a�q�Ա�a�q���`P]q�Ա�a�q�Ա�a�q�Ա�a�i�б�A��h��}�d��ƙc�h�ffß��3?���h�c����AnO���yx8�f<3w0��;��?�m���������e�w�����|�ۯ�[��������ϻ�����_��R+���R뇿��R���VT;�K�JM���R�Qg���%�K�JM���R�RSjE��ԪԔZQ�@.�u�ZI]�ԪԔZQ�@.�*5�VT;�K�JM���R�ASj%��Ԫ�QjE��Ԫ̔Z�@.�*5�VT;�K�F��VR�@.�*5�VT;�K�JM���R�RSjE���j�Yj%u �R�RSjE��ԪԔZQ�@.�*5�VT;�K�F��VR�@.�*5�VT;�K�JM���R�BG�͊�R�!Sj%��Ԫ̔Z�@.�*5�VT;�K�JM���R�Qg���%�K�JM���R�RSjE��ԪԔZQ�@.�u�ZI]�ԪԔZQ�@.�*5�VT;�K�JM���R�P�K����\jUjJ��v �Z��R+���V��R+�ǥVc�R+�K �Z��R+�ȥV��Ԋjr�U�)��ځ\j5�,���r�U�)��ځ\jUjJ��v �Z��R+�ȥV��R+�K �Z��R+�ȥV��Ԋjr�U�)��ځ\j5�,���r�U�)��ځXjU�(��Yq\jUfJ��v �Z�:K��.�\jUjJ��v �Z��R+�ȥV��Ԋjr�ը��J�ȥV��Ԋjr�U�)��ځ\jUjJ��v �Z�:K��.�\jUjJ��v �Z��R+�ȥV��Ԋjr�ը��J���V��R+�ǥVe�Ԋhr�U�)��ځ\j5�,���r�U�)��ځ\jUjJ��v �Z��R+�ȥV���ZA]�ԪԔZQ�@.�*5�VT;�K�JM���R�Qg���%�K�JM���R�RSjE��ԪԔZQ�@,�4�V2;K���V$+�K��L���R�q�R�Z�s��J�ǟ�_x�������ʥ���,�>�R]���i\��~����~�a�83��?���uׯ]�+�Ç������+|���Z���A����/踇���@���Qg��%�{�JM���R�CD������Q�@�!4=D2;{��=D$+�{��L���R�CD���h��C$u ��R�CD������Q�@�!*5=DT;�{�F�=DR�@�!*5=DT;�{�JM���R�CD���h��C$u ��R�CD������Q�@�!*t�Ѭ8�!2=D";�{��L���R�CD������Q�@�!u�I]�����Q�@�!*5=DT;�{�JM���Qg��%�{�JM���R�CD������Q�@�! -�����=D����jrQ��!�ځ�CT��!�Yq�C4��!�rQ��!�ځ�CTjz��v ���"��=D��"�K ���"��=D����jrQ��!�ځ�C4��!��rQ��!�ځ�CTjz��v ���"��=D��"�K ���"��=D��"��=De���hrѨ��H��=D����jrQ��!�ځ�CTjz��v ��:{��.��CTjz��v ���"��=D����jrѨ��H��=D����jrQ��!�ځ�CTjz��v ��:{��.��CT��!�Yq�CTfz��v ���"��=D��"�K ���"��=D����jrQ��!�ځ�C�{�5�{�JM���R�CD������Q�@�!u�I]�����Q�@�!*5=DT;�{�JM���A�C$�㰇���CD�⸇����@�!RKN��s�=�z�ǟ���ׇ���8��p9=|�}����xy��C�=��h"��/?}����~�e����˯o]ć�o�˷w���۟���|��_~��?��B��ڂ�����p�H��K��i���:"�v wD�������#�jrGĨ�#B����#�jrGD�鈠ځ�Q�舠Yq�1d:"DvwD�������#�jrGD�鈠ځ�1�숐�rGD�鈠ځ�Qj:"�v wD������Ύ�K wD�������#�jrGD�鈠ځ��{G�5�;"JMG�䎈R�A��#���A��#b��!t 䎈R�A��#��tDP�@�(5T;�;"F�R�@�(5T;�;"JMG�䎈R�A��#b��!u 䎈R�A��#��tDP�@�(5T;�;"F�R�@�(5T;;" -4+�;"�LG�䎈QgG��%�;"JMG�䎈R�A��#��tDP�@�uvDH]�#��tDP�@�(5T;�;"JMG�䎈QgG��%�;"JMG�䎈R�A��#��tDP�@�uvDH]�#���A��#��tD�@�(5T;�;"F�R�@�(5T;�;"JMG�䎈R�A��#"����k wD�������#�jrGD�鈠ځ�1�숐�rGD�鈠ځ�Qj:"�v wD�������#Bf�aGD��#�d�qGD�� ځ��ނ����;">���aG��s�;"�?x������̇����ߎ�__�����z����۫���x�|������������/�?���hV�h7d^��q��]�yюh�v��E;��/ڕ���v �h7�|�N��/ڕ���v �hWj^��ځ��]�yюj�v����.���]�yюj�v��E;��/ڕ���v �h���vP�@~ѮԼhG��E�R���� +�����=D����jrQ��!�ځ�CT��!�Yq�C4��!�rQ��!�ځ�CTjz��v ���"��=D��"�K ���"��=D����jrQ��!�ځ�C4��!��rQ��!�ځ�CTjz��v ���"��=D��"�K ���"��=D��"��=De���hrѨ��H��=D����jrQ��!�ځ�CTjz��v ��:{��.��CTjz��v ���"��=D����jrѨ��H��=D����jrQ��!�ځ�CTjz��v ��:{��.��CT��!�Yq�CTfz��v ���"��=D��"�K ���"��=D����jrQ��!�ځ�C�{�5�{�JM���R�CD������Q�@�!u�I]�����Q�@�!*5=DT;�{�JM���A�C$�㰇���CD�⸇����@�!RKN��s�=������x�9~y}�>������߇�N����=��P���C<�&���ӗ_��q�'���_F)������E|x��|�p����i�W���������c?�J!��-���>�Zo��G���������v���A�#�jrGD�鈠ځ�Qj:"�v wD�:;"�.��Qj:"�v wD����������C�#Bd�qGD�� ځ�Qj:"�v wD������Ύ�K wD�������#�jrGD�鈠ځ�1�숐�rGD�鈠ځ�Qj:"�v wD�������wD@]�#��tDP�@�(5T;;" +4+�;"ƜB�@�(5T;�;"JMG�䎈R�A��#b��!u 䎈R�A��#��tDP�@�(5T;�;"F�R�@�(5T;�;"JMG�䎈R�A��#b��!u 䎈R�A��#���A��#��tD�@�uvDH]�#��tDP�@�(5T;�;"JMG�䎈QgG��%�;"JMG�䎈R�A��#��tDP�@�uvDH]�#��tDP�@�(5T;�;"JMG�䎈QgG��%;" +4+�;"�LG�䎈R�A��#b��!u 䎈R�A��#��tDP�@�(5T;�;"B}�rGD�鈠ځ�Qj:"�v wD������Ύ�K wD�������#�jrGD�鈠ځ�1h:"dvvD9:"HVwD������-��~��#��c@G��s�;"�?x������̇����ߎ�__�����z����۫���x�|������������/�?���hV�h7d^��q��]�yюh�v��E;��/ڕ���v �h7�|�N��/ڕ���v �hWj^��ځ��]�yюj�v����.���]�yюj�v��E;��/ڕ���v �h���vP�@~ѮԼhG��E�R���� /�Ѭ8~�n�����%�_�+5/�Q�@~ѮԼhG��E�R����F�/�I]�E�R����J͋vT;�_�+5/�Q�@~�n�����%�_�+5/�Q�@~ѮԼhG��E�R����F�/�I]�E�R���� /�Ѭ8~Ѯ̼hG��E�Q�vR�@~ѮԼhG��E�R����J͋vT;�_�u�h'u ��J͋vT;�_�+5/�Q�@~ѮԼhG��E�Q�vR�@~ѮԼhG��E�R����J͋vT;�_�u�h'u �� -/�Ѭ8~Ѯ̼hG��E�R����F�/�I]�E�R����J͋vT;�_�+5/�Q�@~�.��������]�yюj�v��E;��/ڕ���v �h7�|�N��/ڕ���v �hWj^��ځ��]�yюj�v��E;��/�9^�#Yq��]�yюh�vz�+^����_�����s,/��o�h��m�<���̇�S�"��O�ݯ?���T���t�a���͟>���g./��������O~��{8z�>�E����/��G�|� �#XP�@�,J͏`A��G�(5?����b�y^��%��k(5�5P�@>��Ԝ�@����Rs^���F��5H]���Rs^���JM���֏BG�͊�֏!��!����̴~�@n�(5�T;�[?JM���֏Qg��%�[?JM���֏R��A����Դ~P�@n�u�~H]���Դ~P�@n�(5�T;�[?JM���֏P�[?�����QjZ?�v �~����������ǭc���K �~����ȭ����jr�G�i��ځ��1�l���r�G�i��ځ��QjZ?�v �~����ȭ����K �~����ȭ����jr�G�i��ځ��1�l���r�G�i��ځ��Q�h��Yq��QfZ?�v �~�:[?�.���QjZ?�v �~����ȭ����jr�Ǩ��C�ȭ����jr�G�i��ځ��QjZ?�v �~�:[?�.���QjZ?�v �~����ȭ����jr�Ǩ��C�������ǭe���hr�G�i��ځ��1�l���r�G�i��ځ��QjZ?�v �~����ȭ���~@]���Դ~P�@n�(5�T;�[?JM���֏Qg��%�[?JM���֏R��A����Դ~P�@l�4�2;[?��$+�[?�L�����qE�~�s쭟Z?ǟ��\����kl��<=���l��zzy����3ydt~rX��鏿|��~���O�y����˷���������/?~���/ߞ��u���=]�����X?�y��������|:����C� ->}�����is�|�+��� �ԧ���7%����P;�@}9=�Yu��ځ�Շ����ɩ�YV��u��9u��ځ����٪��7�<P_N�o�))u��ځ����kx|u�x��%�@ݾ�����P;�@ݾ�_��7̊; ���r���� ���O�wp/��,�K���}o�#����P;�@ݾ�;����P;�@}����E���7���>�m��A�;x<��x�^N�Vݟ��v����=/���P;�@ݾ�G���x��ځ��kx��x��%�@ݾ���mn<{C��u���os��j���p���� ������p'�ϲ���� ͷ'o����Ӌ����� ��ȗ��E�7���v����������V�gQ]����d���j�۷�x���� ���kxx���� �����k�Hu<��x�n_���T�go�x�n_��I���7�<P���Ϊ��7����ߝ�_�opy��%�@������?{C������l���j�/���W����P;�zپ�o��Q6;�ܾ�����d����p���� ������mƳ7�<���Q�,��%�g�J�,��Y�R3D�y���Q�@�u�I]y���Q�@�*5�@T;�g�J�,��Y�Q�,��%�g�J�,��Y�R3D�q��1D��ph����8�*3�@D;�g�J�,��Y�R3D�yh�9$u �Y�R3D�y���Q�@�*5�@T;�g�F��@R�@�*5�@T;�g�J�,��Y�R3D�y(��Y �k ���Y �ȳ@�f�j�,P�c�f��,ИsH�ȳ@�f�j�,P���ځ<Tjf��v ��:g��.�<Tjf��v ���Y �ȳ@�f�j�,ШsH�ȳ@�f�j�,P���ځ<Tjf��v ��:g��.�<Tjf��v �:f�hV���Y �ȳ@��Y �K ���Y �ȳ@�f�j�,P���ځ<4����,P���ځ<Tjf��v ���Y �ȳ@��Y �K ���Y �ȳ@�f�j�,P���ځ<4����,P�c�f��,P��"ځ<Tjf��v ��:g��.�<Tjf��v ���Y �ȳ@�f�j�,P��@P�@�*5�@T;�g�J�,��Y�R3D�yh�9$u �Y�R3D�y���Q�@�*5�@T;g��,�̎�Y�"�,Ɋ�Y�23D�yx�bS�@��,���x���?���/��ˍc�����Po�����|��~|<�g�0�<��������͗_~���͗�zww��o'��L�NOo�n~���N�_������g�C?�y��~� 0@$u ��R3@D�y���Q�@ *5DT;��F�DR�@ *5DT;��J�����R3@D�y�h�9@$u ��R3@D�q���1@D��x����@ uI]y���Q�@ *5DT;��J�����Q����%��J�����R3@D�y���Q�@ uI]y���Q�@ *5DT;��J�����Q����%�����(~����Ŋ��23@D�y�(��"�k ��"��D�f��j��Q� �ځ<@4� ����Q� �ځ<@Tj��v ��"��D��"�K ��"��D�f��j��Q� �ځ8@4h�dv9�HV��"��D�f��j��Ѩs�H��D�f��j��Q� �ځ<@Tj��v �:��.�<@Tj��v ��"��D�f��j��Ѩs�H��D�f��j��Q� �ځ8@T� �Yq8@4d�Dv��"��D�f��j��Q� �ځ<@4� ����Q� �ځ<@Tj��v ��"��D��"�K ��"��D�f��j��Q� �ځ<@����5��J�����R3@D�q���1@D��x�h�9@$t ��R3@D�y���Q�@ *5DT;��F�DR�@ *5DT;��J�����R3@D�y�h�9@$u ��R3@D�y���Q�@ *5DT;��F�DR�@ *5DT;� -D4+��������Q����%��J�����R3@D�y���Q�@ uI]y���Q�@ *5DT;��J�����Q����%��J�����R3@D�y���Q�@ uI]q���1@D��x����@ *5DT;��F�DR�@ *5DT;��J�����R3@D�y�(��"�k ��"��D�f��j��Q� �ځ<@4� ����Q� �ځ<@Tj��v ��"��D�f�Hf���Q�c��d���Q� "ځ<@<�Ω"~�}���c����s,�3_���f�q��g����g�~�?���o������o�������/?������������������h�8���2����r���1�Ìv 6��:ä���v�h�ځ�v�h�ځ�v�h�ځ�Vjè.��v�h�ځ�v�h�ځ�v�h�ځ�Vjè.��v�h�ځ�v�h�ځ�v�h�ځ�V�h��q�v��f��1���f��1���f��1��4�Q]�1���f��1���f��1���f��1��4�Q]�1���f��1���f��1���f��1��4�Q]�1���f��1���f��1�н1�f�QcX��1�d�acؙ�1�hbcة�1�jbcة�1�jbcX�i��bcة�1�jbcة�1�jbcة�1�jbcX�i��bcة�1�jbcة�1�jbcة�1�jbcب�1L���a���0���a���0�H�a��a6+��Lc�%�N�aV;�N�aV;�N�aV;�JMc�%�N�aV;�N�aV;�N�aV;�JMc�%�N�aV;�N�aV;�N�aV;�JMc�%�N�aV;����lV6��9Ìv 6����0�K 6��:ìv 6��:ìv 6��:ìv 6����0�K 6��:ìv 6��:ìv 6��:ìv 6����0�K 6��:ìv 6��:ìv 6��:ìv 6����0�K 5��7�٬8l;s4��@l;u4�Y�@l+5�aT�@l;u4�Y�@l;u4�Y�@l;u4�Y�@lu6�I]�1���f��1���f��1���f��1��4�Q]�1���f��1���f��1���f��1���F��1�Ƚ1�d�acؙ�1�hbc;����9�>��c7��s�����}�?���rz��������ϯ���<�1|���˯������'�_O��?z7?�Ȓ��KqP�}s��y��g>�o~��7g��S�}sV;�;u�7g��Rs��%�;u�7g��S�}sV;�;u�7g��Rs��%�;��}s?��}s����kef��h�ZA��kP�@^+(5kT;�� +/�Ѭ8~Ѯ̼hG��E�R����F�/�I]�E�R����J͋vT;�_�+5/�Q�@~�.��������]�yюj�v��E;��/ڕ���v �h7�|�N��/ڕ���v �hWj^��ځ��]�yюj�v��E;��/�9^�#Yq��]�yюh�vz�+^����_�����s,/��o�h��m�<���̇�S�"��O�ݯ?���T���t�a���͟>���g./��������O~��{8z�>�E����/��G�|� �#XP�@�,J͏`A��G�(5?����b�y^��%��k(5�5P�@>��Ԝ�@����Rs^���F��5H]���Rs^���JM���֏BG�͊�֏!��!����̴~�@n�(5�T;�[?JM���֏Qg��%�[?JM���֏R��A����Դ~P�@n�u�~H]���Դ~P�@n�(5�T;�[?JM���֏P�[?�����QjZ?�v �~����������ǭc���K �~����ȭ����jr�G�i��ځ��1�l���r�G�i��ځ��QjZ?�v �~����ȭ����K �~����ȭ����jr�G�i��ځ��1�l���r�G�i��ځ��Q�h��Yq��QfZ?�v �~�:[?�.���QjZ?�v �~����ȭ����jr�Ǩ��C�ȭ����jr�G�i��ځ��QjZ?�v �~�:[?�.���QjZ?�v �~����ȭ����jr�Ǩ��C�������ǭe���hr�G�i��ځ��1�l���r�G�i��ځ��QjZ?�v �~����ȭ���~@]���Դ~P�@n�(5�T;�[?JM���֏Qg��%�[?JM���֏R��A����Դ~P�@l�4�2;[?��$+�[?�L�����qE�~�s쭟��r��9�_�|���'�p^c�]����f�7�����4��#�����O��?�����������_�������?}���w�~���ͯ�_�������?�?��!����|�/����G�_@��W�雽�\NO�s�\Q�go�x�>��o�))u��ځ����Ϊ��7���>�Ow�ONϲ��{/Ω��7�<P�Nw�Vݟ��v���rz|�MI���7���>n_��Sdz�.���5<Xu��ځ��5�����aV��}��4�go�x]}ھ�{��gY]��;x�)u��ځ��-�Yu��ځ����.Rݟ��v�u��n�����YV���rzx���� ����y���x��ځ��5<���Ƴ7����l_ÃTdz�.���5\�os��j���p/���P;�@ݾ��U�go�x]}ݾ�;���x��%�@ݾi�=yC�v�=�^�_��Go�w@��./�7��� �����N/�<��x�^N�'����P;�@ݾ�NjT�go�x�n_�ÃT�go�x]=o_�E��YV��u����?{C��u��ORݟ��v���} wVݟ��v�u������~�˳�.����� ���j����g����P;�@}9�?�Ju��ځ����5�3폲�q������� +�ܾ���4�go�x�n_�E�n3���v��hm���:g��.�<Tjf��v ���Y �ȳ@�f�j�,ШsH�ȳ@�f�j�,P���ځ<Tjf��v ��:g��.�<Tjf��v ���Y ���@��Y ���@CfHd��,P��"ځ<Tjf��v ���Y �ȳ@��Y �K ���Y �ȳ@�f�j�,P���ځ<4����,P���ځ<Tjf��v ���Y �ȳ@���A]y���Q�@�*5�@T;g� +�@4+�g�Ɯ�@B�@�*5�@T;�g�J�,��Y�R3D�yh�9$u �Y�R3D�y���Q�@�*5�@T;�g�F��@R�@�*5�@T;�g�J�,��Y�R3D�yh�9$u �Y�R3D�q��1D��x����@�u�I]y���Q�@�*5�@T;�g�J�,��Y�Q�,��%�g�J�,��Y�R3D�y���Q�@�u�I]y���Q�@�*5�@T;�g�J�,��Y�Q�,��%g� +�@4+�g���,��Y�R3D�yh�9$u �Y�R3D�y���Q�@�*5�@T;�g�B}����,P���ځ<Tjf��v ���Y �ȳ@��Y �K ���Y �ȳ@�f�j�,P���ځ84hf�dv�9f�HV���Y �ȳ�������g�>��?���/��ˍc�����Po�����|��~|<�g�0�<��������͗_~���͗�zww��o'��L�NOo�n~���N�_������g�C?�y��~� 0@$u ��R3@D�y���Q�@ *5DT;��F�DR�@ *5DT;��J�����R3@D�y�h�9@$u ��R3@D�q���1@D��x����@ uI]y���Q�@ *5DT;��J�����Q����%��J�����R3@D�y���Q�@ uI]y���Q�@ *5DT;��J�����Q����%�����(~����Ŋ��23@D�y�(��"�k ��"��D�f��j��Q� �ځ<@4� ����Q� �ځ<@Tj��v ��"��D��"�K ��"��D�f��j��Q� �ځ8@4h�dv9�HV��"��D�f��j��Ѩs�H��D�f��j��Q� �ځ<@Tj��v �:��.�<@Tj��v ��"��D�f��j��Ѩs�H��D�f��j��Q� �ځ8@T� �Yq8@4d�Dv��"��D�f��j��Q� �ځ<@4� ����Q� �ځ<@Tj��v ��"��D��"�K ��"��D�f��j��Q� �ځ<@����5��J�����R3@D�q���1@D��x�h�9@$t ��R3@D�y���Q�@ *5DT;��F�DR�@ *5DT;��J�����R3@D�y�h�9@$u ��R3@D�y���Q�@ *5DT;��F�DR�@ *5DT;� +D4+��������Q����%��J�����R3@D�y���Q�@ uI]y���Q�@ *5DT;��J�����Q����%��J�����R3@D�y���Q�@ uI]q���1@D��x����@ *5DT;��F�DR�@ *5DT;��J�����R3@D�y�(��"�k ��"��D�f��j��Q� �ځ<@4� ����Q� �ځ<@Tj��v ��"��D�f�Hf���Q�c��d���Q� "ځ<@<�Ω"~�}���c����s,�3_���f�q��g����g�~�?���o������o�������/?������������������h�8���2����r���1�Ìv 6��:ä���v�h�ځ�v�h�ځ�v�h�ځ�Vjè.��v�h�ځ�v�h�ځ�v�h�ځ�Vjè.��v�h�ځ�v�h�ځ�v�h�ځ�V�h��q�v��f��1���f��1���f��1��4�Q]�1���f��1���f��1���f��1��4�Q]�1���f��1���f��1���f��1��4�Q]�1���f��1���f��1�н1�f�QcX��1�d�acؙ�1�hbcة�1�jbcة�1�jbcX�i��bcة�1�jbcة�1�jbcة�1�jbcX�i��bcة�1�jbcة�1�jbcة�1�jbcب�1L���a���0���a���0�H�a��a6+��Lc�%�N�aV;�N�aV;�N�aV;�JMc�%�N�aV;�N�aV;�N�aV;�JMc�%�N�aV;�N�aV;�N�aV;�JMc�%�N�aV;����lV6��9Ìv 6����0�K 6��:ìv 6��:ìv 6��:ìv 6����0�K 6��:ìv 6��:ìv 6��:ìv 6����0�K 6��:ìv 6��:ìv 6��:ìv 6����0�K 5��7�٬8l;s4��@l;u4�Y�@l+5�aT�@l;u4�Y�@l;u4�Y�@l;u4�Y�@lu6�I]�1���f��1���f��1���f��1��4�Q]�1���f��1���f��1���f��1���F��1�Ƚ1�d�acؙ�1�hbc;����9�>��c<<5��s�����}�?���rz��������ϯ���<�1|���˯������'�_O��?z7?�Ȓ��KqP�}s��y��g>�o~��7g��S�}sV;�;u�7g��Rs��%�;u�7g��S�}sV;�;u�7g��Rs��%�;��}s?��}s����kef��h�ZA��kP�@^+(5kT;�� J�Z�䵂R�V@�y�`ԹV u 䵂R�V@�y��ԬP�@^+(5kT;�� F�kR�@^+(5kT;�� J�Z�䵂R�V@�q�`Ь��8\+(r���8^+(3kD;�� @@ -3405,19 +3440,19 @@ hV �.��VPj� �v ������k�f��j�ZA��kP�@^+(5kT;�� J�Z�䵂R�V@�y�`ԹV u 䵂R�V@�y��ԬP�@^+(5kT;� -�Z�̎õ�"�ZɊ㵂2�V@�y�p\�Wk��Z���xx8\+�e�p��V��&�e�O��3� +�Z�̎õ�"�ZɊ㵂2�V@�y�p\�Wk��Z���xx<\+�e�p��V��&�e�O��3� �7� -�����o'��o��������o��?��_�痗ó�iC�_�lC�k8jC��mh?�aZ�� �b�qZ�iC#ځ܆�{�5���JM��6�RӆF�� �Դ�Q�@nCu��I]� �Դ�Q�@nC+5mhT;���JM��6�Qg��%���JM��6�RӆF�� �Դ�Q�@lC4mh2;�Њmh$+����L��6�RӆF�� m�ن&u �6�RӆF�� �Դ�Q�@nC+5mhT;���F�mhR�@nC+5mhT;���JM��6�RӆF�� m�ن&u �6�RӆF�� �Դ�Q�@lC+t��Ѭ8lC2mh";����L��6�RӆF�� �Դ�Q�@nCu��I]� �Դ�Q�@nC+5mhT;���JM��6�Qg��%���JM��6�RӆF�� �Դ�Q�@nC�� ��mh�� �jrZ�iC�ځ؆V�hC�Yq܆6�lC�rZ�iC�ځ܆Vj�Шv ����64��mh��64�K ����64��mh�� �jrZ�iC�ځ܆6�lC��rZ�iC�ځ܆Vj�Шv ����64��mh��64�K ����64��mh��64��mhe� �hrڨ� M��mh�� �jrZ�iC�ځ܆Vj�Шv ���:�Ф.�܆Vj�Шv ����64��mh�� �jrڨ� M��mh�� �jrZ�iC�ځ܆Vj�Шv ���:�Ф.�؆V�hC�Yq܆Vf�Јv ����64��mh��64�K ����64��mh�� �jrZ�iC�ځ܆�{�5���JM��6�RӆF�� �Դ�Q�@nCu��I]� �Դ�Q�@nC+5mhT;���JM��6�Aӆ&�� ��цF�� �̴��@nCSqW���s�m���� }�9��m��o)_���m��̇6��f������?}���ͯ�����ުj����wOOG�y�>�����_���A��7�ȗ���Kߨv _�Vj.}�ځ|�ۨ��N�H�ve��v?�a�]��ێb�q�]��#ځ�m�{��5���JM���n�R�mG��ۮ�t�Q�@�uv�I]�ۮ�t�Q�@�+5�vT;���JM���n�Qg���%���JM���n�R�mG��ۮ�t�Q�@�4�v2;���v$+����L���n�R�mG���n��m'u �n�R�mG��ۮ�t�Q�@�+5�vT;���F��vR�@�+5�vT;���JM���n�R�mG���n��m'u �n�R�mG��ۮ�t�Q�@�+tt�Ѭ8�2�v";����L���n�R�mG��ۮ�t�Q�@�uv�I]�ۮ�t�Q�@�+5�vT;���JM���n�Qg���%���JM���n�R�mG��ۮ�t�Q�@�������v��ێjr�]�鶣ځ�mW�趣Yq�m7���r�]�鶣ځ�mWj���v wە�n;���v��n;�K wە�n;���v��ێjr�]�鶣ځ�m7�춓�r�]�鶣ځ�mWj���v wە�n;���v��n;�K wە�n;���v��n;���ve�ێhr�ݨ��N���v��ێjr�]�鶣ځ�mWj���v wۍ:���.��mWj���v wە�n;���v��ێjr�ݨ��N���v��ێjr�]�鶣ځ�mWj���v wۍ:���.��mW�趣Yq�mWf��v wە�n;���v��n;�K wە�n;���v��ێjr�]�鶣ځ�m�{��5���JM���n�R�mG��ۮ�t�Q�@�uv�I]�ۮ�t�Q�@�+5�vT;���JM���n�A�m'��ۮ��mG��ۮ�t��@��U�?��m��1���ǟ�����%���������o��Ot�>����n�x(��n{�������/��>�����|��������������S7w�[��䫿�/�7��N_/���3?�����������1����7���>��/Z��YV���rz<�Ku��ځ��-�Yu��ځ�����?�P��� �����c��<8u<��x�^N�Vݟ��v����=�(���j�����$���j�B�PƨsyC����fy�j��F�Yޠځ��Qj�7�v /o�:�7�.���Q澼A�c.o8�7(V/o��� �����/o@]yy��,oP�@^�(5�T;��7J�����Q���%��7J�����R��A�yy��,oP�@^�u.oH]yy��,oP�@^�(5�T;��7J�����A��!��py�ȱ�A��xy��,o�@^�(5�T;��7F��R�@^�(5�T;��7J�����R��A�yycԹ�!u ��R��A�yy��,oP�@^�(5�T;��7F��R�@^�(5�T;��7J�����B��͊��!��!��xy��,o�@^�(5�T;��7J�����Q���%��7J�����R��A�yy��,oP�@^�u.oH]yy��,oP�@^�(5�T;��7J�����Pߗ7�����Qj�7�v /o��� ������ ���c�� �K /o��� ����fy�j��F�Yޠځ��1�\ސ���F�Yޠځ��Qj�7�v /o��� ������ �K /o��� ����fy�j��F�Yޠځ��1�\ސ���F�Yޠځ��Q�XޠYq��Qf�7�v /o�:�7�.���Qj�7�v /o��� ����fy�j��ƨsyC����fy�j��F�Yޠځ��Qj�7�v /o�:�7�.���Qj�7�v /o��� ����fy�j��ƨsyC������ ���efy�h��F�Yޠځ��1�\ސ���F�Yޠځ��Qj�7�v /o��� �����/o@]yy��,oP�@^�(5�T;��7J�����Q���%��7J�����R��A�yy��,oP�@\�4�2;�7��$+��7������ ME��?Ǿ���1`ys�9�������M���zy���y>������?l�\��ܿ��L������_�����n�g�������o��~������}�����G�����_������k�>c��!O�?���������\Q�go�x]}:�.o�h��,�K��z9��Xu��ځ����V~Q��� �ԗ��۟"*u��ځ���?�G��gY]��k���+��� ���kx�SD����P;�@ݾ�{����P;���} ��e����;8���?{��u�?{C������j}�go�x]}=��_.Nϲ�����U�go�x�n��?���Ƴ7�<P���Q��3���v��q���5<85Ϣ����py���� ���k����� ���k8[u��ځ����5ܹ���,�K��z9=��Ju��ځ����b���j�/�'����f�]'�ϧ�� '�2���w�d���j�O�M����P;�@ݾ���T�go�x]�l_�E��YV��u����?{C��u���7��� ���k����� �����ݫ�mn<��x�^N�/�7��� �ԧ�ݳU�go�x�����go�xphd��o8�YV��u���?{C��u?���q�͊�;.��D;��u�q!u �;.J�T;��(5w\P�@����qA����Q�R�@����qA����Rs���;.J�T;��u�q!u �;.J�T;��(5w\P�@����qA����Q�R�@�����������+��(3w\�@��"��;.���|�E���j�����w\��;.�v �q1��B��w\��;.�v �qQjځ|�E���j���;.�.�|�E���j�����w\��;.�v �q1h�qx�E����w\��;.�v �qQjځ|�Ũ��K �qQjځ|�E���j�����w\�:︐������w\��;.�v �qQjځ|�Ũ��K �qQjځ|�E���j���;.hV�q1d��q|�E���h�����w\��;.�v �q1��B��w\��;.�v �qQjځ|�E���j���;.�.�|�E���j�����w\��;.�v �q��P�@����qA����Rs���;. +�����o'��o��������o��?��_�痗ó�iC�_�lC�k8jC��mh?�aZ�� �b�qZ�iC#ځ܆�{�5���JM��6�RӆF�� �Դ�Q�@nCu��I]� �Դ�Q�@nC+5mhT;���JM��6�Qg��%���JM��6�RӆF�� �Դ�Q�@lC4mh2;�Њmh$+����L��6�RӆF�� m�ن&u �6�RӆF�� �Դ�Q�@nC+5mhT;���F�mhR�@nC+5mhT;���JM��6�RӆF�� m�ن&u �6�RӆF�� �Դ�Q�@lC+t��Ѭ8lC2mh";����L��6�RӆF�� �Դ�Q�@nCu��I]� �Դ�Q�@nC+5mhT;���JM��6�Qg��%���JM��6�RӆF�� �Դ�Q�@nC�� ��mh�� �jrZ�iC�ځ؆V�hC�Yq܆6�lC�rZ�iC�ځ܆Vj�Шv ����64��mh��64�K ����64��mh�� �jrZ�iC�ځ܆6�lC��rZ�iC�ځ܆Vj�Шv ����64��mh��64�K ����64��mh��64��mhe� �hrڨ� M��mh�� �jrZ�iC�ځ܆Vj�Шv ���:�Ф.�܆Vj�Шv ����64��mh�� �jrڨ� M��mh�� �jrZ�iC�ځ܆Vj�Шv ���:�Ф.�؆V�hC�Yq܆Vf�Јv ����64��mh��64�K ����64��mh�� �jrZ�iC�ځ܆�{�5���JM��6�RӆF�� �Դ�Q�@nCu��I]� �Դ�Q�@nC+5mhT;���JM��6�Aӆ&�� ��цF�� �̴��@nCSqW���s�m���ǟ�_؆����u�؆�|hC_n����߾�ӗo��������魪�.��~��tԁ�����K�>����.}�ځ|�[���j�o���7�ȗ��:���.��mW��mG�cv�8��(Vwە�n;���v��w�A]�ۮ�t�Q�@�+5�vT;���JM���n�Qg���%���JM���n�R�mG��ۮ�t�Q�@�uv�I]�ۮ�t�Q�@�+5�vT;���JM���n�A�m'��ۮ��mG��ۮ�t��@�+5�vT;���F��vR�@�+5�vT;���JM���n�R�mG���n��m'u �n�R�mG��ۮ�t�Q�@�+5�vT;���F��vR�@�+5�vT;���JM���n�BG�͊�n�!�m'��ۮ�t��@�+5�vT;���JM���n�Qg���%���JM���n�R�mG��ۮ�t�Q�@�uv�I]�ۮ�t�Q�@�+5�vT;���JM���n�P�����mWj���v wە�n;���v��n;���vc�n;�K wە�n;���v��ێjr�]�鶣ځ�m7�춓�r�]�鶣ځ�mWj���v wە�n;���v��n;�K wە�n;���v��ێjr�]�鶣ځ�m7�춓�r�]�鶣ځ�mW�趣Yq�mWf��v wۍ:���.��mWj���v wە�n;���v��ێjr�ݨ��N���v��ێjr�]�鶣ځ�mWj���v wۍ:���.��mWj���v wە�n;���v��ێjr�ݨ��N���v��n;���ve�ێhr�]�鶣ځ�m7�춓�r�]�鶣ځ�mWj���v wە�n;���v��w�A]�ۮ�t�Q�@�+5�vT;���JM���n�Qg���%���JM���n�R�mG��ۮ�t�Q�@�4�v2;���v$+����L���n�q![u��s�������~�9~�p~9=\�m���m?�n��z�D��<?^ﶏ���춧��7?���~�����ߞ�w����_ދ�ߞ���_>us���<H����r|�������~<���?��߾��㊹?{�����y���:�eu <P/���T�go�x�n�U�go�x�n� x�����P;��=��˃Sdz�.�����l���j����Rݟ��v���} �ORݟ��v��.de�:�7�.���Qj�7�v /o��� ����fy�j��ƨsyC�H�e��?���F�cy�b���F�Y� ځ������5��7J�����R��A�yy��,oP�@^�u.oH]yy��,oP�@^�(5�T;��7J�����Q���%��7J�����R��A�yy��,oP�@\�4�2;�7��$+��7������R��A�yycԹ�!u ��R��A�yy��,oP�@^�(5�T;��7F��R�@^�(5�T;��7J�����R��A�yycԹ�!u ��R��A�yy��,oP�@\�(t,oЬ8\�2�";��7������R��A�yy��,oP�@^�u.oH]yy��,oP�@^�(5�T;��7J�����Q���%��7J�����R��A�yy��,oP�@^��}y����fy�j��F�Yޠځ��Q�XޠYq��1�\����F�Yޠځ��Qj�7�v /o��� ������ �K /o��� ����fy�j��F�Yޠځ��1�\ސ���F�Yޠځ��Qj�7�v /o��� ������ �K /o��� ������ ���efy�h��ƨsyC����fy�j��F�Yޠځ��Qj�7�v /o�:�7�.���Qj�7�v /o��� ����fy�j��ƨsyC����fy�j��F�Yޠځ��Qj�7�v /o�:�7�.���Q�XޠYq��Qf�7�v /o��� ������ �K /o��� ����fy�j��F�Yޠځ������5��7J�����R��A�yy��,oP�@^�u.oH]yy��,oP�@^�(5�T;��7J�����A��!��py�ȱ�A��xy��,o�@^��TD,o�s�˛���pys�9�������M���zy���y>������?l�\��ܿ��L������_�����n�g�������o��~������}�����G�����_������k�>c��!O�?���������\Q�go�x]}:�.o�h��,�K��z9��Xu��ځ����V~Q��� �ԗ��۟"*u��ځ���?�G��gY]��k���+��� ���kx�SD����P;�@ݾ�{����P;���} ��e����;8���?{��u�?{C������j}�go�x]}=��_.Nϲ�����U�go�x�n��?���Ƴ7�<P���Q��3���v��q���5<85Ϣ����py���� ���k����� ���k8[u��ځ����5ܹ���,�K��z9=��Ju��ځ����b���j�/�'����f�]'�ϧ�� '�2���w�d���j�O�M����P;�@ݾ���T�go�x]�l_�E��YV��u����?{C��u���7��� ���k����� �����ݫ�mn<��x�^N�/�7��� �ԧ�ݳU�go�x�����go�xphd��o8�YV��u���?{C��u?���q�͊�;.��D;��u�q!u �;.J�T;��(5w\P�@����qA����Q�R�@����qA����Rs���;.J�T;��u�q!u �;.J�T;��(5w\P�@����qA����Q�R�@�����������+��(3w\�@��"��;.���|�E���j�����w\��;.�v �q1��B��w\��;.�v �qQjځ|�E���j���;.�.�|�E���j�����w\��;.�v �q1h�qx�E����w\��;.�v �qQjځ|�Ũ��K �qQjځ|�E���j�����w\�:︐������w\��;.�v �qQjځ|�Ũ��K �qQjځ|�E���j���;.hV�q1d��q|�E���h�����w\��;.�v �q1��B��w\��;.�v �qQjځ|�E���j���;.�.�|�E���j�����w\��;.�v �q��P�@����qA����Rs���;. w\Ь8��b�yDž�%��(5w\P�@����qA����Rs���;.F�w\H]���Rs���;.J�T;��(5w\P�@��b�yDž�%��(5w\P�@����qA����Rs���;.F�w\H]���Rs���;. w\Ь8����qA����Q�R�@����qA����Rs���;.J�T;��u�q!u �;.J�T;��(5w\P�@����qA����Q�R�@����qA����Rs���;.J�T;��u�q!u �;. -w\Ь8����qA����Rs���;.F�w\H]���Rs���;.J�T;��(5w\P�@��"��;.���|�E���j�����w\��;.�v �q1��B��w\��;.�v �qQjځ|�E���j�����w\9� Yq|�E���h���$�~����dz)χw\�?��?x�߲�q��������.�����vW�ʌG�������ӗ_�{����Ͽ���ϟ����ҟ��3.����q��?�< ����|�p>�Ȋ�������8�`� ���l�!s5�Ȋ�����"+��&���K_0d�Yq|*���@d���C�L���G9o��q|!��9@d��y�C�:�����8N�1�p�����*�!s�Ȋ����E�"+��2����8> �y�Ȏ�K���!�"+���2W���8�`Ȝ� ����� ��Ȏ���!3�'��x�o�,���8��2�"+�G���� ;������Ȋù��ڟ��a��7`��$V�9w�@v�� ��?��Cf�Od��ߐ��Yq<�����q��7d��DV�� �U?�Ǜ~Cf�Od��_�s�d��ߐ�Yq<�7d��DV�� �?��#~A� ?�G~�~�>D�|�hc�O��0��0�}+��������1���jߐ�Yq<�7d�DV�� ��>��c}Aέ>��K}Cf�Od��LߐY�Yq��7d&�DV�9��@v�� �q>���|Cf�Od��.ߐ��Yq8�b6��V.�7��}�9���'��x�o�L�8�r����8^�2#|"+�'����Ȋ���!3�'��x|/ȹ���xyo�8��2�{"+�7����Ȋ��� ��Ȏ㵽!3�'��xjo�,퉬8��q�� ��#{�ec^���ހؓXq<�7d��DVo� �i=���zA�]=�ǫzCfTOd��ސY�Yq��7d��DV��9��@v/� �!=��3zCfEOd��ސ��Yq<��M����%����x�Ȋ��!��'��p7o�1�'�c��87� v/� ��<��syCf-Od��Vސ��Yq<�����q��7dF�DVO� ��<���xCfOd��8^�sd��2ސ�Yq<�7dV�DVo� �I<�ǃxA�=<��kxCfOd��ވc O��0��03x+�G���x ;������Ȋ���!�~'��x�n�L߉�8�r�ށ�8^�2�w"+�'���Ȋ㽻!3w'��x�.ȹu��x�n�݉�8��2+w"+�7��ĝȊほ �Ȏ�u�Ǹ���a<m7`��$V�� �Y;�ǣvA�M;�NjvCf�Nd��ݐY�Yq�e7d��DV�o��;�cr���!3b'��x�n�,؉�8ޯ2�u"+��난�u ;����p�Ȋ�ٺ!�Z'��x�n�L։�8�1{u�+���cu�>��T݀Y��Xq�S?�\��:}�}��a~<R?��8����z�^]��_�ݿ�>������w<�g�S�R�����տ�����Ͽ����M���}��������L=;c��㡏�pi|�O�I]ql�Ա6f�qo��18f�qr�Ա9f�qu��̎Q]qx�Ա<f�q{��1>f�i~��}�f��Y�� #��٩c��j�٩c��j�٩c��j�Y��#��� ٩c��j�&٩c��j�,٩c��j�2Y��&���8٩c��j�>٩c��j�D٩c��j�JY��)���P٩c��j�V١�X�͊ù�3�^���ŲR3YFu �ѲS�j���ݲS�p����S�v�����R3_Fu ��Sǂ��� �SLj����Sǎ���%�R3eFu �1�Sǚ���=�SǠ���I�SǦ���U�R3kFu �a�3�.�Y�F�f��f+����fF;�F�gR�@9;u��Y�@�9;u�Y�@�:;ul�Y�@\;+5sgT�@<;u,�Y�@�<;u��Y�@�=;u�Y�@\>+5�gT�@?;u��Y�@�?;u�Y�@�@;ul�Y�@ZA+t̠��8B;r_B3Yq��v�C3ځ8�v��C�ځ��Vj&Ѩ.�8�v�XE�ځ��v�F�ځ8�v��F�ځ��Vj�Ѩ.�8�v�XH�ځ��v�I�ځ8�v��I�ځ��Vj�Ҩ.�8�v�XK�ځ��v�L�ځ4�v辙f��h5��1�F��p8�̱�f�q;��1�f�q>�Ա�f�qA��L�Q]qD�Ա�f�qG��1�f�qJ�Ա�f�qM��̩Q]qP�Ա�f�qS��1�f�qV�Ա�f�qYm�9�&u �q�SǺ���}�S�������C��5��+keff���Ck���5��[k���5��sk���5���k�fr����k���5���k���5���k���5���k�f~���l��6��l��6��3l��6��Kl�f����cl��56�H{l��l6+'���lF;W�J�,�%��N�lV;��N�lV;��N�lV;�J�D�%G�N+mV;w�NCmV;��N[mV;��J�\�%�N�mV;7�N�mV;g�N�mV;��J�t�%������lV9܌v N��:6ܬv ����7�K ��:�ܬv n��:�ܬv ι�:�ܬv .��:'ݤ��8�v�Xu�ځ��v�v�ځ8�v��v�ځ��Vj�ݨ.�8�v�Xx�ځ��v�y�ځ8�v��y�ځ��V�z��q4�v��f��p���1�f�q� f��������X���s,��������gg��̾�O�ɿ�����/�?�����/?}ހ�_��g���>�� _ ��q���8��'>�}� 0�C�yg�9�#u �q�R3�C�y�Ԍ�P�@�)5�8T;��qF��8R�@�)5�8T;�q +w\Ь8����qA����Rs���;.F�w\H]���Rs���;.J�T;��(5w\P�@��"��;.���|�E���j�����w\��;.�v �q1��B��w\��;.�v �qQjځ|�E���j�����w\9� Yq|�E���h���$�~����dz)/�w\�?��?x�߲�q��������.�����vW�ʌG�������ӗ_�{����Ͽ���ϟ����ҟ��3.����q��?�< ����|�p>�Ȋ�������8�`� ���l�!s5�Ȋ�����"+��&���K_0d�Yq|*���@d���C�L���G9o��q|!��9@d��y�C�:�����8N�1�p�����*�!s�Ȋ����E�"+��2����8> �y�Ȏ�K���!�"+���2W���8�`Ȝ� ����� ��Ȏ���!3�'��x�o�,���8��2�"+�G���� ;������Ȋù��ڟ��a��7`��$V�9w�@v�� ��?��Cf�Od��ߐ��Yq<�����q��7d��DV�� �U?�Ǜ~Cf�Od��_�s�d��ߐ�Yq<�7d��DV�� �?��#~A� ?�G~�~�>D�|�hc�O��0��0�}+��������1���jߐ�Yq<�7d�DV�� ��>��c}Aέ>��K}Cf�Od��LߐY�Yq��7d&�DV�9��@v�� �q>���|Cf�Od��.ߐ��Yq8�b6��V.�7��}�9���'��x�o�L�8�r����8^�2#|"+�'����Ȋ���!3�'��x|/ȹ���xyo�8��2�{"+�7����Ȋ��� ��Ȏ㵽!3�'��xjo�,퉬8��q�� ��#{�ec^���ހؓXq<�7d��DVo� �i=���zA�]=�ǫzCfTOd��ސY�Yq��7d��DV��9��@v/� �!=��3zCfEOd��ސ��Yq<��M����%����x�Ȋ��!��'��p7o�1�'�c��87� v/� ��<��syCf-Od��Vސ��Yq<�����q��7dF�DVO� ��<���xCfOd��8^�sd��2ސ�Yq<�7dV�DVo� �I<�ǃxA�=<��kxCfOd��ވc O��0��03x+�G���x ;������Ȋ���!�~'��x�n�L߉�8�r�ށ�8^�2�w"+�'���Ȋ㽻!3w'��x�.ȹu��x�n�݉�8��2+w"+�7��ĝȊほ �Ȏ�u�Ǹ���a<m7`��$V�� �Y;�ǣvA�M;�NjvCf�Nd��ݐY�Yq�e7d��DV�o��;�cr���!3b'��x�n�,؉�8ޯ2�u"+��난�u ;����p�Ȋ�ٺ!�Z'��x�n�L։�8�1{u�+���cu�>��T݀Y��Xq�S?�\��:}�}��a~<R?��8����z�^]��_�ݿ�>������w<�g�S�R�����տ�����Ͽ����M���}��������L=;c��㡏�pi|�O�I]ql�Ա6f�qo��18f�qr�Ա9f�qu��̎Q]qx�Ա<f�q{��1>f�i~��}�f��Y�� #��٩c��j�٩c��j�٩c��j�Y��#��� ٩c��j�&٩c��j�,٩c��j�2Y��&���8٩c��j�>٩c��j�D٩c��j�JY��)���P٩c��j�V١�X�͊ù�3�^���ŲR3YFu �ѲS�j���ݲS�p����S�v�����R3_Fu ��Sǂ��� �SLj����Sǎ���%�R3eFu �1�Sǚ���=�SǠ���I�SǦ���U�R3kFu �a�3�.�Y�F�f��f+����fF;�F�gR�@9;u��Y�@�9;u�Y�@�:;ul�Y�@\;+5sgT�@<;u,�Y�@�<;u��Y�@�=;u�Y�@\>+5�gT�@?;u��Y�@�?;u�Y�@�@;ul�Y�@ZA+t̠��8B;r_B3Yq��v�C3ځ8�v��C�ځ��Vj&Ѩ.�8�v�XE�ځ��v�F�ځ8�v��F�ځ��Vj�Ѩ.�8�v�XH�ځ��v�I�ځ8�v��I�ځ��Vj�Ҩ.�8�v�XK�ځ��v�L�ځ4�v辙f��h5��1�F��p8�̱�f�q;��1�f�q>�Ա�f�qA��L�Q]qD�Ա�f�qG��1�f�qJ�Ա�f�qM��̩Q]qP�Ա�f�qS��1�f�qV�Ա�f�qYm�9�&u �q�SǺ���}�S�������C��5��+keff���Ck���5��[k���5��sk���5���k�fr����k���5���k���5���k���5���k�f~���l��6��l��6��3l��6��Kl�f����cl��56�H{l��l6+'���lF;W�J�,�%��N�lV;��N�lV;��N�lV;�J�D�%G�N+mV;w�NCmV;��N[mV;��J�\�%�N�mV;7�N�mV;g�N�mV;��J�t�%������lV9܌v N��:6ܬv ����7�K ��:�ܬv n��:�ܬv ι�:�ܬv .��:'ݤ��8�v�Xu�ځ��v�v�ځ8�v��v�ځ��Vj�ݨ.�8�v�Xx�ځ��v�y�ځ8�v��y�ځ��V�z��q4�v��f��p���1�f�q� f��������X���s,��������gg��̾�O�ɿ�����/�?�����/?}ހ�_��g���>�� _ ��q���8��'>�}� 0�C�yg�9�#u �q�R3�C�y�Ԍ�P�@�)5�8T;��qF��8R�@�)5�8T;�q �84+��q��8��q�Q�8��%��qJ�8��q�R3�C�y�Ԍ�P�@�u��H]y�Ԍ�P�@�)5�8T;��qJ�8��q�Q�8��%��qJ�8��q�R3�C�y�Ԍ�P�@�u��H]i��}���0�)p��P�8�)3�8D;��qB}ǁ��8N�ǡځ<�Sj�q�v �㔚q���8��q�K �㔚q���8�f�j�8N�ǡځ<�3�Ǒ��8N�ǡځ<�Sj�q�v �㔚q���8�fGf��8N�c�d��8N��!ځ<�Sj�q�v ��:�q�.�<�Sj�q�v �㔚q���8�f�j�8ΨsG���8�f�j�8N�ǡځ<�Sj�q�v ��:�q�.�<�Sj�q�v �㔚q���8��q���8CfGd��8N��!ځ<�Sj�q�v �㔚q���8��q�K �㔚q���8�f�j�8N�ǡځ<�3�Ǒ��8N�ǡځ<�Sj�q�v �㔚q���8����@]y�Ԍ�P�@�)5�8T;�q �84+��qƜ�8B�@�)5�8T;��qJ�8��q�R3�C�yg�9�#u �q�R3�C�y�Ԍ�P�@�)5�8T;��qF��8R�@�)5�8T;��qJ�8��q�R3�C�yg�9�#u �q�R3�C�q��1�C��x�̌��@�u��H]y�Ԍ�P�@�)5�8T;��qJ�8��q�Q�8��%��qJ�8��q�R3�C�y�Ԍ�P�@�u��H]y�Ԍ�P�@�)5�8T;��qJ�8��q�Q�8��%�q �84+��q��8��q�R3�C�yg�9�#u �q�R3�C�y�Ԍ�P�@�)5�8T;��qB}ǁ��8N�ǡځ<�Sj�q�v �㔚q���8��q�K �㔚q���8�f�j�8N�ǡځ8�3h�qdv��9�qHV�㔙q���8Zv�q~�}�q�v<�;����������3�]�3Q���������<��e���i�ó���림=���~����������N������vy������}��>�0�� u��_~��;��?��KT;���R��/Q�@�� ?�͊�i���/ ]��_*5?�������KT;���R��/Q�@��F�?���%���R��/Q�@��J���䅯R��E�y�kԹ�%u 䅯R��E�y��,|Q�@^�*5_T;��F�_R�@^�*5_T;� _4+������䅯Q��%��J���䅯R��E�y��,|Q�@^�u.|I]y��,|Q�@^�*5_T;��J���䅯Q��%��J���䅯R��E�y��,|Q�@^�u.|I]i��}���0\�*p,|Q�8^�*3_D;��B}_�����W�Y��ځ��Uj��v /|���/��_�΅/�K /|���/��_�f�j��W�Y��ځ��5�\�����W�Y��ځ��Uj��v /|���/��_�f�Kf���W�c�d���W�Y�"ځ��Uj��v /|�:��.���Uj��v /|���/��_�f�j��רs�K��_�f�j��W�Y��ځ��Uj��v /|�:��.���Uj��v /|���/��_���/��_Cf�Kd���W�Y�"ځ��Uj��v /|���/��_�΅/�K /|���/��_�f�j��W�Y��ځ��5�\�����W�Y��ځ��Uj��v /|���/��_��/|A]y��,|Q�@^�*5_T;� _4+��Ɯ_B�@^�*5_T;��J���䅯R��E�y�kԹ�%u 䅯R��E�y��,|Q�@^�*5_T;��F�_R�@^�*5_T;��J���䅯R��E�y�kԹ�%u 䅯R��E�q�б�E��x��,|�@^�u.|I]y��,|Q�@^�*5_T;��J���䅯Q��%��J���䅯R��E�y��,|Q�@^�u.|I]y��,|Q�@^�*5_T;��J���䅯Q��%� -_4+������䅯R��E�y�kԹ�%u 䅯R��E�y��,|Q�@^�*5_T;��B}_�����W�Y��ځ��Uj��v /|���/��_�΅/�K /|���/��_�f�j��W�Y��ځ��5h�dv.|9�HV/|���/��_Z���/~�}��qN{��=�_�|���'���/��u��ߊ=�<\�@�<��{�/��?����������2y����ϿJ��_�������Ƨ�C?���y9�~���o�<{C�����y�R�:�eu <P/����T�go�x�n_�٪��7�<P���Ƥ���j^W�Χ�۟u<��x�^N//Vݟ��v���t����?{C���������Jݟ��v�u�y��:�eu <P���Ƥ���j���Kv��� ���k����� ���/�� �kx�͎; ���,���@;�@ݾ�;����P;�@}9=��_���j^W_ϧ���x��%�@������?{C����t�$���P;�@ݾ�G��x��ځ�gZw�����<��x�n_��I���7�<P����Y���7�<P���l���j܋t�:/��E��"��y���<�v ^�Q�ȃf��Ec<�.�|�G��ȃj�E��"��y���<�v _�1��C��y���<�v _�Qj.�ځ|�G��ȃj�E�<�.�|�G��ȃj�E��"��y���<�v _�1��C��y���<�v ^�Q�ȃf��Ee�"��y�:/��E��"��y���<�v _�Qj.�ځ|�Ǩ�"�K _�Qj.�ځ|�G��ȃj�E��"��y�:/��E��"��y���<�v _�Qj.�ځ|�Ǩ�"�K ]�Q�~�ŏax�G��"��y���<�v _���EP�@�ȣ�\�A��"�Rs���<J�ET;�/�u^�!u �<J�ET;�/�(5yP�@�ȣ�\�A��"�Q�ER�@�ȣ�\�A��"�Rs���<J�ET;/�4y��8�ȣ�q�Ɋ�<��ED;�/�(5yP�@��c�y���%�/�(5yP�@�ȣ�\�A��"�Rs���<F�yH]�"�Rs���<J�ET;�/�(5yP�@��c�y���%�/�(5yP�@�ȣ�\�A��"�B�E4+/�2y��8�ȣ�\�A��"�Rs���<J�ET;�/�u^�!u �<J�ET;�/�(5yP�@�ȣ�\�A��"�Q�ER�@�ȣ�\�A��"�Rs���<J�ET;�/���"�k _�Qj.�ځ|�G��ȃj�E���<hV_�1��C��y���<�v _�Qj.�ځ|�G��ȃj�E�<�.�|�G��ȃj�E��"��y���<�v _�1��C��y���<�v _�Qj.�ځ|�G��ȃj�E�<�.�|�G��ȃj�E���<hV_�Qf.� ځ|�Ǩ�"�K _�Qj.�ځ|�G��ȃj�E��"��y�:/��E��"��y���<�v _�Qj.�ځ|�Ǩ�"�K _�Qj.�ځ|�G��ȃj�E��"��y�:/��E���<hV_�Qf.� ځ|�G��ȃj�E�<�.�|�G��ȃj�E��"��y���<�v _���EP�@�ȣ�\�A��"�Rs���<J�ET;�/�u^�!u �<J�ET;�/�(5yP�@�ȣ�\�A��"�As��̎Ë<�y��8�ȣ�\�A��"ݚy�s�y>�9��s�9~�p~9=��U�?��z�������=<���i������9��<��/��|���Ͽ�����?���=�����k3���{��_����뿚����s���C>��ځ<Qj�!�v C�:�!�.�<Qj�!�v C��a����f�j�0ĨsB����f�j�0D���ځ<Qj�!�v C�:�!�.�4Q�>A�cC8�!(VC��a�����C@]y��CP�@�(5�T;��!J�0��a�Q�0��%��!J�0��a�R3A�y��CP�@�uCH]y��CP�@�(5�T;��!J�0��a�A3!��p��1A��x��C�@�(5�T;��!F��R�@�(5�T;��!J�0��a�R3A�yb�9!u �a�R3A�y��CP�@�(5�T;��!F��R�@�(5�T;��!J�0��a�B�0͊�a�!3!��x��C�@�(5�T;��!J�0��a�Q�0��%��!J�0��a�R3A�y��CP�@�uCH]y��CP�@�(5�T;��!J�0��a�P߇!���<Qj�!�v C��a�����a���c�a�K C��a����f�j�0D���ځ<1�����0D���ځ<Qj�!�v C��a�����a�K C��a����f�j�0D���ځ<1�����0D���ځ8Q���Yq<Qf�!�v C�:�!�.�<Qj�!�v C��a����f�j�0ĨsB����f�j�0D���ځ<Qj�!�v C�:�!�.�<Qj�!�v C��a����f�j�0ĨsB�����a���ef�h�0D���ځ<1�����0D���ځ<Qj�!�v C��a�����C@]y��CP�@�(5�T;��!J�0��a�Q�0��%��!J�0��a�R3A�y��CP�@�4�2;�!��$+��!��0��a-�0?�>���x9���0�r>=���0d<�a�=C����嗟�m�����w?�a��_���~���oϏ����˯����_~��sq�|z�>ɇ���ull��\�5���_���}�K<��}� ЛC��7����P�@��4�92;{s��9$+�{s�Lo��ޜRӛC��7g�ٛ#u �ޜRӛC��7����P�@��)5�9T;�{sF��9R�@��)5�9T;�{sJMo��ޜRӛC��7g�ٛ#u �ޜRӛC��7����P�@��)t��Ь8��2�9";�{s�Lo��ޜRӛC��7����P�@��u��H]�7����P�@��)5�9T;�{sJMo��ޜQgo��%�{sJMo��ޜRӛC��7����P�@�� ��7�Ƚ9��7�jroN��͡ځ؛S��͡Yqܛ3����roN��͡ځܛSjzs�v �攚��Ƚ9����K �攚��Ƚ9��7�jroN��͡ځܛ3��͑�roN��͡ځܛSjzs�v �攚��Ƚ9����K �攚����9����ǽ9e�7�hroΨ�7G�Ƚ9��7�jroN��͡ځܛSjzs�v ��:{s�.�ܛSjzs�v �攚��Ƚ9��7�jroΨ�7G�Ƚ9��7�jroN��͡ځܛSjzs�v ��:{s�.�؛S��͡YqܛSfzs�v �攚��Ƚ9����K �攚��Ƚ9��7�jroN��͡ځܛ�{o�5�{sJMo��ޜRӛC��7����P�@��u��H]�7����P�@��)5�9T;�{sJMo��ޜAӛ#��7��ћC��7�����@��w�To?�ޛ�XR;����7w�7�=�t���HZs�њ��_~�ߞ�����'����������x?S����_��n'����?g���9?�<_����z�S\!�G����i�_l��e����_{q��'�vݻ?��o��P��Q;��~�$�?�d��ۯ��#�G���r����W�!�G�������(�#ǣHv�����?8r�Ɋ; �_���1h��Q&+����;I�2Yq�ɇ����I��Q$;l�!=;r�Ɋ; �Nwϒ�e��ȗӣ�o��(�w�|�~��o#�Q$;��~�$�?�d���/��o��I?�xۯ���62e��~���+���(�w@�*a��� +_4+������䅯R��E�y�kԹ�%u 䅯R��E�y��,|Q�@^�*5_T;��B}_�����W�Y��ځ��Uj��v /|���/��_�΅/�K /|���/��_�f�j��W�Y��ځ��5h�dv.|9�HV/|���/��_Z���/~�}��qN{��=�_�|���'���/��u��ߊ=�<\�@�<��{�/��?����������2y����ϿJ��_�������Ƨ�C?���y9�~���o�<{C�����y�R�:�eu <P/����T�go�x�n_�٪��7�<P���Ƥ���j^W�Χ�۟u<��x�^N//Vݟ��v���t����?{C���������Jݟ��v�u�y��:�eu <P���Ƥ���j���Kv��� ���k����� ���/�� �kx�͎; ���,���@;�@ݾ�;����P;�@}9=��_���j^W_ϧ���x��%�@������?{C����t�$���P;�@ݾ�G��x��ځ�gZw�����<��x�n_��I���7�<P����Y���7�<P���l���j܋t�:/��E��"��y���<�v ^�Q�ȃf��Ec<�.�|�G��ȃj�E��"��y���<�v _�1��C��y���<�v _�Qj.�ځ|�G��ȃj�E�<�.�|�G��ȃj�E��"��y���<�v _�1��C��y���<�v ^�Q�ȃf��Ee�"��y�:/��E��"��y���<�v _�Qj.�ځ|�Ǩ�"�K _�Qj.�ځ|�G��ȃj�E��"��y�:/��E��"��y���<�v _�Qj.�ځ|�Ǩ�"�K ]�Q�~�ŏax�G��"��y���<�v _���EP�@�ȣ�\�A��"�Rs���<J�ET;�/�u^�!u �<J�ET;�/�(5yP�@�ȣ�\�A��"�Q�ER�@�ȣ�\�A��"�Rs���<J�ET;/�4y��8�ȣ�q�Ɋ�<��ED;�/�(5yP�@��c�y���%�/�(5yP�@�ȣ�\�A��"�Rs���<F�yH]�"�Rs���<J�ET;�/�(5yP�@��c�y���%�/�(5yP�@�ȣ�\�A��"�B�E4+/�2y��8�ȣ�\�A��"�Rs���<J�ET;�/�u^�!u �<J�ET;�/�(5yP�@�ȣ�\�A��"�Q�ER�@�ȣ�\�A��"�Rs���<J�ET;�/���"�k _�Qj.�ځ|�G��ȃj�E���<hV_�1��C��y���<�v _�Qj.�ځ|�G��ȃj�E�<�.�|�G��ȃj�E��"��y���<�v _�1��C��y���<�v _�Qj.�ځ|�G��ȃj�E�<�.�|�G��ȃj�E���<hV_�Qf.� ځ|�Ǩ�"�K _�Qj.�ځ|�G��ȃj�E��"��y�:/��E��"��y���<�v _�Qj.�ځ|�Ǩ�"�K _�Qj.�ځ|�G��ȃj�E��"��y�:/��E���<hV_�Qf.� ځ|�G��ȃj�E�<�.�|�G��ȃj�E��"��y���<�v _���EP�@�ȣ�\�A��"�Rs���<J�ET;�/�u^�!u �<J�ET;�/�(5yP�@�ȣ�\�A��"�As��̎Ë<�y��8�ȣ�\�A��"ݚy�s�y>�9��s�9~�p~9=��U�?��z�������=<���i������9��<��/��|���Ͽ�����?���=�����k3���{��_����뿚����s���C>��ځ<Qj�!�v C�:�!�.�<Qj�!�v C��a����f�j�0ĨsB����f�j�0D���ځ<Qj�!�v C�:�!�.�4Q�>A�cC8�!(VC��a�����C@]y��CP�@�(5�T;��!J�0��a�Q�0��%��!J�0��a�R3A�y��CP�@�uCH]y��CP�@�(5�T;��!J�0��a�A3!��p��1A��x��C�@�(5�T;��!F��R�@�(5�T;��!J�0��a�R3A�yb�9!u �a�R3A�y��CP�@�(5�T;��!F��R�@�(5�T;��!J�0��a�B�0͊�a�!3!��x��C�@�(5�T;��!J�0��a�Q�0��%��!J�0��a�R3A�y��CP�@�uCH]y��CP�@�(5�T;��!J�0��a�P߇!���<Qj�!�v C��a�����a���c�a�K C��a����f�j�0D���ځ<1�����0D���ځ<Qj�!�v C��a�����a�K C��a����f�j�0D���ځ<1�����0D���ځ8Q���Yq<Qf�!�v C�:�!�.�<Qj�!�v C��a����f�j�0ĨsB����f�j�0D���ځ<Qj�!�v C�:�!�.�<Qj�!�v C��a����f�j�0ĨsB�����a���ef�h�0D���ځ<1�����0D���ځ<Qj�!�v C��a�����C@]y��CP�@�(5�T;��!J�0��a�Q�0��%��!J�0��a�R3A�y��CP�@�4�2;�!��$+��!��0��a-�0?�>���x=���0�r>=���0d<�a�=C����嗟�m�����w?�a��_���~���oϏ����˯����_~��sq�|z�>ɇ���ull��\�5���_���}�K<��}� ЛC��7����P�@��4�92;{s��9$+�{s�Lo��ޜRӛC��7g�ٛ#u �ޜRӛC��7����P�@��)5�9T;�{sF��9R�@��)5�9T;�{sJMo��ޜRӛC��7g�ٛ#u �ޜRӛC��7����P�@��)t��Ь8��2�9";�{s�Lo��ޜRӛC��7����P�@��u��H]�7����P�@��)5�9T;�{sJMo��ޜQgo��%�{sJMo��ޜRӛC��7����P�@�� ��7�Ƚ9��7�jroN��͡ځ؛S��͡Yqܛ3����roN��͡ځܛSjzs�v �攚��Ƚ9����K �攚��Ƚ9��7�jroN��͡ځܛ3��͑�roN��͡ځܛSjzs�v �攚��Ƚ9����K �攚����9����ǽ9e�7�hroΨ�7G�Ƚ9��7�jroN��͡ځܛSjzs�v ��:{s�.�ܛSjzs�v �攚��Ƚ9��7�jroΨ�7G�Ƚ9��7�jroN��͡ځܛSjzs�v ��:{s�.�؛S��͡YqܛSfzs�v �攚��Ƚ9����K �攚��Ƚ9��7�jroN��͡ځܛ�{o�5�{sJMo��ޜRӛC��7����P�@��u��H]�7����P�@��)5�9T;�{sJMo��ޜAӛ#��7��ћC��7�����@��w�To?�ޛ�XR;����7w�7�=�t���HZs�њ��_~�ߞ�����'����������x?S����_��n'����?g���9?�<_����z�S\!�G����i�_l��e����_{q��'�vݻ?��o��P��Q;��~�$�?�d��ۯ��#�G���r����W�!�G�������(�#ǣHv�����?8r�Ɋ; �_���1h��Q&+����;I�2Yq�ɇ����I��Q$;l�!=;r�Ɋ; �Nwϒ�e��ȗӣ�o��(�w�|�~��o#�Q$;��~�$�?�d���/��o��I?�xۯ���62e��~���+���(�w@�*a��� "+�D�!�*��8���̏� ����Sr�l ;�2�!�)��8����O� ���gR2?��Ȋ�H!���(��8�i��� ���GQ2?��Ȋ�Ca�� "+�� �Ϡ����'Pp��}��?a���'���?{��$V������ϝ8&�8����� ���GN2?q�Ȋ�7a��� "+� �Ϛ����'M2?h�Ȋ�3a��� "+�Ƅ!�#&��8���?_Ȏ�.aȌd��8��2Y"+�����<�Ȋ�q�����pk�1�%�c�b �U,�ǛXCfKd�� V�sd���Yq<�5d��DV�` �,��#XA� ,��XCf�Kd���ՐY�Yq�}5d��DV_9w�@v�^ ��+�ǓWCf�Jd���Ոc�J��0� @@ -3430,142 +3465,133 @@ rnK �GЬ8�>�̜A����Q�R�@�A��!A���Rs���K$J�)T;���u^#!u �{$J�AT;�O�(57IP�@�J�Ԝ%A��0�Q�eR�@�M��'A��<�Rs���%J͉T;���u^)!u �;%�����1O�(p�*A���Z�2s���%B}�X��7K���%�v �-Qjځ|�D�9]�j�����%�.�|�D�9`�j� �� ��WL��3&�v 21�dB�ȷL��c&�v �3Qjځ|�D�9i�j�Q�� ��wM9� Yq|�D��m�h�u�� ��N�:/������� ��gN��;'�v _:QjN��ځ|�Ĩ�� �K �;Qj��ځ|�D��y�j����� �ȇO�:/�������� ���O���'�v ^@Q�8��f��C� ��wP��C(�v �BQjn��ځ| E�9��j�A�(�.�|E�9��j�Y��. -�ȗQ���(�v G1꼎B���Q��)�v �HQjn��ځ|%E�9��j���_Ju �[)JͱT;�ϥ(5�RP�@����q2͊�)ƜWS]�n�Rs8���)J��T;���(5�SP�@>�b�yA��%�o�(5GTP�@>����QA����RsJ��c*F��TH]���RsP��*J�MT;���(5gUP�@>�b�yY��%�o�(5�UP�@<���q_͊�+�̉D;���u^Y!u �;+J͡T;�O�(5�VP�@���Ԝ[A����Q��R�@����]A���Rsw���+J��T;���u^_!u ��+J�T;�O�(57XP�@�¢ԜaA���Q�%R�@�Ţ�q�͊�s,��=D;�/�(5'YP�@>�b�y���%��(5�YP�@>͢��fA��:�Rs���-B}����7Z��#-�v �iQjځ|�E�9Ղj���k-�.�|�E�9j����f��W[���-�v n1h.���qx�E��x���[���-�v _p9�I�N����o�|<��zx���s|����W���b�I9�n���{+��Oԫ���P������o~������?�q����˟��������o��|���_���������������������������_~��~�i���~���w���O���i?��y}=: 3_��_m��W{����9~A�j�Z��-�K ��u�xA�j�Z����v ��u�xA�j�Z��-�K ��u�xA�j�Z����v ��u�xA�j�Z��������֩�-��/h�:^вځ�֡�Z6+_�*3/h]��S�ZV;_�:u��e���S�ZV;_�*5/hQ]��S�ZV;_�:u��e���S�ZV;_�*5/hQ]��S�ZV;_�:u��e���S�ZV;_�*5/hQ]��S�ZV;�^�:tA�f��Zg���v ��Uj^Т��Z����v ��u�xA�j�Z����v ��Uj^Т��Z����v ��u�xA�j�Z����v ��Uj^Т��Z����v ��u�xA�j�Z����v ��Uj^Т��Z��/h٬8|A������N/hY�@|A�Լ�Eu ��N/hY�@|A������N/hY�@|Ak�����5_�:u��e���S�ZV;_�:u��e���R��%_�:u��e���S�ZV;_�:u��e���B�Z4;�^�:rA�d��Zg���v ���7��-���������9���/h�_O��O��v<�����?���rv����o/��{��{��ͺ�O���y{��?�����O����o?~��(l/p��:�[ܿ��˷����?�������N���o��`������i��J>5����f��_�<��W���ϕr|��%o�8u��a��S� V;o�8u��a��Rs��%o�8u��a��S� V;o�8u��a�醏B� 4;�n�8r���d�� g�>�v ��q���j� ���K ��q���j� ��>�v ��q���j� ���K ��q���j� ��>�v ��q���j� ���K ��q���j� ��>�v ��q�~Ç͊�>�7|��8����qÇ��>NME�䊨RSE��"j�Y%u 䊨RSE��"��TDQ�@��*5QT;�+�F�QR�@��*5QT;�+�JME�䊨RSE��"*���(�k WD���(��Q��"�jbET��"�f�qEԘ�"J��Q��"�jrET����ځ\Uj*��v WD�:+��.�\Uj*��v WD���(��Q��"�jrEԨ�"J��Q��"�jrET����ځ\Uj*��v WD�:+��.�\Uj*��v VD:*�hVWD���(��Q�Ί(�K WD���(��Q��"�jrET����ځ\5��rET����ځ\Uj*��v WD���(��Q�Ί(�K WD���(��Q��"�jrET����ځ\5��bET��"�f�qET���"ځ\Uj*��v WD�:+��.�\Uj*��v WD���(��Q��"�jrET��QP�@��*5QT;�+�JME�䊨RSE��"j�Y%u 䊨RSE��"��TDQ�@��*5QT;+�ME�̎Ê�"GEɊ㊨2SE��"J=DQ�ϱWD?|�ǻÊ��������?1�>��:O_�@OO��=?\�@�<�DN�5�����?wx^�����~��/��[,}�d���������)��A>��YV���rz}��Y����P;�@}:=���]��ٙ]�Wxg�3*+��V9$�&bl�v8B7�&Ԅ�&�h)8��Yx�>Y�T�+o$'�V��j4����h��g�X�c=�^n��u��k߷>���9k��l]�;�����Z��^�6p��p8��)���+��X�O/sVY��^�6�}����p/��l]�;����HY��^�6p�z�1��'�w��g�X�c=�n�u��k߷>��O��G�ٸ��gp<J���+��X�?�k�>{�����������>{���������� g|��p�z:�E��n��bm����p� ���bm����c�����^�6��w�o�?�;g�gѺw����AZ��^�6p�z�1�>J���+��X�?���n��bm������p�~��gٺ�w�����n��bm����p|����W� ܱ>����,��������~��gY��w�����n��bm����3������W� ܱ� -w'i�>{��������$��l]�;����NZ��^�6p�z�1�o8�W� ܱ�7ֺ}�����[�g����,[���t�����^�6p��p�y����W� ܱ>�ퟅ�g�X�����c����ϲu�X�?�;k�>{������ �$�}�p;����$���"m��և���VZ�gٺ�w���Q�67>{������pc��g�X�c}:�=����g�X�������$�<>���c=��u��kw��������g�X�c=���os�W� |��t�1�I��,[����c8����g�X�c=�n�os�W� ܱ�Gk�>{�������Í�mn|��p�z�1H��'�_�v|��_Y��^1nG�t8=����g�H�~0ussxzt���h]�;����`��g�X�c=��OҺ}����;ֱf����Aky�X�<Y ��(k�q��@��Q��㠵�<�����Aky�X�<Y ��(k�q��@��Q��㠵�<�����Akq�H3�C���<�R�yT��q�3�8(m ��(k�q��@��1�9�C���8ʚy�6��q�5�8hm ��(k�q��@��1�9�C���8ʚy�6��q�5�8hm ��(k�q��@��1�9�C���8ʚy�6��q�5�8hm ��(��Ag�p�(3�C���<�rf� �ye�<Z��8ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6��q��2����8ʚy�6��q�5�8hm ��(��Ag�x�8�<I ��(k�q��@��Q��㠵�<�����Aky�X�<Y ��(k�q��@��Q��㠵�<�����Aky�X�<Y ��(k�q��@��Q��㠵�<�����Aky�X�<Y ��(k�q��@��Q�1�����<�rf� �yc��8d]�<�����AkyGY3����<��f� �yc��8d]�<�����AkyGY3����<��f� �yc��8d]�<�����AkyGY3����<��f� �yc��8d]�8���c���y��<J��8ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6��q��2����8ʚy�6��q�5�8hm ��(k�q��@��1�9�C���8ʚy�6��q�5�8hm ��(k�q��@��1��㐳q8���c���y��<J��8��/j��6���k�<����_P�?�O����Lr�x����>}�m�������~����O��l���>�����_��>�t{s���!�������(��o������|����x�{q� �/s� ��e�� ��"p'H��w�ʚ;A�6���5w�hm � *k���@�4�� ��qx'���N���;A�̝ J�w�ʚ;A�6���u� �u�N� �;Ae͝ Z�w�ʚ;A�6���u� �u�N� �;Ae͝ Z�w�ʚ;A�6���u� �u�N� �;Ae͝ Z�w�J:��Y8�4�� ��q|'���Di�NPYs'���N� �;Ac�w�d]�|'���Dk�NPYs'���N� �;Ac�w�d]�|'���Dk�NPYs'���N� �;Aa�� �u�N� �;Ae͝ Z�w�J:��Y8�4�y'H��w�ʚ;A�6���5w�hm � *k���@�4�y'H��w�ʚ;A�6���5w�hm � *k���@�4�y'H��w�ʚ;A�6���5w�hm � *k���@�4�y'H��w�ʚ;A�6��t� ��p|'���Di�N�X� Y � *k���@�T�� ���|'���Dk�N�X� Y � *k���@�T�� ���|'���Dk�N�X� Y � *k���@�T�� ���|'���Dk�N�X� Y � *�Dg��NP9s'���N� �;Ac�w�d]�|'���Dk�NPYs'���N� �;Aa�� �u�N� �;Ae͝ Z�w�ʚ;A�6���u� �u�N� �;Ae͝ Z�w�ʚ;A�6��4w��l� *�De��NP9s'��� ݫ�;A�૯w�������翮yF���sz�}��xx<��I�|�������#?�и���}���Ͽ}��˕W��|{s��+��]������W���U�=��U�����Uo��\����Uʚ����@|��H�r9�/W)g^�Bi��*e��Uhm �\��y� +�ȗQ���(�v G1꼎B���Q��)�v �HQjn��ځ|%E�9��j���_Ju �[)JͱT;�ϥ(5�RP�@����q2͊�)ƜWS]�n�Rs8���)J��T;���(5�SP�@>�b�yA��%�o�(5GTP�@>����QA����RsJ��c*F��TH]���RsP��*J�MT;���(5gUP�@>�b�yY��%�o�(5�UP�@<���q_͊�+�̉D;���u^Y!u �;+J͡T;�O�(5�VP�@���Ԝ[A����Q��R�@����]A���Rsw���+J��T;���u^_!u ��+J�T;�O�(57XP�@�¢ԜaA���Q�%R�@�Ţ�q�͊�s,��=D;�/�(5'YP�@>�b�y���%��(5�YP�@>͢��fA��:�Rs���-B}����7Z��#-�v �iQjځ|�E�9Ղj���k-�.�|�E�9j����f��W[���-�v n1h.���qx�E��x���[���-�v _p9�I�N����o�|��w�G\�?��;1o�_�(��������o������D�����q9�K.��_��o?����������߾����������_~�u���������?��~�������?���?���~�����ǿ���/�^{��������I��ף�0�-��桏��/h�|����v ��Uj^Т��Z����v ��u�xA�j�Z����v ��Uj^Т��Z����v ��u�xA�j�Z����v ��5�|AK��/h�:^вځ��֩�-�H/h���e����2��%_�:u��e���S�ZV;_�:u��e���R��%_�:u��e���S�ZV;_�:u��e���R��%_�:u��e���S�ZV;_�:u��e���R��%_�:u��e���C��lV��u�xA�h�Z��-�K ��u�xA�j�Z����v ��u�xA�j�Z��-�K ��u�xA�j�Z����v ��u�xA�j�Z��-�K ��u�xA�j�Z����v ��u�xA�j�Z��-�K ��u����͊���/h�@|A������J�ZT�@|A������N/hY�@|A������F�/hI]��S�ZV;_�:u��e���S�ZV;_�*5/hQ]��S�ZV;_�:u��e���S�ZV;�^�*t��E����#��LV��u�xA�h�ZxCh^������Ǐq��>���|��������_Ўg��~����_�^�n��_����w/��oO��Y��I��9o����?�߿�闟���/������^ǣy��w�|������w�����8�������?�y>=��7��_����r���>�+��>�J���A�o���� ��>�v ��q���j� ��>�v ��Qjn���� ��>�v ��q���j� ��>�v ��Q��f�� G�7|��8����qÇ��>N7|X�@�����Au �>N7|X�@����qÇ��>N7|X�@�����Au �>N7|X�@����qÇ��>N7|X�@�����Au �>N7|X�@����qÇ��>�o��Yqt�G����7|�9n�0ځx�ǩ���ځ\Uj*��v WD�:+��.�\Uj*��v WD���(��Q��"�jrEԨ�"J��Q��"�jrET����ځ\Uj*��v WD��^u 䊨RSE��"��TDQ�@��*tTDѬ8��sVD ]�"��TDQ�@��*5QT;�+�JME�䊨QgE��%�+�JME�䊨RSE��"��TDQ�@��uVDI]�"��TDQ�@��*5QT;�+�JME�䊨QgE��%�+�JME�Ċ�BGE͊㊨2SE��"j�Y%u 䊨RSE��"��TDQ�@��*5QT;�+�F�QR�@��*5QT;�+�JME�䊨RSE��"j�Y%u 䊨RSE��"��TDQ�@��*5QT;�+�F�QR�@��*tTDѬ8��*3QD;�+�JME�䊨QgE��%�+�JME�䊨RSE��"��TDQ�@�� +��" +��Q��"�jrET����ځ\Uj*��v WD�:+��.�\Uj*��v WD���(��Q��"�jbEԠ����qXU䨈"Yq\Uf*��v WD��(*��9��臏�x>����>py�S���������������4��#{A��\�Y>���i�s�������������rz������O��;?�Oo����:�eu <P/�?�U��� ������k�3;��� +`Fee}ފ#���D�M�G�ӄ����-��;��'k��w�⍂�$�JtQ�f�Y�<�ֺ}����;����HY��^�6�}���pz����:>���c=���u��kw����M��n��bm�������7g�u��k߷>���:>���c=�^n��u��kw�����|Ǻ}����;����Z��^�6�}���� �4�}����Q�ǣtn��"m����3�����W� ܱ>�����W� |��|<�>��p�gٺ�w���_�X���+��X����+��X�?�{����k�����c�s�|�+p�z�1��u��kw������n��bm����c8Z���+��o=�7|��p�z:<<?K���+��X�'k�>{�����������+�½��=���7�|��p�z�<X���+��X�?��[i�>{������pw����W� |�z:�N�:>���c=�n�u��kw���Q��3>{������pc��g�X����x�y��͍ϲu�XO��'����kw���Gk�>{��������Yx|�����[��?�{���,[����c�����W� ܱ��O�G�8��<�N�7���+��o}8�n�u|��p�z��os�W� ܱ� +7ֺ}����;֧�ݳ�mn|�����[o�O�?��l]�;�����Z��^�6p�z���mn|����;���^�67>{�����O�Ý��ϲu�X�?���mn|����;���V�67>{������p����W� |��|�1�����gٺ�w���t�|��5l�w���u��c�v�O�ӓ� n|�����S77��G�[M>���c=Nֺ}����;��O��$��g�X�ck6ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6�q�4�8�l��(��Ae�xG93����<��f� �yc��8d]�<�����AkyGY3����<��f� �yc��8d]�<�����AkyGY3����<��f� �yc��8d]�<�����AkyGY3����<���yt�q�2�8�l��(g�qP�@��Q��㠵�<�����Aky�X�<Y ��(k�q��@��Q��㠵�<�����Aky�X�<Y ��(k�q��@��Q��㠵�<�����AkyGX/�8`]�<�����AkyGY3����<���yt��q�s��t�<��f� �ye�<Z��8ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6��q�u��u�<��f� �ye�<Z��8ʚy�6��q�u��u�<��f� �y%�8�,��(g�qP�@��1�9�C���8ʚy�6��q�5�8hm ��(k�q��@��1�9�C���8ʚy�6��q�5�8hm ��(k�q��@��1�9�C���8ʚy�6��q�5�8hm ��(k�q��@��1�9�C���8J:�q�Y8��Q��㠴�<�����Aky�X�<Y ��(k�q��@��Q��㠵�<�����AkyGX/�8`]�<�����AkyGY3����<��f� �yc��8d]�<�����AkyGY3����<��f� �y#�<9��8J9�qPY8��Q��㠴�<������q�{l�8��������������/(��d �x����ӷ߶��������t�������㯟��������O�7���}���o�_���^}ͷ�O�ǽ�� �2��_�����/w�d]�|'���Dk�NPYs'���N� �;A#͝ 9�w�J9�QY8�T�� ���|'���Dk�N�X� Y � *k���@�T�� ���|'���Dk�N�X� Y � *k���@�T�� ���|'���Dk�N�X� Y � *k���@�T�� ���x'���N���;A�̝ )�w�ʙ;A�6���5w�hm � *k���@�4�y'H��w�ʚ;A�6���5w�hm � *k���@�4�y'H��w�ʚ;A�6���5w�hm � *k���@��˝ XW � *k���@�T�� ���x'���N���;A�w�$]�|'���Dk�NPYs'���N� �;Ac�w�d]�|'���Dk�NPYs'���N� �;Ac�w�d]�|'���Dk�NPYs'���N� �;Ac�w�d]�|'���Dk�NPIǝ :�w�ʙ;A�6���u� �u�N� �;Ae͝ Z�w�ʚ;A�6���u� �u�N� �;Ae͝ Z�w�ʚ;A�6���u� �u�N� �;Ae͝ Z�w�ʚ;A�6���u� �u❠��;At���3w�(m � *k���@�4�y'H��w�ʚ;A�6���5w�hm � *k���@��˝ XW � *k���@�T�� ���|'���Dk�N�X� Y � *k���@�T�� ���|'���Dk�N�Hs'H��ᝠR�;AT���3w�(m � ҽ����� ��p'��=��p����g��<���g����8�y���:�^���L>����?���������/�\yU��W��7�?����xx���{Uo�\�s�\���\�����Uhm �\��y� +� ė��4/W��q�r�r��*�6�_�Rּ\����Uʚ����@~��X��Ud]��r����*�6�_�Rּ\����Uʚ����@~�JX//W�u��Uʚ����@~�JY�rZ�/W)k^�Bk��*c�/W�u��Uʚ����@~�JY�rZ�/W)�x� +��㗫�s�\E��/W)k^�Bk��*e��Uhm �\��y� +� 䗫�u�\E��/W)k^�Bk��*e��Uhm �\��y� � 䗫�u�\E��/W)k^�Bk��*e��Uhm �\��y� -� 䗫���rXW �\��y� +� 䗫�u�\E��/W)k^�Bk��*%/W��p�r�r��*�6�_�2��rY �\��y� � 䗫�5/W����r����*�6�_�2��rY �\��y� -� 䗫�5/W����r������Y8~��8��U$]��r����*�6�_�Rּ\����Uʚ����@~��X��Ud]��r����*�6�_�Rּ\����Uʚ����@~��X��Ud]��r����*�6�_�Rּ\����Uʚ����@~��X��Ud]��r����*�6_�R��r:�/W)g^�Bi��*c�/W�u��Uʚ����@~�JY�rZ�/W)k^�Bk��*c�/W�u��Uʚ����@~�JY�rZ�/W)k^�Bk��*c�/W�u��Uʚ����@~�JY�rZ�/W)k^�Bk��*c�/W�u��Uʹ�\���0|�J ��Uh,�\��y� -� 䗫���rXW �\��y� � 䗫�5/W����r����*�6�_�2��rY �\��y� -� 䗫�5/W����r��f�� �E -c��d]��H��Y�@ky�BY�H���"��f�� �E -#�"9��J9)PY8^�P�,R����H��Y�@ky��X�"Y /R(k)��@^�P�,R����H��Y�@ky��X�"Y /R(k)��@^�P�,R����H��Y�@ky��X�"Y /R(k)��@^�P�,R����H��c����E -��")NjʙE -�6�)�5�hm /R(k)��@^�0ֹHA�ȋʚE -�6�)�5�hm /R(k)��@^�0ֹHA�ȋʚE -�6�)�5�hm /R(k)��@^���"XW /R(k)��@^�P�,R����H��c����E -㜋$]��H��Y�@ky�BY�H���"��f�� �E -c��d]��H��Y�@ky�BY�H���"��f�� �E -c��d]��H��Y�@ky�BY�H���"��f�� �E -c��d]��H��Y�@kq�BI�":NjʙE -�6�)�u.R�u�"��f�� �E +� 䗫�5/W����r����*�6�_�2��rY �\����Uh| ×��p�\�����Uʙ��P�@~�JX//W�u��Uʚ����@~�JY�rZ�/W)k^�Bk��*c�/W�u��Uʚ����@~�JY�rZ�/W)k)��@^�0ֹHA�ȋʚE +�6�)�5�hm /R(k)��@\�0�,R��q�H��c����E +��"JȋʚE +�6�)�u.R�u�"��f�� �E +e�"ZȋʚE +�6�)�u.R�u�"��f�� �E e�"ZȋʚE �6�)�u.R�u�"��f�� �E +e�"Z��J:)�Y8\�0�,R��q�H��Y�@iy�BY�H���"��f�� �E +c��d]��H��Y�@ky�BY�H���"��f�� �E +c��d]��H��Y�@ky�BY�H���"��f�� �E +a�,R�u�"��f�� �E +e�"Z��J:)�Y8^�0ιHA�ȋʚE +�6�)�5�hm /R(k)��@^�0ֹHA�ȋʚE +�6�)�5�hm /R(k)��@^�0ֹHA�ȋʚE +�6�)�5�hm /R(k)��@^�0ֹHA�ȋʚE +�6)�t,R��p�H��Y�@iy��X�"Y /R(k)��@^�P�,R����H��Y�@ky��X�"Y /R(k)��@^�P�,R����H��Y�@ky��X�"Y /R(k)��@^�P�,R����H��Y�@ky��X�"Y .R(�X�@g�x�B9�H���"��f�� �E +c��d]��H��Y�@ky�BY�H���"��f�� �E +a�,R�u�"��f�� �E e�"ZȋʚE �6�)�u.R�u�"��f�� �E e�"ZȋʚE -�6�)�u.R�u�"���E -t�)�3�(m /R(k)��@^�0ֹHA�ȋʚE -�6�)�5�hm /R(k)��@^���"XW /R(k)��@^�P�,R����H��Y�@ky��X�"Y /R(k)��@^�P�,R����H��Y�@kq��H�HA���"�R�E -T�)�3�(m /R�/+�E -��"�����"������^�(�E��W+ο�<܍���ӻ�3�ȶH�W���O�7>���~���S�T���~y[�����x�{�����y��%م�;��W_x?�}�E �Ek9�U�$�hm &�J:�]t��]��.I '�ʚd� �dWY�좵���*k�]�6��]c��.Y '�ʚd� �dWY�좵���*k�]�6��]c��.Y '�ʚd� �dWY�좵���*k�]�6��]c��.Y '�ʚd� �dWIG����q���IvQ�@Nv�u&�d]���*k�]�6��]eM���r���Iv��@Nv�u&�d]���*k�]�6��]eM���r���Iv��@Nv�u&�d]���*k�]�6��]eM���r���Iv��@Nv�u&�d]���*���5�]%�.�ɮr&�Ei9��K���ɮ�&�Ek9�U�$�hm '�ʚd� �d�Xg�K��ɮ�&�Ek9�U�$�hm '�ʚd� �d�Xg�K��ɮ�&�Ek9�U�$�hm '�ʚd� �d�H�쒳q��*�HvQY8Nv�3�.J�ɮ�&�Ek9�5֙�ur���Iv��@Nv�5�.Z�ɮ�&�Ek9�5֙�ur���Iv��@Nv�5�.Z�ɮ�&�Ek9�5֙�ur���Iv��@Nv�5�.Z�ɮ��d���d�(�쒲q��*g�]�6��]eM���r���Iv��@Nv�u&�d]���*k�]�6��]eM���r���Iv��@Nv�u&�d]���*k�]�6��]eM���r���Iv��@Nv����ur���Iv��@Nv�5�.Z�ɮ��d���d�8g�K��ɮ�&�Ek9�U�$�hm '�ʚd� �d�Xg�K��ɮ�&�Ek9�U�$�hm '�ʚd� �d�Xg�K��ɮ�&�Ek9�U�$�hm '�ʚd� �d�Xg�K��ɮ�&�Ek1�Uґ좳p��*g�]�6��]c��.Y '�ʚd� �dWY�좵���*k�]�6��]c��.Y '�ʚd� �dWY�좵���*k�]�6��]c��.Y '�ʚd� �dWY�좵���*k�]�6��]c��.Y &�J:�]t��]�L���r���Iv��@Nv�u&�d]���*k�]�6��]eM���r���Iv��@Nv����ur���Iv��@Nv�5�.Z�ɮ�&�Ek9�5֙�ur���Iv��@Nv�5�.Z�ɮ�&�Ek1�5�$��l&�J9�]T��]�L���r�KɩHv�{l���Bv?����;>�^~��ož�:�������V��/���F�P>�hw?�����>���뷿o����:~��������������뗼��tw�ن���mȫ�߆��"І���܆(k��6��c�mY �!ʚ6� �6DYӆ���܆(k��6��c�mY �!ʚ6� �6DYӆ���܆(k��6��c�mY �!ʹ�!h| �6D G���q��iCP�@nC��҆�ur��iC��@nC�5mZ�m��� Ak� 1�ن�ur��iC��@nC�5mZ�m��� Ak� 1�ن�ur��iC��@nC�5mZ�m��� Ak� 1Ҵ!�l�!J9�T���L��r��iC��@nC�u�!d]�܆(k��6��eM��r��iC��@nC�u�!d]�܆(k��6��eM��r��iC��@nC�u�!d]�܆(k��6��eM��b��� Ag� 1ʴ!�l�!ʙ6� �6DYӆ���܆(k��6��c�mY �!ʚ6� �6DYӆ���܆(k��6��c�mY �!ʚ6� �6DYӆ���܆(k��6��a��!`]�܆(k��6��eM��b��� Ag� 1�ن�tr��iC��@nC�5mZ�m��� Ak� 1�ن�ur��iC��@nC�5mZ�m��� Ak� 1�ن�ur��iC��@nC�5mZ�m��� Ak� 1�ن�ur��iC��@lC�t�!�,�!ʙ6� �6�XgB��m��� Ak� Qִ!hm �!ʚ6� �6�XgB��m��� Ak� Qִ!hm �!ʚ6� �6�XgB��m��� Ak� Qִ!hm �!ʚ6� �6�XgB��m���6���6D9ӆ���܆(k��6��c�mY �!ʚ6� �6DYӆ���܆(k��6��a��!`]�܆(k��6��eM��r��iC��@nC�u�!d]�܆(k��6��eM��r��iC��@lC�4m9�m�R�6���6D9ӆ���܆�� �ﱵ!�C��6d�{,m�-�!��� n�� �g҆6�O�����_~�����U���~<���_��O����/�]�?��{ϫ/�6�=��@$���ȇ^�"vO���"���lm �~+kN�Ѻ����9�~��5�N��p;�fc����9��7K����:O�ɺ���Y��7[����:N���@<�v�q����鷲���O��u�~���x������� ��og��lm �~+kN�Ѻ����Y��7[����:N���@<�v�q����鷒��ot6�N��r;�fe����9��7K����:N���@<�V֜~�u�鷳��o�6O��u�~���x������� ��oe��7Z �~;�8�fk���Y��7[����:N���@<�V֜~�u�鷳��o�6O��u�~���t�����7;G��J9N�Q�8<�v�q����鷳��o�6O��u�~���x���9�F���og��lm �~;�8�fk���Y��7[���ʚ�o�.@<�v�q����鷳��o�6O��u�~���x�m�����+O��u�~���x������� ��o'�N��Y8<�VΜ~�t�鷳��o�6O��u�~���x������� ��oe��7Z �~;�8�fk���Y��7[����:N���@<�V֜~�u�鷳��o�6O��u�~���x������� ��oe��7Z �~;�8�fk���I��ovO��s�~���x���9�F���og��lm �~;�8�fk���Y��7[���ʚ�o�.@<�v�q����鷳��o�6O��u�~���x���9�F���og��lm �~;�8�fk���Y��7[���ʚ�o�.@:�v��������o���,m �~;�8�fk��[Ys�������:N���@<�v�q����鷳��o�6O��u�~�u�鷳��o�6O��u�~���x������� ��oe��7Z �~;�8�fk���Y��7[����:N���@:�V�q������Sn�߬,�~;�8�fi������7���;���o��س��Ow���~ǧ��39�>����������3o<�|���������߾�ۛ������w��wx{��r��s�}w<�<?�!z�kx{*|w:ܿ� ��yǺ}����;և�ͣ�n��bm����p��'0e�>{��������˟��u|��p�z�1�Y���+��X�?�;)���+���(�?��?�)���+��mq��J��,[��u{��Y��!lm �����6_q��z[���(k^A���C�u�����!�:^ak��g������z�����.@|=�Y��!lm ��I���@NȔ5 Z� ��΄���2��24��aB��#!Cc�8!S�$d(m 'd�zI���9!S�$dhm 'dʚ�� �LY��������L�Ⱥ�9!S�$dhm 'dʚ�� �LY��������L�Ⱥ�9!S�$dhm 'dʚ�� �LY�������i2r62� *� �r&!Ci9!S�$dhm 'd�:2�.@NȔ5 Z� ��&!Ck9!S�$dhm 'd�:2�.@NȔ5 Z� ��&!Ck9!S�$dhm 'd�:2�.@NȔ5 Z� ��&!Ck1!Sґ���p��e2R6�2�LB��rB��I���@NȔ5 Z� ��΄���2eMB��rB��I���@NȔ5 Z� ��΄���2eMB��rB��I���@NȔ5 Z� ��^2��@NȔ5 Z� ��&!Ck1!Sґ���p���L�H��9!S�$dhm 'dʚ�� �LY��������L�Ⱥ�9!S�$dhm 'dʚ�� �LY��������L�Ⱥ�9!S�$dhm 'dʚ�� �LY��������L�Ⱥ�9!S�$dhm &dJ:2t�2�LB��rBf�3!#��LY�������)k2�6�2eMB��rBf�3!#��LY�������)k2�6�2eMB��rBf�3!#��LY�������)k2�6�2eMB��rBf�3!#�ĄLIGB���qB��I�P�@NȔ5 Z� ��΄���2eMB��rB��I���@NȔ5 Z� ��^2��@NȔ5 Z� ��&!Ck9!S�$dhm 'd�:2�.@NȔ5 Z� ��&!Ck9!S�$dhm &dF�����ÄL)GB���qB��I�P�@N��k'��������nB��=���C����-'d�3I��o���_�_:����o��6����?�{� -����;������x\���m�����^G6����4��/d?My�E MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B�Hi�rni -_�0MQ���p��(g��6��a��)`]���(k��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@LS�4i -9�i�R�4���4E9�������(k��6��c�i +�6)�4��l.R(�X�@e�x�B9�H���"����Z���-R����]���?����ŶH��j��w���q\v|zzw"c|&�)�j�����ç��ۯ���������/o�ї�����|o���?=���$��}g����'�o�$�hm '�ʚd� �dWIG����q�k�3�%��dWY�좵���*k�]�6��]eM���r�k�3�%��dWY�좵���*k�]�6��]eM���r�k�3�%��dWY�좵���*k�]�6��]eM���r�k�3�%��dWY�좵���*�Hv�Y8Nv�3�.J�ɮ��d����]eM���r���Iv��@Nv�5�.Z�ɮ��d����]eM���r���Iv��@Nv�5�.Z�ɮ��d����]eM���r���Iv��@Nv�5�.Z�ɮ��d����]�ܒ]4��a���#�Ec�8�U�$�(m '��zIv��9�U�$�hm '�ʚd� �dWY�좵����Lvɺ�9�U�$�hm '�ʚd� �dWY�좵����Lvɺ�9�U�$�hm '�ʚd� �dWY�좵���i�]r6�]��.*�ɮr&�Ei9�U�$�hm '��:�]�.@Nv�5�.Z�ɮ�&�Ek9�U�$�hm '��:�]�.@Nv�5�.Z�ɮ�&�Ek9�U�$�hm '��:�]�.@Nv�5�.Z�ɮ�&�Ek1�Uґ좳p��e�]R6��]�L���r���Iv��@Nv�5�.Z�ɮ��d����]eM���r���Iv��@Nv�5�.Z�ɮ��d����]eM���r���Iv��@Nv�5�.Z�ɮ�^�]��@Nv�5�.Z�ɮ�&�Ek1�Uґ좳p���LvI��9�U�$�hm '�ʚd� �dWY�좵����Lvɺ�9�U�$�hm '�ʚd� �dWY�좵����Lvɺ�9�U�$�hm '�ʚd� �dWY�좵����Lvɺ�9�U�$�hm &�J:�]t��]�L���r�k�3�%��dWY�좵���*k�]�6��]eM���r�k�3�%��dWY�좵���*k�]�6��]eM���r�k�3�%��dWY�좵���*k�]�6��]eM���r�k�3�%��dWIG����q���IvQ�@Nv�5�.Z�ɮ��d����]eM���r���Iv��@Nv�5�.Z�ɮ�^�]��@Nv�5�.Z�ɮ�&�Ek9�U�$�hm '��:�]�.@Nv�5�.Z�ɮ�&�Ek9�U�$�hm &�F�d����dW)G����q���IvQ�@Nv)9�.~�-�}]��'����wǧ��˯z���w_g?>��u��*����{�(�g��g����ۧ���������O��~�����>�۟<�����?���N�;���� y���ې�_��6��eM��rb�� !��6DYӆ���܆(k��6��eM��rb�� !��6DYӆ���܆(k��6��eM��rb�� !��6D9�6��a؆(�hC�X8nC�3mJ�m��^���@nC�5mZ�m��� Ak� Qִ!hm �!�:��.@nC�5mZ�m��� Ak� Qִ!hm �!�:��.@nC�5mZ�m��� Ak� Qִ!hm �!F�6����6D)G���q��iCP�@nC�5mZ�m���6����eM��r��iC��@nC�5mZ�m���6����eM��r��iC��@nC�5mZ�m���6����eM��r��iC��@lC�t�!�,�!F�6����6D9ӆ���܆(k��6��eM��rb�� !��6DYӆ���܆(k��6��eM��rb�� !��6DYӆ���܆(k��6��eM��r"��6�+��eM��r��iC��@lC�t�!�,�!�9��.@nC�5mZ�m��� Ak� Qִ!hm �!�:��.@nC�5mZ�m��� Ak� Qִ!hm �!�:��.@nC�5mZ�m��� Ak� Qִ!hm �!�:��.@nC�5mZ�m���6���6D9ӆ���܆�lCȺ�� Qִ!hm �!ʚ6� �6DYӆ���܆�lCȺ�� Qִ!hm �!ʚ6� �6DYӆ���܆�lCȺ�� Qִ!hm �!ʚ6� �6DYӆ���܆�lCȺ�� Q�ц��p܆(g��6��eM��rb�� !��6DYӆ���܆(k��6��eM��r"��6�+��eM��r��iC��@nC�5mZ�m���6����eM��r��iC��@nC�5mZ�m��� !g� Q�ц��p܆(g��6�ې��A�!�=�6�u��߆��� ��6���;���=�!�Lڐ�ц��_�����/�?�������Ï��~������_�������y�%�"��/�����~���_����;_d���� ��oe��7Z �~;��o6����n��l,�~;�8�fi���X��7YW �~;�8�fk���Y��7[����:N���@<�V֜~�u�鷳��o�6O��u�~���x������� ��oe��7Z �~;�8�fk���Y��7[����:N���@:�V�q������Sn�߬,�~;�8�fi���Y��7[���ʚ�o�.@<�v�q����鷳��o�6O��u�~���x���9�F���og��lm �~;�8�fk���Y��7[���ʚ�o�.@<�v�q����鷳��o�6�N��t;�fg���[)��7*����9N�Y�@<�v�q����鷳��o�6O��5��h]�x������� ��og��lm �~;�8�fk��[Ys�������:N���@<�v�q����鷳��o�6O��u�~�u�鷳��o�6O��u�~���t�����7;���ʙ�o�.@<�v�q����鷳��o�6O��u�~���x���9�F���og��lm �~;�8�fk���Y��7[���ʚ�o�.@<�v�q����鷳��o�6O��u�~���x���9�F���og��lm �~;�v������s��o�6O��5��h]�x������� ��og��lm �~;�8�fk��[Ys�������:N���@<�v�q����鷳��o�6O��5��h]�x������� ��og��lm �~;�8�fk��[Ys���H��N��~��px������ ��og��lm �~+kN�Ѻ����Y��7[����:N���@<�v�q����鷱��o��@<�v�q����鷳��o�6O��u�~���x���9�F���og��lm �~;�8�fk���Y��7[H��J:N���8:�v��������o���,m �~Ñ�9�����3ug�{� ��{����������{|&�ߧq�����t{��捀��_������ۗ~{s�{z:<��.t�o/�_�Pw.����5�C� oO��N���?���"�X��^�6p��p�y����W� ܱ>�_����g�X�����cx����ϲu�X�?�;k�>{������p'�?>z�Y���g���0��>{E����-�?�[i�e�ܱn�}8�x=�� ��C�u�����!�:^ak��e��!h]��z����C��@|=�Y��!lm �����6_Qּ�����8�x=�� ��C�5 Z� ��&!Ck9!3֙��uRB��[B���0LȔp$dh,'dʙ�� �LX/ XW 'dʚ�� �LY�������)k2�6�2c� Y 'dʚ�� �LY�������)k2�6�2c� Y 'dʚ�� �LY�������)k2�62#MBF��aB��#!Ce�8!S�$d(m 'dʚ�� ��XgBF�� ��&!Ck9!S�$dhm 'dʚ�� ��XgBF�� ��&!Ck9!S�$dhm 'dʚ�� ��XgBF�� ��&!Ck9!S�$dhm &dJ:2t2�LBF��qB��I�P�@NȔ5 Z� ��&!Ck9!3֙��urB��I���@NȔ5 Z� ��&!Ck9!3֙��urB��I���@NȔ5 Z� ��&!Ck9!�KB�� ��&!Ck9!S�$dhm &dJ:2t�2� I 'dʚ�� �LY�������)k2�6�2c� Y 'dʚ�� �LY�������)k2�6�2c� Y 'dʚ�� �LY�������)k2�6�2c� Y 'dʚ�� ĄLIGB���qB��I�P�@NȌu&dd]���)k2�6�2eMB��rB��I���@NȌu&dd]���)k2�6�2eMB��rB��I���@NȌu&dd]���)k2�6�2eMB��rB��I���@NȌu&dd]���)�H��Y8NȔ3 J� ��&!Ck9!3֙��urB��I���@NȔ5 Z� ��&!Ck9!�KB�� ��&!Ck9!S�$dhm 'dʚ�� ��XgBF�� ��&!Ck9!S�$dhm 'dʚ�� Ą�H����q��)�H�PY8NȔ3 J� �~��2�[B���:�&d���|=��x8=�rB6>��������������������o�I�/9����0����ӑ�?N/���勬��xx<��ud3M�_�LS^�B�Ӕ�_��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�u�)d]���(疦��5�%i +�i�r&MAi9M�K���i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�H����q��(�HSPY8NS�3i +J�i��&MAk9M1֙��ur���IS��@NS�5i +Z�i��&MAk9M1֙��ur���IS��@NS�5i +Z�i��&MAk9M1֙��ur���IS��@NS�5i +Z�i���4���4�(����q��(g��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�����ur���IS��@NS�5i +Z�i���4���4�8g�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk1MQґ���p��(g��6��c�i Y �)ʚ4� �4EY�������(k��6��c�i Y �)ʚ4� �4EY�������(k��6��c�i -Y �)ʚ4� �4EY�������(�HS�Y8LS�2i -)�i�r&MAi9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4EX/i -XW �)ʚ4� �4EY�������(�HS�Y8NS�s�)$]���(k��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�u�)d]���(k��6�%i -:�i�r&MAi9M1֙��ur���IS��@NS�5i -Z�i��&MAk9M1֙��ur���IS��@NS�5i +Y �)ʚ4� �4EY�������(k��6��c�i +Y �)J:�t���L���r���IS��@NS�u�)d]���(k��6��eM���r���IS��@NS�����ur���IS��@NS�5i Z�i��&MAk9M1֙��ur���IS��@NS�5i -Z�i��&MAk9M1֙��ub���#MAg�8MQΤ)(m �)ʚ4� �4�Xg�B��i��&MAk9MQ֤)hm �)ʚ4� �4EX/i -XW �)ʚ4� �4EY�������(k��6��c�i -Y �)ʚ4� �4EY�������(k��6�#M�B��a���#MAe�8MQΤ)(m �)��JS�{li��d?M�����F�ۇ1M�I�r?Ҕy Q>~��������<gt�px�]��|�5���^�r�����S��������4�t<O����[��,[���tx������W� ܱ>�/��)���+��X�?�k�>{�������SV�:��"�䷱�5oc����6���m,�6���Rּ�����X�:��"�䷱�5oc����6������Y8~K9�6J�oc�ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�)@T�-@D�k�J8D4�D�L���r�(����+�DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z���&@$g�0@T� ��p *gD�6�DeM���r�h�3@$���QY ��� *kD�6�DeM���r�h�3@$���QY ��� *kD�6�DeM���r�h�3@$���QY ��� *kD�6D%":��Q&@$e�8@T��(m �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� -�%@� -��QY ��� *kD�6D%":��q�����DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z��������DeM���b���#@Dg�8@T��(m ��:D�.@�5"Z���&@Dk9@T��hm ��:D�.@�5"Z���&@Dk9@T��hm ��:D�.@�5"Z���&@Dk9@T��hm ��:D�.@�t��,�ʙ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� -�%@� -��QY ��� *kD�6�DeM���r�h�3@$���QY ��� *kD�6�DeM���b�h� ��8�r��,�ʙ�� ��q��S"~�-@|]��v������u���p�g >���O_������_~����/ۿ�~���?�����}����������O?��_�SZ��o���/?��/i���_~���/��0Ͽ�?���o��:>��ѿ�o�/v�o�����o��"p��������~� �� c��d]�|�����@k�~CYs��������� t�7�2��l�o(g�7P�@��P��o���|�����@k�~�X��Y �o(k�7��@��P��o���|�����@k�~�X��Y �o(k�7��@��P��o���|�����@k�~CX/�`]�|�����@k�~CYs��������� t��7�s�o�t�����~� �� e��Z��ʚ� �6��7�u�o�u�����~� �� e��Z��ʚ� �6��7�u�o�u�����~� �� e��Z��ʚ� �6��7�u�o�u�����~� �� %��,�o(g�7P�@��0�y�A���ʚ� �6��7�5�hm �o(k�7��@��0�y�A���ʚ� �6��7�5�hm �o(k�7��@��0�y�A���ʚ� �6��7�5�hm �o(k�7��@��0�y�A���J:�7�Y8��P��o���|�����@k�~�X��Y �o(k�7��@��P��o���|�����@k�~CX/�`]�|�����@k�~CYs��������~� �� c��d]�|�����@k�~CYs��������~� �� #��9��J9�7PY8��P��o���|��A��7�{l���%�v�7��Ǐ�?pz�;�0 }�]��ǖ���G����/4>��l����C�ۿ�~���LF��ƻ�N��?l/���S9|�|���|��;����e ���x+�>����(O���Q:��^�6p��p8�X���+��X��������+��o}>n_�?���ϲu�XO��Gk�>{���������V���W� ܱ�/�@Y��^�6���ś���Y�Y������pz����W� ܱ�/�@Y��^�6p�z�1�u��k߷�?��'g�e�ܱ���u�YZ��^�6p��p���ֺ}����;֧Ã���W��{_y{<�o8�,K����3x����W� ܱ���Һ}����;��&��� �6��0���Y ?���yd� �G6�5�l����Ȇ�� �6��0���Y ?���yd� �G6�5�l����Ȇ�� �6��0���Y ?���yd� �G6�t<�����#ʙG6P�@~d�X�#d]��Ȇ�� �6��P�<����#ʚG6��@~d�X�#d]��Ȇ�� �6��P�<����#ʚG6��@~d�X�#d]��Ȇ�� �6��P�<����#ʚG6��@~d�X�#d]��Ȇrn�l��5�P���Ǐl(g�@i�� a�<��ȏl(k�@k�� e�#hm ?���yd� �G6�u>�A�ȏl(k�@k�� e�#hm ?���yd� �G6�u>�A�ȏl(k�@k�� e�#hm ?���yd� �G6�4�l��q�ȆR�G6PY8~dC9��Jȏl(k�@k�� c��l�u�#ʚG6��@~dCY��Zȏl(k�@k�� c��l�u�#ʚ��6�G�5# hm �4(kF��@i0�9�@��# ʚ��6�G�5# hm �4(�i@g�p��(3�@���H�rf�� �e�HZ�# ʚ��6�G�u�4�u�H��f�� �e�HZ�# ʚ��6�G�u�4�u�H��f�� �e�HZ�# ʚ��6�G��2����# ʚ��6�G�5# hm �4(�i@g�x��8�HI �4(kF��@iP4���<Ҡ�i@ky��X�HY �4(kF��@iP4���<Ҡ�i@ky��X�HY �4(kF��@iP4���<Ҡ�i@ky��X�HY �4(kF��@iP�1Ҁ���H�rf�� �c�# d]�<Ҡ�i@ky�AY3Ҁ��H��f�� �c�# d]�<Ҡ�i@ky�AY3Ҁ��H��f�� �c�# d]�<Ҡ�i@ky�AY3Ҁ��H��f�� �c�# d]�8Ҡ�c������HJ�# ʚ��6�G�u�4�u�H��f�� �e�HZ�# ʚ��6�G��2����# ʚ��6�G�5# hm �4(kF��@i0�9�@��# ʚ��6�G�5# hm �4(kF��@i0Ҍ4��q8Ҡ�c������HJ�# �6 F�{l# �7�wG���?6�����#�4��l# �<���o߿�����5�ᅫ�4�����=���_>�����^�����X����x����z)D��1�W���B���B� �BDYS����\��,DȺ��Q�"hm "ʚB� �BDYS����\��,DȺ��Q�"hm "ʚB� �BDYS����\��,DȺ��QέA�k"J8 -4��L!��r!"��B�+�eM!��r!��)D��@.D�5�Zȅ���B���eM!��r!��)D��@.D�5�Zȅ���B���eM!��r!��)D��@.D�5�Z�����!g�Q�Q���p\�(g -�6�eM!��r!b��!��BDYS����\�(k -�6�eM!��r!b��!��BDYS����\�(k -�6�eM!��r!b��!��BDYS����\�(k -�6%�:���Q�!e�Q�"(m "ʚB� �BDYS����\��,DȺ��Q�"hm "ʚB� �BDYS����\��,DȺ��Q�"hm "ʚB� �BDYS����\��� -�BDYS����\�(k -�6%�:Dž�q�B���eM!��r!��)D��@.D�5�Zȅ���B���eM!��r!��)D��@.D�5�Zȅ���B���eM!��r!��)D��@.D�5�Zȅ���B���eM!��b!���Ag�Q�"(m "�:�.@.D�5�Zȅ���Ak�Q�"hm "�:�.@.D�5�Zȅ���Ak�Q�"hm "�:�.@.D�5�Zȅ���Ak�Q�"hm "�:�.@,D�t"�,"ʙB� �BDYS����\��,DȺ��Q�"hm "ʚB� �BDYS����\��� -�BDYS����\�(k -�6�eM!��r!b��!��BDYS����\�(k -�6�eM!��b!b�)D��8,D�r"�,"ʙB� �Bd?eP�~��yd<�"��c)Dn��y8<���L����V�܍B䟿������C����Ǜ_�������/_�������O�����+;�/��|��}���N2���_�|�կb� ��_��!��'p�5O࠵�����'p�Y8~G9�J�O��|�����Q�Nhm Nʚ� � ��IY8���8��Ⱥ�9pR�Nhm Nʚ� � ��IY8���8��Ⱥ�9pR�Nhm Nʚ� � ��IY8���8��Ⱥ�)pR�-pB�kNJ8'4�'�L���r�$��� �+�'eM���rब ���@��5�Zȁ�������'eM���rब ���@��5�Zȁ�������'eM���rब ���@��5�Z����&p"g�0pR�8��p8)g'�6�'eM���r�d�3p"���IY8���8)k'�6�'eM���r�d�3p"���IY8���8)k'�6�'eM���r�d�3p"���IY8���8)k'�6'%�:���Q&p"e�8pR�N(m Nʚ� � ��IY8���8��Ⱥ�9pR�Nhm Nʚ� � ��IY8���8��Ⱥ�9pR�Nhm Nʚ� � ��IY8���8 �%p� -��IY8���8)k'�6'%�:ǁ�q�����'eM���rब ���@��5�Zȁ�������'eM���rब ���@��5�Zȁ�������'eM���rब ���@��5�Zȁ�������'eM���bत#pBg�8pR�N(m N�:'�.@��5�Zȁ��&pBk9pR�Nhm N�:'�.@��5�Zȁ��&pBk9pR�Nhm N�:'�.@��5�Zȁ��&pBk9pR�Nhm N�:'�.@��tN�,Nʙ� � ��IY8���8��Ⱥ�9pR�Nhm Nʚ� � ��IY8���8 �%p� -��IY8���8)k'�6�'eM���r�d�3p"���IY8���8)k'�6�'eM���b�d� ���8��rN�,Nʙ� � ��i��Q�~�-pz�=�N���z��|:�G�S>�N� �������l��?��˿���?����?����^�{��|���/������/o���u|z�ë������i����א��E�f�|����� Č�YGF��bF���к�1#p֑����8����@��udlm fʚ���2�����5�2'�263�K���Ό��+3g[������� Č�YGF��bF���к�1#p֑����8����@��udlm fʚ���3g[������� Č�YGF��RF��##@g�(#p�-#`e�0#pΑ����8����@��5Z f�:2�63g[������� Č@Y��ubF�##`k1#p֑����8����@��5Z f�:2�63g[H��n;G�R�����Ì�9GF��bF�##`k1#p֑����(k2�.@��udlm f�:2�63g[���&#@�Č�YGF��bF�##`k1#p֑������Ⱥ1#p֑����8����@��t��Y8��3J f�:2�63g[������� Č@Y��ubF�##`k1#p֑����8����@��5Z f�:2�63g[������� Č@Y��ubF�##`k)#p�-#`g�0#pΑ����(k2�.@��udlm f�:2�63g[���&#@�Č�YGF��bF�##`k1#p֑����(k2�.@��udlm f�:2�63g[���&#@����I�����Ì�9GF��bF�##`k1#P�dh]��8����@��udlm f�:2�63c�YW f�:2�63g[������� Č@Y��ubF�##`k1#p֑����8����@��td�leN�e�,f�92�63<y����������{����t����'�������7zڎ`��F�P>���x�����>�t����{�8�������?���ݷQ7?��|�|���~{<Py�{�����,ʚYк��Eg/�����"��n/���p�"�s�YX�@|�EY�"Z ����E�6_dq��"[�/�8�x��� �Y�5/��u�,Κ� -� �JY�R����R)kR*�6�S*c�)Y �Tʚ� -� �JY�R����R)kR*�6�S*c�)Y �Tʹ�Th| ÔJ GJ���qJ��I�P�@N����R�urJ��I���@N��5)Z�)��&�Bk9�2֙R�urJ��I���@N��5)Z�)��&�Bk9�2֙R�urJ��I���@N��5)Z�)��&�Bk1�2ҤT�l�TJ9R*T�S*�LJ��rJ��I���@N��u�Td]��R)kR*�6�S*eMJ��rJ��I���@N��u�Td]��R)kR*�6�S*eMJ��rJ��I���@N��u�Td]��R)kR*�6�S*eMJ��bJ��#�Bg�0�2ʤT�l�Tʙ� -� �JY�R����R)kR*�6�S*c�)Y �Tʚ� -� �JY�R����R)kR*�6�S*c�)Y �Tʚ� -� �JY�R����R)kR*�6�S*a��T`]��R)kR*�6�S*eMJ��bJ��#�Bg�8�2ΙR�trJ��I���@N��5)Z�)��&�Bk9�2֙R�urJ��I���@N��5)Z�)��&�Bk9�2֙R�urJ��I���@N��5)Z�)��&�Bk9�2֙R�urJ��I���@L��t�T�,�Tʙ� -� ��XgJE��)��&�Bk9�R֤Thm �Tʚ� -� ��XgJE��)��&�Bk9�R֤Thm �Tʚ� -� ��XgJE��)��&�Bk9�R֤Thm �Tʚ� -� ��XgJE��)���� -���J9�R����R)kR*�6�S*c�)Y �Tʚ� -� �JY�R����R)kR*�6�S*a��T`]��R)kR*�6�S*eMJ��rJ��I���@N��u�Td]��R)kR*�6�S*eMJ��rJ��I���@L��4)9�)�R�� -���J9�R����RQ�$R*�[J��[�O����O�w��z�Yο��~�>�����S��|�R�����t����t��맷A������u]��W<��D���K����ϫ�W�~������z�.@��W�\գ��|U����Gk��^YsU���U��Ϋz�.@��W�����axU������z��U=J�W��z��� -�ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm ^�i����8��W�qU����U�r�� �ze�U=Z�W��:��ɺ���^YsU���U���� �ze�U=Z�W��:��ɺ���^YsU���U���� �ze�U=Z�W��:��ɺ���^YsU���U���� īz%W��,^�e��I�8��W�\գ��|U����Gk��^YsU���U��Ϋz�.@��W�\գ��|U����Gk��^YsU���U��Ϋz�.@��W�\գ��|U����Gk��^YsU���U��^������^YsU���U���� īz%W��,_�缪'��ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�J:���Y8��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��|Uo���t\գ�p|U����Gi��^YsU���U��Ϋz�.@��W�\գ��|U����Gk��^YsU���U��^������^YsU���U���� �ze�U=Z�W��:��ɺ���^YsU���U���� �ze�U=Z�W�F��zr6��r\գ�p|U����Gi��~�\]���خ�_}���ݫ�������~���Jο�<����;<���B�3��vS�0�����~:�������ޑ������9�?~���o�㿼�[>~���W��_���������_�����뭿���^O{W��:~y�:�կo�:����l�.@��V��:��ax����:����l��u6J����z��� -��le�u6Z���ʚ�l�6����5��hm _g��&���le�u6Z���ʚ�l�6����5��hm _g��&���le�u6Z���ʚ�l�6����5��hm ^gi����8��V�q�����u�r�:� ��le�u6Z����:��ɺ��:[Ys����u���:� ��le�u6Z����:��ɺ��:[Ys����u���:� ��le�u6Z����:��ɺ��:[Ys����u���:� ��l%���,^ge��I�8��V�\g���|�����Fk�:[Ys����u����l�.@��V�\g���|�����Fk�:[Ys����u����l�.@��V�\g���|�����Fk�:[Ys����u��^�����:[Ys����u���:� ��l%���,_g��&���le�u6Z���ʚ�l�6����5��hm _g��&���le�u6Z���ʚ�l�6����5��hm _g��&���le�u6Z���ʚ�l�6����5��hm _g��&���le�u6Z���J:���Y8��V�\g���|�m��:������5��hm _g+k����@��V�\g���|�m��:������5��hm _g+k����@��V�\g���|�m��:������5��hm _g+k����@��V�\g���|�m��:�����t\g��p|�����Fi�:[Ys����u����l�.@��V�\g���|�����Fk�:[Ys����u��^�����:[Ys����u���:� ��le�u6Z����:��ɺ��:[Ys����u���:� ��le�u6Z���F��lr6���r\g��p|�����Fi�:{�\X]g��خ�_}���������ǻ����te���|���7�;���y~w�||(��}�\<��巏�ׯx<�E����������n����tx�q -@�l|��7;��"����y�Eޱn��bm�����tk��g�X����x8�:��Qv6nGy���-��>{E����gpc��g�X�c}:<>�?��g�X����x�}����:>���c=�u��kw��ۇ;i�>{��������@�u��k�/n�?�;g�gѺw����AZ��^�6p�z�1��-e�>{������p����W� |�z<�n��u|��p�z:<<?K���+��X��d��g�X�c}:<�?�?>z�Y�����������ϲt�X�?�k�>{�����gp+��g�X�c=��NҺ}�����[O��IZ�gٺ�w���흴n��bm����c8��p�g�X�c=�n�u��k߷���7���Y�.���p�$���bm����p�h��g�X�c}:��?��^�6�}����p/��e�ܱ�wֺ}����;��A�Ib��g�v���I��3>{E���������ϲu�X�?���mn|����;��O��Z��^�6p��t�{��͍�^�6�}�����I�'x|��p�z:�=Z���+��X�ϟ��͍�^�6p�:^�S�<�����:�$��'�5O����D���@�6��TP���<Ba�s����F(�s�@�k�P(��@c�x�B93B�����^F(��y�BY3B�����f�� � -e�Z�#�:G(Ⱥ�y�BY3B�����f�� � -e�Z�#�:G(Ⱥ�y�BY3B�����f�� � -e�Z�#F� -r6G(�r�P��p<B���@iy�BY3B������ -�.@�PP���<B���@ky�BY3B������ -�.@�PP���<B���@ky�BY3B������ -�.@�PP���<B���@kq�BI�:�#F� -R6�G(�3#(m �P(kF(��@�PP���<Ba�s����G(�5#hm �P(kF(��@�PP���<Ba�s����G(�5#hm �P(kF(��@�PP���<B!�� -��@�PP���<B���@kq�BI�:�#�9G(H��y�BY3B�����f�� � -e�Z�#�:G(Ⱥ�y�BY3B�����f�� � -e�Z�#�:G(Ⱥ�y�BY3B�����f�� � -e�Z�#�:G(Ⱥ�y�BY3B������ -t�G(�3#(m �P�� �� +Z�i��&MAk1M1Ҥ)�l�)J9�T���L���r��P�4�ǖ���@�Ӕ����nt�}Ӕ�)�#M����������sF����u.�w^3�9�U(�?@?~?�����oO�O���tz��ϲu�XO���;i�>{��������۟�n��bm����c�����W� �y�i<ee��m,�.@~KY�6Z�oc)k��Bk�m,e��Xhm ��e��m,�.@~KY�6Z�oc)�x��㷱�3oc����6�������DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z��������D��D4��a���#@Dc�8@T��(m ��z ��9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� iDr6D�"*��r&@Di9@T��hm ��:D�.@�5"Z���&@Dk9@T��hm ��:D�.@�5"Z���&@Dk9@T��hm ��:D�.@�5"Z���&@Dk1@T� ��p eDR6�D�L���r��� ��@�5"Z��������DeM���r��� ��@�5"Z��������DeM���r��� ��@�5"Z���^D��@�5"Z���&@Dk1@T� ��p �I��9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �ʚ�� ��QY ��� �ɺ�9@T��hm �J:Dt�D�L���r�h�3@$���QY ��� *kD�6�DeM���r�h�3@$���QY ��� *kD�6�DeM���r�h�3@$���QY ��� *kD�6�DeM���r�h�3@$���QIG����q��� Q�@�5"Z��������DeM���r��� ��@�5"Z���^D��@�5"Z���&@Dk9@T��hm ��:D�.@�5"Z���&@Dk9@T��hm �F�������Q)G����q��� Q�@��9 ������n���=�������Lć ����vss����>�e��������_�����??|���?}������_��xJ����ӷ�����%�����/��������W��W_���Yǧ�?��� �����W������_�7��@��P��o���|�a��~����7�5�hm �o(k�7��@��P�q�������Q�~����� ���J��ʚ� �6��7�5�hm �o�� ��� e��Z��ʚ� �6��7�5�hm �o�� ��� e��Z��ʚ� �6��7�5�hm �o��~�+��7�5�hm �o(k�7��@��P�q�������q�� �.@��P��o���|�����@k�~CYs��������� �.@��P��o���|�����@k�~CYs��������� �.@��P��o���|�����@k�~CYs��������� �.@��P��o���x����~���� ���J���:�7Ⱥ��~CYs��������~� �� e��Z���:�7Ⱥ��~CYs��������~� �� e��Z���:�7Ⱥ��~CYs��������~� �� e��Z���:�7Ⱥ��~CI��:��ʙ� �6��7�5�hm �o�� ��� e��Z��ʚ� �6��7�5�hm �o��~�+��7�5�hm �o(k�7��@��P��o���|�a��~����7�5�hm �o(k�7��@��P��o���x�a��� g��~C)��*��ʙ� �6��7�/��~��~�������������N/��Ͽ�<��r9����>����g��z���v(z�W��ׯ�ߛ��������x������������*������o~~�t:�ļ�o��G�ٸ���t<J���+��X�k�>{�����������>{�����������g0��Y�.�����h��g�X�c}8ܾ���ʺ}����;����o(���+����xs�1�9k>���c=�NҺ}����;����o(���+��X�?���n��bm������p���l]�;�����?K���+��X��}�Z��^�6p��tx��|�p�+o���� '�e�ܱ�ֺ}����;�����VZ��^�6p�:��P�<����#�:� ��G6�5�l����Ȇ�� �6��P�<����#�:� ��G6�5�l����Ȇ�� �6��P�<����#�:� ��G6�5�l����Ȇ��G6�Y8~dC9��Jȏl�|d����P�<����#ʚG6��@~dCY��Zȏl�|d����P�<����#ʚG6��@~dCY��Zȏl�|d����P�<����#ʚG6��@~dCY��Zȏl�|d����P�� 4���#J8�@c��� ��#(m ?�!��G6���� e�#hm ?���yd� �G6�5�l����Ȇ��G6Ⱥ��� e�#hm ?���yd� �G6�5�l����Ȇ��G6Ⱥ��� e�#hm ?���yd� �G6�5�l����Ȇ�� r6�P���*Ǐl(g�@i�� e�#hm ?�a�� �.@~dCY��Zȏl(k�@k�� e�#hm ?�a�� �.@~dCY3Ҁ��H��f�� �e�HZ�# �:GȺ�y�AY3Ҁ��H��f�� đ%# �,�4eFH�8iPΌ4���<Ҡ�i@ky�AY3Ҁ��H��Α�.@iP4���<Ҡ�i@ky�AY3Ҁ��H��Α�.@iP4���<Ҡ�i@ky�AY3Ҁ��H��^F��y�AY3Ҁ��H��f�� đ%# �,�4�i ��e�HZ�# ʚ��6�G�5# hm �4�i ��e�HZ�# ʚ��6�G�5# hm �4�i ��e�HZ�# ʚ��6�G�5# hm �4�i ��e�HZ�# J:F�Y8iPΌ4���<�`�s����G�5# hm �4(kF��@iP4���<�`�s����G�5# hm �4(kF��@iP4���<�`�s����G�5# hm �4(kF��@iP4���<�`�s���G�t�4��p<Ҡ�i@iy�AY3Ҁ��H��Α�.@iP4���<Ҡ�i@ky�AY3Ҁ��H��^F��y�AY3Ҁ��H��f�� �e�HZ�# �:GȺ�y�AY3Ҁ��H��f�� �e�HZ�# F��r6G�r�4��p<Ҡ�i@iy����H~�m���&���H�����F^��x|đ��m��6~���}���������Ɵ>~���t��˧|����"�����p��W�=�w;X/��2f!��ױ_���"P����\�(k +�6�c��Y "ʚB� �BDYS����\�(k +�6�c��Y "ʚB� �BDYS����\�(k +�6�c��Y "ʹ"h| �BD G!���q!��)DP�@.D��R��ur!��)D��@.D�5�Zȅ���Ak�1�Y��ur!��)D��@.D�5�Zȅ���Ak�1�Y��ur!��)D��@.D�5�Zȅ���Ak�1�"�l"J9 +T��L!��r!��)D��@.D�u"d]�\�(k +�6�eM!��r!��)D��@.D�u"d]�\�(k +�6�eM!��r!��)D��@.D�u"d]�\�(k +�6�eM!��b!���Ag�1�"�l"ʙB� �BDYS����\�(k +�6�c��Y "ʚB� �BDYS����\�(k +�6�c��Y "ʚB� �BDYS����\�(k +�6�a�"`]�\�(k +�6�eM!��b!���Ag�1�Y��tr!��)D��@.D�5�Zȅ���Ak�1�Y��ur!��)D��@.D�5�Zȅ���Ak�1�Y��ur!��)D��@.D�5�Zȅ���Ak�1�Y��ur!��)D��@,D�t"�,"ʙB� �B�Xg!B�ȅ���Ak�Q�"hm "ʚB� �B�Xg!B�ȅ���Ak�Q�"hm "ʚB� �B�Xg!B�ȅ���Ak�Q�"hm "ʚB� �B�Xg!B������B���BD9S����\�(k +�6�c��Y "ʚB� �BDYS����\�(k +�6�a�"`]�\�(k +�6�eM!��r!��)D��@.D�u"d]�\�(k +�6�eM!��r!��)D��@,D�4�9���R�B���BD9S����\�����"�����Bd�{,��-"7��� +��Q���|���}�����x����߶����������}�������{e���ϑ�/�y�B��C�8���O��U�?�����8d]����� �6��Q��:�O�(g��Ai� c�O��u�8ʚ� � ��IY8���8)k'�6�'c��Y Nʚ� � ��IY8���8)k'�6�'c��Y Nʚ� � ��IY8���8)k'�6�'c��Y NʹNh| ��I G����qज �P�@���8�urब ���@��5�Zȁ��&pBk9p2�8�urब ���@��5�Zȁ��&pBk9p2�8�urब ���@��5�Zȁ��&pBk1p2�N�lNJ9'T�'�L���rब ���@��uNd]�8)k'�6�'eM���rब ���@��uNd]�8)k'�6�'eM���rब ���@��uNd]�8)k'�6�'eM���bत#pBg�0p2�N�lNʙ� � ��IY8���8)k'�6�'c��Y Nʚ� � ��IY8���8)k'�6�'c��Y Nʚ� � ��IY8���8)k'�6�'a�N`]�8)k'�6�'eM���bत#pBg�8p2�8�trब ���@��5�Zȁ��&pBk9p2�8�urब ���@��5�Zȁ��&pBk9p2�8�urब ���@��5�Zȁ��&pBk9p2�8�urब ���@��tN�,Nʙ� � ���Xg�D�ȁ��&pBk9pR�Nhm Nʚ� � ���Xg�D�ȁ��&pBk9pR�Nhm Nʚ� � ���Xg�D�ȁ��&pBk9pR�Nhm Nʚ� � ���Xg�D������� ����I98���8)k'�6�'c��Y Nʚ� � ��IY8���8)k'�6�'a�N`]�8)k'�6�'eM���rब ���@��uNd]�8)k'�6�'eM���rब ���@��4�9���R�� ����I98���8��8*p��N�{����i�{�CO��O����(p�G���>��������������Ͽ��q�g��������˻7w����߾�������������Ox���1}<��1������/������8����@��5Z f�:2�63g[������� Č@Y��uBF��?26��QF��[F���aF��##`i1#0֙�ubF�##`k1#p֑����8����@��5Z f�:2�63g[������� Č@Y��ubF�##`k1#p֑����8����@��td�leN�e�,f�92�63g[���&#@�Č�YGF��bF�##`k1#p֑����(k2�.@��udlm f�:2�63g[���&#@�Č�YGF��bF�##`k)#p�-#`g�(#Pʑ��q�8��X�@��udlm f�:2�63eMF��������� Č�YGF��bF�##`k1#P�dh]��8����@��udlm f�:2�63c�YW f�:2�63g[H��n;��r&#@�Č�YGF��bF�##`k1#p֑����(k2�.@��udlm f�:2�63g[���&#@�Č�YGF��bF�##`k1#p֑����(k2�.@��udlm eN�e�,f�92�63eMF��������� Č�YGF��bF�##`k1#P�dh]��8����@��udlm f�:2�63eMF��������� Č�YGF��bF�##`k1#P�dh]��8���p�8��X�@��udlm fʚ���3g[������� Č�YGF��bF`�3# � +Č�YGF��bF�##`k1#p֑����(k2�.@��udlm f�:2�63g[H����������)�����Ì�9GF��bF�'��3�?>��k<��e�=�xw|:���Uᅮr|yg���=mG0�}�|(�IHp<\�^�o:~���Ͽ�}�~�k��������(��O�w>��{�=���=�_dak�Ee͋,h]��"���Y��@z��I�Y�Y8|��9Nj,,m �Ȣ�y��_dq��"[�/�8�x��� �Y�u�����,ʚYк��EgMJ��rJ��I���@N��5)Z�)��Δ���S*eMJ��rJ��I���@N��5)Z�)��Δ���R*��R*4��aJ��#�Bc�8�RΤT(m �T�zI���9�R֤Thm �Tʚ� +� �JY�R����R�L�Ⱥ�9�R֤Thm �Tʚ� +� �JY�R����R�L�Ⱥ�9�R֤Thm �Tʚ� +� �JY�R����RiR*r6S*�)*�)�r&�Bi9�R֤Thm �T�:S*�.@N��5)Z�)��&�Bk9�R֤Thm �T�:S*�.@N��5)Z�)��&�Bk9�R֤Thm �T�:S*�.@N��5)Z�)��&�Bk1�RґR��p�ReR*R6�S*�LJ��rJ��I���@N��5)Z�)��Δ���S*eMJ��rJ��I���@N��5)Z�)��Δ���S*eMJ��rJ��I���@N��5)Z�)��^R*��@N��5)Z�)��&�Bk1�RґR��p�R�L�H��9�R֤Thm �Tʚ� +� �JY�R����R�L�Ⱥ�9�R֤Thm �Tʚ� +� �JY�R����R�L�Ⱥ�9�R֤Thm �Tʚ� +� �JY�R����R�L�Ⱥ�9�R֤Thm �TJ:R*t�S*�LJ��rJe�3�"��JY�R����R)kR*�6�S*eMJ��rJe�3�"��JY�R����R)kR*�6�S*eMJ��rJe�3�"��JY�R����R)kR*�6�S*eMJ��rJe�3�"�ĔJIGJ���qJ��I�P�@N��5)Z�)��Δ���S*eMJ��rJ��I���@N��5)Z�)��^R*��@N��5)Z�)��&�Bk9�R֤Thm �T�:S*�.@N��5)Z�)��&�Bk9�R֤Thm �TF�����ÔJ)GJ���qJ��I�P�@N�(�)~�-�z�5 ���<=ߝ��_d9��s������_�?�O�Ƈ�KJeb�����͇�����ï��U�����u��_�x����c,���o?��_}�����_��ɺ���^YsU���U���� �ze�U=Z�W��:��ɺ��^9��z4���U���z4���3W�(m _����+���5W�hm _�+k����@��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��xUo���'g��^)�U=*�W�ʙ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6��t\գ�pxUo���'e���^9sU���U���� �ze�U=Z�W��:��ɺ���^YsU���U���� �ze�U=Z�W��:��ɺ���^YsU���U���� �ze�U=Z�W��z��� +�ze�U=Z�W�ʚ�z�6��t\գ�p|Uo����5W�hm _�+k����@��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��|Uo����5W�hm _�+k����@��W�\գ��|Uo����5W�hm ^�+鸪Gg���^9sU���U��Ϋz�.@��W�\գ��|U����Gk��^YsU���U��Ϋz�.@��W�\գ��|U����Gk��^YsU���U��Ϋz�.@��W�\գ��|U����Gk��^YsU���U��Ϋz�.@��W�qU����U�r�� �ze�U=Z�W��:��ɺ���^YsU���U���� �ze�U=Z�W��z��� +�ze�U=Z�W�ʚ�z�6���5W�hm _�뼪'��ze�U=Z�W�ʚ�z�6���5W�hm ^�i����8��W�qU����U�r�� ���3puU��c���5��W������8��;�����y�qtwx:>����g����a����/�?�t���˷��?��#�����_s`��������y��|�����~���������^�����[ ��?������u6���u��_��u��/��d]�t����u6_��:[ �u6���ʙ�l�6�����r� ����ʚ�l�6����5��hm _g+k����@��6�y�M����ʚ�l�6����5��hm _g+k����@��6�y�M����ʚ�l�6����5��hm _g+k����@��6�\g��qx����:����l��u6J���ʚ�l�6����u^g�u�u���:� ��le�u6Z���ʚ�l�6����u^g�u�u���:� ��le�u6Z���ʚ�l�6����u^g�u�u���:� ��le�u6Z���J:���Y8��6�\g��q|�����Fi�:[Ys����u���:� ��lc���d]�|�����Fk�:[Ys����u���:� ��lc���d]�|�����Fk�:[Ys����u���:� ��la�\g�u�u���:� ��le�u6Z���J:���Y8��6�y�M����ʚ�l�6����5��hm _g+k����@��6�y�M����ʚ�l�6����5��hm _g+k����@��6�y�M����ʚ�l�6����5��hm _g+k����@��6�y�M����ʚ�l�6���t\g��p|�����Fi�:�X�u6Y _g+k����@��V�\g���|�����Fk�:�X�u6Y _g+k����@��V�\g���|�����Fk�:�X�u6Y _g+k����@��V�\g���|�����Fk�:�X�u6Y ^g+��Fg��:[9s����u���:� ��lc���d]�|�����Fk�:[Ys����u���:� ��la�\g�u�u���:� ��le�u6Z���ʚ�l�6����u^g�u�u���:� ��le�u6Z���ʚ�l�6���4���l^g+��Fe��:[9s����u��������]g���������wǧ�����������otw<<��������P>���x���o?�_�x������-��=������������������ovx�E�������c�>{��������Z��^�6�}���p�u����l��3x�[ ʹ}����;�����Z��^�6p��tx|�|��^�6�}���p���ٍu|��p�z:<>Z���+��X�wҺ}����;����o�(���+��_&ܜwΚϢu�X�?�Ӄ�n��bm����cx�[ ʺ}����;���h��g�X���x�1�<9��,[���txx~����W� ܱ��:��Z��^�6p��tx��|�p�+o���� '�e�ܱ�ֺ}����;�����VZ��^�6p�z�)ܝ�u��k߷��?����ϲu�X�?��;i�>{������p����^�6p�z�1�X���+��o=�o��os�l]�;����I��3>{��������Z��^�6p��t����bm������^��3>���c=��u��kw��������+���(�?��� g|�����[�?�[i�e�ܱ�G�����kw���n��bm����p�,���bm���Ǜ���O��,[���t�{����W� ܱޟ?/���bm��u�觬y"� �'�u>H��O*k�Dk��@e��hm ?���@ky��X�Y �P(�6B���0�P�1B�����rf�� � +a��P�u���f�� � +e�Z�#ʚ +�6�G(�u�P�u���f�� � +e�Z�#ʚ +�6�G(�u�P�u���f�� � e�Z�#ʚ -�6�G(�5#hm �P�� �� +�6G(�4#�l�P(��@e�x�B93B�����f�� � +c�#d]�<B���@ky�BY3B�����f�� � +c�#d]�<B���@ky�BY3B�����f�� � +c�#d]�<B���@ky�BY3B������ +tG(�2#�l�P(gF(P�@�PP���<B���@ky��X�Y �P(kF(��@�PP���<B���@ky��X�Y �P(kF(��@�PP���<B���@ky�BX/#`]�<B���@ky�BY3B������ +t�G(�s�P�t���f�� � e�Z�#ʚ -�6�G(�5#hm �P�� �� +�6�G(�u�P�u���f�� � e�Z�#ʚ -�6�G(�5#hm �P�� �� -%#�,�P(gF(P�@�PP���<Ba�s����G(�5#hm �P(kF(��@�PP���<B!�� -��@�PP���<B���@ky�BY3B������ -�.@�PP���<B���@ky�BY3B�����f����� -�#�,�P(gF(P�@��_VP#�=��W_F(���?8Bq�>y�b|&#�c��O�ן�T������Bt����t�O����˿��y}�����m]��p8�\c���X��^�6p��t��<J���+���^�{i�e�ܱ�eͰZ��"ʚa�6��E�5�"hm �i�E��8Q�����<,��AkyXDY3,���a�.@Q�����<,��AkyXDY3,��^�E��yXDY3,��fX� �aeͰZ��"�:�EȺ�yXDY3,��fX� �a%�"�,��!��aeͰZ��"ʚa�6��E�5�"hm ��!��aeͰZ��"ʚa�6��E�5�"hm ��!��aeͰZ��"ʚa�6��E�5�"hm ��!��aeͰZ��"J:�E�Y8Q�����<,b�sX����E�5�"hm �(k�E��@Q�����<,b�sX����E�5�"hm �(k�E��@Q�����<,b�sX����E�5�"hm �(k�E��@Q�����<,b�sX����E�sA�k�(�Ac�xXD93,��^�E��yXDY3,��fX� �aeͰZ��"�:�EȺ�yXDY3,��fX� �aeͰZ��"�:�EȺ�yXDY3,��fX� �aeͰZ��"F�ar6�E�r���p<,��AiyXDY3,���a�.@Q�����<,��AkyXDY3,���a�.@Q�����<,��AkyXDY3,���a�.@Q�����<,��AkqXDIǰ:��"F�aR6��E�3�"(m �(k�E��@Q�����<,b�sX����E�5�"hm �(k�E��@Q�����<,b�sX����E�5�"hm �(k�E��@Q�����<,"��a��@Q�����<,��AkqXDIǰ:��"�9�EH��yXDY3,��fX� �aeͰZ��"�:�EȺ�yXDY3,��fX� �aeͰZ��"�:�EȺ�yXDY3,��fX� �aeͰZ��"�:�EȺ�yXDY3,��Ⰸ��at��E�3�"(m ��!��aeͰZ��"ʚa�6��E�5�"hm ��!��aeͰZ��"ʚa�6��E�5�"hm ��!��aeͰZ��"ʚa�6��E�5�"hm ��!��a%�"�,�(g�EP�@Q�����<,b�sX����E�5�"hm �(k�E��@Q�����<,"��a��@Q�����<,��AkyXDY3,���a�.@Q�����<,��AkyXDY3,��Ⰸ�fX����a��"�,�(g�EP�@��1,��cy�5`Xd�{,�"�W�E���;���dX�4�E��ӷ����ϟ���?��{������H�or{��9��Q����%g -��K��o���hm ��ʚ� ��Xg -M��)��&�Fk9�V֤�hm ��J:Rht�Sh�)4I ��ʚ� �ZY�B����B+kRh�6�Shc�)4Y ��ʚ� �ZY�B����B+kRh�6�Shc�)4Y ��ʚ� �ZY�B����B+kRh�6�Shc�)4Y ��ʚ� �ZIG -���q -��I�Q�@N��u��d]��B+kRh�6�SheM +�6�G(�u�P�u���f�� � +e�Z�#ʚ +�6�G(�u�P�u���f�� � +%#�,�P(gF(P�@�0�9BA��#ʚ +�6�G(�5#hm �P(kF(��@�0�9BA��#ʚ +�6�G(�5#hm �P(kF(��@�0�9BA��#ʚ +�6�G(�5#hm �P(kF(��@�0�9BA��#J:F(�Y8�PΌP���<B���@ky��X�Y �P(kF(��@�PP���<B���@ky�BX/#`]�<B���@ky�BY3B�����f�� � +c�#d]�<B���@ky�BY3B�����f�� � +#�9�#J9F(PY8�PΌP���<B����F(�{l#���P��p��l}>>���LF(n�ş��?���N������}�������������V�C���ۺ���pz��x�=ޱn��bm�����Sy����W� ܙ�8N��:>���c; ʚa�6��E�5�"hm �(k�E��@1����q<,��AiyXDY3,��fX� �ac��"d]�<,��AkyXDY3,��fX� �aa���ufX� �aeͰZ��"ʚa�6��E�u��ufX� �aeͰZ��"J:�E�Y81�9,B���"ʚa�6��E�5�"hm �(k�E��@1�9,B���"ʚa�6��E�5�"hm �(k�E��@1�9,B���"ʚa�6��E�5�"hm �(k�E��@1�9,B���"ʚa�6�E�t���p<,��AiyX�X�Y �(k�E��@Q�����<,��AkyX�X�Y �(k�E��@Q�����<,��AkyX�X�Y �(k�E��@Q�����<,��AkyX�X�Y �(�6,���0Q�1,����rfX� �aa���ufX� �aeͰZ��"ʚa�6��E�u��ufX� �aeͰZ��"ʚa�6��E�u��ufX� �aeͰZ��"ʚa�6�E�4�"�l�(�Ae�xXD93,��fX� �ac��"d]�<,��AkyXDY3,��fX� �ac��"d]�<,��AkyXDY3,��fX� �ac��"d]�<,��AkyXDY3,��Ⰸ��at�E�2�"�l�(g�EP�@Q�����<,��AkyX�X�Y �(k�E��@Q�����<,��AkyX�X�Y �(k�E��@Q�����<,��AkyXDX/�"`]�<,��AkyXDY3,��Ⰸ��at��E�s��tfX� �aeͰZ��"ʚa�6��E�u��ufX� �aeͰZ��"ʚa�6��E�u��ufX� �aeͰZ��"ʚa�6��E�u��ufX� �a%�"�,�(g�EP�@1�9,B���"ʚa�6��E�5�"hm �(k�E��@1�9,B���"ʚa�6��E�5�"hm �(k�E��@1�9,B���"ʚa�6��E�5�"hm �(k�E��@1�9,B���"J:�E�Y8Q�����<,��AkyX�X�Y �(k�E��@Q�����<,��AkyXDX/�"`]�<,��AkyXDY3,��fX� �ac��"d]�<,��AkyXDY3,��fX� �a#Ͱ9��"J9�EPY8Q�����<,B�bX��6,��k�����X�En����w�ɰ�i��˧o��뷟?m������j�Ǘ�#p�����pss���vI��K���O��~H���@N��5)4Z�)������SheM ��r -��I���@N��u��d]��B+kRh�6�SheM +��I���@L��t���,���9Sh�.@N��5)4Z�)��&�Fk9�V֤�hm ���:Sh�.@N��5)4Z�)��&�Fk9�V֤�hm ���:Sh�.@N��5)4Z�)��&�Fk9�V֤�hm ���:Sh�.@N��5)4Z�)������Z9�B����B�L�ɺ�9�V֤�hm ��ʚ� �ZY�B����B�L�ɺ�9�V֤�hm ��ʚ� �ZY�B����B�L�ɺ�9�V֤�hm ��ʚ� �ZY�B����B�L�ɺ�)�V�-�F�k��J8Rh4�Sh�L +��r +-���+�SheM ��r -��I���@N��u��d]��B+kRh�6�SheM +��I���@N��5)4Z�)������SheM ��r -��I���@N��u��d]��B+�B��5Sh%)4�)�r&�Fi9��K - ��)��&�Fk9�V֤�hm ��ʚ� ��Xg -M��)��&�Fk9�V֤�hm ��ʚ� ��Xg -M��)��&�Fk9�V֤�hm ��ʚ� ��H�B��q�B+�H�QY8N��3)4J�)��&�Fk9�6֙B�ur -��I���@N��5)4Z�)��&�Fk9�6֙B�ur -��I���@N��5)4Z�)��&�Fk9�6֙B�ur -��I���@N��5)4Z�)�������(�B��q�B+gRh�6�SheM +��I���@N��5)4Z�)������SheM ��r -��I���@N��u��d]��B+kRh�6�SheM +��I���@N��5)4Z�)��&�&g�0�VʑB��p�B+gRh�6�SheM ��r -��I���@N��u��d]��B+kRh�6�SheM +m�3�&��ZY�B����B+kRh�6�SheM ��r -��I���@N����B�ur -��I���@N��5)4Z�)�������8g -M��)��&�Fk9�V֤�hm ��ʚ� ��Xg -M��)��&�Fk9�V֤�hm ��ʚ� ��Xg -M��)��&�Fk9�V֤�hm ��ʚ� ��Xg -M��)��&�Fk1�VґB��p�B+gRh�6�Shc�)4Y ��ʚ� �ZY�B����B+kRh�6�Shc�)4Y ��ʚ� �ZY�B����B+kRh�6�Shc�)4Y ��ʚ� �ZY�B����B+kRh�6�Shc�)4Y ��J:Rht�Sh�L -��r -��I���@N��u��d]��B+kRh�6�SheM +m�3�&��ZY�B����B+kRh�6�SheM ��r -��I���@N����B�ur -��I���@N��5)4Z�)��&�Fk9�6֙B�ur -��I���@N��5)4Z�)��&�Fk1�6Ҥ��l��J9RhT�Sh�L -��r -����ǖB����)���XR����t�9�q -=>��n����_:��/�ϧo�}���w̟��xey�B�>���a�<2N�2����������"��8Zȏ�+kGk��qe�#�hm ?2.��G�����qeMY��rY��)���@.�5e=Z�e��β����zeMY��rY��)���@,�t���,���9�z�.@.�5e=Z�e����Gk��W֔�hm ���:�z�.@.�5e=Z�e����Gk��W֔�hm ���:�z�.@.�5e=Z�e����Gk��W֔�hm ���:�z�.@.�5e=Z�e�������^9S֣��\��,�ɺ���W֔�hm ��ʚ�� �^YS֣��\��,�ɺ���W֔�hm ��ʚ�� �^YS֣��\��,�ɺ���W֔�hm ��ʚ�� �^YS֣��\��,�ɺ���Wέ�G�k��J8�z4��z�LY��rY/����+��zeMY��rY��)���@.�5e=Z�e��β����zeMY��rY��)���@.�5e=Z�e��β����zeMY��rY��)���@.�5e=Z�e����'g㰬W�Q֣�p\�+g�z�6��zeMY��rYo���'��^YS֣��\�+k�z�6��zeMY��rYo���'��^YS֣��\�+k�z�6��zeMY��rYo���'��^YS֣��\�+k�z�6�z%e=:�e�Q��'e㸬WΔ�(m ��ʚ�� �^YS֣��\��,�ɺ���W֔�hm ��ʚ�� �^YS֣��\��,�ɺ���W֔�hm ��ʚ�� �^YS֣��\�륬� -�^YS֣��\�+k�z�6�z%e=:�e�qβ����zeMY��rY��)���@.�5e=Z�e��β����zeMY��rY��)���@.�5e=Z�e��β����zeMY��rY��)���@.�5e=Z�e��β����zeMY��bY����GgḬWΔ�(m ���:�z�.@.�5e=Z�e����Gk��W֔�hm ���:�z�.@.�5e=Z�e����Gk��W֔�hm ���:�z�.@.�5e=Z�e����Gk��W֔�hm ���:�z�.@,�t���,��ʙ�� �^YS֣��\��,�ɺ���W֔�hm ��ʚ�� �^YS֣��\�륬� -�^YS֣��\�+k�z�6��zeMY��rYo���'��^YS֣��\�+k�z�6��zeMY��bYo�)���8,�r���,��ʙ�� �~?We=~����5�����8�u��vw�k��"|y���_�^=z~�o��s:���������{_炉��ȣ�endstream +m�3�&��ZY�B����B+kRh�6Sh%)4:�)�Q&�&e�8�VΤ�(m ��ʚ� �ZY�B����B�L�ɺ�9�V֤�hm ��ʚ� �ZY�B����B�L�ɺ�9�V֤�hm ��ʚ� �ZY�B����B�%�� +�ZY�B����B+kRh�6Sh%)4:�)�q����SheM +��r +��I���@N��5)4Z�)������SheM +��r +��I���@N��5)4Z�)������SheM +��r +��I���@N��5)4Z�)������SheM +��b +��#�Fg�8�VΤ�(m ���:Sh�.@N��5)4Z�)��&�Fk9�V֤�hm ���:Sh�.@N��5)4Z�)��&�Fk9�V֤�hm ���:Sh�.@N��5)4Z�)��&�Fk9�V֤�hm ���:Sh�.@L��t���,��ʙ� �ZY�B����B�L�ɺ�9�V֤�hm ��ʚ� �ZY�B����B�%�� +�ZY�B����B+kRh�6�SheM +��r +m�3�&��ZY�B����B+kRh�6�SheM +��b +m�I���8L��r�Ш,��ʙ� �z?�U)4~�-�~�5vS��ﱤ��+)���ps��z|&)��H������t���?^��O�~����{�??���}����vyd��e�-��E��q�6�W�<2���#�ʚG���@~d\X/���u�#�ʚ�� �^YS֣��\�+k�z�6��zc�e=Y ��ʚ�� �^YS֣��X�+�(��Y8.�s��$]�\�+k�z�6��zeMY��rY��)���@.�u��d]�\�+k�z�6��zeMY��rY��)���@.�u��d]�\�+k�z�6��zeMY��rY��)���@.�u��d]�\�+k�z�6�z%e=:�e�r��Gi��7�Y֓urY��)���@.�5e=Z�e����Gk��7�Y֓urY��)���@.�5e=Z�e����Gk��7�Y֓urY��)���@.�5e=Z�e����Gk��7�Y֓uRY��[Y���0,�p��h,��ʙ�� �^X/e=XW ��ʚ�� �^YS֣��\�+k�z�6��zc�e=Y ��ʚ�� �^YS֣��\�+k�z�6��zc�e=Y ��ʚ�� �^YS֣��\�+k�z�6�z#MYO��aY����GeḬWΔ�(m ��ʚ�� ��XgYO��e����Gk��W֔�hm ��ʚ�� ��XgYO��e����Gk��W֔�hm ��ʚ�� ��XgYO��e����Gk��W֔�hm ��J:�zt�z�LYO��qY��)�Q�@.�5e=Z�e����Gk��7�Y֓urY��)���@.�5e=Z�e����Gk��7�Y֓urY��)���@.�5e=Z�e����Gk���KY��e����Gk��W֔�hm ��J:�zt��z�e=I ��ʚ�� �^YS֣��\�+k�z�6��zc�e=Y ��ʚ�� �^YS֣��\�+k�z�6��zc�e=Y ��ʚ�� �^YS֣��\�+k�z�6��zc�e=Y ��ʚ�� IJ^IGY���qY��)�Q�@.�u��d]�\�+k�z�6��zeMY��rY��)���@.�u��d]�\�+k�z�6��zeMY��rY��)���@.�u��d]�\�+k�z�6��zeMY��rY��)���@.�u��d]�X�+�(��Y8.�3e=J�e����Gk��7�Y֓urY��)���@.�5e=Z�e����Gk���KY��e����Gk��W֔�hm ��ʚ�� ��XgYO��e����Gk��W֔�hm ��ʚ�� IJ�HS֓�qX�+�(�QY8.�3e=J�e�~"��z�[Y��k@Y��=��p���������F�?D������� +8<�z�����/��t�����?������%�endstream endobj 1422 0 obj << /Type /Page @@ -3580,98 +3606,98 @@ endobj /Border[0 0 0]/H/I/C[1 0 0] /Rect [119.552 706.187 215.571 715.098] /Subtype /Link -/A << /S /GoTo /D (1464) >> +/A << /S /GoTo /D (1474) >> >> endobj 1426 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 706.187 537.983 715.098] /Subtype /Link -/A << /S /GoTo /D (1464) >> +/A << /S /GoTo /D (1474) >> >> endobj 1427 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [119.552 693.235 257.085 702.147] /Subtype /Link -/A << /S /GoTo /D (1491) >> +/A << /S /GoTo /D (1501) >> >> endobj 1428 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 693.235 537.983 702.147] /Subtype /Link -/A << /S /GoTo /D (1491) >> +/A << /S /GoTo /D (1501) >> >> endobj 1429 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [119.552 680.284 302.205 689.195] /Subtype /Link -/A << /S /GoTo /D (1501) >> +/A << /S /GoTo /D (1511) >> >> endobj 1430 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 680.284 537.983 689.195] /Subtype /Link -/A << /S /GoTo /D (1501) >> +/A << /S /GoTo /D (1511) >> >> endobj 1431 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [119.552 667.333 315.485 676.244] /Subtype /Link -/A << /S /GoTo /D (1519) >> +/A << /S /GoTo /D (1529) >> >> endobj 1432 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 667.333 537.983 676.244] /Subtype /Link -/A << /S /GoTo /D (1519) >> +/A << /S /GoTo /D (1529) >> >> endobj 1433 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [143.462 654.381 350.016 663.293] /Subtype /Link -/A << /S /GoTo /D (1521) >> +/A << /S /GoTo /D (1531) >> >> endobj 1434 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 654.381 537.983 663.293] /Subtype /Link -/A << /S /GoTo /D (1521) >> +/A << /S /GoTo /D (1531) >> >> endobj 1435 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [143.462 641.43 365.238 650.341] /Subtype /Link -/A << /S /GoTo /D (1525) >> +/A << /S /GoTo /D (1535) >> >> endobj 1436 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 641.43 537.983 650.341] /Subtype /Link -/A << /S /GoTo /D (1525) >> +/A << /S /GoTo /D (1535) >> >> endobj 1437 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [143.462 628.478 338.718 637.39] /Subtype /Link -/A << /S /GoTo /D (1529) >> +/A << /S /GoTo /D (1539) >> >> endobj 1438 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 628.478 537.983 637.39] /Subtype /Link -/A << /S /GoTo /D (1529) >> +/A << /S /GoTo /D (1539) >> >> endobj 1439 0 obj << /Type /Annot @@ -3886,28 +3912,28 @@ endobj 1471 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 418.531 209.922 425.385] +/Rect [119.552 418.411 209.922 425.385] /Subtype /Link /A << /S /GoTo /D (security-mysql-network) >> >> endobj 1472 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 418.531 537.983 425.385] +/Rect [528.02 418.411 537.983 425.385] /Subtype /Link /A << /S /GoTo /D (security-mysql-network) >> >> endobj 1473 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 405.46 155.277 412.433] +/Rect [95.641 405.579 155.277 412.433] /Subtype /Link /A << /S /GoTo /D (security-webserver) >> >> endobj 1474 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 405.46 537.983 412.433] +/Rect [528.02 405.579 537.983 412.433] /Subtype /Link /A << /S /GoTo /D (security-webserver) >> >> endobj @@ -4246,112 +4272,125 @@ endobj >> stream xڔ�_�d�}]��O�G�����_��lkfB���� Gx���d���h�d���{��ܧ�\?�/�QD�v��;���w/�������;�??}��������t�W��o����������_��x|=<�����;���>s<��N�߽ܽ������������o������<��o�?�O�~w�t��~xx����������]�����?���0����ԕw:�ޞv�������n�|����x=<�=]{�+����^�>wo��:�e�ܱ>�^_�u{����;����n�ް6p��zxz~�����^�>�>��7gϲu�XOã�n�ް6p�z���ۣ7���Q�>���*��� i�[�O�����gٺ�w����x/�۳7� ܱ�>�;kݞ�am������AZ�goXx��r�y�*�ϲu�X�/ֺ={������y�cn<{�����cx�?�Ƴ7� �n}=}��:�e�ܱ�>��cn<{�����c��?�Ƴ7� ܱ�>���n�ް6����1��s�Y�.���c���'o/a;��ë����� c�v���U���ސ6��������~��Y��������Z�goX�c=} -OҺ={�����/:��� k�[����AZdzl]�;���p�$�۳7� ܱ�>�㳴n�ް6p�z��u{�����w��7�.ϲu�X��Һ={��������Z�goX�c}=�?�I��� k�[N���i{����Q�>��������(O��Q:�goH�c=}���x��������^Zdzl]�;�ӧp�?�Ƴ7� ܱ�>��y����;�����Z�goXx��twx~���ϲu�XG���� kw�O��gkݞ�am����1<ɟq���^�>�>�G��f<���c=}ֺ={�����c��?�Ƴ7� ܱ�>������]W��>��f{����Q�>�;�ܞ�!m������&qdz7� ܱ��^�u{�����w���3n<���c}8�=˟6����XOÓ�n�ް6p�z��ϸ�� k�[�NÃ��gٺ�w����^���ް6p�z���g�x����;���pg�۳7� �j}��;<���qy�+p�zx����goX�c}:<�X��� kw�/������]WO���њgY��w�����Z�goX�c=}��Һ={�����Sxx�����^�ޟ>�{iϲu�XO��QZ�goX�c=}��$�ް6p��rx}�����^�>�^ݏ�<���c�?�ʳ�<{��������Z�goX�c=}O���x�������A���Y�.���cx������XO��K��� g�v���@�����^�>�>����gٺ�w���@������X����$�ް6p��rxy�����^�>����I�e�ܱ�^��I��am����1<Y��� kw���A�����^���>yv�gٺ�w�����Z�goX�c=}��$�ް6p�z���I��am�u�����&��Y�.�����J�=z�Y����(�O�� iw�/��kݞ�am�u���3��'y��p�z���I��am����1<Z��� kw���A����^�>ݝ>�?h�Y�����c8Z��� kw���A�����X_O����� k�[�w�;L�Y�.����I�����X�w�ֺ={�����c��D��am�u���c����eg�v����Q*�=zCY�����D��!m�����cٵ��������p�o��3������=^o��6�⿆o���N�>�~�\{f�w�{~��V����/4��#�^h4q���_�������O����?����������o��+����+��o����3�/x��χǧ��qŹ={C�������Z�goXx��t<<��]�:�e�ܱ�>��iݞ�am����1�u{����;���p�(�۳7� �n}>ޞ�u<���c}8��Z��� kw�χ��giݞ�am�������"�۳7� �n=���IZdzl]�;�����*�۳7� ܱ�>��_�u{����;���po�۳7� �n}=}�/�ۣ�l������ iw�����Z�goX�c}=���_����^������x��p��pxy������XO� �Y���ް6p�z������ k�gbw����Y�,ZW����1<<K��� kw�����EZ�goX�c=}Gkݞ�am�u���1ܹsy��p��px~{������X��Wkݞ�am�����l��=z�Y�������_r�s<���c=}�ֺ={�����3x�������XO��ヴn�ް6pg���1<H�x��p�z���u{����;�m��Y�"[��@�:���@\R�,�u�"���E �6��u,�����c�� �E e�"Z .9�Xbki�I�E v��s,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@Xr�o�@l���"�n�@l,.9�Xbiq�X�"YW .9�Xbkq�Y�"[��@�:���@\R�,�u�"���E �6��u,�����c�� �E e�"Z .9�Xbkq�Y�"[��@�:���@ZRұ����"�Sn�@�,.9�Xbiq�Y�"[��@ʚE �.@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@\rֱ���"���E �6���t[bg�hH)�"*��@�9�X�@\rֱ���"���E �6��5�@h]���c�� �E g�@lm .9�XbkqHY�����@�:���@\rֱ���"���E �6��u.�u�"���E �6��u,������";��@ʙE �.@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@\rֱ���"���E �6��u,������YB��E g�@lm -9�����"�s�E �6��5�@h]���c�� �E g�@lm .9�XbkqHY�����@�:���@\rֱ���"���E �6��5�@h]���c�� �E g�@lm .9�XbkqHY���H�@N�-��p��c�� �E g�@lm .)k�к�q�Y�"[��@�:���@\rֱ���"���E ��@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[H�@J:���8Zr�m����E ��@,m .���E ~�o������"�Ƿ�xx�"���gN?u�����[���O�kE�<�-�&����믿��_~����/�5N/�p�w^y����lgh���y���۟��"0/��f^� �yc��"d]�</���Aky^DY3/��f^� �y#ͼ9��"ʙy�6��E�5�"hm ϋ(k�E��@�1�9/B���"ʚy�6��E�5�"hm ϋ(k�E��@���XW ϋ(k�E��@�Q�̋���</���Aky^�X�Y ϋ(k�E��@�Q�̋���8/��c^���y��"$]�</���Aky^DY3/��f^� �yc��"d]�</���Aky^DY3/��f^� �yc��"d]�</���Aky^DY3/��f^� �yc��"d]�</���Akq^DIǼ:��"ʙy�6��E�u�uf^� �yeͼZ��"ʚy�6��E�u�uf^� �yeͼZ��"ʚy�6��E�u�uf^� �yeͼZ��"ʚy�6��E�u�uҼ�rn�"h��Ἀ�y4��E�3�"(m ϋ�y^�+��E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���8/b��!g�p^D)Ǽ*��"ʙy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6�E�t̋��p8/b��!e�x^D93/��f^� �yeͼZ��"�:�EȺ�y^DY3/��f^� �yeͼZ��"�:�EȺ�y^DY3/��f^� �yeͼZ��"�z�� +OҺ={�����/:��� k�[����AZdzl]�;���p�$�۳7� ܱ�>�㳴n�ް6p�z��u{�����w��7�.ϲu�X��Һ={��������Z�goX�c}=�?�I��� k�[N���i{����Q�>��������(O��Q:�goH�c=}���x��������^Zdzl]�;�ӧp�?�Ƴ7� ܱ�>��y����;�����Z�goXx��twx~���ϲu�XG���� kw�O��gkݞ�am����1<ɟq���^�>�>�G��f<���c=}ֺ={�����c��?�Ƴ7� ܱ�>������]W��>��f{����Q�>�;�ܞ�!m������&qdz7� ܱ��^�u{�����w���3n<���c}8�=˟6����XOÓ�n�ް6p�z��ϸ�� k�[�NÃ��gٺ�w����^���ް6p�z���g�x����;���pg�۳7� �j}��;<���qy�+p�zx����goX�c}:<�X��� kw�/������]WO���њgY��w�����Z�goX�c=}��Һ={�����Sxx�����^�ޟ>�{iϲu�XO��QZ�goX�c=}��$�ް6p��rx}�����^�>�^ݏ�<���c�?�ʳ�<{��������Z�goX�c=}O���x�������A���Y�.���cx������XO��K��� g�v���@�����^�>�>����gٺ�w���@������X����$�ް6p��rxy�����^�>����I�e�ܱ�^��I��am����1<Y��� kw���A�����^���>yv�gٺ�w�����Z�goX�c=}��$�ް6p�z���I��am�u�����&��Y�.�����J�=z�Y����(�O�� iw�/��kݞ�am�u���3��'y��p�z���I��am����1<Z��� kw���A����^�>ݝ>�?h�Y�����c8Z��� kw���A�����X_O����� k�[�w�;L�Y�.����I�����X�w�ֺ={�����c��D��am�u���c����eg�v����Q*�=zCY�����D��!m�����cٵ��������p�o��3������=^o��6�⿆o���N�>�~�\{f�w�{~��V����/4��#�^h4q���_�������O����?����������o��+����+��o����3�/x��χǧ��qŹ={C�������Z�goXx��t<<��]�:�e�ܱ�>��iݞ�am����1�u{����;���p�(�۳7� �n}>ޞ�u<���c}8��Z��� kw�χ��giݞ�am�������"�۳7� �n=���IZdzl]�;�����*�۳7� ܱ�>��_�u{����;���po�۳7� �n}=}�/�ۣ�l������ iw�����Z�goX�c}=���_����^������x��p��pxy������XO� �Y���ް6p�z������ k�gbw����Y�,ZW����1<<K��� kw�����EZ�goX�c=}Gkݞ�am�u���1ܹsy��p��px~{������X��Wkݞ�am�����l��=z�Y�������_r�s<���c=}�ֺ={�����3x�������XO��ヴn�ް6pg���1<H�x��p�z���u{����;�m��Y�"[��@�:���@\R�,�u�"���E �6��u,�����c�� �E e�"Z .9�Xbki�I�E v��s,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@Xr�o�@l���"�n�@l,.9�Xbiq�X�"YW .9�Xbkq�Y�"[��@�:���@\R�,�u�"���E �6��u,�����c�� �E e�"Z .9�Xbkq�Y�"[��@�:���@ZRұ����"�Sn�@�,.9�Xbiq�Y�"[��@ʚE �.@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@\rֱ���"���E �6���t[bg�hH)�"*��@�9�X�@\rֱ���"���E �6��5�@h]���c�� �E g�@lm .9�XbkqHY�����@�:���@\rֱ���"���E �6��u.�u�"���E �6��u,������";��@ʙE �.@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[��@ʚE �.@\rֱ���"���E �6��u,������YB��E g�@lm -9�����"�s�E �6��5�@h]���c�� �E g�@lm .9�XbkqHY�����@�:���@\rֱ���"���E �6��5�@h]���c�� �E g�@lm .9�XbkqHY���H�@N�-��p��c�� �E g�@lm .)k�к�q�Y�"[��@�:���@\rֱ���"���E ��@\rֱ���"���E �6��u,������YB��E g�@lm .9�Xbkq�Y�"[H�@J:���8Zr�m����E ��@,m .���E ~�o������"�Ƿ�xx�"���gN?u�����[���O�kE�<�-�&����믿��_~����/�5N/�p�w^y����lgh���y���۟��"0/��f^� �yc��"d]�</���Aky^DY3/��f^� �y#ͼ9��"ʙy�6��E�5�"hm ϋ(k�E��@�1�9/B���"ʚy�6��E�5�"hm ϋ(k�E��@���XW ϋ(k�E��@�Q�̋���</���Aky^�X�Y ϋ(k�E��@�Q�̋���8/��c^���y��"$]�</���Aky^DY3/��f^� �yc��"d]�</���Aky^DY3/��f^� �yc��"d]�</���Aky^DY3/��f^� �yc��"d]�</���Akq^DIǼ:��"ʙy�6��E�u�uf^� �yeͼZ��"ʚy�6��E�u�uf^� �yeͼZ��"ʚy�6��E�u�uf^� �yeͼZ��"ʚy�6��E�u�uҼ�rn�"h��Ἀ�y4��E�3�"(m ϋ�y^�+��E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���8/b��!g�p^D)Ǽ*��"ʙy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6�E�t̋��p8/b��!e�x^D93/��f^� �yeͼZ��"�:�EȺ�y^DY3/��f^� �yeͼZ��"�:�EȺ�y^DY3/��f^� �yeͼZ��"�z�� �yeͼZ��"ʚy�6�E�t̋��p</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm ϋ(k�E��@�Q�̋���</b�s^����E�5�"hm (�Ag�x^D93/���y�.@�Q�̋���</���Aky^DY3/���y�.@�Q�̋���</���Aky^DY3/���y�.@�Q�̋���</���Aky^DY3/���y�.@�Q�1/����rf^� �yeͼZ��"�:�EȺ�y^DY3/��f^� �yeͼZ��"�z�� �yeͼZ��"ʚy�6��E�5�"hm ϋ�!��yeͼZ��"ʚy�6��E�5�"hm i�E��8�Q�1/����rf^� �y���5/��͋\�y�ϋ��ż��o�ޘy~<�����l�"�c^��~����O�?�q��~��?���?�<������/���ZF�����g��_���q�r����IK/�{?-�����trZ��IK��@NK�5i)Z�i��&-Ek9-5֙��urZ��IK��@NK�5i)Z�i��&-Ek9-5֙��urZ��IK��@NK�5i)Z�i��&-Ek9-5֙��urZ��IK��@LK�t���,��ʙ�� ��XgZJ��i��&-Ek9-U֤�hm ��ʚ�� ��XgZJ��i��&-Ek9-U֤�hm ��ʚ�� ��XgZJ��i��&-Ek9-U֤�hm ��ʚ�� ��XgZJ�Hi�rni)/a��*�HK�X8NK�3i)J�i����R��@NK�5i)Z�i��&-Ek9-U֤�hm ���:�R�.@NK�5i)Z�i��&-Ek9-U֤�hm ���:�R�.@NK�5i)Z�i��&-Ek9-U֤�hm ��F�����ôT)GZ���qZ��IKQ�@NK�5i)Z�i��δ����ReMZ��rZ��IK��@NK�5i)Z�i��δ����ReMZ��rZ��IK��@NK�5i)Z�i��δ����ReMZ��rZ��IK��@LK�t���,��F������T9�������*k�R�6��ReMZ��rZj�3-%��TY�������*k�R�6��ReMZ��rZj�3-%��TY�������*k�R�6��ReMZ��rZ*���+��ReMZ��rZ��IK��@LK�t���,���9�R�.@NK�5i)Z�i��&-Ek9-U֤�hm ���:�R�.@NK�5i)Z�i��&-Ek9-U֤�hm ���:�R�.@NK�5i)Z�i��&-Ek9-U֤�hm ���:�R�.@NK�5i)Z�i�������T9��������LKɺ�9-U֤�hm ��ʚ�� �TY��������LKɺ�9-U֤�hm ��ʚ�� �TY��������LKɺ�9-U֤�hm ��ʚ�� �TY��������LKɺ�1-Uґ���p��*g�R�6��ReMZ��rZj�3-%��TY�������*k�R�6��ReMZ��rZ*���+��ReMZ��rZ��IK��@NK�5i)Z�i��δ����ReMZ��rZ��IK��@NK�5i)Z�i��&-%g�0-Uʑ���p��*g�R�6��R*"EZ�ﱥ��%�~Z��KZz���xxyzƴt<���#-��/?~�������ǵ1����o��r�}�2��sȝ/��� �;�3����3���wF�u�wF+k�3� ��V�|g4Z������h�6��3ZX�� �������h�6��3ZY��hm g���;���@��hc��M�������h�6��3ZY��hm ~g��������8g�O��a��&�Gk9�Wք�hm ��ʚ�� ��Xg�O��a��&�Gk9�Wք�hm ��ʚ�� ��Xg�O��a��&�Gk9�Wք�hm ��ʚ�� ��Xg�O��a��&�Gk1�W����p�+g�~�6��~c�a?Y ��ʚ�� �_Y�����+k�~�6��~c�a?Y ��ʚ�� �_Y�����+k�~�6��~c�a?Y ��ʚ�� �_Y�����+k�~�6��~c�a?Y ��ʹ��h��aد�#�Gc�8�W΄�(m ���z���9�Wք�hm ��ʚ�� �_Y�������ɺ�9�Wք�hm ��ʚ�� �_Y�������ɺ�9�Wք�hm ��ʚ�� �_Y�����i�~r6�~�a?*�a�r&�Gi9�Wք�hm ���:�~�.@��5a?Z�a��&�Gk9�Wք�hm ���:�~�.@��5a?Z�a��&�Gk9�Wք�hm ���:�~�.@��5a?Z�a��&�Gk1�W����p�e�~R6��~�L؏�rد� ���@��5a?Z�a��ΰ����~eM؏�rد� ���@��5a?Z�a��ΰ����~eM؏�rد� ���@��5a?Z�a����~��@��5a?Z�a��&�Gk1�W����p���I��9�Wք�hm ��ʚ�� �_Y�������ɺ�9�Wք�hm ��ʚ�� �_Y�������ɺ�9�Wք�hm ��ʚ�� �_Y�������ɺ�9�Wք�hm ��J:�~t��~�L؏�r�o�3�'��_Y�����+k�~�6��~eM؏�r�o�3�'��_Y�����+k�~�6��~eM؏�r�o�3�'��_Y�����+k�~�6��~eM؏�r�o�3�'�İ_IG؏��qد� �Q�@��5a?Z�a��ΰ����~eM؏�rد� ���@��5a?Z�a����~��@��5a?Z�a��&�Gk9�Wք�hm ���:�~�.@��5a?Z�a��&�Gk9�Wք�hm ��F�����ð_)G؏��qد� �Q�@���t��{la�eG����_�?����� �����?���>�q|c���ϟ~���������x�~���w���{���������/�;Z�ѻ�&zGk9z�s���ѻ�&zGk9zW�D�hm G�ʚ�� ���Xg�N��ѻ�&zGk9zW�D�hm F�J:�wt��w��;I G�ʚ�� ��]Y�����+k�w�6��wc��;Y G�ʚ�� ��]Y�����+k�w�6��wc��;Y G�ʚ�� ��]Y�����+k�w�6��wc��;Y G�ʚ�� ��]IG���q�����Q�@�ލuF�d]��+k�w�6��weM��r�������@�ލuF�d]��+k�w�6��weM��r�������@�ލuF�d]��+k�w�6��weM��r�������@�ލuF�d]��+�����ѻ������]9������9z� -��]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��b�n�����8�ޕrD�,G�ʙ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]IG���a�n���I�8�ޕ3�;J�ѻ�&zGk9zW�D�hm G��:�w�.@�ޕ5�;Z�ѻ�&zGk9zW�D�hm G��:�w�.@�ޕ5�;Z�ѻ�&zGk9zW�D�hm G��z����9zW�D�hm G�ʚ�� ��]IG���q�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+���Y8�ޕ3�;J�ѻ��蝬��weM��r�������@�ޕ5�;Z�ѻ��蝬��weM��r�������@�ޕ5�;Z�ѻ��蝬��weM��r�������@�ޕ5�;Z�ѻ��蝬�w%�;:�ѻr&zGi9zW�D�hm G��:�w�.@�ޕ5�;Z�ѻ�&zGk9zW�D�hm G��z����9zW�D�hm G�ʚ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]Y�����i�wr6�w��;*�ѻr&zGi9zߏ�U��E��n���K�~����vqI��xd�ޟF����~���?�����_g���ǯ�?1���t�},��_�wK�|�<���R�����R��/}=Z�}����Gk��W���hm ���z������W���hm ��ʚ�� �^Y�ף�������ɺ���W���hm ��ʚ�� ľ^IG_���q_o���'��^Y�ף����+k�z�6��zeM_��r_o���'��^Y�ף����+k�z�6��zeM_��r_o���'��^Y�ף����+k�z�6��zeM_��r_o���'��^Y�ף����+����Y8��3}=J�}��ξ����zeM_��r_������@��5}=Z�}��ξ����zeM_��r_������@��5}=Z�}��ξ����zeM_��r_������@��5}=Z�}��ξ����z���z4^°�W��ף�p��+g�z�6��za=��`]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��4}=9�}�R�����^9�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+����Y8��2}=)�}�r��Gi��W���hm ��ʚ�� ��Xg_O��}����Gk��W���hm ��ʚ�� ��Xg_O��}����Gk��W���hm ��ʚ�� �^X�}=XW ��ʚ�� �^Y�ף����+����Y8��s��$]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6�z%}=:�}�r��Gi��7��דur_������@��5}=Z�}����Gk��7��דur_������@��5}=Z�}����Gk��7��דur_������@��5}=Z�}����Gk��7��דub_����GgḯW���(m ��ʚ�� ��Xg_O��}����Gk��W���hm ��ʚ�� �^X�}=XW ��ʚ�� �^Y�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+k�z�6�z#M_O��a_����GeḯW���(m ��������=���2g������w������5|����v��������^T���L -��h���/?����n�?����߮5�����������q���%�k�,��5���/Y2Z�Y���,����deM���r���ɒ��@̒�td��,g��9�d�.@Β�5Y2Z�Y��&KFk9KV�d�hm g��:�d�.@Β�5Y2Z�Y��&KFk9KV�d�hm g��:�d�.@Β�5Y2Z�Y��&KFk9KV�d�hm g��:�d�.@Β�5Y2Z�Y���,���,Y9�%����%�̒ɺ�9KV�d�hm g�ʚ,� �,YY�%����%�̒ɺ�9KV�d�hm g�ʚ,� �,YY�%����%�̒ɺ�9KV�d�hm g�ʚ,� �,YY�%����%�̒ɺ�)KV�-KF�%�d%Y2�Y�r&KFi9K�s���Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�H�%��q�%+�ȒQY8Β�3Y2J�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y���,���,�(�%��q�%+g�d�6��deM���r���ɒ��@Β�uf�d]��%+k�d�6��deM���r���ɒ��@Β�uf�d]��%+k�d�6��deM���r���ɒ��@Β���%�ur���ɒ��@Β�5Y2Z�Y���,���,�8g�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk1KVґ%��p�%+g�d�6��dc�Y2Y g�ʚ,� �,YY�%����%+k�d�6��dc�Y2Y g�ʚ,� �,YY�%����%+k�d�6��dc�Y2Y g�ʚ,� �,YY�%����%+k�d�6��dc�Y2Y f�J:�dt��d�L���r���ɒ��@Β�uf�d]��%+k�d�6��deM���r���ɒ��@Β���%�ur���ɒ��@Β�5Y2Z�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y��&KFk1K6�d��lf�J9�dT��d�L���r�Ly�Ȓ�=�,��~�͒���wo��w=��~�~��?��^�������9JN������/Y�?������|��˗�%��}��g��_����_�Y���晋w�mO>��~z���ax���;Ae�:Q����p��e�R6{�� *���R������D)Gh���afb��LH�8lL�r$&�,&J9�T��q *�i�Q�,!e�+Q�oY �.P�(�֔���E�����ÜD(gM��-�R����ÐD)GG���aE��#"Ae�0!1�$�l�#J9�T���*��R�p���l�(S���q،(�HFPY8F�r�"�,�"J9bT�Rc� F���m��.a�(�hD�X8,D�r"�,�!F�:����6D)G���a���Ae� -Q����p��e�R6{�9*�1�R����D)G���ab��@H�8l@�r$ �, J9�T��e��^�(�0�Q~��`�}(��>�X8�>�r4�,J9�Ts�L�A��a롔#�@e�0�P��y��pXy(�<PY8L<�2�)�}�R����øC)Gہ��a١�#�@e�0��Yu�r�aӡ�#�@e�0�P��s��pTs(�s���)��� c��Pʑq��pq(�h8PY8,8�r�,�F�z����vC)G����a�����@e��P�m��p�le� R6{ ��*���R�V���RC)G����a�a��4H�8l4�r$�,ʸ�(��a���#�@c�0�0ʔ�lvJ9�T��M*�E�R� ����(Sc��q�b(�H1PY81�rt�,VJ9"T�L�A��a��#�@e�0�P��^��pX^(�/PY8�.�2�)Gͅ2n� -/a\(��-�X8�-�r��,�F�҂����B)Gf���ad����@eᰰP�X��p�W�+@�భPʑV��pV(��*PY8�*�rD�,&F�����ÞB)GN���aL����@eᰤP�R��p�Q�(HX0j(�oK(�w ÀB G?���a=A���� |�o�\� -����K,���F9��|x;�� L'�3�v�~����O��釧��ZL������p�%���/5;�D�l�^2]��]y��/ck��Ɯt��1v�lL9�ec(]��ec�:�l�� �/s��eclm ~٘��/ck��Ɣ5_6���_6������@��1g_6��◍9���1�6�lLY�ech]��ec�:�l�� �/s��eclm ~٘��/ck��Ɣ5_6���_6������@��1'ݾl����/s��ec,m ~٘��ܓ���OeM��r>��@�>�5�'Z�姱������OeM���r��� @��@N@�5 (Z�������CPeM ��r���A��@�A�5=(Z�E���$����P�ܪP4^°U����p��*g�P�6��Pa=�`]��*k -Q�6�QeM$��r&���D��@.E�u��d]��*kjQ�6�{QeM0��r2��iF��@�F�uf�d]��*k�Q�6��QeM<��r>���G��@,H�4 )9��R�����T9������*kZR�6�kRc�9)Y �ʚ�� �TY������*k�R�6��Rc�i)Y ǥʚ�� �TY������*kS�6�+Sc��)Y ��ʚ�� ��TY������*��M�Y8,N�2�))�ѩr�:Ei�;Uք�hm ��ʚ�� ���Xg~J�����@Ek�AU�D�hm g�ʚ� ��Xg�J��1���FEk�GU��hm '�ʚ&� �*UX�Y*XW ��ʚ2� �6UY������*��S�Y8.T�s&�$]��*k*U�6�;UeM���r���iU��@�U�u�d]��*k�U�6��UeM���r����V��@.W�u��d]��*k�U�6��UeM���rª�iX��@�X�uf�d]��*kJV�6[V%1+:�9�r�gEi�h5֙��urԪ��Z��@�Z�5a+Z�i���mEk�n5֙��urબ)\��@n\�5�+Zș���sEk�t5֙��ur쪬�]��@�]�5�+Z�ɫ��yEk�z5֙��ub����|Eg�}U�į(m �ʚ�� ��XgK������Ek��Uք�hm ��ʚ� �VX�9,XW �ʚ"� �&VYŢ����*k�X�6��Xc�i,Y DZʚ:� �>VYȢ����*kY�6+Y#M&K��a(����EeḕU�IJ(m ����e�=�`��O�/f�����������'��s2�0�������~���?m������_�ڢ���rg��:��LJ��nv�b�3�x��P��@(��r(�� ���@Ŕ5�Zȡ���P���C1eM(��b(��#Cg�8S΄b(m �b�:C1�.@Ŕ5�Zȡ��&Ck9Sքbhm �b�:C1�.@Ŕ5�Zȡ��&Ck9Sքbhm �b�:C1�.@Ŕ5�Zȡ��&Ck9Sքbhm �b�:C1�.@ -Ŕs��x �PL G(���q(�� �P�@ń���ur(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕ5�Zȡ��&Ck13҄b�l�bJ9B1T�C1�L(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��b(��#Cg�03ʄb�l�bʙP� �PLY�����)kB1�6�C1c��Y �bʚP� �PLY�����)kB1�6�C1c��Y �bʚP� �PLY�����)kB1�6�C1a=�b`]��)kB1�6�C1eM(��b(��#Cg�83���tr(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕt�b�,�bʙP� �P�Xg(F�ȡ��&Ck9Sքbhm �bʚP� �P�Xg(F�ȡ��&Ck9Sքbhm �bʚP� �P�Xg(F�ȡ��&Ck9Sքbhm �bʚP� �P�Xg(F������P���PL9�����)kB1�6�C1c��Y �bʚP� �PLY�����)kB1�6�C1a=�b`]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ō4�9���R�P���PL9�������N*���B���x�� ������<���)|�����[�筰��B�<�eb�#��_��������8��t<��z��^��^��������������;||������ڋ\�n�ް6p��zx{��Q����^���Ň�߶4��,[������j�۳7� ܱ>���y������X_��m��۳7� �n}9}O�:�e�ܱ�>��keݞ�am����1�����n�ް6p�z��u{���������I�G�ٸ��38�s{����;��gpg�۳7� ܱ�^����� k�[ߎ��W�g<���c}8��X��� kw�χ�g�cn<{�����cx�?pƳ7� �^ݝ>�Ggͳh]�;�����,�۳7� ܱ�>��iݞ�am����1�u{����;�}���<���c_����q�6��a\Y� �hm ~ø��oGg��ƍs~�8I ø�����@��qe�7����� �ʚoGk�ƍu~�8Y ø�����@��qe�7����� �ʚoGk�ƍuǐu�p��f8� ��e�pZ��1ʚ��6��c�uǐu�p��f8� ��%�1�,�(g�cP�@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C�H�1ʹ Ǡ���1J8�c�X8�Q�Ǡ��<#�����@�Q�Ǡ��<���Aky8FY3���p�����.@�Q�Ǡ��<���Aky8FY3���p�����.@�Q�Ǡ��<���Aky8FY3���p��f8�������1�,�(g�cP�@�Q�Ǡ��<c�s8����c�5�1hm �(k�c��@�Q�Ǡ��<c�s8����c�5�1hm �(k�c��@�Q�Ǡ��<c�s8����c�5�1hm �(k�c��@�Q�1����p�Qf8�������pJ��1ʚ��6��c�5�1hm ���!���e�pZ��1ʚ��6��c�5�1hm ���!���e�pZ��1ʚ��6��c�5�1hm ��y8�+��c�5�1hm �(k�c��@�Q�1����p�q���.@�Q�Ǡ��<���Aky8FY3���p�����.@�Q�Ǡ��<���Aky8FY3���p�����.@�Q�Ǡ��<���Aky8FY3���p�����.@�Q�Ǡ��8��c8������pJ��1�:�cȺ�y8FY3���p��f8� ��e�pZ��1�:�cȺ�y8FY3���p��f8� ��e�pZ��1�:�cȺ�y8FY3���p��f8� ��e�pZ��1�:�cȺ�q8FI�p:��1ʙ��6��c�5�1hm ���!���e�pZ��1ʚ��6��c�5�1hm ��y8�+��c�5�1hm �(k�c��@�Q�Ǡ��<c�s8����c�5�1hm �(k�c��@�Q�Ǡ��8c��!g�p8F)�p*��1ʙ��6��c��P�p��6s�0���p�=Ǽ_h<>�p�xd�y�1���ϟ��i��\��y;��f֙���������3wM�������||�5Aky�DY�k��f�� �]c��&d]��k���5Aky�DY�k��f�� �]#ͮ 9ǻ&ʙ]�6�wM�5�&hm �(kvM��@�51ֹkB�Ȼ&ʚ]�6�wM�5�&hm �(kvM��@�5�� XW �(kvM��@�5Q�욠���k���5Aky��X� Y �(kvM��@�5Q�욠���k��c����]㜻&$]��k���5Aky�DY�k��f�� �]c��&d]��k���5Aky�DY�k��f�� �]c��&d]��k���5Aky�DY�k��f�� �]c��&d]��k���5Akq�DIǮ :ǻ&ʙ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6�wM�uuҮ�rn�&h��ᮉ�]4�wM�3�&(m ��y��+�wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb��5!g�p�D)Ǯ *ǻ&ʙ]�6�wM�5�&hm ���5!��]eͮ ZȻ&ʚ]�6�wM�5�&hm ���5!��]eͮ ZȻ&ʚ]�6�wM�5�&hm ���5!��]eͮ ZȻ&ʚ]�6wM�t욠�p�kb��5!e�x�D9�k��f�� �]eͮ ZȻ&�:wMȺ�y�DY�k��f�� �]eͮ ZȻ&�:wMȺ�y�DY�k��f�� �]eͮ ZȻ&�z�5� -�]eͮ ZȻ&ʚ]�6wM�t욠�p�kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(��5Ag�x�D9�k���]�.@�5Q�욠���k���5Aky�DY�k���]�.@�5Q�욠���k���5Aky�DY�k���]�.@�5Q�욠���k���5Aky�DY�k���]�.@�5Qұk����rf�� �]eͮ ZȻ&�:wMȺ�y�DY�k��f�� �]eͮ ZȻ&�z�5� -�]eͮ ZȻ&ʚ]�6�wM�5�&hm ���5!��]eͮ ZȻ&ʚ]�6�wM�5�&hm �ivM��8�5Qʱk����rf�� �]����k���\���Dzkr�]���_�NoG�&�m��u����O�����?o��������ϟ~���_?�zm������m���do�$��s���u��?>�,�����a�s�����?�5�hm /(k�?��@^�P�,�����a�Y� g�x�C9������f�� ��e��Z���:�?Ⱥ�y�CY������f�� ��e��Z���z^��� -��e��Z��ʚ��6��?�5�hm /�\� ���e��Z��ʚ��6�?�t,��p��a�s�����?�5�hm /(k�?��@^�P�,�����a�s�����?�5�hm /(k�?��@^�P�,�����a�s�����?�5�hm /(k�?��@^�P�,�����a�s�����?�5�hm .(�X�@g�x�C9���������.@^�P�,�������Y�@ky�CY���������.@^�P�,�������Y�@ky�CY���������.@^�P�,�������Y�@ky�CY���������.@Z�P�m���0\�P±������rf�� ��a=/�u��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��e��Z��ʚ��6�?�4��l.(�X�@e�x�C9������f�� ��c��d]�����Y�@ky�CY������f�� ��c��d]�����Y�@ky�CY������f�� ��c��d]�����Y�@ky�CY������t�?�2��l/(g�?P�@^�P�,�������Y�@ky��X��Y /(k�?��@^�P�,�������Y�@ky��X��Y /(k�?��@^�P�,�������Y�@ky�CX��`]�����Y�@ky�CY������t��?�s.�t��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��%��,/(g�?P�@^�0ֹ�A���ʚ��6��?�5�hm /(k�?��@^�0ֹ�A���ʚ��6��?�5�hm /(k�?��@^�0ֹ�A���ʚ��6��?�5�hm /(k�?��@^�0ֹ�A���J:�?�Y8^�P�,�������Y�@ky��X��Y /(k�?��@^�P�,�������Y�@ky�CX��`]�����Y�@ky�CY������f�� ��c��d]�����Y�@ky�CY������f�� ��#��9��J9�?PY8^�P�,�����A�b��c[��x�������{����zx|��������'�����?�_/��Cy&���ǹ��_��L�|�m�?|�R�����\�������~���pw�{�����{�#�������_.�ɺ���^Ysy���彲��� ��{e��=Zȗ��:/�ɺ���^9��{4^���^ ��=Ǘ�ʙ�{�6�/��|y�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�\ޓ�qxy��������{���=Jȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Z���J:.��Y8��7�\ޓ�q|y����Gi��^Ysy���彲��� ��{c���d]�|y����Gk��^Ysy���彲��� ��{c���d]�|y����Gk��^Ysy���彲��� ��{a=_ރu�彲��� ��{e��=Z���J:.��Y8��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6/�t\ޣ�p|y����Gi���X��=Y _�+k.���@��W�\ޣ��|y����Gk���X��=Y _�+k.���@��W�\ޣ��|y����Gk���X��=Y _�+k.���@��W�\ޣ��|y����Gk���X��=Y ^�+鸼Gg���^9sy���彲��� ��{c���d]�|y����Gk��^Ysy���彲��� ��{a=_ރu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6/�4���l^�+帼Ge���^9sy������������.�/^.���c����qy�v��;>����������O����?��������C�?~��ӗ���o�o�������i������������|���p9���ߝ�����������nn�q�͝����>�͑�p|2g���#e��^Ns.ᱜ�[9�]��R�s(G���Q�J����9��'r�l�e��HY8��3�Ǒ�p|g���#e��.N(�Y(�GqF��8R�/�2q�,��e��HY8���y -���!�Q�����+8��)�'p�8.�Hx ��7���� -��oF��72�/ߌ2�o�,��e��HY8�y�y������Q�ލ���k7�̱)ǧnF�K7R��܄r����q|�f��q#e����(s�F���y�Q溍���۶���i۾r��a�Q殍���6��Q)�'m�8.�Hx �{6!��l`l�en�HY8�d3����p|�f��b#e���M(� (�lF��5R��2�k�,��e.�HY8�[�y����њQ�f����5���)��jF�k5R�oՄr����q|�f��S#e��J�Ǒ /a|�f��P#c��>M(�y(��iF��4R�/ӌ2�i�,��e��HY8�I�y����A�Q�����k4��1)ǧhF�K4R��Єr����q|�f��A#e���(s�F�����Q�������3���g�l��;#�%��Ό0Ggd,��e.�HY8�7�yn���Q����K3�̡)�gfF�+3R�o�n+�'f���fF��2R��ˌ2�e�,��e.�HY8�+�yV���Q�Q榌���2��A)��dF�k2RoɄ1�d ,�߸##�%��Ȍ0Gdd,���^3�2z����p?���p�����o��~,���a�����_�����qB�w�|����(�߾n�c�n�q9�8��px{<~w�NW�Z���Z�No��Ly�������s��"��lm �*kbѺ�q �Y�@,[���:b��@�u�1���@��f �b���@,/a4��@,���9bY�@�5�9K����:b��@�u�1���@����X�6b�5�h]�8�c �� āXg�lm �:��ekq VY3�����:���@<uw�q�����sw�6�ޕt\���qt����;+�g��9��Y�@�|w�q���������ߝu����x���� �+xgg�lm �+k.�Ѻ���Y�1<[����:����@��w�q���Q���*���uƳ��x��6�� ��x'����Y8:�W�q!���፼s�#y�6��u�ɳ��x)��T�� �cye͵<Z ��;�8�gk�d�Y��<[�W��:����@<�W�\Σu������y�6��u�ϳ��xA�ㄞ� �#zc�W�d]�xG�㐞� �Szg��lm ]�;�vN����A�r��o�uճ��xV�㮞� ��zg��lm �+k��Ѻ���Yǁ=[�'��:n���@��w�qf��⡽����o�u۳��xn��ޞ� ċ{g'�lm �+k��Ѻ����Y��=[H��N���px}����� �|e�>Z ��;�8�gk��Y�>[����:N���@<�W�\�u�=����|�6O�u�䳵�x���,�� ��|e�e>Z ��;�8�gk�<�Y�}>[���:N���@<�W�\�uҝ��n���,��;��gi�Z�Yǹ>[��ʚ�}�.@��w�q����پ���}�6/��u��x�o��z��+���ux��㆟� �+~gg�lm �+k.�Ѻ���Y�1?[����:����@��w�q����Q����~t6����r;�ge���9�m?K���p|n���=�=s�����@��������]�������S����_~�G�?~��������?������K��駯������~��;���z~����%?���v'bs��9��C�=�����]�,v)g�P�@>�R�v���|�e����5�]hm v)k���@>�R�v���|�e����5�]hm v)k���@>�R�v���|�e����5�]hm v)k���@<�R�q���a�Q氋����.��aJȇ]ʚ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6���5�]hm v ����+���5�]hm v)k���@<�R�q���a�q��.�.@>�R�v���|إ�9�Bk��KYs��a����.�.@>�R�v���|إ�9�Bk��KYs��a����.�.@>�R�v���|إ�9�Bk��KYs��a����.�.@>�R�v���xإ������.��aJȇ]�:�Ⱥ���KYs��a���� ��.e�aZȇ]�:�Ⱥ���KYs��a���� ��.e�aZȇ]�:�Ⱥ���KYs��a���� ��.e�aZȇ]�:�Ⱥ��KI�a:LJ]ʙ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6���5�]hm v ����+���5�]hm v)k���@>�R�v���|�e����5�]hm v)k���@>�R�v���x�e�9�"g��K)�a*LJ]ʙ�.�6���O��a��v�u�/���]���WN�������3v�gr��4����>��/u�5.�.��no��������K}�U~y��U�>����Y���C�PW�[�N�̏�^��v��,[������b�۳7� ܱ�1[e�:.Z��ʚu\�6��q�u��u�:��f� �u\e�:.Z��ʚu\�6��q�u��u�:�rn�h���:��u\4��q�3�(m �� -�y�+��q�5�hm ��*k�q��@^�U֬㢵���k�s����q�5�hm ��*k�q��@^�U֬㢵���k�s����q�5�hm ��*k�q��@^�U֬㢵���k��(��8�(�rD�,Gʙ�� �BYQ���Q�(Ⱥ�9�P�Dhm Gʚ�� �BYQ���Q�(Ⱥ�9�P�Dhm Gʚ�� �BYQ���Q�(Ⱥ�9�P�Dhm Gʚ�� ĈBIGD���aDa��(H�8�(�3J���&�@k9�P�Dhm G�:# +��]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��b�n�����8�ޕrD�,G�ʙ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]IG���a�n���I�8�ޕ3�;J�ѻ�&zGk9zW�D�hm G��:�w�.@�ޕ5�;Z�ѻ�&zGk9zW�D�hm G��:�w�.@�ޕ5�;Z�ѻ�&zGk9zW�D�hm G��z����9zW�D�hm G�ʚ�� ��]IG���q�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+k�w�6��weM��r�n�3z'���]Y�����+���Y8�ޕ3�;J�ѻ��蝬��weM��r�������@�ޕ5�;Z�ѻ��蝬��weM��r�������@�ޕ5�;Z�ѻ��蝬��weM��r�������@�ޕ5�;Z�ѻ��蝬�w%�;:�ѻr&zGi9zW�D�hm G��:�w�.@�ޕ5�;Z�ѻ�&zGk9zW�D�hm G��z����9zW�D�hm G�ʚ�� ��]Y�������ɺ�9zW�D�hm G�ʚ�� ��]Y�����i�wr6�w��;*�ѻr&zGi9zߏ�U��E��n���K�~����vqI��xd�ޟF����~���?�����_g���ǯ�?1���t�},��_�wK�|�<���R�����R��/}=Z�}����Gk��W���hm ���z������W���hm ��ʚ�� �^Y�ף�������ɺ���W���hm ��ʚ�� ľ^IG_���q_o���'��^Y�ף����+k�z�6��zeM_��r_o���'��^Y�ף����+k�z�6��zeM_��r_o���'��^Y�ף����+k�z�6��zeM_��r_o���'��^Y�ף����+����Y8��3}=J�}��ξ����zeM_��r_������@��5}=Z�}��ξ����zeM_��r_������@��5}=Z�}��ξ����zeM_��r_������@��5}=Z�}��ξ����z���z4^°�W��ף�p��+g�z�6��za=��`]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��4}=9�}�R�����^9�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+����Y8��2}=)�}�r��Gi��W���hm ��ʚ�� ��Xg_O��}����Gk��W���hm ��ʚ�� ��Xg_O��}����Gk��W���hm ��ʚ�� �^X�}=XW ��ʚ�� �^Y�ף����+����Y8��s��$]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6��zeM_��r_������@��u��d]���+k�z�6�z%}=:�}�r��Gi��7��דur_������@��5}=Z�}����Gk��7��דur_������@��5}=Z�}����Gk��7��דur_������@��5}=Z�}����Gk��7��דub_����GgḯW���(m ��ʚ�� ��Xg_O��}����Gk��W���hm ��ʚ�� �^X�}=XW ��ʚ�� �^Y�ף����+k�z�6��zc�}=Y ��ʚ�� �^Y�ף����+k�z�6�z#M_O��a_����GeḯW���(m ��������=���2g������w������5|����v��������^T���L +��h���/?����n�?����߮5�����������q���%�k�,��5���/Y2Z�Y���,����deM���r���ɒ��@̒�td��,g��9�d�.@Β�5Y2Z�Y��&KFk9KV�d�hm g��:�d�.@Β�5Y2Z�Y��&KFk9KV�d�hm g��:�d�.@Β�5Y2Z�Y��&KFk9KV�d�hm g��:�d�.@Β�5Y2Z�Y���,���,Y9�%����%�̒ɺ�9KV�d�hm g�ʚ,� �,YY�%����%�̒ɺ�9KV�d�hm g�ʚ,� �,YY�%����%�̒ɺ�9KV�d�hm g�ʚ,� �,YY�%����%�̒ɺ�)KV�-KF�%�d%Y2�Y�r&KFi9K�s���Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�H�%��q�%+�ȒQY8Β�3Y2J�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y���,���,�(�%��q�%+g�d�6��deM���r���ɒ��@Β�uf�d]��%+k�d�6��deM���r���ɒ��@Β�uf�d]��%+k�d�6��deM���r���ɒ��@Β���%�ur���ɒ��@Β�5Y2Z�Y���,���,�8g�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk9KV�d�hm g�ʚ,� �,�Xg�L��Y��&KFk1KVґ%��p�%+g�d�6��dc�Y2Y g�ʚ,� �,YY�%����%+k�d�6��dc�Y2Y g�ʚ,� �,YY�%����%+k�d�6��dc�Y2Y g�ʚ,� �,YY�%����%+k�d�6��dc�Y2Y f�J:�dt��d�L���r���ɒ��@Β�uf�d]��%+k�d�6��deM���r���ɒ��@Β���%�ur���ɒ��@Β�5Y2Z�Y��&KFk9K6֙%�ur���ɒ��@Β�5Y2Z�Y��&KFk1K6�d��lf�J9�dT��d�L���r�Ly�Ȓ�=�,��5^�v����������]���ߧ9�����Oo���=�yf<r���%��_���_F�����}���/_?���c q�o�'�Y����i�o�'�y��]wۓ�o�����p�(��NPY8�N�rD'�,&'F�℔���D)Gn���al���5Ae�4Q����p��e*R6�� *���R����úD)G\���aZb�)KH�8�J��[V��E%ʶ5%���aQ��#(Ac�0'�Y��r�aK��#%Ae�0$Q�ё��pX�(�HPY8LH�2 )���R�|���xD)G;���a9��#Ae�01�T#�l6#J9�T���*���R�X���T�G)BQ'�|[&��KF"J84��*�y�Q�!e� Qʑ���p�(��BPY8�B�rD!�,&!F�"����D)G���a���Ae�Q����p��e*R6� *��R������C����0J?�o��+vJ8�4���*�ŇR�������(S{��q�z(�H=PY8=�rt�,VJ9"T�L�A��aߡ�#�@e�0�P��v��pXv(�;PY8�:�rV�\p�t(�H:PY8:�r��,�ʸ�(��a�a�)9��8�8�rd�,FJ9T�*���Q�� e��Pʑn��pn(��6PY8�6�rD�,&F�b����^C)G����a�����@e��P�j��p�ie* R6 ��*G��2n} +/aXg(�3�X8L3�2e)�]�R�,���(C)G����a���#�@e�0�0���l�J9RTC�*��R�����(S`��q�_(��/PY8�/�r��,�J9�T��LuA��Qs��[r��KJ8z4k��*���Q�� e㰳PʑY��pY(�h,PY8,,�r�,�B9� +P.8l+�r��,�J9� +T� +�Q*�I�Q�� e㰧PʑS��pS(�h)PY8,)�r��,e�8* +� +�� +�]�0�P��O��pXO����x_��#ﰟN��RNo��χ���tb<sn'�G;�~������~x��ǫ��� ����Y������R��L����%���K�~�ؕ���1�6��l�I�/cg���Ɣ3_6���_6������@��1g_6��◍9���1�6�lLY�ech]��ec�:�l�� �/s��eclm ~٘��/ck��Ɣ5_6���_6������@��1g_6��◍9���1�6�lLY�ech]��ec�:�l�� �/s�����Y8��1�_6��◍)��=ɺ�9�T��hm 7�ʚ�� ��SY�}���\~�L?ɺ�9�T�ԟhm ��ʚ�� �TYӀ���\���@ɺ�9U֔�hm ��ʚ� �TYӃ���\��LBɺ�) +Uέ +E�%�P%a(�i�r� Ei��s +�ȁ���Ek�U�D�hm g�ʚN� �R�Xg*J�ȱ���Ek�U��hm '�ʚf� �j�Xg6J��ᨲ�Ek�U�ģhm �ʚ~� Ă�H����q�*�HQY8�H�3!)J�)���%Ek�&5֙��urP��)J��@nJ�5Q)Z�Y���+Ek�,5֙��ur\���K��@�K�5�)Zȉ���1Ek�25֙��urh��)M��@nM�5�)Z�����������(����q�*g�S�6��SeMx��rz��iO��@�O�u�d]��*k +T�6�TeM���r����P��@.Q�u��d]��*kjT�6�{TeM���r���iR��@�R�����ur���)S��@nS�5q*Z�y���>���B�8g�J�ȑ���REk�SUք�hm ��ʚV� �Z�Xg�J������XEk�YU�D�hm g�ʚn� �r�Xg�J��^Ek�_U��hm '�ʚ�� ��Xg�J��!���dEk�eU����p��*gzV�6��Vc�I+Y G�ʚ�� �UY������*k�V�6��Vc�y+Y �ʚ�� ��UY������*k:W�6�KWc��+Y Ǯʚ�� ��UY������*k�W�6��Wc��+Y ��J:�Wt��W�L���r����_��@.`�u&�d]��*k*X�6�;XeM��r +��ia��@�a���Âur��)b��@nb�5Q,Z�Y����Ek��5֙ƒur���c��@�c�5�,Zȉ����Ek��5�d��l��J9JYT�[Y�L,��r.��^�cf/^�����+�l���p�����x��>�d�?��篟���O�?��?����߮�h����ٴ������~�������.�t?��"�����)kB1�6�C1eM(��r(f�3#��PLY�����)���Y8Ŕ3�Jȡ���P���C1eM(��r(�� ���@Ŕ5�Zȡ���P���C1eM(��r(�� ���@Ŕ5�Zȡ���P���C1eM(��r(�� ���@Ŕ5�Zȡ���P���B1��B14^�0S����p�)gB1�6�C1a=�b`]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ō4�9���R�P���PL9�����)kB1�6�C1c��Y �bʚP� �PLY�����)kB1�6�C1c��Y �bʚP� �PLY�����)kB1�6�C1c��Y �bʚP� �PLY�����)���Y8Ō2�)ǡ�r&Ci9Sքbhm �bʚP� �P�Xg(F�ȡ��&Ck9Sքbhm �bʚP� �P�Xg(F�ȡ��&Ck9Sքbhm �bʚP� �PLXϡXW �bʚP� �PLY�����)���Y8Ōs�b$]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6�C1eM(��r(�� ���@Ōu�bd]��)kB1�6C1%�:ǡ�r&Ci93���ur(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕ5�Zȡ��&Ck93���ur(�� ���@Ŕ5�Zȡ��&Ck93���ub(��#Cg�8S΄b(m �bʚP� �P�Xg(F�ȡ��&Ck9Sքbhm �bʚP� �PLXϡXW �bʚP� �PLY�����)kB1�6�C1c��Y �bʚP� �PLY�����)kB1�6C1#M(F��a(��#Ce�8S΄b(m �b��� +��=�P��5^�����{|������1��V<��y�v��V�^h<�G�L�y$b��˟��������?_��ޫq���^v|z8�}�}Px�<t�~��/�|x<>\{�+�����X_o��6ʺ={�����ӿ���ۖ�:�e�ܱ>^_�u{����;��ӟ?�Һ={���������-�u{����/���IZdzl]�;����~m��۳7� ܱ�>��߶T�����XOý�n�ް6����1�;��(;��<}ǣtn�ސ6p�z��u{����;���˛��ݞ�am�u���p�*��gٺ�w���kݞ�am����p�,̍goX�c=}O��x�����k������y�+p�z���u{����;���p�"�۳7� ܱ�>���n�ް6p���OÝ�1�gٺ�w����5�0���7�+k�a� �oW�� ��,øq�o'��oW�|�8Z��0����q�6��a\Y� �hm ø��o'��oW�|�8Z��0����q�6��a\Y� �hm ø����.@�Q�Ǡ��<���Aky8FY3���p�����.@�Q�Ǡ��8��c8������pJ��1�:�cȺ�y8FY3���p��f8� ��e�pZ��1�:�cȺ�y8FY3���p��f8� ��e�pZ��1�:�cȺ�y8FY3���p��f8� ��e�pZ��1�:�cȺ�i8F9��4^�p8F �p��1ʙ��6��c��<���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�ǐ�q8��c8������pJ��1ʚ��6��c�uǐu�p��f8� ��e�pZ��1ʚ��6��c�uǐu�p��f8� ��e�pZ��1ʚ��6��c�uǐu�p��f8� ��e�pZ��1J:�c�Y8�1�ǐ�q<���Aiy8FY3���p��f8� ��c��1d]�<���Aky8FY3���p��f8� ��c��1d]�<���Aky8FY3���p��f8� ��a=ǀu�p��f8� ��e�pZ��1J:�c�Y8�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6��c�5�1hm �(k�c��@�1�9C���1ʚ��6�c�tǠ�p<���Aiy8�X�pY �(k�c��@�Q�Ǡ��<���Aky8�X�pY �(k�c��@�Q�Ǡ��<���Aky8�X�pY �(k�c��@�Q�Ǡ��<���Aky8�X�pY �(��Ag�x8F93���p��f8� ��c��1d]�<���Aky8FY3���p��f8� ��a=ǀu�p��f8� ��e�pZ��1ʚ��6��c�uǐu�p��f8� ��e�pZ��1ʚ��6�c�4�1�l�(��Ae�x8F93���p������؆c.^�c��c�������G��l�1/c8�?~���?��+�1o����:��w8~���v�c� ���5�x��]��/�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb��5!g�x�D9�k��f�� �]eͮ ZȻ&�:wMȺ�y�DY�k��f�� �]eͮ ZȻ&�z�5� +�]eͮ ZȻ&ʚ]�6�wM�5�&hm ���5!��]eͮ ZȻ&ʚ]�6wM�t욠�p�kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(kvM��@�5Q�욠���kb�sׄ��wM�5�&hm �(��5Ag�x�D9�k���]�.@�5Q�욠���k���5Aky�DY�k���]�.@�5Q�욠���k���5Aky�DY�k���]�.@�5Q�욠���k���5Aky�DY�k���]�.@�5Q�m���0�5Q±k����rf�� �]a=uf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6wM�4�&�l�(��5Ae�x�D9�k��f�� �]c��&d]��k���5Aky�DY�k��f�� �]c��&d]��k���5Aky�DY�k��f�� �]c��&d]��k���5Aky�DY�k��⮉��]twM�2�&�l�(gvMP�@�5Q�욠���k���5Aky��X� Y �(kvM��@�5Q�욠���k���5Aky��X� Y �(kvM��@�5Q�욠���k���5Aky�DXϻ&`]��k���5Aky�DY�k��⮉��]t�wM�stf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]eͮ ZȻ&ʚ]�6�wM�uuf�� �]%�&�,�(gvMP�@�51ֹkB�Ȼ&ʚ]�6�wM�5�&hm �(kvM��@�51ֹkB�Ȼ&ʚ]�6�wM�5�&hm �(kvM��@�51ֹkB�Ȼ&ʚ]�6�wM�5�&hm �(kvM��@�51ֹkB���&J:vM�Y8�5Q�욠���k���5Aky��X� Y �(kvM��@�5Q�욠���k���5Aky�DXϻ&`]��k���5Aky�DY�k��f�� �]c��&d]��k���5Aky�DY�k��f�� �]#ͮ 9��&J9vMPY8�5Q�욠���k��ӡvM�=�]��׀]���XvM��k�p������h�d<�횼�]�������������??<�}����O���_��|ܽ��������쭜d��v.\���������6��?�u.�u��f�� ��e��Z��ʚ��6�?�4��l/(g�?P�@^�P�,�������Y�@ky��X��Y /(k�?��@^�P�,�������Y�@ky�CX��`]�����Y�@ky�CY������f�� ��c��d]�����Y�@ky�CY������t��?�s.�t��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��e��Z��ʚ��6��?�u.�u��f�� ��%��,/(g�?P�@^�0ֹ�A���ʚ��6��?�5�hm /(k�?��@^�0ֹ�A���ʚ��6��?�5�hm /(k�?��@^�0ֹ�A���ʚ��6��?�5�hm /(k�?��@^�0ֹ�A�H�ʹ-����J8�?�X8^�P�,�����!�����@^�P�,�������Y�@ky�CY���������.@^�P�,�������Y�@ky�CY���������.@^�P�,�������Y�@ky�CY������f���������,/(g�?P�@^�P�,�����a�s�����?�5�hm /(k�?��@^�P�,�����a�s�����?�5�hm /(k�?��@^�P�,�����a�s�����?�5�hm /(k�?��@\�Pұ������Qf���������J��ʚ��6��?�5�hm /�\� ���e��Z��ʚ��6��?�5�hm /�\� ���e��Z��ʚ��6��?�5�hm /�y��+��?�5�hm /(k�?��@\�Pұ������q���.@^�P�,�������Y�@ky�CY���������.@^�P�,�������Y�@ky�CY���������.@^�P�,�������Y�@ky�CY���������.@^�P�,�������c��������J���:�?Ⱥ�y�CY������f�� ��e��Z���:�?Ⱥ�y�CY������f�� ��e��Z���:�?Ⱥ�y�CY������f�� ��e��Z���:�?Ⱥ�q�CI��:��ʙ��6��?�5�hm /�\� ���e��Z��ʚ��6��?�5�hm /�y��+��?�5�hm /(k�?��@^�P�,�����a�s�����?�5�hm /(k�?��@^�P�,�����a�Y� g�p�C)��*��ʙ��6��?h�B,�{l���r������{<����a��x|;� u�},�����P������q���?-� �~����Կ���{7r�>��z�_�ø?ܝ�^��/���������������{�.@��W�\ޣ��|y����Gk��^Ysy���影��{�.@��W�����0��W�qy�����r��� ��{a=_ރu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6/�4���l^�+帼Ge���^9sy���彲��� ��{c���d]�|y����Gk��^Ysy���彲��� ��{c���d]�|y����Gk��^Ysy���彲��� ��{c���d]�|y����Gk��^Ysy���归��{t/�2���l_�+g.�Q�@��W�\ޣ��|y����Gk���X��=Y _�+k.���@��W�\ޣ��|y����Gk���X��=Y _�+k.���@��W�\ޣ��|y����Gk��^Xϗ�`]�|y����Gk��^Ysy���归��{t�/�s^ޓt�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{e��=Zȗ�ʚ�{�6�/�u^ޓu�彲��� ��{%���,_�+g.�Q�@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO�ȗ�ʚ�{�6�/�5��hm _�+k.���@��7�yyO����J:.��Y8��W�\ޣ��|y����Gk���X��=Y _�+k.���@��W�\ޣ��|y����Gk��^Xϗ�`]�|y����Gk��^Ysy���彲��� ��{c���d]�|y����Gk��^Ysy���彲��� ��{#��=9���J9.�QY8��W�\ޣ��|y��.��=����׀����X.��o\�߽����Grw?����ӧyn��ϟ���?�������~�������������_?}���������x��//�?\��A��w�w�xz��wz����C�gs�?����oGs�,��e.�HY8��Ɯˁ�`x,g|�V�|�0��3�ʑ�p|&g���#e��FN(�(�rF��8R���2�q�,��e.�HY8���y���Q�Q�&����8��A)��pF�k8R�o�r��q|g���#e�� +�(sG��� �1�8^���M�r������������7���)�goF��7R�oބr����q|�f��w#e����(s�F���Q�ҍ���;7��gn�l�en�HY8�p3����p|�f��n#e������|ڶ�\p|�f��k#e����(s�F���I�1��6^���M�9��lF�[6R�/ٌ2�l�,��e��HY8�a�y�����Q�~�����5���)ǧkF��5R��քr����q|�f��Y#e��b�(s�F���Q�Z����[5���j�l�e��HY8�R3�q�F�K��a.��X8�O�y����q�Q�6�����4��a)�giF��4R�o҄r����q|�f��G#e���(s�F���)�Q�����;4��gh�l�en�HY8�@3����p|~f��>#e���L(��(��g�8��Hx �3#���'gF��3R��̈́r����q|lf��5#e����(shF���Q�ʌ�������پr��Q澌����2��q)ǧeF��2R��ʄr����q|Tf��)#e����(sPF���9�Q暌���[2a�)��d�7���w �+2#��'d��Lꂌ^b; ;����_7����|��i��39 {d����yA��~�u����/_�~z? +�����X�[\�>N�>���]�ӕ�����֧ӛ?�S��c��<9�\����@,[��ʚ�X�.@�u�1���@����X�6b�uIJ��8���E���X��6��K �:�6����@�s��X�6b�uĒu�@����X�6b�uIJ��8�c �� āXe�@,Z �:��ekq �Y�@,[���:b��@�U�Ģu�@���Cw�6Oݝuܺ���x���ܝ� ��w%��lݼ;�v�����ٻs��w�6/ߝu�����x����~G���wg�lm ��;븁gk� +�Y�<[���ʚKx�.@��w�q���9���{x�6/�u�ij��x����G�Ļxg��lm ��;븍gk�:�I��xv��r\ȣ�qx#��H�� �3ygw�lm ^�;�8�gk�X^Ys-������:���@<�w�q3���ռ���y�6�5��h]�x;��x�� ��yg��lm ^�;�8�gk��X�=YW ��;�8�gk��Y�-=[H��N��ӳ�pxP����G�ězgG�lm ��;븫gk��Y�i=[���ʚ�z�.@��w�q`��≽��{�6��u�ٳ��xh����G��[{g��lm ��;븷gk���Y��=[�G�ʚ�{�.@��w�qx���齓n���,^�;�8�gi��_Ys����7��:����@<�w�q����%���S|�6��5��h]�x��� �� ē|g7�lm ^�;�8�gk�0_Ys�������:����@<�w�q���ⅾ��}�6���5W�h]�t��ۡ>;����9n�Y�@��w�q��������b�o��u����x���n�� ��}g��lm ���'� +��}g�lm ��;��gk��Y�?[���ʚK~�.@��w�q����9���{~�6/��u�����tԯ������~���YY8<�w�q����u?���~~�o�\����?��_7���px8�g/��3��<���������_�i�������?�p�>��?~����_�����_��N��/����"z~ɏ'�ǧ݉�v�c�.�w�>���a*LJ]ʙ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6��tv��px�e�9�"e���K9s��a���� ��.e�aZȇ]�:�Ⱥ���KYs��a���� ��.e�aZȇ]�:�Ⱥ���KYs��a���� ��.e�aZȇ]�z>�� +��.e�aZȇ]ʚ�.�6��tv��p|�e����5�]hm v)k���@>�R�v���|�e����5�]hm v)k���@>�R�v���|�e����5�]hm v)k���@>�R�v���|�e����5�]hm v)�8�Bg���K9s��a����.�.@>�R�v���|إ�9�Bk��KYs��a����.�.@>�R�v���|إ�9�Bk��KYs��a����.�.@>�R�v���|إ�9�Bk��KYs��a����.�.@<�R�q���a�r�� ��.e�aZȇ]�:�Ⱥ���KYs��a���� ��.e�aZȇ]�z>�� +��.e�aZȇ]ʚ�.�6���5�]hm v�<�"���.e�aZȇ]ʚ�.�6���5�]hm vi���8<�R�q���a�r�� �î�#u�v]�����a��{��ӭ��b���̇]�v=�î����_��Kk�K��C�Ƿ�ۭ�o����R�_��~��O���n�����ԕ�ֻ�/����ݺ=���c}8<�X��� kw�c�VY�����:��f� �u\c��d]�����Y�EkyWY�����:��f� �u\c��d]������:./a����c���u\��:.J���z^�� +�u\e�:.Z��ʚu\�6��q�5�hm ���\�%��u\e�:.Z��ʚu\�6��q�5�hm ���\�%��u\e�:.Z��ʚu\�6��q�5�hm ��i" +r6# +�*��r&�@i9�P�Dhm G�:# �.@�(�5Z���&�@k9�P�Dhm G�:# -�.@�(�5Z���&�@k9�P�Dhm G�z�(��9�P�Dhm Gʚ�� ĈBIGD���qDa�3� ��BYQ���Q(k" +�.@�(�5Z���&�@k9�P�Dhm G�:# +�.@�(�5Z���&�@k1�P�Q��pQe" +R6�# +�LD��rD���(��@�(�5Z���Έ���# +eMD��rD���(��@�(�5Z���Έ���# +eMD��rD���(��@�(�5Z����# +��@�(�5Z���&�@k1�P�Q��pQ�(H��9�P�Dhm Gʚ�� �BYQ���Q�(Ⱥ�9�P�Dhm Gʚ�� �BYQ���Q�(Ⱥ�9�P�Dhm Gʚ�� �BYQ���Q�(Ⱥ�9�P�Dhm FJ:" +t�# +�LD��rDa�3� ��BYQ���Q(k" �6�# eMD��rDa�3� ��BYQ���Q(k" �6�# eMD��rDa�3� ��BYQ���Q(k" �6�# -eMD��rDa�3� ��BYQ���Q(�(�Y8�(�3J���Έ���# -eMD��rD���(��@�(�5Z���Έ���# -eMD��rD���(��@�(�5Z���Έ���# -eMD��rD���(��@�(�5Z���Έ��# -%:��r&�@i9�P�Dhm G�:# -�.@�(�5Z���&�@k9�P�Dhm G�z�(��9�P�Dhm Gʚ�� �BYQ���Q�(Ⱥ�9�P�Dhm Gʚ�� �BYQ���Qi" -r6# -�*��r&�@i9���~Q�{l��k@D���:��o�_9��$�x����!���/_~���2������������Ƿ�����x��5�����������O�7�#�C���Nֽ]{�+�����X��9J������(_OG�ܞ�!m�u���3����,[�����u{����;�ӧpg�۳7� ܱ�.HY�����Ⱥ�94RքFhm �Fʚ�� ��HY�����Ⱥ�94RքFhm �Fʚ�� ��HY�����Ⱥ�)4R�-4B�%C#%�ǡ�r&4Bi94�sh�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���H��q)��PY8��3�Jȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Z�����������(��q)gB#�6�C#eMh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��rh�� ���@����urh�� ���@��5�Z�����������8ghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk14R���p)gB#�6�C#c��Y �Fʚ�� ��HY���)kB#�6�C#c��Y �Fʚ�� ��HY���)kB#�6�C#c��Y �Fʚ�� ��HY���)kB#�6�C#c��Y �FJ:B#t�C#�Lh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��rh�� ���@����urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk142҄F�l�FJ9B#T�C#�Lh��rh�_Ũ��c�.^B����+������t��v��3 �^Fh�w�~���l��W���/����O#2����������p���|x{�a��������Nf��zx��g0��|��g������hϲu�XO��T�����X�w/ֺ={��������/�ʺ={�����j4f�:�5�.@�֔5�Z�њ��h ���hM9�������Ⱥ�9ZS�Dkhm Gkʚh � �hMY�������Ⱥ�9ZS�Dkhm Gkʚh � �hMY�������Ⱥ�9ZS�Dkhm Gkʚh � �hMY�������Ⱥ�)ZS�-ZC�%�5%��њr&ZCi9Z�s���њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�H���q�)��PY8�֔3�J�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ��h ���h�(���q�)g�5�6��5eM���r�������@�uFkd]��)k�5�6��5eM���r�������@�uFkd]��)k�5�6��5eM���r�������@�ք���ur�������@�֔5�Z�њ��h ���h�8g�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk1ZS����p�)g�5�6��5c��Y Gkʚh � �hMY�����)k�5�6��5c��Y Gkʚh � �hMY�����)k�5�6��5c��Y Gkʚh � �hMY�����)k�5�6��5c��Y FkJ:�5t��5�L���r�������@�uFkd]��)k�5�6��5eM���r�������@�ք���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk1Z3�Dk�lFkJ9�5T��5�L���r���X�h �c��.^��������c -�����[���������g�Ȗ���`�����o˷`�ᇇ��?��o�K_�����*�e����;�xǗ�����x�<t����/�|xx�M��/rź={��������Z�goXx��z�E�w��Qv6nGy��G�ܞ�!m�����Y��� kw����7��={����ַ����?��:�e�ܱ>^^�u{����;���������۳7� ܱ�>���Q����^o�Nã��Y�����cxx������XO����n�ް6p�z��ֺ={�������c�{u��,[�������&�۳7� ܱ>��ֺ={��������{�pו�������ɳ,]�;��g�l�۳7� ܱ�>��{iݞ�am����)<>H��� k�[O���AZdzl]�;���p�(�۳7� ܱ�>����3��am��u�H(kf)��@��0�9KA�ȳʚY +eMD��rDa�3� �ĈBIGD���qD���(P�@�(�5Z���Έ���# +eMD��rD���(��@�(�5Z����# +��@�(�5Z���&�@k9�P�Dhm G�:# +�.@�(�5Z���&�@k9�P�Dhm FF�����ÈB)GD���qD���(P�@�(�_D�[Dq�Q��_��{�۬��G�(�3�(�GD���|H(~�˗�~�������������>��������.�`}����mo����x���������Cᧇӟuo�^�u{����;����A��~{�p;�����Q:�goHx��|��u<���c=}�{iݞ�am����)�Y��� kw��RքFhm �F�:C#�.@��5�Zȡ��&4Bk94RքFhm �F�:C#�.@��5�Zȡ��&4Bk94RքFhm �F�:C#�.@ +��s��x ��H Gh���qh�� �P�@����urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk142҄F�l�FJ9B#T�C#�Lh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��bh��#4Bg�042ʄF�l�Fʙ�� ��HY���)kB#�6�C#c��Y �Fʚ�� ��HY���)kB#�6�C#c��Y �Fʚ�� ��HY���)kB#�6�C#a=�F`]�)kB#�6�C#eMh��bh��#4Bg�842��trh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��5�Zȡ��&4Bk942��urh�� ���@��t�F�,�Fʙ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�ȡ��&4Bk94RքFhm �Fʚ�� ���XghD�����������H9���)kB#�6�C#c��Y �Fʚ�� ��HY���)kB#�6�C#a=�F`]�)kB#�6�C#eMh��rh�� ���@��u�Fd]�)kB#�6�C#eMh��rh�� ���@��4�9���R������H9����W1*4���B��׀�h�=��oky|<<���C��LB���ݯ�~�:[��U,���������ӈ����?�p���?\�><���Gس�cf�~���=����.������p��|�E>Zdzl]�;և���_2�u{����;����n�ް6p��zxz�K��n�ް6p������h����5eM���b���#ZCg�8ZS�Dk(m Gk�:�5�.@�֔5�Z�њ�&ZCk9ZS�Dkhm Gk�:�5�.@�֔5�Z�њ�&ZCk9ZS�Dkhm Gk�:�5�.@�֔5�Z�њ�&ZCk9ZS�Dkhm Gk�:�5�.@�֔s���x �hM G����q�����P�@�ք���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk1Z3�Dk�lFkJ9�5T��5�L���r�������@�uFkd]��)k�5�6��5eM���r�������@�uFkd]��)k�5�6��5eM���r�������@�uFkd]��)k�5�6��5eM���b���#ZCg�0Z3�Dk�lGkʙh � �hMY�����)k�5�6��5c��Y Gkʚh � �hMY�����)k�5�6��5c��Y Gkʚh � �hMY�����)k�5�6��5a=Gk`]��)k�5�6��5eM���b���#ZCg�8Z3���tr�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔5�Z�њ�&ZCk9Z3���ur�������@�֔tDk�,Gkʙh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ�&ZCk9ZS�Dkhm Gkʚh � �h�Xg�F��њ��h ���hM9�����)k�5�6��5c��Y Gkʚh � �hMY�����)k�5�6��5a=Gk`]��)k�5�6��5eM���r�������@�uFkd]��)k�5�6��5eM���r�������@�4�9�њR�h ���hM9������7V*Z��آ��׀hm�=�������B�v�������xxz���B�<�%ko#X��>����-X�����������Ǘ�����Jg��B��ǧ��/�������8�^6]����<�S��\�n�ް6p��zx������^���~��t{����Q�>��Q:�goH�c=}wֺ={����������n�ް6���x������gٺ�w���kݞ�am����p��?�+��� kw�����7E�u{�����[������y�+p�z���u{����;���p�"�۳7� ܱ�>���n�ް6��x��^�u<���c}8<��I��� kw�χ㫵n�ް6p��zx������,�u���p|q?p�,K����<[��� kw�����^Z�goX�c=} +�Һ={�����ӿx|���,[����1�?J��� kw����(��goX�c+ʚY +�6�g)�u�R�u�,��f�� �Y +e�,ZȳʚY +�6�g)�u�R�u�,��f�� �Y +%��,�R(gf)P�@��0�9KA�ȳʚY �6�g)�5�hm �R(kf)��@��0�9KA�ȳʚY -�6g)�t�R��p<K����@iy��X�,Y �R(kf)��@��P��R���<K����@ky��X�,Y �R(kf)��@��P��R���<K����@ky��X�,Y �R(kf)��@��P��R���<K����@ky��X�,Y �R(�6K��K�R(ᘥ@c�x�B93K���,���g)��y�BY3K���,��f�� �Y -e�,Zȳ�:g)Ⱥ�y�BY3K���,��f�� �Y -e�,Zȳ�:g)Ⱥ�y�BY3K���,��f�� �Y -e�,Z��F�Y -r6g)�r�R��p<K����@iy�BY3K���,���Y -�.@��P��R���<K����@ky�BY3K���,���Y +�6�g)�5�hm �R(kf)��@��0�9KA�ȳʚY +�6�g)�5�hm �R(kf)��@��0�9KA�H�ʹ�R����J8f)�X8��P��R���<K!��Y +��@��P��R���<K����@ky�BY3K���,���Y �.@��P��R���<K����@ky�BY3K���,���Y -�.@��P��R���<K����@kq�BI�,:��F�Y -R6�g)�3�(m �R(kf)��@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P��R���<K!��Y -��@��P��R���<K����@kq�BI�,:dz�9g)H��y�BY3K���,��f�� �Y -e�,Zȳ�:g)Ⱥ�y�BY3K���,��f�� �Y -e�,Zȳ�:g)Ⱥ�y�BY3K���,��f�� �Y -e�,Zȳ�:g)Ⱥ�y�BY3K���,���Y -t�g)�3�(m �R뜥 ��Y -e�,ZȳʚY +�.@��P��R���<K����@ky�BY3K���,��f�����Y +���,�R(gf)P�@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P�1K����,�Qf�����Y +��,JȳʚY �6�g)�5�hm �R뜥 ��Y e�,ZȳʚY �6�g)�5�hm �R뜥 ��Y e�,ZȳʚY -�6�g)�5�hm �R뜥 ��Y -%��,�R(gf)P�@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P��R���<K!��Y -��@��P��R���<K����@ky�BY3K���,���Y -�.@��P��R���<K����@ky�BY3K���,��f�����Y -���,�R(gf)P�@���_VP���,��k�,��{,ߥ|㻔�;�_��=�Y����ۿ|����_���W'����Ͽ|�،���p�����v�/y���8���;����rYRcYc�, /a\� -�e��8�d�2�,)Ǎ�Q&�%e�8�5����,ױB9�XP6��X�LK��qk��bIY8�b�2M,)�E�P� ����(SÒ�p��eRXR�CX�LK��q+�3�e�8�5���,���8�W^�8~5´�d,��B9�WP6��W�L�J��q�j�I^IY8^�2�+)ǵ�P�������(S���pܹe2WR�#W�L�J��q�*�3pe�8o5�ԭ�,��F�������(ӵ��p\� -�ZA�8JZ�p+ZIw���F�J�KǬF�����������+g�F�������(����p�e�UR��U���*(��Q�\%e�[5�d��,G�F�f����bU(g� -��q�j��UIY8nU�2�*)ǡ�Q�S%e�R�D� ,&��7 -U�]¸O5��d,ǩF�6����2U(g� -��q�j��RIY8nR�2I*)�A�Q�G%e�F����q��eJTR�;T�L�J��q�j�iPIY8.P�r��l�F��������(����p���NIx ��T����`��a�S2�{S�LnJ��qlj�iMIY8.M�r���lg�F�ʔ�����(����p�e�RR��R��q)(�i�Q�,%e�+5�d��,G�F�����������+�F�������(����p���HIx �TgD -��qBj�)HIY8�G�2�()��Q�%e�����q��e�QR��Q�L2J��q0j��EIY8�E�rƢ�l��F�R����N�(����p�eQR�Q���((�y�Q�%e� 5Ƒ����a��%c� -����q��e�PR�{P�LJ��qj�iAIY8.A�r���lg�F� -�����(����p�e�OR��O���'(��Q��$e��4�d��,G�F�擔���S(g� ��a�i���$�%�[O#L�I��q�i��<IY8�<�rF��l'�F�����(�w��pwe�NR�����sع�\p�ue�NR��N�L�I��q�i��9IY8�9�rƜ�l��F�������(�q��pqeNRNaL� a�i|��$�%��M#L�I��q��� �n�^b�6������K,���F�y�K���W��d��#���������ӏ����_��x�ہ�w��_~w|��������z�n�����n��/� ���w����������5� ���w+k�� ��V�|70Z�� l��ɺ�����5�3Zȭ��&vFk1wV��;��p\<�L�I��9zV�T�hm w�ʚ�� ��YY�>���\?�̟ɺ�9�V��hm 7�ʚ� �ZY�A���\B�L�ɺ�9�V���hm ��ʚ � �$ZY�D���\E�̢ɺ�9�V֔�hm ��J:�ht��h�L��r!m�3�&��HZYSI����I+kBi�6�SieM+��r-m�3�&��`ZYSL����L+k�i�6��ieM7��r9m�3�&��xZYSO����O+kj�6�jeMC��rEm�3�&���Z9����0l��p��h,��ʙ�� �ZX�I5XW G�ʚ�� �ZYV����V+k�j�6��jc�y5Y �ʚ�� ��ZYY����Y+k:k�6�Kkc��5Y ��ʚ�� ��ZY\����\+k�k�6�k#MvM��ax����FeḽV���(m ��ʚ�� ��Xg�M������Fk��Vք�hm ��ʚ� ��Xg�M��A����Fk��V�D�hm g�ʚ.� �2�X����fG�������(Q�S�3(�3C�d6�2��)4)�{GV|���o�Y�z�B�9�"���g���lR� ��JM��jr���ڨ� &� -]�6�5���!�i�sj+3�6�=ȭ�Rk�ڃ�k+5�6�=�ŶQw�M��h[���Q�A�p��t[�i�Q�A�����mR� �JM��jrí�Dܨ� g�JMǍjr�-�K� ��[���Q�A���Ĥ[���F���6�κ �v+5e7�=�m�Rw�ڃ�w+5}7�=ȅ�Qw�M���[���Q�A�����[�i�Q�A����soR� �JM�jr��Dߨ� g�JM��jr�mԝ~�:9�Vj�oT{�o���͚�\�i��A����3pR� ��JM �jr����� ��JM�jrnԝ��:9 -Wj�pT{��p�&G�9 Wj�pT{��p��<��1ȁ�RS��ڃ܈+5�8�=ș�RӉ�ڃ\�u�⤎A���jq4k�{qe&G�9Wj�qT{��q��l��1��RS��ڃ+5�8�=���Rӏ�ڃ\�����:9"Wj*rT{�;r�&$G�9%WjZrT{�kr��1�A�RS��ڃܔ+5Q9�=�Y�Rӕ�ڃX�4i9�=�q�"W]�d�q_���� '��ٴj��9Α��c�<V����۾����[T���d�+3��_���o��������5<>�p���w?5毯w/o��m}���>i���N?Z�<�'�����������Ū���P{�@=G�N]?�=��SW��jb�o�]�:��w��Y�A����*~V{+~�����Ċ_���Q�X�;uU��� V�N]?�=H�C�?�5��2S�#:��w��Y�A����*~V{+~�����Ċ_���Q�X�;uU��� V�N]?�=��SW��jbů�T���A����*~V{+~�����Ċߩ��g���Wj*~T� V�N]?�=H�C�?�5��3W��hbů�T���A����*~V{+~�����Ċߩ��g���Wj*~T� V�N]?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��Y�A������1�3�W�,^�Q���s��b�a���U�3ڃX�uW���A����*~V{+~�����Ċߩ��g���Wj*~T� V�N]?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��Y�A���*~4{�*~G�+~&k+~g����Ċߩ��g���Wj*~T� V�N]?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��Y�A������1��SW��jb���U�ڃT�;�\�YsT�+rU�H�V��\?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��Y�A������1��SW��jb���U�ڃX�;uU��� V�F�?�s+~�����Ċߩ��g���w��g���Wf*~D� V�N]?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��Y�A������1��SW��jb���U�ڃX�;uU��� V�JMŏ�Ċߩ��g���w��g���w���A������1��SW��jb���U�ڃX�;uU��� V�JMŏ�Ċߩ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=��RS�:��w��g���w���A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=��Qw�O�Ċߩ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=H�BWŏf�Q���s��d�a���U�3ڃX�C�n*~~�~����}Y�������3W��3���V����ۏ���������퇫��!����[_�������3��9�=ș�P/�9�s�3s�&3G�93Wj2sT{�3s�&3G�937���I���+5�9�=ș�R���ڃ��+te�h�g��ܙ9�c�3s�&3G�93Wj2sT{�3s�&3G�937���I���+5�9�=ș�R���ڃ��+5�9�=ș�QwfN���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jbf�Е��Ys��+3�9�=ș�QwfN���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s��̜�1H��2ϙ9��c��+pe�(�g��Lf�hrf.�Kf���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{3s�&3'��03W��̑�9�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s��̜�1ș�R���ڃ��+5�9�=���BWf�f�afn�d�D�g��Lf�hrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s��̜�1ș�R���ڃ��+5�9�=ș�R���ڃ������:93Wj2sT{�3s�&3G�13W���Ѭ9�̍�3sB� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s��̜�1ș�R���ڃ��+5�9�=ș�R���ڃ��ug椎A�̕�����\�+3G��83Wf2sD{�3s��̜�1ș�R���ڃ��+5�9�=ș�R���ڃ��ug椎A�̕�����\���Q�A�̕�����ܨ;3'urf��d�� g�JMf�jrf��d�� g�Fݙ9�c3s���͚��\����A�̕�����ܨ;3'urf��d�� g�JMf�jrf��d�� g�B�d��A�̕�����\���Q�A�̕�����ܨ;3'urf��d�� g�JMf�jrf��d�� f�MfNf�af�ȕ�#Ys��+3�9�=ș�q6�2s|�sf~���?�o������?>?qf�>��������ۿ��_���������;������_��o�ѧӏ������������c������v���cE��c5��X �ܱ*5+�=��Rӱ�ڃܱ*5+�=��Qw�J��U��XQ�A�X�����U��XQ�A�X��;VR� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{;V���͚�U��X�A�X��;VR� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱuw���A�X�y�XQ�ÎU��cE��cUf:VD{�;V�^:VP� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃر4+�=��"WNJd�qǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱuw���A�X�����U��XQ�A�X�:V4k;VC�c%��cUf:VD{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱuw���A�X�����U��XQ�A�X�����U����9��Rӱ�ڃܱ*5+�=��BWNJf�q�j�ݱ:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱuw���A�X�����U��XQ�A�X�����ը�c%urǪ�t��� v� -]+�5��2ӱ"ڃܱuw���A�X�����U��XQ�A�X�����ը�c%urǪ�t��� w�JMNJjrǪ�t��� w�F�+�c�;V��cE��cUj:VT{�;V��cE��c5��XI�ر*tu�h�w��LNJhrǪ�t��� w�F�+�c�;V��cE��cUj:VT{�;V��cE��c�curǪ�t��� w�JMNJjrǪ�t��� w�F�+�c�;V��cE��cUj:VT{�;V��cE��c5h:V2{;VE��ɚ�U��X�A�X�3Lձ�s�;֫�xy:�X�����<���)|]��W���j�����>���+���������_��O�~�?�~����}�����Z^��.�'?l/oGߚ��|����c�C����[�__�^�>}�O��go�=x�]��w�?[F]�eu��w//V=��ڃ���j��۰Q�A�6l��۰Q�A�6l�^� �9�߆��|6�=�߆��|6�=�߆��|6�=�߆m��mؤ�A�6l��۰Q�A�6l����=�W���Ys|E������c��(5WP�A�"��\@����RsE���+F�WH�|E@��"�j�����=�W��+�� _0�"@��+J�T{��(5WP�A�"��\@����Q�R� _Pj��ڃxE@����5�W��+�� _0�"@��+J�T{��(5WP�A�"��\@����Q�R� _Pj��ڃ|E@��"�j�����=�W����:���RsE���+J�T{��(5WP�A�"`�}E��1HW�y�"���^P�"�b��e���=�W�z�"���+J�T{��(5WP�A�"��\@����Q�R� _Pj��ڃ|E@��"�j�����=�W����:���RsE���+J�T{��(5WP�A�"`�\ �����"�$k��(3W�A�"��\@����Q�R� _Pj��ڃ|E@��"�j�����=�W����:���RsE���+J�T{��(5WP�A�"`�}E��1�W��+�� _Pj��ڃxE@����5�W�+D�_Pf� ڃ|E@��"�j�����=�W����:���RsE���+J�T{��(5WP�A�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j��^��:���RsE���+J�T{�(t]@�����1�B� _Pj��ڃ|E@��"�j�����=�W����:���RsE���+J�T{��(5WP�A�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@��B�4k��(3W�A�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@����RsE���+J�T{��u_ u�����=�W��+�� _Pj��ڃ|E������c�(t]@�����2sE���+J�T{��u_ u�����=�W��+�� _Pj��ڃ|E@��+��A�"��\@����RsE���+J�T{��u_ u�����=�W��+�� _Pj��ڃxE���"@f��E�+H�_Pf� ڃ|E�s��W�9�W��?��6��߆�����ၿ {}f��_���������N�Ƚ�p�}�*��o[�� -{�x�ƻz����@��jr����x�� �xF�5�c�k<���C���Sjj<T{�k<���C���3��H�\�)55�=�5�BW��f�q����x�� �xF�5�c�k<���C���Sjj<T{�k<���C���3��H�\�)55�=�5�RS�ڃ\�)55�=�5�Qw�G��O���P�A����O���P�A��k<R� �x�<�x(^�a���U�Xs\�)35�=�5�P/5�s�k<���C���Sjj<T{�k<���C���3��H�\�)55�=�5�RS�ڃ\�)55�=�5�Qw�G��O���P�A����O���P�A����̞�O���C���Sfj<D{�k<���C���3��H�\�)55�=�5�RS�ڃ\�)55�=�5�Qw�G��O���P�A����O���P�A��k<R� �xJM��jr����x�� �x -]5�5�5�!S��s\�)35�=�5�RS�ڃ\�)55�=�5�Qw�G��O���P�A����O���P�A��k<R� �xJM��jr����x�� �xJM��jr�'�K���O���P�A����O���C���3���\�)55�=�5�RS�ڃ\�)55�=�5�Qw�G��O���P�A����O���P�A��k<R� �xJM��jr����x�� �xJM��jr�g�]�:��Sjj<T{k<��͚�O����A��k<R� �xJM��jr����x�� �xJM��jr�g�]�:��Sjj<T{�k<���C���Sjj<T{�k<����1�5�RS�ڃ\�)55�=�5�RS�ڃ\�u�x��A���j<4k�k<e��C���Sjj<T{�k<����1�5�RS�ڃ\�)55�=�5�RS�ڃ\� �R�:��Sjj<T{�k<���C���Sjj<T{�k<����1�5�RS�ڃ\�)55�=�5�RS�ڃX�45�=�5�"W��d�q����x�� �x�=����9�5��c@�w���{�Q�=|��i����-��j���_�����n�N���������ʣ/_�w�����.Oz�e|��?"k��?C&�#��8�3d�?"k��?A��Ȟ��ϐ)���9���Ț��ϐi���9.��C? {�3?C��#���3�J����π��H�9����> {��>C��#���3d�>"k��>C��#�������9�����Ț�ϐI���9����Ț�O�;���8�3d ->"k��=C&�#��8�3d�="k��=A�pȞ�lπ�j���)l����=��8�3`z=k�k���%�;&��z�L�Gd�q�g�dzD�Gz�L�Gd�q�'���s��2u�5�m�!��Ys�2]�5�U� w�d�q�g�yD��x�L�Gd�q�gȴxD��xBL�`�a�g�U�w=� ����Xs�2��5��� w|d�qzgȔwD�ww�LvGd�qtg�4wD�w����=ǹ�!S�Ys��2��5ǡ�!��Ys\� rGv@�'v�LaGd�q_g��uD��uF\m��cX� /ax5�Y�SՑXs��2I�5�A�!��Ys\� r�t@��t�LIGd�qGg�dtD�Gt�LCGd�qA'���s��2��5��!��Ys�2��5���m���c��9C��#�渗3dr9"kc9#�V���1.��C9{�39C��#�渑3d9"k�9C��#�渎���9N��2�Ț�.ΐ�∬9���&�Ț�"N�;���8�3dj8"k�[8C&�#��8�3d:8"k�+8A�Ȟ�ΐ)���9�ߌ��7��8~3`�7k��7A�� Ȟ��͐�ވ�9n���Ț��͐�݈�9���c7 {�S7C�t#��s3d27"k�#7C�q#��p�܀�9�����Ț�͐Iۈ�9����Ț�M�;j��0i3�*���̀��H�9�����Ț�M�;d��8c3d*6"k�6C&a#��8`3d�5"k����%^;&��k�L�Fd�q�f�dkD�Gk�L�Fd�q�&���s��2��5ǭ�!��Ys�2��5����Xc��oj�]�q�f��i$��i���j��!�i���L;|���5q����2m}f�i�+M��?��� �N��z����K��$�������5�~ԏo�>��������>{C�������n��?{C���Bm�zF���c��?�&�C�9�Tj -@T{�@�&D�94���I�\*5) �=�1�RS�ڃ�*5A �=�I�QwH��*P��Q�A��@4k��@e&D�94��I�\*5� �=ȑ�RS �ڃ� *5� �=ȩ�Qw+H��ZP��Q�A��b��fP��Q�A����AR� ��JM:�jr<��ԃ�� ��JM@�jrBh���:�"T�9#D�zCB��Ś�P�� �A� �z� A��\*5I!�=�Q�RS�ڃ�*5a!�=�i�Qw[H��P��Q�A������P��Q�A���;CR� ��JMj�jrl��Ԇ�� ��JMp�jbrh�4�d�V��\�!�5��2S"ڃ�*5�!�=���QwH��Q�IQ�A��� -��Q� Q�AN��[DR� JM��jr������ 7�JM��jr�h��%�:�LTj�DT{��D��ND��OT� -Ѭ9L �F�Ȟ�JQ���A��R��VQ��Q�A���{ER� �JM��jr���T��� w�JM��jr�h��.�:�^Tj�ET{�F��`D��aTj"FT{�3F�^:FP� ��JMʈjr̨�Ԍ�� �� -]A#�5�I�1w�H��Q��Q�A�����Q��Q�A����FR� �JM�jr��T��� w�JM�jr�h��:�:�vTjrGT{��G��xD��yTj�GT{��G����1��R�>�ڃ?*tՏh����L��hri��@�:��Tj2HT{�CH���D���TjbHT{�sH����1�E�R�D�ڃE*5U$�=�]�RF�ڃ�Fu����A�#��<��@R�)$Q�An$��H��LҨ��$ub)�ЕJ�YsK*3�$�=Ƚ�RL�ڃ�Lu7���A�&��l��pR�)'Q�An'��x��|R��~�9��R�P�ڃQ*5%�=��RR�ڃ�Ru����A�)�����R�)*Q�An*����ĬҠ�*��9,+��J$k��Je��D���<�U`��q.,������_�w�������>�˧�X�ӷ_���_���_~�V���������a��;���ݿ�|�z��������������=��׀�gQ�������Tϟ������|����J=��ڃ���ު���P{�s���+#_��>��<PO������7�<PO��{����7�<P_������0k�G>�M���7��>��<PW���ߨ� �JM�jr��ߨ� �F��7�c��o���F���Vj�oT{��o���F���6�.�I�\|+5�7�=�ŷRS|�ڃ\|+5�7�=�ŷQw�M���[�)�Q�A,���o4k��oe��F���6�.�I�\|+5�7�=�ŷRS|�ڃ\|+5�7�=�ŷQw�M���[�)�Q�A.�������[�)�Q�A.����oR� �JM�jr��ߨ� �JM�jr�m�]|�:��V��F�z�o��Ś��[�)��A.��z)�A��\|+5�7�=�ŷRS|�ڃ\|+5�7�=�ŷQw�M���[�)�Q�A.�������[�)�Q�A.����oR� �JM�jr��ߨ� �JM�jb�m��d�ߊ\�7�5�ŷ2S|#ڃ\|+5�7�=�ŷQw�M���[�)�Q�A.�������[�)�Q�A.����oR� �JM�jr��ߨ� �JM�jr�m�]|�:��Vj�oT{��o���F���V�*�Ѭ9,� ��Ȟ��[�)��A.�������[�)�Q�A.����oR� �JM�jr��ߨ� �JM�jr�m�]|�:��Vj�oT{��o���F���Vj�oT{��o�^�oP� �JM�jr��ߨ� � -]�7�5�ŷ1w�M���[�)�Q�A.�������[�)�Q�A.����oR� �JM�jr��ߨ� �JM�jr�m�]|�:��Vj�oT{��o���F���Vj�oT{��o����1�ŷRS|�ڃX|+t�h���L�hr�m�]|�:��Vj�oT{��o���F���Vj�oT{��o����1�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃ\|uߤ�A.�������[�)�Q�A.�������ۨ��&ub��U|�Ys\|+3�7�=�ŷRS|�ڃ\|uߤ�A.�������[�)�Q�A.�������[����9�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃ\|uߤ�A.�������[�)�Q�A.�������۠)���9,���o$k��oe��F���>�U��q.�������>~��>���'�𭺧_u������vw������#���_��������o=�����_������炙ӯqW�����]ȣ���������͇�����s��O�9g��97�n�I��;u5�� 6�N]�9�=�SWs�jbs��4税AlΝ��sV{�s������ܡ��͚��\�i��;u5�� 6�N]�9�=�SWs�jbs��4税AlΝ��sV{�s������ܩ�9g��9Wj�sT� 6�N]�9�=�SWs�jbs��՜�ڃ+5�9�c�s������ܡ��͚��ܙ�9g��9Wj�sT� 6�N]�9�=�SWs�jbs��՜�ڃ+5�9�c�s������ܩ�9g��9w�j�Y�AlΕ���1�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܙߛs�Ǩ9w�9g��9w�j��Al��sR� 6�N]�9�=�SWs�jbs��՜�ڃ+5�9�c�s������ܩ�9g��9w�j�Y�AlΕ���1�SWs�jbs��՜�ڃ;u5�� 5� -]�9�=G#��9�5�3Ws�hbs��՜�ڃ+5�9�c�s������ܩ�9g��9w�j�Y�AlΕ���1�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܩ�9g��9w�j�Y�Aj�zn�٬9j���s${�sg�����ܩ�9g��9w�j�Y�AlΕ���1�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܩ�9g��9w�j�Y�AlΝ��sV{�s����9�SWs�jbs��՜�ڃԜ;�ܜ�Ys+3�9�c�s������ܩ�9g��9w�j�Y�AlΕ���1�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܩ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃԜ;�ܜ�Ys;s5�� 6�JMs����ܩ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃ;u5�� 6�N]�9�=�RӜ�:�9w�j�Y�AlΝ��sV{�s������\�i�Q�Ԝ;�ܜ�Ys;s5�� 6�N]�9�=�RӜ�:�9w�j�Y�AlΝ��sV{�s������ܨ�9'ubs��՜�ڃ;u5�� 6�N]�9�=�RӜ�:�9w�j�Y�AlΝ��sV{�s������\��9G��9w�9g��9w�j��Al�!�6�9?���\?�qs��۾e�����k�~�x>���ٝϴ������?�l��z}=�������[�v����},�_�^����c|b�?{������Uϟ������z��� ��go�=x����=�>:u}��1x�>�X���j�먁Rs%��+ J͕T{��$�r%�9�W��+ �� _IPj�$�ڃ|%A����j���+ ��A����\I@��J�Rs%��+ -]WЬ9��`�}%��1�W��+ �� _IPj�$�ڃ|%A����j���+ ��A����\I@��J�Rs%��+ J͕T{��$u_I u���J�=�W��+ �� _IPj�$�ڃ|%���J�c��$(5WP�A����u%͚�+ �̕D{��$u_I u���J�=�W��+ �� _IPj�$�ڃ|%���J�c��$(5WP�A����\I@��J�Rs%��+ F�WH�|%A����j���J�=�W��+ �� _I0꾒@��+ �<_I@�z�$(p]I@���J�2s%��+ B�\I�u���J�=�W��+ �� _IPj�$�ڃ|%���J�c��$(5WP�A����\I@��J�Rs%��+ F�WH�|%A����j���J�=�W��+ �� ^I0h�$��sx%A��J�5�W��+ �� _IPj�$�ڃ|%���J�c��$(5WP�A����\I@��J�Rs%��+ F�WH�|%A����j���J�=�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����u%͚�+ �̕"{��$(3W�A����\I@��J�Rs%��+ F�WH�|%A����j���J�=�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����\I@��J�P/W@��|%A����j���J�=�W��$�Ys|%���J�c��$(5WP�A����\I@��J�Rs%��+ F�WH�|%A����j���J�=�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃx%A��J�5�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃ|%A����j���J�=�W���$�:�J�Rs%��+ J͕T{��$(5WP�A��`�}%��1�W��$�Ys|%A����h���J�=�W���$�:�J�Rs%��+ J͕T{��$(5WP�A�� �˕P� _IPj�$�ڃ|%A����j���J�=�W���$�:�J�Rs%��+ J͕T{��$(5WP�A��`�\I ���J�"ו$k��$(3W�A��@Ὸ���q��p�p%��9ƕ��W�ϯ������}%�a]I��O?~v$���ϧ����z$��o���oУ�]?������������D=��ڃ��{d�߃Pf�A ڃ|B���j�=���=�� ���A�:��Rs��{J�=T{��A(5� P�A�!��=P� ߃Pj�A�ڃ|B���j�=���=�� ���A�:��Rs��{J�=T{�A(t݃@����1�=B� ߃Pj�A�ڃ|B���j�=���=�� ���A�:��Rs��{J�=T{��A(5� P�A�a�}��1�� ��{�� ߃Pj�A�ڃ|B���j�=��{��A���܃@���B�=4k��A(3� �A�a�}��1�� ��{�� ߃Pj�A�ڃ|B���j�=��{��A���܃@���Rs��{J�=T{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(�|��1���uŚ�{��=D{��A�r�9�� ��{�� ߃Pj�A�ڃ|B���j�=��{��A���܃@���Rs��{J�=T{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃx �Af��=E�{H�߃Pf�A ڃ|B���j�=��{��A���܃@���Rs��{J�=T{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���܃@���B�=4k�A2� ��9���܃@���Rs��{J�=T{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���܃@���Rs��{B�܃�u�=���=�� ��{�� ރP��f��=c�{��A���܃@���Rs��{J�=T{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���܃@���Rs��{F�� H�|B���j�=��{h�߃Pf�A ڃ|¨��c��A(5� P�A���܃@���Rs��{F�� H�|B���j�=���=�� ��{�� ߃0�A��{J�=T{��A(5� P�A���܃@���Q�=R� ރP��f��=e��=�� ��{�� ߃0�A��{J�=T{��A(5� P�A���܃@���P/� @��|B���j�=���=�� ��{�� ߃0�A��{J�=T{��A(5� P�A���܃@���As�̞�{�\� ��9���܃@���8� �9�� ��A?��=�=����=��ǻ����A������C���=��\���ۏ���?�}�����=V�P�y�~�.�<ꮧ������ PO�ڃ\Ou�S��A����z -��zJ���B�渞Rf�)D{��)��z��1���RSO�ڃ\O)5��=���RSO�ڃ\Ou�S��A����z -��zJ���P�A����z -��zʨ��"ur=���S�� �SJM=�jr=���S�� �SF���c��)e��)�ǰ�RધP�9����z -��zJ��z -�9���RSO�ڃ\O)5��=���RSO�ڃ\Ou�S��A����z -��zJ���P�A����z -��zʨ��"ur=���S�� �SJM=�jr=���S�� �SM=Ef�a=��UO!Ys\O)3��=���RSO�ڃ\Ou�S��A����z -��zJ���P�A����z -��zʨ��"ur=���S�� �SJM=�jr=���S�� �SF���c��)���B���Rj�)T{�)��z -͚�zʐ����9����z -��zJ���P�A����z -��zʨ��"ur=���S�� �SJM=�jr=���S�� �SF���c��)���B���Rj�)T{��)���B���ur=���S�� �SJM=�jb=��UO�Ys\Os�S��A����z -��zJ���P�A����z -��zʨ��"ur=���S�� �SJM=�jr=���S�� �SF���c��)���B���Rj�)T{��)���B���2ꮧH�\O)5��=���BW=�f�q=���S�� �SF���c��)���B���Rj�)T{��)���B���2ꮧH�\O)5��=���RSO�ڃ\O)5��=���Qw=E��zJ���P�A����z -��zJ���P�A�����)R� �S -]��5���2SO!ڃ\O)5��=���Qw=E��zJ���P�A����z -��zJ���P�A���z��@��\O)5��=���RSO�ڃ\O)5��=���Qw=E��zJ���P�A����z -��zJ���P�A���z�̞�zJ���B�渞Rf�)D{���H�S��z��1^^�����Íz�4�x����#W��ç������������?����_�����������^��!��^O�$v�T��ꏟ�Vy���?<�Td��+����D��OoȼNOd����̻�D��I/��"=�=G����=qWS����+��]������$��=���<L�9~uސys�Ț��� ��扬9~iސyg�Ț�7��_����uyC�my"k�ߕ7d^�'���EyC�=y"k�ߒ�~IȞ�W� �7䉬9~?ސy=�Ț�� �w㉬9|3^�y1���⍷ފ'�z�߉7`^�'����xC�}x"k�߆�~Ȟ�W� �7ቬ9~ސy �Ț�� �w���9~^��x {�_7d�~'����wC��w"k�_|7d�{'����wA�ށ�9~�ݐy�Ț��� ��݉�9|�݈�]w���Mw��Ew�j�_s7`�r'���wC�w"k�_p7d�o'����vA�ہ�9~�ݐy��Ț��� ��ډ�9~�ݐy��Ț�7��_h���uvC�mv"k��e7d^e'���EvC�=v"k��b�M^^b?&���nȼ�Nd�������D���n���:��c������ ���nȼ�Nd��;��+�D���nȼ�Nd�����/��s���!�:�5��2��Ys���!�:�5�o�r��d�������D���nȼ�Nd����{�D���.��R:�=ǯ�2o�Ys�>����^����̻�$���.��":�=ǯ�2o�Ys��!� -:�5�/�2�Ys��� ���@��znȼyNd��{��k�D��tnȼsNd����/��s���!�9�5��2��Ys���!�9�5�o�r�dd��+�F\o�x=��0���Xs�r�!�n9�5�o�r�Xd��k��[�D��SnȼRNd������D��M~���L~L�9~�ܐy��Ț��� ��ȉ�9~�ܐy��Ț�7��_ ����qC��q"k��7d^'����qC�q"k�b^���q�7�ɻ��� ���I�9~Y���f��8=��U��3����������f�����7d��O�Q��q�g���x^�/���>��}��v��y��j��~����. -+�~�?W�/��}���3��|ˬ������4ϟ������z��d��go�=�����s��*�Q�gY���g�����z�� ���OýUϟ�����z�ix�I����P{�s������ϟ��>��<P�^_�z�� ���������j��w�����go�=���r�i�*��YV���z�ix�I����P{�@=�4<�I���j������?{C������O������l��y�9������@{�@=�|����7�<P_�^�����7��\}��{x���ϲ:�ǻ���?{C������Y�2�>{C������U���>{C���ë/���'�注�������,��go�=x��~^�z�� ���OýUϟ������{<���2�ϲ:�ǻ�7��?{C���V=��ڃ��ݳ����f�}N>��ݿ�_p�YF���z�9x����7�<PO?_�z�� �����ӣTϟ���������Q�볬�������$��go�=x��������j����/V=��ڃ_�z�E��O>��<Pᄒ�_p�go�=x���Uj����/�Uj����/�5���ZR� I�R�%��� ~I�BחԢYs�%��̗�"ڃ�%�F�_RK��/�Uj����/�Uj����/�Uj����/�5���ZR� I�R�%��� I�R�%��� I�RsL��s:F��tH�|QG�9��j�Q���=�wu���:�� ��1꾭C���:�<��A�z�(p]�A���Ǝ2sd��3;B���u�����=��v��k;�� ��Qj�ڃ|rǨ���c���(5gwP�A>���\�A����Rs|���;F��wH�|�G�9��j��� -�=�wx��C<�� ��1hn��sx�G���5�y���<�� ��Qj��ڃ|�Ǩ�.�c�/�(5�yP�A>Σ�\�A��>�Rs���=F�7zH�|�G�9Ӄj���R�=ȷz��c=�� ��1��C��=J��T{���(5W{P�A�ۣ�u�͚��=���"{���(3�{�A>��\�A����Rs���3>F�w|H�|�G�9�j�1���=��|���>�� ��1��C��>J�YT{��(5�}P�A�����A����P/�}@��|�G�9�j�����=�w~���Ys|�ǘ���c���(5�~P�A>���\�A���Rs���?F�wH�|�G�9��j������=����@�� ��2�D��+@J� T{�)5��P�A���B���Q�= R� _RjN�ڃxH��*�5�w����@�� �2� D���@J�y T{�)5�P�A��� B��L�Q�� R� _ -RjN�ڃ|,H���j� ��`�=�'���o�:�j�Rs6���AJ�� T{�o)5ǃP�A>d�}?��1���N�Ys|DH��"�h�!���=ȧ���o �:���RsN��BJ�E!T{�o -)5G�P�A>+$��]!P� _RjN�ڃ|\H��.�j�}!����=�'���o�:�ʐRsf��CCJͥ!T{�o )5džP�A<7d��"����"��!$k��)3W��A�;t|TG��8_�z8=t��������{��G����u{����/��O��f� }�k.���N�:�>�O����1WOv|2����T{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j����1��A>�Ԝ�A��d�Rs2��1J��T{O�4'c��9>�̜�A��d�Rs2��1J��T{�O�u��!u����d�=�'c���1�� ��QjNƠڃ|2F���1��A>�Ԝ�A��d�Rs2��1J��T{�O�u��!u����d�=�'c���1�� ��Q�:�f���c�1��A>�Ԝ�A��d�Rs2��1J��T{�O�u��!u����d�=�'c���1�� ��QjNƠڃ|2ƨ�d�c�O�(5'cP�A>�Ԝ�A��d�Rs2��1F�'cH�|2F�9�j�����1h���QfN� ڃ|2ƨ�d�c�O�(5'cP�A>�Ԝ�A��d�Rs2��1F�'cH�|2F�9�j����d�=�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��Q��d��cx2F��d�5�'c���1�� ����d�s�O�(5'cP�A>�Ԝ�A��d�Rs2��1F�'cH�|2F�9�j����d�=�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�As2�̞Ó1�\'c��9>�̜�A��d�Rs2��1F�'cH�|2F�9�j����d�=�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��QjNƠڃ|2F�9�j�����1h���1dN��s|2F�9�h����d�=�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��QjNƠڃ|2F�9�j����d�=�'c�z9��1J��T{�O�(5'cP�A<��u2͚�1��'c�|2F�9�j����d�=�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��QjNƠڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2�ē1 -]'cЬ9>�̜�A��d�Q��R� ��QjNƠڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2��1J��T{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j����1��A<��u2͚�1���D{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j���^Nƀ:�d�Rs2��1J��T{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j����d�=�'c�N� Ys|2F�9�h����"N��s�O�\=����ɘ����������b?=�r�v���9�~��Ӣz}(��Gc��٘����/��?��w�~��������2?\1�^��~�vZ���>t���i�'r�ֳڃ��;u���� ��N]i=�=�i�QwZO�Ĵީ+�g�1�w�J�Y�AL띺�zV{�z�&�GubZ�ԕֳڃ��;u���� ��=��l����LZ��Ĵީ+�g�1�w�J�Y�AL띺�zV{�z�&�GubZ�ԕֳڃ��;u���� ��N]i=�=�i�R�֣:1�w�J�Y�AL띺�zV{�z�����Ĵ^�I�Q���;u���� ��=��l����\i=�=�i�R�֣:1�w�J�Y�AL띺�zV{�z�����Ĵ^�I�Q���;u���� ��N]i=�=�i�SWZ�jbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� �����ֳx=Fi��i=�5�i�3WZ�hbZoԝ֓:1�w�J�Y�AL띺�zV{�z�����Ĵ^�I�Q���;u���� ��N]i=�=�i�SWZ�jbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�)�W�J���9J�yN뙬9L띹�zF{�z�����Ĵ^�I�Q���;u���� ��N]i=�=�i�SWZ�jbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jRZ��sZ�f�QZ�ȕ�#�s��;s���� ��N]i=�=�i�SWZ�jbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��u����AL띺�zV{�z�������ޡ紞͚ô^�I����;u���� ��N]i=�=�i�SWZ�jbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�������ޡ紞͚ôޙ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�����Ĵީ+�g�1�w�J�Y�AL땚��1�i�SWZ�jbZ�ԕֳڃ��;u���� ��JMZ����ޡ紞͚ôޙ+�g�1�w�J�Y�AL땚��1�i�SWZ�jbZ�ԕֳڃ��;u���� ��F�i=�s�z�����Ĵީ+�g�1�w�J�Y�AL땚��1�i�SWZ�jbZ�ԕֳڃ��;u���� �� -]i=�=Gi�#�i=�5�i�3WZ�hbZ���������g����(���i�Í�������i���N�VZ��~�������_�������o�>�).+���=>���]KxҝX^=�qb��A �D�9�TjKT{�K��Ē�1ȉ�R�X�ڃ�X*5�%�=ȉ�R�X�ڃ�Xu'���AN,������R�I,Q�AN,������Ҩ;�$urb��$��� &� -]�%�5lj�2�X"ڃ�Xu'���AN,������R�I,Q�AN,������Ҩ;�$urb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�9�4�N,I��X*�X�x=���Wb�b�qb��$��� '�B�$���AN,������R�I,Q�AN,������Ҩ;�$urb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�1�4hK2{KE��ɚ��R�I,�AN,������Ҩ;�$urb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�9�4�N,I��X*5�%�=ȉ�R�X�ڃ�X*t%�h�&��LbId�qb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�9�4�N,I��X*5�%�=ȉ�R�X�ڃ�X*5�%�=ȉ�P/�%�s�K�&�D�9�TjKT{K���͚��Ҙ;�$trb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�9�4�N,I��X*5�%�=ȉ�R�X�ڃ�X*5�%�=ȉ�QwbI���R�I,Q�AL,�K4k�Ke&�D�9�4�N,I��X*5�%�=ȉ�R�X�ڃ�X*5�%�=ȉ�QwbI���R�I,Q�AN,������R�I,Q�AN,��KR� '�JMb�jrb��$��� '�JMb�jrbiԝX�:1�T�J,Ѭ9N,������R�I,Q�AN,��KR� '�JMb�jrb��$��� '�JMb�jrb)�Kb ���R�I,Q�AN,������R�I,Q�AN,��KR� '�JMb�jrb��$��� '�JMb�jbbi�$�d�&��\�%�5lj�2�X"ڃ�XR'(K|�sby��X?�o����oQ��~���r}f'���%���?����~�j���q������Y�e���3_�y���_���1��: ��u�JMK�jrK�Դ��� ��JMK�jrKj�ݒ�:�%UjZRT{�[R��%E��%UjZRT{�[R��1�-�RӒ�ڃܒ*5-)�=�-�RӒ�ڃܒu����AnI����ĖT��%E��%UfZRD{�[R��1�-�RӒ�ڃܒ*5-)�=�-�RӒ�ڃܒu����AnI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��F�-)�c�ZRe�[R�ǰ%U�jIQ�9nI�����T����9�-�RӒ�ڃܒ*5-)�=�-�RӒ�ڃܒu����AnI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��MKJf�aK��Ւ"Ysܒ*3-)�=�-�RӒ�ڃܒu����AnI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��F�-)�c�[R��%E��%UjZRT{[R���͚ÖԐiI��9nI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��F�-)�c�[R��%E��%UjZRT{�[R��%E��%�%urK�Դ��� ��JMK�jbK��Ւ�Ysܒs����AnI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��F�-)�c�[R��%E��%UjZRT{�[R��%E��%5�nII�ܒ*5-)�=�-�BWK�f�qK�̴��� ��F�-)�c�[R��%E��%UjZRT{�[R��%E��%5�nII�ܒ*5-)�=�-�RӒ�ڃܒ*5-)�=�-�QwKJ��T�iIQ�AnI�����T�iIQ�AnI��[RR� �� -]-)�5�-�2Ӓ"ڃܒ*5-)�=�-�QwKJ��T�iIQ�AnI�����T�iIQ�AnI�ziIA��ܒ*5-)�=�-�RӒ�ڃܒ*5-)�=�-�QwKJ��T�iIQ�AnI�����T�iIQ�AlI ���̞ÖT��%E��%UfZRD{�[R*"EK��qnI�Z�����-���/ܒ����i���������?wN����w��_���?��˟>�K��}}�����������w�J}WrW�~\�}|��P�A�䌺+9R� WrJM%�jr%��Tr�� WrJM%�jr%g�]ɑ:��Sj*9T{+9��J͚�JN����A�䌺+9R� WrJM%�jr%��Tr�� WrJM%�jr%g�]ɑ:��Sj*9T{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃ\�uWr��A��y��P��JN���C�渒Sf*9D{�+9�^*9P� WrJM%�jr%��Tr�� WrJM%�jr%g�]ɑ:��Sj*9T{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃX�4��=���"W%�d�q%��Tr�� WrJM%�jr%g�]ɑ:��Sj*9T{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃ\�uWr��A�䔚J��JN���P�A���*94k+9C��#�縒Sf*9D{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃ\�uWr��A�䔚J��JN���P�A�䔚J��JN��J�9ȕ�RSɡڃ\�)5��=���BW%�f�q%g�]�:��Sj*9T{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃ\�uWr��A�䔚J��JN���P�A�䔚J��JΨ��#ur%��Tr�� Vr -]��5Ǖ�2S�!ڃ\�uWr��A�䔚J��JN���P�A�䔚J��JΨ��#ur%��Tr�� WrJM%�jr%��Tr�� WrFݕ�c�+9���C���Sj*9T{�+9���C���3��H�X�)tUrh�Wr�L%�hr%��Tr�� WrFݕ�c�+9���C���Sj*9T{�+9���C���ꥒur%��Tr�� WrJM%�jr%��Tr�� WrFݕ�c�+9���C���Sj*9T{�+9���C���3h*92{+9E�Jɚ�JN����A����>ǹ��z��/����s�~�|�}��v������O?�r�����w��/��N��~y��w��~X�x�����y.3��?����endstream +�6�g)�5�hm �R�y��+�g)�5�hm �R(kf)��@��P�1K����,�q�Y +�.@��P��R���<K����@ky�BY3K���,���Y +�.@��P��R���<K����@ky�BY3K���,���Y +�.@��P��R���<K����@ky�BY3K���,���Y +�.@��P��R���8K��c����Y +��,Jȳ�:g)Ⱥ�y�BY3K���,��f�� �Y +e�,Zȳ�:g)Ⱥ�y�BY3K���,��f�� �Y +e�,Zȳ�:g)Ⱥ�y�BY3K���,��f�� �Y +e�,Zȳ�:g)Ⱥ�q�BI�,:dzʙY +�6�g)�5�hm �R뜥 ��Y +e�,ZȳʚY +�6�g)�5�hm �R�y��+�g)�5�hm �R(kf)��@��P��R���<Ka�s����g)�5�hm �R(kf)��@��P��R���8Ka��� g�p�B)�,*dzʙY +�6�g)���,��6Kq�0K���w)���.����W)o�d��8�)��/_�������?����/_>6���$\����;���K����;�`�����쇷�\����X�G+K�K��B8CY06�3Y�L%K��q#k�IdIY8d�2},)�u�P�8���4�(Sƒ�p��e�XR��X�LK��q+�3�e�8�5��,��F������(����p\� +�`A�8N`�2,)���1�����0�_�0�+��P�������(S���pܼe�WR��W�L�J��q�*�3ve�8u5ʔ��,w�F�̕�����(Ӹ��p\� +�\A�8�[�2u+)�m�Q&m%e�8l5�t��,W�B9�VP6��V#܊V�]��g5������1��e%c�d��<������Q�b%e�a5�$��,�F�~����zU(g� +��q�j�)WIY8�V�2�*)�ѪQ�Y%e�X����q��ejUR�[U�L�J��q�j��TIY8�T�1�*����B�|�0�S�0y*�q�Q�M%e�L����q��e�TR��T�L�J��q�j��QIY8�Q�rƨ�l��F������(����p�eTR�T��*(���Q�>%e�=5ʤ��,���8�S^°:�D��+'�F�┌����(����p�eZSR�KS���)(Ǚ�Q�2%e�15�$��,�F������T(g\ +��qZj�)KIY8�J�2Y))�Q�Q�)%e�(��<����9�Q�&%e�%5ʤ��,���8:R^¸"����q��e +RR��Q�L>J��q<j�iGIY8.G�r���lg�F�j����f�(����p�ezQR�kQ���((ǩ�Q�%e�5�d��,G�F�F����BT(g +��qj��CIY8lC�q��$��qj��B�X8�B�rF��l'�F�"�����(����p�eZPR�KP��!((��Q�%e�5�$��,�F�������S(g� ��q�i�)?IY8�>�2�')�ѧQ��$e���|��q�{�=Ix ����z��pze:OR�+O���'(lj�Q��$e��4�䝤,ǝF��������v�+g�F�������(�t��ptezNR�kN��1'(�)�Q��$e��4�d��,G�F�����ÂSp��`�oߨ7�w �v��n��pn�&��ۤ�ز��;@���K�y�m��R������x&����6���|�����?���W�>��v�����ׇ���>|~70�^���������w�������z�n`��@�n`e�w������ʚ�Fk����5� ���w��n`�.@�n`eM��r묬����@̝�t���,��9�g�.@���5�3Z�ݳ�&|Fk9}Vִ�hm ���:�g�.@��54Z� ��&�Fk9�V�t�hm ���:Sh�.@���554Z�=��&�Fk9�V�4�hm W��:�h�.@��5e4Z�m���8���<Z9�G���\H�L�ɺ�9�V�T�hm w�ʚP� �TZY�J���\K�̥ɺ�9�V��hm 7�ʚh� �lZY�M���\N�L�ɺ�9�V���hm ��ʚ�� �ZY�P���\Q�̨ɺ�)�Vέ�F�%[j%15�9�r��Fi���sR ��Q����Fk��Vք�hm ��ʚ�� ��Xg^M�ȁ����Fk��V�D�hm g�ʚ�� ���XgjM�ȱ����Fk��V��hm '�ʚ�� ���H�]��q^+�(�QY8n��3�5J������Fk��6֙`�ur�������@5!6Z�)����Fk��6֙c�ur���)���@n��5Q6Z�Y����Fk����+�����·�Cr�D�O��P�d�ْaxؠ��ĦФd��Y��/b��g��YS�簊�.���Qw�M��8[���Q�A�@��D[���F���6d2m"{�Cme��F���VjbmT{�sm���F���6�N�I�m+5�6�=�ݶRn�ڃ�n+5�6�=���Qw�M��[�)�Q�An������[��Q�A.��zI�A��s+557�=�=�Rt�ڃ�t+t5�h�W���Y7�c��n���F���Vj�nT{��n���F���6�N�I�y+5�7�=ȝ�Rz�ڃ�z+5�7�=ȵ�Qw�M���[�)�Q�An�������[��Q�A.����oR� ��JM��jb�����Ys��+3 8�=��QwN��\�)�Q�An�����\���Q�A.��pR� G�JM�jr�Ԅ�� ��JM�jrnԝ��:9Wj +qT{�q�&G�9Wj:qT{�Kq��T��1���BW-�f�q/���� '�JM3�jr5nԝ��:9Wj�qT{��q�&G�9Wj�qT{�r�^rP� G�JME�jrG�Ԅ�� ��JMK�jrMnԝ��:9(Wj�rT{��r�&*G�9+Wj�rT{�r�&-'��0.W�ˑ�9�˕������8�V�9>�92�z�������9~�w?���J�y>���qe��˟��헿��C���������?�N���������ֳ�]?�'������G���1?��1x�>�X���j���ީ��g���w��Y�A����+~R� V�N]?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��g���Wf*~D� V�N]?�=��SW��jb���U�ڃX�+5?�c+~�����Ċߩ��g���w��Y�A������1��SW��jb���U�ڃX�;uU��� V�JMŏ�Ċߩ��g���w��g���w���A������1��SW��jb���U�ڃX�;uU��� V�JMŏ�Ċߩ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=��RS�:��w������1��x��Y�9����*~F{+~��9��SW��jb���U�ڃX�;uU��� V�JMŏ�Ċߩ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=H�BWŏf�Q���s��d�a���U�3ڃX�;uU��� V�JMŏ�Ċߩ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=��RS�:��w��Y�A����*~V{�*~��+~6k�*~E��ɞÊߙ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=��RS�:��w��Y�A����*~V{+~�����Ċߨ��'ub���U�ڃX�;uU��� U�=W�l�V��Lŏ�Ċߩ��g���w��Y�A����*~V{+~���Gub���U�ڃX�;uU��� V�N]?�=��RS�:��w��Y�A����*~V{+~�����Ċ_���Q�X�;uU��� U�=W�l�V��\?�=��RS�:��w��Y�A����*~V{+~�����Ċ_���Q�X�;uU��� V�N]?�=��SW��jbů�T���A����*~V{+~�����Ċߩ��g���Wj*~T� U�=W�l�V��\?�=��SW��jbů�T���A����*~V{+~�����Ċߩ��g���7��I��X�;uU��� V�N]?�=��SW��jbů�T���A����*~V{+~�����Ċߩ��g���W����9��y����9����*~F{+~�M�����3q\��s��/�|y�{yy�}&�Ӫ���o��?}�=ݽ�p5�1�z�z�����_=�qf��A 3G�93�%3urf��d�� g�JMf�jrf��d�� g�Fݙ9�c�3s�&3G�93Wj2sT{3s���͚��ܘ;3'trf��d�� g�JMf�jrf��d�� g�Fݙ9�c�3s�&3G�93Wj2sT{�3s�&3G�937���I���+5�9�=ș�R���ڃ��+5�9�=ș�QwfN���\���Q�A���2s4k�3se&3G�937���I���+5�9�=ș�R���ڃ��+5�9�=ș�QwfN���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:)3W�93G�z3s��Ś��\����A�̅z��A����+5�9�=ș�R���ڃ��+5�9�=ș�QwfN���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jbfn�d�d�f�\�9�5Ǚ�2��#ڃ��+5�9�=ș�QwfN���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�13W���Ѭ9�� �̜Ȟ��\����A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s�^2sP� g�JMf�jrf��d�� f� +]�9�5Ǚ�1wfN���\���Q�A�̕�����\���Q�A�̍�3sR� g�JMf�jrf��d�� g�JMf�jrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s��̜�1ș�R���ڃ��+te�h�g��Lf�hrfnԝ��:93Wj2sT{�3s�&3G�93Wj2sT{�3s��̜�1ș�R���ڃ��+5�9�=ș�R���ڃ��ug椎A�̕�����\���Q�A�̕�����ܨ;3'ubf�Е��Ys��+3�9�=ș�R���ڃ��ug椎A�̕�����\���Q�A�̕�����\����9ș�R���ڃ��+5�9�=ș�R���ڃ��ug椎A�̕�����\���Q�A�̕�����ܠ����9���2s$k�3se&3G�93?ΦUf��q�̯2�����_��|���'���g��]��?|��o���_���������ۿ�����~���c>�t����Õ��;~{:��t��c�z�Î��sw�h�w���+�c�;V��cE��cUj:VT{�;V��cE��c5��XI�ܱ*5+�=��Rӱ�ڃܱ*5+�=��Qw�J��U��XQ�A�X�����U��XQ�A�X��;VR� w�JMNJjbǪ�ձ�Ysܱ*3+�=��Qw�J��U��XQ�A�X�����U��XQ�A�X��;VR� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1H�2�+��cر*pu�(�w��LNJhr�*�K� +��U��XQ�A�X�����U��XQ�A�X��;VR� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{;V��c%��cU��X��9�X�����U��XQ�A�X��;VR� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��BWNJf�a�j�t�D�w��LNJhrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱ +�ұ�:�cUj:VT{�;V��cE��cU��XѬ9�X��;VB� w�JMNJjrǪ�t��� w�JMNJjr�j�ݱ�:�cUj:VT{�;V��cE��cUj:VT{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱuw���A�X����ĎU��cE��cUf:VD{�;V��1��Rӱ�ڃܱ*5+�=��Rӱ�ڃܱuw���A�X�����U��XQ�A�X�����ը�c%urǪ�t��� w�JMNJjrǪ�t��� w�F�+�c;V���͚�U��X�A�X�����ը�c%urǪ�t��� w�JMNJjrǪ�t��� w�B�t���A�X�����U��XQ�A�X�����ը�c%urǪ�t��� w�JMNJjrǪ�t��� v�M�Jf�aǪ�ձ"Ysܱ*3+�=��q��:V|�s�z�/_;��������b +_�|�U��i����������#���_�s��?�����_�ӯ��Ϸ_����o�5������������ѷ&�>�=~�����s~������O����j|W�����ϖQ�gY����ˋUϟ��������Z��6lT{�� [��6lT{�� [��o�u�a+5߆�j�a+5߆�j�a+5߆�j�au6�c�� [��6lT{�� [��"�j���+h�_0�"@��+J�T{��(5WP�A�"��\@����Q�R� _Pj��ڃ|E@��"�j�����=�W����:���RsE���+J�T{��(5WP�A�"`�}E��1�W��+�� ^P�"�f��e���=�W����:���RsE���+J�T{��(5WP�A�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@����RsE���+J�T{��u_ u�e���x=�W���Xs|E@��"�h��^��:���RsE���+J�T{��(5WP�A�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@����RsE���+J�T{�4W��9�"��uE�ɚ�+��D{��(5WP�A�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@����RsE���+J�T{��u_ u�����=�W��+�� ^P�"�f��C���=�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@����RsE���+J�T{��u_ u�����=�W��+�� _Pj��ڃ|E@��+��A�"��\@����RsE���+ +]WЬ9�"`�}E��1�W��+�� _Pj��ڃ|E@��"�j���+��A�"��\@����RsE���+J�T{��u_ u�����=�W��+�� _Pj��ڃ|E������c��(5WP�A�"��uE�͚�+��D{��u_ u�����=�W��+�� _Pj��ڃ|E������c��(5WP�A�"��\@����RsE���+F�WH�|E@��"�j�����=�W��+�� _0�"@��+ +]WЬ9�"��\@����RsE���+F�WH�|E@��"�j�����=�W��+�� _����s��(5WP�A�"��\@����RsE���+F�WH�|E@��"�j�����=�W��+�� ^0h���sxE@����5�W��+�� _���|����ǀ+��1� ��Ʒa?}�{{x�o�^��w��%����������1��LJ�/ro?\a� +���֣���5<������� P�ڃ\�)55�=�5�Qw�G��O���P�A����O���P�A��k<R� �xJM��jb���U�Ys\�)35�=�5�Qw�G��O���P�A����O���P�A��k<R� �xJM��jr����x�� �xJM��jr�g�]�:��Sjj<T{�k<���C���Sjj<T{�k<����1H5�2�5��cX�)p�x(��x�L��hr�'�K���O���P�A����O���P�A��k<R� �xJM��jr����x�� �xJM��jr�g�]�:��Sjj<T{�k<���C���Sjj<T{k<���#���S��9����O���P�A��k<R� �xJM��jr����x�� �xJM��jr�g�]�:��Sjj<T{�k<���C���Sjj<T{�k<����1�5�RS�ڃ\�)55�=�5�BW��f�a�g��xD��x�L��hr����x�� �xJM��jr�g�]�:��Sjj<T{�k<���C���Sjj<T{�k<����1�5�RS�ڃ\�)55�=�5�RS�ڃ\� �R�:��Sjj<T{�k<���C���S��Ь9��k<B� �xJM��jr����x�� �xJM��jr�g�]�:��Sjj<T{�k<���C���Sjj<T{�k<����1�5�RS�ڃ\�)55�=�5�RS�ڃ\�u�x��A����O���C���Sfj<D{�k<����1�5�RS�ڃ\�)55�=�5�RS�ڃ\�u�x��A����O���P�A����Ϩ��#ur����x�� �xJM��jr����x�� �xF�5�ck<��͚�O����A����Ϩ��#ur����x�� �xJM��jr����x�� �xB��x��A����O���P�A����Ϩ��#ur����x�� �xJM��jr����x�� �xM�Gf�a���U�!Ys\�)35�=�5�qO�j<|�s�w�P�?Ǩ�n�x��hc��Gv���Z����o���o�[������7�1�{8���(����?��6�˓߇����Ț��ϐI���9���Ț��O�;���8�3d�?"k�{?C&�#��8�3dZ?"k�K?A��Ȟ��ϐ����9l���?��8�3`�>k��>A�Ȟ�ϐ)���9�����Ț�ϐi���9.���> {�s>C��#���3dR>"k�C>C��#�������9N����Ț�~ϐ����9���v�Ț�rO�;���(�3��#�j +�=��d���1��^�Ě�Z�6y����1ǩ�!S�Ys��2��5Ǒ�!��Ys\� rz@��y�L�Gd�q�gȤyD��y�L�Gd�q�'���s��2E�5�=�!��Ys�2-�5�%��Xc��oUx�]�q�g�$x$�x�LGd�q}'���s��2��5�ݝ!��Ys�2��5�ŝ wpd�qng��vD��v�LjGd�qhg�tvD�Wv�ܑ�=lj�!S�Ys��2y�5�q�W[G���u�KX^�qVg�Tu$�7u�LRGd�qPg��tD��t��1�=�)�!S�Ys��2�5��!��Ys\� rt@��s�L=Gd�q;gȤsD��s�L7Gd�q5w��Ds���dΐ)戬9���\�Ț�XΈ��#�z�K9�PĞ�Lΐ�䈬9n��D�Ț�@ΐ�㈬9����8 {��8C��#�渋3d�8"k��8C��#�済���9����Ț�ΐIሬ9���Ț� +N�;���8�3d +8"k�7#�����1�����Ě��M�;|��8{3d�7"k��7C&y#��8x3dz7"k�k7A�� Ȟ��͐)݈�9���̍Ț��͐i܈�9.��7 {��6C�n#��m3d�6"k��6C�k#��j�ڀ�9Lڌ��6�Ǹg3`r6k�c6C�e#��d�ـ�9�����Ț�͐I؈�9��~�Ț�z�6y��1��!S�Ysܭ2��5�њ!ӬYs\� rk@��j�L�Fd�q�fȤjD��j�L�Fd�a�&�Dj��&j�[�y�cܧ0y�5�q�a`��4z�s�vy(��7~M��|�߸L[��i��J����?�l´��o����>�����/�{x�{~��G͇��㛯�����������P{�@}�{~��[����P{�P[��Qw�G���O���P�A�����P���Q�A����;@R� ��JM +�jr��Ԁ�� ��JM�jrh���:� +Tj�@T{�@��2͚�6P���A����@R� �JM"�jr$��T��� w�JM(�jr*h�� +�:�TjrAT{��A��D��Tj�AT{��A��n��1��R��ڃ*5� �=���R�ڃ�u7���A��y�Q�ÐP��$D��%TfbBD{�sB�^zBP� �JMR�jrT��T��� w�JMX�jrZh���:�.Tj�BT{�C��0D��1Tj"CT{�3C��ΐ�1ȥ�R��ڃ*5�!�=Ƚ�R�ڃ�4�!�=�ա"Wv�d�qx�̔��� ��JM|�jr~h���:�@TjDT{�#D��BD��CTjBDT{�SD����1�5�R�#�ڃ$*5E"�=�M�R%�ڃ�%uw���A.��4��8Q��Q�A��E4kEC�Q$��RTf2ED{�CE��TD��UTjbET{�sE��^��1�ŢR�,�ڃ-*5�"�=�ݢR.�ڃ�.u����A���|��Q�)Q�An�����Q����9�%�R�2�ڃ3*55#�=�=�BWЈf�q�h��4:�jTj�FT{��F��lD��mTj�FT{��F��1ȅ�R�8�ڃ9*5�#�=ȝ�R:�ڃ�:u����A�������Q�)Q�An������Ѩ�{$ur��Ԥ��� Ə +]�#�5���2@"ڃ�@u7���A� ����R�)!Q�An!����Ҩ��$ur��$��� G�JM�jr�Ԅ��� ��F�m$�c��H�&�D�9�Tj +IT{�I�&�D�9�4��$I�XJ*t��h�ǒ�L-�hr/����� '�F��$�c��I�&�D�9�Tj�IT{��I�&�D�9�꥟urA��$��� G�JME�jrG�Ԅ��� ��F�-%�c�kJ�&�D�9�Tj�JT{��J�&�D�1�4h�J2{�JE��ɚ�R��+�A�+�;AX�s�˫ǀ���9~��������Ʒ������i5�����?�����_>���o�'z��j�cX����?`�o�w/����o}���>��������g��5��YT����x���,��go�=x�>�=���Rϟ�����z�i�����7��\����W��ϲ:�����ߤz�� ����^�z�� ��g����7̚;�OSx�� c��2:�h+5�7�=�ŷRS|�ڃ\|+5�7�=�ŷQw�M���[�)�Q�A.�������[�)�Q�A.����oR� �JM�jr��ߨ� �JM�jr�m�]|�:��Vj�oT{�o���͚��[�)��A.����oR� �JM�jr��ߨ� �JM�jr�m�]|�:��Vj�oT{��o���F���Vj�oT{��o����1�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃ\|uߤ�A*��y.�Q���[���F���Vf�oD{��o�^�oP� �JM�jr��ߨ� �JM�jr�m�]|�:��Vj�oT{��o���F���Vj�oT{��o����1�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃX|4�7�=�ŷ"W�d�q��߈� �JM�jr�m�]|�:��Vj�oT{��o���F���Vj�oT{��o����1�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃ\|uߤ�A.�������[�)�Q�A,���o4k�oC��&���Vf�oD{��o���F���Vj�oT{��o����1�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃ\|uߤ�A.�������[�)�Q�A.�������[����9�ŷRS|�ڃ\|+5�7�=�ŷBW�f�q�m�]|:��Vj�oT{��o���F���Vj�oT{��o����1�ŷRS|�ڃ\|+5�7�=�ŷRS|�ڃ\|uߤ�A.�������[�)�Q�A.�������ۨ��&ur��ߨ� � +]�7�5�ŷ2S|#ڃ\|uߤ�A.�������[�)�Q�A.�������ۨ��&ur��ߨ� �JM�jr��ߨ� �F��7�c��o���F���Vj�oT{��o���F���6�.�I�X|+t�h���L�hr��ߨ� �F��7�c��o���F���Vj�oT{��o���F�����ur��ߨ� �JM�jr��ߨ� �F��7�c��o���F���Vj�oT{��o���F���6h�o2{�oE��ɚ��[�)��A.��fU|�s����xy9,������<���)|���W����1����?�@�3����W��?���_~��_����_��������������k����~��~�{x���a�맽���D��9n�Y�Al��sR� 6�N]�9�=�SWs�jbs��՜�ڃ+5�9�c�s������ܩ�9g��9w�9g��9Wf�sD� 6�N]�9�=�SWs�jbs��՜�ڃ+5�9�c�s������ܩ�9g��9w�j�Y�AlΕ���1�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܩ�9g��9w�9g��9w�j��AlΕ���1�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܩ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃ;u5�� 6�N]�9�=�RӜ�:�9w�����1j�xn�Y�9lΝ��sF{�s����9�SWs�jbs��՜�ڃ;u5�� 6�JMs����ܩ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃ;u5�� 6�N]�9�=HBWs�f�Qs��ss�d�as��՜3ڃ;u5�� 6�JMs����ܩ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃ;u5�� 6�N]�9�=�RӜ�:�9w�j�Y�AlΝ��sV{��s���s6k��sE��ɞ��ܙ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃ;u5�� 6�N]�9�=�RӜ�:�9w�j�Y�AlΝ��sV{�s������ܨ�9'ubs��՜�ڃ;u5�� 5�=7�l�6��Ls����ܩ�9g��9w�j�Y�AlΝ��sV{�s��9Gubs��՜�ڃ;u5�� 6�N]�9�=�RӜ�:�9w�j�Y�AlΝ��sV{�s������\�i�Q�;u5�� 5�=7�l�6��\�9�=�RӜ�:�9w�j�Y�AlΝ��sV{�s������\�i�Q�;u5�� 6�N]�9�=�SWs�jbs��4税AlΝ��sV{�s������ܩ�9g��9Wj�sT� 5�=7�l�6��\�9�=�SWs�jbs��4税AlΝ��sV{�s������ܩ�9g��97�n�I��;u5�� 6�N]�9�=�SWs�jbs��4税AlΝ��sV{�s������ܩ�9g��9W�j���9j�ynΙ�9lΝ��sF{�sȦMs����3qܜ�s��oxy>�Z���2����|v�3�>�����.��^_�a�����֣�?s�d��ǻ��F�������@{�@}�{�b��go�=x���=H���j4��w��N]�eu��w//V=��ڃ�:j��\I@��J�Rs%��+ B�\I�u���J�=�W��+ �� _IPj�$�ڃ|%���J�c��$(5WP�A����\I@��J�Bו4k��$s_I t���J�=�W��+ �� _IPj�$�ڃ|%���J�c��$(5WP�A����\I@��J�Rs%��+ F�WH�|%A����j���J�=�W��+ �� _I0꾒@��+ J͕T{�$(t]I@���J�2s%��+ F�WH�|%A����j���J�=�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃ|%A����j���J�=�W���$�:�J�2�WP��+ +\WP�9����\I@��J�P/W@��|%A����j���J�=�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃ|%A����j���J�=�W�+ d�^IP互�d��e�J�=�W��+ �� _I0꾒@��+ J͕T{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃ|%A����j���J�=�W���$�:�J�Rs%��+ J͕T{�$(t]I@���J�!s%�Ȟ�+ �̕D{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃ|%A����j���J�=�W���$�:�J�Rs%��+ J͕T{��$(5WP�A�� �˕P� _IPj�$�ڃ|%A����j���+ h�_I0澒@��+ J͕T{��$(5WP�A����\I@��J�Q��R� _IPj�$�ڃ|%A����j���J�=�W���$�:�J�Rs%��+ J͕T{��$(5WP�A��`�}%��1�W��+ �� ^IP躒�f��e�J�=�W���$�:�J�Rs%��+ J͕T{��$(5WP�A��`�}%��1�W��+ �� _IPj�$�ڃ|%A����j���+ ��A����\I@��J�Rs%��+ J͕T{��$u_I u���+ h�_IPf�$ ڃ|%A����j���+ ��A����\I@��J�Rs%��+ J͕T{��$�r%�9�W��+ �� _IPj�$�ڃ|%A����j���+ ��A����\I@��J�Rs%��+ J͕T{�$4W��9����u%ɚ�+ �̕D{��$P�/�$�s��$\=\I8~�q%��ƕ����(x%a}f_IxXW��ӏ�I8��������I8�[{����h�C�11y�{}x��A>Qϟ�����������=�� ��{�� ߃Pj�A�ڃ|B���j�=��{��A���܃@���Rs��{J�=T{��A�r�9�� ��{�� ߃Pj�A�ڃ|B���j�=��{��A���܃@���Rs��{ +]� Ь9�a�}��1�� ��{�� ߃Pj�A�ڃ|B���j�=��{��A���܃@���Rs��{J�=T{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���u͚�{��=D{��Au߃ u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���܃@���Rs��{F�� H�|B���j�=���=�� ��{�� ߃0�A��{�<߃@�z�A(p݃@����2s��{B�܃�u�=���=�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���܃@���Rs��{F�� H�|B���j�=���=�� ��{�� ރ0h�A��sxB���5�� ��{�� ߃Pj�A�ڃ|¨��c��A(5� P�A���܃@���Rs��{F�� H�|B���j�=���=�� ��{�� ߃0�A��{J�=T{��A(5� P�A���u͚�{��="{��A(3� �A���܃@���Rs��{F�� H�|B���j�=���=�� ��{�� ߃0�A��{J�=T{��A(5� P�A���܃@���P/� @��|B���j�=���=�� ��A�Ys|��c��A(5� P�A���܃@���Rs��{F�� H�|B���j�=���=�� ��{�� ߃0�A��{J�=T{��A(5� P�A���܃@���Q�=R� ߃Pj�A�ڃxB���5�� ��{�� ߃0�A��{J�=T{��A(5� P�A���܃@���Q�=R� ߃Pj�A�ڃ|B���j�=���=�� ���A�:��Rs��{J�=T{��A(5� P�A�a�}��1�� ��A�Ys|B���h�=���=�� ���A�:��Rs��{J�=T{��A(5� P�A�!��=P� ߃Pj�A�ڃ|B���j�=���=�� ���A�:��Rs��{J�=T{��A(5� P�A�a�܃ ����"�=$k��A(3� �A�A7�=|��=��ǀ{���w�oO�g�q�������ç�}8�ŧE��P>su�>!~����~��Ot⽧z~��/�|��������K=��멫G=��>>�S�� �SF���c��)���B���R誧Ь9����z +��zʨ��"ur=���S�� �SJM=�jr=���S�� �SF���c��)���B���Rj�)T{��)���B���2ꮧH�\O)5��=���RSO�ڃ\O)5��=���Qw=E��zJ��z +��1����)k��)e��B���ur=���S�� �SJM=�jr=���S�� �SF���c��)���B���Rj�)T{��)���B���2ꮧH�\O)5��=���RSO�ڃ\O)5��=���ASO��sXO)r�SH��S�L=�hr=���S�� �SF���c��)���B���Rj�)T{��)���B���2ꮧH�\O)5��=���RSO�ڃ\O)5��=���Qw=E��zJ���P�A����z +��zJ���B�氞2d�)"{��)e��B���Rj�)T{��)���B���2ꮧH�\O)5��=���RSO�ڃ\O)5��=���Qw=E��zJ���P�A����z +��zJ���P�A���z��@��\O)5��=���RSO�ڃXO)t�Sh��S����c��)���B���Rj�)T{��)���B���2ꮧH�\O)5��=���RSO�ڃ\O)5��=���Qw=E��zJ���P�A����z +��zJ���P�A�����)R� �SJM=�jb=��UO�Ys\O)3��=���Qw=E��zJ���P�A����z +��zJ���P�A�����)R� �SJM=�jr=���S�� �SJM=�jr=e�]O�:��Rj�)T{��)���B���Rj�)T{��)��z��1���BW=�f�q=���S�� �SJM=�jr=e�]O�:��Rj�)T{��)���B���Rj�)T{��)�^�)P� �SJM=�jr=���S�� �SJM=�jr=e�]O�:��Rj�)T{��)���B���Rj�)T{�)���"�簞R䪧��9����z +��z��R�>ǹ��z����z��9F=�p��: >�s<u��U;��i;�߾��������_�Ï���W���������zy�����?y�����?�$U�����߯�_�����O/��s�J�!�F=�5���2��Ys�2�!�.=�5�o�r�Hd��k�<�EO���Co�� +=q�c����<�5�o��&//��c�_�7dޜ'����yC�y"k�_�7dޙ'����yA���9~]ސy[�Ț�w� �W剬9~QސyO�Ț���_����yC� y"k�ߏ7d^�'����xC��x"kߌb^����x㭷�ɻ�w� �W�I�9~!ސy�Ț���_����UxC�Mx"k�߃7d^�'���%xC�x"k�߀�~Ȟ��� ��߉�9~�ݐy��Ț�� ��މ�9~�]���w {�_y7d�x'���}wC�uw"k_v7�zם��1|�]xy����� ���I�9~�ݐyŝȚ�� ��ۉ�9~�]���v {�_m7d�l'����vC�v"k�_j7d�i'����vA�ځ�9~�ݐy��Ț�w� �Wى�9~�ݐy��Ț��o���؏�1ǯ�2o�Ys���!��:�5�/�q��N����.���:�=ǯ�2o�Ys�κ!��:�5�/�2�Ys��� ���@���nȼ�Nd��{��k�D���nȼ�Nd����/��s�z�!�v:�5��2��Ys�b�!�^:�5�o�r��d��+���D���n��::��c�2��.:�5�o�r��d��k��[�D���nȼ�Nd������D��}.���9�=ǯ�2o�Ys�!��9�5�/�2�Ys�ƹ ��@��nnȼmNd���̫�D��hnȼgNd��[��/��s�����^�������$��\nȼ[Nd����/��s�Z�!�V9�5��2��Ys�B�!�>9�5�o��&//��c�_%7d�$'���=rC�5r"k�_"7d�!'��� rA�ȁ�9~}ܐy{�Ț�w� �Wlj�9~qܐyo�Ț÷ƅ����1|e�x�q���}q�uqk�_?|�Y�+Nq~U�����C|�����?����8�b��� �������>{���|d�(����˿���o�?����������ǃ������ᅨ��ʇ�������K�o�>ǧ�̿=�2k�|�{�z/��go�=x��=Y���j~�~=����d��YV���z�Yx�cg��?{C�����po��go�=x��~��iR���7��\}��{|��g��ϲ:�ǻ�W��?{C������E�=b}��ڃ�����D+���j~���~�Ju}��1x��~��rR���7�<PO? �oR=��ڃ��������P{�s���� �6|�(�=w@�~��/8�7�<PO?_�z�� ���7��{�� �?W���^�/8볬������Ū���P{�@}�{x��̭��P{�@=�4|�����P{�������ɩ�,�s�@=�4<>K���j�������?{C�����po��go�=����~q��峬�������M����P{�@=�#�Uϟ������z�l���Ys���w�/��|��1x��~��z�� ��������?{C�������(��go�=���x�ix���,�c�@=�4<<I���j��a��g}��ڃ���Uϟ�����W���}��ϲ:�ǻ������j��;e��/�E��Kj��/�E��Kj������1�_R��|I-�=�_R���%�h�I�2�%��� I�Q��Ԓ:�Kj��/�E��Kj��/�E��Kj��/�E��Kj������1�_R��|I-�=�_R��|I-�=�_R���A����Q�=R� _�QjN�ڃ|TG����j�]���=ȧu��o�:麎2��uP��; +\vP�9�����A��̎P/wv@��|iG�9��j�����=��v���;�� ��1꾹C��;J��T{��(5�wP�A�����A����Q��R� _�QjN�ڃ|�G��j����=��x�[<d�^�Q�:ǃd��Ae�"�=�7y���<�� ��1��C���<J�iT{���(5�yP�A�ϣ��A��D�Q��R� _�Qj���ڃ|�G��ԃj���X�=��z�����:�b�Rs���=J��T{��(t�A���t�!s��Ȟ��=���D{��(5|P�A����A����Q�R� _�QjN��ڃ|�G���j�=���=�'}��o��:���Rs����>J�eT{�o�(5�}P�A>�#��}P� _�QjN��ڃ|�G���j���C?h���1��C��k?JT{��(5P�A�����A���Q��R� _�QjN��ڃ|�G����j������=�'���o��:� +�Rs��C@J�% T{�o)5ǀP�A>d�}��1�����@�� R� +�f��] e�0�=ȧ���o�:�:�Rs��AJͅ T{�o)5G�P�A>d�}'��1ȗ���SA�� Rj��ڃ|/H�9�j�� ��A��A��Ԝ B��p�Rs9���AJ�� T{��u�"u�!��Bh�Rf�!ڃ|GH�9$�j�)!��[B��A�&�ԜB����RsQ��BJ�Q!T{�� + �rW�9ȗ����B�� Rj��ڃ|_H�90�j�!��C��A�2�ԜB��АRsi��[CJͱ!T{� 4����9�8��urɚ�C���!D{���Q���9Η��N?Ǹ=������������u{�q��_?������~��rB��ǚ������ߢ��1�`�d�Փ���� p2��1J��T{�O�u��!u����d�=�'c���1�� ��QjNƠڃ|2ƨ�d�c�O�(5'cP�A>�Ԝ�A��d�Rs2�ē1��2{�O�(3'c�A>�Ԝ�A��d�Rs2��1F�'cH�|2F�9�j����d�=�'c���1�� ����d�s�O�(5'cP�A>�Ԝ�A��d�Rs2��1F�'cH�|2F�9�j����d�=�'c�NƠYs|2Ƙ�d�c�O�(5'cP�A>�Ԝ�A��d�Rs2��1F�'cH�|2F�9�j����d�=�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��QjNƠڃx2F��d�5�'c���1�� ��1�>C��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��QjNƠڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2��1J��T{�O�(5'cP�A>c�}2��1H'c�y>�����Q�:�b���e�d�=�'c�z9��1J��T{�O�(5'cP�A>�Ԝ�A��d�Q��R� ��QjNƠڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2��1J��T{�O�(5'cP�A<cМ�!���d�"��$k�O�(3'c�A>�Ԝ�A��d�Q��R� ��QjNƠڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2��1J��T{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃx2F��d�5�'c��1D���QfN� ڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2��1J��T{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j���^Nƀ:�d�Rs2��1J��T{O�(t��A���d�1��B� ��QjNƠڃ|2F�9�j����d�=�'c��OƐ:�d�Rs2��1J��T{�O�(5'cP�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j����1��A>�Ԝ�A��d�B��4k�O�(3'c�A>c�}2��1�'c���1�� ��QjNƠڃ|2F�9�j����1��A>�Ԝ�A��d�Rs2��1J��T{�O�u��!u����d�=�'c���1�� ��QjNƠڃ|2ƨ�d�cO�(t��A���d�2s2��1J��T{�O�u��!u����d�=�'c���1�� ��QjNƠڃ|2F���1��A>�Ԝ�A��d�Rs2��1J��T{�O�u��!u����d�=�'c���1�� ��QjNƠڃx2Ơ9Cf���E��1H���QfN� ڃ|2�.���1��1W���vx2��9�������������OO�ܿ���pN���=���^�g�ј�u6�_~�v�������ݷ_�����rw���W���������c�]?�aZ�Ƀ���� ��N]i=�=�i�SWZ�jbZoԝ֓:1�w�J�Y�AL띺�zV{�z�����Ĵ^�I�Q���;u���� ��N]i=�=Hi�C�i=�5�i�2��#:1�w�J�Y�AL띺�zV{�z�����Ĵ^�I�Q���;u���� ��N]i=�=�i�SWZ�jbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� ��N]i=�=Hi�C�i=�5�i�3WZ�hbZ�Ԥ���AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�����Ĵީ+�g�1�w�J�Y�AL땚��1i�3���,^�QZ��sZ�b�aZ�̕�3ڃ��u����AL띺�zV{�z�����Ĵީ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�����Ĵީ+�g�1�w�J�Y�AJ���z4{��zG��z&k�zg����Ĵީ+�g�1�Wj�zT� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�����Ĵީ+�g�1�w�J�Y�AL땚��1�i�SWZ�jbZ�ԕֳڃ��;��ֳYs��+r��H����\i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�����Ĵީ+�g�1�w�J�Y�AL땚��1�i�SWZ�jbZ�ԕֳڃ��;u���� ��F�i=�s�z�����Ĵީ+�g�)�w�9�g��0�Wf�zD� ��N]i=�=�i�SWZ�jbZ�ԕֳڃ��+5i=�c�z�����Ĵީ+�g�1�w�J�Y�AL땚��1�i�SWZ�jbZ�ԕֳڃ��;u���� ��JMZ��Ĵީ+�g�)�w�9�g��0�w�J��AL땚��1�i�SWZ�jbZ�ԕֳڃ��;u���� ��JMZ��Ĵީ+�g�1�w�J�Y�AL띺�zV{�z�&�GubZ�ԕֳڃ��;u���� ��N]i=�=�i�R�֣:)�w�9�g��0�w�J��AL띺�zV{�z�&�GubZ�ԕֳڃ��;u���� ��N]i=�=�i�QwZO�Ĵީ+�g�1�w�J�Y�AL띺�zV{�z�&�GubZ�ԕֳڃ��;u���� ��N]i=�=Hi�BWZ�f�QZ��sZ�d�aZ�̕�3ڃ��c"~;��������x�r���s����FZ��?_}y�~}f��+��_?���Ͽ���/���?}�����o������O��~�.�%<�N,���8��� �X�ڃ�X*5�%�=ȉ�QwbI���R�I,Q�AN,������R�I,Q�AN,��KR� '�JMb�jrb��$��� '�JMb�jrbiԝX�:9�TjKT{K���͚��R�I,�AN,��KR� '�JMb�jrb��$��� '�JMb�jrbiԝX�:9�TjKT{�K�&�D�9�TjKT{�K��Ē�1ȉ�R�X�ڃ�X*5�%�=ȉ�R�X�ڃ�Xu'���AJ,�yN,Q���R�+�D��8�TfKD{�K�^KP� '�JMb�jrb��$��� '�JMb�jrbiԝX�:9�TjKT{�K�&�D�9�TjKT{�K��Ē�1ȉ�R�X�ڃ�X*5�%�=ȉ�R�X�ڃ�X4�%�=���"Wb�d�qb��$��� '�JMb�jrbiԝX�:9�TjKT{�K�&�D�9�TjKT{�K��Ē�1ȉ�R�X�ڃ�X*5�%�=ȉ�R�X�ڃ�Xu'���AN,������R�I,Q�AL,�K4kKC&�$��8�TfKD{�K�&�D�9�TjKT{�K��Ē�1ȉ�R�X�ڃ�X*5�%�=ȉ�R�X�ڃ�Xu'���AN,������R�I,Q�AN,������R����9ȉ�R�X�ڃ�X*5�%�=���BWb�f�qbi̝X:9�TjKT{�K�&�D�9�TjKT{�K��Ē�1ȉ�R�X�ڃ�X*5�%�=ȉ�R�X�ڃ�Xu'���AN,������R�I,Q�AN,������Ҩ;�$urb��$��� &� +]�%�5lj�2�X"ڃ�Xu'���AN,������R�I,Q�AN,������Ҩ;�$urb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�9�4�N,I��X*t%�h�'��Lb�hrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�9��%�urb��$��� '�JMb�jrb��$��� '�F݉%�c�K�&�D�9�TjKT{�K�&�D�1�4hK2{KE��ɚ��R�I,�AN,��%>�9��zH,���7~{�鷨_O��ab�>��������~���_?~5�����G�������2_� ϙ��z������u���A��N��%E��%UjZRT{�[R��%E��%5�nII�ܒ*5-)�=�-�RӒ�ڃܒ*5-)�=�-�QwKJ��T�iIQ�AnI�����T�iIQ�AnI��[RR� ��JMK�jbK��Ւ�Ysܒ*3-)�=�-�QwKJ��T�iIQ�AnI�����T�iIQ�AnI��[RR� ��JMK�jrK�Դ��� ��JMK�jrKj�ݒ�:�%UjZRT{�[R��%E��%UjZRT{�[R��1H-�2�-)��cؒ*p��(����LK�hrK*�KK +��T�iIQ�AnI�����T�iIQ�AnI��[RR� ��JMK�jrK�Դ��� ��JMK�jrKj�ݒ�:�%UjZRT{�[R��%E��%UjZRT{[R��%%��%U�jI��9nI�����T�iIQ�AnI��[RR� ��JMK�jrK�Դ��� ��JMK�jrKj�ݒ�:�%UjZRT{�[R��%E��%UjZRT{�[R��1�-�RӒ�ڃܒ*5-)�=�-�BWK�f�aKjȴ�D����LK�hrK�Դ��� ��JMK�jrKj�ݒ�:�%UjZRT{�[R��%E��%UjZRT{�[R��1�-�RӒ�ڃܒ*5-)�=�-�RӒ�ڃܒ +�Ғ�:�%UjZRT{�[R��%E��%U�jIѬ9nI��[RB� ��JMK�jrK�Դ��� ��JMK�jrKj�ݒ�:�%UjZRT{�[R��%E��%UjZRT{�[R��1�-�RӒ�ڃܒ*5-)�=�-�RӒ�ڃܒu����AnI����ĖT��%E��%UfZRD{�[R��1�-�RӒ�ڃܒ*5-)�=�-�RӒ�ڃܒu����AnI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��F�-)�c[R���͚�T�iI�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��B�����AnI�����T�iIQ�AnI�����Ԩ�%%urK�Դ��� ��JMK�jrK�Դ��� ��MKJf�aK��Ւ"Ysܒ*3-)�=�-)��%��8��W�-��s�Ɩ�����nI�gvK��Z����_~��;'�߿�����ǯ����~��O�ԥ�_ᄒ�Aׅ��c�����;w%��+��G?��>>Tr�� WrFݕ�c�+9���C���Sj*9T{�+9���C���3��H�\�)5��=���BW%�f�q%��Tr�� WrFݕ�c�+9���C���Sj*9T{�+9���C���3��H�\�)5��=ȕ�RSɡڃ\�)5��=ȕ�Qw%G��JN���P�A�䔚J��JN���P�A�䌺+9R� Ur�<Wr(^�a%��UɡXs\�)3��=ȕ�P/��s�+9���C���Sj*9T{�+9���C���3��H�\�)5��=ȕ�RSɡڃ\�)5��=ȕ�Qw%G��JN���P�A�䔚J��JN���P�A���J�̞�JN���C�渒Sf*9D{�+9���C���3��H�\�)5��=ȕ�RSɡڃ\�)5��=ȕ�Qw%G��JN���P�A�䔚J��JN���P�A�䌺+9R� WrJM%�jr%��Tr�� Vr +]��5���!S��s\�)3��=ȕ�RSɡڃ\�)5��=ȕ�Qw%G��JN���P�A�䔚J��JN���P�A�䌺+9R� WrJM%�jr%��Tr�� WrJM%�jr%'�K%��JN���P�A�䔚J��JN���C�渒3���\�)5��=ȕ�RSɡڃ\�)5��=ȕ�Qw%G��JN���P�A�䔚J��JN���P�A�䌺+9R� WrJM%�jr%��Tr�� WrJM%�jr%g�]ɑ:��Sj*9T{+9��J͚�JN����A�䌺+9R� WrJM%�jr%��Tr�� WrJM%�jr%g�]ɑ:��Sj*9T{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃ\�uWr��A���*94k�+9e��C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃ\� �RɁ:��Sj*9T{�+9���C���Sj*9T{�+9��J��1ȕ�RSɡڃ\�)5��=ȕ�RSɡڃX�4��=���"W%�d�q%��Tr�� WrTv�J��\�]=���a%w��߆?�~_����{�������߽<~�m�����~��?�_������'ޟ�?>z��L��+���endstream endobj 1569 0 obj << /Type /Page @@ -4462,28 +4501,28 @@ endobj 1586 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 612.682 206.166 619.656] +/Rect [119.552 612.802 206.166 619.656] /Subtype /Link /A << /S /GoTo /D (boolean) >> >> endobj 1587 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 612.682 537.983 619.656] +/Rect [528.02 612.802 537.983 619.656] /Subtype /Link /A << /S /GoTo /D (boolean) >> >> endobj 1588 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.462 599.731 260.263 606.705] +/Rect [143.462 599.851 260.263 606.705] /Subtype /Link /A << /S /GoTo /D (pronouns) >> >> endobj 1589 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 599.731 537.983 606.705] +/Rect [528.02 599.851 537.983 606.705] /Subtype /Link /A << /S /GoTo /D (pronouns) >> >> endobj @@ -4910,14 +4949,14 @@ endobj 1650 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [119.552 198.237 190.515 205.21] +/Rect [119.552 198.356 190.515 205.21] /Subtype /Link /A << /S /GoTo /D (whining-overview) >> >> endobj 1651 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 198.237 537.983 205.21] +/Rect [528.02 198.356 537.983 205.21] /Subtype /Link /A << /S /GoTo /D (whining-overview) >> >> endobj @@ -4971,90 +5010,79 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1703 0 obj << -/Length 41562 +/Length 41510 /Filter /FlateDecode >> stream xڜ�[�\Wz��{� -N�0��猬;���hL�n�ڬm46Y$L`��4�_?;�?_�2ֻ�c}�u��'�`1A���6���������{�v��o���?�����ٶ�8�N������7�o��L����g�����<���3����������i����^G=��w���^�fwܼ���O˿��������,���7������꿾������_�����f���������״=����_��}��������rG]�]Q=p�����)T�gWT���|z������8�c�ֳ�v�u~�P]�]Q=p��o��1T�gWT��۰K�������m�e��(�7 ��`� ������lRuyvE���z��?�˳+��W�����z��.p��T]�]Q=p��?O�P]�]Q=p��o�1��SϮ�xW�m�ᐩz�>p��o���˳+���m�=�����u~���<��z�}u;� ��ǜ�e�������˳+��Ӵ=������<��?��]1-�>��N�or2��e���{pJ������w��<��z�@�߅�>T�gWT����a��,�]�@�߆�!T�gWT��۰ �Գ+���mؤ�������v�<�?��YV��������N=��z�@=M��T]�]Q=p���c�W�zvE����q;��/�z��.p��o�!U�gWT����EbytŴ�9���N=��z�}�4��P�gY���l�s���u~6��<��z�@=O����\=��z�}�a3=��?��YV�������<��z�@=�χ?������6�s�������6B��e���۰�ճ+���m?������6lSuyvE������6l�s�,�]�@�߆м<�"ކ ���-���hqr�/���zv����~���ُ=�j8P�����˳+���]8�CuyvE��������<��z�}u;� �P�gY���6쎡�<��z�@�߆�)T�gWT���I���������ӳ�v�u?�?BuyvE���z�RuyvE���z�v��P]�]Q=߆�O��Q6=n@��A������������<��z�@�߀�#O=��z�}�0��P�gY���.lßq���u~��gWT��i���˳+��W���^��YV�������_ ����q:�RuyvE���:� �剞]Q=�z�߆��Dϲ���mا����u~��=��z�@�߆�/�ˣ+���'�� �y�<ʤ� �� ؤ��� -��8ó=��z�@=O�s�.Ϯ�x_=o�cxv�gY��~ڄg'zvE���:� �T]�]Q=p��oCxv�gWT��>�o�>T�YV���:� ��g\=��z�@�߆��DϮ�8P�a��˳+��U��tx�~��YT��������gWT����˳+�ԇ)����iq�����?Z�,�]�@�߃c�.Ϯ�8P���������.�g'zvE����n~v�Zϲ���m�BuyvE���:� �ى�]Q=p�>L��T]�]Q=��L�s�cNϲ���t�N����8�O��<��z�@�߆c�c��]Q=�z�߆��Dϲ���mا����u~¿4-���7 �� <;ѳ+��W��{&�,�]�@�߃��DϮ�8P��.<;ѳ+�ԇ�ᜪ˳+��WO�i���YV�����³=��z�@�߆c�.Ϯ�8P�!<;ѳ+��W�!<;ѳ�v�u~v��<��z�@�߆��DϮ�8P�!<;ѳ+��Wϛi&�,�]�@�M����iq�8m��=��z�@}�N��<��z�}�q~��=�j8P�w!<>ѳ+���m8�����u~��=��z�]���߆�m=�j8P�a��˳+���m�O����a:���IϮ�x_�n�MX�г�v�u7��=��z�@=N�S�.Ϯ�8P�!,L���˖D�.���qr~!��������m =��z�@�߀��'zd�G��w:����7w����8o_�����x�o�^�����-4tr�|����Љ����k�����������~���������E�{������o���&ۇ�Ѻ�q?=^�q(�J=t�2_�͏����{!w�����yz�BuyvE�����2��ڏA����L��V=�c2��cX�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L��~���1�Y�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�q?&Sk?�U���Dm�1�������ê�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=��c2tُa��p?&2��h��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�q?&Sk?�U���H�~�] ��dj�ǰꁸ���ê�~L��~���1���T�@��ڏa�i?&C��6-�c2��c�@�T�Ǡ��~L��~���1�Z�1�z ��dj�ǰꁸ�ڏA����L��V=�c2��cX�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��~��a����~���1�Y�1�z ��$jۏ!����L��V=�c2��cX�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�q?&Sk?�U�����4=��c2rُa��p?&3k?�Q���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=�c2��cX�@�T�Ǡ��~L��~���1�Z�1�z ��d�æ��~LD�~���1�Y�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�q?&Sk?�U���H�~�] ��dj�ǰꁸ���ê�~L��~���1���cH�q?&Sk?�U���L��V=��c2tُa��p?&2��h��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�q?&Sk?�U���H�~�] ��dj�ǰꁸ���ê�~L��~���1���T�@��ڏa�i?&C��6-�c2��c�@�T�Ǡ��~L��~���1�Z�1�z ��dj�ǰꁸ�ڏA����L��V=�c2��cX�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.��c2tُa��p?&3k?�Q���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��$jۏ!����L��V=�c2��cX�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L��~�G�1���0iq����è�~,�$�1�:�?s�2���x����������g�:��@���N�XzA�oV��g�Ȳ����yz~�����o��ݿ���r�a�cv�!s5^������������-4ܼ��B���1^h ��x�!2�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� �z]h��䅆H�B�� ���T=�"U �z /4$j[h �䅆H�B�� ���T="�д8^hH̶�@h� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T="�д8^h�L-4 ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁼА�m���.�"sYh@�6"�P�8^h�L-4 ꁼ��ׅP�@^h�T-4�ꁼ��Zh@�y�!R�Ѐ��BC���R�@^h�T-4�ꁼ��Zh@�y�!R�Ѐ��BC���R�@^h�T-4�ꁼ��Zh@�y�!R�Ѐ��BC�j��L�Å����$-�"S �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z .4Dh-4�iq�А�Zh ��x�!2�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� �z]h��䅆H�B�� ���T="�д8^hH̶�@h� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T="�д8^h�L-4 ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁼА�m���."�д8^h�L-4 ꁼ��Zh@�y�!Q�B�] /4D�P�@^h�T-4�ꁼ��Zh@�y�!P� ������Zh@�y�!R�Ѐ��BC�j�U䅆Dm �v����Zh@�y�!R�Ѐ��BC�j�Uą��B�� Y HZ/4D��@^h� D �:����� ��q��p�G�+ �����\h�G���]-4���Zg�����<������_=}^���_�������__]x�������O����o����OO_^���g���+}���p�<\���W���n~��;��/��P�@�cKPݱ��qx��udž���[d� Q�;�H���wl����H���-Rudž��[�� U�;�H���wl����H���-Rudž��[�� U�;�H���wl����H���-Rudž��[�� U�;��;64-��RwlDz߱E����@�c�Tݱ��|���cC���-Q��] ߱E���P�@�c�Tݱ��|���cC���-Q��] ߱E���P�@�c�Tݱ��|���cC���-P�wl���|���cC���-Rudž��[����wl�������-Rudž��[�� U�;�H���wl����H���-Rudž��[�� U�;�H���wl����H���-Rudž��[�� U�;�H���wl����H���-Rudž��[����wl��;6D=����ݱ���[�� U�;�H���wl��;6T=����ݱ���[�� U�;�H���wl��;6T=����ݱ���[�� U�;�H���wl��;6T=����ݱ���[����wl��;6D=���"Uwl�z ߱%j�c#��;�H���wl��;6T=���"Uwl�z ߱��� �>���"Uwl�z ߱E���P�@�c�Tݱ��|ǖ�펍�.���"Uwl�z ߱E���P�@�c�Tݱ��xǖ��c#����-"� I��;�����wl�k�� _�r�v�2��m�:�;�-߱����wl��rǶ�;���3��/_�|���n��u��OO��;�~���ۇ��}9a���n����˯��8����W��O������]��??���/O_�}�>}X�}Y���������/u*��럿>_����K���}����1\� �yS���z�h� ��Vn�(�?Zy�B�T=�?Z�T}����G+Z��iq��Jb��V����H�G+�z ���hU�V"U�����J���VH����H�G+�z ���hU�V"U�����J���VH����H�G+�z ���hU�V"U�����J���VH����H�G+�z ~���� -���D�>ZA����Dm����G+���VP�@�h%R�� +N�0��猬;���hL�n�ڬm46Y$L`��4�_?;�?_�2ֻ�c�P�j˟���$�{l������a;=����{�v��o���?�����ٶ�8�N������7�O��L����g�����<���3����������i����^G=��w���^�fwܼ���O˿��������,��W��p|�__���?������i3m��?܀���N��i�kڞ�����/Xݾ����O������.Ϯ�8PO����˳+���t>=���������8�c�ֳ�v�u~�P]�]Q=p��o��1T�gWT��۰K�������m�e��(�7 ��`� ������lRuyvE���z�������𢡊�iw�gj=�j8P���C�.Ϯ�8P���C�.Ϯ�8P�����gWT���6��p�T=�j8P�a +������6�BuyvE���:� �T]�]Q=߆M�cNϲ���tz|�����iڞSuyvE���z�N�o��GWL��O���9�Y�2���=8�����u~��P]�]Q=p����a�˳+��W��۰�z��.p��o���˳+���m؆?p�����6lRuyvE����a;m�s�,�]�@�O�s���]Q=p����C�.Ϯ�8P��1��p=��z�}���C��j=�j8P�ᐪ˳+���m�$�<�bZ܀�߃}���]A=�z�߃]�ֳ�v�u~�ᏹzvE���:��T]�]Q=p����c�c��]Q=��������YV�������<��z�@=�χ?������6�s�������6B��e���۰�ճ+���m?������6lSuyvE������6l�s�,�]�@�߆м<�"ކ ���-���hqr����zv����~���ُ=�j8P�����˳+���]8�CuyvE��������<��z�}u;� �P�gY���6쎡�<��z�@�߆�)T�gWT���I���������ӳ�v�u?�?BuyvE���z�RuyvE���z�v��P]�]Q=߆�Lˣlz܀�߃��W�GWH���p؆��� +�u~<��������B��e��� �ճ+���m�1��]Q=p����c�.Ϯ�x_=n�Sxy�gY��~ڦ��gWT���tJ������6��'zvE����i~��=�j8P�a��˳+���m/O���u~�?!.���w�|�߃����(�7 �7`��˳+���t�N����<mΩ�<��z�}�����ى�e���i�������6SuyvE���:� �ى�]Q=��8� �P�gY���6�q���u~³=��z�@�߆M�.Ϯ�xW=l6��1��gQ��nz���]Q=p���C�.Ϯ�8P�� +ԣ+���'��{�hճ�v�u~���<��z�@�߃�.T�gWT��������mj=�j8P�a{������6�g'zvE����0�SuyvE����~3��ُ9=�j8Pw�9<;ѳ+���?�����u~�ᏹzvE����a~³=�j8P�a��˳+���m�Դ<�bZ܀�߃��DϮ�x_=��AX�г�v�u~³=��z�@=N���DϮ�8P��s�.Ϯ�x_=m�]xv�gY��nz�N���u~���<��z�@�߆��DϮ�x_}�߆��Dϲ���mإ����u~³=��z�@�߆��DϮ�x_=o�mX�г�v�u7�R���+�� �� �O�� +��a:=���������=�O�,�]�@�߅��DϮ�8P�ᐪ˳+���m�O���w��f~���,�}�@�߆m�.Ϯ�8P�!<>ѳ+�ԇ��s&=��z�}u��6aaBϲ���t�O����8mN��<��z�@�߆�0�gWT���.[�<ʦ� ��=8���GWH����%�� +�u~��������8�������3�/�{�:������z9t2�Wu?�h����峕͖�N����^C'��>�ޞ_}��/?�����O/:��߯^�Z�Fy�n�}x�������ҫ�C�/�e��x����rG]�]Q=p�����!T�gWT��,s/���T�@��ڏa�q?&Sk?�U���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��Dh�Ǡ�q����è�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=�c2��cX�@IԶCj��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�i?&C��6-�c"S�1�v�����ê�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=�c2��cX�@�T�Ǡ��~L��~���1�Z�1�z ��dj�ǰꁸ�ڏA����L��V=��c2tُa��p?&3k?�Q���H�~�] ��dj�ǰꁸ���ê�~L��~���1���T�@��ڏa�q?&Sk?�U���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��D��cP�a?&3��ǰxF�1��ǰhq����è�~L���R�@��ڏa�q?&Sk?�U���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=�c2��cX�@ڏ��ڏA��h?&#��&-�c2��c�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L�j?�.�c2��cX�@��ڏa�q?&Sk?�U���H�~�] ��dj�ǰꁸ���ê�~L�.�1lZ��Dd�� �q����è�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=�c2��cX�@�T�Ǡ��~L��~���1�Z�1�z ��dj�ǰꁸ��m?��>�c2��cX�@��ڏa�i?&C��6-�c"S�1�v�����ê�~L��~���1�Z�1�z ��D��cP�q?&Sk?�U���L��V=�c2��cX�@�T�Ǡ��~L��~���1�Z�1�z ��dj�ǰꁸ�ڏA����L��V=��c2tُa��p?&3k?�Q���H�~�] ��dj�ǰꁸ���ê�~L��~���1���T�@��ڏa�q?&Sk?�U���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��D��cP�i?&C��6-�c2��c�@��ڏa�q?&R��j��1�Z�1�z ��dj�ǰꁸ���ê�~L���R�@��ڏa�q?&Sk?�U���L��V=�c"U�1�v�����ê�~L��~���1�Z�1�z ��Dh�Ǡ�q����~���1�Y�1�z ���J�ï��3�/��4ڏ������ڏ��}f��s�~4�U�i�/�^�����3zdُ�ւ��<=?}~�a���x����>��c��.?d�������q���5����9\hx�:� dz/4D��@^h�T-4�ꁼ��Zh@�y�!Q�B�] /4D�P�@^h�T-4�ꁼ��Zh@�y�!P� ������Zh@�y�!R�Ѐ��BC�j�U䅆Dm �v����Zh@�y�!R�Ѐ��BC��B�� ���y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC��B�� ���D=��-4���BC�j�U䅆H�B�� ���T=��-4���BC�j�U䅆H�B�� ���T=��-4���BC�j�U䅆H�B�� ���T=��-4���BCd. (ކ�BC�B�� ���D=�����j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@^hHԶ�@j� ���T=�"U �z /4D�P�@\hHP-4��q����Ѐ���BCdj�Q䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�Uą���4-R Dz/4D��@^h�T-4�ꁼ��Zh@�y�!Q�B�] /4D�P�@^h�T-4�ꁼ��Zh@�y�!Q�B�] /4D�P�@^h�T-4�ꁼ��Zh@�y�!P� ������Zh@�y�!R�Ѐ��BC��B�� ���y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC�j�U䅆H�B�� ��H�y�!R�Ѐ��BC��B�� ���D=��-4���BC�j�U䅆H�B�� ���T=��-4���BC�j�U䅆H�B�� ���T=��-4���BC�j�U䅆H�B�� ���T=��-4���BC��B�� ���D=�"U �z /4$j[h �䅆H�B�� ���T=�"U �z /4�u��>�"U �z /4D�P�@^h�T-4�ꁼА�m���.�"U �z /4D�P�@^h�T-4�ꁸА�Zh ��p�!"k�I�ㅆ��B�� 㵁h�_Dz�p�2`�a�:n.�(ve��t�����e�aW ����>�y��O?~y��ﯷ�WO������?�:������Z�����������G���������a~{�?ܼҗ;������ ~����:�c{�B�� U�;����wlYwlHZ߱E����@�c�Tݱ��|ǖ�펍�.���"Uwl�z ߱E���P�@�c�Tݱ��|ǖ�펍�.���"Uwl�z ߱E���P�@�c�Tݱ��|ǖ�펍�.���"Uwl�z ߱E���P�@�c�кcC����-!u�F���[d� Q�;�H���wl��;6T=����ݱ���[�� U�;�H���wl��;6T=����ݱ���[�� U�;�H���wl��;6T=����z�j�wl��;6T=���"Uwl�z ޱEhݱ�iq|ǖ�펍�.���"Uwl�z ߱E���P�@�c�Tݱ��|ǖ�펍�.���"Uwl�z ߱E���P�@�c�Tݱ��|ǖ�펍�.���"Uwl�z ߱E���P�@�c�Tݱ��|ǖ�펍�.���"Uwl�z ޱEhݱ�iq|���cC���-Q��] ߱E���P�@�c�Tݱ��|���cC���-Q��] ߱E���P�@�c�Tݱ��|���cC���-Q��] ߱E���P�@�c�Tݱ��|���cC���-Q��] ޱEhݱ�iq|���cC���-Rudž��[��;6R�@�c�Tݱ��|���cC���-Rudž��[�^��@���-Rudž��[�� U�;�H���wl����H���-Rudž��[�� U�;�H���wl �;62=��"��ؐ�8�c�Lݱ!�|�6������u,wl7/��Ư��c���q;=Ox�V�,wl��c��:S{���͇O�?���z�\�A���w�><��� ۏ�w�W߾^~M������y�N߿�d��?u�/킼�����}y����������˚����;��o��R�r�������ݾ�����(����7�Λz����G+��>Z��]����G+�z ���hUďV"�>ZA������l���G+���VP�@�h%R�� ���D�>ZA����Dm����G+���VP�@�h%R�� ���D�>ZA����Dm����G+���VP�@�h%R�� -���D�>ZA����Dm����G+Z��iq��Jd�D=�?Z�T}����G+��>Z!��V"U�����J��T=�?Z�T}����G+�z�h�>�?Z�T}����G+���VP�@�h%R�� -���$j�h��.�?Z�T}����G+���VP�@�h%R�� -���$�>Z!��𣕈��V��8�h%2�� -����?�_�h_�����ˀ�VƯ��}��?�GyďV�壕är��O�����y�o���WO���/���j=�ۧ�>�yW�����#����/�4h;m��Wp����{���L�_d�Τ�_��;�^���$T=��3)R��I�z gR���L"���L�T}g��ߙ�ښ@�yk"R�5����D�jk�L�í���� $-��&"S[�z oMD��&P�@ޚHԶ5Aj�[��� T=��&"U[�z oMD��&P�@ޚHԶ5Aj�[��� T=��&"U[�z oMD��&P�@ޚHԶ5Aj�[��� T=��&"U[�z nMDhmM�iq�5��ښ ��xk"2�5����D�jkU䭉H����[�ڶ&H�yk"R�5����D�jkU䭉H����[�ڶ&H�yk"R�5����D�jkU䭉H����[�z=����H�A$������HT="#�"Ѵ8>�L�vIh�����HT=�"#U��z DF�"Q�@>�L�vIj�����HT=�"#U��z DF�"Q�@>�L�vIj�����HT=�"#U��z DF�"Q�@>�L�vIj�����HT="#�"Ѵ8>��LD"�|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��."#�"Ѵ8>��LD"�|�:�D�� 2Q�A$�] DF�"Q�@>��TD��|�:�D�� 2P�����|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� Uă��A$���Y�HZDF�"�@>���E��:��ț��xD�_ǯ�Τ����Ad=�D� �~�W���?������~����ң�O��|���?��n_�y١�~��a�^�A��5H��ѡ��p�6����x=t�꧗/�</�c~�B�˳+��W���X��Zϲ������T]�]Q=p��o�!D�?�bZ܀�߃�64�gWP�����`��,�]�@�߃��F�.Ϯ�8P�wa��˳+����W�}�.Ϯ�x_}��� ��gY��~:<������8?������6O��<��z�}�<� �P�gY���6�BuyvE���:� ���\=��z�@�߆m�.Ϯ�x_}�߆M�c��e������'W�۰�7���/���+�� ��?�?������l6��!�Q�gQ��~ڟRuyvE��������<��z�@�߆�!T�gWT�}�a��,�]�@��S��N��r�*RU�B��N��S��\�J�V�"��:U��N��r�*RU�B��N��S��X�JPթ��8�SEdթ��8�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SE��T�z ֩"��ThZ֩Ru*"=��T��:��u�HU� -U�:U��N��r�*Q[���.��T��:��u�HU� -U�:U��N��r�*Q[���.��T��:��u�HU� -U�:U��N��r�*P�u*P�@�SE��T�z ש"Uu*T=�TZu*4-��T���T�v�\��TթP�@�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SEhթд8�SE��T�z ש�թH��N��S��\��TթP�@�SE��T�z ש�թH��N��S��\��TթP�@�SE��T�z ש�թH��N��S��\��TթP�@�SE��T�z ש�թH��N�U�B��N��S!�\��TթP�@�S%j�S��r�*RU�B��N��S��\��TթP�@�S�Nj�u�HU� -U�:U��N��r�*RU�B��N���NEj�u�HU� -U�:U��N��r�*RU�B��N���S��qX��ȪS!iq\��Lթ�@�S�@Q� -_�R��yP���_�/yf��:U=�ԩNU�z��}9�߽۟��������zw|���o�|����o/�����ӷ������T���w+U���j� -~�Ru�+W�^��T��\�J�V�"��JU��R��b�*B�R���q�*2U�B��R���REjȕ�HU� +���D�>ZA����Dm����G+���VP�@�h%B�4-�?Z�L}����G+��>Z!��V"U�����J��T=�?Z�T}����G+��>Z!��V"U�����J��T=�?Z�T}����G+��>Z!��V"U�����J��T=�?Z�T}����G+��>Z!�ďV"�>ZA�������G+�z ���hU�V�}�Bj��D�>ZA����H�G+�z ���hU�V��� +�} ���hU�V"U�����J��T=�?ZI��� +�] ���hU�V"U�����J��T=?ZIP}�B���G+Y� iq��Jd�D=�?Z� +��� +��壕����_ǯ�he������#�G+�I���w�~�;/�����^o7����_^o_�z��O?}~������#����/�4h;m��Wp����J�0Zhߙ����I7���w&�|!�I�z gR��;�P�@�ΤDmߙDj�ߙ���$T=��3)R�5����D�jkUĭ�����[Y[HZoMD��&�@ޚ�TmM�ꁼ5��mk��.��&"U[�z oMD��&P�@ޚ�TmM�ꁼ5��mk��.��&"U[�z oMD��&P�@ޚ�TmM�ꁼ5��mk��.��&"U[�z oMD��&P�@ܚ��ښ@��pk"!�5A����DdjkQ䭉H����[��� T=��&�mM����D�jkU䭉H����[��� T=��&�mM����D�jkU䭉H����[��� T=��&�z j�����HT=�"#U��z DFhD�iq|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��.�"#U��z DFhD�iq|�:�D�� 2Q�A$�] DF�"Q�@>��TD��|�:�D�� 2Q�A$�] DF�"Q�@>��TD��|�:�D�� 2Q�A$�] DF�"Q�@>��TD��|�:�D�� 2Q�A$�] DFhD�iq|�:�D�� 2Ru���Ad���HR�@>��TD��|�:�D�� 2Ru���Ad�^"A�� 2Ru���Ad�� U��H�A$�����"I�� 2Ru���Ad�� U��H�A$��� ��H2="#�"��8>��LD"�|9�͋"�u,�7/��ax9~��;��_�y��G���ry��ȿ��_��w�����OO��ݻ�K�>?}z���z�}���e���E��i{�W��� =F����i�|��Z�������^���t��?��rG]�]Q=�z��������,�]�@������˳+���m8���GWL���{�߆��� +������B��e���{p�و������.lRuyvE���z����������O����YV�������<��z�@=��CuyvE���:� �S�.Ϯ�x_=�o�!T�YV���:� ��P]�]Q=p��o�.�1WϮ�8P�a��˳+��W�a���gY���6�����6l���a�����hq�<����zv���6��t~�~��YT�������T]�]Q=p�.�a�.Ϭ�8P��p����e��m؇j=�j8P����S��\��TթP�@�SE��T�z ש�թH��N��S��\��TթP�@�SE��T�z ֩Tu*2=�TYu*$-��T��:��u�HU� +U�:U��:�] ש"Uu*T=��T��:��u�HU� +U�:U��:�] ש"Uu*T=��T��:��u�HU� +U�:U��:�] ש"Uu*T=��T��:��u��:��u��T��H��:Ud�N��r�*RU�B��N��S��\�J�V�"��:U��N��r�*RU�B��N��S��\�J�V�"��:U��N��r�*RU�B��N��S��\� +�k� +�>��T��:��u�HU� +U�:U�V� +M��:Ub�:�] ש"Uu*T=��T��:��u�HU� +U�:U��:�] ש"Uu*T=��T��:��u�HU� +U�:U��:�] ש"Uu*T=��T��:��u�HU� +U�:U��:�] ש"Uu*T=�TZu*4-��T��:��u�Dmu*R�@�SE��T�z ש"Uu*T=��T��:��u�Dmu*R�@�SE��T�z ש"Uu*T=��T��:��u�Dmu*R�@�SE��T�z ש"Uu*T=��T��:��u�Dmu*R�@�SEhթд8�SE��T�z ש"Uu*T=��T���T�v�\��TթP�@�SE��T�z ש"Uu*T=��T�z�S��r�*RU�B��N��S��\��TթP�@�S%j�S��r�*RU�B��N��S��\��TթP�@�S%��Tdz֩"��THZש"Su*D=��T�PT��ױԩn^ԩƯ����_���NU�,u�Sթyn_����w�?��������_����/�>~���˼������i�϶�:U�k��J����Z��_@�T�� +ƕ��/*U�z W��U�H��R��T��X��ЪT�iq\��LU��@�T%j�T��r�*RU�B��R��T��\��TU�P�@�T%j�T��r�*RU�B��R��T��\��TU�P�@�T%j�T��r�*RU�B��R��T��\��TU�P�@�T%j�T��R�*2�J��aX����T�hq\��LU��@�T�Rjȕ�HU� U�JU��R��r�*RU�B��R���REjȕ�HU� U�JU��R��r�*RU�B��R���REjȕ�HU� -U�JU��R��r�*RU�B��R���REjH���\*U(ކa�*�R���q�*2U�B��R��J�} W�"U�*T=�+U��J�ȕ�HU� +U�JU��R��r�*RU�B��R���T��qX��ȪT!iq\��LU��@�TE�*U�z W��U�H��R��T��\��TU�P�@�TE�*U�z W��U�H��R��T��\��TU�P�@�TE�*U�z W��U�H��R��T��\��TU�P�@�TEhU�д8�T%�*UDzW�"S�*D=�+U��J�ȕ�HU� U�JU��J�] W�"U�*T=�+U��J�ȕ�HU� U�JU��J�] W�"U�*T=�+U��J�ȕ�HU� -U�JU��RE��a�*"�R���q�*2U�B��R��T��\�J�V�"��JU��R��r�*RU�B��R��T��\�J�V�"��JU��R��r�*RU�B��R��T��\�J�V�"��JU��R��r�*RU�B��R�U�B��R���T�q\��LU��@�TE�*U�z W�"U�*T=�+U��*U�v�\��TU�P�@�TE�*U�z W�"U�*T=�+U��*U�v�\��TU�P�@�TE�*U�z W�"U�*T=�+U�z�T��r�*RU�B��R��T��X��ЪT�iq\�J�V�"��JU��R��r�*RU�B��R��T��\�J�V�"��JU��R��r�*RU�B��R��T��\�J�V�"��JU��R��r�*RU�B��R��T��\�J�V�"��JU��R��b�*B�R���q�*2U�B��R���REjȕ�HU� -U�JU��R��r�*RU�B��R���REjȕ�HU� -U�JU��R��r�*RU�B��R���REjȕ�HU� -U�JU��R��r�*RU�B��R���REj����J�Ǖ��T� -Q�JU��R��r�*Q[���.�+U��J�ȕ�HU� -U�JU��R��r�*P��*P�@�TE�*U�z W�"U�*T=�+U��J�ȕ�Dm�*R�@�TE�*U�z W�"U�*T=�+U��J����U��L��JUDV� -I��JUd�R��r�j���*U�:�J��ˀJ��u��o�:>���U��R�z�B��x��n^}��y����z{|����c����|Y�Ek]�{���f���n��x�z�����������˿������o��������|y�r��������ݴٌ�ժ���/X������*/_��V�H��K���C$-�T"��T��8�Q��:QA���@%!u�B���uJD�q -���)Y�)HZݥD�r���m�$^ݤ�gax��u�����9JD�5 -���(Y�(HZ�$��P��8�B��:BA���%"�I�������$-�OR�'Dz^�Dd� iqxv�uu�����ID�� ��'��M�����$"��I��S���K$-��L"q93A�6�LP7&$z^�Dd� iqx^�u]����mID�i ���% ��"=�J"��J��8<)�Ⱥ(A���$"�I��c���- ���$Y�$HZ��Dd]� iqxC�uB����IB�~�H��둈��$-�NG"q�A�6�F"��FP�8<IH�qx1�u0����HDֵ���"Y�"HZ�$��D��8���:A���D$"�BI�������$-�CR�!Dz^�Dd� iqx�u����MHD�I��! �{"=��A"q9A�6OA"�.AP�8���:A���$!uB���HD����Y�HZ�~Dd�~ iqx�����.�>"��>��8<��Ⱥ�@����#"��I��c��ԭ���Y�HZ�yDd]y iqx��u�сG"�}�F���w�w��X�(Z�u�� -��|��y ������U3���iz�DG��r�q����^�8>��������C����|}���C��?>��\p����?}��V�_���Ӈ�?�~��u����/���a�;���f����n���;/d<#ƪ�X�jF�.g�2�f�X�@��Ԛc�qF,SkF�U��HՌ�] Έej͈��8#��5#ƪ�X��H3bZ3bhz͈e�2#Ƥ��Xf��3b�Z3b�z ΈE�f�P�qF,SkF�U��L�1V=g�2Uw��z _f&j;�$����H�u&������MT=�O4#U7��z _i&j;�$��C�Hե&�ȷ���cMT=�5#��5Ѵ8��LH�l�q|����D��n3Ru�����f��vU���Dm盤v�|����D���3Ruĉ��g��U�K�Dm���v�|����D���3RuЉ��Ig��U��@��u���ag��U���H�q'���Z��hZ_x&f;�$��#�HՕ'��w���COT=�O=#U���z _{&j;�$���H��'��7����OT=��>#Uw��z _~&j;�$����H��'������PT=�O@#U7��z _�&j;%��C�H�%(����ZǠhZ��F��A�@�M�vJj�G����PT=��B#U���z ��F�nCQ�@�M�vJj����QT=�oD#UG��z ��F��DQ�@�M�v*Jj�Ǣ��kQT=��E#U��z ��F�nFQ�@�M�v6Jj���Z��hZߎF��G�@>�Tݏ��|A��턔�.��H#UW��z ߑF�IQ�@>%�Tݒ��|M��sRP�@>(�T]���|S�:*E���4RuW���ei���RR�@>.�T]���|_�:0E���4Ruc���i��̔L��Cӈ�KS$-�oM#SǦ�z �����{S|����ˀ�����u3b�isx���zd99}��������}y�\Ǧo>?ݹ:=<^�N����ο���7�����t�y����H�E��ț_�� ����HT=�"#U��z D&j;�$���H�A$������HT=�"#U��z D&�"��8<���:�D��� 22u���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad��A$��� ��H"=�"#S��z DF�"Q�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|�׃HP�@>��TD��|�:�D�� 2B� M����l��v�|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2B� M�����A$�����"I�� 2Ru���Ad�� U��H�A$�����"I�� 2Ru���Ad�� U��H�A$�����"I�� 2Ru���Ad�� U��H�A$�����"I�� 2B� M�����A$������HT=�"�D���Ad�� U��H�A$������HT=�"�z j�����HT=�"#U��z DF�"Q�@>�L�vIj�����HT=�"#U��z DF�"Q�@<�LPD��qx�u����Add� Q���m^t��c9��y���A��u�� ��v�<�� �Y"���_^�o��?�p��<]���/��K�<������;�������iz���<���ӗ�?�=���^�������3�O��?x�R��_>=�}�~���W��|�\��?�-�����{�r��_��7osڮ~'+��j�.7�Ƨ./_�����K���U�S�Hթ�ȧ.��ST=�O]������K���U�S�Hթ���.Z�.hZ��$�N]��8>u�L�� �|��:uA���%Ruꂪ�K��SR�@>u�T����|��:uA���%Ruꂪ�K��SR�@>u�T����|��:uA���%Ruꂪ�K�^O]@���%Ruꂪ�K���U�S��S4-�O]�����K���U�S�Hթ�ȧ.��ST=�O]������K���U�S�Hթ�ȧ.��ST=�O]������K���U�S�Hթ�ȧ.��ST=�O]������K���U�S��S4-�O]"S�.�z ��$j;u!��S�Hթ�ȧ.��ST=�O]"U�.�z ��$j;u!��S�Hթ�ȧ.��ST=�O]"U�.�z ��$j;u!��S�Hթ�ȧ.��ST=�O]"U�.�z ��$j;u!��S��S4-�O]"S�.�z ��D�N]P�@>uI�v�Bjȧ.��ST=�O]"U�.�z ��D�N]P�@>u ���} ��D�N]P�@>u�T����|��:uA���%Q۩�] ��D�N]P�@>u�T����|��:uA���%Au�B���KD֩�ǧ.��SD=�O]�Z"8u�ױ��ܼ������u����˅�ဧ.�H��lk����Oo�����o��O4�����u��_�������O�u�r9mY���G�|�t�?�ݰo_�~������~���_?�����緧/_u���__h���s}������4M�������_����g8w���ߵ������?^�ߵ�|�T=����]�ȿk�T��U�ߵ��w-������H��ZP�@�]K��w-�z ��%R��T=�ג��w-�v����H��ZP�@�]K��w-�z ��%R��T=ג��]���k���]�ǿk�L��Q�ߵ��E�k�ױ����e��ZƯ�7��i�/�k9~��˽g����?0�埃��w�T������-�_~|�����������.�㸦ޙ=���~��k���xUz��e�x�����'���y�ֳ�v��0��t�����i�S��˳+���mئ��������6\�z��e�������˳+���t8������<=^�z"uyvE����a;N�Zϲ���m�^]1-n@���q�˳+���=8���������\fW��e���p9�������6lSuyvE���:� ���\=��z�}�4��ճ�v�u?�ϩ�<��z�@=M�������<�OᏹzvE�������1T�YV���:� ���\=��z�@�߆}���]Q=p��o�.U�gWT����!����(�7 ��`���gWP��{�I�����yzxL��.Ϯ�x_}�N�s���e�����!U�gWT���О�s���u~���zvE����n3� �Lճ���u~��P]�]Q=p��o��!T�gWT��۰M�������m�d?��,�]�@�O���P]�]Q=p����9U�gWT�������iq���v�>d?p�,�]�@�߃S�.Ϯ�8P���������.���<��z�}u�]��Zϲ���m�BuyvE���:� ��N=��z�@�߆M�.Ϯ�x_=,��Gj=�j8P������gWT��i�˳+���tL�*\Ϯ�x_=�o�1��Sϲ���m8�����u~¿H,���7 ��`���gWP��^sv�Zϲ���=؆?������.lRuyvE���z��ᏹzvE�����fz<�׳�v�u?RuyvE���z���ճ+���m8�?�������m8�j=�j8P�a���gWT��۰�ճ+���mئ�������eW+R�YV���:� �yyrE� x�)�[������yڟ�p�� -���66������ѳ���u?�O��<��z�@�߅�>T�gWT��������o;� �P�gY�j}�o���Q�@��H�7��� �oF����}�0�] �p���Q�@��H�7��� �oF���T� L���7Gd}�0��� ��aD=��A8R� ¨z �p��o&��o�T}�0��� ��aT=��A8R5����j��YUR�@�U�Tͪ��<���UE�yV5R5����j��YUR�@�U�Tͪ��<���UE�qV5BkVM��YՄԬ*�dz���YUD=�gU#U���z ϪF�fUQ�@�UM�6�Jjȳ���YUT=�gU#U���z ϪF�fUQ�@�UM�6�Jjȳ���YUT=�gU#U���z ϪF�fUQ�@�U ��*�} ϪF�fUQ�@�U�Tͪ��8��5�����jb�YUB�@�U�Tͪ��<���UE�yV5R5����j��YUR�@�U�Tͪ��<���UE�yV5R5����j��YUR�@�U�Tͪ��<���UE�yV5R5����j��YUR�@�U�Tͪ��8��5�����jdjVQ�Y�Dm���v�<���UE�yV5R5����j�jVU�Y�Dm���v�<���UE�yV5R5����j�jVU�Y�Dm���v�<���UE�yV5R5����j�jVU�Y�Dm���v�8��5�����jdjVQ�Y�Hլ*�ȳ����H�y�,R5P���@Y�j�U䁲H�@��e�z(�䁲H�@��e���2T=��"Ue�z �%j(#�䁲H�@��e���2T=��"Ue�z �%����8(R]����p�k?m��FVݾ��f3\�������rW������u�'�ݮm[���7��~���s}��??������_���ק��W���z�y���ӽ��E���: �����koݦ�W�^� -h6iq�kJH՚��8.5d�4�q�hJH���8�3%b��� �.S��D��q�) [� H��SB��D��q�)!�`"�⸿���/iq\^ -��]�㸹��*.iq\[JH����8�,%�*KDZ������8n+%��JDZW�RM%"-�{J ����%��l% =�J ������zR�U;���0�&%��I$Z���k/iLvq�JJH����8�$%�IDZ��Ru$"-��HٺH@z7�RE$"-�kH �����T�H��R@�������T��H���QB�yD��q�(!U;"��t��ha�8J�*�w�u�TۈD��QB�jD��q�( [�H��QB�dD��q�(!�0"��_���iq\. -��-��Y��*iq\+JH����8�%�*EDZ������8n%��DDZW�RM""-{D�X5"oðDx��ga� J@�H�8�%��CDZw�R�!"-��C�zC@z��R�!"-�+C ����}��T]�H��P@����M��TQ�H��PB�%D��qG(!U"�� �N^�Ac���vPB�D��q5(!�"����U"�6�KA�:A z7�R� "-��@ �6��]��T�H��"P@���-��T �H�� -PB�D��q�'!U�!��������q�'!U�!�����j�iq��IHU~��8.�d����q��IH�}��8��$b5}� �O��C��q�' [�H��OB��C��q�'!��!��ۓ���iq\� �����Փ�*�iq\�IH5z��8��$��<DZ�y�uy��8n�$��<DZ�xR-"-�;< � -����l� =�;�X�oø���j�hq��IH�v��8.�d����q��IHv��8��$��:DZwuRU"-��:�䵧3&�8n�$�J:DZWtR "-��9 �z��圀l� =��9 �b�ǵ��T+�H��NNB��C��a!'���°�3l�dez �Ź���_�M��OW�8��tܜ��S�,]�ݰ�������n������R�y�������7��y��ϗ����/o6w���7g������k��:S�_Mݩ��b���/_��RE��[��Ա*��突z�W���H��*��G����UT=��V#U���z ��&j�]%����H��*�����VT=�oX#UG��z ��&j�c%��K�H�)+��Ǭ��kVT=��Y#U��z ��&�nZ��8�j��:kE����52uي��mk��U���Dm���v�|��:qE���5Ru努�k���U�S�Dm���v�|��:wE���5Ru���k���U��Dmw��v�|��:}E���5Ru�����k��,��'� �X"=��`#Sg��z �F�.aQ�@���Tâ�|�����.�/b#U'��z �F��bQ�@���TƢ�|���6��.��c#U籨z �F�.dQ�@���Tɢ�|&��;YP�@���T�ʢ�|,���E��^6B�`M����l7��v�|5�:�E��p6Ru9����l��xU���Dm���v�|A�:�E���6RuE���m��U�S�Dm���v�|M�:�E���6RuQ���Mm��U��Dmw��v�|Y�:�E��6B�M�����ԁ-��'���nlI���6Ruf���m���U�[�Hձ-��綉��mI���6Rur����m���U��H��-�ȧ���noI���6Ru~���n��U��H�.��g����pI��7B�M��c���5.�������\T=�Or�����Un��,U���H�e.�ȷ����\T=��s�z�j����]T=��t#UW��z ��F�uQ�@>�M�v�Kj���s]T=�v#U��z ��F��vQ�@<�MP���qx�K����.���ݽyt�;~)��OO�oxyG�a;=��x|���N��3z����nw����7������|}��y�O>�i�����n����~=���}����� ��<m��n^̝?�������ty��ע�n1ӽ}�����븳s�<�j8P���L��`��[2��F�U�/���&V=�K R�e�v��u�Z�'���7 -d��lZ~�@fַ -0�����/@�į���nV=�] S��X�@���L�o`��;"U_2�j�_3���=�z ~�@��W ���e�Z�6���� D��p��.�r S�;X�@�ցL��`��2��y�U���T}���] |�@f~/v�xFŮ\�],Z�2��]�z ���H��ؕ�U�b��ؕ�U�b��ؕ�U�b����*v��b�+S��Ūb�+S��Ūb�+S��Ūb�+RU�B��bW�V��U�bW�V��U�bW�V��U�bW�V�M��bWF.�.&-�]�Y�.F=�]�Z�.V=�]��b�] �2��]�z �2��]�z �2��]�z �"U�.T�@,vej�X�@,vej�X�@,vej�X�@,vE��]�v�X���*v��X���*v��T��Х�Ŧ�Q�+"���a�+3��Ũb�+S��Ūb�+S��Ūb�+RU�B��bW�V��U�bW�V��U�bW�V��U�bW��j�ŮL�b��ŮL�b��ŮL�b��ŮDm�.R�@,vej�X�@,vej�X�@*ve�R�b����*v!�b�+S��Ūb�+S��Ūb�+S��Ūb�+RU�B��bW�V��U�bW�V��U�bW�V��U�bW��j�ŮL�b��ŮL�b��ŮL�b��ŮHU��.�]�Z�.V=��]��ش8,vef��@,vE��]�v�X���*v��X���*v��X���*v��X�T�P��ؕ�U�b��ؕ�U�b��ؕ�U�b����*v��b�+S��Ūb�+S��Ūb�+S��Ūb�+RU�B��bW�.�.6-�]�Y�.F=�]�Z�.V=�]��b�] �2��]�z �2��]�z �2��]�z ���H��ؕ�U�b��ؕ�U�b��ؕ�U�b����*v��b�+S��Ūb�+S��Ūb�+S��ŪR�+B���Q���G��.~�C��c�َ�]�Rn���R����2���V��k��R��N�:��oo/m�E�����7����;/`��ä����������8=t�ꦗ/�4�/� -/_�uyvE���z�Η��˳+��W�����,�]�@���˱B�.Ϯ�8P���?�H]�]Q=p��o�.U�gWT����a��ˣlz܀����64�gWP��{�I�����yzxL��.Ϯ�x_}�N��_���e�����!U�gWT��iw�W�������6���<��z��2�f~��gQ���6�O��<��z�@�߆�C�.Ϯ�8P�a��˳+��W��۰�~��YV�����N����<��z�@=M�s�.Ϯ�8P��)��������}�~��YF���:��T]�]Q=p����q�˳+���]8�CuyvE����~~��Zϲ���m�BuyvE���:� ��N=��z�@���H���Ȼ��v7H�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F����ǻ��� D=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����Fd.�(ކ��F���ǻ��� D=�w7���jȻ��� T=�w7"U��z �nD�v7P�@��HԶ�AjȻ��� T=�w7"U��z �nD�v7P�@��HԶ�AjȻ��� T=�w7"U��z �nD�v7P�@��HP�n��q����������FdjwQ�ݍH���Ȼ��v7H�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F�jwU�ݍ�� 4-w7R�Dz�nD�v7�@�݈T�n�ꁼ����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#P����������@�yw#R������F����ǻ��v7�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F����ǻ��� D=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����F����ǻ��� D=�w7"U��z �n$j�� ��ݍH���Ȼ��� T=�w7"U��z �n�uw�>�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁸ����� ��pwc�#��n�˨ݍ��A��r����3J��8-g���Q�,��������w�W�����w��w߾�?�q9(�|�q����ۍ��][��Z[+��Ŏ[�/_��A���jE��܊�T��Q�@nEG�ZѨz �����I���jE��܊�T��Q�@lEGh��Ѵ8nE'fkE�r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���ՊF���jE#�܊N�֊&��Vt����r+:RՊF���jE��܊N�֊&��Vt����r+:RՊF���jE��܊N�֊&��Vt����r+:RՊF���jE��܊N�֊&��Vtd.�hoð�ՊF���jE#�܊�k+�>�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����b+:AՊ&���ՊF���jE#�܊�T��Q�@nE'jkE��r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���jE��؊��jE�iq؊NH����8nEG�Zшz ��#U�hT=�[ё�V4�ȭ�Dm�hR�@nEG�ZѨz ��#U�hT=�[ё�V4�ȭ�Dm�hR�@nEG�ZѨz ��#U�hT=�[ё�V4�ȭ�@���A���jE��܊�T��Q�@lEGh��Ѵ8nE'fkE�r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���jE��܊�T��Q�@nE'jkE��r+:RՊF���ՊF���jE#�܊N�֊&��Vt����r+:RՊF���jE��܊N�֊&��Vt����r+:RՊF���jE��܊N�֊&��Vt����r+:RՊF���jE��܊N�֊&��Vt�V+M��Vtd���r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF����V4�} ��#U�hT=�[ё�V4�ȭ�HU+U�Vt��V4�] ��#U�hT=�[ё�V4�ȭ�HU+U�Vt��M��a+k�A+_F��o^���/�kE�=�m�#���'�N��:�����~�a�w��ݷO/���O��������r���W�_b����k���W�� ���~'����H���NH}�7������*�iq\k_'���1��q�=!Ui'��О��iq�fOH�ى�8��dk��q�cOH�؉�8.�'�:�DZ6�� -�ކq}=�[{D���zB��N��qq=!�['�⸵��*�iq\Y��X�㸯����iq\VOHuՉ�8n�'���DZ����ԁ�8�'�*�DZ�R�t"-��� �r:����l�t =�{� �Z:����D�N:��a�HO@�I�8��dk��q�EOHUщ�8.�'�z�DZ��R%t"-�+���@z��R�s"-��� ��9����T�H���y@��9�ǝ�T�H���yB�oN��q�<!U6'��j��i��Q�<��9q7QX2O��w� �T��D��z�:ym���.��� �j9����T��H��VyB�TN��q�< [�H��>yB�NN��q�<!�%'��I��*�iq\#��"��C����iq\ OH�lj�8n�'���DZV�Q�q�-{�W�q�nø4��ꌓhq�OHƉ�8��dk��q�OHUʼn�8.�'�z�DZ��R%q"-�+���@z��R�p"-��� �n8�����T1�H��Zx@�V8�ǝ��T%�H��BxB�N��a<�N�mV�OMp�,�{� �8��%��T�H��xB��N��q�; [�H���wB��M��q�;!��&�����*}iq\�������{iq\�NHu���8nz'���DZ��k�{Lvq��NHU���8.x'���DZ�����ކq�;�[�D��^wB��M��q�;!��&��ѝ�*tiq\������˝��riq\�NH����8nq'�J�DZW��5���8�o'���DZ��R�m"-��� ��6�ǵ�l�m =�;� ��6����D��6��a��N@��I�8�jdkj�q��NHմ��8.i'�:�DZ7�Rm"-������@zw�R�l"-��� �^6�ǭ�T)�H��Jv@�F6��}�T�H��2vB��M��q;!U�&�⸆��� ��a;��M�m�P�k-��� ��5����l�k =�{� ��5�ǥ�T�H���uB�pM��q�z�����d�]�T՚H��uB�gM��q�:!U�&��b��a ��q�:!U�&��\���ViqܬNH���8�U�Z��Zv����RM������쇅���ky��z�S����=���O3.>��w�T������S��?���/��������I_=���/O�_����_����O�_�^v��?��n��e���8��y-s��om��_�����@�U�FW��҅�r�+R��B��ו���Ej�ծHU�U�vW��ޅ�r�+R��B��㕨��Ej�5�HU�UĦW�V�M��Wd�텨r�+Q[��.�+_����ȭ�HU�U��W�����r�+Q[���.��_����� �HUU�X����r,Q[��.��`��.��m�HUU�BX����r',Q[)��.�ja����P� �fXV5E��rXd���r?,P�1P�@��E�:b�z ��"U51T=��b�����]�Dme1R�@��E��b�z 7�"U�1T=�Kc����Ƚ�Dm�1R�@��E��c�z ��"U�1T=�d�����U��L��YDV�I��&Yd�J��r�,R�&C��O���PFjȕ�HU�U�VY��V��r�,R�,C��[���\Fj���HU�U�Y��b��r�,R�2C��g���hFj�U�HU�U�Y��n��b�,B�q���a�,!U:#��v��!��<�TU�P�@.�E��g�z ����H����ꠡ��B�T��P�@.�E��h�z w����H����꣡��H�TU�P�@.�E�Zi�z ���ZL��jZ�����r;-RUOC�����PC�⸣����Fh�5�HUO U�Z�����rY-R�VC�������Fjȕ�HUg U��Z�����rq-R�\C�������Fj���HU U�[���r�-R�bC��ǖ���Fj�U�HU� U�6[�V� M��B[d�ц�r�-Q[���.�km��^��ͶHU� U�r[��݆�r�-Q[���.�+n�����-�HU� U�[��醪r�-Q[ٍ�.��n����ȍ�HU� U��[�����r�-Q[��.�oZ�74-��o������HUU�\���] ��"U=8T=��p��*��e�HUU�>\�^q���\��Tu�P�@n�E�jq�z �"U�8T=��q���q�v�\��T��P�@n�E�*r�z ��"U-9T={r ����U�q�+���˨�����n�ö����|��.�������G���z��6U����Oo~��Ë��r�q�p�ƾ�#��;��rt�?�^��WU�ܾ��ߌy8M����˸c.Ϯ�8P���!U�gWT�������j=�j8P�w��Og#uyvE���:� �T]�]Q=p��o��(R�gWT�������Og��e����|N�����i�?�BuyvE���z�Η:�˳+��W����,�]�@�߆�QQ�.Ϯ�8P���C-R�gWT��۰K�������m�2�<ʦ� ��=؆?p�����lRuyvE���Z�4���rT=���<Qۗ����חG���U�o0�T}�9��_b��sT=���<P�_dj�_e��.sT=���<R�u�z �y���Q�@�N�Dm_jNj�_k��^sT=���<R���z ~�y�ַ��iq���پ���.���<R��z �y��k�Q�@���H�7����]���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N��>���8��}D=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>Nd.�8(ކ�>N�>���8��}D=��q���j��8��}T=��q"U�8�z ��D��qP�@��IԶ�Cj��8��}T=��q"U�8�z ��D��qP�@��IԶ�Cj��8��}T=��q"U�8�z ��D��qP�@��IP���q���������>NdjQ�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}��}4-�qR�8Dz��D��q�@�ljT��ꁼ����A�y'Q�>�] ��D��qP�@�ljT��ꁼ����A�y'Q�>�] ��D��qP�@�ljT��ꁼ����A�y'P��8��������A�y'R�����>N��>���8���q�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N��>���8��}D=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>N��>���8��}D=��q"U�8�z ��$j��!��}�H�>���8��}T=��q"U�8�z ���u�>��q"U�8�z ��D��qP�@�ljT��ꁼ���m��.��q"U�8�z ��D��qP�@�ljT��ꁸ�����!��p�V_�}|��s�:hg�Rn�q�F��8�ô;p����j�/>}�����x��?������N���lv�����v���O����9���ָ�W���ͫ7._�h\�r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�ոD��q�j\"�ܸL�ָ$���e��q��r�2RոD��q�j\��ܸL�ָ$���e��q��r�2RոD��q�j\��ܸL�ָ$���e��q��r�2RոD��q�j\��ܸL�ָ$���ed.�Koðq�ոD��q�j\"�ܸ�k��>�����%�ȍ�HU�U��e��q��r�2Q[��.�����%�ȍ�HU�U��e��q��r�2Q[��.�����%�ȍ�HU�U��e��q��b�2Aո$��q�ոD��q�j\"�ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ظ��j\�iqظLH5.��8n\F���z 7.#U�KT=�����%�ȍ�Dm�KR�@n\F���z 7.#U�KT=�����%�ȍ�Dm�KR�@n\F���z 7.#U�KT=�����%�ȍ�@�6.A��q�j\��ܸ�T5.Q�@l\Fh5.Ѵ8n\&fk\�r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�ոD��q�j\"�ܸL�ָ$���e��q��r�2RոD��q�j\��ܸL�ָ$���e��q��r�2RոD��q�j\��ܸL�ָ$���e��q��r�2RոD��q�j\��ܸL�ָ$���e�V�M���ed�q��r�2RոD��q���qIjȍ�HU�U��e��q��r�2RոD��q���%�} 7.#U�KT=�����%�ȍ�HU�U��e���%�] 7.#U�KT=�����%�ȍ�HU�U��e��qI��a�z�I�_F5.o��и��_ո�?n翗�S�R�\^Ѯ����v�}����7_����G�����������WDϿ��A��p�������3��u��w^����@��L�/pf���3����U�/p�T}�3�] ~�s��8���ΙZ_�̪�8gj}�3��_�����I���3����U�/p���gV=��9S��Y�@��H�8���8gj}�3��_����άz }�s�.slZ� D���qN SkN�U�9�L�9V=�2��X�@��T� ���@�֜���s�Zs�z � dj� ��8'��@��9�L�9V=�2��X�@��Ԛ`�qN R5'�j�s�Zs�z � d�2'����@f֜���s��9T�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@��T� ��@f~�`�6��2p�`��pN 3kN�Q�9�Dms���8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@��T� ���@�֜���s�Zs�z � dj� ��4'�5'���ќ@F.sLZ� df� 0�8'��5'���@�jN��.�2��X�@��Ԛ`�qN SkN�U�9�H՜��] � dj� ��8'��5'���@�֜���s��9T�@��Ԛ`�qN SkN�U�9�]�ش8��Ț@��pN 3kN�Q�9�L�9V=�2��X�@��T� ���@�֜���s�Zs�z � dj� ��8'��@��9�L�9V=�2��X�@��Ԛ`�qN Qۜ��} � dj� ��8'��5'��Ҝ@�.slZ� D���qN SkN�U�9�L�9V=�2��X�@��T� ���@�֜���s�Zs�z � dj� ��8'��@��9�L�9V=�2��X�@��Ԛ`�qN R5'�j�s�Zs�z � d�2'����@f֜���s��9T�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@��T� ��Ҝ@�.slZ� df� 0�8'��5'���@�jN��.�2��X�@��Ԛ`�qN SkN�U�9�Dms���8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@��К@��hN���ќ������1�k4'�/������r�Is���������������_��y�z�R�����p�p����i��N�E5�������7�_�h���r�=R�xG����j����x�T5�Q�@n���jȍ�HU�U��{���r�=R�xG���Njȍ�HU�U��{���b�=B���q�=1[��.��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{���r�=Q[��.��;������;�Ǎ��T�Q��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 5�#si��x�����;�Ǎ��T�Q��{�^����x�T5�Q�@n�G��z 7�#U�wT=����v��x�T5�Q�@n�G��z 7�#U�wT=����v��x�T5�Q�@n�G��z 7�#U�wT=� ��;�������;�Ǎ��T�Q��{���r�=Q[��.��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{�V�M���{B��N��q�=2�xG����j����x�T5�Q�@n�'jk���r�=R�xG����j����x�T5�Q�@n�'jk���r�=R�xG����j����x�T5�Q�@n���jȍ�HU�U��{���b�=B���q�=1[��.��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{���r�=Q[��.��;������;�Ǎ��T�Q��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 6�#��hZ7�#S�wD=��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�@�6�A����j����x�T5�Q�@n�G��z 7��5�I����j����x�T5�Q�@n�G��z 6�T�w2����G�+A��ߡ6������g�À7���ݤ!J3��[�'Nf�}��M�$���R��q;��um�x���������,��378~|���~��yG������}ww��~������*��/.���y���ZG_�������_]?Z�\=���������O��e������˳#��LV��zz}�7L�2Yq�/��ɑ�(�w@n_��+�2Yq������!��LV��}��%�e��>&_�/����V�}��g�GY��r���Ir?�d��czÐ�� ��x�C�s�Ȏ�CfăȊ� Cf��Ȋ��Cf��Ȋ����e��\�x�Ð� ��x�ÐY� ��x�Ð�� ��x�C�s�Ȏ�Cf��Ȋ�Cf��ȊÝ#����x�C�s�Ď�Cf��Ȋ�yCf��Ȋ�mCf��Ȋ�aA�] ;�W9�Q"+�'9�E"+��8�9"+��89�8��8^�0d�8��8��0dV8��8��0d&8��8�������x}Ð� ��pzÈcy���0��0`f7H�8�������xqÐ� ��xnÐY� ��xkÐ�� ��xhC�sgȎ� Cfd�Ȋ� Cfa�Ȋ�} Cf^�Ȋ�q A�m ;��5�a "+�g5�U "+�75�I "+�59�4��8Z�0�>�A�UNim,iw�;̌��#��ˆ�1���!3�Ad��|�!��Ad��v�!3�Ad��p� �n�ǫ��h�Ǔ��b��{��\��c��[@v/e2CDV�d2+DVod2DVd1��V�co�c�w���2�ǻ��,�ǣ���@v/b2�DV�a2kDVoa2SDVar�`��q��aȌ`Yq<�a�,`Yq�a��_Yq<~!ȹ}d���!3|Ad���!�zAd�������a8x!��]�Wa�va��]�Xq<ua�,]Yq�sa��\Yq<r!ȹqd�� !3pAd��!�nAd��!3mAd�� ��ǫ�̨�Ǔ�̢��{�̜��c��˖�1���!3dAd��!�bAd�ᆅDŽ��a<`!��_b��z�!3^Ad��t�!�\Ad��n�!3[Ad��h� �f�Nj��`��s��Z��[��T��C��;@v�T2#DVOT2DV�S2�DV�SrnS��q�La�SYq8KaıJA�uoR0�$VRr�Q��q�FaȌQYq<Ea�,QYq�Ca��PYq<B!ȹAd���!3@Ad����!�>Ad����!3=Ad���� ���ǫ����Ǔ�����{�����c��[@v.MqMx�3������������@v�K2�DVOK2�DV�J2�DV�J�&/���Nj�̠��s�̚��[�̔��C��;@v�H2#DVOH2DV�G2�DV�G1��V.G����g���8߽�F>Dzqϫ�/����h6by�������|����_�?��o�����_��Q�����������h@b�p�)g��1���??4qA]���ԔqQ�@��*5}\T;��JM%��R�Qg+��%�{�JM1��j�R��E�����Q�E�⸠k���%t 䎮RS�E������tQ�@n�*5U]T;�˺F�m]R�@��*5�]T;�+�JMg��֮RS�E���k���%u ��RS�E������wQ�@n�*5^T;�K�F�-^R�@��*5E^T;�� +U�JU�^+U���\��TU�P�@�TE�*U�z V�"�*UhZW��U���R��T��\��TU�P�@�TE�*U�z W��U�H��R��T��\��TU�P�@�TE�*U�z W��U�H��R��T��\��TU�P�@�TE�*U�z W��U�H��R��T��X��ЪT�iq\��LU��@�T%j�T��r�*RU�B��R��T��\��TU�P�@�T%j�T��r�*RU�B��R��T��\��TU�P�@�T%j�T��r�*RU�B��R��T��\��TU�P�@�T%j�T��b�*B�R���q�*2U�B��R��T��\�J�V�"��JU��R��r�*RU�B��R��T��\� +�k� +�>�+U��J�ȕ�HU� +U�JU��R��r�*Q[���.�+U��J�ȕ�HU� +U�JU��R��b�*AU�"��R�U�B��R��T!�\�7��J���Ru�2�R5~�������FU=���P�?^o��W�}^���_o�����}�?��͗�_��ջ��lv�O�?�����W�_?,�˛��?.�����ǿ����������u�i�K�����E���f��V�\~�z��W<<Vy�*Ʒ*Dz^�Dd� iqx��u�����JD։ +��* ��"=�S"��S��8<M�ȺLA���.%��o��(%��&�<Ë���-�Q"��Q��8�E��:EA���%!u�B���JD� +��'(Y(HZޟDd�� iqx|���=!����$"��I�ó����$-oN"�NN��8<8 �vod��&Y�&HZ��Dd]� iqtg�˙ ��axd���1!����$"��I���$-oK"�NK��8<,IHݕ�qxU�uT����IID�E ���$Y�$HZ�$�nI��8�$��:$A����$"�I�����$-HR�#Dz^�Dd� iqt:�����ax7�u6�����HB�f�H�Ë����$-�E"��E��8���:A���P$!u'B���HD֑��'"Y"HZއDd�� iqx��� !���2$"�0I�ó����$-oB"�NB��8<IH݃�qt ��1��ax +�u ����HD���G �"=/@"�@��8<��Ⱥ�@����#"��I��Ï�lw@vqx��u����GD�����Y�HZ{$�n=��8���:�@����#"��I�����$-�<��;�0����0<����@���c|U��u������kx<��:�/�W��ϧ�q�� :�G���s]u��r���?���?��}r��������������������[�v|�K��O>�����z�a:\>n��ȗS�����w��_���Ug����3b��1T�@��Ԛc�qF,SkF�U��L�1V=g�"U3b�v�8#��5#ƪ�X���3b�Z3b�z ͈Eh͈��q4#��ˌ��3b�Y3b�z Έej͈��8#��C���L�1V=g�2�f�X�@��T�e��|����4��.��3#Uי�z �gF�4Q�@>ьT�h��|����L��.�5#U���z �jF��5Q�@<к�D���b3!u�I����fd�jQ��H��&�ȧ����MT=��7��o���g��U��H�'��g���;NT=�/9��r���1g��U�{�H�A'��'����NT=��:�z� jȇ����NT=�o;#Uǝ�z �wFh�w�iq|ᙘ�ē�.��<#UW��z �yF�=Q�@>��T�z��|홨�ܓ�.�>#U��z �|F��>Q�@>��T�}��|�������.��?#Uן�z �F�@Q�@>�T݀��|�����.�A#U���z ނFh��iq|��E��"4Q�I(�] �F��BQ�@��T���|�� E��:4Q�y(�] �F�.DQ�@��T���|&��E��R4Q۩(�] �F��EQ�@��T���|2��E��j4Q��(�] �Fh]��iq|;�:E��|4Ru?���i��RR�@>"�T]���|G�:$E���4RuK���5i�^�IA���4RuQ���Mi��U��H�])�ȗ���NKI���4Ru]���}i���U��HՍ)��W� �3S2=M#�.M��8�5�L�"�|n:�~��M�u,�7/.Nǯ��͈=���ON�����NN���/O˿����s����t����x�:��sr:�6�����ȗ'������D�/�D��*��/_D��|�:�D�� 2Q�A$�] DF�"Q�@>��TD��|�:�D�� 2AuI���AdD�A$������HD=�"#U��z D&j;�$���H�A$������HT=�"#U��z D&j;�$���H�A$������HT=�"#U��z D&j;�$���H�A$������HT="#�"Ѵ8<�LHD�q|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� U��Dm��v�|�:�D�� 2Ru���Ad�� U��@�D���Ad�� U��H�A$���Z�hZD&f;�$���H�A$������HT=�"#U��z D&j;�$���H�A$������HT=�"#U��z D&j;�$���H�A$������HT=�"#U��z D&j;�$���H�A$���Z�hZDF�"�@>�L�vIj�����HT=�"#U��z DF�"Q�@>�L�vIj�����HT=�"#U��z DF�"Q�@>�L�vIj�����HT=�"#U��z DF�"Q�@>�L�vIj��Z�hZDF�"�@>��TD��|��� ��.�"#U��z DF�"Q�@>��TD��|�׃HP�@>��TD��|�:�D�� 2Ru���Ad���HR�@>��TD��|�:�D�� 2Ru���Ad�� �L�ÃȈ��H$-�"#S��z D�o�H|�A���x|D�_ǯ��<m��� "�� r���k������˓���\~�G�?�{���?�_�?;M��_!.Ͻ������_oϯ�W��������?���S���O_���˧���/���z�J7����������ww�Z.�`���}��mN���d�߬v�r�5>uy�B�ԅ�.�O]"U�.�z ��D�N]P�@>u�T����|꒨�ԅ�.�O]"U�.�z ��D�N]P�@<u��:uA����%!u�B���Kd��Q�S�Hթ�ȧ.��ST=�O]������K���U�S�Hթ�ȧ.��ST=�O]������K���U�S�Hթ�ȧ.��ST=�O]�z�jȧ.��ST=�O]"U�.�z ��Dh���iq|꒘�ԅ�.�O]"U�.�z ��D�N]P�@>u�T����|꒨�ԅ�.�O]"U�.�z ��D�N]P�@>u�T����|꒨�ԅ�.�O]"U�.�z ��D�N]P�@>u�T����|꒨�ԅ�.�O]"U�.�z ��Dh���iq|��:uA���%Q۩�] ��D�N]P�@>u�T����|��:uA���%Q۩�] ��D�N]P�@>u�T����|��:uA���%Q۩�] ��D�N]P�@>u�T����|��:uA���%Q۩�] ��Dh���iq|��:uA���%Ruꂪ�K��SR�@>u�T����|��:uA���%Ruꂪ�K�^O]@���%Ruꂪ�K���U�S�Hթ�ȧ.��N]H���%Ruꂪ�K���U�S�Hթ���. �S2=O]����8<��O�����C��c��o@�/�b]N��G�d[�Xo~z�o_��~�4}��m�O?�����^o_�z������?���ۧ��A j}�������o���X��>������?�=}��������/O��ka_���i�//���q�<�~������ڌ���s��j?�o~��?�_��q����HՏsT=��G�~�����<P�?�A���y���9��?�#U?�Q�@�q��q����Dm?�I���y���9��?�#U?�Q�@�q��q����Տs2=��d?��eԏ��A?��/�7��i�/?Ώ���{�a;=|�u�/��T/i����zF�\^�_����������W��߿��5��;������o�����w%�����z�mw�� ;�{!/�z��.p�����˳+���t���D����u~���<��z�}u?� �3�D�gY��~z|<������4Ω�<��z�@=O��3�H]�]Q=�z�N�S�ֳ�v�u~�� +/���7 ��� ������RuyvE����q~.C��Zϲ���]���D����u~���<��z�@�߆M�c��]Q=�z��?�?��YV�������T]�]Q=p����C��zvE���z�Χ��\=��z�}u���1T�YV���:� ���\=��z�@�߆}���]Q=p��o�.U�gWT����!����(�7 ��`���gWP��{�I�����yzxL�gWT��>n��9��Sϲ�����˳+���ohOᏹzvE���:� ��N=��z�]u��߆C��YT���:� �S�.Ϯ�8P�a��˳+���mئ��������6l�sz��.p����c�.Ϯ�8PO����˳+���tJ��?�bZ�}r����=�h8P�����˳+���=8�BuyvE���:��}�.Ϯ�x_�o�x�ֳ�v�u~v�P]�]Q=p��o�6��SϮ�8P�a��˳+��Wˇ��Zϲ���t<�?p����i�<������<�?׳+��W���p�Գ�v�u~��<��z�@�߆�Oˣ+�� ��=؇?p���𧻓��]�ֳ�v�u~�ᏹzvE���:��T]�]Q=p����c�c��]Q=��������YV�������<��z�@=�χ?������6�s�������6B��e���۰�ճ+���m?������6lSuyvE��������,�]�@�߆м<�"ކ ���-���hq�<����zv������t~�~��YT�������T]�]Q=p����q�˳+���m�O��ꁃoD�߆}�ֳ�v���"6R����z �l��;gQ�@���H�w�����ھs��.��s6R����z �l��;gQ�@���H�w���� ��%���;g#��sI��L}�,���9���YT=��s6Q�wΒ��w�F��sU�T}�,���9��D�y�3Q�'�] qF��8Q�@�T q��<���D�y�3Q�'�] qF��8Q�@�T q��8��5ĉ���gBj��H��!���'��C���!NT=��8#UC��z q&j�$��!�H�'��C���!NT=��8#UC��z q&j�$��!�H�'��C���!NT=��8#UC��z q�u��>��8#UC��z qF��8Q�@���D��x�31�'�] qF��8Q�@�T q��<���D�y�3Q�'�] qF��8Q�@�T q��<���D�y�3Q�'�] qF��8Q�@�T q��<���D�y�3Q�'�] qF��8Q�@���D��x�325ĉ��g��!NR�@�T q��<���D�y�3R5ĉ��g��!NR�@�T q��<���D�y�3R5ĉ��g��!NR�@�T q��<���D�y�3R5ĉ��g��!NR�@���D��x�325ĉ��g�j�U�!�Dm�]�v����Z�B�y�+R�܅��rW�j�U��@�.w���rW�j�U��H�r���]���.T=����-w���rW�j�U��H�r���]���.T=��T�]dz.w����.|��u�:���p�k�Rn�8��]m�s�?�w�.O,�]۶���/o���������~z����˿���O���>���v���ۧ{��M����u�{]�M��M�?�6�x�l"��ה��5iq\j +��i��є�*4iqXgJ�j3x�]�T��D��"S@���-��T��H�� +SB��D��q)!U_"�⸼�����qs)!U\"�⸶��j-iq�YJHU���8.,d�+�q�VJH����8�*%��JDZ��R5%"-�KJ�:J@z5�p)(w���D�vq�a�MJ@U�H�8.&���^Ҙ�⸕��*%iq\IJH5���8�#%��HDZ���u���8n"%��HDZאR-$"-�;H � +����l�# =��G ����գ�T�H���QB�vD��a�(�9�°q�xU8"�6��F ����]��TՈH��Q@����-��TɈH��QB�aD��q�(!U/"��\��[��q�(!U,"��V��jiq�)JHU���8.d��q�&JH����8�%��DDZ���jDކa�(��!�¸A��*�hq\JH����8�%��CDZ������8n %�JCDZW�R�!"-��B ����e��l]! =��B ����5��TK�H��PB�"D��qAh�����d����T9�H��jPB�D��a/(�D�m���u�@�8n%� +ADZׁRm "-��@ �*��E��l= =�[@ �����T�H���OB��C��q�' [�H���OB��C��q�'!��!���iq\� �����퓐*�iqX�I�j�x�=�T͇D��O@���� ��T��H��zOB��C��q�'!U�!��������q�'!U�!��ғ�j�iq��IH�y��8.�d����q��IHy��8��$�Z<DZwxR"-�<��;@z�w��;ކqu'��!�⸷����iq\� ����㸱��*�iq\�IH�u��8��$��:DZu��kOgLvq��IH�t��8��$�:DZ�sR�"-��9ٺ9@z7sR�"-�k9 �V�ǝ��T%�H��BN ����ag���8���s}T����&���4q6��9c�Y�8�a��������/���˥���u�����7��y��ϗ?���㇗7���p�����y��{���A;��T�WSw�7������0�TE���V52u����j�^�UA��b5Ru�����j��jU��H��*�ȧ���nWI��z5Ru����k��U��H�+��g����XI���5Ruʊ��1k��U�{�H�A+��'� ��V2=�Z#��Z��8>l�L]�"�|��:nE���5Q�}+�] _�F�N\Q�@>r�T]���|��:tE���5Qۭ+�] _�F��]Q�@>x�T]���|��:zE���5Q��+�] _�F�N_Q�@>~�T]���x��u����� lB��H��+���,�ȇ���KXT=�oa#Uǰ�z ��&j��%���H�I,��G����XT=��b#U���z ��&j��%����H�y,�����YT=�od#UG��z ����N�>�/e#U���z �F��eQ�@����:�E���d61��,�] _�F��fQ�@>��T]�|;�:�E��|6Q��,�] _�F�NhQ�@>��T]Ѣ�|G�:�E���6Q�--�] _�F��iQ�@>��T]Ԣ�|S�:�E���6Q�]-�] _�F�NkQ�@<��к�E����62u`���m��[R�@���T�٢�|h���E���6Rul���m��{[R�@���T�ܢ�|t���E���6Rux����m���[R�@���T�ߢ�|����E��7Ru����n��;\R�@�č�:�E���72u����=n�� U��Dm7��v�|��:�E��07Ru����mn��8U���@�����n��DU�#�HՕ.��w���C]T=�Ou�����n��\U��H��.��7����]T=�vTw�dz^��iir��/�nwo^�_��ק��/xyG�a;=��x|���N��3z����nw����7������|}��y�w>�i����z�y�}Q�����}x���u����7/������rw��>]�e����_�to��x��:���/ϲ��e�?S�;X�@��L��`��2��I�U���T}���] ~�@��� ����|����_*�����z ~�@��P��2��[�U�o���zV=�` S�X�@���H����dj}�����4���U�z ~�@�ַ ���}��/@�į����V=�u S�kX�@��L�o`��"U_>�j_?��ߋ],ކQ�+�b��Ů̬b��ŮDm�.R�@,vej�X�@,vej�X�@,vej�X�@,vE��]�v�X���*v��X���*v��X���*v��X�T�P��ؕ�U�b��ؕ�U�b��ؕ�U�b����U�B��ؕ�K��I��bWfV��Q�bW�V��U�bW��j�ŮL�b��ŮL�b��ŮL�b��ŮHU��.�]�Z�.V=�]�Z�.V=�]�Z�.V=�]��b�] �2��]�z �2��]�z �2t)v�iqT��*v!�qX���*v1�X���*v��X���*v��X�T�P��ؕ�U�b��ؕ�U�b��ؕ�U�b����*v��b�+S��Ūb�+S��Ūb�+S��Ūb�+Q[���>�]�Z�.V=�]�Z�.V=��]��ش8,vE��]�v�X���*v��X���*v��X���*v��X�T�P��ؕ�U�b��ؕ�U�b��ؕ�U�b����*v��b�+S��Ūb�+S��Ūb�+S��Ūb�+RU�B��bW�V��U�bW�.�.6-�]�Y�.F=�]��b�] �2��]�z �2��]�z �2��]�z �"U�.T�@,vej�X�@,vej�X�@,vej�X�@,vE��]�v�X���*v��X���*v��X���*v��X�T�P��ؕ�K��M��bWfV��Q�bW�V��U�bW��j�ŮL�b��ŮL�b��ŮL�b��ŮDm�.R�@,vej�X�@,vej�X�@,vej�X�@,vE��]�v�X���*v��X���*v��X���*v��T��*v��qT����z��_������nv�b����e�����������{�Z=���ӵ�����K��EQk��6� ������~�0�����4��}�~���n_����X����.Ϯ�8P����O}"uyvE�����v�C��e���x9V�������6\��%R�gWT��۰K�������m�e��(�7 ��p� ������lRuyvE���z�������𢡊�iw��x�ֳ�v�u?=<������4�.� +��<��z�@�߆�1T�gWT�_���o�!S�,�}�@�߆�)T�gWT��۰{������6lSuyvE����v~6ُ9=�j8P����1T�gWT��i{N�����y:����]1-�>��Nۇ���e���{pJ������w��<��z�@�߅�>T�gWT����a��,�]�@�߆�!T�gWT��۰ �Գ+�ԚɈT�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nDh�n�iq�����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nD治��m�nD`�n�hq�����@�yw#P����������@�yw#R������F�jwU�ݍDm��v������@�yw#R������F�jwU�ݍDm��v������@�yw#R������F�jwU�ݍ�����Y�HZ�nD�v7�@�݈T�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈���@��pw#!��A����FdjwQ�ݍH���Ȼ��� T=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7��n����F�jwU�ݍH���Ȼ��� T=�w7���jȻ��� T=�w7"U��z �nDh�n�iq����mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nD�v7P�@�݈T�n�ꁼ���mw��.�w7"U��z �nDh�n�iq�����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nD�v7P�@�݈T�n�ꁼ����@�yw#Q���] �nDh�n�iq�����@�yw#R������F��� R�@�݈T�n�ꁼ����@�yw#R������F�^w7@�yw#R������F�jwU�ݍH���Ȼ��v7H�yw#R������F�jwU�ݍH����� �� 2=w7�;�����ݸy��1~)7��?��ݍ�rvI��Ȳ���ݍ���zw|��>�y��;����3����W��o�n��wmE�km��;nE�|!Њ��Vt����r+:RՊF���jE��܊N�֊&��Vt����r+:RՊF���ՊF�����Mhȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt�V+M��Vtd���r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�Zё���Q� �VtV+E��Vtd���r+:P��hP�@nEG�ZѨz ��#U�hT=�[ё�V4�ȭ�Dm�hR�@nEG�ZѨz ��#U�hT=�[ё�V4�ȭ�Dm�hR�@nEG�ZѨz ��#U�hT=�[ё�V4����U+�L��VtDV+I��Vtd���r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt����b+:B����a+:!Պ&���jE#�܊�T��Q�@nEG�ZѨz �����I���jE��܊�T��Q�@nEG�ZѨz �����I���jE��܊�T��Q�@nEG�ZѨz ���ڊ��Vt����r+:RՊF���ՊF�����Mhȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt����r+:RՊF�����Mjȭ�HU+U�Vt�V+M��Vtd���r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.�[ё�V4�ȭ�HU+U�Vt����r+:Q[+��.[�Z�h4-�[ё�V4�ȭ�HU+U�Vt��V4�] ��#U�hT=�[ё�V4�ȭ�HU+U�Vt�^[Ѡ��܊�T��Q�@nEG�ZѨz ��#U�hT=�[щ�ZѤv�܊�T��Q�@nEG�ZѨz ��#U�hT=[� �V4���h���h|Պ�yԊ�����V�����\�^�X:���D��K��͇����o�^��矪��9\3�����&�4*C����������8������H��o�NH}�7��_�����o"-���;!Ul'��־N^[�c���N{B��N��q�=!�g'��͞�*�iq\e��d��Ǟ���iq\bOHu؉�8l�'b� � ��z���:�����Tu�H���zB��N��qk=!UZ'�⸲�����q_=!UW'�⸬���iq�TOHՉ�8��dk��q�QOHUԉ�8.�'���DZ��R�t"-���ٚ�@z��R�t"-K�X�toø���*��hq\G��F�㸋����iq\DOH�Љ�8n�'�J�DZW��5Ё�8�'���DZ��R�s"-��� ��9�ǵ�l�s =�;� ��9�Dž�TߜH��yB�lN��q�< [�H���y.5s�n��d�h�1'�6�� ��9����u��.�]w�R�r"-��� �^9�ǭ�T��H��Jy@�F9��}�T��H��2yB�KN��q�<!U$'��F��E��q�<!U!'��@���iq�OH�lj�8������Z���j��݆qi<�'��1��*�iq\����+����iq\OH�ĉ�8n�'�J�DZW��5ā�8�'���DZ��R�p"-��� �b8�ǵ��l�p =�;� �J8�Dž��T�H��6x"V���0������Y��P5p-�K� �8�� ��T�H���w@��7����T��H���wB��M��q�;!U�&������ ��q�;!U�&��읐�ziq��NH���8�y��ז����㝐�xiq\�NH����8lw'b�� � �jw��f7�ǽ�T��H��RwB��M��q�;!U�&������ ��q�;!U�&��ȝ��qiq��NH����8�pdkp�q��NHշ��8.o'���DZ7�R�m"-�k��Z�@zw�R�m"-ۉX}moø���*k�hq\�����㸧���iiq\�NHu���8nh'� +�DZ׳�����8�f'���DZ�R�l"-�[� �R6�Ǖ�l�l =��� �:6��e�T�H��&vB��M��q ; [H��v"V���0.`'���$Z��R�k"-���ٚ�@z��R�k"-�K� ��5�Ǎ�T�H���:ym[��.��� ��5��E�TϚH��uB�dM��q�: [�H��~uB�^M��q�:!խ&��Y��*ViqX�D���0�T��Y��^C5��/b�9���1���i�+�K����W}�����q��^�~w}A�������>���ÿ,���_oϯ�����o��������M������߽�����eW�q��<�p�,[����������n~�:��}.T=�]��J�ȥ�HU�U�^W��b�] W�"U�.T=��]��z���HU�U�W����] "U=/T=�^ZU/4-��^�����}�Dm�/R�@�|E�:_�z ��"U�/T=��_�����ݯDm�/R�@�E��_�z 7�"U0T=�K`����=�DmE0R�@��E��`�z ��"Uu0T=�a��F�ȝ�Dm�0R�@��E��C�6�aX�0-��a��v����@��@��"�ꈡ���T��P�@.�E��b�z w����H��.�ꋡ���TU�P�@.�E�Zc�z ����H��:�ꎡ���T��P�@.�E�d�z v�T%22=kdY=2$-��d��*��e�HU�U�>Y��B�] W�"U�2T=�[e��Z��ŲHU�U�nY��r�] ��"U�2T=�f�����%�HU�U�Y����] W�"U]3T=��f��������������T�H���Yd�w��r�,RU=C��|�j����?K�V@#�� +Z�����r-RUCC����j����EK�VF#��:Z�����r#-RUIC����j����K�k1 �>��i��n����HU= UĂZ�VC M��Zb���] ��"U=5T=��j�����e�HU[ U�Z����] W�"U�5T=�[k�����ŵHUs U��Z����] ��"U�5T=�l�� +��%�HU� U�[��"�] W�"U]6T=�lZu64-�m��F�ȝ�Dm�6R�@��E�zm�z 7�"U�6T=��m��v����Dm7R�@��E�:n�z ��"U57T=��n�����]�Dme7R�@��E��n�z 7�"U�7T=�Ko����Ƚ�Dm�7R�@��Ehu�д8n�E��o�z �"U 8T=�;p��Jp�v�\��T��P�@n�E��p�z ��"Um8T=��p�z-ā�r%.RՉC����š�\��T5�P�@��%j+Ǒ�r=.RՏC��!��ȡ�\��T��P�@��%��rdzV��ݮ�+�/��r7�c�y���/���G/u�=���;����G��+�T]�>?����/Zp���������w�aw}�����,����}U/��p�����q�\�]A=p����C�.Ϯ�x_=n�����j=�j8P�w��Og#uyvE���:� �T]�]Q=p��o��(R�gWT�������Og��e����|N�����i�?�BuyvE���z�Η:�˳+��W����,�]�@�߆�QQ�.Ϯ�8P���C-R�gWT��۰K�������m�4�<ʦ� ��=؆?p�����lRuyvE���Z�4���rT=���<Qۗ����חG���U�o0�T}�9��_b��sT=���<P�_dj�_e��.sT=���<R�u�z �y���Q�@�N�Dm_jNj�_k��^sT=���<R���z ~�y�ַ��iq���پ���.���<R��z �y��k�Q�@���H�7����]���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N��>���8��}D=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>Nd.�8(ކ�>N�>���8��}D=��q���j��8��}T=��q"U�8�z ��D��qP�@��IԶ�Cj��8��}T=��q"U�8�z ��D��qP�@��IԶ�Cj��8��}T=��q"U�8�z ��D��qP�@��IP���q���������>NdjQ�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}��}4-�qR�8Dz��D��q�@�ljT��ꁼ����A�y'Q�>�] ��D��qP�@�ljT��ꁼ����A�y'Q�>�] ��D��qP�@�ljT��ꁼ����A�y'P��8��������A�y'R�����>N��>���8���q�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N�jU�}�H�>���8���qH�y'R�����>N��>���8��}D=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>N�jU�}�H�>���8��}T=��q�����>N��>���8��}D=��q"U�8�z ��$j��!��}�H�>���8��}T=��q"U�8�z ���u�>��q"U�8�z ��D��qP�@�ljT��ꁼ���m��.��q"U�8�z ��D��qP�@�ljT��ꁸ�����!��p�V_�}|��s�:hg�Rn�q�F��8�ô;p����j�/>}�����x��?�����N���lv�����v���O����9���dk\«V���U��/_4. ��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ظ��j\�iqܸ�L5.�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��R�22��%��aظ��j\�hqܸ�L5.�@n\�q jȍ�HU�U��e��q��r�2RոD��q���qIjȍ�HU�U��e��q��r�2RոD��q���qIjȍ�HU�U��e��q��r�2RոD��q��j\��qظ��j\"iqܸ�L5.�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@l\Fh5.Ѵ8l\&��Dz7.#S�KD=�����%�ȍ�HU�U��e���%�] 7.#U�KT=�����%�ȍ�HU�U��e���%�] 7.#U�KT=�����%�ȍ�HU�U��e�^����ܸ�T5.Q�@n\F���z 6.#��hZ7.�5. ��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ܸ�T5.Q�@n\F���z 7.�5.I��q�j\��ظ��j\�iqܸ�L5.�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��r�2RոD��q�j\��ܸ�T5.Q�@n\&jk\��b�2B�q���q�22ոD��q�j\��ܸL�ָ$���e��q��r�2RոD��q�j\��ܸ�k��>�����%�ȍ�HU�U��e��q��r�2Q[��.�����%�ȍ�HU�U��e��q��b�2Aո$��qI=��q�/����Fh\�_ʯj\������q�G.�hW����z�ݾz��㛯�Y�������v��?�?�t�+��_� ֿ��t8o��gz����k~��1�gF=��9S��Y�@��L�/pf���#U_��j�_����άz ~�s��8���ΙZ_�̪�8'j�gR�@��L�/pf���3����U�/p���gV=��9R�Ψv��ΙZ_�̪�8gj}�3�H_���˜���s��9D�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@��T� ���@�֜��Hs�� �iq8'��5'���@�jN��.�2��X�@��Ԛ`�qN SkN�U�9�H՜��] � dj� ��8'��5'���@�֜���s��9T�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�0'����X� �9�\�X�8��̚`�qN Qۜ��} � dj� ��8'��5'���@�֜���s��9T�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�8'��5'���@�֜���s�Zs�z � Dh� ��q4'��˜���s�Ys�z � dj� ��8'��@��9�L�9V=�2��X�@��Ԛ`�qN R5'�j�s�Zs�z � dj� ��8'��5'���@�jN��.�2��X�@��Ԛ`�iN C�96-��"����8��̚`�qN SkN�U�9�L�9V=�"Us�v�8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@�H�6'@j�s�Zs�z � dj� ��4'��˜���s��9D�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�8'��5'���@�֜���s�Zs�z � D��P�qN SkN�U�9�L�9V=�2��X�@��T� ���@�֜��Hs�� �iq8'��5'���@�jN��.�2��X�@��Ԛ`�qN SkN�U�9�H՜��] � dj� ��8'��5'���@�֜���s��9T�@��Ԛ`�qN SkN�U�9�L�9V=�"Us�v�4'��˜���s�Ys�z � dj� ��8'��@��9�L�9V=�2��X�@��Ԛ`�qN Qۜ��} � dj� ��8'��5'���@�֜���s��9T�@��Ԛ`�qN SkN�U�9�L�9V=��"����8��:|4'�/cy��ul7�ќ���nN`�s˱'� �#�W��^n|�7�?/���~{�����/���������_��:���j���m���<n��|!�x'���{���r�=R�xG����j����x�k��>��;�ȍ�HU�U��{���r�=Q[��.��;�ȍ�HU�U��{�V�M���{b��;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=�Z�w4-��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�Dm�wR�@j�G��xG�6�X�w-��;�ȍ�@�6�A����j����x�T5�Q�@n�G��z 7��5�I����j����x�T5�Q�@n�G��z 7��5�I����j����x�T5�Q�@n�G��z 6�T�w2=�Y�w$-��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;������;�����T�H���{d��r�=R�xG����j����xO��x'���{���r�=R�xG����j����xO��x'���{���r�=R�xG����j����x�k��>��;�ȍ�HU�U��{�V�M���{b��;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=��;�ȍ�HU�U��{���;�] 7�#U�wT=�Z�w4-��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�Dm�wR�@n�G��z 7�#U�wT=��;�ȍ�Dm�wR�@l�Gh5�Ѵ8n�G��z 7�#U�wT=����v��x�T5�Q�@n�G��z 7�#U�wT=��zm���r�=R�xG����j����x�T5�Q�@n�'jk���r�=R�xG����j����x�T5�Q�@l�'��dz6��u���/��7�����5�x�������*����9���$*뻖��1`o�x�V�{w��(�`��o�8�qX�ͷ7ݒp:��J5KO����~��yG������}ww��~������*��/.���y���ZG_�������_]?Z�\=���������O��e������˳#��LV��zz}�7L�2Yq�/��ɑ�(�w@n_��+�2Yq������!��LV��}��%�e��>&_�/����V�}��g�GY��r���Ir?�d��czÐ�� ��x�C�s�Ȏ�CfăȊ� Cf��Ȋ��Cf��Ȋ����e��\�x�Ð� ��x�ÐY� ��x�Ð�� ��x�C�s�Ȏ�Cf��Ȋ�Cf��ȊÝ#����x�C�s�Ď�Cf��Ȋ�yCf��Ȋ�mCf��Ȋ�aA�] ;�W9�Q"+�'9�E"+��8�9"+��89�8��8^�0d�8��8��0dV8��8��0d&8��8�������x}Ð� ��pzÈcy���0��0`f7H�8�������xqÐ� ��xnÐY� ��xkÐ�� ��xhC�sgȎ� Cfd�Ȋ� Cfa�Ȋ�} Cf^�Ȋ�q A�m ;��5�a "+�g5�U "+�75�I "+�59�4��8Z�0�>�A�UNim,iw�;̌��#��ˆ�1���!3�Ad��|�!��Ad��v�!3�Ad��p� �n�ǫ��h�Ǔ��b��{��\��c��[@v/e2CDV�d2+DVod2DVd1��V�co�c�w���2�ǻ��,�ǣ���@v/b2�DV�a2kDVoa2SDVar�`��q��aȌ`Yq<�a�,`Yq�a��_Yq<~!ȹ}d���!3|Ad���!�zAd�������a8x!��]�Wa�va��]�Xq<ua�,]Yq�sa��\Yq<r!ȹqd�� !3pAd��!�nAd��!3mAd�� ��ǫ�̨�Ǔ�̢��{�̜��c��˖�1���!3dAd��!�bAd�ᆅDŽ��a<`!��_b��z�!3^Ad��t�!�\Ad��n�!3[Ad��h� �f�Nj��`��s��Z��[��T��C��;@v�T2#DVOT2DV�S2�DV�SrnS��q�La�SYq8KaıJA�uoR0�$VRr�Q��q�FaȌQYq<Ea�,QYq�Ca��PYq<B!ȹAd���!3@Ad����!�>Ad����!3=Ad���� ���ǫ����Ǔ�����{�����c��[@v.MqMx�3������������@v�K2�DVOK2�DV�J2�DV�J�&/���Nj�̠��s�̚��[�̔��C��;@v�H2#DVOH2DV�G2�DV�G1��V.G����g���8߽�F>Dzqϫ�/����h6by�������|����_�?��o�����_��Q�����������h@b�p�)g��1���??4qA]���ԔqQ�@��*5}\T;��JM%��R�Qg+��%�{�JM1��j�R��E�����Q�E�⸠k���%t 䎮RS�E������tQ�@n�*5U]T;�˺F�m]R�@��*5�]T;�+�JMg��֮RS�E���k���%u ��RS�E������wQ�@n�*5^T;�K�F�-^R�@��*5E^T;�� ]^4+�ۼ�L���B�Qg���%�;�JM���Z�R��E��٫�T{Q�@.�u�{I]�߫�|Q�@��*5_T;�[�JM��䢯Qgӗ�%���JM��亯R��E����T~Q�@.�u�~I]���̽���uV8��(V����/��`�^�����VjJ��v ׀��0��M`�� �jrب� L��}`���jr%X���ځ� Vjj��v ��:���.�� Vj���v ׃��~0�� a��"�jbIؠi ��q�V�( #Yq\Vf�v �����0�ȅa���0�K w����0�ȵa��7�jrsX���ځ\6�l��rX�)�ځ\!Vj:Ĩv ����1��Eb��&1�K w���21��ub��O�jb�X��R�f�a�ؐi�q�+Vf�ňv W���n1���b��^�jr�ب�aL��c��d�jr�X���ځ�4Vj�ƨv ���:�Ƥ.��7Vj -Ǩv W����1�ȭc��v�jr�X���1�k w����1���c���jbY����f�q ٘��L��=d����jrY��"�ځ�FVj�Ȩv ��:ɤ.��IVjJɨv ג��^2���d����jr9٨��L���d����jrEY��(�ځ�RVjjʨv ��:�ʤ.��UVj�ʨv ֕:��hV7����2�ȥe���2�K �����2���e����jr{Y��/�ځ\`6�l0��r�Y�)1�ځ\cVjz̨v 7���*3��ef��63�K ����B3�ȕf��ӌjr�Y��5�ځ\l6�l6��b�Y��܌f�q�Y��7#ځ�pVj*Ψv ���:[Τ.��sVj�Ψv W����3��mg���jr�Y���3�k w����3�ȵg����jr�Y��>�ځ\~6�l?��r�Y�)@�ځ\�Vj:Шv ����4��Eh�� Mf�a[����1��W�q�{=�C?�҇>s�����=��Ǒ�'z�}������������F3���m��sׇ:o������Rf��e֫'>.��� PfE��̪ԔYQ�@,�*t�YѬ8.�s�Y ]�̪ԔYQ�@.�*5eVT;�ˬJM���2�Qg���%�ˬJM���2�RSfE��̪ԔYQ�@.�u�YI]�̪ԔYQ�@.�*5eVT;�ˬJM���2�Qg���%�ˬJM���2�BG�͊�2�2SfE���j�Yf%u �2�RSfE��̪ԔYQ�@.�*5eVT;�ˬF�eVR�@.�*5eVT;�ˬJM���2�RSfE���j�Yf%u �2�RSfE��̪ԔYQ�@.�*5eVT;�ˬF�eVR�@*�*s/��x�eV�2+��eVe�̊hr�U��2+�k �Y��2+��eV��̊jr�U�)��ځ\f5�,���r�U�)��ځ\fUjʬ�v �Y��2+��eV��2+�K �Y��2+��eV��̊jr�U�)��ځXf5hʬdv�Y9ʬHV�Y��2+��eV��̊jr�ը��J��eV��̊jr�U�)��ځ\fUjʬ�v �Y�:ˬ�.�\fUjʬ�v �Y��2+��eV��̊jr�ը��J��eV��̊jr�U�)��ځXfU�(��YqXf5dʬDv�Y��2+��eV��̊jr�U�)��ځ\f5�,���r�U�)��ځ\fUjʬ�v �Y��2+��eV��2+�K �Y��2+��eV��̊jr�U�)��ځ\f�� -��eV��̊jr�U�)��ځXfU�(��Yq\f5�,��r�U�)��ځ\fUjʬ�v �Y��2+��eV��2+�K �Y��2+��eV��̊jr�U�)��ځ\f5�,���r�U�)��ځ\fUjʬ�v �Y��2+��eV��2+�K �Y��2+��eV��2+��eVe�̊hr�ը��J��eV��̊jr�U�)��ځ\fUjʬ�v �Y�:ˬ�.�\fUjʬ�v �Y��2+��eV��̊jr�ը��J��eV��̊jr�U�)��ځ\fUjʬ�v �Y�:ˬ�.�XfU�(��Yq\fUfʬ�v �Y��2+��eV��2+�K �Y��2+��eV��̊jr�U�)��ځ\f�� -��eV��̊jr�U�)��ځ\fUjʬ�v �Y�:ˬ�.�\fUjʬ�v �Y��2+��eV��̊jb�ՠ)���qXf=.b�2+>�(�^=�Y��{�����w��YǑ�'ze��������ӧ�����O���������u�����ϟ����?�����ǷO��O�~��?�\����������p�՝�����r�#9����POA���b�YO!u �z�RSOA������SP�@��(5�T;��)F��R�@��(5�T;��)JM=��z�RSOA���b�YO!u �z�RSOA������SP�@��(5�T;��)F��R�@��(s���x���z -���e���hr=E��z -�k �S��z -�������jr=E����ځ\O1��r=E����ځ\OQj�)�v �S��z -�����z -�K �S��z -�������jr=E����ځXO1h�)dv�S9�)HV�S��z -�������jr=Ũ��B�������jr=E����ځ\OQj�)�v �S�:�)�.�\OQj�)�v �S��z -�������jr=Ũ��B�������jr=E����ځXOQ訧�YqXO1d�)Dv�S��z -�������jr=E����ځ\O1��r=E����ځ\OQj�)�v �S��z -�����z -�K �S��z -�������jr=E����ځ\O�������jr=E����ځXOQ訧�Yq\O1欧�r=E����ځ\OQj�)�v �S��z +Ǩv W����1�ȭc��v�jr�X���1�k w����1���c���jbY����f�q ٘��L��=d����jrY��"�ځ�FVj�Ȩv ��:ɤ.��IVjJɨv ג��^2���d����jr9٨��L���d����jrEY��(�ځ�RVjjʨv ��:�ʤ.��UVj�ʨv ֕:��hV7����2�ȥe���2�K �����2���e����jr{Y��/�ځ\`6�l0��r�Y�)1�ځ\cVjz̨v 7���*3��ef��63�K ����B3�ȕf��ӌjr�Y��5�ځ\l6�l6��b�Y��܌f�q�Y��7#ځ�pVj*Ψv ���:[Τ.��sVj�Ψv W����3��mg���jr�Y���3�k w����3�ȵg����jr�Y��>�ځ\~6�l?��r�Y�)@�ځ\�Vj:Шv ����4��Eh�� Mf�a[����1��W�q>�֡�e�C����vzڞ������=�>������߿|��}���r�}��۹��C������kx)���2���Y~(��ځ\fUjʬ�v �Y:ʬhV�Y�9ˬ�.�\fUjʬ�v �Y��2+��eV��̊jr�ը��J��eV��̊jr�U�)��ځ\fUjʬ�v �Y�:ˬ�.�\fUjʬ�v �Y��2+��eV��̊jr�ը��J��eV��̊jb�U��̊f�q�U�)�"ځ\f5�,���r�U�)��ځ\fUjʬ�v �Y��2+��eV��2+�K �Y��2+��eV��̊jr�U�)��ځ\f5�,���r�U�)��ځ\fUjʬ�v �Y��2+��eV��2+�K �Y���YQ��2�G�Ŋ�2�2SfE���*�K��5�ˬJM���2�RSfE��̪ԔYQ�@.�u�YI]�̪ԔYQ�@.�*5eVT;�ˬJM���2�Qg���%�ˬJM���2�RSfE��̪ԔYQ�@,�4eV2;ˬ�eV$+�ˬ�L���2�RSfE���j�Yf%u �2�RSfE��̪ԔYQ�@.�*5eVT;�ˬF�eVR�@.�*5eVT;�ˬJM���2�RSfE���j�Yf%u �2�RSfE��̪ԔYQ�@,�*t�YѬ8,�2eV";�ˬ�L���2�RSfE��̪ԔYQ�@.�u�YI]�̪ԔYQ�@.�*5eVT;�ˬJM���2�Qg���%�ˬJM���2�RSfE��̪ԔYQ�@.� +�Rfu �2�RSfE��̪ԔYQ�@,�*t�YѬ8.�s�Y ]�̪ԔYQ�@.�*5eVT;�ˬJM���2�Qg���%�ˬJM���2�RSfE��̪ԔYQ�@.�u�YI]�̪ԔYQ�@.�*5eVT;�ˬJM���2�Qg���%�ˬJM���2�BG�͊�2�2SfE���j�Yf%u �2�RSfE��̪ԔYQ�@.�*5eVT;�ˬF�eVR�@.�*5eVT;�ˬJM���2�RSfE���j�Yf%u �2�RSfE��̪ԔYQ�@.�*5eVT;�ˬF�eVR�@,�*t�YѬ8.�*3eVD;�ˬJM���2�Qg���%�ˬJM���2�RSfE��̪ԔYQ�@.� +�Rfu �2�RSfE��̪ԔYQ�@.�*5eVT;�ˬF�eVR�@.�*5eVT;�ˬJM���2�RSfE���jДY��8,�1]�c�Y���ʬǏ����y��� ˬ�����2���_������_y����R�������������������_����ۧ����ݧo��ߟk�O�����|��}~8���z +�HRO����S~~�� ځ\O1��r=E����ځ\OQj�)�v �S��z �����z �K �S��z �������jr=E����ځ\O1��r=E����ځ\OQj�)�v �S��z �����z -�K �S��z -�����z -���e���hr=Ũ��B�������jr=E����ځ\OQj�)�v �S�:�)�.�\OQj�)�v �S��z -�������jr=Ũ��B�������jr=E����ځ\OQj�)�v �S�:�)�.�XOQ訧�Yq\OQf�)�v �S��z -�����z -�K �S��z -�������jr=E����ځ\O�������jr=E����ځ\OQj�)�v �S�:�)�.�\OQj�)�v �S��z -�������jb=Š����qXO�����c�z��sP=��Q��w���wQ=ey��QO���<<}��O_��m�,Oy~����(����`��>����Χ��i��r���N??�����_"�� ���j�ϧdzU��7�<P_Oo�w_�����v����������q��%�@}8��Zu?{C������~�E���j���������� �?V_���I��,�K���}�w_�����v���}�?�*u?{C��u����v�����1�;t?�f���gp>Ks?{��u����v����}c�_��� �?V�Χ�W� g�eu <PN//V���P;�@}>�?�os�� ���cx��p��j~����>�G��,�k���}�R���P;�@�>����go�x�n�٪��j�w�ب�-ä.���a��-èv �eX�y�0��oV�x�0��o6�|�0�K �eX�y�0��oVj�2�j�[�����ځ��a�η���[�����ځ��a��-èv �eX�y�0��o6�|�0�K �eX�y�0��oVj�2�j�[�����ځ��a�η���[�����ځ��a��4+�g\��D;�g\�:g\H]y�E��qA�y�E��qA�y�E��qA�y�Ũsƅ�%�g\��T;�g\��T;�g\��T;�g\�:g\H]y�E��qA�y�E��qA�y�E��qA�y�Ũsƅ�%�f\��ϸ�x�3. -3.(Vϸ(33.�v ϸ�2���3.J͌��3.J͌��3.J͌��3.F�3.�.�<��̸�ځ<��̸�ځ<��̸�ځ<�b�9�B��3.J͌��3.J͌��3.J͌��3.͌��3.�3.HVϸ(33.�v ϸ(53.�v ϸuθ���R3�j�R3�j�R3�j�Q��K ϸ(53.�v ϸ(53.�v ϸ(53.�v ϸuθ���R3�j�R3�j⌋Bnj��3.�̌��3.�̌��3.J͌��3.J͌��3.F�3.�.�<��̸�ځ<��̸�ځ<��̸�ځ<�b�9�B��3.J͌��3.J͌��3.J͌��3.B�̸���R3�j�R3�j⌋Bnj��3.Ɯ3.�.�<��̸�ځ<��̸�ځ<��̸�ځ<�b�9�B��3.J͌��3.J͌��3.J͌��3.F�3.�.�<��̸�ځ<��̸�ځ<��̸�ځ<�b�9�B��3.J͌��3. -3.hVϸ(33.�v ϸuθ���R3�j�R3�j�R3�j�Q��K ϸ(53.�v ϸ(53.�v ϸ(53.�v ϸuθ���R3�j�R3�j�R3�j�Q��K θ(t̸�Yq<��̸ ځ<��̸�ځ<�b�9�B��3.J͌��3.J͌��3.J͌��3.B�̸���R3�j�R3�j�R3�j�Q��K ϸ(53.�v ϸ(53.�v ϸ(53.�v θ43.dvθ�*��q��3.W�q�{;�q9~�l�e�����g\Ƒ�'z�3./w�>���/_f\��l���Op��3���K�M������O��� 0m�j�Q� �K O�(5�&�v O�(5�&�v O�(5�&�v O�uN����R3m�j�R3m�j�R3m�jⴉA3mBf��23m�h�R3m�j�R3m�j�Q� �K O�(5�&�v O�(5�&�v O�(5�&�v O��2m���&Jʹ ���&Jʹ ���&Jʹ ���&F��&�.�<m��L��ځ<m��L��ځ8m��1m�f��1� �K O�(5�&�v O�(5�&�v O�(5�&�v O�uN����R3m�j�R3m�j�R3m�j�Q� �K O�(5�&�v O�(5�&�v O�(5�&�v O�uN����R3m�jⴉBǴ ���&�̴ ���&F��&�.�<m��L��ځ<m��L��ځ<m��L��ځ<mb�9mB���&Jʹ ���&Jʹ ���&Jʹ ���&F��&�.�<m��L��ځ<m��L��ځ<m��L��ځ<mb�9mB�H�&�ܧMP��i�i+��M��iD;��M�z�6u �i�f���i�f���i�f���i��iR�@�6Qj�MP�@�6Qj�MP�@�6Qj�MP�@�61�6!u �i�f���i�f���i�f���i�fڄ̎�iE�i$+��M��iD;��M��iT;��M�:�MH]y�D��6A�y�D��6A�y�D��6A�y�Ĩsڄ�%��M��iT;��M��iT;��M��iT;��M�:�MH]y�D��6A�y�D��6A�q�D�c�͊�iCfڄȎ�ief���i�f���i�f���i��iR�@�6Qj�MP�@�6Qj�MP�@�6Qj�MP�@�61�6!u �i�f���i�f���i�f���i�^�M@]y�D��6A�y�D��6A�q�D�c�͊�ic�iB�@�6Qj�MP�@�6Qj�MP�@�6Qj�MP�@�61�6!u �i�f���i�f���i�f���i��iR�@�6Qj�MP�@�6Qj�MP�@�6Qj�MP�@�61�6!u �i�f���i��i4+��M��iD;��M�:�MH]y�D��6A�y�D��6A�y�D��6A�y�Ĩsڄ�%��M��iT;��M��iT;��M��iT;��M�:�MH]y�D��6A�y�D��6A�y�D��6A�y�Ĩsڄ�%�M:�MЬ8�6Qf�M�@�6Qj�MP�@�61�6!u �i�f���i�f���i�f���i�^�M@]y�D��6A�y�D��6A�y�D��6A�y�Ĩsڄ�%��M��iT;��M��iT;��M��iT;�M�i2;�M��:ܴ >Ƙ6�z�69~�e���M��|/�g�6ɑ��ƶ����?~���������ӧ���˷������/����_�_�o_~9�����.q�m��8<�y�����Ww6�臒C�?�Æ�rܰb��a��Ѱb��a��Ѱb��a��4�P]�a��Ѱb��a�нa�f�a�ʙ�a�hb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��B�ʙ?V,^�Q�ʁ{ÊŊÆ�3GÊ�Ć�QgÊ�5VN +V;VN +V;VN +V;VJM� +�K �S���SP��z�G=Ŋ�z�2SOA���"�K=�5��)JM=��z�RSOA������SP�@��u�SH]�����SP�@��(5�T;��)JM=��z�Qg=��%��)JM=��z�RSOA������SP�@��4�2;�)��$+��)�L=��z�RSOA���b�YO!u �z�RSOA������SP�@��(5�T;��)F��R�@��(5�T;��)JM=��z�RSOA���b�YO!u �z�RSOA������SP�@��(t�SЬ8��2�";��)�L=��z�RSOA������SP�@��u�SH]�����SP�@��(5�T;��)JM=��z�Qg=��%��)JM=��z�RSOA������SP�@���ROu �z�RSOA������SP�@��(t�SЬ8��s�S]�����SP�@��(5�T;��)JM=��z�Qg=��%��)JM=��z�RSOA������SP�@��u�SH]�����SP�@��(5�T;��)JM=��z�Qg=��%��)JM=��z�BG=͊�z�2SOA���b�YO!u �z�RSOA������SP�@��(5�T;��)F��R�@��(5�T;��)JM=��z�RSOA���b�YO!u �z�RSOA������SP�@��(5�T;��)F��R�@��(t�SЬ8��(3�D;��)JM=��z�Qg=��%��)JM=��z�RSOA������SP�@���ROu �z�RSOA������SP�@��(5�T;��)F��R�@��(5�T;��)JM=��z�RSOA���b��S��8��P���S�1F=��9��r�(�ػ�������2��?�먧��_�>�������wS��<�_Mx� �K��_���c��O����4�t9t�x�������/~���� �����٪��j������/J���P;�c��|zx{r�8��x�>�^_�����v���|zx������ �������DT�~��ځ�/���$�q��%�@�>���/J���P;�@�>���{�����v���}�V���P;�c�u���e����38������v���}wV���P;�@}ݾ�ٯ�~��ځ�o������3β������go�x�>��巹q��ځ��1<�o8�� �?���mãSs�5�@�>��g��go�x�n���T��7�<P���l��� �ށ;^ +l���aR�@~˰R�aT;��2�Լe�ķ+t�e͊�s�e��%��2�Լe��+5oF��-�J�[�Q�@~˰Q�[�I]�-�J�[�Q�@~˰R�aT;��2�Լe��u�e��%��2�Լe��+5oF��-�J�[�Q�@~˰Q�[�I]�-�J�[�Q�@|˰Bnj��3.�̌��3.F�3.�.�<��̸�ځ<��̸�ځ<��̸�ځ<�b�9�B��3.J͌��3.J͌��3.J͌��3.F�3.�.�<��̸�ځ<��̸�ځ<��̸�ځ<�b�9�B�H3.��g\P���+�g\��D;�g\�z�qu ��f����f����f�����R�@�qQjf\P�@�qQjf\P�@�qQjf\P�@�q1�q!u ��f����f����f����fƅ̎�E�$+�g\��D;�g\��T;�g\�:g\H]y�E��qA�y�E��qA�y�E��qA�y�Ũsƅ�%�g\��T;�g\��T;�g\��T;�g\�:g\H]y�E��qA�y�E��qA�q�E�c�͊�CfƅȎ�ef����f����f�����R�@�qQjf\P�@�qQjf\P�@�qQjf\P�@�q1�q!u ��f����f����f����^f\@]y�E��qA�y�E��qA�q�E�c�͊�c�B�@�qQjf\P�@�qQjf\P�@�qQjf\P�@�q1�q!u ��f����f����f�����R�@�qQjf\P�@�qQjf\P�@�qQjf\P�@�q1�q!u ��f�����4+�g\��D;�g\�:g\H]y�E��qA�y�E��qA�y�E��qA�y�Ũsƅ�%�g\��T;�g\��T;�g\��T;�g\�:g\H]y�E��qA�y�E��qA�y�E��qA�y�Ũsƅ�%g\:f\Ь8�qQff\�@�qQjf\P�@�q1�q!u ��f����f����f����^f\@]y�E��qA�y�E��qA�y�E��qA�y�Ũsƅ�%�g\��T;�g\��T;�g\��T;g\�2;g\h��̸�c����8�χ3.Ǐ�l?W=�<���8��Dos�������������������?�� �&�?�qɴ <ݜ6�z��i���MP�@�61�6!u �i�f���i�f���i�f���i��iR�@�6Qj�MP�@�6Qj�MP�@�6Qj�MP�@�61h�M��8�6Qf�M�@�6Qj�MP�@�6Qj�MP�@�61�6!u �i�f���i�f���i�f���i�^�M@]y�D��6A�y�D��6A�y�D��6A�y�Ĩsڄ�%��M��iT;��M��iT;�M:�MЬ8�61�6!t �i�f���i�f���i�f���i��iR�@�6Qj�MP�@�6Qj�MP�@�6Qj�MP�@�61�6!u �i�f���i�f���i�f���i��iR�@�6Qj�MP�@�6Q�6A��x�D��6A�y�Ĩsڄ�%��M��iT;��M��iT;��M��iT;��M�:�MH]y�D��6A�y�D��6A�y�D��6A�y�Ĩsڄ�%��M��iT;��M��iT;��M��iT;��M�:�MH]i�D��� ��a8m��1m�b��23m�h�P/�&���<m��L��ځ<m��L��ځ<m��L��ځ<mb�9mB���&Jʹ ���&Jʹ ���&Jʹ ���&F��&�.�<m��L��ځ<m��L��ځ<m��L��ځ8mb�L���q8m��1m�d��23m�h�R3m�j�Q� �K O�(5�&�v O�(5�&�v O�(5�&�v O�uN����R3m�j�R3m�j�R3m�j�Q� �K O�(5�&�v O�(5�&�v N�(tL��Yq8mb�L��q<m��L� ځ<m��L��ځ<m��L��ځ<mb�9mB���&Jʹ ���&Jʹ ���&Jʹ ���&F��&�.�<m��L��ځ<m��L��ځ<m��L��ځ<m"�˴ �k O�(5�&�v O�(5�&�v N�(tL��Yq<mb�9mB���&Jʹ ���&Jʹ ���&Jʹ ���&F��&�.�<m��L��ځ<m��L��ځ<m��L��ځ<mb�9mB���&Jʹ ���&Jʹ ���&Jʹ ���&F��&�.�<m��L��ځ8m��1m�f��23m�h�Q� �K O�(5�&�v O�(5�&�v O�(5�&�v O�uN����R3m�j�R3m�j�R3m�j�Q� �K O�(5�&�v O�(5�&�v O�(5�&�v O�uN���ⴉBǴ ���&�̴ ���&Jʹ ���&F��&�.�<m��L��ځ<m��L��ځ<m��L��ځ<m"�˴ �k O�(5�&�v O�(5�&�v O�(5�&�v O�uN����R3m�j�R3m�j�R3m�jⴉA3mBf����R��6���&W�A�&Ǐ�L����������L�&9���ƶ����?~���������ӧ���˷������/����_�_�o_~9�����.q�m��8<�y�����Ww6�臒C�?�Æ�rܰb��a��Ѱb��a��Ѱb��a��4�P]�a��Ѱb��a�нa�f�a�ʙ�a�hb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��B�ʙ?V,^�Q�ʁ{ÊŊÆ�3GÊ�Ć�QgÊ�5VN +V;VN +V;VN +V;VJM� �%VN +V;VN +V;VN +V;VJM� �%VN +V;VN +V;VN +V;�V - +4;�V��VLV6��9V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 5��7�ج8jX)r4���8lX9s4��@lX9u4�X�@lX9u4�X�@lX)5 +T�@lX9u4�X�@lX9u4�X�@lX9u4�X�@lX)5 +T�@lX9u4�X�@lX9u4�X�@lX9u4�X�@lXu6�H]�a��Ѱb��a��Ѱb��a�нa�f�a�J�iX!�b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jR�ʡ{Ê͊Æ�3GÊ�Ć�RӰBu Ć�SGÊ�Ć�SGÊ�Ć�SGÊ�Ć�RӰBu Ć�SGÊ�Ć�SGÊ�Ć�SGÊ�Ć�RӰBu Ć�SGÊ�Ć�SGÊ�Ć�SGÊ�Ć�RӰBu ���C���� +g���� +����� +��a��� +����� +����� +����� +�Ά�k 6��:V�v 6��:V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 6��:V�v 5�:Vhv5���V����36��Q���Go�8��`�j?��<����J��<�m��?���M�W�~��_�����|����'��������?�:?���0�냶���Q�j^�?�a����������Yq|�ސ�lOd��U{AΛ�@v߳7d��Yq|�ސ�cOd�� {C�=����9o��qt�ހ��z⮢�b��ƽz���V�s��Ċ�+���ˍ�cr�����uz"+�/�2w鉬8�Io�\�'���� �-z ;���2W艬8�@o�ܟ'�����!sy�Ȋ��7��8�7o�\�'���Ҽ!sg�Ȋ��̅y"+��1���0�+o�qU���0�(o�ܓ'�����!sI�Ȋ�+�7��8�o�\�'���r�!s7�Ȋ����x"+���rފ���N�!s%�Ȋ���}x"+�o�2�ቬ8� + +4;�V��VLV6��9V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 5��7�ج8jX)r4���8lX9s4��@lX9u4�X�@lX9u4�X�@lX)5 +T�@lX9u4�X�@lX9u4�X�@lX9u4�X�@lX)5 +T�@lX9u4�X�@lX9u4�X�@lX9u4�X�@lXu6�H]�a��Ѱb��a��Ѱb��a�нa�f�a�J�iX!�b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jb�ʩ�a�jb�ʩ�a�jb�J�iX��b�ʩ�a�jR�ʡ{Ê͊Æ�3GÊ�Ć�RӰBu Ć�SGÊ�Ć�SGÊ�Ć�SGÊ�Ć�RӰBu Ć�SGÊ�Ć�SGÊ�Ć�SGÊ�Ć�RӰBu Ć�SGÊ�Ć�SGÊ�Ć�SGÊ�Ć�RӰBu ���C���� +g���� +����� +��a��� +����� +����� +����� +�Ά�k 6��:V�v 6��:V�v 6��:V�v 6�����K 6��:V�v 6��:V�v 6��:V�v 5�:Vhv5���V����37��Q���Go�8��`�j?��<����J��<�m��?���M�W�~��_�����|����'��������?�:?���0�냶���Q�j^�?�a����������Yq|�ސ�lOd��U{AΛ�@v߳7d��Yq|�ސ�cOd�� {C�=����9o��qt�ހ��z⮢�b��ƽz���V�s��Ċ�+���ˍ�cr�����uz"+�/�2w鉬8�Io�\�'���� �-z ;���2W艬8�@o�ܟ'�����!sy�Ȋ��7��8�7o�\�'���Ҽ!sg�Ȋ��̅y"+��1���0�+o�qU���0�(o�ܓ'�����!sI�Ȋ�+�7��8�o�\�'���r�!s7�Ȋ����x"+���rފ���N�!s%�Ȋ���}x"+�o�2�ቬ8� /�yȎ�{���5x"+�/�2w���8�o�q���0��.��~����s��Ċ��̽w"+�o�2�މ�8��.�y�Ȏ����uw"+�/�2w݉�8��n�\t'����� �-w ;��2W܉�8��n��o'���v�!s��Ȋ�������cr��{�̵v"+�/�2wډ�8��n�q����0��.�y�Ď���Uv"+�/�2�؉�8��n�\b'��� -� � v ;��2��8��n��]'����!sq�Ȋ�k난�ց�8��n�\Y'���º!s_�Ȋ����eu"+���r�T�����!sM�Ȋ�K�Fw� ����u+���r�N���n�!s5�Ȋ��̽t"+�o�2�҉�8��.�y#Ȏ����ut"+�/�2wщ�8��n�\D'���� �-t ;��2WЉ�8��n��?'�����!s��Ȋ�炜7ρ�8�wn�q���0�tn��9'���ƹ!s�Ȋ��悜�́�8�kn�\5'�����!sϜȊ�[��%s"+����&/7̏�%��2�ˉ�8�\n��-'���f�!s��Ȋ�k傜�ʁ�8�Sn�\)'���B�!s��Ȋ����er"+��17��0�G~x��]#�g��/A���c�G���T��o��|��M/��ˏ���������/4������߾}�����c}��AO���/q+y�����_���|z��[f�89t�<?}J���������@���P;�@}>=m睺���v�����M�(��� �?V﷏�Q��,�K���}����� ���cx�M/��go�x�n�٪��j~�>l��o}u�eu <PNo������ �����U��7�<P_Oo/oR���P;�c��|z|��8��x�n��[x?zì�r�������@;�@�>�G��go�����}���8��x�n�½�67��P;�@�>��U��7�<P���N~�go����|>=��os�,�K���pz}��~��ځ����E�1��P;�@}=�>�os�� �?V��~x��8��x�nã�67��P;�@�>�� g���v���}�V���P;�c�u��O��Q6;��>����3��@;�@�>�;��go�x���^���w?{C���շ���U~�gY]ԇ��V���P;�@}>�?�os�� ���cx��p��j~���>�G��,�k���}�R���P;�@�>����go�x�n�٪��j~������}��YV�������&��� �����ժ��j���g��q�Yq������}��YF��u�������v���}O�R���P;�@�>����go�����}RgY]��c���~��ځ��1��7�q��ځ��1�Yu?{C����>��`u�X��%�_��ԼX��k+5/�F����J͋�Q�@~��Q狵I]���J͋�Q�@|��BNj�Ѭ8~��2�bmD;�_�m��bmR�@~��R�bmT;�_��ԼX��k+5/�F����F�/�&u �k+5+_�v �|)5C_�v O})5[_�v �}u�}�����R���j��R3��j��R���j��Q���K �)s_�B�:��8�P�8��Sf6��@^�e�5�����%0T;�����10T;�����=0T;���:'�H]yL�YC�yL�C�yL��C�y̨s��%���0T;�7��0T;�g��0T;����02;��9��8�Sf��@�Sj6�P�@^ 3� #u ��0�f9���0�f<���0�f?��1�� 1R�@SjV�P�@�Sj��P�@�Sj��P�@^3�#u �A1�fQ��M1�fT��Y1��]14+���i1";��Ŕ�u1D;��Ŕ��1T;�'Ɣ��1T;�Wƌ:g�H]yhL�YC�ykL�C�ynL��C�yq̨sr��%�Gǔ��1T;�wǔ��1T;��ǔ��1T;��DŽz�u �2�f��� 2�f���2��24+��Ȍ9��]y�L�Y#C�y�L�$C�y�L��$C�y�̨s���%��ɔ�e2T;��ɔ�q2T;��ɔ�}2T;�ʌ:'�H]y�L�Y)C�y�L�*C�y�L��*C�y�̨s���%�˔��2T;7�:F�Ь8�-Sfv��@^.3�.#u ��2�f����2�f��� 3�f���3��3R�@2Sj��P�@�2Sj��P�@�3Sj��P�@^43�4#u �Q3�f���]3�f���i3�f���u3��y3R�@8S�X8C��x�L�9C�y�L��9C�y�̨s��%��Δ��3T;��Δ��3T;�'ϔ��3T;�Wτz�=u ��3�f����3�f����3�f���4�� 4R�@ASjV�P�@�ASj��P�@�BSj��P�@\C3h����8D;��r�h�c��9����&��\F���?~ۑF�_O��'z�~������q��y��˗������oYendstream +� � v ;��2��8��n��]'����!sq�Ȋ�k난�ց�8��n�\Y'���º!s_�Ȋ����eu"+���r�T�����!sM�Ȋ�K�Fw� ����u+���r�N���n�!s5�Ȋ��̽t"+�o�2�҉�8��.�y#Ȏ����ut"+�/�2wщ�8��n�\D'���� �-t ;��2WЉ�8��n��?'�����!s��Ȋ�炜7ρ�8�wn�q���0�tn��9'���ƹ!s�Ȋ��悜�́�8�kn�\5'�����!sϜȊ�[��%s"+����&/7̏�%��2�ˉ�8�\n��-'���f�!s��Ȋ�k傜�ʁ�8�Sn�\)'���B�!s��Ȋ����er"+��17��0�G~x��]#�g��/A���c�G���T��o��|��M/��ˏ���������/4������߾}�����c}�������[�%n%�\���˳�8OO?~�'����O�|~<ݽ�� ���j�ϧ���S��7�<P߶�i�����v�����1<Ju�eu <P����w������v���}����� ���c8[u?{C���Շ�cx��/����.������w������v���|z|��~��ځ�����M���j~�>�O��RgY]��c��Go�w@n���Y���h��g�h��� �?V����A~�gY]��S������j���p��~��ځ��1��os�� �?V�ϧ�7�mn�eu <PN��V���P;�@}>=�ȟ#��j����g�mn���v������ORgY]��cx�����j���� �ጳ7�<P���ު��j~��n��ix?�f���gp��p��h��gpg��� ����˛���go����v>ݿ�o8�,�K������ު��j�ϧ�g�mn���v���}O��8{C���{�w����ԜEu <P����Y���j���p�"��� ���c8[u?{C������1ܹos9��x�>���ޤ����v���|:�Zu?{C�����l��?��0+�c��|:��o89��x�n���U��7�<P����^���j�ۧ�� ��� �?V���A��,�K���}��R���P;�@�>����3��P;�@�>�;��go�x����l��k���k�ځ�bm���ڨv �X[�y�6��/�6�|�6�K �X[�y�6��/�V�x�6��/�Vf^��h:_�M��/�Vj^��j�k�ځ�bm���ڨv �Xۨ��ڤ.��bm�f���/�f���/�f���/�ι/R�@�Rj�P�@��RjF�P�@��Rjv�P�@^�2��"u ��/e��_(^��������`����+`B�̀����R��j��R3�j��R��j�"�Q�$�K ��)5�`�v �)5�`�v O�)5�`�v ��u���@�R��j�F�R3�j�L�R��j�R�A3Ff��X�"�Z��{a��`�ȓaJ�f�ȫaF��a�.�<��,��ځ��Ԍ��ځ<��쇡ځ� f�9!F��#bJ͊��;bJ͐��SbJ͖��kbF�sb�.�<(��,��ځ�)�Ԍ��ځ8+�б+�f�Ი!3-Fd��2�.�h�R30�j�ĘR�1�j�ʘQ���K �)5Kc�v o�)5cc�v ύ)5{c�v /�uN�����R�:�j��R3<�j���R�=�j���P/�c���<@��,��ځ�A�Ԍ��ځ8C�бC�f���1��K ��)5kd�v �)5�d�v O�)5�d�v ��uΒ���0�R�L�j�6�R3N�j�<�R�O�j�B�Q�D�K ��)5+e�v �)5Ce�v O�)5[e�v ��uΕ���`�R�X�j�f�B�h�dze��n���eF��e�.�<^�Ԭ��ځ�_����ځ<a��l��ځ�bf�9cF��CfJ͒��[fJ͘��sfJ͞�ȋfF��f�.�<j�Ԭ��ځ�k����ځ<m��l��ځ�nf�9oF��g +ghVo�)3#g�v Ϝ)5;g�v /�uN����ؙR�v�j�ޙR3x�j��R�y�j��P/�g���<|��,��ځ�}�Ԍ��ځ<��쟡ځ��f�9�F��#hJ� +��;hJ���ShJ���kh����hǓ_n cL�]=���p��v�(�Q����v�Q�������������"l�x�����y.9��?5߽5endstream endobj 1702 0 obj << /Type /Page @@ -5228,7 +5256,7 @@ endobj 1728 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 558.939 537.983 567.85] +/Rect [523.039 558.939 537.983 567.85] /Subtype /Link /A << /S /GoTo /D (trbl-index) >> >> endobj @@ -5242,7 +5270,7 @@ endobj 1730 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 545.988 537.983 554.899] +/Rect [523.039 545.988 537.983 554.899] /Subtype /Link /A << /S /GoTo /D (trbl-passwd-encryption) >> >> endobj @@ -5417,14 +5445,14 @@ endobj 1755 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 365.33 160.956 372.184] +/Rect [95.641 365.211 160.956 372.184] /Subtype /Link /A << /S /GoTo /D (gfdl-4) >> >> endobj 1756 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [523.039 365.33 537.983 372.184] +/Rect [523.039 365.211 537.983 372.184] /Subtype /Link /A << /S /GoTo /D (gfdl-4) >> >> endobj @@ -5473,14 +5501,14 @@ endobj 1763 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 313.405 150.635 320.379] +/Rect [95.641 313.524 150.635 320.379] /Subtype /Link /A << /S /GoTo /D (gfdl-8) >> >> endobj 1764 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [523.039 313.405 537.983 320.379] +/Rect [523.039 313.524 537.983 320.379] /Subtype /Link /A << /S /GoTo /D (gfdl-8) >> >> endobj @@ -5501,14 +5529,14 @@ endobj 1767 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [95.641 287.502 239.291 294.476] +/Rect [95.641 287.622 239.291 294.476] /Subtype /Link /A << /S /GoTo /D (gfdl-10) >> >> endobj 1768 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [523.039 287.502 537.983 294.476] +/Rect [523.039 287.622 537.983 294.476] /Subtype /Link /A << /S /GoTo /D (gfdl-10) >> >> endobj @@ -5548,14 +5576,15 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1810 0 obj << -/Length 8014 +/Length 6834 /Filter /FlateDecode >> stream -xڭ�M��}��;?�����y9�!��a����� -Z���]����]���dm�S����b�zP�fr�7�����i�N���r����������|L柿�ˉ��8-��x�O�_���ry�������e�f�M�������O����?���?<<~�~9��>������㗧��w��ÿ|���(��t�.���/G�ߜ��pz��㸿y�8������u���������>|������ҷw��o�|��çO����o�|l�t���u>ѣ��r��P.�yZ+��8t�:���O/��� j>;P5����Q����U;�y:ͮ��T �V�t ������6�u?/S�g�v��4�]5���Q�����zt`J�6���|�=��e� ������T ���WuO�g�v�t����U��}�������6�5]�r0�|v�j`GM�0����T ��v���T �Vos�,�M`G�O��|�)g�v��;�j>;P5������*\�T �V�t ���Sβ�v�t W�g�v�t ��|t`J\�Lw�7�p������1��b��,�M`GMw0�os��@����na���@���z��m������v������,�M`G�O����U;�Λos��@�����a5���ف����9]��T�YV�����ao�͕�U;j���|�+g�v�t ���U��K����6Wβ�v�t ��rr ކu�urɚ�D���i6��������~���'�&�v���?�j>;P5���[X����T ��S�g�n�s�������6�5]ò�j>;P5���k�����T ��v���T �V��t�xopq��&�����`���@����N����U;�yZ�S�g�n��t ��L�(��!��?W��)q2]�a6�|v�j`GM�7�m�ف������_֘j9�j�Q�-��{\9;P5���k0"�T ��i��j>;P5p[]w��l��)gYm;�~��/��@����Nǣ��U;j���|�+g�n��t �ݦ�e� ������T ���=����Q�5�_�с)q��)݁�~��2�q2]��5����u���[�T ��iwv�|v�j�z�M��|�+gYm;�~��w�rv�j`GMװ�j>;P5���k8��q��@��m���ao��,�M`GMװ��q��@������>j>;P5���kعj>;P5pS=�v�����YT����L�����@����N����U;�i2S���M��̷�8�h�Q�����T �����U;j��vg�n�K���T�YV�����a>�j>;P5���k0k'qv�j`G=M狫�U���nڟ���8�j�Q��l�N��@����N����U;j���|�+g�n��t f�$β�v�t {W�g�v�t 旦|t`J\�Lw`�N�����muMw0�j9�j�Q����8;P5����b�N��@���z�NgW�g�n��ݴ���8�j�Q��d�N��@�����au�|v�j`GM�`�N��@��m�������YV�����aq�|v�j`GM�`�N��@���������ف����y7��`"β�v�e:��ףS�:�:�f�$�P 쨧�xr�|v�j�zIw`�O�,�M`GM�`�O��@���������@������,��ف����K�`��8�j�Q�5̮��T ����I���QO�j�>S����λig&�,�M`G]��,��ف��u�vGW�g�v�t �`"�T �V�t �O�|�M���&��耔��.�\K����5]�v��:%~�-��*{9O�_ܕ32�>�z�2��u����6&��t�eص=��w?������~9��z��/G^��P7�������_>�����2����!��/��������s��C��?>�?�T��_��w����n}|���>�qZ^~��j��ԇ�L�V��֊��K�W�_?T�Im��o�Q�GU��o�Q�GU��o�Q�GU��卑�OjH��oð�o��⏢�q��2�⏨r��P�P�@��[jT�Q�@��[jT�Q�@��[jT�Q�@��;j����r��R�⏪r��R�⏪r��R�⏪r��Qkş�&�+��T5�+��T5�+��T5+�25+�Y*�HJW�-3*��j W�-5*��j W��V�Im��o�Q�GU��o�Q�GU��o�Q�GU��卑�Oj�K��?��K��?��K��?��G�R�@��[jT�Q�@��[jT�Q�@��[h���)qX�wȨ��q\�̨�#��\�Ԩ����\�Ԩ����\�w�Z�'� 䊿�F�U 䊿�F�U 䊿�F�U 䊿�֊?�M W�-5*��j W�-5*��j W�-5*��j W� �Z�� 䊿�F�U 䊿�F�U Ċ����?��ǬB�@��[jT�Q�@��[jT�Q�@��[jT�Q�@��;j����r��R�⏪r��R�⏪r��R�⏪r��Qkş�&�+��T5�+��T5�+��T5�+��Z+��6�\�Ԩ����X��R�GS��o�Q�GT��卑�Oj�K��?��K��?��K��?��G�R�@��[jT�Q�@��[jT�Q�@��[jT�Q�@��;j����r��R�⏪r��R�⏪r��R�⏪r��Qkş�&+�Z*�hJW�-3*��j W�-5*��j W��V�Im��o�Q�GU��o�Q�GU��o�Q�GU��o�?�m W�-5*��j W�-5*��j W�-5*��j W��V�Im��o�Q�GU��o�Q�GU��o�Q�GU���Q�'S��o��⏤�q��2�⏨rſ_�*�����w�W��\����V,�w�?���_���R -��x��ӧa�������_�~Z�Ϗ_��&���k\N뛛�j�|N?���}��xU��/n^V��/^?|��M �����_�����������_Xj|��ȟ���/Hm��/,5>�U �Ͽ����T5�?��Rc���8�Q�8��&��1��T5��1��T5��1��T5��1�Z�1�6�4���<�A�6�1X�1(J�c,3�1�j �c�:�� �q���8U �q���8U �q���8U �q���q�M �c,5�1�j �c,5�1�j �c,5�1�j �c��cHmyc�1�AUyc�1�AUyc�1�AUq�1�!S�pc�e����8�2c���8�Rc���8�Q�8��&��1��T5��1��T5��1��T5��1�Z�1�6�<���Ǡ��<���Ǡ��<���Ǡ��<�q�:�!� �q���8U �q���8U �q���q�����q���ˌq���K�q���K�q���G��R�@�Xj�cP�@�Xj�cP�@�Xj�cP�@�8jǐ��8�Rc���8�Rc���8�Rc���8�P��P�@�Xj�cP�@�Xj�cP�@�XhǠ)q<�q�:�!� �q���8U �q���8U �q���8U �q���q�M �c,5�1�j �c,5�1�j �c,5�1�j �c��cHmyc�1�AUyc�1�AUyc�1�AUy�uCj��K�q���-�4%��1��D5��1�Z�1�6�<���Ǡ��<���Ǡ��<���Ǡ��<�q�:�!� �q���8U �q���8U �q���8U �q���q�M �c,5�1�j �c,5�1�j �c,5�1�j �c��cHmqc�e����8�2c���8�Rc���8�Q�8��&��1��T5��1��T5��1��T5��1�zǀ��8�Rc���8�Rc���8�Rc���8�Q�8��&��1��T5��1��T5��1��T5�1�25�1Y�1HJ�c,3�1�j �c�� k�ϑ�1�[��8���i��T���qL����8���?����K���_ҷ�K�˴��吾>���<�����:����5��C���uM8����ƃl���@��mu?O��T�YV��������T�ف��5]Cz��|v�j`G=�`O�g�n��y�]��Zβ�v����7`O�g�v��;�j>;P5�����x6�|v�jය�kHo��Zβ�v�t W�g�v�t ��|t`J\�̋E�,HF5'��HT�@�@zj�@���8���2�dUq�eɪ��Rc�j�HO-HV5'��Z&��j N =�L Y�@�@ZjL Qmq�eɪ��S��U � ��� $��HK� $�M L =�����0�@z`�@�(q8���2�dTq�uIj�HO-HV5'��Z&��j N =�L Y�@�@ZjL Qmq�eɪ��S��U � ��� $��HK� $�M N =�L Y�@�@zj�@���8���2�dUii�e�����#��I�� �g� $��HO-HV5'��HT�@�@zj�@���8���2�dUq�eɪ��Rc�j�HO-HV5'��Z&��j N =�L Y�@�@ZjL Qmq�eɪ��S��U � ��� $�GH�,H$5'��Y&��j N =�L Y�@�@zj�@���8��Ԙ@����S��U � ��� $��HO-HV5'��HT�@�@zj�@���8���2�dUq�eɪ��Q���6'��Z&��j N =�L Y�@�@zh�@�)q8��̘@"���S��U � ��� $��HO-HV5'��HT�@�@zj�@���8���2�dUq�eɪ��Rc�j�HO-HV5'��Z&��j N =�L Y�@�@ZjL Qmq�eɪ��C��M�� �g� $��HK� $�M N =�L Y�@�@zj�@���8���2�dUqi�1�D� � ��� $��HO-HV5'��Z&��j N -5&��6�8���2�dUq�eɪ��S��U � ����&�&��'�lJN =�L �@�@zj�@���8��Ԙ@����S��U � ��� $��HO-HV5'��Z'����8���2�dUq�eɪ��S��U � ����&'��Z&��j N =�L Y�@�@zj�@���4���2�DS�h�yɤ���3��Q � $,�� $?��3�8�N �9� �������2���C@~��_�O����/�����]�������Ͽ~�����O}���������Zz֗������=͗� ����/������?�{���#R�x��1�#R�x�g�u����F�!c�G���@�!c�G���:�!c�G���4� �2H��]�C�,�H��Q�#�M��a��s��(q<�3Ⱥ�R�x��1�#R�x�琱�#R�x��1�#R�x�g�u������!c~G�����!c{G�����!cxG����� ��H��͝C��H����C�ގH�㵝C�؎H�㩝A֥�G;;�3;�n�pd�hecG�m/�0v$J����u]�'�8��9dL눔8�9d�ꈔ8^�9d�ꈔ8��d]��q��sȘ�)q<�s���)q��s��)q<�3Ⱥ�R�xC�1�#R�x@琱�#R�x=�1�#R�p:g���P�p7�xe6G�m��06s$J/�2sDJ������8��9dL刔8�9d�䈔8^�9d�䈔8��d]��q��sȘ�)q<�s���)q��s��)q<�3Ⱥ�R�x�1�#R�x琱�#R�p �eG�mN�/�p�I��0fp$J��26pDJ/�2pDJ����߀�89dL߈�8�9d�ވ�8^�9d�ވ�8��d]��q�wsȘ�)q<vs�غ)q�ts��)q<s�ו[�l�x��1q#R�x�搱o#R�p��e�F�mO��.�@�89d�ڈ�8�9dlڈ�8^�9dڈ�8��d]��q�esȘ�)q<ds�ر)q�bs��)q<a3Ⱥ`R�x��1_#R�x�搱]#R�x��1\#R�x�f�u����f�!c�F���`��^���0^�9`��H�8��d]��q�SsȘ�)q<Rs�ب)q�Ps��)q<O3ȺNR�x��1M#R�x�搱K#R�x��1J#R�x�f�u�����!c�F����!c�F����!c�F���� � - H�� �#� ��a<@s�؟�(q�>s��)q<=3Ⱥ<R�xw�1;#R�xt搱9#R�xq�18#R�xn6&�k�>�����!cjF�����!cgF�����!cdF����� ��H��}�CƼ�H��q�Cƶ�H��e�Cư�H��Y�!ƪ@ �M��Iy�a<(s�ؓ�(q�&���1&���[��3�������ү���S�r��y�}?�-�w����O��e2�c���ӧ?�=��������_����S�S��=<��?>>�?x���>=~���{/s�����>o5U^�����__�.�En_������Wn^t����A����r��R��r��Qk���&�{,�ET5��,�]T5��,�uT5�-�Z-�6��i��(����\k��赠���l��RmAS����n!R��b�QpAT��b��qAU��b�QsAU��⨵�Bj�]K����uK���ȍK���ȥG��R�@�Xj_P�@��Xjt_P�@n�Xj�_P�@.��j�K���5K���M-U4%��0�Y�0�6�܇��(Ġ��\����Ġ��܊�ԨŠ��\�q�ڌ!� �n��F9U �z��F?U 䆌�FEU 䒌�֖�M �d,5�2�j We,5�2�j �e,5�2�j f�6fHm�3c�Q�AU�6c��7���qs�2�:��ry�Qk{��&��3�T5�+4�T5�[4�5T5��4�Z�4�6�ܥ��(Ӡ��\����Ӡ��ܨ�ԨԠ��\�q�ڪ!� �^��F�U �j��F�U �v��F�U 䂍�ֆ �M vl,��lД8��Xf�l�@n�XjTmP�@.�8jmې�r��R�p��r��R�s��r��R�v��r��P��P�@��Xj�oP�@��Xj�oP�@n�XjTpP�@.�8jm��r�R����r�R����r�R����b!�A��C��a'�"K)I��Z�eF/Q �f5C�j>G���<ƥ��y�?�o��<.�z���s9��9�?�������O>����S��ꩼ�e^��}}��_�tZ:�C��vHn^|�C��A�C��r��R�C��r��R�C��r��Qk���&�;$�T5�;$�T5;$Z:$hJvH2:$DjwH,3:$�j wH,5:$�j wH,5:$�j wH�vHHm�Cb��!AU�Cb��!AU�Cb��!AU�C⨵CBj�K� ��K� ��K� ��C�vH@m�Cb��!AU�Cb��!AU�Cb��C���q��1k���&�;$�T5�;$�T5�;$�T5�;$�Z;$�6��!��萠���!��萠���!��萠���!q��!!� ���F�U ���F�U ���F�U ���� �M wH,5:$�j vH,�tHД8�XftH�@�8j퐐�r��R�C��r��R�C��r��R�C��r��Qk���&�;$�T5�;$�T5�;$�T5�;$�Z;$�6��!��萠���!��萠���!��萠���!q��!!� ���� ��ˌ ��K� ��G�R�@�XjtHP�@�XjtHP�@�XjtHP�@��Cj�K� ��K� ��K� ��G�R�@�XjtHP�@�XjtHP�@�XjtHP�@�8htH��8�Xd� )q�!��� ���!��� >G��<tH��q퐼|�=��!9���|}���w�qY֗��z��y�����Dפ��+��endstream +xڭ�O�Gz��>��k�����т���a������%��R�Cڻ���a�ӑS��X��%�U<=�[�"���!�o�;��yM�,�i9mw�~��p�1���a.��iZ�%���|����zY���$��������-��]�~�P��:-����?�ǫ?�?~}�f9_^=|������/�_������O?W�����u�n���M9yss�_��.}�i�y q��No�)��!���߽��W}��}���*}�6�㷏�{��S����շ��+]�i���R�y�t�R.�yZ�qt�uL/_Ț�����Q��@��������M5�T 쨗�<�j������1.�ZnYm;�:��WSͷU;�i�/��o�v��tr�?��O.�4�g�,��6�5=����ہ��5=������ہ��5=��j��v�jྺ�ǰ�j�e� ��1,GSͷU;jz�f��v�j`GM����v�j�z����|�+��6�u�����Sn�v��t8�j���Q/���(\n��[z���SnYm;jzGWͷU;jz��t`J\�L�`5�p�����}����b���&���g0�os�v�j`GMO���v�j`G�Lǫ�6Wn���C� ����r�j�Q��xv�|;P5��n��|�+�U;jz��6Wn����ZnYm;jz��6Wn�v���m��T ��1̮�o������\�e� ��1����@� �x����5�D�됗i��op�v�j�����-�m`G]����v�j`GMOa[M5�T ��1���o��sz���[V����ò�j���Q�c�O��o�v����o���a:_�7��e� ���L5�T ��t>�j���Q/�r��j������1��gʧlj\�L���{5�H���g�̷T;jz���nSn��ǧYc���&����0��q�v�j`GM���e����Q/�|u�|;P5p_���b�}SnYm;�:���v�j`Gݦ��U��@�����f�Ǖہ����)=���nSnYm;jz���ہ��5=��|�+�U;jz���t`J�>yN��|�ɧLj\�L����v�j`Gݦ�j��-�U;�e:\\5�T �W/�i;��q��&�����d�۔ہ��5=��U��@������|�+�U��kz���[V�����b�Ǖہ��u�u}v�|;P5����pp�|;P5pW=�����-�m`G]���kxq;P5��n����v�j`G=O�/ +�Ӂ)q�䜞�����6�5=��U��@������q1�|;P5����`�N�v�jྺ�ǰ�j�e� ��1�GSͷU;jzf�$n�v��t��j������i�xosq�j�Q��b�N�v�j`Gݦ���v�j`GM�a3����@��}���Y;�[V�������v�j`GM����)�L����������n�̦ZnYm;jzf�$n�v�mZ��I�T ���|q�|;P5p_=�Ŭ��-�M`G]��Y;�ہ��5=��U��@�����Y;�ہ����9=�v��6�5=��U��@�����Y;�ہ��5=�v�U���a���Dܲ�v�e:���Ӂ)qr�f�|�T;�y:�]5�T �W���哸e� ��)�哸��Q�c8�j���Q�c0�'q;P5pW��1��B;nQm;jz���ہ��5=�|�U;�y��_g�ہ����|��`"nYm;�2mf�$n�v�m:�\5�T ��1�������.�1���S65�C�gp4��R�:dz��Z"n�v�����'�S�_Bגּ��4��]��A����(�nZ_� �mg~J�Oî� �Oy��o����8�ˑ7��7� x9yz Ǻ��������?̿���2����ۿ�!��.��������k��c��|�E����4$���?��ë�/z��?M��/���%���7��Jk���K�W�_�����r��R�⏪r��R�⏪r��R�⏪r��Qkş�&�*���+�(ކa��K�E�㊿eF�Q 䊿�>W�Am��o�Q�GU��o�Q�GU��o�Q�GU��卑�Oj�K��?��K��?��K��?��G�R�@��[jT�Q�@��[jT�Q�@��[jT�Q�@��;hT���8��[d��#)q\�̨�#��\�Ԩ����\�w�Z�'� 䊿�F�U 䊿�F�U 䊿�F�U 䊿�֊?�M W�-5*��j W�-5*��j W�-5*��j W��V�Im��o�Q�GU��o�Q�GU��o��⏦�a��!��O��q��2�⏨r��R�⏪r��R�⏪r��Qkş�&�+��T5�+��T5�+��T5�+��Z+��6�\�Ԩ����\�Ԩ����\�Ԩ����\�7��?�m W�-5*��j W�-5*��j V�-�T�є8��;f���r��R�⏪r��R�⏪r��R�⏪r��Qkş�&�+��T5�+��T5�+��T5�+��Z+��6�\�Ԩ����\�Ԩ����\�Ԩ����\�w�Z�'� 䊿�F�U Ċ����?��ˌ�?��G�R�@��[jT�Q�@��[jT�Q�@��[jT�Q�@��;j����r��R�⏪r��R�⏪r��R�⏪r��Qkş�&�+��T5�+��T5�+��T5�+��Z+��6�X��R�GS��o�Q�GT��o�Q�GU��卑�Oj�K��?��K��?��K��?��C}����r��R�⏪r��R�⏪r��R�⏪r��Qkş�&�+��T5�+��T5�+��T5+�25+�Y*�HJW�-3*��j W��5p�⏯#W�o����?���3�ޔ_���a����r��K)������?~�߾�_}~�����~}���4�w>_�z��n^U�������W���_U����/���/_|��M �����_�����������_Xj|��ȟ���/Hm��/,5>�U �Ͽ����T5�?��Rc���8�Q�8��&��1��T5��1��T5��1��T5��1�Z�1�6�4���<�A�6�1X�1(J�c,3�1�j �c�yj��K�q���K�q���K�q���G��R�@�Xj�cP�@�Xj�cP�@�Xj�cP�@�8jǐ��8�Rc���8�Rc���8�Rc���8�AcC���8�"�8I��q�e�8Q �q���8U �q���q�M �c,5�1�j �c,5�1�j �c,5�1�j �c��cHmyc�1�AUyc�1�AUyc�1�AUy�uCj��K�q���K�q���-�4%�1�"5��1��D5��1��T5��1��T5��1�Z�1�6�<���Ǡ��<���Ǡ��<���Ǡ��<�q�:�!� �q���8U �q���8U �q���8U �q��>�c@myc�1�AUyc�1�AUqc�e����8�1�8��&��1��T5��1��T5��1��T5��1�Z�1�6�<���Ǡ��<���Ǡ��<���Ǡ��<�q�:�!� �q���8U �q���8U �q���8U �q���q�M �c,5�1�j �c,��cД8�Xf�c�@�8jǐ��8�Rc���8�Rc���8�Rc���8�Q�8��&��1��T5��1��T5��1��T5��1�Z�1�6�<���Ǡ��<���Ǡ��<���Ǡ��<�q�:�!� �q���q���ˌq���K�q���G��R�@�Xj�cP�@�Xj�cP�@�Xj�cP�@���8�6��1��T5��1��T5��1��T5��1�Z�1�6�<���Ǡ��<���Ǡ��<���Ǡ��8�q�ǐ�q8���2�AR�xc�1�ATyӟmX�|ys�E�c���o�lO��u�8&N�8f��������%�\���s��x-{����ӏ������C'��N,�i~����ۯ�eM8�e?�7�����ہ����:O�j���&����i9�j���Q�cHo���o�v���v��|;P5p_=���z��r�j�Q�iKo���o�v��t8�j���Q/�v��j����n�1�7`K-��6�5=����ہ��5=��|:0%�C�Ţg� $��HK� $�M N =�L Y�@�@zj�@���8���2�dUqi�1�D� � ��� $��HO-HV5'��Z&��j N -5&��6�8���2�dUq�eɪ��S��U � ����&&���}��mM =0O Y�8�@zf�@2��8�t�:�$� � ��� $��HO-HV5'��Z&��j N -5&��6�8���2�dUq�eɪ��S��U � ����&'��Z&��j N =�L Y�@�@zj�@���4���2�DS�h�yɤ���3��Q � ��� $��HK� $�M N =�L Y�@�@zj�@���8���2�dUqi�1�D� � ��� $��HO-HV5'��Z&��j N -5&��6�8���2�dUq�eɪ��C��M�� �E� $��H�,HF5'��Z&��j N =�L Y�@�@ZjL Qmq�eɪ��S��U � ��� $��HK� $�M N =�L Y�@�@zj�@���8���2�dUq�uIj�HO-HV5'��Z&��j M =4O ٔ8�@ZfL mq�eɪ��S��U � ��� $��HK� $�M N =�L Y�@�@zj�@���8���2�dUqi�1�D� � ��� $��HO-HV5'��Z&��j N -5&��6�8���2�dUi�yɦ���3��Q � ����&'��Z&��j N =�L Y�@�@zj�@���8��Ԙ@����S��U � ��� $��HO-HV5'��HT�@�@zj�@���8���2�dUq�eɪ��Rc�jHH�H6%'��Y&��j N =�L Y�@�@ZjL Qmq�eɪ��S��U � ��� $��HG�HR�@�@zj�@���8���2�dUq�eɪ��Rc�j�HO-HV5'��Z&��j N =�L Y�@�@Zh�@��q4���<�dR�p�eɨ�{��_��Yv'��:� ����ӯ��2_<����e���_���ۧ����>�o�}��Ƿ������������{�����~{{��\x����_�^���������OO��^�����W�����x�������y���Ŝ�z9DJ�r2J9DJWr�6r��8��8d�q��8.�8dtq��8n�8dq��8��dm���q��qȨ�)q\�q���)qؾq�R�!�6�7���$�{7�%�K7�"%�7�"%��6Y�6@jwm2�6DJm2z6DJ�l2J6DJWl�6l��8��8d�k��8.�8dtk��8n�8dk��8�Ռ��VM�l�S�Q�!R�P�ѧ!R�M㈥LC�mWi�6i@�8��8d�h��8.�8dth��8n�8dh��8��dm���qܝqȨ�)q\�q���)qܚq�(�)q\�1�ژR�/�Q�!R�,�ѕ!R�)�Q�!R�&c��%��qG�!�"C��aA�K?���0n�8`�cH�8��dm���q܋qȨ�)q\�q���)q܈q�(�)q\�1�چR��Q�!R��у!R��Q�!R�c����q��!��B��q��!��B��q��!��B��q�� k�H��#����a\xq�軐(q�vq�(�)q\u1��tR���Qs!R����q!R���Qp!R��2&��-}���n�CF��H��b�CF��H��V�CF��H��J�A�F��}��:��e��.��M��"��5C����+�nø���_!Q⸽� ��B/"wW�_õ_]龈��?ޝ~���W�����]Y��+_�_�?~�r��k��_�wJ,{]��w��������s�N��v-�k�e��/�߶x�B�n��r��R�q��r��R�t��r��Qk��&����T5����T5�Z +hJV02:Dj�0,3j�j 1,5��j w1,5��j �1��1Hm��a�Q�@U��a���@U��a�Q�@U��ᨵ�Aj��K�z�� K���� K����5 C}�i��rS�R����rY�R����b_�BKaM��ʆc���M �6,5j�j 7,5��j w7,5��j �7��7Hm��a�Q�@U��a���@U��a�Q�@U��ᨵ�Aj�mK�:�ȅK�F�ȝK�R�ȵG��R�@nvXjT;P�@,wXhiw�)q���(x ��\�p��� � 䖇�F�U 䢇�F�U 䮇�F�U 亇�־�M 7>,5*�j �>,5Z�j �>,5��j W?�v?Hm��a�Q�@U��b���AU�b�QAU�⨵Bj�M-U4%�� �mD5�� ��T5�+!�Z;!�6�� +�Ԩ����\��h����� ��(����\1��~�m 7D,5*"�j �D,5Z"�j �D,5�"�j WE�vEHm�-b�QAU�0b��AU�3b�QAU�6��!S�9b��:���qy�2�=��r��[� +$�:r���e@���:�;$ۼ�$�����2]��JK����Y����~������������?Mί�endstream endobj 1809 0 obj << /Type /Page @@ -5563,7 +5592,7 @@ endobj /Resources 1808 0 R /MediaBox [0 0 609.714 789.041] /Parent 1773 0 R -/Annots [ 1812 0 R 1813 0 R 1814 0 R 1815 0 R 1816 0 R 1817 0 R 1818 0 R 1819 0 R 1820 0 R 1821 0 R 1822 0 R 1823 0 R 1824 0 R 1825 0 R ] +/Annots [ 1812 0 R 1813 0 R 1814 0 R 1815 0 R 1816 0 R 1817 0 R 1818 0 R 1819 0 R 1820 0 R 1821 0 R 1822 0 R 1823 0 R ] >> endobj 1812 0 obj << /Type /Annot @@ -5624,43 +5653,29 @@ endobj 1820 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [71.731 573.313 232.905 582.225] +/Rect [71.731 573.313 343.17 582.225] /Subtype /Link -/A << /S /GoTo /D (security-bugzilla-charset-ex) >> +/A << /S /GoTo /D (trbl-relogin-everyone-share) >> >> endobj 1821 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 573.313 537.983 582.225] /Subtype /Link -/A << /S /GoTo /D (security-bugzilla-charset-ex) >> +/A << /S /GoTo /D (trbl-relogin-everyone-share) >> >> endobj 1822 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [71.731 560.362 343.17 569.273] +/Rect [71.731 560.362 348.43 569.273] /Subtype /Link -/A << /S /GoTo /D (trbl-relogin-everyone-share) >> +/A << /S /GoTo /D (trbl-relogin-everyone-restrict) >> >> endobj 1823 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [528.02 560.362 537.983 569.273] /Subtype /Link -/A << /S /GoTo /D (trbl-relogin-everyone-share) >> ->> endobj -1824 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [71.731 547.41 348.43 556.322] -/Subtype /Link -/A << /S /GoTo /D (trbl-relogin-everyone-restrict) >> ->> endobj -1825 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [528.02 547.41 537.983 556.322] -/Subtype /Link /A << /S /GoTo /D (trbl-relogin-everyone-restrict) >> >> endobj 1811 0 obj << @@ -5676,29 +5691,32 @@ endobj /Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1835 0 obj << -/Length 2588 +1832 0 obj << +/Length 2585 /Filter /FlateDecode >> stream -xڝYݓ�8�_1�O��ƀ���S���ew/�������d��@�qf���������RKݭn���1�]��»4���D�퓻�~ܝ���E�$��ޏ���M�K�찻�L4�~x���vwQ�����4Z v~���=��ޔ��Ҭ6Qz�B�_uoy�P��Go{U�տ~!�a�Ga�J��A��������*L�G�ΥS��9���ӦV��)K�2?�(��-�r���+t�ײ�<�9Z���� �U��!S� 6�ߞ��G������U�x�(�;����着�`��Fq۽���\J�F[Tg���x�h����!�4��:<�f��avi蝍h�,�h5�'\�o�r���,&�b� �k]��#�ڒ�O���)�D��A�������xpo�d�ON�x�xw!3a\��r�t6e��i��' )�<�7DCh�I%����dZ�ڄ^�Ķ?V�+�](~t��R����W�}�'{A? -#Y��jpm�G&^�-y�h^��Y�W���?��u�4(5��͂/�h4�¸yX�7%R�Yғ�-:P�F`�8����͢�}6���j<�+�������j�/d1��,/~~�\<*�K���g��h��L�8M��Vz�U�ʦP���Ϸ��0��u���A滶o�m�i*���)�$��ݎ�ޡ��{�=��|'̺����eGPa���:�N�j�,�Q��!J�<U�c�Y�sL��P�˂�B�����n6�`Uμ��3�z�o�gPm��m%ŀL�"�7`��LH��mQ�����O�E��O��ѓ�P5������XU�,z����yc@����;&S���������G����c��FUiLu��\��}>�6PJi�r�3�1La% ����L�{��=���f�Ы%�����d�b )`p>�j� ����eKq���8K&�]�{쬬�L�EO8�� z�0��N�j&bfq�+����t������Pă�2v|�ǣ��{���N���L�ԛF�~��A^iK.o��ֹ�GQ�r�gS���h�ٮ�����Y�ѹ�n���hB�V� ��㹯9彨)�{F(��SU�Wh*�����1A<B�Pt<�J�W�8 "��)e�#��!�T$" -+�x˸�`MRT\0�tO7�d@x�������������h�_�����J��O��inW<��@�ք:�����)�"��쩡`�\ �t02�P�+lQ��Yq'Tj�ڸ���BL�V�B�!�ː��/��IR`Ƽ3*��$x��\���CA������&�v M�*08�5��9�z��H�>>:�J��1DyHۼ�D�I|A�#z�~�F�g9uT$��ME?��ANT��2�J+r7ٿ�n�<Mėl=����8�zn��4���_@��ec�V�8�h�q�r]�t?�n��J��C��u!])xk�p��d� ��n��}D֔�^8�i?qCM,ND��;N�c K��-x`��R?�+��t8{�D�@���yR��ȸ���:(@��;�hV�a�0:��$�A� |��x@��̼i�p?�t���r!�jn�h�ٵP�nI����r����d5t�zK� ���:l١�t7�%��?��\?�� z�ɧ�6H騽x�=��<��߱Q��� ��a���%���0}pόw7�������������� �̌�mxӄ���,'�ȝ��Px�ь�ٹ�xO�����)������21��c����� ���L8+������r����w)�w -� -�{X�$b�,�2�\P8FoY�W% ���������=D���zb3��E*y��p?���ֳmn�_ں�o&�h�ˢr -*d�)�F�Gn� 0�Y��ln/�h�������t�Bg�m��:��U�TQj�P�~IyaOL����k�'����I@L%��`��� -ъ�\�N�;#d��"yw�;����ˉ��Ӭ�w|��";KӉ�,�s������_�?��0��1�}�_e�<�u� -C�WF�� Uq9&A����S�!�W���CQ�^���/p�S /@���@���������vT[D'�$�g��61na�L�Ol SAŀrqrf��H˶��`�rJ���_D+9\����P��?��8��iuY�=�����A3���#@L� t(S��d�Z;O�(���k08��o�Y�4�w�tL�C$C�b>��O�R�kL�ϑϒ�"8#���[v�2B�g�8�[�EO<��y7�v��4]�>��h����L�7ִ����@Ӓ;���]��pV��_�D��%���CP4ߏ�g��b�43s���$;�]U���N1�ԉrxI4�Z�J�ܨ�e���<�g��v�|����'�B����c�.v��Wo��7����.h����B���9m�,����uǨc�9Y^���3���^zs�~-����[�;��BC�6�8�)i�O8� 廉�C�K�_{��۱ ���%���A�ɷ`������t�k���\E�[,䧱�';��:j����𧭧��Q�llendstream +xڝYݏ۸�_��'�eI�,+���n��]��٦(�>�m1�H�������J����z�3�r��j���EwYd[��� ޥwE�"�;���K$�]�1�o0��6���n=������>���a�K��h%��vw�P�s���v����" +�������x��W�\���ReA��4�qf鋂A��.�t�hթ�����2�6�)����.���늣 �݂.o; �)�Fjdz�Z���bH� +ӰXF�1%�p ��xzx�_WI|]��BXez��u�]յlhg���;c�̹2~`�CEI�P.����@|2<�.�C}��Q]��_o3>�6�'+��%�����]�X�\��ˆ$� ]n��qcJu|dYW���q��R�A���4^��xo����VJ�����w�1S��o������8���Q-��c#p������ -<�c�_�L+��h�����Zu��~_*��Q���������Ga%ޣRn����ijr�����2� D���Q��[M�A���o��As� ���%xS"�#=)ݢoF���(��o��壚�i����3���k��y@)]�})�a�gy��Øf���P�]�O��.�����D�3�$,���^��ԥ������D $��wm2ߵ}�mOS�z�l�0��&!�n�$�ݘ$�G�� ]T��Y�?��*̳tU�%©T��B���t�S�:��%:Ϥ���,�!�)d��L�F�e ���yG���6��q�C��C��R0��]�i�2!2�E<S,B(>�/�/?��@O�B5���Q�cX���bqP�r��}g�L����LA@l��'�z!4�� �($T�2�)g��6��,�M������b�m�T�J�5 +o�c��J4���L�{��=���f�h�Jz1_ ��1�Z.R��|D�� �����*q���8I&�]�{�lVL.DO8�� -Za��^�&bfq�+V���Et����{֒dP�Ø2v��'��_w���^���L��[�\?�c�����#����u��AԼ��6F��2ۗ�e�.�`M!�_��8��S`��`<�%�� ��d��_t�*�M%��[��Y�:&˂�ʎ�]e��䱆C� B��Rj /��"QX���[�ek���a@�{�I/�K^s�N��a�����E[���r�����EղB�ՏL�� 7 0� +�&ԑ�^���G�H9��gG k��hᤃ�����_c���Ή�8!�R����V�nĤi�-��!r��Q���B�%f�;�[J����Hn<$�K���m�no��U��'��m�x@/����C'Q��7�(i�T"�/�sD�OX�(�ᬠ���S���GZ5ȉ�f_F[E�f"��� �������'���\݀['!��r���{���U{�i�f\1ݏ�&���d�P7 +SJ_ +�Z)�j�����_;q� %�^`Z@�O�P����S�X�2�a7<0iu���EU:�=l��@��nx��������:(@��;�xV�a�1:��$�A� |��x@��̼j�p?�t���F��\��|/0��k�*+�,�(�Ku <�c ���z����A��uزC�6�HL����~�=A�̓OK�m��Q{�\{��z6�c�q<<{�g���.����`z��ƻ�wx�ݣE3���C���6cR��y���y.��m�\|*b �xv�,ّ�,��B�}Š!�{8�$�y�r/t�W"+�J�\�r�9���,|���"hV,�0#K�,8 ���;��U�h~���r��3z���=�b�:��@�"�<���S�f\��B��ژ�67��.�\S��\4ocQ9���D��# �@h�/�yJ�67gyp������:R���6O᧪l�(�����4�aOL��,�+�������5@�L%��`�9W +ъ�B4^��"d��"yw�;��Ԛˣ�_�ӄ�w|��";ϲ��<�q������_�?���?�>�r^��:D���+��Æ������x�)�uȫ�>�P���<�G�K �{ +�tV@;"��?��6�*����� '�v9�M�[��S��k�TP,�R�h�����^�� +��h�����8������A�'�>K��/��N�:h�~����R�!��y�Xk���o���4'\w����NSz�H����/D2��-�S���L!j������,��3B�_[�eW�A+#dA�s��\���{�7Q����j��AD;�|�d�5��y���^Y�W +�pr���2��9×�#&Q�k ��J��ߏ�g��b�43s���4��]����N1�ԉrxD�c�F�xnT�3��p�볂A|�k��ƺ��`�C���1@;l~���P�xj�?Joh�/��F���9��< ����eǨc�9y]�6�����{{�-�����[�;��BC�6�$J(i�O8� 廉�C�K�z6�۱ ��ܦ���A��g`�g�d���X/����gX�Oc�O��yu�B�ﵡ�ZO-�0�k�endstream endobj -1834 0 obj << +1831 0 obj << /Type /Page -/Contents 1835 0 R -/Resources 1833 0 R +/Contents 1832 0 R +/Resources 1830 0 R /MediaBox [0 0 609.714 789.041] /Parent 1773 0 R -/Annots [ 1839 0 R ] +/Annots [ 1836 0 R ] >> endobj -1839 0 obj << +1836 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [371.655 582.727 414.738 590.748] @@ -5706,115 +5724,115 @@ endobj /A << /S /GoTo /D (gfdl) >> >> endobj 1231 0 obj << -/D [1834 0 R /XYZ 71.731 718.306 null] +/D [1831 0 R /XYZ 71.731 718.306 null] >> endobj 18 0 obj << -/D [1834 0 R /XYZ 350.659 703.236 null] +/D [1831 0 R /XYZ 350.659 703.236 null] >> endobj 1232 0 obj << -/D [1834 0 R /XYZ 71.731 692.504 null] +/D [1831 0 R /XYZ 71.731 692.504 null] >> endobj 22 0 obj << -/D [1834 0 R /XYZ 285.389 651.159 null] +/D [1831 0 R /XYZ 285.389 651.159 null] >> endobj -1836 0 obj << -/D [1834 0 R /XYZ 71.731 638.721 null] +1833 0 obj << +/D [1831 0 R /XYZ 71.731 638.721 null] >> endobj -1837 0 obj << -/D [1834 0 R /XYZ 71.731 627.443 null] +1834 0 obj << +/D [1831 0 R /XYZ 71.731 627.443 null] >> endobj -1838 0 obj << -/D [1834 0 R /XYZ 71.731 617.481 null] +1835 0 obj << +/D [1831 0 R /XYZ 71.731 617.481 null] >> endobj -1840 0 obj << -/D [1834 0 R /XYZ 71.731 577.746 null] +1837 0 obj << +/D [1831 0 R /XYZ 71.731 577.746 null] >> endobj 1233 0 obj << -/D [1834 0 R /XYZ 71.731 546.646 null] +/D [1831 0 R /XYZ 71.731 546.646 null] >> endobj 26 0 obj << -/D [1834 0 R /XYZ 191.962 503.549 null] +/D [1831 0 R /XYZ 191.962 503.549 null] >> endobj -1841 0 obj << -/D [1834 0 R /XYZ 71.731 494.726 null] +1838 0 obj << +/D [1831 0 R /XYZ 71.731 494.726 null] >> endobj -1842 0 obj << -/D [1834 0 R /XYZ 71.731 448.949 null] +1839 0 obj << +/D [1831 0 R /XYZ 71.731 448.949 null] >> endobj -1843 0 obj << -/D [1834 0 R /XYZ 71.731 405.113 null] +1840 0 obj << +/D [1831 0 R /XYZ 71.731 405.113 null] >> endobj 1234 0 obj << -/D [1834 0 R /XYZ 71.731 348.326 null] +/D [1831 0 R /XYZ 71.731 348.326 null] >> endobj 30 0 obj << -/D [1834 0 R /XYZ 216.752 305.229 null] +/D [1831 0 R /XYZ 216.752 305.229 null] +>> endobj +1841 0 obj << +/D [1831 0 R /XYZ 71.731 296.406 null] +>> endobj +1842 0 obj << +/D [1831 0 R /XYZ 71.731 276.531 null] +>> endobj +1843 0 obj << +/D [1831 0 R /XYZ 345.258 265.737 null] >> endobj 1844 0 obj << -/D [1834 0 R /XYZ 71.731 296.406 null] +/D [1831 0 R /XYZ 184.718 252.785 null] >> endobj 1845 0 obj << -/D [1834 0 R /XYZ 71.731 276.531 null] +/D [1831 0 R /XYZ 71.731 239.834 null] >> endobj 1846 0 obj << -/D [1834 0 R /XYZ 345.258 265.737 null] +/D [1831 0 R /XYZ 71.731 219.744 null] >> endobj 1847 0 obj << -/D [1834 0 R /XYZ 184.718 252.785 null] +/D [1831 0 R /XYZ 510.317 208.95 null] >> endobj 1848 0 obj << -/D [1834 0 R /XYZ 71.731 239.834 null] +/D [1831 0 R /XYZ 302.6 195.998 null] >> endobj 1849 0 obj << -/D [1834 0 R /XYZ 71.731 219.744 null] +/D [1831 0 R /XYZ 71.731 183.047 null] >> endobj 1850 0 obj << -/D [1834 0 R /XYZ 510.317 208.95 null] +/D [1831 0 R /XYZ 71.731 175.909 null] >> endobj 1851 0 obj << -/D [1834 0 R /XYZ 302.6 195.998 null] +/D [1831 0 R /XYZ 269.484 152.162 null] >> endobj 1852 0 obj << -/D [1834 0 R /XYZ 71.731 183.047 null] +/D [1831 0 R /XYZ 495.373 152.162 null] >> endobj 1853 0 obj << -/D [1834 0 R /XYZ 71.731 175.909 null] +/D [1831 0 R /XYZ 266.563 139.211 null] >> endobj 1854 0 obj << -/D [1834 0 R /XYZ 269.484 152.162 null] +/D [1831 0 R /XYZ 501.46 139.211 null] >> endobj 1855 0 obj << -/D [1834 0 R /XYZ 495.373 152.162 null] +/D [1831 0 R /XYZ 315.916 126.26 null] >> endobj 1856 0 obj << -/D [1834 0 R /XYZ 266.563 139.211 null] +/D [1831 0 R /XYZ 71.731 113.308 null] >> endobj 1857 0 obj << -/D [1834 0 R /XYZ 501.46 139.211 null] +/D [1831 0 R /XYZ 314.212 113.308 null] >> endobj 1858 0 obj << -/D [1834 0 R /XYZ 315.916 126.26 null] +/D [1831 0 R /XYZ 512.529 113.308 null] >> endobj 1859 0 obj << -/D [1834 0 R /XYZ 71.731 113.308 null] +/D [1831 0 R /XYZ 270.827 100.357 null] >> endobj 1860 0 obj << -/D [1834 0 R /XYZ 314.212 113.308 null] ->> endobj -1861 0 obj << -/D [1834 0 R /XYZ 512.529 113.308 null] ->> endobj -1862 0 obj << -/D [1834 0 R /XYZ 270.827 100.357 null] ->> endobj -1863 0 obj << -/D [1834 0 R /XYZ 509.011 100.357 null] +/D [1831 0 R /XYZ 509.011 100.357 null] >> endobj -1833 0 obj << +1830 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1866 0 obj << +1863 0 obj << /Length 2045 /Filter /FlateDecode >> @@ -5831,174 +5849,174 @@ xڭX ��+"�n����_3P����6�a�O~�ް|���4��A >+9�9����2nendstream endobj -1865 0 obj << +1862 0 obj << /Type /Page -/Contents 1866 0 R -/Resources 1864 0 R +/Contents 1863 0 R +/Resources 1861 0 R /MediaBox [0 0 609.714 789.041] /Parent 1773 0 R >> endobj -1867 0 obj << -/D [1865 0 R /XYZ 258.45 708.344 null] +1864 0 obj << +/D [1862 0 R /XYZ 258.45 708.344 null] >> endobj -1868 0 obj << -/D [1865 0 R /XYZ 506.431 708.344 null] +1865 0 obj << +/D [1862 0 R /XYZ 506.431 708.344 null] >> endobj -1869 0 obj << -/D [1865 0 R /XYZ 71.731 688.254 null] +1866 0 obj << +/D [1862 0 R /XYZ 71.731 688.254 null] >> endobj -1870 0 obj << -/D [1865 0 R /XYZ 487.099 677.46 null] +1867 0 obj << +/D [1862 0 R /XYZ 487.099 677.46 null] >> endobj 1235 0 obj << -/D [1865 0 R /XYZ 71.731 657.37 null] +/D [1862 0 R /XYZ 71.731 657.37 null] >> endobj 34 0 obj << -/D [1865 0 R /XYZ 164.538 614.272 null] +/D [1862 0 R /XYZ 164.538 614.272 null] >> endobj -1871 0 obj << -/D [1865 0 R /XYZ 71.731 605.45 null] +1868 0 obj << +/D [1862 0 R /XYZ 71.731 605.45 null] +>> endobj +1869 0 obj << +/D [1862 0 R /XYZ 71.731 564.654 null] +>> endobj +1870 0 obj << +/D [1862 0 R /XYZ 71.731 549.71 null] +>> endobj +1871 0 obj << +/D [1862 0 R /XYZ 154.5 538.915 null] >> endobj 1872 0 obj << -/D [1865 0 R /XYZ 71.731 564.654 null] +/D [1862 0 R /XYZ 71.731 538.727 null] >> endobj 1873 0 obj << -/D [1865 0 R /XYZ 71.731 549.71 null] +/D [1862 0 R /XYZ 91.656 520.982 null] >> endobj 1874 0 obj << -/D [1865 0 R /XYZ 154.5 538.915 null] +/D [1862 0 R /XYZ 71.731 508.863 null] >> endobj 1875 0 obj << -/D [1865 0 R /XYZ 71.731 538.727 null] +/D [1862 0 R /XYZ 138.849 498.068 null] >> endobj 1876 0 obj << -/D [1865 0 R /XYZ 91.656 520.982 null] +/D [1862 0 R /XYZ 71.731 495.911 null] >> endobj 1877 0 obj << -/D [1865 0 R /XYZ 71.731 508.863 null] +/D [1862 0 R /XYZ 91.656 480.135 null] >> endobj 1878 0 obj << -/D [1865 0 R /XYZ 138.849 498.068 null] +/D [1862 0 R /XYZ 71.731 455.065 null] >> endobj 1879 0 obj << -/D [1865 0 R /XYZ 71.731 495.911 null] +/D [1862 0 R /XYZ 137.315 444.27 null] >> endobj 1880 0 obj << -/D [1865 0 R /XYZ 91.656 480.135 null] +/D [1862 0 R /XYZ 71.731 442.862 null] >> endobj 1881 0 obj << -/D [1865 0 R /XYZ 71.731 455.065 null] +/D [1862 0 R /XYZ 91.656 426.337 null] >> endobj 1882 0 obj << -/D [1865 0 R /XYZ 137.315 444.27 null] +/D [1862 0 R /XYZ 71.731 414.218 null] >> endobj 1883 0 obj << -/D [1865 0 R /XYZ 71.731 442.862 null] +/D [1862 0 R /XYZ 136.508 403.423 null] >> endobj 1884 0 obj << -/D [1865 0 R /XYZ 91.656 426.337 null] +/D [1862 0 R /XYZ 71.731 403.235 null] >> endobj 1885 0 obj << -/D [1865 0 R /XYZ 71.731 414.218 null] +/D [1862 0 R /XYZ 91.656 385.49 null] >> endobj 1886 0 obj << -/D [1865 0 R /XYZ 136.508 403.423 null] +/D [1862 0 R /XYZ 71.731 373.371 null] >> endobj 1887 0 obj << -/D [1865 0 R /XYZ 71.731 403.235 null] +/D [1862 0 R /XYZ 128.578 362.576 null] >> endobj 1888 0 obj << -/D [1865 0 R /XYZ 91.656 385.49 null] +/D [1862 0 R /XYZ 71.731 361.169 null] >> endobj 1889 0 obj << -/D [1865 0 R /XYZ 71.731 373.371 null] +/D [1862 0 R /XYZ 91.656 344.644 null] >> endobj 1890 0 obj << -/D [1865 0 R /XYZ 128.578 362.576 null] +/D [1862 0 R /XYZ 71.731 319.573 null] >> endobj 1891 0 obj << -/D [1865 0 R /XYZ 71.731 361.169 null] +/D [1862 0 R /XYZ 145.324 308.778 null] >> endobj 1892 0 obj << -/D [1865 0 R /XYZ 91.656 344.644 null] +/D [1862 0 R /XYZ 71.731 306.621 null] >> endobj 1893 0 obj << -/D [1865 0 R /XYZ 71.731 319.573 null] +/D [1862 0 R /XYZ 91.656 290.845 null] >> endobj 1894 0 obj << -/D [1865 0 R /XYZ 145.324 308.778 null] +/D [1862 0 R /XYZ 71.731 278.726 null] >> endobj 1895 0 obj << -/D [1865 0 R /XYZ 71.731 306.621 null] +/D [1862 0 R /XYZ 122.291 267.931 null] >> endobj 1896 0 obj << -/D [1865 0 R /XYZ 91.656 290.845 null] +/D [1862 0 R /XYZ 71.731 266.524 null] >> endobj 1897 0 obj << -/D [1865 0 R /XYZ 71.731 278.726 null] +/D [1862 0 R /XYZ 91.656 249.998 null] >> endobj 1898 0 obj << -/D [1865 0 R /XYZ 122.291 267.931 null] +/D [1862 0 R /XYZ 71.731 231.966 null] >> endobj 1899 0 obj << -/D [1865 0 R /XYZ 71.731 266.524 null] +/D [1862 0 R /XYZ 450.945 219.114 null] >> endobj 1900 0 obj << -/D [1865 0 R /XYZ 91.656 249.998 null] +/D [1862 0 R /XYZ 518.615 219.114 null] >> endobj 1901 0 obj << -/D [1865 0 R /XYZ 71.731 231.966 null] +/D [1862 0 R /XYZ 108.346 206.163 null] >> endobj 1902 0 obj << -/D [1865 0 R /XYZ 450.945 219.114 null] +/D [1862 0 R /XYZ 175.219 206.163 null] >> endobj 1903 0 obj << -/D [1865 0 R /XYZ 518.615 219.114 null] +/D [1862 0 R /XYZ 228.813 206.163 null] >> endobj 1904 0 obj << -/D [1865 0 R /XYZ 108.346 206.163 null] +/D [1862 0 R /XYZ 281.858 206.163 null] >> endobj 1905 0 obj << -/D [1865 0 R /XYZ 175.219 206.163 null] +/D [1862 0 R /XYZ 359.541 206.163 null] >> endobj 1906 0 obj << -/D [1865 0 R /XYZ 228.813 206.163 null] +/D [1862 0 R /XYZ 429.483 206.163 null] >> endobj 1907 0 obj << -/D [1865 0 R /XYZ 281.858 206.163 null] +/D [1862 0 R /XYZ 477.557 206.163 null] >> endobj 1908 0 obj << -/D [1865 0 R /XYZ 359.541 206.163 null] +/D [1862 0 R /XYZ 71.731 193.211 null] >> endobj 1909 0 obj << -/D [1865 0 R /XYZ 429.483 206.163 null] +/D [1862 0 R /XYZ 140.493 193.211 null] >> endobj 1910 0 obj << -/D [1865 0 R /XYZ 477.557 206.163 null] +/D [1862 0 R /XYZ 197.219 193.211 null] >> endobj 1911 0 obj << -/D [1865 0 R /XYZ 71.731 193.211 null] +/D [1862 0 R /XYZ 71.731 186.791 null] >> endobj 1912 0 obj << -/D [1865 0 R /XYZ 140.493 193.211 null] ->> endobj -1913 0 obj << -/D [1865 0 R /XYZ 197.219 193.211 null] ->> endobj -1914 0 obj << -/D [1865 0 R /XYZ 71.731 186.791 null] ->> endobj -1915 0 obj << -/D [1865 0 R /XYZ 387.15 175.279 null] +/D [1862 0 R /XYZ 387.15 175.279 null] >> endobj 1236 0 obj << -/D [1865 0 R /XYZ 71.731 142.238 null] +/D [1862 0 R /XYZ 71.731 142.238 null] >> endobj -1864 0 obj << +1861 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1918 0 obj << +1915 0 obj << /Length 1360 /Filter /FlateDecode >> @@ -6006,15 +6024,15 @@ stream x��WY��6~��PѢ����[R�4����M�$(hY��H��#i��;<䕭x[,�P,<<�of8�pH$� �4ET� �8��/O�KD^$��\�OR�J����X1�(4Xmބ����vQ�C��x��C嶺}ѹ�ӡ���w��ǫ�`1Jv�i���6�#J�1n����F�0�I�HgC�[=�����#l��M�,�v��Ej�\���V����~���d��R/�?��melID��z�Ih)x�j����Q�em�8#3N�˦�U��lG�0r��7�p��p�X`��$�s�H�ՂK�(�[��_���Y�L�� M�s�@��.��� U[�P����@H&Q��̟�O���ARJ�A��4eA��#��( �7�p�Z99W��D"���(9b�� �@��@R[�c�����<H V8" $� 9����BA��[}*���uY�u����%���HLL����rh�Y�ۇ~7y�nHSD�ˋg0ld�!b� $�͖�EswU8��&^����P��E�[��{���J�a��j�s6<�`4G #8�F�������|�`* ���<n;�z_#���/ �$9�^ou[)�h�����h�k�X�P�n����s���Y�X'��x�"��s��P��"�P&8�'ϧ��yq���*W>MzW�a��qǧI�<9wy�e��#����9T��'"����IQ�[M��}S�y����[֪�y�Ĺ�߂�k��T���T~��J��j7����&�x@:�:��3�����Zل:�ֈ�=|������� �v�h�,�}Kд�j�F�ތ�Zu���4��y �ƒr�����G����o�ސ~�� ���o��m]�S.��s!���뀊V�����%@�B�K�F. [&��W�/�^>�B@V��v[���0�JQ�tb�Rw��T=�qZ&&ӑU��s��&B�f�T�1�j��]����rf�ԍ�^f:�(p���3f�=�M�����r�J�@3��k���qN]��/t��ږ�Hb(�&�f���5# ��]���\����8����½� � ?�pB/�+#%|�z�6�ޞ�v���W �k����E�����_qD�����K�����D^^4�.aU���:��CJ��5��U7* �,U�ƦT�3����ne��-��l���¶��k�{��G}��]7�M�2���-ƴ�����!�j|)(������-x���c�G�v#XN���(o��R(��Xl���?�~���5�?<���h�!���ˠ3���U��`��QT0�0>h1>�s�9�?ɡ��endstream endobj -1917 0 obj << +1914 0 obj << /Type /Page -/Contents 1918 0 R -/Resources 1916 0 R +/Contents 1915 0 R +/Resources 1913 0 R /MediaBox [0 0 609.714 789.041] /Parent 1773 0 R -/Annots [ 1926 0 R ] +/Annots [ 1923 0 R ] >> endobj -1926 0 obj << +1923 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.336 367.004 343.551 381.948] @@ -6022,34 +6040,34 @@ endobj /A << /S /GoTo /D (gloss-bugzilla) >> >> endobj 38 0 obj << -/D [1917 0 R /XYZ 297.751 705.748 null] +/D [1914 0 R /XYZ 297.751 705.748 null] >> endobj -1919 0 obj << -/D [1917 0 R /XYZ 71.731 705.533 null] +1916 0 obj << +/D [1914 0 R /XYZ 71.731 705.533 null] >> endobj -1920 0 obj << -/D [1917 0 R /XYZ 71.731 696.925 null] +1917 0 obj << +/D [1914 0 R /XYZ 71.731 696.925 null] >> endobj -1921 0 obj << -/D [1917 0 R /XYZ 71.731 682.032 null] +1918 0 obj << +/D [1914 0 R /XYZ 71.731 682.032 null] >> endobj -1922 0 obj << -/D [1917 0 R /XYZ 71.731 667.088 null] +1919 0 obj << +/D [1914 0 R /XYZ 71.731 667.088 null] >> endobj -1923 0 obj << -/D [1917 0 R /XYZ 71.731 667.088 null] +1920 0 obj << +/D [1914 0 R /XYZ 71.731 667.088 null] >> endobj -1927 0 obj << -/D [1917 0 R /XYZ 71.731 329.146 null] +1924 0 obj << +/D [1914 0 R /XYZ 71.731 329.146 null] >> endobj -1928 0 obj << -/D [1917 0 R /XYZ 433.454 306.232 null] +1925 0 obj << +/D [1914 0 R /XYZ 433.454 306.232 null] >> endobj -1916 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R /F35 1463 0 R /F32 1139 0 R >> +1913 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R /F35 1463 0 R /F32 1139 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1932 0 obj << +1929 0 obj << /Length 2414 /Filter /FlateDecode >> @@ -6063,64 +6081,64 @@ q ����l/�����Y� n��9w�+'�W�qvժ+���Z^jXL/��U�1 B2$�S����FW%8��= * ��5����_�3�k�a�['���)��2סWge��f��=n��:��/�������9����F'��|��o�ج����yO0ZSԘ����y����a�v�q', ��C:e�a\8`q�n�����ɚ֑�^B� "�^Mr=� dh7�^�-�'� n��jp���W ���k��-7�v�9:�K���7]�gs^Z�OR؉����B_�:_\hp���Wp�,|�e�pS�$� <M�5��o�9+� /�5-��á���?�n�W�� 4�����B��q']¾˘�C�'�'��(��*Ӕ_�UB���)�r�l�Hθ֒�Ѵ�V��<�آ�sۯ$j2�`U�H.0���"(�+�����ј\�)N�����!�F��ndy{���mP��c7��'�ET�����X`�i��ٸz��u���@> #'�ȳY9��}�f�}SU+^^�QA I߮��1�&~�(���4m�Ԧ@�q�W�D�@�ߌ�uS������=����g�����endstream endobj -1931 0 obj << +1928 0 obj << /Type /Page -/Contents 1932 0 R -/Resources 1930 0 R +/Contents 1929 0 R +/Resources 1927 0 R /MediaBox [0 0 609.714 789.041] /Parent 1773 0 R -/Annots [ 1939 0 R 1940 0 R 1950 0 R 1952 0 R 1954 0 R 1956 0 R 1958 0 R 1960 0 R ] +/Annots [ 1936 0 R 1937 0 R 1947 0 R 1949 0 R 1951 0 R 1953 0 R 1955 0 R 1957 0 R ] >> endobj -1939 0 obj << +1936 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [508.095 566.273 537.983 575.184] /Subtype /Link /A << /S /GoTo /D (os-specific) >> >> endobj -1940 0 obj << +1937 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [71.731 553.321 84.184 562.233] /Subtype /Link /A << /S /GoTo /D (os-specific) >> >> endobj -1950 0 obj << +1947 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 319.519 133.11 328.43] /Subtype /Link /A << /S /GoTo /D (install-perl) >> >> endobj -1952 0 obj << +1949 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 301.586 191.202 310.498] /Subtype /Link /A << /S /GoTo /D (install-database) >> >> endobj -1954 0 obj << +1951 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 285.711 166.176 292.565] /Subtype /Link /A << /S /GoTo /D (install-webserver) >> >> endobj -1956 0 obj << +1953 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 265.721 150.823 274.632] /Subtype /Link /A << /S /GoTo /D (install-bzfiles) >> >> endobj -1958 0 obj << +1955 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 249.845 169.364 256.699] /Subtype /Link /A << /S /GoTo /D (install-perlmodules) >> >> endobj -1960 0 obj << +1957 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [92.371 229.855 209.093 238.767] @@ -6128,119 +6146,119 @@ endobj /A << /S /GoTo /D (install-MTA) >> >> endobj 1237 0 obj << -/D [1931 0 R /XYZ 71.731 718.306 null] +/D [1928 0 R /XYZ 71.731 718.306 null] >> endobj 42 0 obj << -/D [1931 0 R /XYZ 354.129 703.236 null] +/D [1928 0 R /XYZ 354.129 703.236 null] >> endobj 1238 0 obj << -/D [1931 0 R /XYZ 71.731 692.184 null] +/D [1928 0 R /XYZ 71.731 692.184 null] >> endobj 46 0 obj << -/D [1931 0 R /XYZ 196.111 651.159 null] +/D [1928 0 R /XYZ 196.111 651.159 null] >> endobj -1933 0 obj << -/D [1931 0 R /XYZ 71.731 650.944 null] +1930 0 obj << +/D [1928 0 R /XYZ 71.731 650.944 null] >> endobj -1934 0 obj << -/D [1931 0 R /XYZ 71.731 632.374 null] +1931 0 obj << +/D [1928 0 R /XYZ 71.731 632.374 null] +>> endobj +1932 0 obj << +/D [1928 0 R /XYZ 187.629 620.933 null] >> endobj 1935 0 obj << -/D [1931 0 R /XYZ 187.629 620.933 null] +/D [1928 0 R /XYZ 71.731 581.381 null] >> endobj 1938 0 obj << -/D [1931 0 R /XYZ 71.731 581.381 null] +/D [1928 0 R /XYZ 71.731 548.34 null] +>> endobj +1939 0 obj << +/D [1928 0 R /XYZ 71.731 524.594 null] +>> endobj +1940 0 obj << +/D [1928 0 R /XYZ 71.731 504.504 null] >> endobj 1941 0 obj << -/D [1931 0 R /XYZ 71.731 548.34 null] +/D [1928 0 R /XYZ 71.731 467.707 null] >> endobj 1942 0 obj << -/D [1931 0 R /XYZ 71.731 524.594 null] +/D [1928 0 R /XYZ 118.555 429.143 null] >> endobj 1943 0 obj << -/D [1931 0 R /XYZ 71.731 504.504 null] +/D [1928 0 R /XYZ 71.731 387.21 null] >> endobj 1944 0 obj << -/D [1931 0 R /XYZ 71.731 467.707 null] +/D [1928 0 R /XYZ 71.731 360.739 null] >> endobj 1945 0 obj << -/D [1931 0 R /XYZ 118.555 429.143 null] +/D [1928 0 R /XYZ 71.731 347.414 null] >> endobj 1946 0 obj << -/D [1931 0 R /XYZ 71.731 387.21 null] ->> endobj -1947 0 obj << -/D [1931 0 R /XYZ 71.731 360.739 null] +/D [1928 0 R /XYZ 71.731 337.452 null] >> endobj 1948 0 obj << -/D [1931 0 R /XYZ 71.731 347.414 null] ->> endobj -1949 0 obj << -/D [1931 0 R /XYZ 71.731 337.452 null] ->> endobj -1951 0 obj << -/D [1931 0 R /XYZ 71.731 319.519 null] +/D [1928 0 R /XYZ 71.731 319.519 null] >> endobj -1953 0 obj << -/D [1931 0 R /XYZ 71.731 301.586 null] +1950 0 obj << +/D [1928 0 R /XYZ 71.731 301.586 null] >> endobj -1955 0 obj << -/D [1931 0 R /XYZ 71.731 285.711 null] +1952 0 obj << +/D [1928 0 R /XYZ 71.731 285.711 null] >> endobj -1957 0 obj << -/D [1931 0 R /XYZ 71.731 265.721 null] +1954 0 obj << +/D [1928 0 R /XYZ 71.731 265.721 null] >> endobj -1959 0 obj << -/D [1931 0 R /XYZ 71.731 249.845 null] +1956 0 obj << +/D [1928 0 R /XYZ 71.731 249.845 null] >> endobj -1961 0 obj << -/D [1931 0 R /XYZ 71.731 217.277 null] +1958 0 obj << +/D [1928 0 R /XYZ 71.731 217.277 null] >> endobj 1239 0 obj << -/D [1931 0 R /XYZ 71.731 198.971 null] +/D [1928 0 R /XYZ 71.731 198.971 null] >> endobj 50 0 obj << -/D [1931 0 R /XYZ 138.296 161.756 null] +/D [1928 0 R /XYZ 138.296 161.756 null] >> endobj -1962 0 obj << -/D [1931 0 R /XYZ 71.731 154.403 null] +1959 0 obj << +/D [1928 0 R /XYZ 71.731 154.403 null] >> endobj -1963 0 obj << -/D [1931 0 R /XYZ 163.177 141.631 null] +1960 0 obj << +/D [1928 0 R /XYZ 163.177 141.631 null] >> endobj -1964 0 obj << -/D [1931 0 R /XYZ 71.731 135.242 null] +1961 0 obj << +/D [1928 0 R /XYZ 71.731 135.242 null] >> endobj -1965 0 obj << -/D [1931 0 R /XYZ 164.427 110.747 null] +1962 0 obj << +/D [1928 0 R /XYZ 164.427 110.747 null] >> endobj -1930 0 obj << -/Font << /F23 1125 0 R /F44 1925 0 R /F48 1937 0 R /F27 1132 0 R /F35 1463 0 R /F33 1230 0 R >> +1927 0 obj << +/Font << /F23 1125 0 R /F44 1922 0 R /F48 1934 0 R /F27 1132 0 R /F35 1463 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1968 0 obj << -/Length 1961 +1965 0 obj << +/Length 1960 /Filter /FlateDecode >> stream x��Xݓ� ���O�<����L�Nһ|M�����t�LG�i�s�GHi}�__��d���N�З�H� �����"�O.2)��h-�4Y�իp����_I�X��j"��ë���x��4^<�J�b�-�8y-���|(�N��*J� �~[��8M�'��~�os<�_�{��a4�ęX��~ 23Ǣx!��U�� 3�+�=��ޡ,^]�)�&�M�7�Fg@KvY^�XE��Q��e� ���⾧"�w�U��۶���.��VoId�Xb����M�hZh�=����$P�[�k\��z�^ց�}\�$�� ��R�0hz���x&I�����~ոP�uB�jjM�����1˝]�+���ڪ��v����!\�#�$�X�!��P�t�$o�]����~ -��/�������yXfa�]�)i��LN}���P�.�WT�ݯ��* �`���ꊅW�� �����mS�a)�#�P,�0�-AN��S-�~x?���JKk��h���( ~è4ő���C����G�S��k?��?�N�4 �_�(�J��%C���ޒ�oϐ���rlq,�X(ɻ�g�`���l��>F^B\�X��T�^�_�N�)u����w�mQ�eL�uN�-$'u6�.0�� �a"?�t�z<Z�r]c���X����y��'If�C��L%���#�0[�6N3�ꇚ�7��{m>2�,�npͣ �nؕתBL^n��H׀�p��$�q%y� -ω%H��#jTf:�1 t�SK*5����|r{��H��pBæ�(���m���44L|\����(NDy(꽦���<�{�_e��.���]�|�S��!�1L���9n���;B�w��%W�a]N�z�MaCY��0�n���i;:F�'���+^�$�9uʦޙ}o�<�Tr���W�"���P��"�_�1��D�%�($��V@B��Y�u��^AM����Y]�+�Cb�1ї���e�?�I�7�=��0C�`H��՛��k �������$�O����Qy=?-�$�z�`��!����=Nu�6��U�Pռ5�m\��H�P��d���!َ!���T�8:�v�1�h�U�88t}Q1 ]Ϊ�<���o���gj2d�R��&�w��%��U���T�9��Ѵ6#��6���:���ڌ,�ͤcR�q�6#�6�ImF��8�k3$Х<�[�рk`h/Hvr�[���ڸ!�'�~�)&�hg"_,�^�MD�p��-\�����9\�-V㣍�.�.`p� -.��B)�u�:P�3�H�?b'�ac�C�˰1>�`r�LG؈4~Z��Ć��� ,�Q�������r�h� �������a܊��㤏%]��h�=� -�����X��?��:�˱LUr�*��Y i�Q�WPl�CcJ�����Z�1Ƞ;Y����x�E����t�S� -����v�Spj�}]��y~�^�ywZ�����߃�j"4�/p�������s?��}�9�Y�&M��^�Sk����]���H]��� pe��?"��d|C��'�Z�/w^XS�:��{|M���6U��n� ���sE��"pЃ� 1i�R�{H#hCx��� �fE�##RX����F��Q3�lۗ=�P�w=���(��+M��=�2g\h��( ����C{|1��� ����NPy�8+o�����dq��s����l�G��`���8�B�LB�V[��_u8|2���{G��L#��G������&�dm@�nJ�c �8���&�^3аB�GR5�r���(��_,%ʽ�\;���� V?��k�?LceEӘ-�Vs�;�戒������8C -{����tKp��H^���{uG��B�w$�;�Gr�#]�����z7&��P�?*��^��y�X�k)�`���~V�-�a��endstream +��/�������yXfa�]�)i��LN}���P�.�WT�ݯ��* �`���ꊅW�� �����mS�a)�#�P,�0�-AN��S-�~x?���JKk��h���( ~è4ő���C����G�S��k?��?�N�4 �_�(�J��%C���ޒ�oϐ���rl�pJo:����09n�x a�S��R�z�i:���E.JD�Kޠ�E��1��9%����٘��P���#F��t�9��d�u�գ&c��NJz������P�yU*2�������l��8�XD��j��Tl����<>c�ػ�5&�aWZ\� +1Gxe�OЗ"]8� K��[ĕ�Y�*<&�h ����Q�� Xw�$́NU,9�@�4's;��u6��� �:���r��A���Ј^2�q��R�8塨��&�>�$�|�]3l���{we�9O����0Q +�g渝�����3ܭޖ\4�u9}��#6� e1ĺ#�p[�A�ڦ��A���ήx-�,��)�zg����S1�]Rl�^q�0_�.C=�F��f<za����������X ��g���z5-`�"��gu�P�}�D_x��VؖM�&����PtD��!��!��Vo.�V�O ��8>�>2<GI������`�m� sr$�����8��XVW9C=T�֔�qͮ#�C�����l�d;�xX��RXC��X�Iưc��vT���t��E�4t7���`�⾁��)ɐ%J哒<ܛ�ap.w��WmnSi0��^G�Ҍ��Ҍ�G���J3��4��IiƁ�Ҍ��Ҍ�&�E�4�/͐@���Rl�D����� ��Mn=�i�Cjㆬ���X||�d{m7�� R�p��g�D�p�X��6�#�Ps���\�+�Pj��.���@�k�P� A��@��3��9Z0�/����� 2a#f��i�"ޣ7��Gm�ۃ���q��&�����z�q+�cG��>�t��-��+x�/���@b������TP�.�2U� � gg5� GE4^A�-�)Y���nk�� ��Ld�{���;�N}*�"p���)ZL��qx��u�����rx,��i���z}2�������"�_��og����ɋ�Xdfm�4 �.x@N��Қ�st)VP�"u��'���I�����I� �c�HCh���yaM��lS��1�s��T�ƺ����Ǯ�A���AJ6Ĥ�K��!�8� �% +J�hj����Ha���͂kD��m_v�$B��� r&�p��4�z��L˜q]���â���oN���ŀC��&���:A=�㬼A���*�����O{�=0����}w ��92 �[m��K|���������3���9܂�J�������)!�5�S�(c�盄{�@� +�I�P��/�H���(��Op���.~6X��mj�l0��Mc�<[�쨚#JN�G���#�)졲ގ�-���#y=�;���~]ߑ< +_�H��tAcl��ݘn@���\�2{���Ed`I��pԂK��W9���0��endstream endobj -1967 0 obj << +1964 0 obj << /Type /Page -/Contents 1968 0 R -/Resources 1966 0 R +/Contents 1965 0 R +/Resources 1963 0 R /MediaBox [0 0 609.714 789.041] -/Parent 1990 0 R -/Annots [ 1986 0 R ] +/Parent 1987 0 R +/Annots [ 1983 0 R ] >> endobj -1986 0 obj << +1983 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [487.887 245.191 505.55 254.102] @@ -6248,97 +6266,97 @@ endobj /A << /S /GoTo /D (gloss-cgi) >> >> endobj 1240 0 obj << -/D [1967 0 R /XYZ 71.731 718.306 null] +/D [1964 0 R /XYZ 71.731 718.306 null] >> endobj 54 0 obj << -/D [1967 0 R /XYZ 227.213 707.841 null] +/D [1964 0 R /XYZ 227.213 707.841 null] >> endobj -1969 0 obj << -/D [1967 0 R /XYZ 71.731 697.476 null] +1966 0 obj << +/D [1964 0 R /XYZ 71.731 697.476 null] >> endobj 1241 0 obj << -/D [1967 0 R /XYZ 71.731 672.608 null] +/D [1964 0 R /XYZ 71.731 672.608 null] >> endobj 58 0 obj << -/D [1967 0 R /XYZ 156.121 640.294 null] +/D [1964 0 R /XYZ 156.121 640.294 null] +>> endobj +1967 0 obj << +/D [1964 0 R /XYZ 71.731 631.842 null] +>> endobj +1968 0 obj << +/D [1964 0 R /XYZ 163.177 621.365 null] +>> endobj +1969 0 obj << +/D [1964 0 R /XYZ 71.731 614.976 null] >> endobj 1970 0 obj << -/D [1967 0 R /XYZ 71.731 631.842 null] +/D [1964 0 R /XYZ 367.427 603.432 null] >> endobj 1971 0 obj << -/D [1967 0 R /XYZ 163.177 621.365 null] +/D [1964 0 R /XYZ 71.731 588.324 null] >> endobj 1972 0 obj << -/D [1967 0 R /XYZ 71.731 614.976 null] +/D [1964 0 R /XYZ 71.731 573.38 null] >> endobj 1973 0 obj << -/D [1967 0 R /XYZ 367.427 603.432 null] +/D [1964 0 R /XYZ 363.982 563.881 null] >> endobj 1974 0 obj << -/D [1967 0 R /XYZ 71.731 588.324 null] +/D [1964 0 R /XYZ 331.234 540.568 null] >> endobj 1975 0 obj << -/D [1967 0 R /XYZ 71.731 573.38 null] +/D [1964 0 R /XYZ 71.731 512.673 null] +>> endobj +1242 0 obj << +/D [1964 0 R /XYZ 71.731 468.738 null] +>> endobj +62 0 obj << +/D [1964 0 R /XYZ 183.546 433.37 null] >> endobj 1976 0 obj << -/D [1967 0 R /XYZ 363.982 563.881 null] +/D [1964 0 R /XYZ 71.731 424.733 null] >> endobj 1977 0 obj << -/D [1967 0 R /XYZ 331.234 540.568 null] +/D [1964 0 R /XYZ 163.177 414.441 null] >> endobj 1978 0 obj << -/D [1967 0 R /XYZ 71.731 512.673 null] ->> endobj -1242 0 obj << -/D [1967 0 R /XYZ 71.731 468.738 null] ->> endobj -62 0 obj << -/D [1967 0 R /XYZ 183.546 433.37 null] +/D [1964 0 R /XYZ 71.731 408.052 null] >> endobj 1979 0 obj << -/D [1967 0 R /XYZ 71.731 424.733 null] +/D [1964 0 R /XYZ 364.877 396.508 null] >> endobj 1980 0 obj << -/D [1967 0 R /XYZ 163.177 414.441 null] ->> endobj -1981 0 obj << -/D [1967 0 R /XYZ 71.731 408.052 null] ->> endobj -1982 0 obj << -/D [1967 0 R /XYZ 364.877 396.508 null] ->> endobj -1983 0 obj << -/D [1967 0 R /XYZ 71.731 376.419 null] +/D [1964 0 R /XYZ 71.731 376.419 null] >> endobj 1243 0 obj << -/D [1967 0 R /XYZ 71.731 324.678 null] +/D [1964 0 R /XYZ 71.731 324.678 null] >> endobj 66 0 obj << -/D [1967 0 R /XYZ 190.186 285.405 null] +/D [1964 0 R /XYZ 190.186 285.405 null] >> endobj -1984 0 obj << -/D [1967 0 R /XYZ 71.731 278.053 null] +1981 0 obj << +/D [1964 0 R /XYZ 71.731 278.053 null] >> endobj -1985 0 obj << -/D [1967 0 R /XYZ 71.731 258.142 null] +1982 0 obj << +/D [1964 0 R /XYZ 71.731 258.142 null] >> endobj -1987 0 obj << -/D [1967 0 R /XYZ 435.451 208.493 null] +1984 0 obj << +/D [1964 0 R /XYZ 435.451 208.493 null] >> endobj -1988 0 obj << -/D [1967 0 R /XYZ 71.731 188.404 null] +1985 0 obj << +/D [1964 0 R /XYZ 71.731 188.404 null] >> endobj -1989 0 obj << -/D [1967 0 R /XYZ 384.386 177.609 null] +1986 0 obj << +/D [1964 0 R /XYZ 384.386 177.609 null] >> endobj 1244 0 obj << -/D [1967 0 R /XYZ 71.731 170.471 null] +/D [1964 0 R /XYZ 71.731 170.471 null] >> endobj -1966 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R >> +1963 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1994 0 obj << +1991 0 obj << /Length 3031 /Filter /FlateDecode >> @@ -6359,29 +6377,29 @@ mG V�����+��x�!>w��L0�Iڨ�/���ģYo9ƥ��z�����(Pq����8��#���۱�=PR�ߺw�=f�)WӒI�cH�n��B%2�Գ�@Bd��+~�/��OP��ȩ�2H�P�ۺ��ip��r�y A�n�2��aɨY66�X��e�n`@ϒ��Fl�Q1��/��Ls�1�f�ҡ[]�w{��rE�������T���`�WibWt�.�Z$�'��~gL��_�s�b���7�s�$�Ń������xr:��3.���V��"y 6(R2A�ڊ��>��ֲ���S���X>�ރJ�7��fL����0���E=����P�#72�Deq��A�U_d�IS�w�δZ���V¸,�-�HrT+��,b'��'�u�]��8<���� ݄�|������w�����̩�A�==��`}-'=��`ˆ�tu)ztO��W��0l��v��]�|:O�Ie�G��� �d%�vvƀ��/Ji��0;���N{�vE�Ύ��By4'�"7|�������?4ϡ�/�v ��M�� �F��b��Ҝ���t�<�`�B�+�5�4����q��_ �>e~#�}��+�"oĢDL�!���<t'�:�8x� N7��?Ah[�{$�٪n�E%ؼ���^xp& )NI� ]��;�9q�6� �C-y�������G�Ǎc�d��~��cY��Q�9�v8Ȧ���o~�43EH�7�����÷��������+F���ڱ)��LU�-Wk˼���To^��T'O��şD�QIfTi�k.p����r�endstream endobj -1993 0 obj << +1990 0 obj << /Type /Page -/Contents 1994 0 R -/Resources 1992 0 R +/Contents 1991 0 R +/Resources 1989 0 R /MediaBox [0 0 609.714 789.041] -/Parent 1990 0 R -/Annots [ 2007 0 R 2016 0 R 2017 0 R ] +/Parent 1987 0 R +/Annots [ 2004 0 R 2013 0 R 2014 0 R ] >> endobj -2007 0 obj << +2004 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [146.43 466.808 191.262 475.719] /Subtype /Link /A << /S /GoTo /D (configuration) >> >> endobj -2016 0 obj << +2013 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [446.147 316.671 505.908 325.582] /Subtype /Link /A << /S /GoTo /D (win32-perl-modules) >> >> endobj -2017 0 obj << +2014 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [71.731 290.768 120.707 299.679] @@ -6389,2915 +6407,2916 @@ endobj /A << /S /GoTo /D (install-perlmodules-manual) >> >> endobj 70 0 obj << -/D [1993 0 R /XYZ 166.615 707.841 null] +/D [1990 0 R /XYZ 166.615 707.841 null] +>> endobj +1992 0 obj << +/D [1990 0 R /XYZ 71.731 697.476 null] +>> endobj +1993 0 obj << +/D [1990 0 R /XYZ 180.572 674.765 null] +>> endobj +1994 0 obj << +/D [1990 0 R /XYZ 231.734 674.765 null] >> endobj 1995 0 obj << -/D [1993 0 R /XYZ 71.731 697.476 null] +/D [1990 0 R /XYZ 172.004 661.813 null] >> endobj 1996 0 obj << -/D [1993 0 R /XYZ 180.572 674.765 null] +/D [1990 0 R /XYZ 71.731 659.657 null] >> endobj 1997 0 obj << -/D [1993 0 R /XYZ 231.734 674.765 null] +/D [1990 0 R /XYZ 118.555 624.105 null] >> endobj 1998 0 obj << -/D [1993 0 R /XYZ 172.004 661.813 null] +/D [1990 0 R /XYZ 393.169 612.628 null] >> endobj 1999 0 obj << -/D [1993 0 R /XYZ 71.731 659.657 null] +/D [1990 0 R /XYZ 273.304 600.972 null] >> endobj 2000 0 obj << -/D [1993 0 R /XYZ 118.555 624.105 null] +/D [1990 0 R /XYZ 71.731 579.052 null] >> endobj 2001 0 obj << -/D [1993 0 R /XYZ 393.169 612.628 null] ->> endobj -2002 0 obj << -/D [1993 0 R /XYZ 273.304 600.972 null] ->> endobj -2003 0 obj << -/D [1993 0 R /XYZ 71.731 579.052 null] ->> endobj -2004 0 obj << -/D [1993 0 R /XYZ 202.34 559.346 null] +/D [1990 0 R /XYZ 202.34 559.346 null] >> endobj 1245 0 obj << -/D [1993 0 R /XYZ 71.731 552.207 null] +/D [1990 0 R /XYZ 71.731 552.207 null] >> endobj 74 0 obj << -/D [1993 0 R /XYZ 200.472 514.992 null] +/D [1990 0 R /XYZ 200.472 514.992 null] +>> endobj +2002 0 obj << +/D [1990 0 R /XYZ 71.731 507.64 null] +>> endobj +2003 0 obj << +/D [1990 0 R /XYZ 303.371 494.867 null] >> endobj 2005 0 obj << -/D [1993 0 R /XYZ 71.731 507.64 null] +/D [1990 0 R /XYZ 71.731 461.826 null] >> endobj 2006 0 obj << -/D [1993 0 R /XYZ 303.371 494.867 null] +/D [1990 0 R /XYZ 179.188 451.032 null] +>> endobj +2007 0 obj << +/D [1990 0 R /XYZ 71.731 425.961 null] >> endobj 2008 0 obj << -/D [1993 0 R /XYZ 71.731 461.826 null] +/D [1990 0 R /XYZ 71.731 425.961 null] >> endobj 2009 0 obj << -/D [1993 0 R /XYZ 179.188 451.032 null] +/D [1990 0 R /XYZ 71.731 405.091 null] >> endobj 2010 0 obj << -/D [1993 0 R /XYZ 71.731 425.961 null] +/D [1990 0 R /XYZ 71.731 405.091 null] >> endobj 2011 0 obj << -/D [1993 0 R /XYZ 71.731 425.961 null] +/D [1990 0 R /XYZ 71.731 362.564 null] >> endobj 2012 0 obj << -/D [1993 0 R /XYZ 71.731 405.091 null] +/D [1990 0 R /XYZ 71.731 329.622 null] >> endobj -2013 0 obj << -/D [1993 0 R /XYZ 71.731 405.091 null] +2015 0 obj << +/D [1990 0 R /XYZ 71.731 280.805 null] >> endobj -2014 0 obj << -/D [1993 0 R /XYZ 71.731 362.564 null] +2016 0 obj << +/D [1990 0 R /XYZ 71.731 280.805 null] >> endobj -2015 0 obj << -/D [1993 0 R /XYZ 71.731 329.622 null] +2017 0 obj << +/D [1990 0 R /XYZ 71.731 259.935 null] >> endobj 2018 0 obj << -/D [1993 0 R /XYZ 71.731 280.805 null] +/D [1990 0 R /XYZ 125.419 235.44 null] >> endobj 2019 0 obj << -/D [1993 0 R /XYZ 71.731 280.805 null] +/D [1990 0 R /XYZ 71.731 233.283 null] >> endobj 2020 0 obj << -/D [1993 0 R /XYZ 71.731 259.935 null] +/D [1990 0 R /XYZ 71.731 218.339 null] >> endobj 2021 0 obj << -/D [1993 0 R /XYZ 125.419 235.44 null] +/D [1990 0 R /XYZ 204.375 197.184 null] >> endobj 2022 0 obj << -/D [1993 0 R /XYZ 71.731 233.283 null] +/D [1990 0 R /XYZ 465.976 173.871 null] >> endobj 2023 0 obj << -/D [1993 0 R /XYZ 71.731 218.339 null] +/D [1990 0 R /XYZ 76.712 145.577 null] >> endobj 2024 0 obj << -/D [1993 0 R /XYZ 204.375 197.184 null] ->> endobj -2025 0 obj << -/D [1993 0 R /XYZ 465.976 173.871 null] ->> endobj -2026 0 obj << -/D [1993 0 R /XYZ 76.712 145.577 null] ->> endobj -2027 0 obj << -/D [1993 0 R /XYZ 71.731 125.652 null] +/D [1990 0 R /XYZ 71.731 125.652 null] >> endobj -1992 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F48 1937 0 R >> +1989 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F48 1934 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2030 0 obj << -/Length 2086 +2027 0 obj << +/Length 1987 /Filter /FlateDecode >> stream -xڭZm���~��e�̒����˽䂻�5�I?hm�Z�l�$y��_���d�;m\Dɏ�y��HΊ���,, �"3&c5[�^��#���p���,�7�Wy���eq8[=�"��,�%�d�������m~hu=_H�����i�,�������?EY���~x�nu"Ua²4$��0Ǣh��1:� �x����U�c���Px&a��jl�`������z���[�8�!G�z.y�{���!}�K�uȃ�h�z�1!���Q�hz]�ƹ\[��hZ0����sl������&��O���k{���Q .H��Eb4�Z 6e�kȇ� R�@9����`1����5���o��K��H�,S� f�I�G"搧x��8K�6���TqP4���˺�JݺK�Ķ0'x��h��olD-j(��7O�m]7�d�죻j�/��樞��'&?y鼴8���E��$�W�{�k{����b�=�.Y��CU�v��y��H=�"~�_�E�7v||�ui[���x�$K8�,a<���,3N���AOs������z�v���#������]��A�&�߸�) W���B��=�+����+����Ȭ�??|�C�R�ǂ�,�C�1���Co�S���#���6o����qw��A��A�B��0���=�+���+�W�)�u�Y'�^.�c�U���aw���A*^���`��0!�����ܨQ�����S*h��� d�=��� }�{�u���#�V������Z�}�U�$�0$��>�a!5�u��v�1I(�խ7�����O��DM�[S��0��t�*�%���DP�#��D|9����K�̠}�5!��U(i�z�W$AGS�HS��"�#����(aʺ�S�.��q��hF+�c� -8z�y�r]W����X���ᶯW�9�B�<�p�X SΌ����0��]�yt�V�z2��dSd�����:#�O �a՝�)x� �Fp���u� ��^h�c�n������I����fK���@<bt#�w�|����,�r������%HK�T���p��w }����,�ߵU�ߗ�;�6����<k��?��Ø��{�owr�9%�]?���сo's�WT�A ���햒�눇��X{���m^����$@�Lpz�;�xS� �����I |�wG�5Lfo�f��� �Q�w�V���Β3^���9)��ɕa�c�IqrS~����>��۱�\~���v���E����0$)�-K�3���ߧE��{�����KK! .pݜʇ��.-�k�o��q?I�RL� �B�!] -�2=�����8b!�7�7IBb\�=I�#���??�=$ -�� ,M&;z\�&d���Q�T��q��1�l��nC�ou�0<��ڗ�(faB�;0�49y�r���4>�̣6C�z���7���4Vd����\�*>�;�E�t�u۾����.QO����\}��n|��)�"��p��&�Aȳ�\�'��adެ�?~~G0,1�d���QƔJ��o`��[�`�rpXE:s��`_�)eJhI�R�c�$�x�j�)�g�y��p��Gwdx�8�R�I;'�§ò��>9��Z7X��@L�n��wy1�Hh�����⳯Gݠ��A�+S��fۑntc+]�2��@ @v>Ƞ��H�G��4e>�\ۖ=�4h��/ -o64���8pG�x�`o��E|lʽ<vBc O�A��Tl���d�m֎ek��"?ݻ�`&�z�[��=>i��j�A��`��[8�\���ECO�q[C�<j�v�V+�D&x��NO��=�2&<1��F����Ƶu�m�. cxQk<�q�j���Z��Sn�`h�*��{gf;ޚ��7��c����QW��bnpX��=�l�So�����,�t���vk[n��AUn��AzR������Z�q ���y�^��ݝ�[u��F��]Y��v&a;Ӵ'۷y��'��K�(e�Hȿ��!�?�P�d1<p3���<c���Ԥ�endstream +xڭZێ��}�W��N_ؼA��z=;�N2Y���<�Rψ0%�$5���S�n��.)���vX��T7Y�Xp�'�`���L���b��/p��p�����O���I�E��H-���HX/b%Y���i����]vlL�\I�����P7YQ�{����(�忞��3�V1KE��a&�����"t,,��"� Spۗ�Sa��x�b<������+����|�כ���!`��<���t�����.�2�Z��͞ښ�9lې[���Q�S�&��s���m^7`��˿ ϩɻ{��<ك�r>��ָ��cwW�qA��@-�V��1`S�I��|�-b ���q�Q,����c��pA��ּ���0�:M�����2���JD�-V!g �F����: +��n3�ٔ�caw��M���]�=���Q���C�?���+f�T5(Y3{�s�73�v�g��L���p^��AN�"@ u�f���=����|�;�.Y�&�sY%���H[�Z�d�N���|;�����h���9'���,�0aҘ�H�O`Y 0�<&gd=l̕�,��9�����n!�Gf��������=(~��%l�O� +�����nH�S���#�����F��B�iD��c��;�+o�S���#���1k����i���Av�I�F�*x�(Z���AЕ�+Ô��Ȭ���ן0��g�p8HA� 5SWd8C�*X:��"L��k�'�4�*��~8�UB�c��!��1ް�#o�S�� |��|\��o��b싀רN%x�!Y�9�Ԑ�=t8���6 ��ݺzw�>��OBB�&�Ք.!�/!��} �ẚ�{d���Njב�8�%�A�RB$�����H=�+�����W�)�u��Y������S�{ļ ��!�� +���^�^�\� �Gf{��1��x��+d�\�J�1�;�E���F���{e�R�.���<:� ��<�d�i2�C� +��䉾 �0��C������w�Vpo�<Cu]h�{d��ؿ����U6{��Ê%�b�4e ��G�ъ᭝g���Aq��"�C��5�?, ��7&HK��T���p�Vo =Cu]�{d�U�����CV�(���<5"��T���p�Vo�<Cu]�{d�W�gDV��q�Y�#B�0b��I��C|28D+��~���.�=2�䟛�ʾ��&:�>ح��G\tʊ�qB��^�!�.`|��B�B�pݮ!���<�p�q���!㚌�AH.���v�eT����s�Ʈ]�s��f�U ��� |#�t]9��2�A�Ő��3A�02����>�&)Q���w�V���4��Y��I�B�8]�0ޤ8�L3�u{RF���X����MS��2*�C�b��8�`?�~GZ�q�bz�l���A�e����B�02ߥ�*���_�$iͤ�I:��P����c�d�^�`�IrrYk���$>�̣�x��H����7LLF�aHj�L��7���?�;�[�84�z^ +d�K|ujA�!o��\���=M�#���P���j��L����D���ÐԘK��n����p&I��4͛����K�knl� �k�:f�E�M�I�H%�{2���A�պ�� ��Gf��~���|�7_�k�K%7�a��Q���G7�Ѣ�͚&������n���P�˝�{��,��6>]��%|y���Lß���E�%���B�e��"LX*�϶��6#�̱*7�Ʈ������i8������a'�����羝L��j�R�}d�m:ҭ�mo�.m^���4Y�I�bܝms�1Wv�.�h��/V�R;�mhإ�Q�!x��C�x�m���9;��y>ڠ��|�zg��>�NEc�������`�;e�y�N�[��a�E��`���;�\���ECO�q���<ON�ۋ0a���_g��ɏ3��,��NM�.�L��{�endstream endobj -2029 0 obj << +2026 0 obj << /Type /Page -/Contents 2030 0 R -/Resources 2028 0 R +/Contents 2027 0 R +/Resources 2025 0 R /MediaBox [0 0 609.714 789.041] -/Parent 1990 0 R -/Annots [ 2047 0 R 2056 0 R 2066 0 R 2069 0 R 2072 0 R 2075 0 R 2078 0 R 2081 0 R 2084 0 R ] +/Parent 1987 0 R +/Annots [ 2044 0 R 2053 0 R 2067 0 R 2070 0 R 2073 0 R 2076 0 R 2079 0 R 2082 0 R ] >> endobj -2047 0 obj << +2044 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 505.24 140.592 514.152] /Subtype /Link /A << /S /GoTo /D (install-modules-dbd-mysql) >> >> endobj -2056 0 obj << +2053 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.664 433.509 126.595 442.421] /Subtype /Link /A << /S /GoTo /D (install-modules-template) >> >> endobj -2066 0 obj << +2067 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 333.883 104.05 342.794] +/Rect [89.664 298.018 104.05 306.929] /Subtype /Link /A << /S /GoTo /D (install-modules-gd) >> >> endobj -2069 0 obj << +2070 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 315.95 136.707 324.862] +/Rect [89.664 280.085 136.707 288.996] /Subtype /Link /A << /S /GoTo /D (install-modules-chart-base) >> >> endobj -2072 0 obj << +2073 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 298.018 134.485 306.929] +/Rect [89.664 262.152 134.485 271.063] /Subtype /Link /A << /S /GoTo /D (install-modules-gd-graph) >> >> endobj -2075 0 obj << +2076 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 280.085 155.237 288.996] +/Rect [89.664 244.219 155.237 253.131] /Subtype /Link /A << /S /GoTo /D (install-modules-gd-text-align) >> >> endobj -2078 0 obj << +2079 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 262.152 142.087 271.063] +/Rect [89.664 226.287 142.087 235.198] /Subtype /Link /A << /S /GoTo /D (install-modules-xml-parser) >> >> endobj -2081 0 obj << +2082 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 244.219 139.865 253.131] +/Rect [89.664 208.354 139.865 217.265] /Subtype /Link /A << /S /GoTo /D (install-modules-patchreader) >> >> endobj -2084 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.664 226.287 147.068 235.198] -/Subtype /Link -/A << /S /GoTo /D (install-modules-mime-parser) >> +2028 0 obj << +/D [2026 0 R /XYZ 140.002 696.687 null] +>> endobj +2029 0 obj << +/D [2026 0 R /XYZ 71.731 668.792 null] +>> endobj +2030 0 obj << +/D [2026 0 R /XYZ 71.731 637.808 null] >> endobj 2031 0 obj << -/D [2029 0 R /XYZ 140.002 696.687 null] +/D [2026 0 R /XYZ 170.798 624.956 null] >> endobj 2032 0 obj << -/D [2029 0 R /XYZ 71.731 668.792 null] +/D [2026 0 R /XYZ 71.731 617.818 null] >> endobj 2033 0 obj << -/D [2029 0 R /XYZ 71.731 637.808 null] +/D [2026 0 R /XYZ 89.664 597.061 null] >> endobj 2034 0 obj << -/D [2029 0 R /XYZ 170.798 624.956 null] +/D [2026 0 R /XYZ 71.731 594.904 null] >> endobj 2035 0 obj << -/D [2029 0 R /XYZ 71.731 617.818 null] +/D [2026 0 R /XYZ 89.664 579.128 null] >> endobj 2036 0 obj << -/D [2029 0 R /XYZ 89.664 597.061 null] +/D [2026 0 R /XYZ 71.731 577.345 null] >> endobj 2037 0 obj << -/D [2029 0 R /XYZ 71.731 594.904 null] +/D [2026 0 R /XYZ 89.664 561.196 null] >> endobj 2038 0 obj << -/D [2029 0 R /XYZ 89.664 579.128 null] +/D [2026 0 R /XYZ 71.731 559.039 null] >> endobj 2039 0 obj << -/D [2029 0 R /XYZ 71.731 577.345 null] +/D [2026 0 R /XYZ 89.664 543.263 null] >> endobj 2040 0 obj << -/D [2029 0 R /XYZ 89.664 561.196 null] +/D [2026 0 R /XYZ 71.731 541.48 null] >> endobj 2041 0 obj << -/D [2029 0 R /XYZ 71.731 559.039 null] +/D [2026 0 R /XYZ 89.664 525.33 null] >> endobj 2042 0 obj << -/D [2029 0 R /XYZ 89.664 543.263 null] +/D [2026 0 R /XYZ 71.731 523.547 null] >> endobj 2043 0 obj << -/D [2029 0 R /XYZ 71.731 541.48 null] ->> endobj -2044 0 obj << -/D [2029 0 R /XYZ 89.664 525.33 null] +/D [2026 0 R /XYZ 89.664 507.397 null] >> endobj 2045 0 obj << -/D [2029 0 R /XYZ 71.731 523.547 null] +/D [2026 0 R /XYZ 71.731 505.24 null] >> endobj 2046 0 obj << -/D [2029 0 R /XYZ 89.664 507.397 null] +/D [2026 0 R /XYZ 89.664 489.465 null] +>> endobj +2047 0 obj << +/D [2026 0 R /XYZ 71.731 487.308 null] >> endobj 2048 0 obj << -/D [2029 0 R /XYZ 71.731 505.24 null] +/D [2026 0 R /XYZ 89.664 471.532 null] >> endobj 2049 0 obj << -/D [2029 0 R /XYZ 89.664 489.465 null] +/D [2026 0 R /XYZ 71.731 469.375 null] >> endobj 2050 0 obj << -/D [2029 0 R /XYZ 71.731 487.308 null] +/D [2026 0 R /XYZ 89.664 453.599 null] >> endobj 2051 0 obj << -/D [2029 0 R /XYZ 89.664 471.532 null] +/D [2026 0 R /XYZ 71.731 451.442 null] >> endobj 2052 0 obj << -/D [2029 0 R /XYZ 71.731 469.375 null] ->> endobj -2053 0 obj << -/D [2029 0 R /XYZ 89.664 453.599 null] +/D [2026 0 R /XYZ 89.664 435.666 null] >> endobj 2054 0 obj << -/D [2029 0 R /XYZ 71.731 451.442 null] +/D [2026 0 R /XYZ 71.731 433.509 null] >> endobj 2055 0 obj << -/D [2029 0 R /XYZ 89.664 435.666 null] +/D [2026 0 R /XYZ 89.664 417.734 null] +>> endobj +2056 0 obj << +/D [2026 0 R /XYZ 71.731 415.577 null] >> endobj 2057 0 obj << -/D [2029 0 R /XYZ 71.731 433.509 null] +/D [2026 0 R /XYZ 89.664 399.801 null] >> endobj 2058 0 obj << -/D [2029 0 R /XYZ 89.664 417.734 null] +/D [2026 0 R /XYZ 71.731 398.018 null] >> endobj 2059 0 obj << -/D [2029 0 R /XYZ 71.731 415.577 null] +/D [2026 0 R /XYZ 89.664 381.868 null] >> endobj 2060 0 obj << -/D [2029 0 R /XYZ 89.664 399.801 null] +/D [2026 0 R /XYZ 71.731 380.085 null] >> endobj 2061 0 obj << -/D [2029 0 R /XYZ 71.731 398.018 null] +/D [2026 0 R /XYZ 89.664 363.935 null] >> endobj 2062 0 obj << -/D [2029 0 R /XYZ 89.664 381.868 null] +/D [2026 0 R /XYZ 71.731 362.152 null] >> endobj 2063 0 obj << -/D [2029 0 R /XYZ 169.145 363.935 null] +/D [2026 0 R /XYZ 89.664 346.002 null] >> endobj 2064 0 obj << -/D [2029 0 R /XYZ 71.731 356.797 null] +/D [2026 0 R /XYZ 169.145 328.07 null] >> endobj 2065 0 obj << -/D [2029 0 R /XYZ 89.664 336.04 null] +/D [2026 0 R /XYZ 71.731 320.932 null] >> endobj -2067 0 obj << -/D [2029 0 R /XYZ 71.731 333.883 null] +2066 0 obj << +/D [2026 0 R /XYZ 89.664 300.174 null] >> endobj 2068 0 obj << -/D [2029 0 R /XYZ 89.664 318.107 null] +/D [2026 0 R /XYZ 71.731 298.018 null] >> endobj -2070 0 obj << -/D [2029 0 R /XYZ 71.731 315.95 null] +2069 0 obj << +/D [2026 0 R /XYZ 89.664 282.242 null] >> endobj 2071 0 obj << -/D [2029 0 R /XYZ 89.664 300.174 null] +/D [2026 0 R /XYZ 71.731 280.085 null] >> endobj -2073 0 obj << -/D [2029 0 R /XYZ 71.731 298.018 null] +2072 0 obj << +/D [2026 0 R /XYZ 89.664 264.309 null] >> endobj 2074 0 obj << -/D [2029 0 R /XYZ 89.664 282.242 null] +/D [2026 0 R /XYZ 71.731 262.152 null] >> endobj -2076 0 obj << -/D [2029 0 R /XYZ 71.731 280.085 null] +2075 0 obj << +/D [2026 0 R /XYZ 89.664 246.376 null] >> endobj 2077 0 obj << -/D [2029 0 R /XYZ 89.664 264.309 null] +/D [2026 0 R /XYZ 71.731 244.219 null] >> endobj -2079 0 obj << -/D [2029 0 R /XYZ 71.731 262.152 null] +2078 0 obj << +/D [2026 0 R /XYZ 89.664 228.443 null] >> endobj 2080 0 obj << -/D [2029 0 R /XYZ 89.664 246.376 null] +/D [2026 0 R /XYZ 71.731 226.287 null] >> endobj -2082 0 obj << -/D [2029 0 R /XYZ 71.731 244.219 null] +2081 0 obj << +/D [2026 0 R /XYZ 89.664 210.511 null] >> endobj 2083 0 obj << -/D [2029 0 R /XYZ 89.664 228.443 null] +/D [2026 0 R /XYZ 71.731 208.354 null] +>> endobj +2084 0 obj << +/D [2026 0 R /XYZ 89.664 192.578 null] >> endobj 1246 0 obj << -/D [2029 0 R /XYZ 76.712 210.511 null] +/D [2026 0 R /XYZ 76.712 174.645 null] >> endobj 78 0 obj << -/D [2029 0 R /XYZ 182.984 176.04 null] +/D [2026 0 R /XYZ 182.984 140.174 null] >> endobj 2085 0 obj << -/D [2029 0 R /XYZ 71.731 167.588 null] +/D [2026 0 R /XYZ 71.731 131.722 null] >> endobj -2028 0 obj << -/Font << /F33 1230 0 R /F44 1925 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R >> +2025 0 obj << +/Font << /F33 1230 0 R /F44 1922 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2088 0 obj << -/Length 1778 +/Length 1955 /Filter /FlateDecode >> stream -xڽˎ�6�_a�X�"�����y ER���hz�%�"K�(%q��� %y��$mQ���p8��,��"~�"3_&�"?^�=�<��beIV3�Ǜ����"�$\lv�H��,]���ױ\l�?����u�\�8��������z�������������WO7��8L�lޫ���PL��bξ`�QD�=�Q��#$�fǘ�KxU�� -�2���*�p��.d�}�Xv�6}�Y������د���5��T�>R��CU�Q�����4]q}[�]-e�}\���|����I���uo��6�*�0e7��m��JH?��B�Ǥ�y���Iq��W[eHr�}:���^�������� -��fhϒ����}T�.��=b(~�I)�?�)wҵ�Y&���-���u��}�3�]�ְ -�}�h1��̈��MJ�ީ���f�L���ID$^3.s��k{�3��{�낷1<�+��0�À��v����3˝V �:�ߚC4�Vۊ����^�w(H U�xu����,ނ�ט;�s݂�0�!؊��+-�4�v:o���Q��8�fޢdA̡�2�f��{��Qoze�ª`���d�k�S�+TV n��C��Ǯ*����w�{��]�U��o������'S� _ߒlWKt�cS�ŕc�U'�:�a(;T��$;^m�=��v�N�P��r�ۦ��d(�$����d�X��O΄_�^�0%<�#���R���2�^/�=�|����d����O�'B��û"�1X�x���fZ�K���쨖!Xno۫G�9?����-�XY��ɋ��^!@���l����������ʫ��E^ c�J��SV�++Ȕ$N�7U�m�܁� -CY���`�!����}qgd�Yȿ0�9�] d� %�O�b� @�*���a*�����('�.����ѓWO��;^�Uh� -}G�|�y;��*+��wmeC��a�jq�F~��3?�]�U[�U�V��ؘ��⎥1<J�F��@��c��c�Q�� �� �y��[�wT�O�gU����Δ�`����1�;**�lV�Y�� ��^"�^���՛Py�]�M_� �-�J��h2��,��i����\4/$��гB���"�yiB�a�Jb��OVCx�,#y��"y� ����fwYL�C�}��4po��I�v&Ќ�hi��?�`����|�5��QT�r��L9zW�Y�����`��5��6 ������r���;��&r������Vۖ����|��S�j`x֖�bޖ�:�%�����)�k��[uUI ���Lj�ड़��H�|�_<3wM<�9��G4 ^��O3��&q��v{�5 �|bl߽��������,��8V��<G�M�T5���;��͗�p�٨���P��R�i�|T������#�m�s/@@�4m�/.H�zys��d�����?5?�C����%�W*�f�j�hf6Вـe��� ;�/���b�w�(�j��� -l[Ƌg ��FQ�'��Hȳ�?+��. NR_��%5yW��Ϭ7g~x��"����4�����J����f��3�{plЙ�'6�;0|��'ڏ���c��Y�*�0j�@N�p���"��!�E I֏���:���U��6V��'9z�?gn�}��1��q����&$dp悦?�������p�Mm�S����QU�Uq:�?��u����*y�ﺚ���Ad�ׁ�m-�{���H.�����������?Q����~��endstream +xڵ˒�6��P�b�j��Mqr��唝dcU%�� �X�� =�|��5��d��F��T��.���cX��tQ��=��~ +�JHV3���g_~Nj�/�x��-�p��"�#�F�M�O����/WQx�����i�v�������i��_��LB�8��u�Y�͕bQ~V����8IH�w���x���3=�� ө��2��^�;Ɯ�Ȁ=���֍.���f��zݨA�i5p�>��*vȜ����V�(�cQ�nH6�4��� +��Y��_H>�rM��{@���,�Js��Po�N�z��Cl���8���s����I_�`r�����_��ע�CmZ��\x��-C����d����S�HJ<}�I��� %�gv�y�.hL�<{��Ii �(�� �Z��F� �(�����%����_��;f'�#�K;R��S�RDL_�=UtW�(�>.���|���e��fe��A����V4Lُ� ��^�5��*Qf��R��*K���P�>�r ��^CBDZs<k�q�15�"�E�)�$(�~��T�~����C�d���r�5�k����߂4��` k(�g���S1����]��N;�l��\\zQ�wSvs�ȵ���*l?bxT_��2¥�l���i"���v^��[�m(�P?OεP-8^�q��݈���y,u2�4�`+��M������9�BcGC`�,�[�,�9��C��L�x��g��A���*X�\��7���{':��BU`u�`�(Uj�>vU��-� ^���u�ߙ���R.׳<�%_sN�Џ���lWKt֣��Fp�Tx͉�^�>�=*_ ɎWI�����v�^uP��q�;��l(�e�U�E�be~F�}o}�t�'�(��8+%ޏK`���(�6�G�=Q*�S���a���@�{��=7bZ�K���쨖1�-���o�Z30���%�L>N���o����';�㝻U6c�Sy%N�+A�NY�WV�'Y��k�m�H��a'�q�j�+f�Q�ಯnF! + +��싳������B�o(P|�C�Mmi�@��'s��p" +É�'�?�z�ͻW"�͎W��}G���n��0.�n�2L�;� ��Y��U��y�s���l�#C5��ե��73b��X[��"l/� +� �Q1\;e�Kލ������R�uw�*�z�8���"��]���%����QQ���/gn`p������ބ*�l��o�� D��D�2����O2-��a(4W� �9���`g��|�@�P�c���4�(���7�D<ɜ#y� B����.&x�!����<po��kx���I��{���SZ�|�o��>0�ꁿ&\"S���;�0�A���e1X��O"��������r���o�"�M�tf��) ��5�pzf*9�1�d�M�ϚP̛]���>#��0���طU��� �͝|��a�^* �D�����ͷ�ּ3�Re: +�i�ژv�>F�ء�������,�Ӊ���D?��;����P�NC���kt�9���\9�������S��b��M�㳙�<�� + �����o7�O�ν��Ԭ�s�<ع���wo���6٣��������a����e�W*�a��� �d6`�l�ffÎ��9vX��0�e���!��e�xѐ�l�$~����<�����]smp��Q� �-��|f�98��[&��#�|ԟXZ%~�ң�7��g��Ѡ3�l�w&~����h_�N��\%Y�k5O '>t���"��!�E I6L���z���պ�6�o�����o�uv���MI���V��2�pAӏ���~�.�m�W����QM�Uu��7��u���P�<�W]�F����``[��g��<�\�/�ƱTy����%�!�wGendstream endobj 2087 0 obj << /Type /Page /Contents 2088 0 R /Resources 2086 0 R /MediaBox [0 0 609.714 789.041] -/Parent 1990 0 R ->> endobj -1254 0 obj << -/D [2087 0 R /XYZ 71.731 741.22 null] +/Parent 1987 0 R >> endobj 2089 0 obj << -/D [2087 0 R /XYZ 71.731 718.306 null] +/D [2087 0 R /XYZ 71.731 677.36 null] >> endobj 1247 0 obj << -/D [2087 0 R /XYZ 71.731 688.254 null] +/D [2087 0 R /XYZ 71.731 644.419 null] >> endobj 82 0 obj << -/D [2087 0 R /XYZ 242.807 654.944 null] +/D [2087 0 R /XYZ 242.807 611.108 null] >> endobj 2090 0 obj << -/D [2087 0 R /XYZ 71.731 646.492 null] +/D [2087 0 R /XYZ 71.731 602.656 null] >> endobj 1248 0 obj << -/D [2087 0 R /XYZ 71.731 602.974 null] +/D [2087 0 R /XYZ 71.731 559.138 null] >> endobj 86 0 obj << -/D [2087 0 R /XYZ 167.419 569.664 null] +/D [2087 0 R /XYZ 167.419 525.828 null] >> endobj 2091 0 obj << -/D [2087 0 R /XYZ 71.731 561.212 null] +/D [2087 0 R /XYZ 71.731 517.376 null] >> endobj 2092 0 obj << -/D [2087 0 R /XYZ 71.731 548.578 null] +/D [2087 0 R /XYZ 71.731 504.742 null] >> endobj 2093 0 obj << -/D [2087 0 R /XYZ 71.731 533.634 null] +/D [2087 0 R /XYZ 71.731 489.798 null] >> endobj 2094 0 obj << -/D [2087 0 R /XYZ 91.656 512.478 null] +/D [2087 0 R /XYZ 91.656 468.643 null] >> endobj 2095 0 obj << -/D [2087 0 R /XYZ 142.208 512.478 null] +/D [2087 0 R /XYZ 142.208 468.643 null] >> endobj 2096 0 obj << -/D [2087 0 R /XYZ 76.712 484.184 null] +/D [2087 0 R /XYZ 76.712 440.349 null] >> endobj 2097 0 obj << -/D [2087 0 R /XYZ 71.731 464.259 null] +/D [2087 0 R /XYZ 71.731 420.423 null] >> endobj 2098 0 obj << -/D [2087 0 R /XYZ 373.496 452.603 null] +/D [2087 0 R /XYZ 373.496 408.767 null] >> endobj 2099 0 obj << -/D [2087 0 R /XYZ 193.02 440.946 null] +/D [2087 0 R /XYZ 193.02 397.111 null] >> endobj 1249 0 obj << -/D [2087 0 R /XYZ 71.731 413.051 null] +/D [2087 0 R /XYZ 71.731 369.215 null] >> endobj 90 0 obj << -/D [2087 0 R /XYZ 210.827 377.584 null] +/D [2087 0 R /XYZ 210.827 333.748 null] >> endobj 2100 0 obj << -/D [2087 0 R /XYZ 71.731 369.132 null] +/D [2087 0 R /XYZ 71.731 325.296 null] >> endobj 1250 0 obj << -/D [2087 0 R /XYZ 71.731 338.565 null] +/D [2087 0 R /XYZ 71.731 294.73 null] >> endobj 94 0 obj << -/D [2087 0 R /XYZ 207.683 305.255 null] +/D [2087 0 R /XYZ 207.683 261.42 null] >> endobj 2101 0 obj << -/D [2087 0 R /XYZ 71.731 296.803 null] +/D [2087 0 R /XYZ 71.731 252.967 null] >> endobj 1251 0 obj << -/D [2087 0 R /XYZ 71.731 279.188 null] +/D [2087 0 R /XYZ 71.731 235.353 null] >> endobj 98 0 obj << -/D [2087 0 R /XYZ 234.008 245.878 null] +/D [2087 0 R /XYZ 234.008 202.042 null] >> endobj 2102 0 obj << -/D [2087 0 R /XYZ 71.731 237.24 null] +/D [2087 0 R /XYZ 71.731 193.405 null] >> endobj 1252 0 obj << -/D [2087 0 R /XYZ 71.731 219.811 null] +/D [2087 0 R /XYZ 71.731 175.975 null] >> endobj 102 0 obj << -/D [2087 0 R /XYZ 216.458 186.501 null] +/D [2087 0 R /XYZ 216.458 142.665 null] >> endobj 2103 0 obj << -/D [2087 0 R /XYZ 71.731 178.048 null] +/D [2087 0 R /XYZ 71.731 134.213 null] >> endobj 2104 0 obj << -/D [2087 0 R /XYZ 416.404 167.572 null] +/D [2087 0 R /XYZ 416.404 123.736 null] >> endobj 2105 0 obj << -/D [2087 0 R /XYZ 193.324 141.669 null] ->> endobj -1253 0 obj << -/D [2087 0 R /XYZ 71.731 134.531 null] +/D [2087 0 R /XYZ 193.324 97.833 null] >> endobj 2086 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R >> +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2108 0 obj << -/Length 2395 +/Length 2418 /Filter /FlateDecode >> stream -xڥ�r��Ŝ* B�ͽ�n��uY��+'����0�c� -M�>�ɑfU��T`��otCz�ÏޤZ�!A��$ޔ퍿9����h�� �n�����/߅�&Wyn���Hg*O7i�,6��/��cqͰ����Ǐ�������M���MSl������|h�*��W�r8/�*�c�� �g*�"�,PZ�*C��̻�x��͛O����a�c����W?��n��@�<�t����P� '��G�B9�@��SA�WS#�V{���k� ��T��=��~b�q���n����8Y!9��M[ԍ����{�W�צ/��b����$_o@�$A����D '�W��8�/��JǂT����m{Jp���E�:�WQ��,��E�c��2E�6�hџ7Gzl��\H��l �kˣ� 0h�YQ�<�5�XYfd ��3y��m�6� �����n�C��4ۛb�sI�{�γ�������Ő.й&]��⅏恁������<�p�:�P�{��ЮLA`%��&:�m��c��~�Ţ��ΰo!���)����������나�Z��Ȫ��t�q�w�@�r"�TpW<�M=J$�{�l1�%��َ��!G�vGY*&8�k�ڝ^tճ�=� 8�w�hv�C r��� Q�ۿ��y�x��f���h��GE�A��{]?2� -��6tx\���ɠ�*��Q���So-n���Cg��=�e���ScƙjU�b���܄�,���[���X�%�q1�����ۑܓ�!���;��&�YS���8`p�~@>�}���~@��R 7������$/��Z���QO�&+ft��،LjC�r6�I��C]����i7;�n�Y!�hSX��v@V�p�P)��]y̱�#FLy��a NJ~�kmQ��0I�OM���B`<#C�����+��Z����{�6�x��n<};Q�D�$�=x�<��D'�Bf6 �K�� -�5� V�S*�IQ�p<&5��H3"�"KV��f��-�r˟�N5�|���L�� ��Qۭ�}� ������.3r:_�Fa��j�(�T<^+��n�D��:[<'��~6墮P���1������?#����y"<TQ��B�Q�A�4�~��� ug��!"���3j|I ��Zn���;%���.��x1�1_L��S���+����#dF��͈٣4���[�~��ߟd���� �><�-C�`..m.�)?-�T��S�_A�����/,�U��X�Y-{��"C}��B>���OB�����ʛd��*!X�h -[sY�J��v(��!�b3#�S�h��*�b�2��Od<�sj -�Ne��f��xdh�=O)Ba��;A�gX.ǰ,�TC�Q%4hZJN�J6X�=�����o��e�VMY� -I{�b�3>��%�~���� -�>R-�]���8��+m���> )Uc��Ruh/S)���\�RuR/��P<�S��?8�v*��#��dz���<�a�7�,O�Ҁ� 8� -jv5�H��q��k�}�wvj�Z����/�(D-����=�������V�/��c�[sAnj��x��"�:bwK��@�qG! K -�"���x' 9�h-#_|�VWSi��4�O�� 7O���p��%˓G -bI^ت���4�,����NhQ��C3g�8�(�t�**�{x�"�"zpu%̠�9������t���d�Ԙk1��8����ч?��Jcoy������MʞtaW"���%A��]`��A�;p�A�7�����E�^���a�OR�}=��ݟ%U�]s�s%&Gj>�{ �k�p��oq���I��T��T�Nf�[�Q���zE�+�r���H��h�K��@��gҍҋ����*�C��&�C|Հ����/��� - -�������x��Q�0�7Z�y��f���Ǚ���,�_��{ /{Ib���0QA�/���:��FgZ���/|d(�NZ���k��@e~xQ�~���lλU���ػ;��q�tݖ�l��,/]vr�r�*8���)���p������X�Ot�"x��U�/`�.�;�ֺ��(����PW:�OxyH98|&�\��֔�A^R�̩w���7K:�a�S� �3�B/H��,$��`��^Y���kF�b���XWoJ������N ƃ��J�wFt~J9�f��4�e)]3Y����3|��GMA����Z�0��8�� -�E_���K2��8:U�_=Zp^?:K ��������k��7���]z j�>Y~Py���p�f��c��B_� -x����v tAF�b�����2������0T��7��*̿����q'�vqO*endstream +xڝْܶ�}�b�y0�j ��7�%'rY�m�J�~���F<F���ק/r8�7)�j����>0z�?�I�JCL�Lo��.���˟�`���p�>�}�]nr�'��a��t��t��Fe��<T?y���h��o��3��������=��N���MSly������4S�g�r�8W��p����%�2FIf�V��P�4�>n��+�r���7[T$3|�9��@�*@��@9=�l|T��D��`aW9#�)Xl�jj�v<�]���`�l�7Ճ�e��K?1����ȳ��qr�<y��mx�ݚ�{ ������i���8 ���;���ge_��#�;XQ���0d���؟�#��s�C�Fڞ$�h�0���Fv��*1?lǘ��c��d9�DN�CQ7=l3�Xtn��� 8Nɞr��y��ͣ6��&&V+�"���mW1M�����~���&�~E#�t�c��㋠�����-+��{q�mC�QxN�9� uc��S��̽誋�=� 8�;Y|9!�j�T�M�ض�G�Gƃ���C`�@� ���1��~d��=�m���2�E�U���`�ۏ�s��~Dá3�ΞDzo�㱱�B��]�BN<�v�o���=@c��%��t8��t��ݍ䞤�D��EbM��Z�\����|<4�8NC��R q�@�E��Z����N,+t��t��̆��7�I�FtϊWvH������6(�8YSD�ˆ��%�!���%�L!�7y�wF�1y���%8)���Ey�;�x�i?5O[[��P���;�Z�0k���c/�q�����Q��껉' +($I�iϋ���HI�a�Ğ霒�%/�|V�^�j�'�%��1Ш�ܴ�I|7�"KT��#�[�rϟ�5�|���ls:&����n�x諯�X�V`q���8�e ��&T��[�x��WH�����*�ɖ's�J_1�c�!���\p^g~A���87<T��6�8*��D�J�4�~���mg��F���Op���>%ȏ�d��ÜzoxBIF�:&�0����8��^I釦O}�M;<F��U�,�y��w#~���va$ ��=�-C�`o$m���E!�r{��#���!��k��̢𬖽����P�뮐���g!�T�y��ʛd�s�,Y�����J�ZA ;Te�d�Yة1�k�9`�N2��d�#��=6�S����S=Zl�S��0���`q�3�OlX���?�T -mK�IS����qUt�F�,K�j��TH�� U��d��,iO��h(��=�"Z*O�X��@ĕ�]�{����1�8�:����WP.�{�:��K�^�xO�/��9����N�z䱝�@���g?LK�&'�œ�4�r.����K�=�q�x�������� 5����/��-����;ڲ����SX1���(}�� ���#�B�����9K��@鸣+ K� +J���J,�6�H�~(Z�����:�T�k*M���f������X��Œ��]bI_�T��Ni�YA��'�����A�dŸ�(�t�**�{�PQlQ =��q͠�9�J��J[Hy�۟ϑ�c-^w:�BEf��W��Һ{^�p(|��@�&eO����\"�!6��%���cw��b����loj'9�,EDw㼗�)bO�5ݭk�~w��92żk�}n�ɑ�O�1/�a��GX�7��THMeimE�d����۹Ů(]C��Wa�~&q7�*�cih�\�Q#���}Q�h�8�6&1*�R��/w?�l*�t������"G�Qa�o���p3�����ݏ% QY��F�� +� ���P/%a~���4�� +�0�6��(�����P����3�� �B7��}�{��u���i�}x���&���/��:�9^:o�pe�ep�щ��L2BZ�������(�"���U*0`�6�[��͜� \��#ԍ6�#f�ǂy�l.s`��rb3ȓ@J�95/�q9��Kp?��:+(��4��A��������U/��=g��u<;�Uś~�x���-���h������CP��|�' +M#���,��M��l����kc�HEy�1A�b}�yp��WHW��%��K�]�Π��ͯ���Yg \����n��������n�ھs�A��G�/*���Q\7�[�;D*�@1����jjB�D��P#��:N�N�Z�8OӗE3���l����g��8�-o���8uL)�Og�+e���<���tT��kj���q����%��υc��Sr��,�] ��f�@U�'|~Vv�2��i8@�v��<�� �n7�U�}��k�9,?���k�0�Y)�͕ ��&�e�j����pB��A!Cd��֏ל��`Zendstream endobj 2107 0 obj << /Type /Page /Contents 2108 0 R /Resources 2106 0 R /MediaBox [0 0 609.714 789.041] -/Parent 1990 0 R -/Annots [ 2118 0 R 2125 0 R ] +/Parent 1987 0 R +/Annots [ 2115 0 R 2122 0 R ] >> endobj -2118 0 obj << +2115 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [350.297 462.551 395.155 471.033] +/Rect [350.297 521.928 395.155 530.41] /Subtype /Link /A << /S /GoTo /D (parameters) >> >> endobj -2125 0 obj << +2122 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [244.495 139.25 283.866 147.732] +/Rect [244.495 198.627 283.866 207.109] /Subtype /Link /A << /S /GoTo /D (security) >> >> endobj 2109 0 obj << /D [2107 0 R /XYZ 71.731 729.265 null] >> endobj -2110 0 obj << -/D [2107 0 R /XYZ 71.731 741.22 null] +1253 0 obj << +/D [2107 0 R /XYZ 71.731 718.306 null] >> endobj 106 0 obj << -/D [2107 0 R /XYZ 222.436 708.344 null] +/D [2107 0 R /XYZ 225.412 708.344 null] >> endobj -2111 0 obj << +2110 0 obj << /D [2107 0 R /XYZ 71.731 699.891 null] >> endobj -2112 0 obj << -/D [2107 0 R /XYZ 453.495 689.415 null] +1254 0 obj << +/D [2107 0 R /XYZ 71.731 659.362 null] >> endobj 110 0 obj << -/D [2107 0 R /XYZ 225.412 648.966 null] +/D [2107 0 R /XYZ 287.71 622.147 null] >> endobj -2113 0 obj << -/D [2107 0 R /XYZ 71.731 640.514 null] +2111 0 obj << +/D [2107 0 R /XYZ 71.731 611.782 null] >> endobj -1255 0 obj << -/D [2107 0 R /XYZ 71.731 599.985 null] +2112 0 obj << +/D [2107 0 R /XYZ 71.731 599.866 null] >> endobj -114 0 obj << -/D [2107 0 R /XYZ 287.71 562.77 null] +2113 0 obj << +/D [2107 0 R /XYZ 71.731 584.922 null] >> endobj 2114 0 obj << -/D [2107 0 R /XYZ 71.731 552.405 null] ->> endobj -2115 0 obj << -/D [2107 0 R /XYZ 71.731 540.488 null] +/D [2107 0 R /XYZ 71.731 533.585 null] >> endobj 2116 0 obj << -/D [2107 0 R /XYZ 71.731 525.544 null] +/D [2107 0 R /XYZ 71.731 495.92 null] >> endobj 2117 0 obj << -/D [2107 0 R /XYZ 71.731 474.207 null] +/D [2107 0 R /XYZ 71.731 439.034 null] +>> endobj +2118 0 obj << +/D [2107 0 R /XYZ 71.731 406.092 null] >> endobj 2119 0 obj << -/D [2107 0 R /XYZ 71.731 436.543 null] +/D [2107 0 R /XYZ 71.731 351.362 null] +>> endobj +1255 0 obj << +/D [2107 0 R /XYZ 71.731 321.41 null] +>> endobj +114 0 obj << +/D [2107 0 R /XYZ 218.078 278.312 null] >> endobj 2120 0 obj << -/D [2107 0 R /XYZ 71.731 379.656 null] +/D [2107 0 R /XYZ 71.731 274.482 null] >> endobj 2121 0 obj << -/D [2107 0 R /XYZ 71.731 346.715 null] ->> endobj -2122 0 obj << -/D [2107 0 R /XYZ 71.731 291.985 null] +/D [2107 0 R /XYZ 118.555 232.292 null] >> endobj 1256 0 obj << -/D [2107 0 R /XYZ 71.731 262.032 null] +/D [2107 0 R /XYZ 71.731 188.665 null] >> endobj 118 0 obj << -/D [2107 0 R /XYZ 218.078 218.935 null] +/D [2107 0 R /XYZ 187.345 156.161 null] >> endobj 2123 0 obj << -/D [2107 0 R /XYZ 71.731 215.105 null] +/D [2107 0 R /XYZ 71.731 145.796 null] >> endobj 2124 0 obj << -/D [2107 0 R /XYZ 118.555 172.914 null] +/D [2107 0 R /XYZ 154.51 136.036 null] >> endobj -1257 0 obj << -/D [2107 0 R /XYZ 71.731 129.287 null] +2125 0 obj << +/D [2107 0 R /XYZ 338.14 136.036 null] +>> endobj +2126 0 obj << +/D [2107 0 R /XYZ 71.731 123.917 null] +>> endobj +2127 0 obj << +/D [2107 0 R /XYZ 71.731 123.917 null] >> endobj 2106 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R >> +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2128 0 obj << -/Length 2553 +2130 0 obj << +/Length 2644 /Filter /FlateDecode >> stream -x��َ���}�b���l�I6�y��ؑc!1�/�,�d�c#���U]����`�`��XU]w��U�r�J�F�s&jU4w�j;��I���_�|�{�M�r�'��q��e&�t�F��T�z,�y�vz?�~�*�BA���0꺮�-�����Tu���������TE�ȳ�Y�Ε`a�����%sR���J�PH(ͼ�+t]t�AnQ -�<=�+X�a d���YKx�D��n�K��n*�@/���H�@-��#E��@ ;S�4�qڋ}}�5 E:\�]+OW�w��P����������\ �a ���[��+���2d��Y��p(vbA4Hɏ�\(0�J���"?�a��50��ܡċ�����0���G�tt٣?\����I��:���9S"mS���e:�#-i�7�E��� �ݳB����"�7�C�*G���}����5f��I�'0�=�ʗ�����(rj"���W#������5�V�J���Pv~��cS݈��:����[���sw�\��"JO5 -��k���x��?����'�Q��E�o{���@�k*QB��G�d,���N����@���W-=��=A��F�E){JXx�1n��G�>a��d�Y��4)s�\��Z�p�T�$�\�1vD���v�c��T>}��axpG�}\;�V��OIj\�L��ObZ�=��F����'�Rg�F����'��Rc���F�ʿ��'���ƾ�Y6��|&%,��`&=T;��j<��=�b5�V���x�=�}�n�5�8u6���!�^� �O�2���q�)���|)8s�S-��5�Q��M����vvmgm�,��|�+*���2��<��>�٢����X����$���`Նȓ�:���Fzk�<�{e�i!�T+�]�ڳ��kȰ����AA;�j�u�X�yƮC=����XɢP�Ea���g 7���%N� �@�Vx�n��p8��{��6f1`���֬�#`s1�l;�~XJ�̃N�ߺ�������������̮q -��4�ό�vz �H��w��y�( ��*��0���7=F��;�(������2醑,�-�njGt��s����&%�ԫ�R�+ߌ�z����f"�9��f�ۺKA��3EV۶��^q�6o�= -[�oT����w�\���j�ɛ�l'ӎ6�c͚�Bׅ8f-I�?^vf`���5t�)�E����BU%ǃ�b&LB�ۏU�m�wK)� �:q� ���S�h���1��p� ��+�ƴ�z��KOǙw�3:�W��-��H��%n��q�����}��@Ѵ1��v��������Ei�ևv�-u�=ϛ���g����W>�ܭ7�d�jر�:nN\uŶ�u��Mכ�c�Cg%��y�hB0ў�W;��9"U,Y�@=:Zbye��H�Xl�����=dL� |��������mt{�kN�wF�,:_�k=B�n�)�k���lt����Yb�s��U��F1��A#��8��q`k=쒟�Ph:�{�������R��`uÃg�o˘6w�?F�oAѦ�+�T��@�?�s�� ��<�����t�0����T�g���78�u9ik8���},~�u9H\D*��ߐ�߯�tb�FooQg@ �o�g�(f��gVmi�� đ� 7\O.�'�]����ة#�w���W/ɺJ-���cX�icy��I]�I���HDp�[7 �_ �M�B��Po��'��+�L$В=+��</@.4�g`�zyudv�x���y��%�偹d'���8)!�*�I�k�"��L��/p�D�]38�����`c]���6�`� �r� -Y�lb�r!���Zr!��9(�WQ,�"�>{�J8�w��_�?�!r��� -XB�ޛ�����3%$����hз�wE�w��!�M�o�"�[��U�Й���+=9���&�O�̗Y'Â+�(�Ȥ ��ޟ�XY�������Nns3DҤ��&vʀ�LK��M1����ʎ���S�8��-�_ Y,uI�,dQ���S#����Y��<s�Y2��]c�v]�tbK9����t�9Q�=����u��Gh���1����w������P7�(�Π����Jy8n� ����# �Z����8 -D�% ����a���D�29� [4�t�*E�y��p����&|��-�C{�1��g�؛%qѻ��&&�ŕ��8���X��|ok8��G�a쥂>�c�ݰm <���O�c��X�_���dž-�_�����4���EOǴ���̡���ӝnT '6���M�r�h7]Ym��7��[#�W�ưf,^4GQ���L�̗��$=��o�N,��`X�/��z�������4��b��Ep>��Ͷ �mõ�y��ֹ�w8�%���u�~V�)P�X� D!z�@����>�O�*>%��77�4�����Q��|s�� w�i�,�h�i��tcwoM��c���������3D��L����uB���KAk�1P6��/Zל~���'endstream +x��]���}��-pv��I����pI���������L�j$ѧ�s�_��P����Ҿ����pf8�O:\�.�P�|d.d�E},��1���|�x���(Z�"O���n����EI�)�xܾ_~}����T�R +��i�^WU��i�հ���*������_G�*JE�E���qf���"�?_��(��`����a����< k8�Z� ��F�0I� bS�ܙ~8�cE�W���"��`�j˴MUt��?螦�_���¶�)zB�W��n��t4�-c��>�<t�����ew�����\m�N�ءw�^��0J��I��S[��@�@���OA +^+�8O(1XDȚ�, �ٕ��U.�4cL6��[n��5(�F�<��f� +A��BA�| �Ճ�1�ζW�7C��iw7��FG��ڀ�v�5�(�9�`s���QWQ�8a��l���d�e�(�N �ƵMu&��J*�����Y�os��\���0S�E�0Fo�Xq���K��q��x�]�����8wB�ږOIj���i/b:�-��F�9��� �ԕ�9y��x���Bug���,~&,M��o��xD�+)a�@#鮬�UY��y���M�=/zo�]��I�0��ٻ���`�?�rq@ƭ.�@�_H��:�z�)�x���5dKQ��U�҃�"��=7�3�S7�w�_wn�`mb,8�<�� +��u2���pmQ�ܷ�X���z�Tā7�rG��:�6#�U����BN�(f;44S6Wȗ���!��a���aӑ���M't}c6�n�:#�E2X�� 7nx�#N� CG�N��~��t:����=-�b�ڛ�9G��b\�[��%;�K4��mh��5U6�����ha�JA����Ha�W@��N3���l���=͢/t���0l�cv(�jK�ޫcb���4�������F�ǧl��H']Vf*��6�42H�m&B����G���\�(*�W�R�ێ%ǘ5\��msI.A?��R(/�����e��� p�O�iz�1g��Z�����e˳X�Trv�I9C�)�E����BY%Ã�b$L����m�;a�(%��癀,�%�;��*��9&���mm1Ԧֽ��ڜG�e��`_�Q7��3] (q ��N��#��%�+�����*��6��@X�N̢��ʩf�[�yޞ���_���gc ��Wv*�_����gW,+p�Q��\W��[����'E�K�[�C��%K���)���gF���j��@'�[C��ܧ/�������Ղ=�Vs�@�sכ�c����L��=�횙R��+��B�l�� +�tq����+���- +s�/�*\��U�� +�\��nO��xq����F�q�����1�Ń��h� (�l�B+��7��M�Yc��9\^���BLP����Ȃ�_�d~�H�x��[������,Їa7��G\�tQ�d���ٞ����-��ԉ5�ޡ��@D"�jډ�b:�}F�n �0���?5�|$O������إ"�1�� ֫�d}�4�z�6��1mH!��4�q� zy�!�8� Ҭ!�%�zx7==i6� �e"���Y�y�P@Qx%����8t��c<���<�������%�P9t��]c��J�21�z�3)B���Hǩ��gN(XX���Tf�!���Z�"ˀM�8���SP.��?�>(�q����p���[8�w��o�?�!rIaa,�zo�bw���Ǒ8��p��9���f$�^�u�b$�EWS����"ʠ�rz�у������%���, +i�!H!2i2��� +3+����#߳����]l&��$u�����u��i +²)��U��V�d��W��Z<�z��T0=�-�+�E1B� +*�g�3���U��f���d�����v�u�K1����p����k�>�u��[(���1�R�Ol���E�9M��B���M�+��v;����8r������G����<�?������r��z8@�W����uU9M�hX�v��нi���:�ɔ8���":�ɓ��8��X���ns��{������w�m�[pe |��� ��>�f��W�����a��d�$i�)����F��1�ha�Ph������Åͼ���)�UN +��n�����C�T� +�|������,�f�d�$���\$mLEe%v�� 4��s��f7J���g���IWv�4��v�l��k����S����\�B ����S��0�5qKX��B���h�&p�6�_�*~Co����������G��*|;W����_��=���� �ꭣ���mr���Rс�}�Y�%����>^�����ѽa��D�$7x8��3�����! +6������&��������A�_�D��&����'����c`���U��Yp`U�|C���;�He��HN� ��b�^OC N�P�Q���5�' ��s�,nJ�yϟ����G�!������=R�E�E!�UƜ�.ϵcv��u�;�{�����Ex7�������[�[q&�0}�����= $a�@��~��s���:Uendstream endobj -2127 0 obj << +2129 0 obj << /Type /Page -/Contents 2128 0 R -/Resources 2126 0 R +/Contents 2130 0 R +/Resources 2128 0 R /MediaBox [0 0 609.714 789.041] -/Parent 1990 0 R -/Annots [ 2148 0 R 2149 0 R 2150 0 R 2153 0 R ] +/Parent 1987 0 R +/Annots [ 2146 0 R 2147 0 R 2148 0 R 2151 0 R ] >> endobj -2148 0 obj << +2146 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [428.768 401.206 488.605 410.117] +/Rect [428.768 466.366 488.605 475.278] /Subtype /Link /A << /S /GoTo /D (mysql) >> >> endobj -2149 0 obj << +2147 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [508.095 401.206 537.983 410.117] +/Rect [508.095 466.366 537.983 475.278] /Subtype /Link /A << /S /GoTo /D (postgresql) >> >> endobj -2150 0 obj << +2148 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [71.731 390.312 99.128 397.166] +/Rect [71.731 455.472 99.128 462.326] /Subtype /Link /A << /S /GoTo /D (postgresql) >> >> endobj -2153 0 obj << +2151 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [308.275 303.446 353.582 312.036] +/Rect [308.275 368.607 353.582 377.196] /Subtype /Link /A << /S /GoTo /D (security-mysql) >> >> endobj -2129 0 obj << -/D [2127 0 R /XYZ 71.731 729.265 null] ->> endobj -2130 0 obj << -/D [2127 0 R /XYZ 71.731 741.22 null] ->> endobj -122 0 obj << -/D [2127 0 R /XYZ 187.345 707.841 null] ->> endobj 2131 0 obj << -/D [2127 0 R /XYZ 71.731 697.476 null] +/D [2129 0 R /XYZ 71.731 729.265 null] >> endobj 2132 0 obj << -/D [2127 0 R /XYZ 154.51 687.716 null] +/D [2129 0 R /XYZ 71.731 718.306 null] >> endobj 2133 0 obj << -/D [2127 0 R /XYZ 338.14 687.716 null] +/D [2129 0 R /XYZ 113.898 708.344 null] >> endobj 2134 0 obj << -/D [2127 0 R /XYZ 71.731 654.727 null] +/D [2129 0 R /XYZ 177.702 695.392 null] >> endobj 2135 0 obj << -/D [2127 0 R /XYZ 113.898 643.183 null] +/D [2129 0 R /XYZ 71.731 688.254 null] >> endobj 2136 0 obj << -/D [2127 0 R /XYZ 177.702 630.232 null] +/D [2129 0 R /XYZ 263.826 677.46 null] >> endobj 2137 0 obj << -/D [2127 0 R /XYZ 71.731 623.094 null] +/D [2129 0 R /XYZ 71.731 657.37 null] >> endobj 2138 0 obj << -/D [2127 0 R /XYZ 263.826 612.299 null] +/D [2129 0 R /XYZ 229.324 646.575 null] >> endobj 2139 0 obj << -/D [2127 0 R /XYZ 71.731 592.21 null] +/D [2129 0 R /XYZ 444.938 620.672 null] >> endobj 2140 0 obj << -/D [2127 0 R /XYZ 229.324 581.415 null] +/D [2129 0 R /XYZ 178.998 607.721 null] >> endobj 2141 0 obj << -/D [2127 0 R /XYZ 444.938 555.512 null] +/D [2129 0 R /XYZ 71.731 600.583 null] >> endobj 2142 0 obj << -/D [2127 0 R /XYZ 178.998 542.561 null] +/D [2129 0 R /XYZ 169.98 589.788 null] >> endobj 2143 0 obj << -/D [2127 0 R /XYZ 71.731 535.422 null] +/D [2129 0 R /XYZ 71.731 569.699 null] >> endobj 2144 0 obj << -/D [2127 0 R /XYZ 169.98 524.628 null] +/D [2129 0 R /XYZ 450.823 545.953 null] >> endobj -2145 0 obj << -/D [2127 0 R /XYZ 71.731 504.538 null] +1257 0 obj << +/D [2129 0 R /XYZ 71.731 525.863 null] >> endobj -2146 0 obj << -/D [2127 0 R /XYZ 450.823 480.792 null] +122 0 obj << +/D [2129 0 R /XYZ 224.186 488.648 null] +>> endobj +2145 0 obj << +/D [2129 0 R /XYZ 71.731 481.295 null] >> endobj 1258 0 obj << -/D [2127 0 R /XYZ 71.731 460.703 null] +/D [2129 0 R /XYZ 71.731 455.472 null] >> endobj 126 0 obj << -/D [2127 0 R /XYZ 224.186 423.487 null] +/D [2129 0 R /XYZ 156.121 421.101 null] >> endobj -2147 0 obj << -/D [2127 0 R /XYZ 71.731 416.135 null] +2149 0 obj << +/D [2129 0 R /XYZ 71.731 418.626 null] >> endobj -1259 0 obj << -/D [2127 0 R /XYZ 71.731 390.312 null] +2150 0 obj << +/D [2129 0 R /XYZ 118.555 382.079 null] >> endobj -130 0 obj << -/D [2127 0 R /XYZ 156.121 355.94 null] +2152 0 obj << +/D [2129 0 R /XYZ 71.731 347.095 null] >> endobj -2151 0 obj << -/D [2127 0 R /XYZ 71.731 353.466 null] +130 0 obj << +/D [2129 0 R /XYZ 221.647 320.072 null] >> endobj -2152 0 obj << -/D [2127 0 R /XYZ 118.555 316.918 null] +2153 0 obj << +/D [2129 0 R /XYZ 71.731 312.874 null] >> endobj 2154 0 obj << -/D [2127 0 R /XYZ 71.731 281.935 null] ->> endobj -134 0 obj << -/D [2127 0 R /XYZ 221.647 254.911 null] +/D [2129 0 R /XYZ 173.289 289.187 null] >> endobj 2155 0 obj << -/D [2127 0 R /XYZ 71.731 247.713 null] +/D [2129 0 R /XYZ 71.731 282.049 null] >> endobj 2156 0 obj << -/D [2127 0 R /XYZ 173.289 224.027 null] +/D [2129 0 R /XYZ 71.731 259.135 null] >> endobj 2157 0 obj << -/D [2127 0 R /XYZ 71.731 216.889 null] +/D [2129 0 R /XYZ 71.731 214.953 null] >> endobj 2158 0 obj << -/D [2127 0 R /XYZ 71.731 193.975 null] +/D [2129 0 R /XYZ 71.731 191.29 null] >> endobj 2159 0 obj << -/D [2127 0 R /XYZ 71.731 149.792 null] +/D [2129 0 R /XYZ 71.731 147.107 null] >> endobj 2160 0 obj << -/D [2127 0 R /XYZ 71.731 126.129 null] +/D [2129 0 R /XYZ 282.227 122.612 null] >> endobj -2126 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F48 1937 0 R >> +2161 0 obj << +/D [2129 0 R /XYZ 71.731 107.504 null] +>> endobj +2128 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R /F48 1934 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2163 0 obj << -/Length 1913 +2164 0 obj << +/Length 2285 /Filter /FlateDecode >> stream -xڭko�6�{��}�T�ޒ;d@24ݣ�����E�H�%LO�⸿~w��$�i1`C��t<���[���-�IX�����"�����|�1��$���z�du������f���Y'�$�4�����}!�JvKۏ\�wh��镨��������TV�X~�����fd��N���eh�� M�`��k��M� �`�T���JqWɥ��uIK-nA�vi{�A�{��%ե��[��ɤ���N/l�w�]�)d�Q`�=��%��%��e/:Q/=Kj�h҆���`bȜv��XB)��lT_~�O�����.=�C�����<�u ���y�B(f�6�k���Yp`U�|C�*��md�j���u�����e���}]M����K��6�|�L �wO>�7\� r�%H؝{���$I������~Daُ(�Th����n�<7-l��QQ R���!��$dkx���E1ܴ��;I��2 ��3�8u� 8�aU�)N=Pʏ�U����7��ω�v��#'X���H���[�I��n�(�ќ1��pSVp���gL<w"(T�F5�j;���[�Nf�:�mx���"��\���[�4��P�N�r酖C(Ȥ�c˓���9q�h�9F]R O-�j"�,���H��z*:�2���j������L�v����Zg+x����:�~��$�'����k�s���aސ��Б��$س���&��v�*[It��2[9}k���ـ� -���F���5��C\�%|�C������J -��m�������E���X7;U� �c�=塵�<h�弩e����w`��^-א��(�zU0��0xT=vU�V�Ƽ�Q�fb�u�`��R���1:oJ�����VV~p]?#�܂�u��]��̟�G�dՐ� �"�.x�b��,I���b��g�{r'��a�Th@~�6(���PD�P�N�!t��|l����H+�G��%r&ު[lesk�݂�i��� ��\]6e=�.VX��ԁK�x�/�wT�� .�i��]�C9�,yZ��6/�����t^�]�8��J�lU��ٞ�[5)6�j><��N<4@��z_���M���r�M��P�l�xk��}}����ɰ*R���F�5�� x ["����)0�C����O.�r��G���/�5��wKJtY�M�K>�%,!)��c*p!C�r��lf�j�J���0��r`-��?_���2�,G[���z�W�Y݀L-����-�G�Q h����[�]l�܃�}O����������d���� -!���v��p�@�>��|YQ�/����|L}-8�k��_�, ���ܥtKN�$���P��:7`ݡzݼ5����چ5 _^����V���`T@�װS����A -T��} �C;.�fݩ�(�C� ��Z���\����\�g%f����ɘ�(��*�P��U�#�Q5a -�W7�#z?d�4Ɣ�e�S53�Nz���1nO�v��M)�)Ľ�s��Y����� �jaFX���d����I akh�6��V�d�y�X�!U���Mt0G>M����4Eb-���B'<�|�j��-������ge��?����y���۷��q��ś��.�5�d��x��?��ݥ��>RS�Љ�ta�@|)����N�{3� -m�1���w�}�c*en0��Ҁ�]�i�_�m>������d-�u��1+Y��NtG��k�H��c�i��YvFPN9�r���^�����K�wG,��p5}�Un>�5ʌ�B6�Ά��`�0�ի������L�7�Լ���]��7�����t��o�t|ӥ�$h\��w��R~ӥ�.���R~�M�f|WMo�������9)L��K����Dr�{S�Cr�����}�7�sN�����endstream +xڕX{��� �?�������,��E�wE�����rX�J#K8=\i��ӗrd��Mo ��y��#)1��'fK�.x�+�YZ��f��%xł�,&k�֯n��l��`��g�H��r�|7���:���k!�Zu�y����ײ��fC�w����������^�[�B�`鮒�E��3��`��1*�nų���A�>�Z�A�7�ad\�Gn� +�5�Ye.�N�*��V!�|x��/����]�!�}Y�9Xk��j4�х�|:ED��Ne,���Ju����ᙲ�����$ohs;h�3�Lj�${5���кPe�G�-���Z�C����s��'N_��'Q�FI��mt�Vi�8CO� $�N��5C>Wm*�� ^��Vv(F� +����H�@��l{�rI.����&�s[U-*�cukp-"w��.c��<��U�� +/�Y۩��ͭ����<��6�kiq���N�rs����4BRI$��C��zR���^)i��v�J��,�ۍ�fq����Q�M��2�i�(���2�4:G���g0�??�W��zENO�`7�����ޥQ�Ch�]q��r�M��}JzT&b�0>: w��o����_<�OihjAx5g��9<��UvM/e�VC6B�U�^��U��W�I���ЕW�7^g`���=���#4D�<3�6���L�� *�σuh�h{�69�ᶧg��6��r^��G:��h�=��������)�g!RyMx��K�߰�x�i�?��I�W���q4:���6+��x,�C4W�&\1��(���{7m��`���W�4m�ۃC�ֲ�Vʪ ��#$��&v}���b���������_G{Q���?�<4;"d�ܑ!�ĸ�=a���3���#Ƅ�x�x�|�o�sC, _��� J]�i�>��$��H�D+ �K�ī���䆌ȶ���8-ui���^���B�훛��n7�#�5�sӶ���7��yF�@�����Z\pF=4p +��u� `��-���'o��?�mN@־G!u�{�[�PʅL2l�-f0X���Tg�c�_C��̊rS|;��pǗ�Z�I����&�qNQ&��%�D�4�P�Ml�s���y����_��I���o�`�炳<��rW���i�40Ʃ�"2!e��<%=@�JMSX�J�D1�l�g�ءm�z0�U�_��7���*���b��w�t(��PD�4RHfݴ2[?�'4T�b�<��2��G������Y`禼�,BY(�E�^wC���g*��ah^�� ����+���C�X���!;.�g�iU�Y�y�* ��)�zK�̑O%�J ��r��%�~X�{ �\��}xG�PƳC���4o�u�����?��t�������5��x�o\����?\��8t�(�-@!fJ���=���jK^B�����ގ3�l6�J[�W��\�|�|ȏh�S>�İ<�<��ovV9��m��n�Z�r���1x +�YvVQ9�r�٘^��6l��|�G�g���E;T�� +x'b��v�j�= ���`���y��d����w��'�@z�XoۺĶu��֥��-]r��%�-]2�t ^$ F�C[�&-]�-]2�tɴ�K��;����:�t�M/�홲lT��7����i~�N�����:P5�(�5V��+Gf< � +{�!��8k�T�21�&a�K�/�~҇fŷD/��:�yeg��n(����7V�� +4� ąTA`Oa��N��N�e�C�E{��<ɸ=��'�a�XB1��鴡_��k�..Z�bik��eNP<��AZfu�n��d�q̅xlkZ6�Ͼ��v�FP�N1����v۵ۮ�Z�0�L\��BgD�a��ɇ(�_� ��Ξ�`���@XX�%�R<9��/�@"����0M�ͼ�j��+c�BX@�q�s�]��,��]9��P�g�R9O���ă'�Q��x^��F(�*�E�/���*̟��B�IBA LÙD�Ep�B�8SFnۛ����>7w���:��8.<�N�ӱD���j�6���҄���3 m��U��"�]�j��P�b�2֍�D��U'z�H����XOx�銏��M�!��"���k&#���Y���� �S�����Pz���k�8����4�т�� �NA�̸@��G�a�{�q���FH��&X��kkh���T&�&�!�eokK��W�;Z&W�X�$��yn'�/~D?,9���PY�� Q�o}?��?��,Gendstream endobj -2162 0 obj << +2163 0 obj << /Type /Page -/Contents 2163 0 R -/Resources 2161 0 R +/Contents 2164 0 R +/Resources 2162 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2186 0 R +/Parent 2200 0 R +/Annots [ 2193 0 R ] >> endobj -2164 0 obj << -/D [2162 0 R /XYZ 71.731 729.265 null] +2193 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.952 142.999 499.255 151.91] +/Subtype /Link +/A << /S /GoTo /D (localconfig) >> >> endobj 2165 0 obj << -/D [2162 0 R /XYZ 71.731 657.37 null] +/D [2163 0 R /XYZ 71.731 729.265 null] >> endobj 2166 0 obj << -/D [2162 0 R /XYZ 71.731 642.426 null] +/D [2163 0 R /XYZ 71.731 741.22 null] >> endobj 2167 0 obj << -/D [2162 0 R /XYZ 71.731 593.375 null] ->> endobj -138 0 obj << -/D [2162 0 R /XYZ 276.55 560.498 null] +/D [2163 0 R /XYZ 71.731 718.306 null] >> endobj 2168 0 obj << -/D [2162 0 R /XYZ 71.731 555.402 null] +/D [2163 0 R /XYZ 71.731 668.792 null] +>> endobj +134 0 obj << +/D [2163 0 R /XYZ 276.55 635.915 null] >> endobj 2169 0 obj << -/D [2162 0 R /XYZ 71.731 522.476 null] +/D [2163 0 R /XYZ 71.731 630.82 null] >> endobj 2170 0 obj << -/D [2162 0 R /XYZ 277.08 498.73 null] +/D [2163 0 R /XYZ 71.731 597.893 null] >> endobj 2171 0 obj << -/D [2162 0 R /XYZ 71.731 486.61 null] +/D [2163 0 R /XYZ 277.08 574.147 null] >> endobj 2172 0 obj << -/D [2162 0 R /XYZ 71.731 442.787 null] +/D [2163 0 R /XYZ 71.731 562.027 null] >> endobj 2173 0 obj << -/D [2162 0 R /XYZ 357.781 430.884 null] +/D [2163 0 R /XYZ 71.731 518.204 null] >> endobj 2174 0 obj << -/D [2162 0 R /XYZ 71.731 415.776 null] +/D [2163 0 R /XYZ 357.781 506.301 null] >> endobj 2175 0 obj << -/D [2162 0 R /XYZ 71.731 400.832 null] +/D [2163 0 R /XYZ 71.731 491.193 null] >> endobj 2176 0 obj << -/D [2162 0 R /XYZ 71.731 363.437 null] ->> endobj -142 0 obj << -/D [2162 0 R /XYZ 318.721 330.56 null] +/D [2163 0 R /XYZ 71.731 476.249 null] >> endobj 2177 0 obj << -/D [2162 0 R /XYZ 71.731 323.362 null] +/D [2163 0 R /XYZ 71.731 438.854 null] +>> endobj +138 0 obj << +/D [2163 0 R /XYZ 318.721 405.978 null] >> endobj 2178 0 obj << -/D [2162 0 R /XYZ 71.731 292.538 null] +/D [2163 0 R /XYZ 71.731 398.78 null] >> endobj 2179 0 obj << -/D [2162 0 R /XYZ 105.494 281.743 null] +/D [2163 0 R /XYZ 71.731 367.955 null] >> endobj 2180 0 obj << -/D [2162 0 R /XYZ 71.731 270.373 null] +/D [2163 0 R /XYZ 105.494 357.161 null] >> endobj 2181 0 obj << -/D [2162 0 R /XYZ 82.491 260.125 null] +/D [2163 0 R /XYZ 71.731 345.79 null] >> endobj 2182 0 obj << -/D [2162 0 R /XYZ 71.731 226.849 null] +/D [2163 0 R /XYZ 82.491 335.542 null] >> endobj 2183 0 obj << -/D [2162 0 R /XYZ 71.731 198.79 null] +/D [2163 0 R /XYZ 71.731 302.267 null] >> endobj 2184 0 obj << -/D [2162 0 R /XYZ 71.731 183.846 null] +/D [2163 0 R /XYZ 71.731 274.207 null] >> endobj 2185 0 obj << -/D [2162 0 R /XYZ 71.731 146.451 null] +/D [2163 0 R /XYZ 71.731 259.263 null] >> endobj -2161 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F48 1937 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2189 0 obj << -/Length 2208 -/Filter /FlateDecode ->> -stream -x��Y[�� ~�_�X���X���.Pt.�m�ٙ4���A�(<��u��� ���Dʷxg���ED�IQ�G��#~|�s�;Ј� O�V�w�h_>��4cBS&�97�w?�;�(d�猖����#�,�b�\�ź�E�*.�!mK0lgYYEi�d[����L�4�u��w�e-T:>�M�̜3�ܠQ�����Z1�ԏ3W����z�D�ͱ�ZU���#���������o�ۣ -����c�m+?�7��8^#U��Fk�̌��֫� z�4�j�Q��&2���ҞU��RZ%1�+$�����+w�X��?�\Z��LvD��+r�;Z�r�~�*pe m�BɵM�z�g�V�4��������Rp�⸪�<+q0*���Tf�:ތ���1�JI2< G���<O�C�8h�$��*JWy�I��'C���f~$���OV�(��CԺ�e|՛Ag�>����u�9�Z}��|�$w�BxQV�~ek���P�"��8=�=i��i��^�ppV�!$�K�T��N�������/;��,b3�����*���>�e\!1tgB���Ǚ�4Y��u=m �s���A�0s&�I��r�����X;��&��3��IBʷ�Ӝ���)�}�>��� �O���2p� -)M ^�N 䈖)%<sr��ss;ls3���q�]18ID�_�p^N�%����4@ItN���%%-LKbW�p��UE�*����ՊH+?�E���0!P�Q��覭�m(�`�:���H�M�8_�o�}�W8�F�"�� �*����:�9�IF�e�L������0�R��6��t�cU�_m۩��}+��w<КM���$�5$��ؒzu�% Ψ���� ��h�e9 F%���2���3��:ʗQ��1��R)������S�Kz�ם�볓��r�&�]&�a\:��4���+*b�umՀt���~� �tm� -�Ah\|h���5�ڰ!@x�56�����]�:�s_'� Qb�0�]^ag��<]@G�;���as�[zzٗ���rJs�`aݙ=�M�<�p�������ŴY��t����7����qz͚~�?-�?7����X<͉\L溜�����O�ؾ��c�����,�� ��om�n��<.g����ݐ��x�<|�Ug8O�u�]{���g� �f�w:z^t��_�����?�������{:̳C%���m����i}��F���|��5>U}z�%�5��i���<tY ���`�k�*�<��3���ι.<憆 Ă}R� -`_�0~��b �j��`��p{�$�^R�������kJ]�����2%�s���@a4���V�U��4)�2��2�DG�V> �|Z�b���h�a.!�f@<_h�֔�����<�;H4�x��\���H��AH����̸���=�8#`� !E+����U�sl���`�6�P�#V=FC4�c^��Rn�$B2�3�_�p>�k�/'�r��c�D�*�@��<���qmk�l�{Db�u��!�)-1�y��p�rL�PLmm��r̲ jhT�H�����[b��t��v��wZ�&w��ofEՁ� -�ɨ�+;�ꠧpp 2r�^11��X`����(X|*X�����+f��R�T��^h�̠���3�=}�8���R�c�bE4��pH�U��Y��>OE�jw�sW��D�pT ��@��G��zE�~-B@��-D�V!B�L�^!B/��@��?*D(�l��DS�кP!�=����S>��BD[} -,%y4d�v� ����:��?E�����-���A��hΤ5���cta�A������i���{�Z�'��wy�H����ܧ���%�>ڹT�e�u��$��ht�`�U�=�����00h-�)=jiMVVW�t��Gb���!��ݯ��|U�+�#�� 6�̀�N x�^�!�^�تѾ�� y�]j�7)ySA&�.����:���&�ҳ�~xM�����u�]~BWO�����0��:>�ql�pEC�͓u����8�\���z7�Vc�pX"�).��0��G/�w�oG��z-��� ֔��ۛݚWs�+�+0zIҤ:�K�2�o�2ZٻY�;�W�B%X�p�3/-u���<�������'��r�G����0Q��[.�K����<endstream -endobj -2188 0 obj << -/Type /Page -/Contents 2189 0 R -/Resources 2187 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2186 0 R -/Annots [ 2197 0 R 2225 0 R ] ->> endobj -2197 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [446.952 662.351 499.255 671.263] -/Subtype /Link -/A << /S /GoTo /D (localconfig) >> +2186 0 obj << +/D [2163 0 R /XYZ 71.731 221.868 null] >> endobj -2225 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [405.169 221.006 457.472 229.918] -/Subtype /Link -/A << /S /GoTo /D (localconfig) >> +142 0 obj << +/D [2163 0 R /XYZ 211.285 188.991 null] >> endobj -2190 0 obj << -/D [2188 0 R /XYZ 71.731 729.265 null] +2187 0 obj << +/D [2163 0 R /XYZ 71.731 181.913 null] >> endobj -146 0 obj << -/D [2188 0 R /XYZ 211.285 708.344 null] +2188 0 obj << +/D [2163 0 R /XYZ 271.067 158.107 null] >> endobj -2191 0 obj << -/D [2188 0 R /XYZ 71.731 701.265 null] +2189 0 obj << +/D [2163 0 R /XYZ 243.475 145.156 null] >> endobj 2192 0 obj << -/D [2188 0 R /XYZ 271.067 677.46 null] +/D [2163 0 R /XYZ 375.041 145.156 null] >> endobj -2193 0 obj << -/D [2188 0 R /XYZ 243.475 664.508 null] +2194 0 obj << +/D [2163 0 R /XYZ 71.731 138.018 null] +>> endobj +2195 0 obj << +/D [2163 0 R /XYZ 137.593 127.223 null] >> endobj 2196 0 obj << -/D [2188 0 R /XYZ 375.041 664.508 null] +/D [2163 0 R /XYZ 262.973 127.223 null] +>> endobj +2197 0 obj << +/D [2163 0 R /XYZ 403.449 127.223 null] >> endobj 2198 0 obj << -/D [2188 0 R /XYZ 71.731 657.37 null] +/D [2163 0 R /XYZ 134.388 114.272 null] >> endobj 2199 0 obj << -/D [2188 0 R /XYZ 137.593 646.575 null] ->> endobj -2200 0 obj << -/D [2188 0 R /XYZ 262.973 646.575 null] +/D [2163 0 R /XYZ 344.012 114.272 null] >> endobj -2201 0 obj << -/D [2188 0 R /XYZ 403.449 646.575 null] +2162 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F48 1934 0 R /F27 1132 0 R /F35 1463 0 R /F53 2191 0 R /F32 1139 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +2203 0 obj << +/Length 1910 +/Filter /FlateDecode +>> +stream +x��Xmo�F��_�ԓ����^�䤪yq��9B��=�Ue��s�\D}gwfmc�\N�VE����yۙgf��x��̵�a��tDg�>3:K����E�H�5����ŝeu|�;Vg����c��q-�y��L�7�p[Ļ^�F�d�l�"L�d������$M�ޟ�ςi)TX.�=�E�4MK1ӭ���l[)6�oPx���\�Dt@}Ǒ,��p�P��C�)E�:S�g�D2���p������$�L���q:r�&OHw���wtr����p��|�K���ș���=St�����=�m�.k�T�`P�or�p�����̶8��~|5����at'�}p3=Ǘ�p��EZ�-�����Q�G�WӀho�`�2�����K�W��`L�qP���� Wӫ��`���bp�D|=����CR�<�Z�F�w�8�|�s�_���#9h���"�>��a���� ���tp7nqx�ޅ�/��]� �&���fm�<o߂m1�����Z��7M� �:��UWzw�8��������];����×����*h]���u(haG-,� ~��H%>l}�qэwy��o�H�����<S�`3��:rK;r�G�q[3|U촥p�a���l��:ɥY9��0�)o���p��L:���6a�4�+��a����>H�a�u�U�O�U���L����b��q%���1���{i!˻�}$�q5����g��i�0&���a��i ��9��{8������<���$�5�x4��-��fy����=�Q�;�X`�q!�1L�2_��HV.p�r�J�Y�@����P���ì�)������`���_�p>�4SXes�*�*��7� ���FuP$�#ƑD�[�Z%����Jk��a�$51B���ş��ZdZxL����<������r�$�2JW�|��*g� B���~�J$8YY�O22�~6�b���68�9٫�}�`��](�+��"\��x�Kq������[Pk�K{���-�(��'W�H�#�5��-|�+��*���"���lJ��v�&�P�3R�)O*�|�cG���3�Z�;S,|�TY&�2���*NM�M�c����9�@���1��a���p��>x���0)W$ͳ�"Y��@�����\���X�!���)]2�#u +�.�9��:��š�>��"ڂ,� +(��.�����sD��*8�e��Q������V���%? �G��jε�$ɓtt��]|�8�x�3Sد�;43���?dU�lC0�-ӃJ��4M�F������I<�0Ǒ 2�%^��v͗������x�,O0��G�@J�UU�>�E��i�Q�%g/r"} +.5V�14!6�7n�d�4[ja^��j�˲�*i�T�풠�ѬĪ���!���7���X���|�%���-s"t�P�}縑�jj^�|Ui_�E�<��_J�Ks���5��י����(�P�džT�Տ�FU��:��� .[��o����&[����:���{�$�q��A�;OX��RŚE}�|*Aڀe����k�����Q�;�� +�P��6/"��zo�yG��J�*�V4�����,I���,9�T�%��,�y#�j9�:�J�i�|���4WcR���"m���Qۣ;ٛl�a��=N�e�����bݗ�M�eQ�Y���(�`�́oq��� �,Z˿V���{>Yol�%J +N)@5� `�C��pS�K�*���I'���pw�&���f�y}'�j;�2Τ 5��RaG�8�O������8��6T�^�9��~���IQ�{���?�/��_h5���J4R+c����e¨T���u$�%�~ф���?�V$��k�]��B����~�mK�@G��endstream +endobj 2202 0 obj << -/D [2188 0 R /XYZ 134.388 633.624 null] +/Type /Page +/Contents 2203 0 R +/Resources 2201 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2200 0 R +/Annots [ 2226 0 R ] >> endobj -2203 0 obj << -/D [2188 0 R /XYZ 344.012 633.624 null] +2226 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.169 326.61 457.472 335.522] +/Subtype /Link +/A << /S /GoTo /D (localconfig) >> >> endobj 2204 0 obj << -/D [2188 0 R /XYZ 71.731 613.534 null] +/D [2202 0 R /XYZ 71.731 729.265 null] >> endobj 2205 0 obj << -/D [2188 0 R /XYZ 105.494 602.74 null] +/D [2202 0 R /XYZ 71.731 741.22 null] >> endobj 2206 0 obj << -/D [2188 0 R /XYZ 71.731 596.351 null] +/D [2202 0 R /XYZ 71.731 718.306 null] >> endobj 2207 0 obj << -/D [2188 0 R /XYZ 71.731 572.688 null] +/D [2202 0 R /XYZ 105.494 708.344 null] >> endobj 2208 0 obj << -/D [2188 0 R /XYZ 82.491 563.188 null] +/D [2202 0 R /XYZ 71.731 678.291 null] >> endobj 2209 0 obj << -/D [2188 0 R /XYZ 308.443 528.219 null] +/D [2202 0 R /XYZ 82.491 668.792 null] >> endobj 2210 0 obj << -/D [2188 0 R /XYZ 130.909 516.563 null] +/D [2202 0 R /XYZ 308.443 633.823 null] >> endobj 2211 0 obj << -/D [2188 0 R /XYZ 71.731 505.333 null] +/D [2202 0 R /XYZ 130.909 622.167 null] >> endobj 2212 0 obj << -/D [2188 0 R /XYZ 266.554 493.649 null] +/D [2202 0 R /XYZ 71.731 610.937 null] >> endobj 2213 0 obj << -/D [2188 0 R /XYZ 345.631 493.649 null] +/D [2202 0 R /XYZ 266.554 599.253 null] >> endobj 2214 0 obj << -/D [2188 0 R /XYZ 71.731 468.578 null] +/D [2202 0 R /XYZ 345.631 599.253 null] >> endobj 2215 0 obj << -/D [2188 0 R /XYZ 82.491 459.078 null] +/D [2202 0 R /XYZ 71.731 574.182 null] >> endobj 2216 0 obj << -/D [2188 0 R /XYZ 136.289 424.11 null] +/D [2202 0 R /XYZ 82.491 564.682 null] >> endobj 2217 0 obj << -/D [2188 0 R /XYZ 130.909 412.453 null] +/D [2202 0 R /XYZ 136.289 529.714 null] >> endobj -1260 0 obj << -/D [2188 0 R /XYZ 71.731 391.261 null] +2218 0 obj << +/D [2202 0 R /XYZ 130.909 518.057 null] >> endobj -150 0 obj << -/D [2188 0 R /XYZ 183.546 357.061 null] +1259 0 obj << +/D [2202 0 R /XYZ 71.731 496.865 null] >> endobj -2218 0 obj << -/D [2188 0 R /XYZ 71.731 354.401 null] +146 0 obj << +/D [2202 0 R /XYZ 183.546 462.665 null] >> endobj 2219 0 obj << -/D [2188 0 R /XYZ 71.731 338.461 null] +/D [2202 0 R /XYZ 71.731 460.005 null] >> endobj 2220 0 obj << -/D [2188 0 R /XYZ 76.712 299.875 null] ->> endobj -154 0 obj << -/D [2188 0 R /XYZ 233.392 266.999 null] +/D [2202 0 R /XYZ 71.731 444.065 null] >> endobj 2221 0 obj << -/D [2188 0 R /XYZ 71.731 259.801 null] +/D [2202 0 R /XYZ 76.712 405.479 null] +>> endobj +150 0 obj << +/D [2202 0 R /XYZ 233.392 372.603 null] >> endobj 2222 0 obj << -/D [2188 0 R /XYZ 250.633 236.115 null] +/D [2202 0 R /XYZ 71.731 365.405 null] >> endobj 2223 0 obj << -/D [2188 0 R /XYZ 201.693 223.163 null] +/D [2202 0 R /XYZ 250.633 341.719 null] >> endobj 2224 0 obj << -/D [2188 0 R /XYZ 333.258 223.163 null] +/D [2202 0 R /XYZ 201.693 328.767 null] >> endobj -2226 0 obj << -/D [2188 0 R /XYZ 71.731 216.025 null] +2225 0 obj << +/D [2202 0 R /XYZ 333.258 328.767 null] >> endobj 2227 0 obj << -/D [2188 0 R /XYZ 71.731 193.111 null] +/D [2202 0 R /XYZ 71.731 321.629 null] >> endobj 2228 0 obj << -/D [2188 0 R /XYZ 77.111 183.611 null] +/D [2202 0 R /XYZ 71.731 298.715 null] >> endobj 2229 0 obj << -/D [2188 0 R /XYZ 71.731 172.241 null] +/D [2202 0 R /XYZ 77.111 289.215 null] >> endobj 2230 0 obj << -/D [2188 0 R /XYZ 71.731 148.578 null] +/D [2202 0 R /XYZ 71.731 277.845 null] >> endobj 2231 0 obj << -/D [2188 0 R /XYZ 77.111 139.078 null] +/D [2202 0 R /XYZ 71.731 254.182 null] >> endobj 2232 0 obj << -/D [2188 0 R /XYZ 71.731 127.708 null] +/D [2202 0 R /XYZ 77.111 244.682 null] >> endobj 2233 0 obj << -/D [2188 0 R /XYZ 363.851 116.164 null] +/D [2202 0 R /XYZ 71.731 233.312 null] >> endobj 2234 0 obj << -/D [2188 0 R /XYZ 425.741 116.164 null] +/D [2202 0 R /XYZ 363.851 221.768 null] >> endobj -2187 0 obj << -/Font << /F33 1230 0 R /F48 1937 0 R /F27 1132 0 R /F35 1463 0 R /F54 2195 0 R /F32 1139 0 R /F23 1125 0 R /F44 1925 0 R >> -/ProcSet [ /PDF /Text ] +2235 0 obj << +/D [2202 0 R /XYZ 425.741 221.768 null] >> endobj -2237 0 obj << -/Length 2704 -/Filter /FlateDecode ->> -stream -xڕY{�� �?E��(�l���-���k�X��)��W,�XI���~���ӗ)?gf��%Z&)���T���*�D��C&B��աx�N��O�<^��%�ɚO�?��*��_=W��$ZE�q(WO鿜�gUw�Yod�:R��l;��Yy������,����Oy��� 4�#����z�5W��ݟ?�bR�?�!���U����S�h"<�A��]{NwZ{����� 5�� �����x����X�e�<�w�sl|�y�zH�vH�R�F]E�t�u��W`��Y{�N�R�d]�>��J��x���X�V>��Ùd- ���Bļ:��T�NV. �D�0��W�l�l��O��m�:��V�? �#H�CI2�3��;h�\/�X�6~�� ��R$�g����4���R&(z���n&�Vz�lK�Q� q�U��9��]o~~�窅�w.|�LJ�}ji��H���x�G$�b�O�" �r�'c"��Ъġ���TG�c���������?�����ӣ�9J}貪l�i��[��d}ql��^���xwD@���V���U�Yժ䕃�-���|]{�#<Rwv�$�ΙO�n���6��y�<��Z�t� -D��3e�XO�a�e����4���̃cE����0��ʎg�p�M�)b�������{�$��8���ek��9>���N`��1�b�{}�ê�L� "��"�#��j��Vy[�b -GSn@������h�n�P/��Z�&�� �����F\2�������K���=�x�����[���R{�F�?�:SO3Fj,��S�/�<F�@o8��~gU���d� �j7/��$ ���7ݡ���mu���~O�#�U��)]�����5����n�0�À-#�`� -8P���&��R�̂��{��,�cO"ڮ��H���,B���"i��Uc��F����-j��6�f�?���Lje_A���6�gyֽ����N�S���C�v������������Ta�E^�M��3&H���=�@"0��C&^����հ�Q��t��A4qc+�2��1H��!t����m���6�W�CvB�����ƪ����p`�[w� ҔA�xBI��=�Dž-y���Ŭ��� -Þ̠V��4�(�M���]�BJ�Y5����ₚx�ʕ���uv �c8�Sr}ͪ���c@�<g9x ?�Sm}������� V�_y����d�(ju����q�ĉ/���E�/B�ǓT������P���n���#{F�� -��O�]`��Y�j&��% -�02U�L�P�*�s�M��0p�+L���G\�e -��y��,���V���=h� ��m�NO�0���a���@�(�F�dD�� �Z����G<4e�NAoXΡ*�,��hG0��tQ�Ь`9K�M�������fC�M������X�����h�x�~�j\:�,g�e�F1<��L2�ƈ[#�Fg�R1� @Ɓ�FT'鸁��/-Q�FR�;��Lńe֕4Wial��dO�$ڬ�z��@��>� -`��]V�z�ݲn� �"���`U9`ǁ�\8ڢ�n^:�D 7�+ �;DԚ�D"���2x�Rߙ2�H��;~_R�Ha�0#q��%M!�[�W��l��}���>�\f~�R���Q� -}o٥<���b����3���;�я�[���IH�cE�]��� .���X���7�ړ;D�a�L�����YJ�l��x��F�����7b����?$���?�>x��&R`�Ո�U!ݘM/�|W2����<#;$�*7�c�5T���c.'$d%8U?����g�D�uS�Pu�ʰx�밗~��=���v�%�"j�Q|��=Ȼ���ù��f@�&� �a���yZC=�UA�0��.M���}���m�}�o&��Xߥ9�]�q�l��igmAh��`�m�aN9��gj���/�Ņ����W�U���,벑�����]F���FU�m�̘��l�����ZU�fX\���P�M�1���'�W��������5ޭ�D�E���v�f��\����Fh����H6ė���P����y���/QA7<��&�8�0�W?��Ļ���G�)��]W��]4�����i� V��A -q)B�͐dPŔ����)ƿX��s��r$�.�`�����|��A�H����5W&�`�f�ĥ�.6X�u�d�'��N���`&�S���#!Hwg s�7�m�L���^\�'�r5�lz�%?�j�Ee������6W}����{{R -������ -�zO!�o���[��fg�o�H��2��Ug��t^Bau��e����gH�x&����� ���ք��cI���="�C����,��=�L�s5�|.LV�_IJ�95*+��3�[��5�Zz�>M�L�(�@�wx5��V)� ��p���Ja�͜��3I�9����7�ߙ�mҕCd���j莕mC.:�4n�5^��\��Y���*B9S������D�!.R1�H��c����d�� �1���P^F#�RЮ�+���6�k&-k[�ֲ[¡P��?��~~~��-���X~�O//�c�Lwo�o��F���;.���7��p�eb�ܿ�3��Y�Jendstream -endobj 2236 0 obj << -/Type /Page -/Contents 2237 0 R -/Resources 2235 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2186 0 R -/Annots [ 2268 0 R ] +/D [2202 0 R /XYZ 71.731 201.679 null] >> endobj -2268 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [431.986 222.56 484.289 231.472] -/Subtype /Link -/A << /S /GoTo /D (security-webserver-access) >> +154 0 obj << +/D [2202 0 R /XYZ 215.669 170.959 null] +>> endobj +2237 0 obj << +/D [2202 0 R /XYZ 71.731 163.761 null] >> endobj 2238 0 obj << -/D [2236 0 R /XYZ 71.731 729.265 null] +/D [2202 0 R /XYZ 178.553 153.026 null] >> endobj 2239 0 obj << -/D [2236 0 R /XYZ 71.731 718.306 null] ->> endobj -158 0 obj << -/D [2236 0 R /XYZ 215.669 708.344 null] +/D [2202 0 R /XYZ 347.94 153.026 null] >> endobj 2240 0 obj << -/D [2236 0 R /XYZ 71.731 701.146 null] +/D [2202 0 R /XYZ 71.731 134.994 null] >> endobj 2241 0 obj << -/D [2236 0 R /XYZ 178.553 690.411 null] +/D [2202 0 R /XYZ 71.731 134.994 null] >> endobj -2242 0 obj << -/D [2236 0 R /XYZ 347.94 690.411 null] +2201 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F53 2191 0 R /F23 1125 0 R /F44 1922 0 R /F48 1934 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +2244 0 obj << +/Length 2634 +/Filter /FlateDecode +>> +stream +xڍYm�� ���"@L�N4��ע-��ݻK��m{SE�8hl%q�og�3;��%E�q��b>D�%��ȇ��_y��_$~�Lq���7���_���-/��ּ�s����Ld�\��W���,Y%2i����Ugt���������*��ߍ���U�6���˛���H&"K�z�5W��I1w>/2�b��r�l��k�z���!��ip�������"��~}ڐ�M�sS��pKk�\�&��O4�-�����Ӎ$?������Vʨ5hV�mx�����?Z��V������$�l��7��[����#���-MUSLtt +D��5����ac�\�ሆ����̃kE����E�ZL���IRv��C����i�z��v� (q�M�s��j�L� ��������60h��'<2������O�H����j�L�"�$u�P~�����^�]�gR[UCK�F�F�)�( 'ZA�ıe��B�̷����J����HC�GɹV&�v�����0#x׳���]vٜ��J������G��U��]w����C��g�N�}[�ڭ�m|t��fO�4"3YEZ���g{�u�fk��C�$��G���l�su����y��]OZ ���Hͻ��eh���������c���i��ygb^�o������,qdc5���p��[0aȨ������ 00_�#�o?����� 5`0�E��4�;�"�|��"����`�-j���g��[3ش!#]���+H�q��3�eU�g"X ��)y +oZ�4?NE�e����3��ؾ�۴'�"mn��@�"��o�H&0���c�����!"B/>���U�ꗇ�D�� G0�~���)(G��20D�Sw���}�Hy�B@,�ԟ`�X��z�1:�����L"Kân(KE����p$_� t�5�Pa:�t�,���f�+O$I<;.�F" +�amԜ쇨,E +E�ܥ[a��2'�c8� ���v �;�e^��O��T�]d~���F��r�p�b�If� D $Bu��sT�sĉ���DW-B��"�*�~�Š���������wG9�x�?��L��C�;�c����@�7`�,�e![(u[��慶��x�z�&��A�B��'��1��ּ�E*p +�D��}����� ��ai�N��Icm�apThv �`�[�#2-�i4(�r��)[w +��c9y[we�щ`��t�U�h,gi��_�s��6W��l�Ҷ���!;�yM�X����ke��O�K�:�Yh\��,g���bxv�3�t#n����l��YN�AZoDu҈�Hj�<�jd ڨ�b*&,����*jk�r0�=iKt +h�vj�췜���>�j`4V��*=��X�mK�Ȱ0ϝ*9vh˅��[OI�F'�i���S�k�Dڜ6�@���ו�͖�{�<��(h����Е�@�`F⎍KQ@d4o��= +����z �����e�G'�5�ַ�]���reKÙn��rgu�c���+��"@�*j��\wqQ��ܶ,8x�� a}V���?�9x K1e�)��dU��P``_H|���FFᔨBNT��H���XH��-V#.W��ݣm6���Tzr���tV��������8A �l���S���l�꺾�� +2��px�밗ށ��i��\;4Y�()>���\��i�#5?���,H��� 2�<4\�o�ת�u�h�Z76da��S� +�5�r�w����.�n.�Eִgm��B�=k�9��j��J�w�����0�]��Y +GXV����������-�d���rN���h�:3�b![V��~xv�Z��~Z�u��T���1��}'2��m5L ��kX(�mM�U��k'��an�v���5���'r>� �%�+�)ԇi��x^��FT�M�E� ��-���V��=�,�}y�?*Oi~4�+��h@�����M +�7���C\��o3&YX��5���kO�����9�s=R�^�o!x��/��/��x��k/��5/=��%h_\�J}hc�%Y���l���,~���ت�:��q�i�^����&]��^�N7�%r;m���t��ꢴC�Z����>�����ݔ�*����� ��L$p�5�w��w�dw�����>X4�٫�0[�3�%V/8Â��:�k��S��g�]�I)���0� ��������D��L���.�!=�L��d@�6�Jj��=��l�#���~�5�[���(�L (g�L��mr�e-�R�B���Yj�R��3�2;�TRjN�=��u0�n0E�<�>�H��X�.1�cO�a��K�e�)M@��:E(Ib�m?TԷ���E�F%��j��.&��p�~@����k.��d)�Wݛ�;�x^_�6�������Soi�p(^*���OOO�uu�`-���]u��Bi����iN�R�ߞc��¥�-x.�Jb���.� M"d�����*LJ�"?��!����K���do�ۭ?v\����B�n�������w;'��&�R�п�ƊB�<�Uy_��|,kz�\��0����t�%W����Tx�cb��|��ג����dendstream +endobj 2243 0 obj << -/D [2236 0 R /XYZ 71.731 672.379 null] +/Type /Page +/Contents 2244 0 R +/Resources 2242 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2200 0 R +/Annots [ 2267 0 R ] >> endobj -2244 0 obj << -/D [2236 0 R /XYZ 71.731 672.379 null] +2267 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.986 289.31 484.289 298.222] +/Subtype /Link +/A << /S /GoTo /D (security-webserver-access) >> >> endobj 2245 0 obj << -/D [2236 0 R /XYZ 71.731 653.138 null] +/D [2243 0 R /XYZ 71.731 729.265 null] >> endobj 2246 0 obj << -/D [2236 0 R /XYZ 71.731 621.504 null] +/D [2243 0 R /XYZ 71.731 718.306 null] >> endobj 2247 0 obj << -/D [2236 0 R /XYZ 140.901 610.71 null] +/D [2243 0 R /XYZ 431.826 677.46 null] >> endobj 2248 0 obj << -/D [2236 0 R /XYZ 431.826 610.71 null] +/D [2243 0 R /XYZ 153.643 664.508 null] >> endobj 2249 0 obj << -/D [2236 0 R /XYZ 153.643 597.758 null] +/D [2243 0 R /XYZ 71.731 657.37 null] >> endobj 2250 0 obj << -/D [2236 0 R /XYZ 71.731 590.62 null] +/D [2243 0 R /XYZ 71.731 657.37 null] >> endobj 2251 0 obj << -/D [2236 0 R /XYZ 71.731 590.62 null] +/D [2243 0 R /XYZ 71.731 640.186 null] >> endobj 2252 0 obj << -/D [2236 0 R /XYZ 71.731 573.437 null] +/D [2243 0 R /XYZ 71.731 623.562 null] >> endobj 2253 0 obj << -/D [2236 0 R /XYZ 71.731 556.812 null] +/D [2243 0 R /XYZ 71.731 623.562 null] >> endobj 2254 0 obj << -/D [2236 0 R /XYZ 71.731 556.812 null] +/D [2243 0 R /XYZ 71.731 604.321 null] >> endobj 2255 0 obj << -/D [2236 0 R /XYZ 71.731 537.571 null] +/D [2243 0 R /XYZ 240.44 579.826 null] >> endobj 2256 0 obj << -/D [2236 0 R /XYZ 240.44 513.076 null] +/D [2243 0 R /XYZ 71.731 566.874 null] >> endobj 2257 0 obj << -/D [2236 0 R /XYZ 71.731 500.125 null] +/D [2243 0 R /XYZ 181.256 566.874 null] >> endobj 2258 0 obj << -/D [2236 0 R /XYZ 181.256 500.125 null] +/D [2243 0 R /XYZ 336.036 566.874 null] >> endobj 2259 0 obj << -/D [2236 0 R /XYZ 336.036 500.125 null] +/D [2243 0 R /XYZ 470.054 566.874 null] >> endobj -2260 0 obj << -/D [2236 0 R /XYZ 470.054 500.125 null] +1260 0 obj << +/D [2243 0 R /XYZ 71.731 526.859 null] >> endobj -1261 0 obj << -/D [2236 0 R /XYZ 71.731 460.11 null] +158 0 obj << +/D [2243 0 R /XYZ 206.856 489.644 null] >> endobj -162 0 obj << -/D [2236 0 R /XYZ 206.856 422.894 null] +2260 0 obj << +/D [2243 0 R /XYZ 71.731 479.501 null] >> endobj 2261 0 obj << -/D [2236 0 R /XYZ 71.731 412.751 null] +/D [2243 0 R /XYZ 120.303 469.519 null] >> endobj 2262 0 obj << -/D [2236 0 R /XYZ 120.303 402.77 null] +/D [2243 0 R /XYZ 71.731 436.478 null] >> endobj 2263 0 obj << -/D [2236 0 R /XYZ 71.731 369.729 null] +/D [2243 0 R /XYZ 71.731 392.643 null] >> endobj 2264 0 obj << -/D [2236 0 R /XYZ 71.731 325.893 null] +/D [2243 0 R /XYZ 71.731 392.643 null] >> endobj 2265 0 obj << -/D [2236 0 R /XYZ 71.731 325.893 null] +/D [2243 0 R /XYZ 270.634 381.848 null] +>> endobj +1261 0 obj << +/D [2243 0 R /XYZ 71.731 374.71 null] +>> endobj +162 0 obj << +/D [2243 0 R /XYZ 188.593 337.494 null] >> endobj 2266 0 obj << -/D [2236 0 R /XYZ 270.634 315.098 null] +/D [2243 0 R /XYZ 71.731 330.142 null] >> endobj 1262 0 obj << -/D [2236 0 R /XYZ 71.731 307.96 null] +/D [2243 0 R /XYZ 71.731 289.31 null] >> endobj 166 0 obj << -/D [2236 0 R /XYZ 188.593 270.745 null] ->> endobj -2267 0 obj << -/D [2236 0 R /XYZ 71.731 263.392 null] +/D [2243 0 R /XYZ 191.198 256.996 null] >> endobj -1263 0 obj << -/D [2236 0 R /XYZ 71.731 222.56 null] ->> endobj -170 0 obj << -/D [2236 0 R /XYZ 191.198 190.247 null] +2268 0 obj << +/D [2243 0 R /XYZ 71.731 248.544 null] >> endobj 2269 0 obj << -/D [2236 0 R /XYZ 71.731 181.794 null] +/D [2243 0 R /XYZ 71.731 235.91 null] >> endobj 2270 0 obj << -/D [2236 0 R /XYZ 71.731 169.161 null] +/D [2243 0 R /XYZ 71.731 225.948 null] >> endobj 2271 0 obj << -/D [2236 0 R /XYZ 71.731 159.198 null] +/D [2243 0 R /XYZ 115.118 210.172 null] >> endobj 2272 0 obj << -/D [2236 0 R /XYZ 115.118 143.422 null] +/D [2243 0 R /XYZ 429.318 210.172 null] >> endobj 2273 0 obj << -/D [2236 0 R /XYZ 429.318 143.422 null] +/D [2243 0 R /XYZ 71.731 208.015 null] >> endobj 2274 0 obj << -/D [2236 0 R /XYZ 71.731 141.265 null] +/D [2243 0 R /XYZ 147.188 192.239 null] >> endobj 2275 0 obj << -/D [2236 0 R /XYZ 147.188 125.489 null] +/D [2243 0 R /XYZ 314.747 166.336 null] >> endobj 2276 0 obj << -/D [2236 0 R /XYZ 314.747 99.587 null] +/D [2243 0 R /XYZ 71.731 159.198 null] >> endobj -2235 0 obj << -/Font << /F33 1230 0 R /F48 1937 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F23 1125 0 R >> +2242 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2279 0 obj << -/Length 3063 +/Length 3044 /Filter /FlateDecode >> stream -xڝk�۸�{~�q(P��E꽹^�K��ۻ&��5(z� K�-D�I�f��;/�������ᐜ�I�ziy�1�2a�Ȏ/��fвb%KV�5?ݿX���E���[����U-"Ϩ80������C�E�\��u�����z��N���U�.�s��o�G���$���ˮ�,@�0D��D�����Xy�O���+������u���[?<<��q��N�ފT?�X��(H+�UDD�U����y��Cپ\�YW��`�$�wekH[߷C��=��~S�ŗ�|��E������Ql��[J���������ʼ�-���r���+'�a=��ӯߚ�|�@t� ��?=5�r�Cw��h���kn�&pp�;i�fY=4��NK���h�w�5�ѻ�T�(�CY&�;ۥqkD4�[�_^��?����2щP �v�O�2�JM��5��3�I�Â2��q��56��0P^b��۲7u������vݎ��ͱhj����#C�c��!d=Ȃ�l�8�ӣL�5���۵ێ���R΄j&��ru��z��A���C�E�ձh��_�4ˊ��rXW%n"�=_7���6x3r=l���W��#�-�c ��=ڜ&�D(��>Xl�����-/�P0.4���'�l�{= V��m�ݴf;�q��'D[,���!����g���4�� �Ȍ&��V�5��3��k�k$b"br�c�L���4���<��� ���w7pԯګɅ�iD+O�����e��q�O ��8�L�I�sw��U��e�4�*�QZ��@mK� (��cހ�yzfT�R�p�oF�h?R�5zy��V����3�D8���� -jԢ``��D[���<��`�(Mӥ'�@�� �n�n����5-,�L�C^��E���MYڃ��ᙲΪS��4M�!�R��9�G�,�+��b�0�̘��o*k�b.�8��� -�+��_!�T3��;��_Z\*��@�|/�8���R���Q:�k&k�|�F�'dPOތWJL�k��~Ge�{Ua -��oȠ٧�N�j�y\�� -�H/KQ�!d�b``(��:P�D�9\� ��O�=��a:�d������`�2�f���z�$8|8�2��S+rQJ��b�b8st�}���S�N(6Bi�`�mIIPHr���������L��4tl�0D݂�A�1#GU� s�ahs�zw%�y*J��&H��,+�O~�V'�K�#K��$�'�9i?�rC�?�>QkE��~ؕ������Y��L����k��}DV�U����_9}�t49=�y�u���� -�Xi�V߰� �2�j ���N��5_ �Y�_ s^���N�J�%o�"� -km:�:M�"b��E�fÉ�BC��� -f��;# �xZ2R�5!gX:�V��E��́�<`�E!t��㶩��rѻ>a0��eF�7�����|lN@2�2�.��!�C�M�IH ��ld\�_�:��(�ՠm�f6��$�aI7;a!e9����W��M�Y�u�� -��� �R%�8 2������`�OZ� )�ci�.N=z_ڏn����V�l'�8s��@���Ά/2��-������\���xˤ����A���P��FR� 4;0�P7t^IK�k�*� �����Z �*�95Lo,��b�o�,���S���B��e�:�.�z��Jɖ�Kh+j?��k[!����H�-��(��ԄE�ʇ���� -\J��_�\���:t٦ovR�mj(�b�h�;�h���Än��D�\{��÷ȁ(�3b��$��1jvA\�)�_6�:?WH��k'g8;4M/�H=�=Y��N6V-���nr6@���X,G��E�cp�R��)����n����rh/�( Q78u -��TV��[&"!�[ !�b��?uVtX�c�)ڞG�Ȱ� -�/`����^R����������c�(�P�C'��{*��b2�-����;�hu5^�&uaU�{��S��vC�A�y�C��c��Z�v��Om�t�:Z�P~�y�#�OՠҾ���>+�?}ھDuի+ҟ����pIb�wc���/Aq�Ա������(��0-� �a�Eh�|x�_��'B���,�6�;|��0��H -b���ABZ��3U�c6s<�`�X����vd���K&'��{�=�-��F3L�����Q�4MϬ.4��Q�8x����+���`����&�%v�W6ƒ�� /��#�s@�����4�pm|�����! -�I��#����.��F6��� � ?��#q$�#M<5����*HlI�?�ɺ_�2�s�a��8�Xd7��a9[0%�44��b����� -����-��N�o�@� ���5��cq-i�S(>�J�q�ۃ�bc{��,e<hWY�)�������m."�At��:_��]�e�>�H���1h��^B�0��S�F���5l�<�o>];-(�0R��_xs�7&��a�<@�?��]NB�H5o�)�3�����Ѡo��B��\�z#[�b�5S?��:�miK C��<�ڐ'} ~e��;�Gn�>Ġ ?��<��<�N��p�rã����#C�f�S�����:=d@~k,���d!�a���v�N%�1�#�*?�u U��'�����KOd��2t�1ٳ��|�`kܘ� -F�Y}|�c�B,X�7W��[˷*�3�1��2�I���Zt�3T͜�F�n�?�;�@tN.��g��I��]>���� -|���,O}�h�ƪ�{�i��V�����De�9���f=�6w�>lն���z�'$�~���~N -�Ty��"��A��M���Ol쟴 CaWq=�a�� v�u�����ױb\�;� -��ˏ����ﶣ�Ffgs�*m�d�&��K�S�Z����>��Ӕ�y~���]@Iȿ &b��{n�����ؘL�Ӵ�RQ�/*̆K�Lj;k�1�j�!�#|�w�±��`�/R����W�� -��8�֧24�_{݊�}��ǭq�������5�ʢ��� ?��?2x�endstream +xڝko���{~��P +����;IS�rI��]ԾE�II�)��#���;��(S��sv8ܝ����ʅ?����<x�D�0Xe�g�jo><�Bq)$�3�o�]���U���[�nW��U�"Ϩ80������}�E��4�����Ҫ*��w�-�*]�������N�^����._�f�X�n����*rc��>1��꧲+���_�W�Mt��]]�vA�����`5�X��l(���(��Y���ǥ�m��zhk���lW��/�k��g������/kف���ڸ����-�/OY�|����S��v�;��F%ri�H=c���(��[䬱���@y���p��t��@�Є�n˛�͡hj9���G����C ��Ip^��A^�5�F�v��݀^�L�f*�S�NN����u8�R�K�#��X��I��,+�����J�D�=^7�<]<�������f��ݡN�mN�!ތ)N�}��P�t�ߛ�x��`�� T�=��z��5XM�϶����5ۉ��sH�m��f����=�7�]`��l'�mM������5��51�ױL�]Q�=��y$+� �TD���-P�j�f�F��<�F^�t������vW���W��P]�^�S�qqO�� �$ڹ�=CG��~�8�X�J���m��Ś` +��2OeFU+%�r��ߛI-ڏ�q��m����h=��8p �]�VP����h�4c#�{���8��t��"�x�������x�H.Ӂ�I�k���,�@]�Ϊ1G[���(9W +���!���U9�S�n��3�3cb���t�\fqf�s +�+��_!�T3��;��_Z� [�V��f_HOr����B���M�3ʐ�H�dԓ�8+%&����>���������lȠ�]_c��jW#�?��RTgY��ݞ�?Qy�O�5�œxO�c�%Y `=��o0u�P������2 .�����u�� +_���m��d�!Rͳ�<_{` +݈l#����&qޗ����[.�T�@������P!$ �<Q�����XlG�� s�ahs�z{&�y*J,�oH���+�O~�V������ɩ�����~冖����D���^��'y����tSI�='�� ���(P�rwF�D�h&=�y�u�������Ҟ�~��C�<{�7��U�wÀ��fpm!�3<=���7OM�J��ԏ-��i��� �k�4�R!b�<�9�f�H%�!4s=o��; �`Z2L�kJ�!g ��)�E��=�v�n�B����*3{z�u��Ke�L���\KS�����fD�(Ȩ�(r�(��3�s&�0���փ��D쟏:qU� +��|�j�]e��Ѐ[7[9BJq����YQ�d�ՙ^+�*�6�Ke�Bq�s����������A"�r��'��qi?y��E�.[!���o,�^,���������{T�������3���Of ��|���37����7��y#m$ҰU �U�ǫ絵@^U����~S�8`�}�`��]=g�{,ܞ:˱c�"�K���ϴ�lɠZ�d�6���>FZ��`L�#�ؒl���@і@Ц��|��0�|�.�|E3(�~-�]�雭r�5u1����;�h����$n��D��H��-r +EF8��f��i�����&P��*7������M��~�x��ґdS����(��3����X�G��OE�cp�\��)6'�ڽ�O <_��{����q����B&� +�x��&B��}@�)V\����]�1�h{^�#)�`����Ma� ���������0�!}v��! ����C��OK�����(ZD]@M��˿I-X�N>�1�J��̠�|�K��c������U?�m� �`w���p�[�}�����_����|�y��/�\�ؿ�0��)I�|1������k;_���t#�&��v\��ǧw������+[y�,���o�{�P0A��PW>.��GS���Q��"p@����vd��s* '`�=�<��x:Ib�I����|Լ&MӎǣN4��IӸx�ɸ�+���`Ҽdi���;��+cI��� �Ipb$~�s��'��3��= Q�L�+�/�t9M7�3�9�G#V$��(��S�}pW�BbK"��xN�8 \ʨ�e��8c��<2��Ll��x��h<�'ъ���K��0��[��fd:?^����C:��1g������G��T���=�p�\d)�A� LAtjA=��ns��;&(��r�.�1<q�����f���LB0o��ݛv7��x[#������S�yA��#����J�1q}����ݞ�rB_�ysH�qJ���n�}a?/d��Y��@Odb�\,���P��m���"�ch6�C� yҗ�Sޝ�Cl��!M��I@@Q���l�4xͽ���������� P��2 �W��.*Y6�����T�J��h����P�%T������B��.=����%�d�^��lHkܘ��\C����s^�b�ʿ��2��g-ϪD�,���������E'����#id�V1�3�����\,P��Lų��|LAS��8��4��>�s4@S��=��A+y�@q8��:����^���ͧkA�-v��L�0OH���#�1)�x��sD��i�7O��I� �����?k��Rq=�~�� ��t�r�b,f{����H|�*�F/�I��O?GN��;�3^Pi&[41�[C�Z�2�iZ;��Ӕ�yy�8�.�$��1��=���CKk`LfV�yډ]����fC��rMf����y����ӅN_�T��W��)7�����x-Db4q�O�^�М��gX >�_��#��6ӦX� �,�"U<����/���(( ���5��B}�;=��Ψ�7�Y��k�u�n%=��wfV��4��ް�H���=0�r������~A_��?7�e�endstream endobj 2278 0 obj << /Type /Page /Contents 2279 0 R /Resources 2277 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2186 0 R +/Parent 2200 0 R >> endobj 2280 0 obj << /D [2278 0 R /XYZ 71.731 729.265 null] >> endobj 2281 0 obj << -/D [2278 0 R /XYZ 71.731 718.306 null] +/D [2278 0 R /XYZ 71.731 691.706 null] >> endobj 2282 0 obj << -/D [2278 0 R /XYZ 71.731 633.425 null] +/D [2278 0 R /XYZ 155.056 665.803 null] >> endobj 2283 0 obj << -/D [2278 0 R /XYZ 155.056 607.522 null] +/D [2278 0 R /XYZ 89.664 652.852 null] >> endobj 2284 0 obj << -/D [2278 0 R /XYZ 89.664 594.57 null] +/D [2278 0 R /XYZ 71.731 650.695 null] >> endobj 2285 0 obj << -/D [2278 0 R /XYZ 71.731 592.414 null] +/D [2278 0 R /XYZ 71.731 635.751 null] >> endobj 2286 0 obj << -/D [2278 0 R /XYZ 71.731 577.47 null] +/D [2278 0 R /XYZ 130.903 614.595 null] >> endobj 2287 0 obj << -/D [2278 0 R /XYZ 130.903 556.314 null] +/D [2278 0 R /XYZ 74.222 573.35 null] >> endobj 2288 0 obj << -/D [2278 0 R /XYZ 74.222 515.069 null] +/D [2278 0 R /XYZ 92.274 550.436 null] >> endobj 2289 0 obj << -/D [2278 0 R /XYZ 92.274 492.154 null] +/D [2278 0 R /XYZ 188.676 537.484 null] >> endobj 2290 0 obj << -/D [2278 0 R /XYZ 188.676 479.203 null] +/D [2278 0 R /XYZ 248.13 537.484 null] >> endobj 2291 0 obj << -/D [2278 0 R /XYZ 248.13 479.203 null] +/D [2278 0 R /XYZ 448.319 537.484 null] >> endobj 2292 0 obj << -/D [2278 0 R /XYZ 448.319 479.203 null] +/D [2278 0 R /XYZ 134.236 524.533 null] >> endobj 2293 0 obj << -/D [2278 0 R /XYZ 134.236 466.252 null] +/D [2278 0 R /XYZ 241.553 524.533 null] >> endobj 2294 0 obj << -/D [2278 0 R /XYZ 241.553 466.252 null] +/D [2278 0 R /XYZ 71.731 523.093 null] >> endobj 2295 0 obj << -/D [2278 0 R /XYZ 71.731 464.812 null] +/D [2278 0 R /XYZ 280.437 493.649 null] >> endobj 2296 0 obj << -/D [2278 0 R /XYZ 280.437 435.367 null] +/D [2278 0 R /XYZ 400.465 493.649 null] >> endobj 2297 0 obj << -/D [2278 0 R /XYZ 400.465 435.367 null] +/D [2278 0 R /XYZ 71.731 473.559 null] >> endobj 2298 0 obj << -/D [2278 0 R /XYZ 71.731 415.278 null] +/D [2278 0 R /XYZ 71.731 447.422 null] >> endobj -2299 0 obj << -/D [2278 0 R /XYZ 71.731 389.141 null] +1263 0 obj << +/D [2278 0 R /XYZ 71.731 404.419 null] >> endobj -1264 0 obj << -/D [2278 0 R /XYZ 71.731 346.137 null] +170 0 obj << +/D [2278 0 R /XYZ 337.12 371.108 null] >> endobj -174 0 obj << -/D [2278 0 R /XYZ 337.12 312.827 null] +2299 0 obj << +/D [2278 0 R /XYZ 71.731 364.981 null] >> endobj 2300 0 obj << -/D [2278 0 R /XYZ 71.731 306.7 null] +/D [2278 0 R /XYZ 353.774 352.179 null] >> endobj 2301 0 obj << -/D [2278 0 R /XYZ 353.774 293.898 null] +/D [2278 0 R /XYZ 483.407 352.179 null] >> endobj 2302 0 obj << -/D [2278 0 R /XYZ 483.407 293.898 null] +/D [2278 0 R /XYZ 285.361 326.276 null] >> endobj 2303 0 obj << -/D [2278 0 R /XYZ 285.361 267.995 null] +/D [2278 0 R /XYZ 119.533 313.325 null] >> endobj 2304 0 obj << -/D [2278 0 R /XYZ 119.533 255.044 null] +/D [2278 0 R /XYZ 437.069 313.325 null] >> endobj 2305 0 obj << -/D [2278 0 R /XYZ 437.069 255.044 null] +/D [2278 0 R /XYZ 117.159 300.374 null] >> endobj 2306 0 obj << -/D [2278 0 R /XYZ 117.159 242.092 null] +/D [2278 0 R /XYZ 419.102 300.374 null] >> endobj 2307 0 obj << -/D [2278 0 R /XYZ 419.102 242.092 null] +/D [2278 0 R /XYZ 355.405 287.422 null] >> endobj 2308 0 obj << -/D [2278 0 R /XYZ 355.405 229.141 null] +/D [2278 0 R /XYZ 71.731 280.658 null] >> endobj 2309 0 obj << -/D [2278 0 R /XYZ 71.731 222.376 null] +/D [2278 0 R /XYZ 115.56 256.538 null] >> endobj 2310 0 obj << -/D [2278 0 R /XYZ 115.56 198.257 null] +/D [2278 0 R /XYZ 153.506 243.587 null] >> endobj 2311 0 obj << -/D [2278 0 R /XYZ 153.506 185.305 null] +/D [2278 0 R /XYZ 343.016 243.587 null] >> endobj 2312 0 obj << -/D [2278 0 R /XYZ 343.016 185.305 null] +/D [2278 0 R /XYZ 71.731 230.635 null] >> endobj 2313 0 obj << -/D [2278 0 R /XYZ 71.731 172.354 null] +/D [2278 0 R /XYZ 163.765 204.732 null] >> endobj 2314 0 obj << -/D [2278 0 R /XYZ 163.765 146.451 null] +/D [2278 0 R /XYZ 71.731 197.594 null] >> endobj 2315 0 obj << -/D [2278 0 R /XYZ 71.731 139.313 null] +/D [2278 0 R /XYZ 71.731 148.777 null] +>> endobj +2316 0 obj << +/D [2278 0 R /XYZ 71.731 117.659 null] >> endobj 2277 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F54 2195 0 R >> +/Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F53 2191 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2318 0 obj << -/Length 2378 +2319 0 obj << +/Length 2444 /Filter /FlateDecode >> stream -xڅY���6��S��@Ĉ��R���i�E�)��b��L��/�^����;�ʲ�8��x��s�F��~r��b�CBe�<��{���d��I� �O��~��E!�,^�w�D�X-V�y�������ԛv�4 -������u]W͞�? ��Uu���Y��Ż�(4�W���zy��b���2T̟/�E�$N�wC]/�,����4�-�������|�q2]���������0��8}�}�-}��a_��V�E�0ND��N�_�2 ,[���>�j�^�^TRd�p/������T��������jtO��"Q��*]�I,T�rb�a{��x�T�H�TD��PE�-���R�����+r���Q/�(8��A/U������-o�0�͖wz���]x쐟�'p��V?E��MG���{V�W��X���v�;Jſ�[/%����woY�`�'����5�&���Bg%\NJVz��<��2��h��<��Da�4;�[o�6�\�̜Ǔm[s��%d���& P�U�ԚzO�a ^�kd\��4����tվ1���i�`i�fhh����E��՛����-*!��U"����D��%�VY<W�g��b)Ѳn��Yƚ��(����q�y%�fK�&�}EK��&�Gw��3dF�������P3�-�#�����Jf���̦�����ٝ�&r�D�Rv��s�m�A�4�V�){۞izj-�}_�-���h��#gx�-/�^sgD�ruF\�30���:o��}���K�kG}&*p0x'��_;7���'�k}p���3�=97��ΧT��7بj�;�"�ѤY���jJsS�B���[�5?,%�#m�AV��Y��W��xH�cPL�o��ݪ�Ҁ��Q�G8E��gn�u�� ��?0��~rǴCk<[�|�`'��� -t�z��L$cR�m���6�j?���$!N:�0p��mo�L�ս�s��*s/w��Nі�%Ld"�4c�!ҙ�����te[m�r����e��ER"S�]��i� ��S�o�JA��6$;������,)��4��2B�b,�`�8�(�&�(d� -�$*�D*���]�"!��-%8^2�E|$�%���%#���W p���OP��-K���ǀ3�\*v�Cߟ^�z�#zW�aM�a]6�gӾy5�[f��=���Qf�Ѵ3�e�驜��i$�X]yݮ�> a:�藣�(��nL^c�[/�,h����<Xۏp�#�y9�B��@*�8��/LN���r�����4����[�1愈��4e�2������r!zB��7��z������8�����&��'N\vUXK�b���jG�3�Rt�q�ե`ػx=mb��uM�n���a*ҹl�����qc몤Eh��hNv�&���&���k)zs1��zԬtN���2� -X����a�ucc��'�x�-�8Y���Ǫ���i{�,���H�5X�dFqP뮿S� >e�kGy0�Sg��`wv�UpSz`=4�8��F}v����J�Xto�v�!' �t�$�ꣁ�5E� -BQ�y�n[���':��&g��OQQ�� y����0���IԒ�&�`|}�UhyI��#�� �J ���,=˃n(��Ͽ@���[�C���i��Gz��T��{�����E��R����4�h^�o��"�W�!s�\>�i -�e���Fb���/��0����������)�� - ���/�K�r*?A� '�m�`B�Q���ݙ9�X�4�|�P`�����k�Rn5M�J6�T$���a�S")�f��O�q�g懄�0BI{�^b����"�6�*�vO�w�3����p� cŌ��!������!p����co�#�A_�p�'L ��s�a���9Z*�HF�|���X��U�40��I��� ^�ѵ0��g� Ш�l[Q��u�;-n��;�k=q�:8պ����є�v��0N�sכ��)��`;Ry�e2�k�9x��in���= �W�Q�K��M�2�ڎ�����S_k��ܩ]�HG����w�|U1�䨋8)s�ӳ�����6�����0]]�o�� �"^1/�������V�� 3�� �~���f�/�6�/����3Ҿ��;����~{^��`L�g����ӄ�Yz�e4k攈g_���We3�C�7ln�8�2u,IV����Ü�����tc�����P�d���۸��av/�ϛ��~���?P4��i����ǙnjY߱��a�S��~�I�KQKgL�7����2�$���*C.W�����IU."噠ud���5������endstream +xڅۮ۸�=_al�X����E��n6M�h���P4}�e��,�������p��,�������p��\��L�,�AB�ɪ<�WG�y�B2ƆQ6���/^�E�Bi��V��E���H�<Q�����/'}�M�ި$���}������H��������l����vd�D�(��Y�<�R�dҤ) +���"�c'X�����ikwU��|5�M��f���WB�yi�qK�?v?�c�ҿ�ME7�4���&���r���7� 1U"�8�!���"ޔ}�e���|�uϋ)'Ip��(��s�k���5z��%����NC�iz���ҳ-Q��V?���MG���{�W��\��{��(�{�]K�����u��u���vc�zXm��)E��N�@#˃ήc��&����/2�9١��3��|r 2uvA�m�ٮe�Z�/o�)� +�����Ok�V^#��pSLtkhlO��tձ1,��I�F�4H344�Ri&�C<�e�]g�H��lm���62�E�`o���4���J��r6�`k��u��8�R�Ƈ�"�G����}g��T�ޠ +���X��x�Ŏ����`��ҹ�gox2=�L|o���(h����Y��>������>2;{p���(8����Ŷ��k��֔�m�4�����L���G������)F�煹�3wF�a.wg�>S�^� �Y���c՝^8�������d��X��O�-'�3��q�n����ً3c�,�N�E��ʡּsS)�U�&�_�O��4���Q1ܾ5]��Z�=���1D%8ѕe?x�Y���h)���,��Ь�=$.B�Y���̲�����xb:g��<�q��x����N���?M:*OE<�ږ�.ms��K�M!aB��w�.�F�UΨ{��%5�2�|'��m�^6��E��wfә�����te[��r�̳�LSȪ�*I����,�q6$���r� �H�@��6�;��s� +��4.�e�q�e?'��Ř�A]Q�R��SQ�����8�����˛V���J��%^2�Et�$�-���-"���W@p������)K���ŀ1��ĩ�/�_��Z�Ɨ5��i������r�4�'�!n�f�v���4=���( E�� }h�B�}���y�� 8O7�1�m�Q�vW���Ǣ�#�y���B��8�E���0�f����!�.�쫯��#pެ����q��='to���� �BF��H�S��U��?#%���;��v������'.�*̊�m1��ru��u)���Յ`ػY=mb��uMC7�|�e*�l�����yg몤Eh1#;��&�tZm�x-y/�\\\V�/Ԭ/�| G&8�w���ŕ�7�5��j��-�n$#��0��W��V/\��s�T��4��=]�v@�JD�LU�dBQP�"g�����dʇ��������M��Dه5b����Ť;;�Eo8H(藒�.5��l��t G��P|E��W=-}DC���\%�9LB�Q0!�@�j��+��7i[���dƏѶY���4#<V20�P �v����<�bL���WP�S)����ezƤ��#��Ҕ���vy+U��z��Ʉ�8� �2a��v<��!r�\>���<�|N���ؒ��I_�%���j�+��g r�59R�&�>��<�\�T�IͶ�eB��w�3K:�I�����(+�Qb״%�jJ�Δ�m��傩�|�X�^��ڇ�\4Ě�!!2���}R_"�}�h��6�*j{$㻧�@��<s~������~K�|r�Ca���\����:��gx���!���T� +\@w_VK�������@��Ӱ���f�P8�z"�����>��f��L��4j+�Vԥr��N�Y�N��B����:�Ժ����є��;_M5N�kכ� @���^��H�v-���y<�f� �� t�P#����� ��aܵ�w����/C_k �<��"��U��Rܱ�]Tť&{]�A����M�HX��@'yO�a��� �FE�b^8�����S��$��s �No�����8�نK�[�u8��o���c�l}��� 1�!E4��O�g��� -��Т�S"Z��B�g��f�gY�����L(��,�3(��)�Ü�����tc���f�~U�d���x����^<g.<o���� >P4zf4|���q��j�w�w�G�|;�$�R���i��6���Y��ejT�����k���}�Nn�S��Oؒ�������]��hv�!S��^�Ѵ�����?�u��H @��4�=\e�WeGژ��y�ա�.^�`vt'��f7#H%���?T���U�dL�%6�����j0s/�?3 5�ߨ��57��_5���'�\e�_���DZ�<endstream endobj -2317 0 obj << +2318 0 obj << /Type /Page -/Contents 2318 0 R -/Resources 2316 0 R +/Contents 2319 0 R +/Resources 2317 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2186 0 R -/Annots [ 2332 0 R 2335 0 R 2340 0 R 2349 0 R ] +/Parent 2200 0 R +/Annots [ 2331 0 R 2334 0 R 2339 0 R 2348 0 R ] >> endobj -2332 0 obj << +2331 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.345 499.527 218.649 506.381] +/Rect [166.345 555.716 218.649 562.57] /Subtype /Link /A << /S /GoTo /D (security-webserver-access) >> >> endobj -2335 0 obj << +2334 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.365 410.077 339.793 418.989] +/Rect [291.365 466.267 339.793 475.178] /Subtype /Link /A << /S /GoTo /D (troubleshooting) >> >> endobj -2340 0 obj << +2339 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.362 305.071 239.281 314.092] +/Rect [194.362 361.26 239.281 370.281] /Subtype /Link /A << /S /GoTo /D (parameters) >> >> endobj -2349 0 obj << +2348 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [474.039 230.351 518.87 239.263] +/Rect [474.039 286.541 518.87 295.452] /Subtype /Link /A << /S /GoTo /D (extraconfig) >> >> endobj -2319 0 obj << -/D [2317 0 R /XYZ 71.731 729.265 null] ->> endobj 2320 0 obj << -/D [2317 0 R /XYZ 71.731 741.22 null] +/D [2318 0 R /XYZ 71.731 729.265 null] >> endobj 2321 0 obj << -/D [2317 0 R /XYZ 71.731 718.306 null] +/D [2318 0 R /XYZ 71.731 741.22 null] >> endobj 2322 0 obj << -/D [2317 0 R /XYZ 71.731 686.725 null] +/D [2318 0 R /XYZ 71.731 718.306 null] >> endobj 2323 0 obj << -/D [2317 0 R /XYZ 71.731 661.654 null] +/D [2318 0 R /XYZ 71.731 696.687 null] >> endobj 2324 0 obj << -/D [2317 0 R /XYZ 71.731 640.498 null] +/D [2318 0 R /XYZ 71.731 676.762 null] >> endobj 2325 0 obj << -/D [2317 0 R /XYZ 71.731 620.573 null] +/D [2318 0 R /XYZ 458.479 665.106 null] >> endobj 2326 0 obj << -/D [2317 0 R /XYZ 458.479 608.917 null] +/D [2318 0 R /XYZ 207.921 653.45 null] >> endobj 2327 0 obj << -/D [2317 0 R /XYZ 207.921 597.26 null] +/D [2318 0 R /XYZ 71.731 625.554 null] >> endobj 2328 0 obj << -/D [2317 0 R /XYZ 71.731 569.365 null] +/D [2318 0 R /XYZ 71.731 579.562 null] >> endobj 2329 0 obj << -/D [2317 0 R /XYZ 71.731 523.372 null] +/D [2318 0 R /XYZ 358.177 568.767 null] >> endobj 2330 0 obj << -/D [2317 0 R /XYZ 358.177 512.578 null] +/D [2318 0 R /XYZ 461.001 568.767 null] >> endobj -2331 0 obj << -/D [2317 0 R /XYZ 461.001 512.578 null] +1264 0 obj << +/D [2318 0 R /XYZ 71.731 540.772 null] >> endobj -1265 0 obj << -/D [2317 0 R /XYZ 71.731 484.583 null] +174 0 obj << +/D [2318 0 R /XYZ 166.615 501.499 null] >> endobj -178 0 obj << -/D [2317 0 R /XYZ 166.615 445.31 null] +2332 0 obj << +/D [2318 0 R /XYZ 71.731 491.134 null] >> endobj 2333 0 obj << -/D [2317 0 R /XYZ 71.731 434.945 null] +/D [2318 0 R /XYZ 258.543 481.375 null] >> endobj -2334 0 obj << -/D [2317 0 R /XYZ 258.543 425.186 null] +2335 0 obj << +/D [2318 0 R /XYZ 71.731 466.267 null] >> endobj 2336 0 obj << -/D [2317 0 R /XYZ 71.731 410.077 null] +/D [2318 0 R /XYZ 71.731 451.323 null] >> endobj 2337 0 obj << -/D [2317 0 R /XYZ 71.731 395.133 null] +/D [2318 0 R /XYZ 71.731 402.271 null] >> endobj 2338 0 obj << -/D [2317 0 R /XYZ 71.731 346.082 null] +/D [2318 0 R /XYZ 321.927 389.32 null] >> endobj -2339 0 obj << -/D [2317 0 R /XYZ 321.927 333.131 null] +2340 0 obj << +/D [2318 0 R /XYZ 349.018 363.417 null] >> endobj 2341 0 obj << -/D [2317 0 R /XYZ 349.018 307.228 null] +/D [2318 0 R /XYZ 415.603 363.417 null] >> endobj 2342 0 obj << -/D [2317 0 R /XYZ 415.603 307.228 null] +/D [2318 0 R /XYZ 91.925 350.466 null] >> endobj 2343 0 obj << -/D [2317 0 R /XYZ 91.925 294.276 null] +/D [2318 0 R /XYZ 151.7 350.466 null] >> endobj 2344 0 obj << -/D [2317 0 R /XYZ 151.7 294.276 null] +/D [2318 0 R /XYZ 71.731 343.462 null] >> endobj 2345 0 obj << -/D [2317 0 R /XYZ 71.731 287.273 null] +/D [2318 0 R /XYZ 264.224 332.533 null] >> endobj 2346 0 obj << -/D [2317 0 R /XYZ 264.224 276.344 null] +/D [2318 0 R /XYZ 95.243 306.63 null] >> endobj 2347 0 obj << -/D [2317 0 R /XYZ 95.243 250.441 null] +/D [2318 0 R /XYZ 71.731 299.492 null] >> endobj -2348 0 obj << -/D [2317 0 R /XYZ 71.731 243.303 null] +1265 0 obj << +/D [2318 0 R /XYZ 71.731 271.597 null] +>> endobj +178 0 obj << +/D [2318 0 R /XYZ 381.468 228.499 null] +>> endobj +2349 0 obj << +/D [2318 0 R /XYZ 71.731 216.061 null] >> endobj 1266 0 obj << -/D [2317 0 R /XYZ 71.731 215.407 null] +/D [2318 0 R /XYZ 71.731 204.783 null] >> endobj 182 0 obj << -/D [2317 0 R /XYZ 381.468 172.31 null] +/D [2318 0 R /XYZ 193.715 167.568 null] >> endobj 2350 0 obj << -/D [2317 0 R /XYZ 71.731 159.872 null] +/D [2318 0 R /XYZ 71.731 157.203 null] >> endobj -1267 0 obj << -/D [2317 0 R /XYZ 71.731 148.594 null] +2351 0 obj << +/D [2318 0 R /XYZ 71.731 135.324 null] >> endobj -2316 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F48 1937 0 R /F32 1139 0 R >> -/ProcSet [ /PDF /Text ] +2352 0 obj << +/D [2318 0 R /XYZ 71.731 135.324 null] >> endobj 2353 0 obj << -/Length 2038 +/D [2318 0 R /XYZ 101.32 125.824 null] +>> endobj +2317 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R /F48 1934 0 R /F27 1132 0 R /F32 1139 0 R /F57 2355 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2358 0 obj << +/Length 2258 /Filter /FlateDecode >> stream -xڍk�۸�{~���\�����Z��r�EQ$��C{8�m +��$�q~}g8#Y�כ���!9������"�" `�3���"o�x��#�ew������OA��D��v�Td�" |�F�b]���[����V�y�/h���U�U�����ת�����?[OL� Y�*s#�,d(�0F�F�D�����"JR����ڗ=���f���=!���yKr�́�R�|������i�"uAӡ��V�_I�W݉V�������v/i�%�v� ��ak�����p�9[�]�����v��R9���Qc)b�Y�7�/�@8Q8Yl� -&��p'�L;��ʍ=�q��]Fw}_d2���e�2g�ӗ�Po:R �ÞF��� N��y~��)K�r���Q�Zx*��:�b�v����W�s��wp04v�vf-�D�"J���tK/���)�@�`H�.TU3o5�ᑅ���1�$X,��U�)���h�]9�����}9ţ��/ yA��h>w� !'nQu���N!��h��Tӻ���Y��&64)ԩ��G{��caJHg�'kN� ��M���D?Wz�GΑ��a7y���i�R�ޛn�G�;m�u�Pj�ޡ.�J����@��x��)�h���dc��gN�@��y�Z�a�֫��p�i5h��I���L�P�� "���_6@ݠ'K¶���GR-/aH����ך�;G�l����i8�)a � ����HQ�<��p|�6�_(S�F�{�m�R�r;��Ȩ���98�q}�1 �]P�RK�_f�l�0��H�r��OU[XwmP%Na,��f `�~��?u�X���M1<�N5L��{�9��* [����y����9L�XVyI�� -�mW���W�a�^5̤8�hTc�Y�;M勭07��4ݴ�� A�"]��� -! O�jLݏ6o���� S9Pq��4V J��u%�O��VK���ۖ/�1��aؿ}|<��jm� 4<<bv�)2���+��Aw�� 4!��`��`����-t�c�b �5B���l8�PX/u��>/!���h�����`m!��rqfYƈ�i�?�Y3�MN����� ��`g�+�aVba�l'� � �N�У��/�=1G����8�Q�� -�'97Td�c�0�R�/*��IiX.�PF���'�r�DgF��ٜƃ�wy�`�E/�(+$��f�� K�2�mY���WL����V�����*��������$�'��J�����:��3j�g!vE�Sl�y�����%^��ě�������q�[&x�@��{O��;��j( ��.�rD���`2�N)�1"�y���g{��`�W_Gn��;��ꫀJgw���N+����4_s�(e�9�)&o�ۨ6ѧ{�c�'���=��u/�PE���[^�v�+��Ȏ������Xa���_xf����{���S��=eK-��U�FY:�m\7�F5��3'�O��d��n�V��0����3�]�0 -'��[^�v�+������U�|Uz��WT=7��Ƽ�Y���H��/�A$�8��vY�h�C�0��Vfu�Id���;ͻT�'<��6Rp�6�g��M��Ǖ���$� t|��h����AG�p��j�@���/I/��J�뎮�o�� -{�� ŭ]���Y����BA��z�0y�ؘ���(���J�t["�D�h�;���B��<�`�B�������zt�����{�GG���LU�-q�6�0BG���A����Y�iM��aSc���Jx|����ʅ��8;�L`;J1��oz�=�|8\/��Y��`{������F�1~{����a�I X�w!r��d��upa�D)�.1*��R�L�jKg���4��~��}�纷 �|� x�����8~9��(�?�~�ُ0K�=�h�7��uB�H�y�.u����Tq���J�{cP�������&�ܚ�* !n�-�������g��ϟ����D�6T�o�����Grendstream -endobj -2352 0 obj << +xڅ]o��}��F.bFԧ}-z�����m��6mQ�m �DC�����7�ɲ'��|�pH9��O�R)��`%�$�e���/?H�X0�b������_�p��$����H.�*��a �q0[����R����|ľi:���lv4���}/�J���������4S�Z�o�5�\ �'������ �.���R�+L_�oZ +�~O�-4Yk�64���(����-�輴��DZ'h�1g�D�Q� �ʗ��==���ƶo�B`�x�NT �q�1P��T��,��vb_���P$q�ع*+�,�1n�-�`)t�Ċ]���#�2o�]a��ǟ-)�r{��"�}ϧ�� YN��|�M旞�E^���i�&�?� �U���%���$�=�� Mru�*�<�s;���^u�� ��һÝUEKFS��!�D��z�ށ�n�q�kվ`���Լ�` +�����p��]$�xH^x.4FN���z9�+L�$��)�@[��ν�ʫ(r$8+T�<�z�$����ZYMp3*�w�Tse�� +r!�[ �e � q�$|6.�xA��%i����Z3 ���03u ۻi����>����Y�mTW��!�1*)N��e�N����%�s�0J�u�:��E�w5�E�S4�'2� by*���d�f@EQ�Xr���ɝ;.�R/7��c �?��_zwX����3Ű�/�Iu�vsD�U>��ֿd��� +r���2+�;���<�Pt����c�ة���-AI5���T�� +S���{Ug�i��^���ȫ�T݀���L5l�JO����X�(���5�t�F�'�띖ȟ�7 �c��xx8�j} h�?`v�12d�����ijE���G�A��{��ɰx��p&�uA�����p�Da��wЮ��)��>F@����k�����1F�V���g���N����U�ip����0)���lG� ��VWʖ��rO��{��z}��~Tً¬� 0�P���c77�Nз�o*�x��0,N�#DgN���a9�~�5i�m��F�{w�`�E��VVH�<�"�A�:e ڰ g���F 0�Tk鴶���/TAU��;��ҕH}9��@��&�b�sݍ��A��S^˕H��5^��ț�������q�[�x�@�sON�;����\�C9�M5f0C���������>b4����>p;���.俖�TBػs���P��h��ؘJF)̋�oW#�x˽�Q�����M�2 +U�[����{��}Avp/��_��� +[?��3S6v��=���0�`A���B�Ӿ��th۸n���.N�4�yr�����S��cd(b?z�1'���a4Nx�1�w��/�N��T�rQz.͗�7����d:kp#u��/Ý0����t���byZu�7X��ʬ�8���qq��+U�*��\��=%� M�W.<������҈��AGr��x�8yn�n&��[�[:Z<!]��s4�)n}�Ծ#�� �Ht� +b�Уعɺ�����?ً��W*���G�F���a $z�䁰���S3���Z�n�5��_�4w��N��DU:-q�5�0BG���A����[�~M�}���K��$<\��A�b�r��.��� l)F��I���g�O�7���2����y� �{X[���,������%!5`����/@�eF���Hs�Qa�K���-m�t~���h��U���5h��!:�J4����3&��w���OR@�����=�ܡ�G3ܙ�&Ũ��x&������S�udX����Ơ�;4&o«�n1L�1�yyB���"���ؼ�ܼ����3�6����.sM�^���;cr������5�7U���tM��M�t=�(?���l���=A���h��f�����:W�X ����gzCĜ���|n��Ѷ��d��l莝���)�:>U�>�^7���-�{����⫇"P�l�{x�@x�OO��A0��������4�+�x����C<��ڝ�0���P8}�L��j��Us����#�*秣d��%���*��|���M����� �b�����5��ül.X�E �ݸ"2�NwJ�=0�6�ǥ�mkڛ�n���6B?; +�~�z�����yT��8V�U��/��R,e���� ���<R�6Rq���c�5�����"endstream +endobj +2357 0 obj << /Type /Page -/Contents 2353 0 R -/Resources 2351 0 R +/Contents 2358 0 R +/Resources 2356 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2186 0 R ->> endobj -2354 0 obj << -/D [2352 0 R /XYZ 71.731 729.265 null] ->> endobj -186 0 obj << -/D [2352 0 R /XYZ 193.715 707.841 null] ->> endobj -2355 0 obj << -/D [2352 0 R /XYZ 71.731 697.476 null] ->> endobj -2356 0 obj << -/D [2352 0 R /XYZ 101.32 666.097 null] +/Parent 2200 0 R >> endobj 2359 0 obj << -/D [2352 0 R /XYZ 71.731 655.955 null] +/D [2357 0 R /XYZ 71.731 729.265 null] >> endobj 2360 0 obj << -/D [2352 0 R /XYZ 416.305 643.183 null] +/D [2357 0 R /XYZ 71.731 718.306 null] >> endobj 2361 0 obj << -/D [2352 0 R /XYZ 71.731 618.112 null] +/D [2357 0 R /XYZ 416.305 708.344 null] >> endobj 2362 0 obj << -/D [2352 0 R /XYZ 71.731 597.243 null] +/D [2357 0 R /XYZ 71.731 662.403 null] >> endobj 2363 0 obj << -/D [2352 0 R /XYZ 71.731 578.561 null] +/D [2357 0 R /XYZ 71.731 643.721 null] >> endobj 2364 0 obj << -/D [2352 0 R /XYZ 71.731 544.752 null] +/D [2357 0 R /XYZ 71.731 609.913 null] >> endobj 2365 0 obj << -/D [2352 0 R /XYZ 114.77 533.196 null] +/D [2357 0 R /XYZ 114.77 598.356 null] >> endobj 2366 0 obj << -/D [2352 0 R /XYZ 114.77 521.539 null] +/D [2357 0 R /XYZ 114.77 586.7 null] >> endobj 2367 0 obj << -/D [2352 0 R /XYZ 114.77 509.883 null] +/D [2357 0 R /XYZ 114.77 575.044 null] >> endobj 2368 0 obj << -/D [2352 0 R /XYZ 114.77 498.227 null] +/D [2357 0 R /XYZ 114.77 563.387 null] >> endobj 2369 0 obj << -/D [2352 0 R /XYZ 71.731 486.571 null] +/D [2357 0 R /XYZ 71.731 551.731 null] >> endobj 2370 0 obj << -/D [2352 0 R /XYZ 71.731 466.645 null] +/D [2357 0 R /XYZ 71.731 531.806 null] >> endobj 2371 0 obj << -/D [2352 0 R /XYZ 369.099 443.333 null] +/D [2357 0 R /XYZ 369.099 508.493 null] >> endobj -1268 0 obj << -/D [2352 0 R /XYZ 71.731 415.437 null] +1267 0 obj << +/D [2357 0 R /XYZ 71.731 480.598 null] >> endobj -190 0 obj << -/D [2352 0 R /XYZ 246.48 376.065 null] +186 0 obj << +/D [2357 0 R /XYZ 246.48 441.225 null] >> endobj 2372 0 obj << -/D [2352 0 R /XYZ 71.731 365.922 null] +/D [2357 0 R /XYZ 71.731 431.083 null] >> endobj 2373 0 obj << -/D [2352 0 R /XYZ 71.731 324.957 null] +/D [2357 0 R /XYZ 71.731 390.117 null] >> endobj 2374 0 obj << -/D [2352 0 R /XYZ 71.731 324.957 null] +/D [2357 0 R /XYZ 71.731 390.117 null] >> endobj 2375 0 obj << -/D [2352 0 R /XYZ 71.731 319.975 null] +/D [2357 0 R /XYZ 71.731 385.136 null] >> endobj 2376 0 obj << -/D [2352 0 R /XYZ 89.664 297.161 null] +/D [2357 0 R /XYZ 89.664 362.321 null] >> endobj 2377 0 obj << -/D [2352 0 R /XYZ 290.096 297.161 null] +/D [2357 0 R /XYZ 290.096 362.321 null] >> endobj 2378 0 obj << -/D [2352 0 R /XYZ 71.731 282.053 null] +/D [2357 0 R /XYZ 71.731 347.213 null] >> endobj 2379 0 obj << -/D [2352 0 R /XYZ 89.664 266.277 null] +/D [2357 0 R /XYZ 89.664 331.437 null] >> endobj 2380 0 obj << -/D [2352 0 R /XYZ 71.731 264.12 null] +/D [2357 0 R /XYZ 71.731 329.28 null] >> endobj 2381 0 obj << -/D [2352 0 R /XYZ 89.664 248.344 null] +/D [2357 0 R /XYZ 89.664 313.504 null] >> endobj 2382 0 obj << -/D [2352 0 R /XYZ 71.731 225.43 null] +/D [2357 0 R /XYZ 71.731 290.59 null] >> endobj 2383 0 obj << -/D [2352 0 R /XYZ 255.817 212.478 null] +/D [2357 0 R /XYZ 255.817 277.639 null] >> endobj 2384 0 obj << -/D [2352 0 R /XYZ 511.98 212.478 null] +/D [2357 0 R /XYZ 511.98 277.639 null] >> endobj 2385 0 obj << -/D [2352 0 R /XYZ 482.926 173.624 null] +/D [2357 0 R /XYZ 482.926 238.785 null] >> endobj -1269 0 obj << -/D [2352 0 R /XYZ 71.731 153.654 null] +1268 0 obj << +/D [2357 0 R /XYZ 71.731 218.814 null] >> endobj -2351 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F57 2358 0 R /F44 1925 0 R >> +190 0 obj << +/D [2357 0 R /XYZ 234.86 181.479 null] +>> endobj +2386 0 obj << +/D [2357 0 R /XYZ 71.731 171.114 null] +>> endobj +2387 0 obj << +/D [2357 0 R /XYZ 71.731 141.265 null] +>> endobj +2356 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F57 2355 0 R /F23 1125 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2388 0 obj << -/Length 2144 +2390 0 obj << +/Length 2266 /Filter /FlateDecode >> stream -x��Ɏ#��>_!�2%Cb�T�� A�n�a2�qT%]�P�5���m,�[�n_r��@���6������g�VYC�VQ�̊�]8����i�X -����û���x�V�4�=lg+��u6��H�I4{(�|�7��v�e��A�x���SU����ø���*3������?LL�8S�<~U.�s%X��Jū%� -���W�$�T @�{���kX,�|�ͣ0h�egE��2 -����yo����mK�Lg� �q���my��N���9��Q�VȘ�i�:N �_y�a��(�mu`�6��g'�����f/{N툀����V�B���"����M�+x�fb'�CGj��Y�S?�����X���2��F��`I�v=����3XY��� �d���:q���������3���t��O���8���};�LC��n�K4��t?gG�Y�yP�)�X˶hs�є%�%`�VU;�����`��4��FW Ţk��lxb��;��$X��5�X��h7��� ���X�$ڴ�.ֿ>�m�� x���a�K����w#��ox��%I��K2����>�J��DH��2 � ���[CQ��g��n���;��t�-��;��Q�ă�l�{�ա�Џ�RhH��X�$����7��Z�1�DE:�)G��$�I�Ţ82��`/n����{<�������&R�K�%&2H >����.��+p����/$\���>��ZxLű�X9D��0�ێ�f)VXj8�$%[pn�k*JO��ry0�jqw�ն�z�@����$�`{�\����(=�[ �!�������$`l���a�������x����Y�l��xZM�q�1K�i�(���J=�-/V�m��y�nq\��#�F* -�ޝ��M�h�_�0ڍhb��t7ǎbr7V�ä�;��#�TKB�#���[�9�k�����Q�X� �H���{}��2 -�' �7�ȩ9;׀R��`�����qP�n�����kd��!�Jv��#ǠY?V��s͊�_��XO}^�?>b�d.�|�J���i��<tm}#���g��Y� aijOb��K��۠�p��mT'��Vi��K��Fy���Q���J�3�Q����S��+�y��U�:w�y��3B�}�|���v��D�x$��G��{�U��'�U�B�{ٌY�gZ25^Ĕd>���R��͟���"�o-��Uka�̰;I���X������N'�4�� ,A�s��~��NC��i���wH�zw�C�|ɇb<(�_��b\��v;��rI6pC�QE��5��0\c���=��W��˕g �25�ǃ-�VhUm�#����(a��(|��&�����@[p��M 5Z�����C�ॾ%H�)�����0������R2L�g���`� ��d �%��q -+��J�-��كm$��^s&B���F�V�0�s��t�,�lȮ͒������|w���tn���}0�.t ة�]�Z����������?�1�P`Ȉ��8�ߣ��z���x�6�Q���9*G�_X��)�B�$�X����"�F���i�z(t'�PaW -�J�e�f��kͩ���wGy �Qљ�zѼ��J����[�՚T��hQ�Vp���*~�M����k�����ˍ#�M��C�m\��N'O#��@�6�t�Y�ɈO�VN����x5]1�H��=Ɲ���m�؆vWma�p�z{�� ?~��@��F-���=��k��"���O�;� |Mݫbw���ln���'��⥛c|<w�)i��~@u����KG�kFI�,��;:[)HTo9O�~�{Rr�Z�����f�<�{r�'ǠN�6�$Rz�$����FU�R�{���8�ɲe��t�t�|Ù��f W��iw�o��� Nd���[<�-�r6��^�c�|����kk^��Z�H(գj�pWۻ=�{T������8&R�k�]�?p�|�ﮙ�00=�R�»�~q#��c2>�ƿ�^�;<{��8�;rs~��>�U��X��{* �u7�K���Y~��My�~#�`y���3��/ $�4�� #�����5��i5�'endstream +x��Yێ�}��0�e�M��u�&0��.&���� �Z�mbt�$����ԍ��vw� 4�b��*��Pֳ��,�*���6*J�YQ�g{������,�x>>�[�dz�ڤ��i7[�\m�YG*O��S���Ӎ��/�$"���fMU�f����]U������oOӦI��M�z.�s�d�IS<��/�U�^���d�L�0���QS��������8_�O�,]o����a�?q�V��k�{TW�F���r ֊��2�*��F�lG�s��&�(Q��@K���5e;�Ip�fYP��#���s0�(~�GI`��m�/xz��Ǒg�8�^Z=,O=�5L��+�.�<Vp�p"T/���p�n�AK�Բ�$q0�lRGG��lv��E�̖b���*MR���q]��Z�ח���V�0�Bm�j�f�^a�lE�q������x����m�*0₻Ñ���Ex��4���0�����t���<��l��qZM�����t�K�i�������Z��_��0dxev ��*�c�C�q�;l7��"j��p�]л^� 2m�[F�#�g��Fa����X��:�J�4��ap���vG�f�� +� i���@�W)�ڊ�EJ^X��j�#��<C¿�?[G�<�����@�5=x��rhۏ�5<]=�ÂF��8��b��1h6�Q�ɇ��2�f�'��1��N�~m`��p���|'W�ݴVdv}[���0<3�&S��g��]� ��]9���E�h!� n�p'����\�i��,��( _;� <�ϐF�*��g*\��.<��~#w_�SZD��0a�%Fn��a����_�j��b��{h�Nd��Ac����AK�C�%W1%�O'*��wq�g��ˇ3��W��\*yڲm��!��)K���'�կ*�F��/�E[׆� ���������F��$��<O�0v��VR��B W��b]Qi��p�-�A��`� +��;���Mw~�eSC�gB�驑Y���� �3�t�m���A��5���%Ko�T߯t� +�x�7�������HC��4�u� +D��A�%��N���ދ�J7\�n��5I0������t��%�#bd�!���Ri���X��=�dg�YU���y|E��|�0�֎���&��� o�-odSB�6i@�&��U& -y0���b�6sQ�̠��WRJ�S��$l-{┐0X�I��c%�Y �Ũ���v���Fy�Eu:8$�:��ه�gY���`�ps{�@��mFA|����o-�h�U��Rݻ2�k��������o��D��4�9�/���d��QtB�� ,��q������/�?ErAر����������"*H�0K7@�;��\���i����5ךS!qv��@�#ћ����C� ����}:�7��]E�2��7�W��poB ��3,�0����ۃ+�M��C�6�D����H8�����(3K��i�ʉvg2�zzb0������;ڽ��ϰYlC���0\8��^����@��F�� �~ӫ#6�:�E*���wJ7B��zP��� 2Ǝl�����\�vs��[7��F���;T1XE�> �����H�d�c���ZA�z�y���ޓB��l�v�{����U�ɕ����cII��$I����FUGxR�w��8XS,��� ����3Yr����st?���֘� N?����;��S9G����ݎ Gi��ۚ�S:��C�U5v\��vՁP�tTdX��dqL���=�Op�|�y�LK�� +p����a� �P�"|fm�s�� � ��8�7��D�^�*��O/���;��{I�Q:˯c㶲Da��p�h�z*-���|�C����G������8%����j=�c��eEU#��2�N���҂��:�]�h���F��`��O�X���繾�0��^r P�j���t��g#�j�pA�������� 3!�$���]�j�O.���(D��i!���d%�7� �t���r�D�҂`�F�N��_kp��r@u.�@�Z��>)J��$A1겛����{?�S��5"X +s8)�ϟx��U{&�nn������r#MR�N�A�y�G��>� +-��o����ۘɼ��ʁǭ�Ƕ�-� ��U<��r`(�7nD@o���p0t�������5�}�hQ���aYn���$_���C�{�Ǎ��o ��4���-u���[� +ږ�endstream endobj -2387 0 obj << +2389 0 obj << /Type /Page -/Contents 2388 0 R -/Resources 2386 0 R +/Contents 2390 0 R +/Resources 2388 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2417 0 R -/Annots [ 2398 0 R ] +/Parent 2418 0 R +/Annots [ 2397 0 R ] >> endobj -2398 0 obj << +2397 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [235.966 463.572 287.048 472.483] +/Rect [235.966 549.654 287.048 558.565] /Subtype /Link /A << /S /GoTo /D (whining) >> >> endobj -2389 0 obj << -/D [2387 0 R /XYZ 71.731 729.265 null] ->> endobj -2390 0 obj << -/D [2387 0 R /XYZ 71.731 741.22 null] ->> endobj -194 0 obj << -/D [2387 0 R /XYZ 234.86 707.841 null] ->> endobj 2391 0 obj << -/D [2387 0 R /XYZ 71.731 697.476 null] +/D [2389 0 R /XYZ 71.731 729.265 null] >> endobj 2392 0 obj << -/D [2387 0 R /XYZ 71.731 667.627 null] +/D [2389 0 R /XYZ 71.731 718.306 null] >> endobj 2393 0 obj << -/D [2387 0 R /XYZ 71.731 631.761 null] +/D [2389 0 R /XYZ 71.731 706.936 null] >> endobj 2394 0 obj << -/D [2387 0 R /XYZ 71.731 620.854 null] +/D [2389 0 R /XYZ 71.731 687.011 null] >> endobj 2395 0 obj << -/D [2387 0 R /XYZ 71.731 600.929 null] +/D [2389 0 R /XYZ 369.099 665.106 null] >> endobj -2396 0 obj << -/D [2387 0 R /XYZ 369.099 579.024 null] +1269 0 obj << +/D [2389 0 R /XYZ 71.731 637.21 null] >> endobj -1270 0 obj << -/D [2387 0 R /XYZ 71.731 551.129 null] +194 0 obj << +/D [2389 0 R /XYZ 168.193 597.838 null] >> endobj -198 0 obj << -/D [2387 0 R /XYZ 168.193 511.756 null] +2396 0 obj << +/D [2389 0 R /XYZ 71.731 587.473 null] >> endobj -2397 0 obj << -/D [2387 0 R /XYZ 71.731 501.391 null] +2398 0 obj << +/D [2389 0 R /XYZ 71.731 533.778 null] >> endobj 2399 0 obj << -/D [2387 0 R /XYZ 71.731 447.696 null] +/D [2389 0 R /XYZ 71.731 495.856 null] >> endobj 2400 0 obj << -/D [2387 0 R /XYZ 71.731 409.774 null] +/D [2389 0 R /XYZ 71.731 484.949 null] >> endobj 2401 0 obj << -/D [2387 0 R /XYZ 71.731 398.867 null] +/D [2389 0 R /XYZ 71.731 465.023 null] >> endobj 2402 0 obj << -/D [2387 0 R /XYZ 71.731 378.941 null] +/D [2389 0 R /XYZ 76.712 414.824 null] >> endobj 2403 0 obj << -/D [2387 0 R /XYZ 76.712 328.742 null] +/D [2389 0 R /XYZ 71.731 394.899 null] >> endobj 2404 0 obj << -/D [2387 0 R /XYZ 71.731 308.817 null] +/D [2389 0 R /XYZ 369.099 371.587 null] >> endobj -2405 0 obj << -/D [2387 0 R /XYZ 369.099 285.505 null] +1270 0 obj << +/D [2389 0 R /XYZ 71.731 343.691 null] >> endobj -1271 0 obj << -/D [2387 0 R /XYZ 71.731 257.609 null] +198 0 obj << +/D [2389 0 R /XYZ 200.128 304.319 null] >> endobj -202 0 obj << -/D [2387 0 R /XYZ 200.128 218.237 null] +2405 0 obj << +/D [2389 0 R /XYZ 71.731 296.966 null] >> endobj 2406 0 obj << -/D [2387 0 R /XYZ 71.731 210.885 null] +/D [2389 0 R /XYZ 99.155 271.243 null] >> endobj 2407 0 obj << -/D [2387 0 R /XYZ 99.155 185.161 null] +/D [2389 0 R /XYZ 121.261 271.243 null] >> endobj 2408 0 obj << -/D [2387 0 R /XYZ 121.261 185.161 null] +/D [2389 0 R /XYZ 158.738 271.243 null] >> endobj 2409 0 obj << -/D [2387 0 R /XYZ 158.738 185.161 null] +/D [2389 0 R /XYZ 71.731 258.291 null] >> endobj 2410 0 obj << -/D [2387 0 R /XYZ 71.731 172.209 null] +/D [2389 0 R /XYZ 71.731 251.902 null] >> endobj 2411 0 obj << -/D [2387 0 R /XYZ 71.731 165.82 null] +/D [2389 0 R /XYZ 245.988 240.359 null] >> endobj 2412 0 obj << -/D [2387 0 R /XYZ 245.988 154.277 null] +/D [2389 0 R /XYZ 268.387 240.359 null] >> endobj 2413 0 obj << -/D [2387 0 R /XYZ 268.387 154.277 null] +/D [2389 0 R /XYZ 311.83 240.359 null] >> endobj 2414 0 obj << -/D [2387 0 R /XYZ 311.83 154.277 null] +/D [2389 0 R /XYZ 225.31 227.407 null] >> endobj 2415 0 obj << -/D [2387 0 R /XYZ 225.31 141.325 null] +/D [2389 0 R /XYZ 215.062 214.456 null] +>> endobj +1271 0 obj << +/D [2389 0 R /XYZ 71.731 207.318 null] +>> endobj +202 0 obj << +/D [2389 0 R /XYZ 254.069 170.102 null] >> endobj 2416 0 obj << -/D [2387 0 R /XYZ 215.062 128.374 null] +/D [2389 0 R /XYZ 71.731 162.75 null] >> endobj -1272 0 obj << -/D [2387 0 R /XYZ 71.731 121.236 null] +2417 0 obj << +/D [2389 0 R /XYZ 71.731 142.839 null] >> endobj -2386 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R >> +2388 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2420 0 obj << -/Length 2658 +2421 0 obj << +/Length 2536 /Filter /FlateDecode >> stream -xڭko�8�{~��/k1+�zX���!��>����Ebl]e���R߯�yQ�";,� 93��_y��_%>A��8Z�o���������������?�^e*����i��ʒU��F������>?��l��[���M?�u]5;��w���:�|z��懇�i����U�,�B�@��P�0Fɬ�^���'��U�%��_6�����gw���ao��*�j(&gU��6�DD������zY�ϡ���r� O��nn��6Q��-�z�U�u�yW�������p>XE�<쁋N������k�dx�.�!V_����:Ʌ��h6����!�j�eٙ^V��`V�cW��īco����[�ߔ�S�����dah'���9Z�=�8�l���R�����X�� ��jأ�qL��z�+.�MgxxjG��S2�oir!���4���kx�gԎ��[�k8`M�=nعL�bu23�ً����Z5 |9u��}���=3۪.{��ڣ���I`�J��Uny��@�c�`!��4;L�A���Y ���\��[��0-`�<�mp���ق�A�7�A�٥`���έ3�O8��YYuT-�k���֝75B�`��-{0(�`w�a�-%A��뺶5��5��O���pF�h�%̜�}y��{�Ld짣:���{�{�yQ�c3�ͻ<8�ĎUhRw&/O<��,R�K0��iƎ'g��?��9� -���犢F�T)�b�"pT�9�D�W����iED�N8a�6Ӑ�l%"T�@�����v(���ɕ?�;�$H�&��� ㎡:Ȗ��!�`�(�a��os?�{#���X ���6<Zf-9���ߔUA}� �써�1Λ�yce:P���2\J]�!�!wB�p�� -a"|���<݃��4�����8E���+����-��v_� -)9�h���bi@���p�Q| nLK[Y3z�~<1�=nC���Nw��M;�=/lʒ�����yj���<�+��rQH�@���Jy6�ny�e4��غ���+�d9��@�}��$\EQ��K�/7?y�������|��!Ԅ:�V��2�����淛_'B`�4Vq�F�� -ނ�� -� �x��+A�i5��ʿ �"�f���pUlL�[? U����N��)r -�PKi��sL�l�����t�8��f�� ���bD�t�`s�U�Au��>��z��~χ�e�}�R���&_�UŤ'�� �F�|��3�C�_� B�a\��+��5�����z���;��a!`����2$9+o�=����z'��f�!��4ۙF|rOX��c���P�Y�� f�[^��!Q`H*"���!I���o y�vN�"�'��X�xD8�`p����3�@[P���T.��?�8n ��ad+D��"pa/�>�9�G9�?�2?���P����}�SI��^��̶:�ˤt��z*H�|$��p����b�fq��iNR���r�!w��K�ڋ������8�����~.��% ��p�`,�w�=Z�-���}[sJa����q�� -,�J�I��^���n�̇D�g'�^��㻷oe�ۡ�o����{��?C;���oU�=�G_$�(�`���5�b��t�܄��o7�k �4�N.=}��R��_P����t���|�K�Q�ٶ -ob��f��ݬ�xg�H��4�2c���}[���Ȥ�H�Qv�f8v�^~�o.� -����Lna��}Ģp�OE_���[�d�Kc� �ډ�\��A�my�PR�������懶�Nd�>�g*gb��Is �9�=�158����2���h��=;.��{�!�T��D�b�4אӥ���^l�0�JY�(O�̩E�6��<�v�l$s ��8+.�}Bo����&��OKd<���pD(�=䏵�Rp;�����"��G�0>�!�]�Қ ���D����u�:�f�>?M��)�[�1�z H^Tt*����7#�'�����ͦ�(�a&^V�C���/�1T��)� ��G�'\��Í�Y�@���}A�|���|+��~8{��?��Lw-S@e�G�7�grW3��8�,�f -�3,Q���h��m���G�-8�k���x�C�q�l�Үtp�gO���x�?�s6#���wĽ��J/�W4E���)oee������ȍ�rF��ǡM%�m#5�1#���l����_��u��RE{8�B_�`�Ʌ�n� Z]��Nqj3��CO�a<��Ǫ)K��>�,���GA�~+�t�]�H��"���Sdx�y��)|Q'�&�#���lS�L�}�o˶;�#m��YQH$a|I�^�X<�^�B��ꀑ�N;����9Y���Ai�.�;��}_������f�Vg�n0��� �쉤3���Q֝w!d��j P��\���B���������2���(���)���o��� ���'3�G��+~�J�oV�9���E�~�q��U�6t��+7����||C�~p�L�Pw��:c,zj -�J��=��0s�6rp|��w�.e��]��ƪo�vfͬ�y$)�M�e�ƥ�mqJ�dD�~���r�gS��ɫ?|�Q�{F4��%�����2����L��endstream +xڭYm��6����ȗ��5W"%K +��=lqhSt��! +�EۺȒ��n|��捒ly���`�9���g�t���/Xā� |t��:Zl7�b#� �c%,� ϻ����Y�*]���v�J�El�J"�x�?z���cg��JG���ʲ�v����]�e�����������*M̋v9��a: s��e���.WƤ�S�����omSeΪ�Ǭm����ՍP�uÍn/��}����Ec7]ݜ���SL{��0�9���m{!���0l��0ז���@p�*�*� �z����# Z{��%�+O�/�mD32t +�UBo��M�u%�`=���-m+�;^*��Rp>/E1��V�")�l�긃�.(��T��x�:ec����"�k�v2�+Ա��e�� w�u!K{j;{����O0έ��MD���YJ��@f�1_1.�U-&��a�b��3!��HP��TZ�|K�ա�A�Q(� ��3��4������' ��]q�)��)���RL�͏��J8��Ь��p�:/=���G��f"����=���'8d�d ��T���]�(�����^����� +�B���A��2����= +#x�,3���-c���-�gn^ ��ѴUcK�40tY�Y�eh���v����U2{�=����aT��vw���3dz�=Y��\�S=���m[�*&�cw��N�u�D�;_�����Fx�j���tX�T����� 0*����;� ���|��/r����_��t��!���@��Y4v�����A�)Y�5��d�\��s+g�* +��S=&�B�k�&�7ʇL�囔�� �!,��H1��ļ +�PE(������MF�"4G+6�C��,B�ӹF"�>6��s�a���a>a_7�p�i'�2c��`^�ջV�`�_���}�,��ҖƑ�` �:Z�:Svdd���W���*$�t�q�-_q��$�6����e'���*6F��o�B�����1���!�����"���l#��r�����\��%2�"���S�Z��[��C�@����j�d=t6������/r|9�l��^�G��G��D�F�ψ��8ְ\:�P�t����5\8Q,$_��` +aA�1F��@Lx�m��̳c{�6�y�G}��*^�0�V[)dJ���:��c�?\D���Wk>dz�0�1��`���7�)/U��4yQ�㙩���� +tr��ՀP�`��c�D'����bqy�_0��%C +{�e><�_��B�@8w��딂v���9�]��}�_���<>o���u��k�|6��a�-�7,#|��Qh�� j����L���O��` +�J^�DA +�����>k �vCjk�61����$C�;��o�*��Et��4r�XT�b_痞���(�k��U�b{2t�/m��Z�[Gq3/�!��c��y�܅��˜ۈ�:�6�1�+b����q� �C��=1XGpAt�PWp!��Y�)I�K�e�'*i�!%'�g3�{6���� z�e��q���gۥ�x?Q�*�`c��Z�Vn������X3i����Y��tC&�N<,���X&n �8 V�l��J:lY/5"? ������O{�L�K�ᬠ�I�6��\F��hb�����L���M,�R��b]M���}v<ڪ=�"n�"���I��s�R3�U=��'�ټ�&��vB3�(˳.�#���x\k��pʛ@L{D�1WycxLO�t`D����Z�TCli���(��@L��3HaR�9���b"�9�p,��OL�¬G��!:��,$GwQ�ݣ�la�"�"_}�#ɛx���`W.pg[�Bd4ܚ~4gtcDO1Z⎴׃T��Cǭ�=�M�Y��2�]��Au��d���M���Fˠ{���j���0 �U������ԇ�+�q �.t?kιaU�&�6z�8���e�E�cQ�\�>�,��鹈��Q�'�,"Gq�F���ɿ��?y�4�*-�>b�Ѐ`03��k�ݡ�i2@fA `�����h{�b��{0e�� +1�}�������D,��<���������i��p�L&g�|�*E��=���aN����2'�{!��7-�<���Z����� ?eB���W^.�}N�`�������L��-t����|~w/�*������8�zX����hq�Źca��U��*e�˕��Wn������w�\TC1�\����Z'�^A�X����e� �\�;9ؾ��;����c��^_�-t��X5��r__����'�&'�����E����\�o>��X����w#���p�������J�x��� +����ϱ��7ɰ3�)���3���ng%�Ld�=� ��s�^l����7�.������RJ������?0d��ƂIi�F$,���BB����Un-�Xl��'�5H��#���+9��e�!x옡������B8�?c�箟�J����G��π�N���td�<���\���XJkendstream endobj -2419 0 obj << +2420 0 obj << /Type /Page -/Contents 2420 0 R -/Resources 2418 0 R +/Contents 2421 0 R +/Resources 2419 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2417 0 R +/Parent 2418 0 R /Annots [ 2426 0 R ] >> endobj 2426 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [272.104 480.023 306.198 488.613] +/Rect [272.104 557.437 306.198 566.027] /Subtype /Link /A << /S /GoTo /D (gloss-contrib) >> >> endobj -2421 0 obj << -/D [2419 0 R /XYZ 71.731 729.265 null] ->> endobj -206 0 obj << -/D [2419 0 R /XYZ 254.069 707.841 null] ->> endobj 2422 0 obj << -/D [2419 0 R /XYZ 71.731 700.488 null] +/D [2420 0 R /XYZ 71.731 729.265 null] >> endobj 2423 0 obj << -/D [2419 0 R /XYZ 71.731 564.015 null] +/D [2420 0 R /XYZ 71.731 641.43 null] >> endobj 2424 0 obj << -/D [2419 0 R /XYZ 118.555 528.464 null] +/D [2420 0 R /XYZ 118.555 605.878 null] >> endobj 2425 0 obj << -/D [2419 0 R /XYZ 118.555 482.018 null] +/D [2420 0 R /XYZ 118.555 559.432 null] >> endobj 2427 0 obj << -/D [2419 0 R /XYZ 492.354 482.018 null] +/D [2420 0 R /XYZ 492.354 559.432 null] >> endobj 2428 0 obj << -/D [2419 0 R /XYZ 71.731 448.441 null] +/D [2420 0 R /XYZ 71.731 525.856 null] >> endobj 2429 0 obj << -/D [2419 0 R /XYZ 71.731 439.53 null] +/D [2420 0 R /XYZ 71.731 516.944 null] >> endobj 2430 0 obj << -/D [2419 0 R /XYZ 71.731 424.586 null] +/D [2420 0 R /XYZ 71.731 502.001 null] >> endobj 2431 0 obj << -/D [2419 0 R /XYZ 71.731 411.635 null] +/D [2420 0 R /XYZ 71.731 489.049 null] >> endobj 2432 0 obj << -/D [2419 0 R /XYZ 91.656 395.859 null] +/D [2420 0 R /XYZ 91.656 473.273 null] >> endobj 2433 0 obj << -/D [2419 0 R /XYZ 220.329 395.859 null] +/D [2420 0 R /XYZ 220.329 473.273 null] >> endobj 2434 0 obj << -/D [2419 0 R /XYZ 257.513 395.859 null] +/D [2420 0 R /XYZ 257.513 473.273 null] >> endobj 2435 0 obj << -/D [2419 0 R /XYZ 162.267 382.907 null] +/D [2420 0 R /XYZ 162.267 460.322 null] >> endobj 2436 0 obj << -/D [2419 0 R /XYZ 446.625 369.956 null] +/D [2420 0 R /XYZ 446.625 447.37 null] >> endobj 2437 0 obj << -/D [2419 0 R /XYZ 154.759 357.004 null] +/D [2420 0 R /XYZ 154.759 434.419 null] >> endobj 2438 0 obj << -/D [2419 0 R /XYZ 71.731 344.885 null] +/D [2420 0 R /XYZ 71.731 422.299 null] >> endobj 2439 0 obj << -/D [2419 0 R /XYZ 71.731 333.991 null] +/D [2420 0 R /XYZ 71.731 411.405 null] >> endobj 2440 0 obj << -/D [2419 0 R /XYZ 91.656 316.158 null] +/D [2420 0 R /XYZ 91.656 393.572 null] >> endobj 2441 0 obj << -/D [2419 0 R /XYZ 71.731 296.068 null] +/D [2420 0 R /XYZ 71.731 373.482 null] >> endobj 2442 0 obj << -/D [2419 0 R /XYZ 107.706 285.273 null] +/D [2420 0 R /XYZ 107.706 362.688 null] >> endobj 2443 0 obj << -/D [2419 0 R /XYZ 204.851 285.273 null] +/D [2420 0 R /XYZ 204.851 362.688 null] >> endobj 2444 0 obj << -/D [2419 0 R /XYZ 71.731 257.378 null] +/D [2420 0 R /XYZ 71.731 334.792 null] >> endobj 2445 0 obj << -/D [2419 0 R /XYZ 71.731 242.27 null] +/D [2420 0 R /XYZ 71.731 319.684 null] >> endobj 2446 0 obj << -/D [2419 0 R /XYZ 91.656 226.494 null] +/D [2420 0 R /XYZ 91.656 303.908 null] >> endobj 2447 0 obj << -/D [2419 0 R /XYZ 71.731 193.453 null] +/D [2420 0 R /XYZ 71.731 270.867 null] >> endobj 2448 0 obj << -/D [2419 0 R /XYZ 107.706 182.658 null] +/D [2420 0 R /XYZ 107.706 260.073 null] >> endobj 2449 0 obj << -/D [2419 0 R /XYZ 71.731 154.763 null] +/D [2420 0 R /XYZ 71.731 232.177 null] >> endobj 2450 0 obj << -/D [2419 0 R /XYZ 71.731 141.712 null] +/D [2420 0 R /XYZ 71.731 219.126 null] >> endobj 2451 0 obj << -/D [2419 0 R /XYZ 91.656 123.879 null] +/D [2420 0 R /XYZ 91.656 201.293 null] >> endobj -2418 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R /F35 1463 0 R /F54 2195 0 R >> -/ProcSet [ /PDF /Text ] +2452 0 obj << +/D [2420 0 R /XYZ 71.731 181.204 null] +>> endobj +2453 0 obj << +/D [2420 0 R /XYZ 107.706 170.409 null] +>> endobj +2454 0 obj << +/D [2420 0 R /XYZ 71.731 142.514 null] >> endobj 2455 0 obj << -/Length 1717 +/D [2420 0 R /XYZ 71.731 129.463 null] +>> endobj +2456 0 obj << +/D [2420 0 R /XYZ 91.656 111.629 null] +>> endobj +2419 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R /F53 2191 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2460 0 obj << +/Length 2018 /Filter /FlateDecode >> stream -xڭXm��4��_�O�3\t���0-L�pL�2���s�XԱ�-�~=�ڵ�z��}��Z�>��}�E���I�<��\���b�$�l`�'k�Xev�������8�,�"�'��$��b�O�X�y*'��o��R5N�әL�@ -��֝SUe� Ϳ�7��R�ߗ?<y���q.�����3`2�[D"K�I�E�$��O潔����mS�+���6��Fi���1Mf���d��b�����i���J9ך������C��e�B�Yr�R$,�~�ϐ)�dv`��*vYj8m�?�V��Q��jz/P�J�W+߳�NO����Y���L��Ci -�QҬ��S��N�������[о���]�wg{��w����P�:!���4�G�8�i�*o����I��#��^�x��-�\i:y����� }�f��%���<����m�FJ���=�f]� ��f��d���>e;"ӆ5�u�(l�㡁�~gl���O��*S��)����;{���0���3���kq:�6NR�d(s��4i �u�t�2��$�=s�6i���W�Vw�{ƞ�����W�3���4������*�1̺{�ɓ��WN ́p��$J fx�#E2)�<�{��E���y���>�A�����W��*������Ft�fS:����]���2�Ao��t��~֨��hX*|0 -m�(wƒ5Ợ�\- ] �ޏ��;Ƕ+eX����m=xn�)�J��H�Ȩ�>�<<�0���S����=�l�|"� ��N�����0 �C���хQ��`nG@��)wEs� v]Y���T��ͮ�Ӵv�F���ނӈ&���r��OF�MZ룳S�й�/\�y����! -��Ҏ�p��x������[c{�2��!�� !���2�0�RՓx7$����T��-��5x�N��y��¶->y��4K�*(~ި�d���J;�Z/��FG�DC�ߓB �r�,�s�$^����h)��퓃E'�*�IL������ V���C.����x s����r��Wda�*j����J�>��t]c�S�LcK���鯦u�������<W��e&���}�h��n�9�#��g�.���2Q����ӂ/��.@ʠ�e�3H�oX������g64�YH���VKEY�D�T���|�\D�Jl)�ŧ���Ӷ"E��ON����[hW�}�ȅ�RN��XD��r�p����� &$BA"��_H~�Hu1�G꿷y�M8��SX�,�,������>���9D�O8�� j�4_�IL9~ewb�6y����n�9�͈h�vKk;���8����8�� �4g0�� ����u2�lW��j��T+�$ƇL�O������7��?���r�ԗ���zGyj|nL�|hji���K]5$�׀�����a�e4��R��ۀc�+��5'����~z���\(�Ws�I5��C��ﺝ���L -�>`Հ������V %�wg\�������ip�����[�|C�i��K�nH��� �ʲ�I��̓ڇ�_[2�X_���d *�Aa���*{E���Wu����2��gJ��C Unl�o�=Q�9�����ҹ��k6HijHWp�h����D�1�@�^Ag�l��E��m ���1Xz��_����<�?����ٿ5R9������c��8��k�Aendstream +x�}X[��6~ϯ��BFǴv�i'I��I�g��fQp$��FQ����=7����������\�`��/�d��"¥ +�d�ׯ����}��LTf':?�^��D�d��i4Y�'q�P�l�E�Z$�dU���e�۾즳0�P���q��*�lx�����*=����^�F�(S�E�M\���0;[*M�I�/T���W�)��0�h2�0��b_-⌔�鈴��~���t�w�i��З��Ki�TI_�x��G���� +�p2;��*�v�-�38�7`��Vw�.�vp�v� +�'ޓ���V h�#�>{te����[V�m�kӸ��J�$�EW:��{;tt >\D��I@G\�9��0�ges`�iz�3�0�jx�+Tvc�>ٯ� �J���E@�f ̑��h�@�= J�p�һ��T��g�����y�� +�7���7��u�x�3��g|�tf��y����<ݷ��9a� �U�hţ��J��ȢU�7���V�}!/�D8�H�Wpu<��������ޕ6"�u�p�x��-w�ɇJw�H�QP��i�x�������Kjءo���L�S���J�X������{�|��f`)��27�����PF.��ox �ӕ���He>O��K1�C�� �/�~|F^X��ϻ7gxR�m�Z?;;gW�wC�]Y0c�x���q��Ɯ����������^��$��C�ׂ/6��9]A1���Q�h[R|��ʒ��E��e�K�������O�����V�[Ѯ�s(ueS��۲��`�G ���PBp�b��t�{�Ņ�4���0� ,#8yUY"1��24t$xJ'�q�\"���p �U?�~�:����#UQ��n������ T۔RQ�D* +�n ��e�~�կ����V�Xt]������p��(���+hfQ�� K�9�;Ӂ-���@J����H�C��t�-|Ųl4��φo�bEQ����۶29�y�L^�jp�u���ZW���Õs���f]���O6���hd*IԋHA(�"�b����!g�tIZ����R]M��J�%���Y;��v�,�,�8qqr̶�2����N���F��aKL9�d��mK�1.�����J��Z�D��ĺ,z#�6�X�z���=p� ��L����j]H5-5VC!KM�4��I�-�t�Ba�t#C�+V_AV�����v�1�ʺH��x[V-K� (H�+��ܖۀ��<�ʽ9�µ$��i��G�\(�[��D�/J�?�9m���T�,��X5��|�Dk��j=�@�Τ����&�w�����x(:oS��3$\Y���I�uh�5.�l=ʈ �T�G��d$��ɓܢ5�U��U� +N"xЧՈ�s/,�(S�x5T���PC{��:ms���l���~>� 9M�� +N,��oN�🢥�� �w����տ�nm�?����1Xz����&Z�(;f�@rՃ�;�e�]K��i +r�νܜƒ�>���L�H�/ �!kl��WD^Ǧ�,P�H !ʍ������i���-˹c%݃��y��Տ��/P|�G# +�cχ�h��tv����9��rVS\���2���<�m�&�!!,x��;�~g��Ƿ�?��M3tX�-�jC��Y��g (�>yB7�F/�M)���hȓ�]a�C�=�e�b�Ͼ�r�b�'�C&�ns�paB*�[��N��ű�F������#���Q���v�U�!��vӱAI�H�X(�w*�7�� �����rgk��B!�9�<���(�v���J?��p@u\�s0Ӌ������G,�e"i;��7�hi~��ֳ+wؚ�) M�it��q�1�BO@CҜ!>½}��~~�k�V�.���/��s�{�?��y�s��_C�Ҝ qn�� ژ���X��X�܁R��ݡM�BR?��ޞ�]�z��x�A���*�%�B�� ��/�evi�/�G�endstream endobj -2454 0 obj << +2459 0 obj << /Type /Page -/Contents 2455 0 R -/Resources 2453 0 R +/Contents 2460 0 R +/Resources 2458 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2417 0 R ->> endobj -2456 0 obj << -/D [2454 0 R /XYZ 71.731 729.265 null] ->> endobj -2457 0 obj << -/D [2454 0 R /XYZ 71.731 718.306 null] ->> endobj -2458 0 obj << -/D [2454 0 R /XYZ 107.706 708.344 null] ->> endobj -2459 0 obj << -/D [2454 0 R /XYZ 71.731 680.448 null] ->> endobj -2460 0 obj << -/D [2454 0 R /XYZ 71.731 667.397 null] +/Parent 2418 0 R >> endobj 2461 0 obj << -/D [2454 0 R /XYZ 91.656 649.564 null] +/D [2459 0 R /XYZ 71.731 729.265 null] >> endobj 2462 0 obj << -/D [2454 0 R /XYZ 71.731 629.475 null] +/D [2459 0 R /XYZ 71.731 718.306 null] >> endobj 2463 0 obj << -/D [2454 0 R /XYZ 107.706 618.68 null] +/D [2459 0 R /XYZ 107.706 708.344 null] >> endobj 2464 0 obj << -/D [2454 0 R /XYZ 71.731 590.785 null] +/D [2459 0 R /XYZ 71.731 680.448 null] >> endobj 2465 0 obj << -/D [2454 0 R /XYZ 71.731 577.734 null] +/D [2459 0 R /XYZ 71.731 667.397 null] >> endobj 2466 0 obj << -/D [2454 0 R /XYZ 91.656 559.9 null] +/D [2459 0 R /XYZ 91.656 649.564 null] >> endobj 2467 0 obj << -/D [2454 0 R /XYZ 71.731 539.811 null] +/D [2459 0 R /XYZ 71.731 629.475 null] >> endobj 2468 0 obj << -/D [2454 0 R /XYZ 107.706 529.016 null] +/D [2459 0 R /XYZ 107.706 618.68 null] >> endobj -1273 0 obj << -/D [2454 0 R /XYZ 71.731 506.102 null] +1272 0 obj << +/D [2459 0 R /XYZ 71.731 595.766 null] >> endobj -210 0 obj << -/D [2454 0 R /XYZ 460.106 466.73 null] +206 0 obj << +/D [2459 0 R /XYZ 460.106 556.394 null] >> endobj 2469 0 obj << -/D [2454 0 R /XYZ 71.731 456.365 null] +/D [2459 0 R /XYZ 71.731 546.029 null] >> endobj 2470 0 obj << -/D [2454 0 R /XYZ 344.279 446.605 null] +/D [2459 0 R /XYZ 344.279 536.269 null] >> endobj 2471 0 obj << -/D [2454 0 R /XYZ 197.388 433.654 null] +/D [2459 0 R /XYZ 197.388 523.318 null] >> endobj 2472 0 obj << -/D [2454 0 R /XYZ 438.35 433.654 null] +/D [2459 0 R /XYZ 438.35 523.318 null] >> endobj 2473 0 obj << -/D [2454 0 R /XYZ 474.766 433.654 null] +/D [2459 0 R /XYZ 474.766 523.318 null] >> endobj 2474 0 obj << -/D [2454 0 R /XYZ 114.062 420.702 null] +/D [2459 0 R /XYZ 114.062 510.366 null] >> endobj 2475 0 obj << -/D [2454 0 R /XYZ 71.731 413.564 null] +/D [2459 0 R /XYZ 71.731 503.228 null] >> endobj 2476 0 obj << -/D [2454 0 R /XYZ 428.182 402.77 null] +/D [2459 0 R /XYZ 428.182 492.433 null] >> endobj 2477 0 obj << -/D [2454 0 R /XYZ 325.052 389.818 null] +/D [2459 0 R /XYZ 325.052 479.482 null] >> endobj 2478 0 obj << -/D [2454 0 R /XYZ 71.731 376.867 null] +/D [2459 0 R /XYZ 71.731 466.531 null] >> endobj 2479 0 obj << -/D [2454 0 R /XYZ 71.731 369.729 null] +/D [2459 0 R /XYZ 71.731 459.392 null] >> endobj 2480 0 obj << -/D [2454 0 R /XYZ 71.731 359.766 null] +/D [2459 0 R /XYZ 71.731 449.43 null] >> endobj -1274 0 obj << -/D [2454 0 R /XYZ 71.731 300.752 null] +1273 0 obj << +/D [2459 0 R /XYZ 71.731 390.416 null] >> endobj -214 0 obj << -/D [2454 0 R /XYZ 350.135 255.498 null] +210 0 obj << +/D [2459 0 R /XYZ 350.135 345.162 null] >> endobj 2481 0 obj << -/D [2454 0 R /XYZ 71.731 243.327 null] +/D [2459 0 R /XYZ 71.731 332.99 null] >> endobj 2482 0 obj << -/D [2454 0 R /XYZ 71.731 200.898 null] +/D [2459 0 R /XYZ 71.731 290.561 null] >> endobj 2483 0 obj << -/D [2454 0 R /XYZ 440.415 190.103 null] +/D [2459 0 R /XYZ 440.415 279.767 null] +>> endobj +1274 0 obj << +/D [2459 0 R /XYZ 71.731 264.659 null] +>> endobj +214 0 obj << +/D [2459 0 R /XYZ 242.621 227.443 null] +>> endobj +2484 0 obj << +/D [2459 0 R /XYZ 71.731 220.091 null] >> endobj 1275 0 obj << -/D [2454 0 R /XYZ 71.731 174.995 null] +/D [2459 0 R /XYZ 71.731 179.259 null] >> endobj -2453 0 obj << +218 0 obj << +/D [2459 0 R /XYZ 175.703 146.945 null] +>> endobj +2485 0 obj << +/D [2459 0 R /XYZ 71.731 140.818 null] +>> endobj +2486 0 obj << +/D [2459 0 R /XYZ 231.715 128.016 null] +>> endobj +2487 0 obj << +/D [2459 0 R /XYZ 131.551 115.064 null] +>> endobj +2458 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2486 0 obj << -/Length 2305 +2490 0 obj << +/Length 2238 /Filter /FlateDecode >> stream -xڥY_��6�O��q�D�%�I����m���`�IQ��±��o+gٛ�~��"�8q&}8��M���H9�ć_0I�(xȕ�q4�����3���]�s�d~X�[|Tj��XM��I,�*�$J�e$'���އ]zht=�������ϕmҲ,�g��>�Y�e:����w�\�F#���R����9&�$� -c��[���e8ϤE�%K�s��S�{ƚmC�ߊ*7� ��}�i��d.}��i����R���2 <X�c��_hd*z�6 }�Y��x��?���D��e����@�-�7��u�{�W4���Z� ~ĥ�����j�ZS�H��.�6�{�����U�a�HR�"�inȓ0����� OG9��I��Y��6z�t��x���O�.>U�\��Eٴ�gDB���W�#g�.i�3�>kf��s����~�y�������ΖN@'���#�J����� -����1�51��ϊ4�ok���+����,F�A�0���3`WI"� -���Uc�ʕS��2`6gj"�1j��9��q��6MZT�P�\�=Q�YS�į4�Ԥ��_���5���bq<�q��L��@m�nU0��i��nɮݙ�̇��^�)����.m*�Ji"f��ϯl�( ���UZ�"�<B�������O��?=>,~��U��&���<� �kP8�`pJ�-L5�eO�m�<�s(D�8Ӛ���Qd����60"��fK��˽p[��C_��j�@).`Gǫ��R[8�=H����T�2RI5F&����ڢ�<r���6�kb�?H�;P`kZD��)����H*@��V�:��@�*�`Y��pqO�m.ٖ�hd~��L���Y��Eh^��u�=�1���lu����Wp�w�9v��7W��������rU�@(�%���W�"�̨۸P�N��ϗ�pFFoY�dF�!��H�����N����8]I���sFE�s�ڐy���Td � ����@���iB��&�KMx�Χ����;�)V��Ќ�����ߏ�j�z�bDT1�䉠��E���$��_p!�:^���9�U���GEa��,p��T�<�f���=��?O��i�{��O����XY���S�*�v�cU(�;�-3�3�����8�(؟RP^备X�4{I��}���q%5ؾ��)oߏ7�?�E��Ce8v� Qb-�|[tX8�U/���#T��y�ޢ?�{���YD�T��hv3O�2j0& FI�0H���pJ@@�iaL ������� �c���%��NO�v) -~�P���tYT^ϻơ 8p�m��UU�&��������t��z�1'�ϐ�*ƭi`� Zh4��UZ|�,�� -��M��X�v�f4~uw���G"E}$NŶ9�.8H�VF�$�{��0����) !�'QH;���p���tu�Zd[�a�s\b���]��i�P�K�KP�mA��.n��jtG��8F����L� 8�2l�e�;=�x1srOK�Y�.WR�:�$�y/a@��+\�Lzd�x��aQ<N`h�K��rvE3(^Pny�,ݵ;։��Iׂ�r�nvE�J����4� �_���M����h�h�[0�L�L۾���cpR���\�+wo�i(����^?���� ~�$��4`O��6^�Ғ�.)[K��.����]��n����z#�����rʁ�e���o��{�u7����37Y�v�BO�u���0��P�����&g���):�7S�Fn�/����W=\��Dr;᮪0t�@�h� ]�`Bۜfn���1�h_<�u~��v>L���Jv�`�i�&���ʫ=3��}��a|4O���b����ҥȸ������p�R�lZț���NЕ�3���;q?�������Ժu}78 -���)�*�݇�tn�.��D��B�_�y�2]ک�R|qW�ŝ?��"�����w$��J�n�5iF���!�:Gl �W.���K���.K�{(4���e�.���w�\�ԃ��k3�P�r:04H�����X�E"�c���nغmk��pH_مAп'���hu��t��w*��A߀���'��e�\�?��| 4�?](:���N�`dnyK@�M�,s���"���Ϧ�VG��������� -��3D @���{�YA_f��a�`��ʟ�|F��}u��0Y -? -o.�����KE����(��gw_((��w27�_*��_X�O��s�e����$2��%vn,�N��Ɩ�� Y�endstream +xڥ]��8"�=�L˟q��@�ؽ�a[0Y���pplebԑr��4��)ۉ���!@DQIQ����\�R�!A&�$^�7��V��F2ŊIV���oֿ��"Y.��E$7"Ki�M,����C~�T�\����������_���:_�{��7?o�q��l����� �"�c���߈0��f���V�t�=-C�SMM����k���h�t���;�/Vx� �\���� �[� �~_F�W��,��{mi�Q���F�;(�m�"������{���6Y�"7�d��H�6��YM��d�c]3��=����L�O�x&~� M�g����xA���RǼb]�j��ݫF邭W���C��ur�7hG \`��B۷��>U&E�����@�[�b�ՄfWlP����ka� ��4G375��8}v!���SyIag�4�Zf��� ���s� �U +�W �H$�����e�s�H�t�m�6�%R�N��*�}+�&'oƉ�4x���Z1�U `���q��T�Ԛ~)�����i��,��6 � +�Z�R�W�0�A4"*�>5f����<��?G��2����}V�ץ�=��?���a҇_ak�˕�M��Rڳ�����^>ҝ���3����|�y��+�{���\�ćP������z�N��:Ӝ�CK���5������n{��V��Uz�r�p�������U��];N��4/k�Tzkv�p.�Y��z(�)����� I~�bf�}��(M� �ԅ,%ds*��g5+B�i�=� �����Q�A�/G~� ��)Y~N�Zd^W/��z` ���)ͬ�� �^;�QN�W�����H8x>@�� ^M��J�����pk1q�������Jz�����W{�a,�����l�����dTH���ӦJ��S�GR;�����j������s���.��K�����n�U]�z�AI ��(綠�h�c#�) �X���7q����gy�b#�fO1?̊�lpn�Ӎ�%M>:C�ȉ�0�E�N*�/,���c����cRL'� ��.e䁎�78�����d�c�:F��;h1(L��A�*�}W�Uw��m��f�����ȿ1�ˁ��1u���n�И�j���I��!��;<홻7�uTӍ��n����F��(�P���cv���yMhk����V�t���� ���}'~`�衸��aP������H�Rn�di�]؞5�xl�W.�'��`ҟ�ܟ�7%3���Qa�����L_EO�������3X9 �v8ةm"�D���p��w��=�d#�v�m���(n Z{K���·�?��$��5��k�64��=,�@�(�F�]�(�ԌX�y�1�����"���E���lri_�36:ҕ�_yU;��>�����y�R���0npB��[��a�7]}#��J)��G"�R +�?�i�4W]��Y+��|���5�:��@$��;��H�D<ajr�9bKx�q=mG�6��Vs<���%�;(46����B2`7Pľ��U)�ꓡi�nYh�`�M(ۀ"P�i�#�ݱ��o�X�)?� +�.`X'��7�U� %~pG }7���3�"HR�g���'�YM���+F/`�Av�3���ۀ���4��_1�0 +�hS=�*.��7���X�_�j��hiO��_М}ޟ�<۵ș�N�����p��Q�~�=���{�kF3�Cn��;�/B�f��;������mWB�Kd&��O8NL������A��q���>X��"vh�pbo��:�{���S������;+��Mo�˸����á9i� ���t�+~R�9�t�kxz�COq����Q|�/E�,��X�tP����P�����7�R�� �M+6q�8>�LU!?��H�o�3�,�6��RG����U�3�/&P���d����Oو��]^鋮�q�;\�q�oN+�ҵ���R�w?�nO�4qO�u�6�]������Ms���'��G@�PwN +}<z]5��c^�Uȷ� ��;� +�S���W�= +�ƕ�=Hk�[�ڥ��#�#o=(�wR�aν�ե܂�M����xЎ1��N;�\ ^쐬�ayyq���[���������u.^����&;�� O��L�~�If�"c��1�����\�����!�endstream endobj -2485 0 obj << +2489 0 obj << /Type /Page -/Contents 2486 0 R -/Resources 2484 0 R +/Contents 2490 0 R +/Resources 2488 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2417 0 R -/Annots [ 2494 0 R 2495 0 R 2508 0 R 2509 0 R ] +/Parent 2418 0 R +/Annots [ 2493 0 R 2494 0 R 2507 0 R 2508 0 R ] >> endobj -2494 0 obj << +2493 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [330.238 520.977 383.277 529.888] +/Rect [330.238 687.258 383.277 696.169] /Subtype /Link /A << /S /GoTo /D (install-perlmodules) >> >> endobj -2495 0 obj << +2494 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [91.377 510.082 112.249 516.937] +/Rect [91.377 676.364 112.249 683.218] /Subtype /Link /A << /S /GoTo /D (gloss-ppm) >> >> endobj -2508 0 obj << +2507 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.526 98.66 191.829 107.572] +/Rect [139.526 264.942 191.829 273.853] /Subtype /Link /A << /S /GoTo /D (security-webserver-access) >> >> endobj -2509 0 obj << +2508 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [478.054 98.66 530.357 107.572] +/Rect [478.054 264.942 530.357 273.853] /Subtype /Link /A << /S /GoTo /D (http) >> >> endobj -2487 0 obj << -/D [2485 0 R /XYZ 71.731 729.265 null] ->> endobj -2488 0 obj << -/D [2485 0 R /XYZ 71.731 741.22 null] ->> endobj -218 0 obj << -/D [2485 0 R /XYZ 242.621 707.841 null] ->> endobj -2489 0 obj << -/D [2485 0 R /XYZ 71.731 700.488 null] +2491 0 obj << +/D [2489 0 R /XYZ 71.731 729.265 null] >> endobj 1374 0 obj << -/D [2485 0 R /XYZ 71.731 659.657 null] +/D [2489 0 R /XYZ 71.731 718.306 null] >> endobj 222 0 obj << -/D [2485 0 R /XYZ 175.703 627.343 null] ->> endobj -2490 0 obj << -/D [2485 0 R /XYZ 71.731 621.216 null] ->> endobj -2491 0 obj << -/D [2485 0 R /XYZ 231.715 608.414 null] +/D [2489 0 R /XYZ 245.449 708.344 null] >> endobj 2492 0 obj << -/D [2485 0 R /XYZ 131.551 595.462 null] ->> endobj -1375 0 obj << -/D [2485 0 R /XYZ 71.731 575.373 null] ->> endobj -226 0 obj << -/D [2485 0 R /XYZ 245.449 542.062 null] +/D [2489 0 R /XYZ 71.731 702.217 null] >> endobj -2493 0 obj << -/D [2485 0 R /XYZ 71.731 535.936 null] +2495 0 obj << +/D [2489 0 R /XYZ 71.731 666.401 null] >> endobj 2496 0 obj << -/D [2485 0 R /XYZ 71.731 500.12 null] +/D [2489 0 R /XYZ 120.149 654.844 null] >> endobj 2497 0 obj << -/D [2485 0 R /XYZ 120.149 488.563 null] +/D [2489 0 R /XYZ 71.731 633.225 null] >> endobj 2498 0 obj << -/D [2485 0 R /XYZ 71.731 466.944 null] +/D [2489 0 R /XYZ 71.731 595.203 null] >> endobj 2499 0 obj << -/D [2485 0 R /XYZ 71.731 428.922 null] +/D [2489 0 R /XYZ 71.731 595.203 null] >> endobj 2500 0 obj << -/D [2485 0 R /XYZ 71.731 428.922 null] +/D [2489 0 R /XYZ 71.731 574.047 null] >> endobj 2501 0 obj << -/D [2485 0 R /XYZ 71.731 407.766 null] +/D [2489 0 R /XYZ 71.731 554.122 null] >> endobj 2502 0 obj << -/D [2485 0 R /XYZ 71.731 387.841 null] +/D [2489 0 R /XYZ 91.656 519.153 null] >> endobj 2503 0 obj << -/D [2485 0 R /XYZ 91.656 352.872 null] +/D [2489 0 R /XYZ 76.712 502.516 null] >> endobj 2504 0 obj << -/D [2485 0 R /XYZ 76.712 336.234 null] +/D [2489 0 R /XYZ 71.731 482.59 null] +>> endobj +1375 0 obj << +/D [2489 0 R /XYZ 71.731 419.726 null] +>> endobj +226 0 obj << +/D [2489 0 R /XYZ 341.46 384.259 null] >> endobj 2505 0 obj << -/D [2485 0 R /XYZ 71.731 316.309 null] +/D [2489 0 R /XYZ 71.731 375.622 null] >> endobj 1376 0 obj << -/D [2485 0 R /XYZ 71.731 253.445 null] +/D [2489 0 R /XYZ 71.731 345.24 null] >> endobj 230 0 obj << -/D [2485 0 R /XYZ 341.46 217.978 null] +/D [2489 0 R /XYZ 244.612 311.93 null] >> endobj 2506 0 obj << -/D [2485 0 R /XYZ 71.731 209.34 null] +/D [2489 0 R /XYZ 71.731 303.293 null] +>> endobj +2509 0 obj << +/D [2489 0 R /XYZ 71.731 264.942 null] +>> endobj +2510 0 obj << +/D [2489 0 R /XYZ 71.731 249.998 null] +>> endobj +2511 0 obj << +/D [2489 0 R /XYZ 322.74 240.498 null] +>> endobj +2512 0 obj << +/D [2489 0 R /XYZ 317.417 217.186 null] >> endobj 1377 0 obj << -/D [2485 0 R /XYZ 71.731 178.959 null] +/D [2489 0 R /XYZ 71.731 189.29 null] >> endobj 234 0 obj << -/D [2485 0 R /XYZ 244.612 145.649 null] +/D [2489 0 R /XYZ 197.318 153.823 null] >> endobj -2507 0 obj << -/D [2485 0 R /XYZ 71.731 137.012 null] +2513 0 obj << +/D [2489 0 R /XYZ 71.731 145.186 null] >> endobj -2510 0 obj << -/D [2485 0 R /XYZ 71.731 98.66 null] +1378 0 obj << +/D [2489 0 R /XYZ 71.731 105.559 null] >> endobj -2484 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F57 2358 0 R /F44 1925 0 R >> +2488 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F57 2355 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2514 0 obj << -/Length 2639 +2517 0 obj << +/Length 2631 /Filter /FlateDecode >> stream -xڕko�8�����\�Q,�=�}����v1� �,f7�A���[���1�ޯ?R�l��� -TE�E�#g.��Y,E����Y�{��a��7�)L��м[�Y~��Y*�ȟ�7�@&"�g��$�f��_����w��/��u<A�m�v�,�������e���^����z��H�U�,͙b�?m�K���h�����(����[�����K�{�in7�EGN�U�٫l� �+E��s:��_�y�N��$SL�ꎀ����}ցϊ}wD�1��]g�h����X�77t�]��\�E��עn�y����l��XH�ylv� w���eV7�ɶە?����:ݲh��%.$N^4:��s/t4�� -��n�!�5�du��u�GZ�j�Fu��p��#i����q[��,��# -p&mv��#��NЋP�gY��g�OvO��#��)�NƝ�l���1�^��Z:V��2~�3<%�v^(�H��-��Y>�8��>y"�9� -Zo�m�a�hWr�<>�@H -R�^W9]?�|ة��x�x�ђ �K���y6���ѕz(5���5��)Z�ϴ�����e���3ޙk�t����w�O5`��UE�N���fu��]�.��cF]�vp�x�E�5�S�b= ,́L=!X�M���n�"h�pN$�h�)C��h8 -��Ne�vO��Bz���N=�N3;�%Q�D����Ss�d!0~����p�[��i��eIg3R�`ם����Á�~ �x�=9��ſ0�yQ4��QFT7 -� -��x�J�!��V5��4��a&1�p8���"CAs.�qI� -}ַ�E(Ɛy��Ѡ/�nQ����a���P h�Z��0���>��.8���?���ؑ�Q���]�+���!�E:� tU��[����[���c�����p��%/���U /�iщa���.�� �ԥ@���-�{�Xx�5�M���@��E�u�ʛ�Q!gܖ7x ���[�f��Q��Ptۺ�6 �,�m�X�LZ��������� �����,���LJ��Y�|/�<+]�T�<R���=T$�V��Q;MY�GCm0�zT� s��;궔]Q��"\��ї9M!$�%/�����$�X����� �Gd�|�;��� -ܩN����>�>�%�e,Hl3�3%:�"'� a���F"�Y��BB��TOZ�ń���I�:e���Ǻ�*�y*<p!�&��f�WE��y��r8�}� H'�٦�O�C��� ����VJXvPz��u��Ip���m���U��s��>?u�����;��3\�mmV;Mi�R���·�V�6��P$�h�ب� -x�8�Q ��\J��Mq����ÇO������E�b���i��7����E�tM�a[d\Yl��{�+��JA���%(� ���y�97����h����)Ԧ@Ӳn��/���?�N�껢,:p6:n��m<�6�3�MS��Lό �b-*�-�b�}j�&�?-/� -8�T9q�xӛyz�a�uCm���M�~~�2˧��Dގ\��q� {���,'������e��A}�q�~|p��'��jQ���{�M�j��������\����7��[��^b@`�ݞ��7�0�B@Q|�zt��k`�!Ws��X���0q��S��^������D���`Q�ߛ?��Ʌ2_X���dx$�=�4�\�N�˶�'aKf>��5� -���!C:|��rlr�'Q��.N�} �Rط4� �Yo唑i��]w� -�RA5��P�9:u,/��#��K�;�mW�B�B��(�,2����!G�v�"z�/�� d_ϥg���^���ǫ�Kx�5Z� G�?�Z�<�K�R����;`DQ����-�dd�"y�--�P�Lp�7�����h)*P�����Qş��Jm��ġMO]���Zu�]�TĞ ��pnF�a�ff�$����.-�� �S6�'抇j�3i^B�Z�$lxkU18i�&�c��1��3�)���*�WM8���9�����Q�낹�=�y�h�%�>3��؎ *p�&�M��T����qLG�w�K�@�$ � ���Y���]8��z���?���f_L��]{S�����rhq!jg�D��;���˪}jٻcpW�RMܛ]��vf8��UFy�/���]{h�m˚�ٷ�%��Tr�B�@D2�K_�E��'��I<]xP��il���%7ek�R�h�m+�*Z�2��=/��D�٣�?���"z��#�� �����k��{ױ�c�G$��$?��X�v��"�&��@��i �57�З$|����튢L��i���+|/8za��~��/h�%� ̚���(���k\��l;�Wea;H��r�MZ�׆V��� "�^\v�6d�y��� -�_0�c���yYS֙z�� >~q���Ќ������'�}B�E�i=�Ϫj����y[�ug���P��d?�dlxBL��x�i��\�1�p-�ޯ��c`}U��N���^�ȝ�H�h7��o���%/,�4(�)p������f����0gݬ?ݾ[ݬ���v�f}����2��Ӳ�b�����F��:1�_~<�ļ��K���K�/-q5endstream +xڍYmo�8��_a���ČDI���}H{�nM7@��.��A��XY��n��ђ%;]���pfH�<3d���,�T��G'J/�Y�{��a��+O8²�Y��y���D%K���/VI4�|��P�V��8o��5�|�C�ъ�ʦM�"/���{�_^������iuT��Jb�E�,��0�ϼ@��-�t#Y�U�Ƞ(v�Ҍ�_>���2�~q�l�]��fߥOS�u�{�S�OܪJ�ޥs�ɘ&%������i��n ��(����QQ���kڝ)�F���HO%a(�� +���<Y�gS�wi^�]��Nh�4w����̅/���U>w�嚻��8p�k����u]��{����m��뛛��0�9jLġ�z���� 0y,0oxZ�Q�Jot<̵�ty�.r���i�1���:`U�z�P!X&V�� +���k�}TS�Ѧh�V�a�L�I^ֵ�Ca�Q�-S�|�gr� l5�c�ÔU���)�=ܪ8u�k9b�RT�Co�yY��c�Jз�fު� + 0 :q�(#o��7Nٜ&'�L02�{�c=0p������D=d�Z��2��0H��W&6�i���!o�U�2,�Eq��ef����a���8!�?W��Yr��z|�u�)zσ��zp��꒩J��*d�k(Y5���:�B9l>�MU?A�k�-+j�Ԥ���9�b�M����!�qdg5,�'��c'�w(j��;2�|�wi�m}�g ��4Y����byϐi��9� V6Fu?\�(Hfa�p��[�ŀ�Q}�]cA���&� ��7V�� +�uˋ�GbP�9D�#����P���m���?�i��A�����ñ����T���r���z����~o�k�^�Uk�)+��� ���A�d�d8Q���)M��Ҙ�1�卅@�FrA��:�o�s0��ܣ��2�s9!���]�iH�"J�A:B3�3�C�X����5��m�mE�ly�^�����2�0L�w+o��vn?�����[6�.�iĶj��V�{��Wޫ�͋�בM�E�a��Ap"lxN��6u�cJ�rSuu��E�بҴ7�c@<57��O7�΄ǖ*#����E���q��m��M��!����f�+L�M/��N�@� +��(XZ��)j +L���Dbo=E�� x�T@�����qяk= 6�4 �a�fO)�"m?Tbat�o�ulP�ۻ��r���������1(�@!G�fXl�,'ܾ���7<~�|%b0Q#��E�#:(�A@�KX]�O�6#��s�u�d�l{z�d�s�yx�@�`J�#�9(�=B}@]�Y��*�[����Y�&7�� ��@���c��D-�Q��L�KG�>~|����=l���SV���E�4u�m�./]/Ւ��Z�9����!$�P||5��]�e<,� �,����{���&�G��*G����9���M�i�()UP�$��I��NYu���L���H�r�f^FE2��1�<oe6]�L��X�R̡H�^Y���2��U[c��P�q=V�mR�"m��9L�a��qؚZ�QHr:�˃�oSDQF�l�튎��9a݄�kEI�d���w��� ���SS�BL�(�5S��5�n� ���E��K�8��3��I��~�nP�d�|��@0��]�f" +�F�F�Xw��;�x*�+�k���[�?�.ʹl^�<�:�b�~#��])�u?ǫ%�L�];*��`ӏ< +y>B�/0�6O�xw� +83<%qI,S�^1�8���Fؔ�����ܵ�����G�7��*���(PKo�C_�U��;8I� �{�DT���^r[4hA��M�^�n���<.ePy3-��T��Q��{��'�����Q���L@��5�뽨k���0?��B����)B�A�O�!8��K��}|���Q�1|�\x��|�dw1���+�Vܳ�2��ɪ��lpO�2Dίe��dl��c�'+k�#"ЁY;8.��V�OD���4����X�� +�ӫuQe��dy��]����/�;6�䁴W����Cx��P�^|E�n��;����Ag��Г��0�����拥�{�(�Zܽ���檨�'lX���b��=&@:�}c���{z�ya���41�.}2�*�����ӗ{�Y�����߮~��E;z�����qd��t�U;P���d + +���D}2`c��+���hh��n��E�����7o�&���<T}��#V���S;�1�T��s�ߣ2eb�-c�����+���s���X�[㍙=�R��Ϛ�,*����&ǔ d&`��Ԅ�G7/.��!�~�n��*�B���[���5b�9=��f4'���oe{��w�#>�R��^ӹoeÞ����pkN!�6��y�0M��$H��ǼLe�\]p7/��N�%w�\r7�2�m� +��rF�EW�)�g\m������k�Z���� ��V�tյ{|�A6~jA +N�1L�O��H�{;�6�Ee9��3w}��?��@��Й�k꺪�C&����F~���i~�L��J~Y�����U�>XL����%' b{/�H�2����Am�Г�w�_�SM���V�endstream endobj -2513 0 obj << +2516 0 obj << /Type /Page -/Contents 2514 0 R -/Resources 2512 0 R +/Contents 2517 0 R +/Resources 2515 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2417 0 R -/Annots [ 2522 0 R 2529 0 R ] +/Parent 2418 0 R +/Annots [ 2523 0 R 2530 0 R ] >> endobj -2522 0 obj << +2523 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [356.749 403.004 401.58 411.915] +/Rect [356.749 575.373 401.58 584.284] /Subtype /Link /A << /S /GoTo /D (parameters) >> >> endobj -2529 0 obj << +2530 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [244.482 265.963 269.647 272.837] +/Rect [244.482 438.332 269.647 445.206] /Subtype /Link /A << /S /GoTo /D (gloss-cpan) >> >> endobj -2515 0 obj << -/D [2513 0 R /XYZ 71.731 729.265 null] ->> endobj -2516 0 obj << -/D [2513 0 R /XYZ 317.417 685.031 null] ->> endobj -1378 0 obj << -/D [2513 0 R /XYZ 71.731 657.136 null] +2518 0 obj << +/D [2516 0 R /XYZ 71.731 729.265 null] >> endobj 238 0 obj << -/D [2513 0 R /XYZ 197.318 621.669 null] +/D [2516 0 R /XYZ 177.791 707.841 null] >> endobj -2517 0 obj << -/D [2513 0 R /XYZ 71.731 613.031 null] +2519 0 obj << +/D [2516 0 R /XYZ 71.731 700.488 null] >> endobj 1379 0 obj << -/D [2513 0 R /XYZ 71.731 573.405 null] +/D [2516 0 R /XYZ 71.731 685.559 null] >> endobj 242 0 obj << -/D [2513 0 R /XYZ 177.791 535.472 null] ->> endobj -2518 0 obj << -/D [2513 0 R /XYZ 71.731 528.12 null] ->> endobj -1380 0 obj << -/D [2513 0 R /XYZ 71.731 513.191 null] ->> endobj -246 0 obj << -/D [2513 0 R /XYZ 168.088 480.877 null] ->> endobj -2519 0 obj << -/D [2513 0 R /XYZ 71.731 474.75 null] +/D [2516 0 R /XYZ 168.088 653.246 null] >> endobj 2520 0 obj << -/D [2513 0 R /XYZ 187.795 461.948 null] +/D [2516 0 R /XYZ 71.731 647.119 null] >> endobj 2521 0 obj << -/D [2513 0 R /XYZ 71.731 441.858 null] +/D [2516 0 R /XYZ 187.795 634.317 null] >> endobj -1381 0 obj << -/D [2513 0 R /XYZ 71.731 398.022 null] +2522 0 obj << +/D [2516 0 R /XYZ 71.731 614.227 null] >> endobj -250 0 obj << -/D [2513 0 R /XYZ 331.166 364.712 null] +1380 0 obj << +/D [2516 0 R /XYZ 71.731 570.391 null] >> endobj -2523 0 obj << -/D [2513 0 R /XYZ 71.731 358.585 null] +246 0 obj << +/D [2516 0 R /XYZ 331.166 537.081 null] >> endobj 2524 0 obj << -/D [2513 0 R /XYZ 71.731 338.645 null] +/D [2516 0 R /XYZ 71.731 530.954 null] >> endobj 2525 0 obj << -/D [2513 0 R /XYZ 220.441 314.899 null] +/D [2516 0 R /XYZ 71.731 511.014 null] >> endobj 2526 0 obj << -/D [2513 0 R /XYZ 71.731 307.761 null] +/D [2516 0 R /XYZ 220.441 487.268 null] >> endobj 2527 0 obj << -/D [2513 0 R /XYZ 455.258 296.966 null] +/D [2516 0 R /XYZ 71.731 480.13 null] >> endobj 2528 0 obj << -/D [2513 0 R /XYZ 71.731 289.828 null] +/D [2516 0 R /XYZ 455.258 469.335 null] >> endobj -2530 0 obj << -/D [2513 0 R /XYZ 71.731 265.963 null] +2529 0 obj << +/D [2516 0 R /XYZ 71.731 462.197 null] >> endobj 2531 0 obj << -/D [2513 0 R /XYZ 71.731 251.019 null] +/D [2516 0 R /XYZ 71.731 438.332 null] >> endobj 2532 0 obj << -/D [2513 0 R /XYZ 121.379 227.826 null] +/D [2516 0 R /XYZ 71.731 423.388 null] >> endobj 2533 0 obj << -/D [2513 0 R /XYZ 101.884 216.169 null] +/D [2516 0 R /XYZ 121.379 400.194 null] >> endobj 2534 0 obj << -/D [2513 0 R /XYZ 156.232 216.169 null] +/D [2516 0 R /XYZ 101.884 388.538 null] >> endobj 2535 0 obj << -/D [2513 0 R /XYZ 254.126 216.169 null] +/D [2516 0 R /XYZ 156.232 388.538 null] >> endobj 2536 0 obj << -/D [2513 0 R /XYZ 313.316 216.169 null] +/D [2516 0 R /XYZ 254.126 388.538 null] >> endobj 2537 0 obj << -/D [2513 0 R /XYZ 138.317 204.513 null] +/D [2516 0 R /XYZ 313.316 388.538 null] >> endobj 2538 0 obj << -/D [2513 0 R /XYZ 239.635 204.513 null] +/D [2516 0 R /XYZ 138.317 376.882 null] >> endobj 2539 0 obj << -/D [2513 0 R /XYZ 71.731 176.618 null] +/D [2516 0 R /XYZ 239.635 376.882 null] >> endobj 2540 0 obj << -/D [2513 0 R /XYZ 175.156 163.666 null] +/D [2516 0 R /XYZ 71.731 348.987 null] >> endobj 2541 0 obj << -/D [2513 0 R /XYZ 71.731 125.644 null] +/D [2516 0 R /XYZ 175.156 336.035 null] >> endobj -2512 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R /F27 1132 0 R /F60 2543 0 R >> -/ProcSet [ /PDF /Text ] +2542 0 obj << +/D [2516 0 R /XYZ 71.731 298.013 null] +>> endobj +2545 0 obj << +/D [2516 0 R /XYZ 71.731 241.888 null] +>> endobj +2546 0 obj << +/D [2516 0 R /XYZ 71.731 231.926 null] >> endobj 2547 0 obj << -/Length 1756 +/D [2516 0 R /XYZ 71.731 193.903 null] +>> endobj +2548 0 obj << +/D [2516 0 R /XYZ 390.582 178.127 null] +>> endobj +1381 0 obj << +/D [2516 0 R /XYZ 71.731 148.075 null] +>> endobj +2515 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F61 2544 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2552 0 obj << +/Length 2160 /Filter /FlateDecode >> stream -xڵ�n�6��X �j��禷M�"N[d��{�%zW�V�PT��;�!%��v����9/._D�㋜�<��X1���jw-6p��w�C g8o�����b�VY�X�-^�U��c��T,�����ro�^�"���{���lۦ�������i�r�����֣�4�٪�����*�.@�,Cż}Q��$���Z�Y��^~7-iedo&�2�;hHq����,����Y�71� g�D�B�Y��s5����ɱ��aY*O�g/n�c��Ƌ;b㤉s��%�8'��;j�HN4��A�bY�h�ނ���R��A��<��ʮ��D ��j)��kUY�xV���A�/� h[�q�īFF���xh�����L���h�TF:�n�H��w|�#�j���^7�'��[��< -���n���ҏ�, \�X����C����5�'��JK3�֏j��Q#�%��ͦ�JGd-gO���.��hQ�6�ˁ�KqFԓa�(�E���I��K�>��QV���im/�4�� ܠ� �V������� -�Ī����*e勵$j��U�@%y$Ѝ�! � �&��0¯�Z���p�{mC�/�'C����7o~A�R����v5t�i��|��}�#&��\3�X"^��*9�zB�����5Fo^������mK.�9n��Dĸ�z���sU�ǖ h^�CmS�3�@�X-?�Q5�0m;�V{��wmsk����)M��r+�*�e�7pa��q��g����[�s���]�"�ȃ��w���j(brO����;@����9u#4���ᙦm�/((��d�ڀ�;ն�WA���G�Pƭ#)��A�\�ȇ�==� -�uV��mݵ��6{o_Kۉ�"f")��h�`�����{�{{�oO��,]y�x�1�;5V�ݾ-W5�[5���C3\J�0]�~�7"��꩸X�ґ���e�6��W��JݹbM�K�#��$k6�1��z�YB������췯f�i��j���N"{��p��nO�;�_���^mKm�7����W��.�v�T۟�j<�Y'Ө&�h�P���ba�/!�Ci�'�s�J_����S ڣ� :ӡ�H{�EK?ӣ��mE8x(������ia�8�ѥ���N6��� ���ޔE#k�Rי~�p��V7Qu�5f�R��N�å���B>(#�3}0B#��Q -g��!��@-�����Yp�F7l-ZD]G�������� ���E`�%�%�s;�Q=8�v*@[V��%�W��{���-lUozǓ� ��Ѵ���o��r��P�$�؎� �8�v�p���C�@��϶��Z��n}��k �Ǿ��Y�� -]a��x)�6Z_:�a"�(����- �Y�r<�j�l �z�<��<�:�"���.c=N8C:I�cF诏��q�C��5���g� -�8� -OLxšp|�&�0I#��3�l��X)�k��[uc�{��>l��?�����C����sv6SO�FwRˮ���"�4YͨE�4��#�A}6�ظ',�py�����/%�lb�r71d�#��<7{��b�6�ዹ�hiKHf'�o��j�C�* ����#d�x�š3�w�?bЇJ�j%��d��q<�!ϩ�>M�[?���J���w�0�]���L^�sP�\��� -2�ȣh�E�N�K�v��c����fl��w���tR��?���PN�fK��3�q&����T�?���^endstream +xڵ]�ܶ��~�}���剢>�� �.b_��tw��V\�R6�_��Pڏ�0��3Ù�p>%W!���L�L�OT�(MV��.\���ӝd� �l�h��{�Q�U!�T���X��V��D�D���c�CSF=�7Q���7�ˮk����v�k��\~����De��իzy��"���Pq������c�4�`Q�,~i������۲���Y<!�̲��j�BF�cG�c���L���������֖�z%�ok�z8���L��kڕk��6��5}�Ѯk���s[3�O���F\���v$�u+��h��C0��{[�5^TF�H�^Ox6ʂɺwSQ�'�<*Z̓(���i@��}{kFx����ƶk��:MAb�lI��Lؚ�3h��,�jBUf������#y`3u5�r�ly�^<���Ύ�Oڽl�ڀ�־'8Ƚ��&W"�s�E�x�]=[=Nq�n �&")�A���i�<t%��ەOfbD��5N�كڭ�st9��8�����&xIG]�tY���Z�f�+��_~�\��Pt%]6G��Ȝ5�f�H�T�M�m�B�I�E��S$y1;:�& ����m�'�����g6�'�7s��r�4��Oc��l�Gc:K�R���Y&��OJF/h9QB�$5�oQ�<��ۛ���N��,ι7�����rF�r8�e�+6����:F/I��]�ӑ����"M��.#\�/��{x��� �Aiz�z(M�� K����D��ȹ6%\����Ϳi�)L����#Ә��0\NK,ygFmYs��� +��h�"��1�z��Eѯ�=Lϑ��,#,-�&�0�=���ot���AJK{w#��=�uYe T=1G�V��� .!�����s�O�h�-�wB������f�!��r����]���o�"T ˂c���Y�|����Y�p7�\wqs�>@BO�v���p���oFByу�����Ԕ#��M9#3�s ?�8�!OïL�*^XO�YhnB� 냮��f�~�����5ɞ�5�I�]~!�SF�u��&�Ȓ���^Bv���J1\kl��uo�z.���kG}����]t�ǥf�.Fݒ=���A��x�<Ӹ�Y��5�M��p��b�ǰI��G��Ӈ_��0?�Ҍ{�����R��!�,�a�"~1�-]�H]o��5���GJ��|�'b�u�©i�T��C���A���!��i�l�G��ޱz`�z^��x�pJ���� +��?f?;Ƞ�*�V��>UA,��ʛ�Фӎ]��d.^�d�O-�AOh����� �C\��Эg�JA��at�h�r��s��!�~����;$�a�SY����^nЫ�݇�_gNh��^�Ƅ{�&��`.��+Ӝ +%�t��qJO��u�Eȕ��q�4.��Hb���T�c�m�"���B3�F��Ѱ���`�uzo�f�y�N���$n��_�,H��r��R��(���߽{�UW�0?���@�s�Ǟ��^:s����Kh�\�D�F(@�\a_B a~��� n@�rp!䒥,2��=:kS�W����\�URpJBK$�1S� ��C��C��/��Ǧ��,t��v�B����Ӏ�6h�cO�r��ӳ��vǴ$m�����9ŧ��]�oG]?�L�Zڎ�"*�!`��A:l01� ��H��F���Ɏx����3�Lh>�2� �ÞI�}۷vd�&9R�8W�u8p�$�6��Ɯ�-w �<H���=����ɂ51�z�i�B@)��*�4<��-Zʋc[v�4���^D�w��u�c̃Y6\wa��]R��#� ݀r5����u�� �?���^��'����@�C qQg����������o��,Q�f��� +H,kb���/�;��5k�����}u�r�5}�*�\������x�"�(p(I�fB�)�t��8~�y?#�ң��Z?(����<��Eė9����ol��a�������c���8��S��n��羖�5��èc�������t�B�Ch�G�_jj�>+H�����B��뇭1��x��I��eXB�����q2���}Z� />�|t�o��_�>�"�٫���O�PSEy&�ɢ�}N����Qendstream endobj -2546 0 obj << +2551 0 obj << /Type /Page -/Contents 2547 0 R -/Resources 2545 0 R +/Contents 2552 0 R +/Resources 2550 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2417 0 R -/Annots [ 2570 0 R ] +/Parent 2418 0 R +/Annots [ 2571 0 R ] >> endobj -2570 0 obj << +2571 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [474.611 260.395 519.716 269.306] +/Rect [474.611 414.233 519.716 423.144] /Subtype /Link /A << /S /GoTo /D (installation) >> >> endobj -2548 0 obj << -/D [2546 0 R /XYZ 71.731 729.265 null] ->> endobj -1386 0 obj << -/D [2546 0 R /XYZ 71.731 741.22 null] ->> endobj -2549 0 obj << -/D [2546 0 R /XYZ 71.731 685.031 null] ->> endobj -2550 0 obj << -/D [2546 0 R /XYZ 71.731 675.068 null] ->> endobj -2551 0 obj << -/D [2546 0 R /XYZ 71.731 637.046 null] ->> endobj -2552 0 obj << -/D [2546 0 R /XYZ 390.582 621.27 null] ->> endobj -1382 0 obj << -/D [2546 0 R /XYZ 71.731 591.218 null] ->> endobj -254 0 obj << -/D [2546 0 R /XYZ 245.404 554.002 null] ->> endobj 2553 0 obj << -/D [2546 0 R /XYZ 71.731 546.65 null] +/D [2551 0 R /XYZ 71.731 729.265 null] +>> endobj +250 0 obj << +/D [2551 0 R /XYZ 245.404 707.841 null] >> endobj 2554 0 obj << -/D [2546 0 R /XYZ 125.246 520.927 null] +/D [2551 0 R /XYZ 71.731 700.488 null] >> endobj 2555 0 obj << -/D [2546 0 R /XYZ 71.731 507.975 null] +/D [2551 0 R /XYZ 125.246 674.765 null] >> endobj 2556 0 obj << -/D [2546 0 R /XYZ 71.731 495.856 null] +/D [2551 0 R /XYZ 71.731 661.813 null] >> endobj 2557 0 obj << -/D [2546 0 R /XYZ 71.731 495.856 null] +/D [2551 0 R /XYZ 71.731 649.694 null] >> endobj 2558 0 obj << -/D [2546 0 R /XYZ 101.32 486.356 null] +/D [2551 0 R /XYZ 71.731 649.694 null] >> endobj 2559 0 obj << -/D [2546 0 R /XYZ 71.731 485.141 null] +/D [2551 0 R /XYZ 101.32 640.195 null] >> endobj 2560 0 obj << -/D [2546 0 R /XYZ 101.32 474.7 null] +/D [2551 0 R /XYZ 71.731 638.98 null] >> endobj 2561 0 obj << -/D [2546 0 R /XYZ 71.731 473.485 null] +/D [2551 0 R /XYZ 101.32 628.538 null] >> endobj 2562 0 obj << -/D [2546 0 R /XYZ 101.32 463.044 null] +/D [2551 0 R /XYZ 71.731 627.323 null] >> endobj 2563 0 obj << -/D [2546 0 R /XYZ 71.731 461.829 null] +/D [2551 0 R /XYZ 101.32 616.882 null] >> endobj 2564 0 obj << -/D [2546 0 R /XYZ 101.32 451.387 null] +/D [2551 0 R /XYZ 71.731 615.667 null] >> endobj 2565 0 obj << -/D [2546 0 R /XYZ 71.731 450.172 null] +/D [2551 0 R /XYZ 101.32 605.226 null] >> endobj 2566 0 obj << -/D [2546 0 R /XYZ 101.32 439.731 null] +/D [2551 0 R /XYZ 71.731 604.011 null] >> endobj 2567 0 obj << -/D [2546 0 R /XYZ 71.731 428.075 null] +/D [2551 0 R /XYZ 101.32 593.569 null] >> endobj 2568 0 obj << -/D [2546 0 R /XYZ 71.731 418.112 null] +/D [2551 0 R /XYZ 71.731 581.913 null] +>> endobj +2569 0 obj << +/D [2551 0 R /XYZ 71.731 571.95 null] +>> endobj +1382 0 obj << +/D [2551 0 R /XYZ 71.731 531.936 null] +>> endobj +254 0 obj << +/D [2551 0 R /XYZ 381.295 488.838 null] >> endobj 1383 0 obj << -/D [2546 0 R /XYZ 71.731 378.097 null] +/D [2551 0 R /XYZ 71.731 485.275 null] >> endobj 258 0 obj << -/D [2546 0 R /XYZ 381.295 335 null] +/D [2551 0 R /XYZ 195.006 449.466 null] +>> endobj +2570 0 obj << +/D [2551 0 R /XYZ 71.731 442.113 null] >> endobj 1384 0 obj << -/D [2546 0 R /XYZ 71.731 331.436 null] +/D [2551 0 R /XYZ 71.731 396.3 null] >> endobj 262 0 obj << -/D [2546 0 R /XYZ 195.006 295.627 null] +/D [2551 0 R /XYZ 161.035 359.085 null] >> endobj -2569 0 obj << -/D [2546 0 R /XYZ 71.731 288.275 null] +2572 0 obj << +/D [2551 0 R /XYZ 71.731 348.942 null] +>> endobj +2573 0 obj << +/D [2551 0 R /XYZ 71.731 323.852 null] +>> endobj +2574 0 obj << +/D [2551 0 R /XYZ 118.555 285.288 null] +>> endobj +2575 0 obj << +/D [2551 0 R /XYZ 281.083 276.823 null] +>> endobj +2576 0 obj << +/D [2551 0 R /XYZ 252.403 241.855 null] +>> endobj +2577 0 obj << +/D [2551 0 R /XYZ 118.555 234.878 null] >> endobj 1385 0 obj << -/D [2546 0 R /XYZ 71.731 242.462 null] +/D [2551 0 R /XYZ 71.731 201.711 null] >> endobj 266 0 obj << -/D [2546 0 R /XYZ 161.035 205.246 null] +/D [2551 0 R /XYZ 282.307 173.064 null] >> endobj -2571 0 obj << -/D [2546 0 R /XYZ 71.731 195.104 null] +2578 0 obj << +/D [2551 0 R /XYZ 71.731 170.404 null] >> endobj -2572 0 obj << -/D [2546 0 R /XYZ 71.731 170.014 null] +270 0 obj << +/D [2551 0 R /XYZ 268.211 142.678 null] >> endobj -2545 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F60 2543 0 R /F27 1132 0 R /F23 1125 0 R /F32 1139 0 R /F57 2358 0 R >> +2579 0 obj << +/D [2551 0 R /XYZ 71.731 135.48 null] +>> endobj +2580 0 obj << +/D [2551 0 R /XYZ 71.731 112.626 null] +>> endobj +2550 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F57 2355 0 R /F61 2544 0 R /F44 1922 0 R /F48 1934 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2575 0 obj << -/Length 1741 +2583 0 obj << +/Length 1357 /Filter /FlateDecode >> stream -xڽX�o�6�_�����E}>�� �"�ֵ��mH�B�h[�$����wǣd;vS�k�����~G�;>��N�Y"�d,�#gQO|g�wn9<���\�'��B8�b�̗N�S�%N"�F�3/�ܫu�j�M� �݀���u^Ue������kYU��~����|T��e�xѮ0Y�g���Ey�L��}���_��o��N�;�D�9�e�p:�,'����(d��<xIO�x�%��Ű�~0*�S!a��>g"J�8KX��&TLC�ͻ���� C��O!���E�b��M9Q��'D���T��_��Χ��>M�ȕDn;��{��{�ѐ<a�,Zѳ��86-Y����8`Q���h»�����* �<-�߭˾/U3h����X�:�{9�ˈ�zI��6?O�X:˾����ig;�+l�T�/�0�Y����n�Λ�DSb:ʌ2�%״e5���`� "���;ԚkK�0���\��P���W�̋mVj���,��P�mC���WQTc�<�+�Kڦw��^�}�nlܭʺԲ�5� ��-�������D���Ug���l��c*h��8�_��C�-��7�P��lZ��ײ�,E]6e�mP�eٚ��� -�=�ޝ�jXC���IJƅ)m\�Q�;��3��$t�X6�w�B�4�~�x�Y��%$s����X0[�q -��.'\x]���ixFQ��-�&���sjpLB���Dz��aɒvMV� ���Ӭ���]�����+��� kӛҀ�6�GLש� :���?`#�y*զ'�(���������e{&�Ԕ&yZ�S���|P���@��w(|� -L�a��ir88X� 8EX%v�FI�^Y�8#�o6MC�^��`���~���C��1D�:s(u�;_ێ���Z�v=�2�|?Xml`[�R�Ua�!9R�aL�=��{H/b!���(��[��McH�Y�F��sGp��5��[[����``7��|���:[�ZΖJ��k[\�Y�O^���z�fY�RU�BL� -v{��9���9u�]��T��Q��<A$c_�&��� -�'���Z<J������j-��3�Z��W���&�8����T�� �dwN'�+�t&Z8!M���nV�G -��x��K��\�I��:�R��G�PϨn��[��<>��v�A`9�M�4�訛�����jSV���\��)wyC��ܘA^E�#6s*g|�P�C�6� -=���� ��� �R�Ҋ�%l�JMOs�0�7o�^�I�4H��ӶQ��t~����p��gq6p_�X��Fc(bdƋ>I�I�BSO�Զ<����������V.�%]x�ݎ�0��-3����4$��n,_n�-�� B���zzP: �X���33�Nb���E0��#�ף�4wT�ۈA;�x�2�sy3\����"��g0Xݓ [G[�8x�U��*���f6M ʼn\XH�; -0@�\�z(�w�DQ��8H�Blֈ����Z Heo��� �E�b�c�`�&|�E�Q�����\��8�Ʌ$qo%}O�wB��N����Ï��z֩U��.������,k�a���}c���!8C�*_ȋ����c[�˼*�J2`�����G������=�~b�9�{b�i6̀�O��|8qP���m����iP�A4ܷ��2hl��s�~VjE.�Ćϥ�ˤ���)KA�Kٳ��)���D-�)%�?o�j�f��nendstream +xڵWmo�6��_a� -��^�C�E�5�Z���"�1QItE:���w䑲{݀a��<<>''���E���V$�٢�/��=켾H�F�T�#��������T9]�,)IU, +�����U�1���[��0JY��7��u��W�������v������тT%�f\^�40��h����KB���ֺn��|��=_��\��~FI��t&0% �Ya��l>s�D]�/�Ro�ٟ������2.��RB��#�������3������3�w���*�ټ��h=��w��z�?Y�9�|�Nޟ�$E`�\R��֢�����sp�*+�VXF� +�����$Ė`Q� G�z���Q� +�`':���\o�3�3� �Ŵ�$�ΔI�� +8��p�v��ןQ��q��F)���ƁX��ޛ9<����EIK��W�[�G�7(�{��՛�PQq�bN��2Fʲ��LN�H�z�CP�$���%��#�PG���愕9����%x�#���f���i��4;]�u\]���F���0כ�d�Xz�z�NA��9=��+r�Mp�1�K�q +>q"�3�$��<;��:�(� ��A�o� W>r�R9��9%0��c����7c�,l#.��a�(U8b���^i��E�"H�"l���3�,x.q�\걽8����j19sFܭ�B�k��w(�CB�{8�p�!r��C(Y9{�Խ��x2� �)|E�� G���� +�?��멑lNB�s���~�����*��ؓ +3��z���'�0gi�5.`E���0l��ᗳ��8�Ƽ�Т��W�L7f����.X����KrT�qa;&b/���������w�mjzs��x|rO�S{w +j�Mӌ�vd�r�c�~Rim�{_a���{���N +��8��W��2�<��!l�S�S�6x��rJZ���mh�L�a��ז8 +7� �g�m<sk��T4=D��ɨc���_ܬN3��I_M���c/����= ��~'(�b�������Fӂ�=��*'��{ M#w��ljO���s�'*������'��]��P ��B�iN�c�����X&;h������{>Ms�Ĵ#a{6��j��nb5����pP���:B"�<wc?-��^��k�yn¹udoU̧R�-(=�^��8��n�)�~ڲ���>~��*9�o���\�g�W�G�Se���Q�J8�FBޛy���فe���x���֩�|�� o�ю!� ���������l>S�.;�65�[��w��������֯���ɏ)���ވ�m��~ �z�Φ�endstream endobj -2574 0 obj << +2582 0 obj << /Type /Page -/Contents 2575 0 R -/Resources 2573 0 R +/Contents 2583 0 R +/Resources 2581 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2594 0 R +/Parent 2603 0 R >> endobj -2576 0 obj << -/D [2574 0 R /XYZ 71.731 729.265 null] +2584 0 obj << +/D [2582 0 R /XYZ 71.731 729.265 null] >> endobj -2577 0 obj << -/D [2574 0 R /XYZ 118.555 689.705 null] +2585 0 obj << +/D [2582 0 R /XYZ 71.731 523.537 null] >> endobj -2578 0 obj << -/D [2574 0 R /XYZ 281.083 681.241 null] +274 0 obj << +/D [2582 0 R /XYZ 228.441 490.66 null] >> endobj -2579 0 obj << -/D [2574 0 R /XYZ 252.403 646.272 null] +2586 0 obj << +/D [2582 0 R /XYZ 71.731 485.475 null] >> endobj -2580 0 obj << -/D [2574 0 R /XYZ 118.555 639.295 null] +2587 0 obj << +/D [2582 0 R /XYZ 427.619 472.727 null] >> endobj -270 0 obj << -/D [2574 0 R /XYZ 282.307 577.481 null] +2588 0 obj << +/D [2582 0 R /XYZ 387.295 459.776 null] >> endobj -2581 0 obj << -/D [2574 0 R /XYZ 71.731 574.821 null] ->> endobj -274 0 obj << -/D [2574 0 R /XYZ 268.211 547.095 null] ->> endobj -2582 0 obj << -/D [2574 0 R /XYZ 71.731 539.897 null] ->> endobj -2583 0 obj << -/D [2574 0 R /XYZ 71.731 517.043 null] ->> endobj -2584 0 obj << -/D [2574 0 R /XYZ 71.731 311.08 null] +2589 0 obj << +/D [2582 0 R /XYZ 71.731 428.792 null] >> endobj 278 0 obj << -/D [2574 0 R /XYZ 228.441 278.204 null] ->> endobj -2585 0 obj << -/D [2574 0 R /XYZ 71.731 273.018 null] ->> endobj -2586 0 obj << -/D [2574 0 R /XYZ 427.619 260.271 null] ->> endobj -2587 0 obj << -/D [2574 0 R /XYZ 387.295 247.319 null] ->> endobj -2588 0 obj << -/D [2574 0 R /XYZ 71.731 216.336 null] ->> endobj -282 0 obj << -/D [2574 0 R /XYZ 199.549 183.559 null] ->> endobj -2589 0 obj << -/D [2574 0 R /XYZ 71.731 176.361 null] +/D [2582 0 R /XYZ 199.549 396.015 null] >> endobj 2590 0 obj << -/D [2574 0 R /XYZ 71.731 153.506 null] +/D [2582 0 R /XYZ 71.731 388.817 null] >> endobj 2591 0 obj << -/D [2574 0 R /XYZ 147.048 144.007 null] +/D [2582 0 R /XYZ 71.731 365.963 null] >> endobj 2592 0 obj << -/D [2574 0 R /XYZ 147.048 132.351 null] +/D [2582 0 R /XYZ 147.048 356.463 null] >> endobj 2593 0 obj << -/D [2574 0 R /XYZ 71.731 110.732 null] +/D [2582 0 R /XYZ 147.048 344.807 null] >> endobj -2573 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F44 1925 0 R /F48 1937 0 R /F27 1132 0 R /F35 1463 0 R /F57 2358 0 R >> -/ProcSet [ /PDF /Text ] +2594 0 obj << +/D [2582 0 R /XYZ 71.731 323.188 null] +>> endobj +2595 0 obj << +/D [2582 0 R /XYZ 71.731 300.174 null] >> endobj -2597 0 obj << -/Length 1980 -/Filter /FlateDecode ->> -stream -xڭk������ -&(18��|�@?8v$h�Ns@Z�A�#W"k�+�ԝ���I�tNA!;�;;;v<�i'�* `�3�ǑS�W����﮴`�e}������� p2�Łs�uB��,q��Wi�;�寫�U�M���[����a̛��v<���T7M��v���_n�K� QY�._�%c��*/A�t�(/L��KU���]>T�7�F `fq�����ZŰ�HC�5�j�Ç�]Ǟ�z��d�y�D*Љ�B%�^mY��[��l]�B�%O��0�O���A�ƺ5h�f�P$lיb¶<�2�������d���O3 5����^��^J��@���7}[Cm���jܡ�A�:��$T�ڹ�*��k� ���d(�WY��,+\����?��A䝡�(졓IE�С�j�"��RƇz�dg������q�j>X�A�|�ՏU�1�7v4/|i��#��jYM�p5��1p�4uƔ!�8�c�kT��#���iI�89�>���l��[)^>���;L��@8ޟ��k��hZAq�zU�uWc�jP�h�s.��k�-2���as�L�3}"�a�+���;WG�k^�a���m7�w<1݈h8���|�XZ��rx(x��ɃT+S�>�3��ve��~$� S�9��0IZoI!ޙ*��T�3��d�ЉO��@��p��o�SB�������←L�$s�ʲ�鍳���꧙��ʇ�|V�.H�'f֑�rٔB!t��;� -�ԉ �"��K�a^�Z�P<H��'H��0@�y�Goq���f���Q$���`����LXc�0\?ZM�0���ʵ䂲P���f�d��Mтt'�Ɲ�q�|�����Ř� ��0���Qp I�(�i�.:!�Җ�o��+!��;�]w<��m��5y4���I��L*�αNU�;�m���<����HĘe�����CU�r=O�^s�^|qQ����9q�?��`3�1�Kx<�N��S�>'�(�A�<�n��A���P��o.�,h�����?y��R�^�2���coZ�y�'M�fQ���NPR�:�.m���ӕ�W9�� ʙw����{S6-������T���%AJ�0��ơ�fg���3E�lpG�U�sas�=��T���i,���\�۶3��H����H�?�����5���|�/,�|[��}�� �X�~���-��NiN�P�h/���7:{N���@r`�Y����f�4 -$~� -���f� s��I�>]\~N�Y�R��k?��2��;���Q�LEZC'�� U9!6wV�PZ��<����o!�+��� .Xួ�z� �/�߉0sc�|�ɣ�bگm��w�^�Z��fߛm�~��l�%��?�����/x\VF3�{Ȉ�KD<�ʙ|wy弥�㧒8O~���q�4�hJ�z�E�0˺��폼�f�����8���?���iq���7w��Q�o�t�!}=�������bw"1?(�hlA�v`\����1���4;KgДB?:\K֑"�S�ƌy=�%x�����2 �{{�.K�a�s -� ��h�C��ԣ�7;��tR:�/J�+L#��ֽ���IWQ�b�3�Uޗ䶄C�h���E��8R���OO\����^>����+OO�'JOk�i,�����'W�2チ3f�J�KuW���ʜ^�� ���D�d�>�*�*Z���6Oj͂çW��?D�=I@�y�k����f)�?�Kw��(7#)P�1��Ki�3i����t�~�Iϛ�>��0�3��z<���� -а�j7��b���*(C 2�Fr�"����9b��R$1�'0��FF\Tbl����X�da��� ��x���;ky��Y,�XtƧ{���ڿ?��A���/��S�{��~�[P.��E>T"B�#�ܗ�˛�MI5"endstream -endobj 2596 0 obj << -/Type /Page -/Contents 2597 0 R -/Resources 2595 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2594 0 R +/D [2582 0 R /XYZ 147.048 288.618 null] +>> endobj +2597 0 obj << +/D [2582 0 R /XYZ 147.048 276.961 null] >> endobj 2598 0 obj << -/D [2596 0 R /XYZ 71.731 729.265 null] +/D [2582 0 R /XYZ 71.731 255.343 null] >> endobj 2599 0 obj << -/D [2596 0 R /XYZ 71.731 718.306 null] +/D [2582 0 R /XYZ 361.161 242.391 null] >> endobj 2600 0 obj << -/D [2596 0 R /XYZ 147.048 708.344 null] +/D [2582 0 R /XYZ 71.731 227.283 null] >> endobj 2601 0 obj << -/D [2596 0 R /XYZ 147.048 696.687 null] +/D [2582 0 R /XYZ 71.731 212.339 null] >> endobj 2602 0 obj << -/D [2596 0 R /XYZ 71.731 675.068 null] ->> endobj -2603 0 obj << -/D [2596 0 R /XYZ 361.161 662.117 null] ->> endobj -2604 0 obj << -/D [2596 0 R /XYZ 71.731 647.009 null] +/D [2582 0 R /XYZ 76.712 162.889 null] >> endobj -2605 0 obj << -/D [2596 0 R /XYZ 71.731 632.065 null] +2581 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F48 1934 0 R /F27 1132 0 R /F57 2355 0 R /F32 1139 0 R /F23 1125 0 R /F44 1922 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2606 0 obj << -/D [2596 0 R /XYZ 76.712 582.615 null] +/Length 1744 +/Filter /FlateDecode +>> +stream +xڭ]o�F�ݿB�F�N� +��6݆h�a���A�ΖV}��s�a�}䑒�8m���#�x<~��t<��N"E��g#g��<g'��$S,�d1�yq3[�N&�8pn�N(S�%N�"�|�x�^���(=_������Wmo�� �/v��U]��7�g�ތ�FA"�4��\���˜��EI��4{��s +�} �����C�+H2G�,������#+�Yĩ���k<�.ӝ�XH�( �S� +/���������xRQ�� +���kzn�[4 +�a�[:`��^X�(���X�Ajo���0�ܫ�x�邥e��Z:*r�tmOH���3�Ҵ�#��]�RUKT�#���õ�ʔ�����||��yc/�jc���~�����{�:ɋ�j����t�'T!�����t���� +�pK;����� ��m��lk[{Ե���|n%��-�Z�类�Mյ|iM�}��v���jjZ:Y�� x��s�i���M�*+��OR� \��jU���k&�i����( ��IH~gt��D�� ����T��IB�O� ל(IE�E�:��D H�k4��5募 +X����C{�-:�K]�{W���V���t��%�pU�u�����hq<.��l.����q���5JdI��wSr�\��:?� +���G�N���[<�UuA�#�C�G 9"�z-����H��/a�]wu�aNߏUx�5 �LOX�l +B7����o)8����+���^k �*�wm^F��m�1��h��p9��������72����}�3Fɡt'�#�<�4f{�\� ��͗��ϱ�]-{�Z�2��&�b����c��x��;p�g?�=� ��oѪ ƨ�"���|#�� \����X�{�tu�������h[q�c�)��zZW���S�(��g��O*�%���u��i�jQ�˭V� +%|�eYv�Z���:�GX��?�CϞ�z�1�7'g(�sF�֦��A%Pr��\8�~����l�m��PN�E�� +��v��[��B�������3ɱ�5��v��j"��C��Q�3��u�%9��nXck���v۞hm!�s,d�d�K�� �����?��]2��ĵP&�ƺ#�t�qt(5����F Vxڈ ,B@�p�A��d�7]����!M�_;C�<"p����9Ѱ0���]���J3NE<VTLyp��2ׅ�[K�k������:r���ڀ���,�s���)�5��5��Z�D�iL�E��}��@���pGۊq�j�Um���68�⾂D]�I[�]��9aX�p�4� �����`��E�i��E0wtיA4Jj�w�t���c/��1c�fV�f�z9�u�#m���D���6�8�x���O��(s�r[����HP��Wv���F�/3W0C�4�Ȩ�_���{ _=X5�/�y�0�T� D9�r^�ݐ� !�\��s3�*��nӫ��<�����8،nk�C�?2YǏcĚ�v��0�Fg-�0�d�伧A +�WGъ5����籟M1/��堽ф�k��V����QX����-�>� ������kZ1Dω�z�&�Ӿ5���C��w�Ki�z�<s;0<5r��N����ch�eα@�av����y�ϯ�U����|{�=�'c���AI.��|p<q`�D�����o`��b��3+���� D�������j/���|ץ0]}�W��ɏ6�F�&6��/�s�ҿǕ�hendstream +endobj +2605 0 obj << +/Type /Page +/Contents 2606 0 R +/Resources 2604 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2603 0 R >> endobj 2607 0 obj << -/D [2596 0 R /XYZ 118.555 539.07 null] +/D [2605 0 R /XYZ 71.731 729.265 null] >> endobj -1387 0 obj << -/D [2596 0 R /XYZ 71.731 465.555 null] +2608 0 obj << +/D [2605 0 R /XYZ 118.555 684.724 null] >> endobj -286 0 obj << -/D [2596 0 R /XYZ 138.296 433.051 null] +1386 0 obj << +/D [2605 0 R /XYZ 71.731 611.209 null] >> endobj -2608 0 obj << -/D [2596 0 R /XYZ 71.731 425.699 null] +282 0 obj << +/D [2605 0 R /XYZ 138.296 578.705 null] >> endobj 2609 0 obj << -/D [2596 0 R /XYZ 71.731 387.856 null] +/D [2605 0 R /XYZ 71.731 571.353 null] >> endobj 2610 0 obj << -/D [2596 0 R /XYZ 114.77 378.356 null] +/D [2605 0 R /XYZ 71.731 533.51 null] >> endobj 2611 0 obj << -/D [2596 0 R /XYZ 114.77 366.7 null] +/D [2605 0 R /XYZ 114.77 524.01 null] >> endobj 2612 0 obj << -/D [2596 0 R /XYZ 114.77 355.044 null] +/D [2605 0 R /XYZ 114.77 512.354 null] >> endobj 2613 0 obj << -/D [2596 0 R /XYZ 114.77 343.388 null] +/D [2605 0 R /XYZ 114.77 500.698 null] >> endobj 2614 0 obj << -/D [2596 0 R /XYZ 114.77 331.731 null] +/D [2605 0 R /XYZ 114.77 489.041 null] >> endobj 2615 0 obj << -/D [2596 0 R /XYZ 114.77 320.075 null] +/D [2605 0 R /XYZ 114.77 477.385 null] >> endobj 2616 0 obj << -/D [2596 0 R /XYZ 114.77 308.419 null] +/D [2605 0 R /XYZ 114.77 465.729 null] >> endobj 2617 0 obj << -/D [2596 0 R /XYZ 114.77 296.762 null] +/D [2605 0 R /XYZ 114.77 454.072 null] >> endobj 2618 0 obj << -/D [2596 0 R /XYZ 114.77 285.106 null] +/D [2605 0 R /XYZ 114.77 442.416 null] >> endobj 2619 0 obj << -/D [2596 0 R /XYZ 114.77 273.45 null] +/D [2605 0 R /XYZ 114.77 430.76 null] >> endobj 2620 0 obj << -/D [2596 0 R /XYZ 71.731 251.831 null] +/D [2605 0 R /XYZ 114.77 419.104 null] >> endobj 2621 0 obj << -/D [2596 0 R /XYZ 307.022 238.879 null] +/D [2605 0 R /XYZ 71.731 397.485 null] >> endobj -1388 0 obj << -/D [2596 0 R /XYZ 71.731 218.79 null] +2622 0 obj << +/D [2605 0 R /XYZ 307.022 384.533 null] >> endobj -290 0 obj << -/D [2596 0 R /XYZ 200.472 181.574 null] +1387 0 obj << +/D [2605 0 R /XYZ 71.731 364.444 null] >> endobj -2622 0 obj << -/D [2596 0 R /XYZ 71.731 174.222 null] +286 0 obj << +/D [2605 0 R /XYZ 200.472 327.228 null] >> endobj -1389 0 obj << -/D [2596 0 R /XYZ 71.731 120.439 null] +2623 0 obj << +/D [2605 0 R /XYZ 71.731 319.876 null] >> endobj -2595 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F57 2358 0 R /F27 1132 0 R /F32 1139 0 R /F23 1125 0 R /F44 1925 0 R >> -/ProcSet [ /PDF /Text ] +1388 0 obj << +/D [2605 0 R /XYZ 71.731 266.093 null] +>> endobj +290 0 obj << +/D [2605 0 R /XYZ 256.412 233.779 null] >> endobj -2625 0 obj << -/Length 1528 -/Filter /FlateDecode ->> -stream -xڍW{o�6�?��0 -TbF��� N���4k� �:�E�B%��é7l�}w<R~&+���=w<�?ދ9�}��yQ؛gno'ߟqC14$������[��%,���d���%q/�=6 -��$�Z�U#���]�c4ޔu#�<+��ley.�O~8��tBC?f��Q/Ks����8gI�f�@w�� Кy,d�R<r&KI��2�+Y��lh�N6K��j�3����h��hnt�����?�NC{���J��f��q�9�R��j-�:�݊������+Yժ�h=�;�2�jNレ�s�5m��Y.S+˪a�_U�3՚��5` �f�m�n��/g�bhԖ�9����DI8��� 1�`��a�x���P,�6�OY��YG;WyN^�3SE!�� E�{#���(`a8� ��EZѩ����,��,�"D��.���s�.����4+q2r��\��]=��z.i|��~}��U"����0.�Ϊ�e�]�o�V�����0� -]�e��7o(����˴�e@ ��G#P1C��/�@��*msITF�h}��� `�;-�nh�PD!h�UC�u�8�B��t6x��6FƜ�S��xL�7,K\9KQ.���6��kE �)�κ͛=L��;��y~n8!lT��,�������N�/.+o��nЌDW���A{�����4�F0��z����qVn3l�r[d`���\��TX�P�f��6�(t���(nG��ā3���#�bc$4����r�8��颱�u��[��9ۄ�=����A6�PR���1�� - wNӥz� '|D�K{i%h�ا�mU�z -�O{�[m��Y�P�g>������5$�6:�*5S���ɳOFv�0+u%�?@Wi�����hO�"������*�CT�M����}��E��E0Ϧt����a�1�G{���q2������n>���Fs� -�~��}�������-�G=_�7P���¸B&��J<��.�茭��u��s4h�Ȳ9�{'�����9�3z�I��(���^Rx��X[� '��$�`aͳ$:�p�~O��B��Re�Y�F�E�����(SkjmyI� -�a���wQ�¸�A��D�s�>ل�Jn�IU��fӍ�2���V�]�S����F��������߽���gep��� �8q��@8����m��t��������Kz�,�,�� x�Ԯks����~*2\�,�����̄FTX!9+�^n%�rm���3�H��'*yT\�� ;�w�"/�( �<*|�m��8�������qVI�H�u8�>QzI=nb_3���l�^3���QiU�ޙ�֣w��1�bB�� ;2�G������a#{���}?�bTl��>sw��eez���>?�D ������t/��C�L -��@��Q/{���$��A��P��b�9w�b����EM`J��:q�KhZ�Z�V'�TC�?������Fl�����$G�͡��g��2|�S�X�e�endstream -endobj 2624 0 obj << -/Type /Page -/Contents 2625 0 R -/Resources 2623 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2594 0 R +/D [2605 0 R /XYZ 71.731 225.326 null] +>> endobj +2625 0 obj << +/D [2605 0 R /XYZ 71.731 194.76 null] >> endobj 2626 0 obj << -/D [2624 0 R /XYZ 71.731 729.265 null] +/D [2605 0 R /XYZ 71.731 184.797 null] >> endobj 2627 0 obj << -/D [2624 0 R /XYZ 71.731 741.22 null] ->> endobj -294 0 obj << -/D [2624 0 R /XYZ 256.412 708.344 null] +/D [2605 0 R /XYZ 136.289 175.298 null] >> endobj 2628 0 obj << -/D [2624 0 R /XYZ 71.731 699.891 null] +/D [2605 0 R /XYZ 136.289 163.642 null] >> endobj 2629 0 obj << -/D [2624 0 R /XYZ 71.731 669.325 null] +/D [2605 0 R /XYZ 71.731 124.09 null] >> endobj 2630 0 obj << -/D [2624 0 R /XYZ 71.731 659.362 null] ->> endobj -2631 0 obj << -/D [2624 0 R /XYZ 136.289 649.863 null] +/D [2605 0 R /XYZ 71.731 106.058 null] >> endobj -2632 0 obj << -/D [2624 0 R /XYZ 136.289 638.207 null] +2604 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R /F35 1463 0 R /F57 2355 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2633 0 obj << -/D [2624 0 R /XYZ 71.731 598.655 null] +/Length 1602 +/Filter /FlateDecode +>> +stream +xڍko�6�{~�a�Č��2tC�%k�$�oðm1�PI4�H� �o���_i7���_<�?>I8K����h��O�� +N�;�cfPf;8��'gWA0�X���$�)˒I�,���<��yS�u/[w�G��3�^7]/��lV�~=��,�J��Ͽ?���B� aY|Q/�s�X4I���^<���f��KY�Z��Z4_����(�,�՛�8g1l!RI����C-����礭;�i|v�'[��EQ +��,���7���/��4u���ʜZ��r�����ʇJ�-�R5��DMo�h�� �W�0}*��~W+��}Jg����72 o��(?�<r�����S�f5֝�5�-ECKЕ;�P���L�e�^�M(܍D��zZur�62��`�Ϣ�#�X����B�s(I����m���#s�D���qA] �~�y]�mףY�f�Dڻ��i^p�+��Y�=�_ ���7`��w��c��� �����(�%�P�$�yقT�q��atJ&��Y�s�&�s�F��#wbc$���QU�r���l7T�:���&*�n���7]:ۂ�ck��qH|�ᚊB��m0�h!�N ,�G8�G�%�++A��t�w��m�a��SX|�[�h�|�"���8�ܯ���NUC:��U�������`dw +�R���t��τ{,��4�NB�<y4������a3��~��^�sVo���*t���a�3��{ ���a~qss{qǿ�~�����P������`���s���*ȏ$�#ߋ��f!:h��]#�a%>��1�茭��u�~t4h�Ȧ?��(~����9t�fu�=D�P]����)�.U +�d56�D���1��5Ϣ��C��}1K�<��j�Ѳ'4\��X�tMnM�,/iU�f��=�����qe��^�)y*�>�Jn��ʅ)U�V���ƒ,�!���8�N�H�D��������?�^���ep>��d�J��������n"d���yoO>؋�n?�z����+����!E�߁����&n_��@͟��LhD�-�����b+��Ov{!GӍ���D+���V�g��� ���� +�8nX"`f��H�<h��/�.[)zI��eB�+J/�m�e�6㞽��P�63:�Ψ � +z8�#�',N|�NeH�#�y�xhN�9��Zz,�g��3�f{�%��Å,k�cv /����2���>v�k��R�z<�ä0Þ ���� {K ���JO.�����O�m �9� u1�jь��"V�Q�s�zܢ��4��$� �B�L�m����{� 7� _y�Ү��IT��p#��"hͦ�Rk�Pϸ�2�fx�F?����I؞�em��8�ۡQ�l�A96��>Na�>+�r3��R0=vY2x��</Ǘ����J�����;s$ޠbŸ;��{�>a������=����4�}s�R4lz��e����VA��uour��bAl�@fV�Cm,��F;:�Ă��P���7�35Tf� ��)�������&�D�c� 㺑hM��vڡ1j��V ��K/��Z9?|��x���'_|�oQ�����-���>��>��/!M5�endstream +endobj +2632 0 obj << +/Type /Page +/Contents 2633 0 R +/Resources 2631 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2603 0 R >> endobj 2634 0 obj << -/D [2624 0 R /XYZ 71.731 580.623 null] +/D [2632 0 R /XYZ 71.731 729.265 null] >> endobj 2635 0 obj << -/D [2624 0 R /XYZ 71.731 570.66 null] +/D [2632 0 R /XYZ 71.731 718.306 null] >> endobj 2636 0 obj << -/D [2624 0 R /XYZ 136.289 559.103 null] +/D [2632 0 R /XYZ 136.289 708.344 null] >> endobj 2637 0 obj << -/D [2624 0 R /XYZ 136.289 547.447 null] +/D [2632 0 R /XYZ 136.289 696.687 null] >> endobj 2638 0 obj << -/D [2624 0 R /XYZ 71.731 507.895 null] +/D [2632 0 R /XYZ 71.731 657.136 null] >> endobj -1390 0 obj << -/D [2624 0 R /XYZ 71.731 476.912 null] +1389 0 obj << +/D [2632 0 R /XYZ 71.731 626.152 null] >> endobj -298 0 obj << -/D [2624 0 R /XYZ 219.101 441.544 null] +294 0 obj << +/D [2632 0 R /XYZ 219.101 590.785 null] >> endobj 2639 0 obj << -/D [2624 0 R /XYZ 71.731 435.417 null] +/D [2632 0 R /XYZ 71.731 584.658 null] >> endobj 2640 0 obj << -/D [2624 0 R /XYZ 71.731 404.583 null] +/D [2632 0 R /XYZ 71.731 553.823 null] >> endobj 2641 0 obj << -/D [2624 0 R /XYZ 71.731 394.62 null] +/D [2632 0 R /XYZ 71.731 543.861 null] >> endobj 2642 0 obj << -/D [2624 0 R /XYZ 71.731 145.355 null] +/D [2632 0 R /XYZ 71.731 294.595 null] >> endobj 2643 0 obj << -/D [2624 0 R /XYZ 389.403 132.404 null] +/D [2632 0 R /XYZ 389.403 281.644 null] >> endobj 2644 0 obj << -/D [2624 0 R /XYZ 410.125 132.404 null] +/D [2632 0 R /XYZ 410.125 281.644 null] >> endobj 2645 0 obj << -/D [2624 0 R /XYZ 430.846 132.404 null] +/D [2632 0 R /XYZ 430.846 281.644 null] >> endobj 2646 0 obj << -/D [2624 0 R /XYZ 494.944 132.404 null] +/D [2632 0 R /XYZ 494.944 281.644 null] >> endobj -2623 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F57 2358 0 R >> -/ProcSet [ /PDF /Text ] +2647 0 obj << +/D [2632 0 R /XYZ 71.731 235.651 null] >> endobj -2649 0 obj << -/Length 1436 -/Filter /FlateDecode ->> -stream -xڭko�6�{~�l��Śޏ��f}x@��� �>�2m �D��x�~G�IV�݆��y��M*X��Y�e,a�i�(���ۋ�8�IJ��Z_|�&��W��b�[�A��"�B/O��z��sS�^s�.��wB�U�4k�����հ��n�������z:4�2�ȣ��5�fG�F��܋��֊��peH��!� -�+0`Q����Z��������a������� ��e�>�����z{�;��Zt�v$G un���w��yy����J���uK\��}gH�A2������"�B���F 4�e/��z˙�D3B���)q�b�j�%�N������; -L�x�\�P'�"���d#��$��0�R?�gm���B�$�"M �1(��$�L=���L}�Y��ܛs,�q}��i/P�<���$�?���Hт�Qj����e&��|�jD��|�D�8�16����$�G�G<�$U�nw9�m�:�J�bk�Da���\y�^W�N$C��F�YAܥ��3�0��jҖ��d�ʞu?|)=���j� ����v�������� -eF�ؙ5&�hMٛ���� ��(�RHV��-l��m�����@z'�0q����I7��+�H[������I��,��7 o�kH�ů��A�CGs���B� ��S�[,�*m�8��NC���3�j�hyx��rd�G�4�Y��dE�_�EE#���ڍ��B��j�� rGόb��<���<�[������;�`ǥ�Plϩ -���0�-�a%A6.ir,���%�m�0�m�=�<*ɷ�H)�W'��Av�0:�3%�#��Yu�D`g3[���`���8r:�M+�5��m�-���<�ρ+�C���}����n�kH�����tw��:�F֝��ǹ%��8�T�h�]�����b{�������2{��$gJtl�А��q�%~�����%�O�c���ZbN߉���1�`h��_��F�ړ�����I�O�����ۀ&b^�#`z̆��O��G��U���F��Թ�I�e�q� -��|v~����L��P��� ��R�������?�]ݾ���gRA�0I�"���i%�cL2�����2˝w��=B&ؐ����Y�������� ���f꺈�\$c�g2����{���l�J�* c��A�W`�v��P`�I���mM��o ��m�le)��P�~I�4�v��T,8�A��И���=]�yjF��O>>�r�8�Uac���x�F� -�0�A+x?ef���rS�ǶAڰ��N���[�����t>�e�Jz�S��f�]yj�_j(+�U����W�I5M��Ϧ�a�� `[��O�n{5i��:��&�'_j��^d��~<��}>&a�I�m��S߄�G� ��-endstream -endobj 2648 0 obj << -/Type /Page -/Contents 2649 0 R -/Resources 2647 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2594 0 R +/D [2632 0 R /XYZ 71.731 217.719 null] +>> endobj +2649 0 obj << +/D [2632 0 R /XYZ 71.731 207.756 null] >> endobj 2650 0 obj << -/D [2648 0 R /XYZ 71.731 729.265 null] +/D [2632 0 R /XYZ 136.289 198.257 null] >> endobj 2651 0 obj << -/D [2648 0 R /XYZ 71.731 670.321 null] +/D [2632 0 R /XYZ 136.289 186.6 null] >> endobj 2652 0 obj << -/D [2648 0 R /XYZ 71.731 660.359 null] +/D [2632 0 R /XYZ 71.731 147.049 null] >> endobj 2653 0 obj << -/D [2648 0 R /XYZ 136.289 650.859 null] ->> endobj -2654 0 obj << -/D [2648 0 R /XYZ 136.289 639.203 null] +/D [2632 0 R /XYZ 71.731 116.065 null] >> endobj -2655 0 obj << -/D [2648 0 R /XYZ 71.731 599.651 null] +2631 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F57 2355 0 R /F27 1132 0 R /F23 1125 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2656 0 obj << -/D [2648 0 R /XYZ 71.731 568.668 null] +/Length 1902 +/Filter /FlateDecode +>> +stream +xڝk��6�{E�s���w��0����6��0(�g[�%�����"�8�k� �(���&�p�_�X��:�%��(KE�(X���G!S��d5�y�}��e/r?���v�H���8�7i�ؖz�*�9,WQx�O�M��h��;���x�\7�X����ы��h��|U.Gs)X����� +�̏6�bl�8I�`E/�����/�5P�Y���b�~($�I��*Pʮl��5I�\�I��e�>�`�%~�n@��O�زy��M��S{\�T��V-C����Ԫ��� +�5�J�MIŸV)S5�e�z>�R�(��$���S��]8���Zq$L%�Q��t�U����F���w���]�O�=� ����z����U��J�q�OƑ�1�����`��)Bx퍨�ex�cb�k��9b�"OR��Y��fŨ�?��"������ {�w7kM�RI�}�7�� ���-kR�I80��,���$`C52���B�}��l���` ��@t%�J��C�.S�={��#��B��\��Ƨ���1�R�R6�ս��8tL��c���� n�co=[X�' ���$�:E�+�5I(m��$J��~�?��և><���3 +t�P+:��GH���r��uLM�{�GwsI��$�>F��i{sq��t,=H� ��eI��-8Xj�B�N�l}�J��s�i�y��w����j(@ & )�8% l8%��{�4T4�������ͪ�+pQ�gA�-�4#��h�J�Y]�:?~S-�cbƍ$$y��,jw*���o�$?� ���&���M�*���R�4��9*z���+����/��������`�7 -��;���_~q}�N�EN�a���\9���[��/�[�7ޫ��A����O���A�(��(�nJ �ۦ���'���5�:)K�NJw����M2� +�;@�d�-c�;�@�ѐS�Ñ�eQۘ�ܝ܁\?%��PcgK(P?aQesh�*�`�X6&f���mp�aT����X�bw����e ���P����-�G��R�Z��jWwW��f9�R:�o���A���>酷 +�VPT�����{@,,`z,*���˗Mӯ�Ě�`#gu��*�4"lc���T�ʀ+|5s*e��J���!��rPƉ��gArX����'�(�P�9�����Fu��r�;N�Q~��a_<�Qh�W<� 7�������Ĩ�ƽ�v#ϟSK��`�H���&&� `��Z���9av +#�4;&^D O����if���O��!��M�#=ڢ2�� c��zi;�c�|6�bج�$�2σ�T�A�*������EPcG��PlU��C��W�3��ᵁ }�v�ni[���H;ǔUB����o;9'����"\'Z�0����~�N}�����xLh`��t���^)�7��C���F�[e�9� �v�@g�w(Z{�4�×XL]�%����aQ'�)���G`2�:���N%i��k ��#3�����da�p<��?�eY�`�g�Z���N2���-�$m�@�-a�*5���V1�P1n�=�*���8���c�yם�8]��9pG�qqe�$� �� +�ٙA5,�~"����H;j���B<v�m�ȧ�S�DuUv=BHlh�v��W�(#y���.J� ���Ū*fe.��"�W��rĆ�6�(�l�Gn�X&AS-��2�S���ظE@�49",��9~���*D��·c[wPn�P�Υe9��NG������lb��3�ƞ0�0��F�_־+���-���� �A$� +�G��� �nP���N�uA��g2�r�d���%>������̏�:j�g��"8M��g�Y.K��oG�{U��7����h�H.~�J�5�M\��}�W�˧��. 0endstream +endobj +2655 0 obj << +/Type /Page +/Contents 2656 0 R +/Resources 2654 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2603 0 R >> endobj 2657 0 obj << -/D [2648 0 R /XYZ 71.731 558.705 null] +/D [2655 0 R /XYZ 71.731 729.265 null] >> endobj 2658 0 obj << -/D [2648 0 R /XYZ 136.289 547.148 null] +/D [2655 0 R /XYZ 71.731 718.306 null] >> endobj 2659 0 obj << -/D [2648 0 R /XYZ 136.289 535.492 null] +/D [2655 0 R /XYZ 136.289 708.344 null] >> endobj 2660 0 obj << -/D [2648 0 R /XYZ 71.731 495.94 null] +/D [2655 0 R /XYZ 136.289 696.687 null] >> endobj 2661 0 obj << -/D [2648 0 R /XYZ 71.731 424.045 null] +/D [2655 0 R /XYZ 71.731 657.136 null] >> endobj 2662 0 obj << -/D [2648 0 R /XYZ 71.731 414.082 null] +/D [2655 0 R /XYZ 71.731 585.24 null] >> endobj 2663 0 obj << -/D [2648 0 R /XYZ 136.289 404.583 null] +/D [2655 0 R /XYZ 71.731 575.278 null] >> endobj 2664 0 obj << -/D [2648 0 R /XYZ 136.289 392.927 null] +/D [2655 0 R /XYZ 136.289 565.778 null] >> endobj 2665 0 obj << -/D [2648 0 R /XYZ 71.731 353.375 null] +/D [2655 0 R /XYZ 136.289 554.122 null] >> endobj 2666 0 obj << -/D [2648 0 R /XYZ 71.731 328.304 null] +/D [2655 0 R /XYZ 71.731 514.57 null] >> endobj 2667 0 obj << -/D [2648 0 R /XYZ 125.529 318.805 null] +/D [2655 0 R /XYZ 71.731 489.499 null] >> endobj 2668 0 obj << -/D [2648 0 R /XYZ 125.529 307.148 null] +/D [2655 0 R /XYZ 125.529 480 null] >> endobj 2669 0 obj << -/D [2648 0 R /XYZ 125.529 295.492 null] +/D [2655 0 R /XYZ 125.529 468.344 null] >> endobj 2670 0 obj << -/D [2648 0 R /XYZ 125.529 283.836 null] +/D [2655 0 R /XYZ 125.529 456.687 null] >> endobj 2671 0 obj << -/D [2648 0 R /XYZ 125.529 272.179 null] +/D [2655 0 R /XYZ 125.529 445.031 null] >> endobj 2672 0 obj << -/D [2648 0 R /XYZ 125.529 260.523 null] +/D [2655 0 R /XYZ 125.529 433.375 null] >> endobj -1391 0 obj << -/D [2648 0 R /XYZ 71.731 228.942 null] +2673 0 obj << +/D [2655 0 R /XYZ 125.529 421.719 null] >> endobj -302 0 obj << -/D [2648 0 R /XYZ 197.861 189.569 null] +1390 0 obj << +/D [2655 0 R /XYZ 71.731 390.137 null] >> endobj -2673 0 obj << -/D [2648 0 R /XYZ 71.731 182.217 null] +298 0 obj << +/D [2655 0 R /XYZ 197.861 350.765 null] >> endobj -1392 0 obj << -/D [2648 0 R /XYZ 71.731 141.385 null] +2674 0 obj << +/D [2655 0 R /XYZ 71.731 343.412 null] >> endobj -2647 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F57 2358 0 R /F23 1125 0 R >> -/ProcSet [ /PDF /Text ] +1391 0 obj << +/D [2655 0 R /XYZ 71.731 302.58 null] +>> endobj +302 0 obj << +/D [2655 0 R /XYZ 284.184 270.267 null] >> endobj -2676 0 obj << -/Length 2526 -/Filter /FlateDecode ->> -stream -xڭY�s�~�_��夌E�)�/MrM�<�]/�f:�L�"!�1E�$u����[�"-�;s�xl.���]|+/���2�g>a�i╇��ۡ��7J$V"���|}s�my����w��b����ˢ�_'�w_���f_�-Wa,B��߷�P4M����i�{�4���n�v?N�D������d�F�R~�$�2��`�GqlW� ~-)[/ޟږ׃�WǢ\�`���.z��1��1�d��ފ��V��� -�� ��xQ-Ѣ;��!�V7�V7xڥZ`��f��S���▛�e,N�XI�8�NX���hҺ1#cE��üôn1�T��#�a�����[�:�� �f[D����_t@d��0+_ao���]���:q�&MAoǩ�rX7�Q�K�#,qG!��OS���m�c-�-���b����2�uL���9����ʖ����>�o[=�u���k��nD�w���^��=�۷��~��t��<�� ��+��^w�Æ7@T�U�i��������zNi�A��xH�p�q��9��́#`��o�f7��N�h.�u�q.���g`ę�c��A=�½9����t9��<�m[���z@K<����e��[NFB���նϘ�d�TvbU�����i�7��躺z:��÷���u�Ew�:���G(���x�13���a��u�CgY�v��b��I���Pc�߱��$���p���I��%�#�/M)�;L<���ڡo̠��rH��\��k���e̘3f�.�Aq#�B_:�� -�m��� -}0mύ3�I���v���i���k�k���a�B�=��Hd�R��P�H79|1�n�ʢ����.��d�+\Ni���j��ӑ904gO��e��_����N��pC�@q�C���6�/k���d~}1�Һ�%������� �b~R�ʢ:=;/���z;��"���ו� (�I{I�|�)���s��/�W���_��xC�1�G����<�:�mo~��Ǩ ӥk?�'����Z�gT��jVq��]6�1�u�(P~����4Kt�D[tj\E �S�,�;�ڎx��q�o\�����q�hzj�_��a�&V�� >֥vR-KO$(%�a�� -CP�䄝�Aa ���f��)�� �:����i�|1;w�ף�$)'��ņ@2�>�p)LcwB"�j��0��.k��P,%�؈����ڸ���2{�h �]���Դ�cӍ�aH0/���`��%d�z���^n-�^.���V�!L��X�#8�7q���n��Y��B.��6���`"y>N��$���a�Tn�iqp���W2Ƣ�<�{0L+*�ػ4OJb�;� u0Չ d,������� �q+�!H��g��H��?[�8��(��lk����#�c �K���N!/&��>=��xa��{T<���?�2&ì`Ͷ*��{��V�j��2S#vu ���>���S�U�v7�\!p=�f��-���0�+MG`��r�- -��7�%n H�:���L�+;�i,V�Z[!� �gi�U�W��H -�.�*��2gRZ�f��M�a�:�tGp�nk������_=�T�,w��/��fD�<0}��h���Z�s[��Xm�Cn���T�J|:�+�E��a��_+W�<���#�]q -#{� ��䈂���ʀ�P��j�4���KIN-F~��3��2���L ��ޠ�Wo�1Ai�:��V�p=̧������G��i�9W,EC�����#�+�y���I�gr ��8Or?����= �NGru"i�'�!�e��A3M[�:�D�A���X�ֻg��Wc�R�8���R _����w�ZBL��T8sI�h�ᤳ��D���"���������n%E�l��玼Q�MQ�� �VeN�F��)�#��x�$�nĚ� 0��������0��7,��5 in�i�T�U7zЗ��ᇣ�F�|����)�^�"M�9&T�pB,vKܛu�I�F�����C�=��p�� k���%0��u� ~�� -�h�}&h���ӈp���vrZAf1P��O�t���c�$B���&�u0�g�9�5��3�н,G8�[�#u����Ҁ�;���yd3,�lp�;[�+YT*�YI�č -�]W�S�od�b�٧�G[(~��ߙ���PP�k1 ���|���L�;c8�y4��U�(��-��M]Ujvݙ���-��R�R[�17|��q�n��f�;n]eA)�* )�iE�a"~�m����.��eb:[�Y|f1O'���!B��!�v�ߒ0�}?����ZP�i�s�Ǵ<�<��<�{�pf�4��%�c��U�'<2%w�v�7]�k!�c覤(h6�6��>M}�-�{�u�'O����ͩDಹ,G���{I4�n�qc�8zy��zM&f����.O�=_�M��gf��_���aS�S����q��Qٳ�7J���El�}�A=n��I��Oendstream -endobj 2675 0 obj << -/Type /Page -/Contents 2676 0 R -/Resources 2674 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2594 0 R -/Annots [ 2686 0 R ] +/D [2655 0 R /XYZ 71.731 261.629 null] >> endobj -2686 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.837 391.243 341.583 400.155] -/Subtype /Link -/A << /S /GoTo /D (install-perlmodules-nonroot) >> +2676 0 obj << +/D [2655 0 R /XYZ 481.532 251.338 null] >> endobj 2677 0 obj << -/D [2675 0 R /XYZ 71.731 729.265 null] ->> endobj -306 0 obj << -/D [2675 0 R /XYZ 284.184 708.344 null] +/D [2655 0 R /XYZ 71.731 218.297 null] >> endobj 2678 0 obj << -/D [2675 0 R /XYZ 71.731 699.706 null] +/D [2655 0 R /XYZ 71.731 181.499 null] >> endobj 2679 0 obj << -/D [2675 0 R /XYZ 481.532 689.415 null] +/D [2655 0 R /XYZ 71.731 166.556 null] >> endobj 2680 0 obj << -/D [2675 0 R /XYZ 71.731 656.374 null] +/D [2655 0 R /XYZ 76.712 115.049 null] >> endobj -2681 0 obj << -/D [2675 0 R /XYZ 71.731 619.577 null] +2654 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F57 2355 0 R /F27 1132 0 R /F23 1125 0 R /F32 1139 0 R /F44 1922 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +2683 0 obj << +/Length 1805 +/Filter /FlateDecode +>> +stream +xڭ˒�6�_�����ER��Ҧm�䐤���t�d�����%�nܯ/@P~n�i�������$h��ǃ��\�G�LdiPw7q���_n��<Kt����f�Lʠde&��e����y�K��Twͻ��u���E"�C�����cն�_�t��K�m5�p���绽�T�,��s%"aI\�L9��q��C4���?��� r'p.��ge)���͛����� � +&yM��|""�%K�$%�s�w��O�L2���9�id%8 +��z;K�2=:�0�$x3s"^�g,�X&��a%2_�w��<��p��RS�n�-!�!�a\+C$��|�Ե��z��8f" �mz\ۑ��q,Pkh=���vt�E|7 v�UG+U��^���8 �`�B�1��,�����f��*�� &qeA��Y���t��[�4j�N萅��{���C[�z���%�� �;��)ױkie9�A�媟��v���U�Z��D^�h��a��5�^=!��}�?�ē2J$$Rp��_��3&������Ԏ�$�C��9iQ�,��,e#c�����<*b�E��<���2 w�ke���(�@M �����P74�� y*KĊ�B����H���8r����<l(d��ܔZ�E+�x�#&rʑi���7��4E���\�L8K��^S?�\U.Ճ��t�|A~M�Ix�o*��J�!cyXC�keo���@c� �{�:��$Y�n��ѣ�z]�+E�t5lm�ft�S㸿hFP=�Ճ1�7Bڡ������H������rN���9�ٝk���8����rf@)Ʋ�O����5�^���=��w�Dl�~����V/�ů��S��0��sXtd���v�M��'�f��u�6�3@C�꯴g����PD�C��,�h�Q@�x2���I�r�;�˳_ +�1�5���LJWن �i��j ��!�Lev�` +���Y���ȿ�8�֊X]�^�բ�{���4����Qy�^�D�6h��L-E�ӗ���=d�j�o�FA��>5;�-�BR��<�����Df�P�%I�۵�Or_p��((��㴄�Jx�y�V�=��v� C."��,= ʭ��FE0�v���������ذԫG�C�&�s�Ѫ[�G���P��xP��瘝@WA�}C|ڎ2��2��e_7"8-�����[ߍ`4�c~�f#/�EU��4� @j���U�s%Q��"���=��� .�Н������/���nio ]��VժQ�^��Z�{=p�g'Q �d"�54��DΏ\C��Z��Ք���4$В +8���N����2�H��2)��ﲔ�_��fz��G/|�!��n �#�!Xq���"u�.����<L� �ӫ�H���ꉂmi��Q)8���x�8�'v� �⍀�r��t�,�\m���P�g��C�m��M�;&\���'w�rۺF�e�0���E����{���w)$W�]���k��u0��B�<�[}�g�**�<�A~���*M��f08�����#�S�K.�7��>�l7�m�'v | +��^�o0� ����|'L���{�����̎��� �E��Ւ�5�pF�?��dk?.�F9����):��h��-=���#�G�=#�_�atS�/��/����a@��1s=я��9���O�;=� ��r�G����; ��aۏ��`\^B�X��;�|�[��ް[�]�\P����'�<�߁.��3A�3/��������{��{��& ���qY\�m ���i)9č��=���^t�3��Q��endstream +endobj 2682 0 obj << -/D [2675 0 R /XYZ 71.731 604.633 null] +/Type /Page +/Contents 2683 0 R +/Resources 2681 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2603 0 R +/Annots [ 2687 0 R ] >> endobj -2683 0 obj << -/D [2675 0 R /XYZ 76.712 553.126 null] +2687 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.837 566.386 341.583 575.298] +/Subtype /Link +/A << /S /GoTo /D (install-perlmodules-nonroot) >> >> endobj 2684 0 obj << -/D [2675 0 R /XYZ 118.555 509.58 null] +/D [2682 0 R /XYZ 71.731 729.265 null] >> endobj -1393 0 obj << -/D [2675 0 R /XYZ 71.731 446.028 null] +2685 0 obj << +/D [2682 0 R /XYZ 118.555 684.724 null] >> endobj -310 0 obj << -/D [2675 0 R /XYZ 166.615 413.525 null] +1392 0 obj << +/D [2682 0 R /XYZ 71.731 621.171 null] >> endobj -2685 0 obj << -/D [2675 0 R /XYZ 71.731 403.16 null] +306 0 obj << +/D [2682 0 R /XYZ 166.615 588.668 null] >> endobj -2687 0 obj << -/D [2675 0 R /XYZ 71.731 373.31 null] +2686 0 obj << +/D [2682 0 R /XYZ 71.731 578.303 null] >> endobj 2688 0 obj << -/D [2675 0 R /XYZ 71.731 363.348 null] +/D [2682 0 R /XYZ 71.731 548.454 null] >> endobj 2689 0 obj << -/D [2675 0 R /XYZ 105.494 307.622 null] +/D [2682 0 R /XYZ 71.731 538.491 null] >> endobj 2690 0 obj << -/D [2675 0 R /XYZ 71.731 287.532 null] +/D [2682 0 R /XYZ 105.494 482.765 null] >> endobj 2691 0 obj << -/D [2675 0 R /XYZ 131.133 276.737 null] +/D [2682 0 R /XYZ 71.731 462.675 null] >> endobj 2692 0 obj << -/D [2675 0 R /XYZ 247.791 276.737 null] +/D [2682 0 R /XYZ 131.133 451.881 null] >> endobj 2693 0 obj << -/D [2675 0 R /XYZ 431.073 263.786 null] +/D [2682 0 R /XYZ 247.791 451.881 null] >> endobj 2694 0 obj << -/D [2675 0 R /XYZ 71.731 248.678 null] +/D [2682 0 R /XYZ 431.073 438.929 null] >> endobj 2695 0 obj << -/D [2675 0 R /XYZ 118.555 210.114 null] +/D [2682 0 R /XYZ 71.731 423.821 null] >> endobj 2696 0 obj << -/D [2675 0 R /XYZ 189.395 201.649 null] +/D [2682 0 R /XYZ 118.555 385.257 null] >> endobj 2697 0 obj << -/D [2675 0 R /XYZ 194.423 189.993 null] +/D [2682 0 R /XYZ 189.395 376.793 null] >> endobj -2674 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F32 1139 0 R /F44 1925 0 R /F35 1463 0 R >> +2698 0 obj << +/D [2682 0 R /XYZ 194.423 365.136 null] +>> endobj +2681 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2700 0 obj << +2701 0 obj << /Length 2385 /Filter /FlateDecode >> @@ -9311,123 +9330,123 @@ xڭM J~d�t�b����0��g�%��x9�"�^{n�`lB4�W �'�}�g$�x\����Wy2^�����������T���.�DO4������N�Ac�=�����z3��?:���0�M@�=�Q�p�kk;C.c��?1aooVЛ�a�5�E��i��Nr�!Hiz5cOd{��dX��P�&�SoOg4v�ר�\��� �'�6�]���k"B+�a�����/^���g�2*���*OB�P7��0w�*�Xm�8ʲ������n�w�?����endstream endobj -2699 0 obj << +2700 0 obj << /Type /Page -/Contents 2700 0 R -/Resources 2698 0 R +/Contents 2701 0 R +/Resources 2699 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2594 0 R ->> endobj -2701 0 obj << -/D [2699 0 R /XYZ 71.731 729.265 null] +/Parent 2603 0 R >> endobj -1394 0 obj << -/D [2699 0 R /XYZ 71.731 718.306 null] +2702 0 obj << +/D [2700 0 R /XYZ 71.731 729.265 null] >> endobj -314 0 obj << -/D [2699 0 R /XYZ 402.325 703.236 null] +1393 0 obj << +/D [2700 0 R /XYZ 71.731 718.306 null] >> endobj -1395 0 obj << -/D [2699 0 R /XYZ 71.731 692.184 null] +310 0 obj << +/D [2700 0 R /XYZ 402.325 703.236 null] >> endobj -318 0 obj << -/D [2699 0 R /XYZ 288.867 651.159 null] +1394 0 obj << +/D [2700 0 R /XYZ 71.731 692.184 null] >> endobj -2702 0 obj << -/D [2699 0 R /XYZ 71.731 638.721 null] +314 0 obj << +/D [2700 0 R /XYZ 288.867 651.159 null] >> endobj 2703 0 obj << -/D [2699 0 R /XYZ 71.731 601.54 null] +/D [2700 0 R /XYZ 71.731 638.721 null] >> endobj 2704 0 obj << -/D [2699 0 R /XYZ 71.731 601.54 null] +/D [2700 0 R /XYZ 71.731 601.54 null] >> endobj 2705 0 obj << -/D [2699 0 R /XYZ 71.731 586.596 null] +/D [2700 0 R /XYZ 71.731 601.54 null] >> endobj 2706 0 obj << -/D [2699 0 R /XYZ 71.731 575.702 null] +/D [2700 0 R /XYZ 71.731 586.596 null] >> endobj 2707 0 obj << -/D [2699 0 R /XYZ 91.656 557.869 null] +/D [2700 0 R /XYZ 71.731 575.702 null] >> endobj 2708 0 obj << -/D [2699 0 R /XYZ 71.731 532.798 null] +/D [2700 0 R /XYZ 91.656 557.869 null] >> endobj 2709 0 obj << -/D [2699 0 R /XYZ 71.731 521.904 null] +/D [2700 0 R /XYZ 71.731 532.798 null] >> endobj 2710 0 obj << -/D [2699 0 R /XYZ 91.656 504.071 null] +/D [2700 0 R /XYZ 71.731 521.904 null] >> endobj 2711 0 obj << -/D [2699 0 R /XYZ 71.731 496.933 null] +/D [2700 0 R /XYZ 91.656 504.071 null] >> endobj 2712 0 obj << -/D [2699 0 R /XYZ 263.545 486.138 null] +/D [2700 0 R /XYZ 71.731 496.933 null] >> endobj 2713 0 obj << -/D [2699 0 R /XYZ 500.364 486.138 null] +/D [2700 0 R /XYZ 263.545 486.138 null] >> endobj 2714 0 obj << -/D [2699 0 R /XYZ 101.898 473.187 null] +/D [2700 0 R /XYZ 500.364 486.138 null] >> endobj 2715 0 obj << -/D [2699 0 R /XYZ 71.731 445.291 null] +/D [2700 0 R /XYZ 101.898 473.187 null] >> endobj 2716 0 obj << -/D [2699 0 R /XYZ 71.731 430.183 null] +/D [2700 0 R /XYZ 71.731 445.291 null] >> endobj 2717 0 obj << -/D [2699 0 R /XYZ 91.656 414.407 null] +/D [2700 0 R /XYZ 71.731 430.183 null] >> endobj 2718 0 obj << -/D [2699 0 R /XYZ 71.731 402.288 null] +/D [2700 0 R /XYZ 91.656 414.407 null] >> endobj 2719 0 obj << -/D [2699 0 R /XYZ 71.731 389.336 null] +/D [2700 0 R /XYZ 71.731 402.288 null] >> endobj 2720 0 obj << -/D [2699 0 R /XYZ 91.656 373.56 null] +/D [2700 0 R /XYZ 71.731 389.336 null] >> endobj 2721 0 obj << -/D [2699 0 R /XYZ 250.874 360.609 null] +/D [2700 0 R /XYZ 91.656 373.56 null] >> endobj 2722 0 obj << -/D [2699 0 R /XYZ 71.731 322.587 null] +/D [2700 0 R /XYZ 250.874 360.609 null] >> endobj 2723 0 obj << -/D [2699 0 R /XYZ 71.731 309.635 null] +/D [2700 0 R /XYZ 71.731 322.587 null] >> endobj 2724 0 obj << -/D [2699 0 R /XYZ 91.656 293.859 null] +/D [2700 0 R /XYZ 71.731 309.635 null] >> endobj 2725 0 obj << -/D [2699 0 R /XYZ 133.648 267.956 null] +/D [2700 0 R /XYZ 91.656 293.859 null] >> endobj 2726 0 obj << -/D [2699 0 R /XYZ 71.731 255.837 null] +/D [2700 0 R /XYZ 133.648 267.956 null] >> endobj 2727 0 obj << -/D [2699 0 R /XYZ 71.731 244.943 null] +/D [2700 0 R /XYZ 71.731 255.837 null] >> endobj 2728 0 obj << -/D [2699 0 R /XYZ 91.656 227.109 null] +/D [2700 0 R /XYZ 71.731 244.943 null] >> endobj 2729 0 obj << -/D [2699 0 R /XYZ 71.731 142.263 null] +/D [2700 0 R /XYZ 91.656 227.109 null] >> endobj 2730 0 obj << -/D [2699 0 R /XYZ 110.407 131.468 null] +/D [2700 0 R /XYZ 71.731 142.263 null] >> endobj 2731 0 obj << -/D [2699 0 R /XYZ 71.731 48.817 null] +/D [2700 0 R /XYZ 110.407 131.468 null] >> endobj -2698 0 obj << +2732 0 obj << +/D [2700 0 R /XYZ 71.731 48.817 null] +>> endobj +2699 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2734 0 obj << +2735 0 obj << /Length 2396 /Filter /FlateDecode >> @@ -9446,84 +9465,84 @@ k ;��\�.��D����(��xv��@,by�) ��ڭ)eRg �Ya$� y��N��B�ۡ%�J�L�2LJI�g��>���Cw��$L�J0=_�p��ْe�%�岺*�� �S��鶎�[jP�:��7h�s-�KI]i&_g��D�����U�&UO�|!I�4�|���{����re��M�q˿J\�/}5%Z5���͓����Nc0�z����E��>#~x���s�fe��F�Ŋ�l�0��DM��J�G������[�mؑ����k;��ùԌo�p�%�J�����ߦy��~�u�#��*����2��gF�Q�FP\�<A����8��A䗴Z���eq�P�x���m����(����i�L�"�;i�@��6�|�C��Fަr��������~r�{ز���/d�������/ڢ9g��[$B��]�ԭ@~��J��j�������.��DI4���[U�B-G�9��t�Q+W�"���H��Q��D*�.�+o"+K�����7j�n}ك�tݬ����'&�/�2.>��Ƃr��F�@��x"x��z�7��I��"�Tendstream endobj -2733 0 obj << +2734 0 obj << /Type /Page -/Contents 2734 0 R -/Resources 2732 0 R +/Contents 2735 0 R +/Resources 2733 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2757 0 R ->> endobj -2735 0 obj << -/D [2733 0 R /XYZ 71.731 729.265 null] +/Parent 2758 0 R >> endobj 2736 0 obj << -/D [2733 0 R /XYZ 71.731 657.37 null] +/D [2734 0 R /XYZ 71.731 729.265 null] >> endobj 2737 0 obj << -/D [2733 0 R /XYZ 71.731 592.777 null] +/D [2734 0 R /XYZ 71.731 657.37 null] >> endobj 2738 0 obj << -/D [2733 0 R /XYZ 71.731 579.726 null] +/D [2734 0 R /XYZ 71.731 592.777 null] >> endobj 2739 0 obj << -/D [2733 0 R /XYZ 91.656 561.893 null] +/D [2734 0 R /XYZ 71.731 579.726 null] >> endobj 2740 0 obj << -/D [2733 0 R /XYZ 71.731 533.833 null] +/D [2734 0 R /XYZ 91.656 561.893 null] >> endobj 2741 0 obj << -/D [2733 0 R /XYZ 71.731 518.889 null] +/D [2734 0 R /XYZ 71.731 533.833 null] >> endobj 2742 0 obj << -/D [2733 0 R /XYZ 126.726 486.077 null] +/D [2734 0 R /XYZ 71.731 518.889 null] >> endobj 2743 0 obj << -/D [2733 0 R /XYZ 71.731 423.611 null] +/D [2734 0 R /XYZ 126.726 486.077 null] >> endobj 2744 0 obj << -/D [2733 0 R /XYZ 71.731 408.503 null] +/D [2734 0 R /XYZ 71.731 423.611 null] >> endobj 2745 0 obj << -/D [2733 0 R /XYZ 91.656 392.727 null] +/D [2734 0 R /XYZ 71.731 408.503 null] >> endobj 2746 0 obj << -/D [2733 0 R /XYZ 71.731 372.638 null] +/D [2734 0 R /XYZ 91.656 392.727 null] >> endobj 2747 0 obj << -/D [2733 0 R /XYZ 71.731 320.996 null] +/D [2734 0 R /XYZ 71.731 372.638 null] >> endobj 2748 0 obj << -/D [2733 0 R /XYZ 71.731 305.888 null] +/D [2734 0 R /XYZ 71.731 320.996 null] >> endobj 2749 0 obj << -/D [2733 0 R /XYZ 91.656 290.112 null] +/D [2734 0 R /XYZ 71.731 305.888 null] >> endobj 2750 0 obj << -/D [2733 0 R /XYZ 409.936 277.161 null] +/D [2734 0 R /XYZ 91.656 290.112 null] >> endobj 2751 0 obj << -/D [2733 0 R /XYZ 71.731 252.807 null] +/D [2734 0 R /XYZ 409.936 277.161 null] >> endobj 2752 0 obj << -/D [2733 0 R /XYZ 71.731 239.138 null] +/D [2734 0 R /XYZ 71.731 252.807 null] >> endobj 2753 0 obj << -/D [2733 0 R /XYZ 91.656 223.362 null] +/D [2734 0 R /XYZ 71.731 239.138 null] >> endobj 2754 0 obj << -/D [2733 0 R /XYZ 71.731 198.292 null] +/D [2734 0 R /XYZ 91.656 223.362 null] >> endobj 2755 0 obj << -/D [2733 0 R /XYZ 71.731 187.397 null] +/D [2734 0 R /XYZ 71.731 198.292 null] >> endobj 2756 0 obj << -/D [2733 0 R /XYZ 91.656 169.564 null] +/D [2734 0 R /XYZ 71.731 187.397 null] >> endobj -2732 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R >> +2757 0 obj << +/D [2734 0 R /XYZ 91.656 169.564 null] +>> endobj +2733 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2760 0 obj << +2761 0 obj << /Length 2431 /Filter /FlateDecode >> @@ -9539,99 +9558,99 @@ Z؎ ��yAHc�Z����\�G9�Q%���x��L!W����CB�L�T`V�!%�a���������1�23��\g�nS['8�O��j����9Tyr�k-C�V���c�������hX=�%���<?��*1���'��)�?a ����Q�w���Y�/���5�C���3|A��oT����-���9�fv�O8��8����;35= I���οwg���0�� �Q��'��(G�� ���kN��"�-endstream endobj -2759 0 obj << +2760 0 obj << /Type /Page -/Contents 2760 0 R -/Resources 2758 0 R +/Contents 2761 0 R +/Resources 2759 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2757 0 R ->> endobj -2761 0 obj << -/D [2759 0 R /XYZ 71.731 729.265 null] +/Parent 2758 0 R >> endobj 2762 0 obj << -/D [2759 0 R /XYZ 71.731 741.22 null] +/D [2760 0 R /XYZ 71.731 729.265 null] >> endobj 2763 0 obj << -/D [2759 0 R /XYZ 71.731 718.306 null] +/D [2760 0 R /XYZ 71.731 741.22 null] >> endobj 2764 0 obj << -/D [2759 0 R /XYZ 71.731 706.187 null] +/D [2760 0 R /XYZ 71.731 718.306 null] >> endobj 2765 0 obj << -/D [2759 0 R /XYZ 91.656 690.411 null] +/D [2760 0 R /XYZ 71.731 706.187 null] >> endobj 2766 0 obj << -/D [2759 0 R /XYZ 71.731 652.762 null] +/D [2760 0 R /XYZ 91.656 690.411 null] >> endobj 2767 0 obj << -/D [2759 0 R /XYZ 71.731 641.494 null] +/D [2760 0 R /XYZ 71.731 652.762 null] >> endobj 2768 0 obj << -/D [2759 0 R /XYZ 91.656 623.661 null] +/D [2760 0 R /XYZ 71.731 641.494 null] >> endobj 2769 0 obj << -/D [2759 0 R /XYZ 71.731 577.669 null] +/D [2760 0 R /XYZ 91.656 623.661 null] >> endobj 2770 0 obj << -/D [2759 0 R /XYZ 71.731 551.766 null] +/D [2760 0 R /XYZ 71.731 577.669 null] >> endobj 2771 0 obj << -/D [2759 0 R /XYZ 71.731 536.822 null] +/D [2760 0 R /XYZ 71.731 551.766 null] >> endobj 2772 0 obj << -/D [2759 0 R /XYZ 71.731 453.201 null] +/D [2760 0 R /XYZ 71.731 536.822 null] >> endobj 2773 0 obj << -/D [2759 0 R /XYZ 71.731 438.092 null] +/D [2760 0 R /XYZ 71.731 453.201 null] >> endobj 2774 0 obj << -/D [2759 0 R /XYZ 91.656 422.316 null] +/D [2760 0 R /XYZ 71.731 438.092 null] >> endobj 2775 0 obj << -/D [2759 0 R /XYZ 233.106 396.413 null] +/D [2760 0 R /XYZ 91.656 422.316 null] >> endobj 2776 0 obj << -/D [2759 0 R /XYZ 71.731 373.4 null] +/D [2760 0 R /XYZ 233.106 396.413 null] >> endobj 2777 0 obj << -/D [2759 0 R /XYZ 71.731 358.391 null] +/D [2760 0 R /XYZ 71.731 373.4 null] >> endobj 2778 0 obj << -/D [2759 0 R /XYZ 91.656 342.615 null] +/D [2760 0 R /XYZ 71.731 358.391 null] >> endobj 2779 0 obj << -/D [2759 0 R /XYZ 71.731 304.593 null] +/D [2760 0 R /XYZ 91.656 342.615 null] >> endobj 2780 0 obj << -/D [2759 0 R /XYZ 71.731 293.699 null] +/D [2760 0 R /XYZ 71.731 304.593 null] >> endobj 2781 0 obj << -/D [2759 0 R /XYZ 91.656 275.866 null] +/D [2760 0 R /XYZ 71.731 293.699 null] >> endobj -1396 0 obj << -/D [2759 0 R /XYZ 71.731 229.873 null] +2782 0 obj << +/D [2760 0 R /XYZ 91.656 275.866 null] >> endobj -322 0 obj << -/D [2759 0 R /XYZ 269.758 186.776 null] +1395 0 obj << +/D [2760 0 R /XYZ 71.731 229.873 null] >> endobj -1397 0 obj << -/D [2759 0 R /XYZ 71.731 186.56 null] +318 0 obj << +/D [2760 0 R /XYZ 269.758 186.776 null] >> endobj -326 0 obj << -/D [2759 0 R /XYZ 283.793 147.403 null] +1396 0 obj << +/D [2760 0 R /XYZ 71.731 186.56 null] >> endobj -2782 0 obj << -/D [2759 0 R /XYZ 71.731 137.038 null] +322 0 obj << +/D [2760 0 R /XYZ 283.793 147.403 null] >> endobj 2783 0 obj << -/D [2759 0 R /XYZ 71.731 99.219 null] +/D [2760 0 R /XYZ 71.731 137.038 null] >> endobj -2758 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R >> +2784 0 obj << +/D [2760 0 R /XYZ 71.731 99.219 null] +>> endobj +2759 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2786 0 obj << +2787 0 obj << /Length 2514 /Filter /FlateDecode >> @@ -9644,2106 +9663,2173 @@ p �P%�C^�$dHQ�@��2���R��R0�@��1K�IкS��/|e�>���'O/E�qx9�~���ަ������N����#�ZU|�w�p�_�x~����U��k�H�`iXcB0~� �7�2����] /S���O lH���6�\�9����2!�S%)�% ��5�Fl�2��Xly�Pb%���W.��/���Ed�-KI�$WIb@�eΖ82� T�q�_x��6�H�+��6Zl���������L��!�dX��k�� �;G��ָL�]�����䎙��8�>��Mj6I�����,�i�� ��$j��7<�>���X�ō�k7γg��3�"�����33��sf��g憱7�̥�gfl��:���9.�����q�{�>W��i�e&P/gժ��/y��[�x�e��Ts���e�>l�K��2 v��]�������Y��މ�[{wm����0~k�Fֿ �X���)n`�� -Jy�����%�T�m�_����$�l0�%�\ ����.�_��O��C���)7\K�����^�Y=]y`ݐ@�$�3Yؤӓ��1���t1��.yΧf�Sג��l/�6�庿�Sv����~�H��2�]-ϱ��`�F�$�0�?��^(�)`�ג�,r�>�+�7J�b���������pendstream endobj -2785 0 obj << +2786 0 obj << /Type /Page -/Contents 2786 0 R -/Resources 2784 0 R +/Contents 2787 0 R +/Resources 2785 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2757 0 R ->> endobj -2787 0 obj << -/D [2785 0 R /XYZ 71.731 729.265 null] +/Parent 2758 0 R >> endobj 2788 0 obj << -/D [2785 0 R /XYZ 71.731 741.22 null] +/D [2786 0 R /XYZ 71.731 729.265 null] >> endobj -1398 0 obj << -/D [2785 0 R /XYZ 71.731 657.136 null] +2789 0 obj << +/D [2786 0 R /XYZ 71.731 741.22 null] >> endobj -330 0 obj << -/D [2785 0 R /XYZ 264.312 617.763 null] +1397 0 obj << +/D [2786 0 R /XYZ 71.731 657.136 null] >> endobj -1399 0 obj << -/D [2785 0 R /XYZ 71.731 614.571 null] +326 0 obj << +/D [2786 0 R /XYZ 264.312 617.763 null] >> endobj -334 0 obj << -/D [2785 0 R /XYZ 224.863 583.293 null] +1398 0 obj << +/D [2786 0 R /XYZ 71.731 614.571 null] >> endobj -2789 0 obj << -/D [2785 0 R /XYZ 71.731 574.655 null] +330 0 obj << +/D [2786 0 R /XYZ 224.863 583.293 null] >> endobj 2790 0 obj << -/D [2785 0 R /XYZ 71.731 536.304 null] +/D [2786 0 R /XYZ 71.731 574.655 null] >> endobj 2791 0 obj << -/D [2785 0 R /XYZ 71.731 531.323 null] +/D [2786 0 R /XYZ 71.731 536.304 null] >> endobj 2792 0 obj << -/D [2785 0 R /XYZ 89.664 510.565 null] +/D [2786 0 R /XYZ 71.731 531.323 null] >> endobj 2793 0 obj << -/D [2785 0 R /XYZ 71.731 508.409 null] +/D [2786 0 R /XYZ 89.664 510.565 null] >> endobj 2794 0 obj << -/D [2785 0 R /XYZ 89.664 492.633 null] +/D [2786 0 R /XYZ 71.731 508.409 null] >> endobj 2795 0 obj << -/D [2785 0 R /XYZ 71.731 490.476 null] +/D [2786 0 R /XYZ 89.664 492.633 null] >> endobj 2796 0 obj << -/D [2785 0 R /XYZ 71.731 475.532 null] +/D [2786 0 R /XYZ 71.731 490.476 null] >> endobj 2797 0 obj << -/D [2785 0 R /XYZ 244.012 466.032 null] +/D [2786 0 R /XYZ 71.731 475.532 null] >> endobj 2798 0 obj << -/D [2785 0 R /XYZ 441.891 442.72 null] +/D [2786 0 R /XYZ 244.012 466.032 null] >> endobj -1400 0 obj << -/D [2785 0 R /XYZ 71.731 373.579 null] +2799 0 obj << +/D [2786 0 R /XYZ 441.891 442.72 null] >> endobj -338 0 obj << -/D [2785 0 R /XYZ 207.755 338.112 null] +1399 0 obj << +/D [2786 0 R /XYZ 71.731 373.579 null] >> endobj -2799 0 obj << -/D [2785 0 R /XYZ 71.731 329.475 null] +334 0 obj << +/D [2786 0 R /XYZ 207.755 338.112 null] >> endobj 2800 0 obj << -/D [2785 0 R /XYZ 71.731 301.151 null] +/D [2786 0 R /XYZ 71.731 329.475 null] >> endobj 2801 0 obj << -/D [2785 0 R /XYZ 260.836 275.347 null] +/D [2786 0 R /XYZ 71.731 301.151 null] >> endobj 2802 0 obj << -/D [2785 0 R /XYZ 300.296 262.396 null] +/D [2786 0 R /XYZ 260.836 275.347 null] >> endobj 2803 0 obj << -/D [2785 0 R /XYZ 71.731 242.306 null] +/D [2786 0 R /XYZ 300.296 262.396 null] >> endobj 2804 0 obj << -/D [2785 0 R /XYZ 71.731 229.355 null] +/D [2786 0 R /XYZ 71.731 242.306 null] >> endobj 2805 0 obj << -/D [2785 0 R /XYZ 71.731 224.374 null] +/D [2786 0 R /XYZ 71.731 229.355 null] >> endobj 2806 0 obj << -/D [2785 0 R /XYZ 81.694 203.616 null] +/D [2786 0 R /XYZ 71.731 224.374 null] >> endobj 2807 0 obj << -/D [2785 0 R /XYZ 81.694 203.616 null] +/D [2786 0 R /XYZ 81.694 203.616 null] >> endobj 2808 0 obj << -/D [2785 0 R /XYZ 71.731 175.93 null] +/D [2786 0 R /XYZ 81.694 203.616 null] >> endobj 2809 0 obj << -/D [2785 0 R /XYZ 81.694 159.781 null] +/D [2786 0 R /XYZ 71.731 175.93 null] >> endobj 2810 0 obj << -/D [2785 0 R /XYZ 81.694 159.781 null] +/D [2786 0 R /XYZ 81.694 159.781 null] >> endobj 2811 0 obj << -/D [2785 0 R /XYZ 71.731 157.624 null] +/D [2786 0 R /XYZ 81.694 159.781 null] >> endobj 2812 0 obj << -/D [2785 0 R /XYZ 81.694 141.848 null] +/D [2786 0 R /XYZ 71.731 157.624 null] >> endobj 2813 0 obj << -/D [2785 0 R /XYZ 81.694 141.848 null] +/D [2786 0 R /XYZ 81.694 141.848 null] >> endobj 2814 0 obj << -/D [2785 0 R /XYZ 71.731 126.74 null] +/D [2786 0 R /XYZ 81.694 141.848 null] >> endobj -2784 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F44 1925 0 R /F27 1132 0 R /F48 1937 0 R /F32 1139 0 R >> +2815 0 obj << +/D [2786 0 R /XYZ 71.731 126.74 null] +>> endobj +2785 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R /F48 1934 0 R /F32 1139 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2817 0 obj << -/Length 3088 +2818 0 obj << +/Length 3158 /Filter /FlateDecode >> stream -xڝَ���}�B�K���Mjm�n։��H�Y���ْ�H��V;�z����!)06������.�[���-�Ix�Ǐ�E~|p;����'kAY[8o���>g���"t]'q7�$�4���/�w��ԩf��#w8���8�U���vz{^y����ᐭ~}��������I���q��@r�����n��N�F?Y��%�!(�Gߏ�%��=�El��� q��Rω7����6{9��:7����_���.�t��nVG����������|��<�^O�YV��h���I)+�ٗ-�^�/Oz.?�P�����v�?�S��'��P9��{�A�<5 A����Uթ��ۦ>��P�vO�cݠċ�H��|g#&v�>�����_�}V�T�/����w����x@��^xA �5ە�.A.�'�5�?��'��hi:Z^��,�$J�N�E��D�!�>:bi�*���=�1EXp�������m�HP7G"��U��we]�O�V<h��� c���鐑@���W��I����:��_ -2^�� -���6����(xٲ������0��0�i\�<��+���ʌ�F��M�'�Y)��І!��;7 Vs�ې�����Z��E ��K�������L6��&č��:0�-ϑ�`��V`{U6�Q�K�p0��jT���P43mW�Tv�0 �m��&R-eh�I�~t#�4�D� ��,G�X�؞V[l����kDŽ~ԍ6â�Z�� �ʎ2��՜�t�9����r -��G��AkI�h�B$�1����+�PZd]�uU�M����T0����$$�M 1�NLX?םzØ�{�!� ���g<!�j \ --/���70��>ð����z�"L����}��Y4���˱�dm#�cd�j����]�QJ��d+���q��'�.��dM�ZD�ɿ��,�ڃ�)q�MҞ��hфD->Դ?T��8n���N;9w/r���M��O�[$F֏�T~n���.�B��A���oϻ�Wkl0�K�(l� 3��{��WwQ@��#����D�}�(Xx�f,��>����f'�0p����V�&[�57��O���K#�B1B'��D�" -�> 6t`�]�`�M��<9Z�P���R.h��DzKd�s���I��P�����eZ* (�h���z��x2��絳�<'uc�j�a�8)L�4r�$�Q�j�;�����]�����6�ow�*� 0�0"�u&2���^_��^�y�K$�`�]"�j�ʨ.�%m}�bT��X9;����e� -�T[bN�e��'��� aU�W�'��t҅Y��8��N*k�1E�I]0NN�R��xv�g��Dc����4'���ըc����Cj6�V�L�ҵ�$�h#� �B�|��z�k�&�LmJ쾩��ϙ�E�Tz������Y:�o�YB�:;�(�+�g�@�b��+O�[�N��RU��$쇦G�8'ġD)<�{U��@Hݹux��y#���4�[����A����)�f��m��"���hd4��h��M]����a,�m��x|7�`���]�`�Lw��� "�[�ͮZ1��{�a�\�b��g�Sb��xD|Ί-�y� -�%F6T����L��4�X G&�qㄥ�ܶ8v�ZLt2Z2�o[}[Gw�BA��1ž�������l%�Oڍ��o�ǹ�/����)����ӗE]eg<d�#�3"�:�~��myLs���}&3����ې�T��'͕�؋a P�+�*W�dP�'A`���}����Ճ�b,,w����`4�T7�ˋL�.�`�������84g��23���F���I�4M�X����ǣ⫐e��T�l�D���7 �¹b�����k�c�3kSGӀ�8�M�bb��%~d� +A��}7�v5�D�2�^7*pBG�UJ�N���8�Ա����={O��`\5V,ȱ.���`}8Td"��`��t�d �d��q������e�m��\�TR_��SG���W����U����Ca�u��j.�)�=� -���6B�1i�d:RK�l_M�~1���Qo�K�8ki�2ըN�0����NN�ZL���QK��,��������c�\�X���Sb�=vD|�c-���q��D(�K�ԍ�@.S��LE�l" -���W�[)L�����n!�bP�p�ZA���p*R�Mg��s^�`�h�a��u5C��#֥G2�h��6�����x���8�]�W -.n,!`0���\�(��.!�Зwࣀ��欬�쭽y���� �K��lH!`���Ĉ�f���.�{!�m��}$(Ju���4qb/��q���w<n��]���8�:z��{����FhWu]y�H�H�>�p�g -F�r��_�+��1���VР�v���*Q�G���)�6�?S�$�9�U��ͩ��ƍ�*���� ��� F�m=�OZT�Q(j�I;�|8���G���yG$��z���t&�Ҋ������"_���;7��N�es�������s����O��7��9�w�}:e �Ϗsy�>h� ������ ���'y�=� -S}br��"~��tέi)>̈́����r�q��N�+��@u��:C_��(:H��7�qM�4O�c2�< ;�^C����v�ғ�#'J�[kl�{�D��VT1��Ë��m�lO*�J������K��"�ј����E��\�k��w8�U�3�K��pv�.��^���Ѿ�?Z*��0�H$�4��jҫ�'����"�@Y'���\��H&I��p1(�ɖ�ץ�>�4�='��O:]���jT�뢻�~Z�C3nQ;HB���&;����%��Uob>�`G�C}ŀK�ԝs�x�]�|F<��W����H��@~[��WF(���|辑%�lΦ��`s��T��K�X�~N�E���2�o�!�9�'(X��j���N�C/^� x�}��^���]!������-�vd��k���t�m�`W��v��;�a�2 ^�}���&d����}M)�9⚇endstream +xڝk����� +w��֊ޏ4(�K��mТ{�$(d����$G�����e�v,��#��ɡ���"�$���9~-�Փ����_�<�X���y����_�`�9Y,^w��u���I�;i�/^����S���ڏ�e���*�xY��������1_������WC; +'K���q��@r��N�{�EpS'C#��,�@���Gߏ�9JB'�4���s ΟL����zN��#�.�|sT�uf��U�/��w��{d�X7_G��P���/>���֜yп�d��^y��?� +Rւs(;m��/zn{<�"����e%~t�|�^�B�ܡ�iY�Ԃ��W���^Mţc��[<ɊM�/�"���LL��?�����_���ޫ_�e�0p��w�w��k��8��Em���kw+�]�\O�j������<���hk�K�f)d`#yP +7�J;Z��3���KU�����܈)�}��S�/�<O A�VD�e�ۗMݽ�[]�;4磌i�ϧcN�rXz�'-�mε��~u�R��MU8�p5�y��#�F��-���/��Y�{�1�Gۦ���,��2#�U[U&ƓU^�Gbh��G�;� V[5�mȼ�c�u#ƿQ¦�R�c�+0jؓ,`��B\��ԑy�x��sl�;��ep�B]j���T��-�a�����a�����DJ�O:h�?��K��M"e�J�E�X�؞�Xl���:hDŽ~ԍ6â�Z���+�A�z�O:��Zsf9�Y�G��AkI�h�B$�1����+�PZ�}�eݐM�n�xI*����R����&��b'&��^}Ř��!� ^����C +��:^ �o`$��C�a�?c�F��Y�0�jȖ4�C��ɢ֝7U�˷C��7����8�5���yO)�v������._x���5��"�gH�~�qa�¯=H��G�$h�x�MH��MM�M���qC�t�ɾ{��ľ`l4���1��Y?RS�s+�e��9D +�jv�|w���ZC`�i纄�����fa�2C=���?��j����g��<!r�F��s�,X�j�{��ӿ�J�_a�x��5�[��,��ܬ#?ubo(��j��T�zN��(��$�h��� +���y���� ��\�4�=�e�ȏ��^+?�B��x�kh��ôT@P`ш�;7$�\'�qg��kgyN�ư"���ZqR��i�Ip�0� +Sk���0�&>S��Կ�0��|����F�zC9�{1�!/�<��v�\���mUNu!~�5���-�z���;~&o,�7���sR,�=�0F�H_mj� k1�ta�s:�槓�[aL��{R����ԡ,���Y*+јl�#8�I�k$G��j��\uH͆�ʋI[�v㭘�m$DS���ڀs��㑩M�=6�+�s�fQ�l�&k�d'v�N��v��<�Ύ#J��Y�3������玪S~�T�* ��i��� q(Q +��AU<3�B�����ҼO�����`���S@��p� P� PN�N�l42���h��M]�����Zۦ�����j3tѯ�{:�],L��amvӊ�&������#+�{l�W��آ�mWA��Ȇ�4ѳ����fˢa�Ģ1n��Ԑ��.T��NFK��m��c�ՙ�P�aL�ov|�>�a53[��vc(����pn�K0�kJ챾����ˢ���72����n?�G�u<��9� +��!�i +�h��6�8տ�Is��7�bH�T�J��Q ��D��PnsK���0��Z @/c0ZujZ��E�n�m���{����t��_ �� ��B#T��$m���O,vz�6U��(d��ޕ[$���]��pn��x`�3��5�����i�N�अ{11�؇?������ ���{��`"s9�u/�8�� �j%�'NmS��Ա���{/��`\5V,H���m�}8 +Td"��`��t�d ��*��\��s�����f[rP}H})ZNU��ꑛ㫈�/�78��b���\tS�1z� �%�&m��c�U����,پ�&�b6��.�ި��s�0��e�Q�&�aF�3Ã�4����1��f�Y8籁G��)�¹层��c��{��9�����rģVƥ���/ R7�K9LE�0Q�a�(�V_`��,�0 P��i�p��r~�c� +���S�*m:���� �bD� 3�|�0d(=b]z$S�Im��������ߠ�0���|����r ���;ʕ����<�#Dl5�emf��_ �0���AɂB6���N�(5�?��p���m;���%AQ�[秉{�]��pnx��x�q3�z�5�����Ǒ>`��:�o�vU���F:E�xd�A���)����g!��"���W��_c�����E��=�բ4�X ]S�e��)�t��*Q��T��ec&y��J�9ހQþd�l��g�Vi +EM<i�a���;�#�_� �P�;"�����\g"+���>���u~����$;U��m�bx�O8�-��G�?%�����ϙ�E�����)o�}^�����i7:z�cJ7*'����}�����.�I��ȑ��;�R]̈́����p�q�������1T�v�n�n(:H��'�qK�4�H��d+xDvN����'�)`�v�'GN�ا�ب7�(�.-�"�f$Ӈ����ٝԖ*urK̳�.e��Gc��;Ӎt�/[M��3hl��WY^�@�.�,��ٱ�:,^���k�g���l�� +P�#�x�D+�I�V��p9�y�`D$��C�b���G?�I�� +�2���3�M���T�X-�����E��*���F���JI���]B��/^@1c�sGb0�>�^��T?� g�D2^B�{�u �4���#�����oc}+)ǡ���;�Tj6�ܞ���@��d��N��k���E�̵����/u]��nlq����Z��%R���.�l0J��Q��B�����F��� +��kEx���Ysz��Nj����_$��u�u�e���GJ�\�)\��?E���#U�%r1�n?G�w�̵~�N��#�����e�7����$�⍡��E��[?D�R�����endstream endobj -2816 0 obj << +2817 0 obj << /Type /Page -/Contents 2817 0 R -/Resources 2815 0 R +/Contents 2818 0 R +/Resources 2816 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2757 0 R ->> endobj -2818 0 obj << -/D [2816 0 R /XYZ 71.731 729.265 null] +/Parent 2758 0 R >> endobj 2819 0 obj << -/D [2816 0 R /XYZ 81.694 708.344 null] +/D [2817 0 R /XYZ 71.731 729.265 null] >> endobj 2820 0 obj << -/D [2816 0 R /XYZ 81.694 708.344 null] +/D [2817 0 R /XYZ 81.694 708.344 null] >> endobj 2821 0 obj << -/D [2816 0 R /XYZ 71.731 636.448 null] +/D [2817 0 R /XYZ 81.694 708.344 null] >> endobj 2822 0 obj << -/D [2816 0 R /XYZ 71.731 621.504 null] +/D [2817 0 R /XYZ 71.731 636.448 null] >> endobj 2823 0 obj << -/D [2816 0 R /XYZ 210.667 600.349 null] +/D [2817 0 R /XYZ 71.731 621.504 null] >> endobj 2824 0 obj << -/D [2816 0 R /XYZ 76.712 583.711 null] +/D [2817 0 R /XYZ 210.667 600.349 null] >> endobj 2825 0 obj << -/D [2816 0 R /XYZ 128.518 540.166 null] +/D [2817 0 R /XYZ 76.712 583.711 null] >> endobj 2826 0 obj << -/D [2816 0 R /XYZ 76.712 503.806 null] +/D [2817 0 R /XYZ 128.518 540.166 null] >> endobj 2827 0 obj << -/D [2816 0 R /XYZ 81.694 485.873 null] +/D [2817 0 R /XYZ 76.712 503.806 null] >> endobj 2828 0 obj << -/D [2816 0 R /XYZ 81.694 485.873 null] +/D [2817 0 R /XYZ 81.694 485.873 null] >> endobj 2829 0 obj << -/D [2816 0 R /XYZ 71.731 470.765 null] +/D [2817 0 R /XYZ 81.694 485.873 null] >> endobj 2830 0 obj << -/D [2816 0 R /XYZ 81.694 454.989 null] +/D [2817 0 R /XYZ 71.731 470.765 null] >> endobj 2831 0 obj << -/D [2816 0 R /XYZ 81.694 454.989 null] +/D [2817 0 R /XYZ 81.694 454.989 null] >> endobj 2832 0 obj << -/D [2816 0 R /XYZ 71.731 439.881 null] +/D [2817 0 R /XYZ 81.694 454.989 null] >> endobj 2833 0 obj << -/D [2816 0 R /XYZ 81.694 424.105 null] +/D [2817 0 R /XYZ 71.731 439.881 null] >> endobj 2834 0 obj << -/D [2816 0 R /XYZ 81.694 424.105 null] +/D [2817 0 R /XYZ 81.694 424.105 null] >> endobj 2835 0 obj << -/D [2816 0 R /XYZ 71.731 421.948 null] +/D [2817 0 R /XYZ 81.694 424.105 null] >> endobj 2836 0 obj << -/D [2816 0 R /XYZ 81.694 406.172 null] +/D [2817 0 R /XYZ 71.731 421.948 null] >> endobj 2837 0 obj << -/D [2816 0 R /XYZ 81.694 406.172 null] +/D [2817 0 R /XYZ 81.694 406.172 null] >> endobj 2838 0 obj << -/D [2816 0 R /XYZ 71.731 391.064 null] +/D [2817 0 R /XYZ 81.694 406.172 null] >> endobj 2839 0 obj << -/D [2816 0 R /XYZ 81.694 375.288 null] +/D [2817 0 R /XYZ 71.731 391.064 null] >> endobj 2840 0 obj << -/D [2816 0 R /XYZ 81.694 375.288 null] +/D [2817 0 R /XYZ 81.694 375.288 null] >> endobj 2841 0 obj << -/D [2816 0 R /XYZ 71.731 347.228 null] +/D [2817 0 R /XYZ 81.694 375.288 null] >> endobj 2842 0 obj << -/D [2816 0 R /XYZ 81.694 331.452 null] +/D [2817 0 R /XYZ 71.731 347.228 null] >> endobj 2843 0 obj << -/D [2816 0 R /XYZ 81.694 331.452 null] +/D [2817 0 R /XYZ 81.694 331.452 null] >> endobj 2844 0 obj << -/D [2816 0 R /XYZ 71.731 303.393 null] +/D [2817 0 R /XYZ 81.694 331.452 null] >> endobj 2845 0 obj << -/D [2816 0 R /XYZ 81.694 287.617 null] +/D [2817 0 R /XYZ 71.731 303.393 null] >> endobj 2846 0 obj << -/D [2816 0 R /XYZ 81.694 287.617 null] +/D [2817 0 R /XYZ 81.694 287.617 null] >> endobj 2847 0 obj << -/D [2816 0 R /XYZ 71.731 272.508 null] +/D [2817 0 R /XYZ 81.694 287.617 null] >> endobj 2848 0 obj << -/D [2816 0 R /XYZ 81.694 256.732 null] +/D [2817 0 R /XYZ 71.731 272.508 null] >> endobj 2849 0 obj << -/D [2816 0 R /XYZ 81.694 256.732 null] +/D [2817 0 R /XYZ 81.694 256.732 null] >> endobj 2850 0 obj << -/D [2816 0 R /XYZ 374.742 256.732 null] +/D [2817 0 R /XYZ 81.694 256.732 null] >> endobj 2851 0 obj << -/D [2816 0 R /XYZ 71.731 254.576 null] +/D [2817 0 R /XYZ 374.742 256.732 null] >> endobj 2852 0 obj << -/D [2816 0 R /XYZ 81.694 238.8 null] +/D [2817 0 R /XYZ 71.731 254.576 null] >> endobj 2853 0 obj << -/D [2816 0 R /XYZ 81.694 238.8 null] +/D [2817 0 R /XYZ 81.694 238.8 null] >> endobj -1401 0 obj << -/D [2816 0 R /XYZ 71.731 198.785 null] +2854 0 obj << +/D [2817 0 R /XYZ 81.694 238.8 null] >> endobj -342 0 obj << -/D [2816 0 R /XYZ 226.737 155.687 null] +1400 0 obj << +/D [2817 0 R /XYZ 71.731 218.71 null] >> endobj -2854 0 obj << -/D [2816 0 R /XYZ 71.731 146.865 null] +338 0 obj << +/D [2817 0 R /XYZ 233.494 185.4 null] >> endobj 2855 0 obj << -/D [2816 0 R /XYZ 71.731 126.99 null] +/D [2817 0 R /XYZ 71.731 176.762 null] >> endobj 2856 0 obj << -/D [2816 0 R /XYZ 71.731 103.244 null] +/D [2817 0 R /XYZ 436.119 166.471 null] >> endobj -2815 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1925 0 R /F48 1937 0 R >> -/ProcSet [ /PDF /Text ] +2857 0 obj << +/D [2817 0 R /XYZ 71.731 153.42 null] +>> endobj +2858 0 obj << +/D [2817 0 R /XYZ 71.731 138.476 null] >> endobj 2859 0 obj << -/Length 2564 +/D [2817 0 R /XYZ 300.596 126.919 null] +>> endobj +2816 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R /F48 1934 0 R /F32 1139 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2862 0 obj << +/Length 2376 /Filter /FlateDecode >> stream -xڭ˒۸��P�b�JbėDfO�q֩�㬵�!�"1j� -Az�|}�� ��(9�J�@���n4� y�5����s�|���7�,-ެgX���1V���۽��� �%n� f��Y�^��u2��G�l���y<����b�Gk'p����T�<�]��ÿU���?w~��yG��M��x�J>;�g���� �xi*����V� ��(i @L� -%mD�����᧹�Z�c��S��iY1��*ۦ�s���tX������p�|m��j��MgG -]�G�@��84UW/���Q�Gfp�Ki��VA��ğ�<�M���Iݨ�9�T.^�$�_*�δ� WyX�4��'�_-��s��h�g�/��p��g ����Q�ғ�iK�,��#Z�- >u I켂!��[ȺT2��D��T�`4�\�[{�H5�IbX�/����]���(Ea�ЄL����2]���X@л� -h�D3>"��Q]K��JT9l����M��d�Z�Ƙ]e�U3P��EhV ]�v�`c��w;����n��%�����Ad�sD���A{2���� ���r�w�Z�+�cO��N�1n���<���id�H-˖�������jrF�G�U�l7 ������=�DL��Tu [NU�`�|��(���H=�tQavX��R/�"P�BTd<<��0fs�̹����A3 �*�����6l`�l��#�Ꚗ}��ZT��� QȀ�]�Z�h�(|[��*�'F��Ra�3|�.oU����##���t��^N�dz����nP�T��F:�.3C����A�{�w���yޢl�.��D����a�����]G���"��0��Ő� C4�)�������q� �N���U�g\����p�;�Ʋ+�x��,�3�f��zn���P��)�=~�RR �O��B,T�2���ɍ�����l86�^4�6�_�j�M�Ί�E��MyЇ�4a��5f ���<?��� -B������_>������'�V�K`yr��OL����+[��r��(��И�QҴ��>��.Yq� -� �EoB������J(��u tN���K^q�n6���oϛ���}Ay��[:��z�ݕ���faq���wC5�~^x_5�M�0 -���T�5�����������!�X=P��>��AM��m��u8��4�����pnj�Q�V���k^?���d��s�w��JH42�e�D�ѡ���D_Ϧ��M�'��n}�l�X�2����� [�ao�������Q�*�.�؈�@�NeEs���W�� ��n^a��4�4��� L�ZiN�%M��wUt�������Z�S�J5���l�dV�<m�tBїh*xC'<���r?M�a�LS>�a����8犘sE|�+���(l�;��c}�K��Rf�8S���-�>�N��+���e -�1�qI8�ĩ����<��F+���Tk����$[6?�I��[4 ���L�[��yl�*�������Mq�U^ �b�N������(J��0M�fj��t������bAAS��f\-���n��JSZ��ia#���ա�rp�;~Y�}-�ۇ����+_QN�<��?J��a.�3�Rut߉��4��-���9���7Х�F.q�6�%ڈ����?�̠��x� �0�iO Zj������*�A�8pO��ך&@Ũ=�荌��3(�W���g��)����"M�&�[#+�@ �Vc���V�ƪ��4p�j�r՞h�U�pޣ� -G܌�{a]Ҿy�:� ���{�[����i� .��T�����-UJ�c�}؏�^�d�0�ӗ&��X�~ya�Ѩo�lԢ����a������@wv뤐�V�r^;7� ��$}I�<(�$4��T��cẸߍk�1<�x�E�ҨW�K��e�_>M�K7%������j�f����}o,0(����LB��p��%�G�~`CXҔ���`R�6��U�UC1f,4� Y@_ǫ�������4��{�M������X��c�ad0�ކ� �n�K��eS��0��(ʃd+|B��F��0�p��tn�!k,ݾ�#S�i�,tF8gKm����l�n���S+x�aF,�t�ߍ��t�c�����O}Yjs6N�(�N�`�%�P�@�I�P���<^���=$�/��J��d����k�/��W>�����9�V��m���v&ʭƄ1�6�~ؖ�a|N�v���vH(�0�W��e|��f�U�����(p������>�nk<����������5vo�,��`s�5a�sSe�r�7���c���}Ay�7)!H�`��K)��{o���f��!w6-o��s�bj1.��1.٠��M�f2`����ˑ��J �|�|e��=Ʈ�0��pTj�8��G�!5�ip�7������/?����b��p|^@��p��4��,�DJͫ����C�T3����J�jar��O&Z�Z�7���{ۻ�(W��D~�}KĘwp��kN�Ծ$endstream +xڥYY���~�_!�K$`��S$�'�;N���ó0��>�ĖĘ���<Q~}�ꪦ(J3]lVWU�]�?����_%!� S�*�m�;o�Û?������������p��lΞ����T�e�$T�������>��],�؛���7yU�E����������S��^��������;����9�+���,�����0��x�`���Ssd`��7������٘�#8�� ����chktl�ÄL�Ot�n{>�eԊ�懵����x���y!~�L+|z�~6����ۦ�y9vV�$@��n����L,�)��W�C0��a��Z͟�ͮ�o�c�����Oݾ9����0�y)��+CkS¶�"����g�֕�苾4B��Cu�[�B�{���D�����M��!|@���VOL, +��p?�z�u��~b��vë慌 '���"?���z�Gs�m��г'`�� +�� �gɩ:g����=n���p�؊��+�l9����?�9�\;���P�!��w���]Q�æ��,�C�H�xǎG�U ��=�3�t�l6�B���Iaskp��6$ط"l��pA S��Se�Q:kz���R#�z��E<?�p�ґ���7C�"�{����-�z .{9��$r���>;�%qy�a@�e�e�̟vĨ��tN:�d(�8c��~?�1w��ݛȯ�{S�K ����aQ��w�C9?Z��N�ݭ���c"t�km6��ʐYMӾ�*N����U�����Wo�#���������#�0�f�ʲp֚������J� +�� >�hW�N�e��O�sy g~�j���z� +�tg��ED�TK����'EA��~�J�l�+�gNG�D���N�N�53_\���-I`��g��`���Ԁ��9���ׂ6b�YX�W�R9�$ײ'j�?�}��@!r,�N��G��*�+W�sp���w�m:L�J ���'}8� +�#6�N�m��љ��H��Mٷ/=ӾD���ћ��2��C�lMe���5�6��=����/JàK���X��1)P�Ux�Q7���s�(�T�� (���(�J��E�$*��Q%��B�=L�ߕ��?=/�h�p6d�=4 �w�W8��m���,��H���Kn<`�6w��ߵ���`7ί���֔�MChr���QuDlr�E���?6=o�����X�]���2�*Bkv}=l��d�h�d�A�K�δaK �fK%V#� Gz!�kAnp��^ ��Jhm�=Xͷ�����8QQSi��A���s@�<������x��lL����_D�0e~�)�XEi��t�w2���n1��f��&�Q� �CKf����(�nH�L��h5�EsM��m+�o�2���ۦ�7��9!��� �X�s��t����'���g�� X�,��?0g$�͞����(֦c��q�<��q�. + +(��+;Q8����[�N��Bܷv.�{���CkEwz����� )=�0��,y-���2B�e3���l�N�:'aP �;�с'Q-K�����ν��7�H��dλ!�p �,�fy�o",��#G�*�Or)B(;�H�L��_&�!:t��Ԧ��m�.SVJ�j��!]� \I:�$����ŕs�|I�X��`��'���'x4����Wd��\1�B��U���8�����X��ǦMQ%h>@��m@���-��Sa8�o���(~|T���3�4խxNS��⍊&<��3ʑG@<�0� ��)&s_+�����#�]���ͪ��E�V�a7i +��1�^�����]C�VM}/gDŽd�E\}7��f_7EN�ҙa2�B�+�H8��x��(Nksc�|�5����l +W�/�=���E +����(��:����@)E1{#m}lz|QZQ��װ�-�xN#�G�XzJ�cp����A�cwlm�djA�dq9�ޭuW��l{�c���� K0��f�7ݽ�j=�REQ�����m{-Bg�od��X���'��L����ck~;��.�"v+�x�\�x�"Y�����n {mtY�x�LJ�f��O�������|��7���H�xJٞ8ק�/�Q�������M��y��~)���Uz͐��C#��7�+�,G8�_L/ɐt��$�fj��n�o9�*� Y��٠"J�v��^�4T�(Ci(�����J����3�/xQ5���WxO�NU3���7y.�q�c�EjZ7}�t��}����X�Y����8/jLP�WxIc���WxO���z�]bP��}cp`wCv�']��Y�AW~�xrG���kK��R��O���Ο�����}���O^m��(W]S��Zk��_]�9��_�endstream endobj -2858 0 obj << +2861 0 obj << /Type /Page -/Contents 2859 0 R -/Resources 2857 0 R +/Contents 2862 0 R +/Resources 2860 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2757 0 R -/Annots [ 2865 0 R ] +/Parent 2758 0 R +/Annots [ 2875 0 R ] >> endobj -2865 0 obj << +2875 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [71.731 590.556 110.234 599.468] +/Rect [71.731 284.869 110.234 293.781] /Subtype /Link /A << /S /GoTo /D (gloss-product) >> >> endobj -2860 0 obj << -/D [2858 0 R /XYZ 71.731 729.265 null] ->> endobj -2861 0 obj << -/D [2858 0 R /XYZ 71.731 718.306 null] ->> endobj -2862 0 obj << -/D [2858 0 R /XYZ 349.696 708.344 null] ->> endobj 2863 0 obj << -/D [2858 0 R /XYZ 71.731 688.254 null] ->> endobj -1402 0 obj << -/D [2858 0 R /XYZ 71.731 657.37 null] +/D [2861 0 R /XYZ 71.731 729.265 null] >> endobj -346 0 obj << -/D [2858 0 R /XYZ 179.498 614.272 null] +1403 0 obj << +/D [2861 0 R /XYZ 71.731 741.22 null] >> endobj 2864 0 obj << -/D [2858 0 R /XYZ 71.731 605.45 null] +/D [2861 0 R /XYZ 71.731 718.306 null] +>> endobj +2865 0 obj << +/D [2861 0 R /XYZ 71.731 649.4 null] >> endobj 2866 0 obj << -/D [2858 0 R /XYZ 71.731 559.672 null] +/D [2861 0 R /XYZ 71.731 623.497 null] >> endobj 2867 0 obj << -/D [2858 0 R /XYZ 71.731 517.894 null] +/D [2861 0 R /XYZ 118.555 584.933 null] +>> endobj +1401 0 obj << +/D [2861 0 R /XYZ 71.731 511.31 null] +>> endobj +342 0 obj << +/D [2861 0 R /XYZ 226.737 473.032 null] >> endobj 2868 0 obj << -/D [2858 0 R /XYZ 71.731 502.885 null] +/D [2861 0 R /XYZ 71.731 464.21 null] >> endobj 2869 0 obj << -/D [2858 0 R /XYZ 71.731 497.904 null] +/D [2861 0 R /XYZ 71.731 444.335 null] >> endobj 2870 0 obj << -/D [2858 0 R /XYZ 89.664 477.147 null] +/D [2861 0 R /XYZ 71.731 420.589 null] >> endobj 2871 0 obj << -/D [2858 0 R /XYZ 71.731 474.99 null] +/D [2861 0 R /XYZ 71.731 413.451 null] >> endobj 2872 0 obj << -/D [2858 0 R /XYZ 89.664 459.214 null] +/D [2861 0 R /XYZ 349.696 402.656 null] >> endobj 2873 0 obj << -/D [2858 0 R /XYZ 71.731 457.057 null] +/D [2861 0 R /XYZ 71.731 382.567 null] >> endobj -2874 0 obj << -/D [2858 0 R /XYZ 89.664 441.281 null] ->> endobj -2875 0 obj << -/D [2858 0 R /XYZ 71.731 434.143 null] +1402 0 obj << +/D [2861 0 R /XYZ 71.731 351.683 null] >> endobj -1403 0 obj << -/D [2858 0 R /XYZ 71.731 390.307 null] +346 0 obj << +/D [2861 0 R /XYZ 179.498 308.585 null] >> endobj -350 0 obj << -/D [2858 0 R /XYZ 210.434 347.21 null] +2874 0 obj << +/D [2861 0 R /XYZ 71.731 299.762 null] >> endobj 2876 0 obj << -/D [2858 0 R /XYZ 71.731 335.039 null] +/D [2861 0 R /XYZ 71.731 253.985 null] >> endobj 2877 0 obj << -/D [2858 0 R /XYZ 71.731 279.658 null] +/D [2861 0 R /XYZ 71.731 212.207 null] >> endobj 2878 0 obj << -/D [2858 0 R /XYZ 510.307 230.009 null] +/D [2861 0 R /XYZ 71.731 197.198 null] >> endobj 2879 0 obj << -/D [2858 0 R /XYZ 71.731 209.92 null] +/D [2861 0 R /XYZ 71.731 192.217 null] >> endobj 2880 0 obj << -/D [2858 0 R /XYZ 71.731 196.968 null] +/D [2861 0 R /XYZ 89.664 171.459 null] >> endobj 2881 0 obj << -/D [2858 0 R /XYZ 71.731 191.987 null] +/D [2861 0 R /XYZ 71.731 169.302 null] >> endobj 2882 0 obj << -/D [2858 0 R /XYZ 89.664 171.23 null] +/D [2861 0 R /XYZ 89.664 153.527 null] >> endobj 2883 0 obj << -/D [2858 0 R /XYZ 71.731 169.073 null] +/D [2861 0 R /XYZ 71.731 151.37 null] >> endobj 2884 0 obj << -/D [2858 0 R /XYZ 89.664 153.297 null] ->> endobj -2885 0 obj << -/D [2858 0 R /XYZ 71.731 151.14 null] ->> endobj -2886 0 obj << -/D [2858 0 R /XYZ 89.664 135.364 null] +/D [2861 0 R /XYZ 89.664 135.594 null] >> endobj -1404 0 obj << -/D [2858 0 R /XYZ 71.731 102.323 null] ->> endobj -2857 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> +2860 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2890 0 obj << -/Length 2039 +2888 0 obj << +/Length 2252 /Filter /FlateDecode >> stream -xڕYY��6~�_a�IF�l�G��$A��Xd�@K���,):�����b�N[j����*�n��� ��M`���;��m��;ss����Y��3d?�|}x���8�HD��9�6�i���6�c�г7��w㛋,U���g��߯�k��5���L��e��I�L��8�������9��Bg�x��|���a[����� ���㡂��mǀ�Z�Q�E^�1`0����mKx^�w���,6X��� ��`{Ƨt*N3LYI7O4�����x��%K�������J�u2O�P�Y�m��4���x�oA[R� 3CM��-[Dl�k�5�V��2�ӴU�|A3�ں� 0�YYɸIc^Ӓ\��]�@�*KU��Oh���@�����|��"wv�� ��ҞE+��b��a�}WJ6��ԉ�IR>�����]6� ��o{ �xPُ0�#����#Zb.+��ﻏd�{ټeU��-�~����:���F؍�l�}N����M5n��h� �u5�E52�b/��^��j\�=c���w7kA�c�B�Ñ�G���"�n�$�/hULs���&7�\t�එ���HTZ���-d�\%�Yg ���Ǚ��WI�%��Ox5�g�c�4x��$aX��Uz�4b��^�/�W <�,��P^_0�YoxM��-�~����\^y���xi��]�s�<\��ș�wɏhVեN�V����ȳ��������M'��6�S"/\��U�ː{���z.�?�d�"Wo��:\-a�m$$��8���'r;��ś���y� -���9� ���v���A5��+EE+�Cy-3�4��:b u(�� ��`9:�{`���4�� x� ^a�m*H��V�F�����)��cW��:=�Yr�̬}�?uB3�<��h7,h{`<_��.�9�\w�Am���N>1/K(�y��k���%�v�v�I���$�/TO��'Z���I�p�Von�3۸�o�Z�s����g��e�b��S$��n��Sh�=�toY��}� �}"J�=q�N��)B7Xm9r�8��d������Y5�N�#t߾�j���q��qBW�u-5�0K�����0d����d�آ��<nCz��68��V��g�T���宫o�,��!���Yo�oE��������3]�N�J�ԕ���r��^_���=RM���0��c�j_�@���[�=c;��5�]_�$���K��Bwq -���۟�i �+Zu�0�u9�f`�Yf:�2Äu]T �h��~Z����*@t���VʢN�T�ww����/��<�;�f�CWXNj���?���w��i��1H -`�b�np�u�5�^/�R���#,��Һ�HiM�RVЄ���ÉA�T�P٪��32R�ľ/�GK�B�"{�gh^�ݢ�0)藞ݸ��R�8���Yy��!U�1�D1h�j`2�j��}i�d���Y(.ax���Sӱ��J}�,ao�0�I�R�R*�#[X���#�R0w��.�Yo����c8�8d`�Fe����'�Pw���T4V��̠&�@����� ��H��yD5�D̡˼ʆ^|��X� -�S;�Թ恁���{r���x*�/� !�^2������g�1�_��3�u,oDөA����A�R�)����u#���;��o푦3��,�`�'ZP)h�?ض���N� y�dA��<���_>5�ħ����W߮p�c�=J(�*U���:���KjH?Gd��#�DL�Ze�'Z���E���Y�\�Og��`���M�X���:�4c�2�U�<W�OE�7a�O���yk�<� @��P�K��Q���o�~�A��OL$G�І�p1�jXӼR���q"uQ��kbN#H��������N4��營�=�Kr��';X�t��B��J���g&h%��{fV������ϝcc�h���v��Vp�����b@v_ �<�E����a������Ca��Xܥ?�K�?��"�endstream +xڕۮ�6�=_a�%2p��Ֆ6O'粛�I���E��ڢm"��4q��3��%ْ���G�p83Ε�f.�y�������/��6�����7c,e��y�~�� �%N�f��,t]g�&�U�;q�����짃86��/�ȵ���i� +U\{�o瞽�Se����Û���w��$n�gp���W�|�n�a��{.��s/��" �osϵ˪:�TlʖW���Ad[OYY��2����c3�]���DMu�hb}�U��4�u���]6���Qk(�jU��h�ykd��,���L�6�x+xp4�� +����|'�[���خQ���I�� 4{�Z���go�|0/w��K�\Z��� +6�X��2m� �)S�7%�D۔�h�Vdى������b$����/��~�����/�|�$��3�O�ѩ���͂;�h�`屁IM��l�T�;�][ѷhYF�m9��:�����P֒������ɹ�i�I^�`���u3o��^�� �F��K-l�D(�*����X��7�L���E 9[���C�Jv�nj�5��IX4��qh���Z&Eh�[�c���-r^:�-ӪЀi��Z��n��ʼn��fB�ci���ձ҇x`�b�*���?J��0����-�wb9A�ɧ� ���9k���'Х�hԷ�Z��h�w��i@0U;4���� +��U����b�;s�s�xAb�=�_#��+Z��@X�e�MV�;(U���2|`������c������R��1���i+� Y�lU��� +�*Y�ZmT���}S�5v�`B�E]�@�����G�P�i�D� +�!� ���|_8 ��j���r��m�0�FK��g�`��n���a��/t܇���:���Q�90����G�gj��=���#mz*�F��tm�� +���V_}(�ł=I_�J�B'4��T�o������]�q�4(��L��hhtV�C�᥏_>MnK7&�7��,Zx����䈗� m������rfp:���;h�d�&�؏l4�+��,�����g�,�eE1f,4� ����A�.��s6��F�g�+ 9,%�Q��� +��@��ɟm���:��ټL��l��=�b/� +������=�<$�?�4d�E���~��2Kk�,tF8g���Fg�AA�N�Z������jca�U�4ϔa��I�39[��M�S�&���.J�x.r��j�j�x%8~���'�8���R�h����b��R$S;������k,OJ�X[̀^�/=�9����*��,����x�O(��u}=$��y�%�8q��p����̛���}Ay��4���~/�j��Bn�`m_�j��|z���:����)ة���u��L�Q�\��N�y��� �d�u���W�3��%dboʦ1*����8S*�]���;�L*�0��������f<$��_uJ��:� �R +!��-p�|�� tȝU��e����R,�bj1.��1.����u�f2`����ˑ�,�@�:��Bl2H�X��vS��R���=� �K ��[lQ�8�^���à;,�� ��d�Mky[�0�B��Ԭ��-���8�APM9�K��U�p_�\9Rш���Xg��a���.��9r��U�wz�~��be +�������5z�C���V�H�7X���)0�i�x���J��z\j�<�w]���CS<�ϧ�-��e��F�*�U������]�G[��fe&j�u��i�9�6�?��&E�)Y3�t{�_�Rg�bH��M:���ǚ��dn�-�9�n*������۹��3J ��|>��n0������##C���iJ����6 �hM�1���nk�2�D¸����W�4�!Qd����80 K죫�Sā��b���,��r�w11�������V�N������ʹg�X��Lm�^�6��������ҥ���d���Df�]�g�r�f�1������}AV��M�)/s���������,��s}0��D��ޛN)�����d�IH�[�Ӊr��!\^q?a��8a~T�e�4��&p 8O��j��2Ǝ����?,ҫ���!���;���O���?�z��t� �W\�F1��B�+�Ài�3��e��^��Z�����4�8`�C�I�v��~t����q�F�� �P1���X��u�/��c>�vn�?4B`s���������+T�r�#T�ǎ�"�D��/Jל��6�endstream endobj -2889 0 obj << +2887 0 obj << /Type /Page -/Contents 2890 0 R -/Resources 2888 0 R +/Contents 2888 0 R +/Resources 2886 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2757 0 R +/Parent 2758 0 R +>> endobj +2889 0 obj << +/D [2887 0 R /XYZ 71.731 729.265 null] +>> endobj +2890 0 obj << +/D [2887 0 R /XYZ 71.731 718.306 null] +>> endobj +350 0 obj << +/D [2887 0 R /XYZ 210.434 632.205 null] >> endobj 2891 0 obj << -/D [2889 0 R /XYZ 71.731 729.265 null] +/D [2887 0 R /XYZ 71.731 620.034 null] >> endobj 2892 0 obj << -/D [2889 0 R /XYZ 71.731 741.22 null] ->> endobj -354 0 obj << -/D [2889 0 R /XYZ 176.83 705.748 null] +/D [2887 0 R /XYZ 71.731 564.654 null] >> endobj 2893 0 obj << -/D [2889 0 R /XYZ 71.731 696.925 null] +/D [2887 0 R /XYZ 510.307 515.005 null] >> endobj 2894 0 obj << -/D [2889 0 R /XYZ 71.731 664.099 null] +/D [2887 0 R /XYZ 71.731 494.915 null] >> endobj 2895 0 obj << -/D [2889 0 R /XYZ 71.731 653.205 null] +/D [2887 0 R /XYZ 71.731 481.964 null] >> endobj 2896 0 obj << -/D [2889 0 R /XYZ 71.731 648.224 null] +/D [2887 0 R /XYZ 71.731 476.982 null] >> endobj 2897 0 obj << -/D [2889 0 R /XYZ 89.664 625.409 null] +/D [2887 0 R /XYZ 89.664 456.225 null] >> endobj 2898 0 obj << -/D [2889 0 R /XYZ 71.731 623.252 null] +/D [2887 0 R /XYZ 71.731 454.068 null] >> endobj 2899 0 obj << -/D [2889 0 R /XYZ 89.664 607.476 null] +/D [2887 0 R /XYZ 89.664 438.292 null] >> endobj 2900 0 obj << -/D [2889 0 R /XYZ 71.731 592.368 null] +/D [2887 0 R /XYZ 71.731 436.136 null] >> endobj 2901 0 obj << -/D [2889 0 R /XYZ 89.664 576.592 null] +/D [2887 0 R /XYZ 89.664 420.36 null] >> endobj -1405 0 obj << -/D [2889 0 R /XYZ 71.731 569.454 null] +1404 0 obj << +/D [2887 0 R /XYZ 71.731 387.319 null] >> endobj -358 0 obj << -/D [2889 0 R /XYZ 194.2 526.356 null] +354 0 obj << +/D [2887 0 R /XYZ 176.83 344.221 null] >> endobj 2902 0 obj << -/D [2889 0 R /XYZ 71.731 517.534 null] +/D [2887 0 R /XYZ 71.731 335.398 null] >> endobj 2903 0 obj << -/D [2889 0 R /XYZ 71.731 489.689 null] +/D [2887 0 R /XYZ 71.731 302.572 null] >> endobj 2904 0 obj << -/D [2889 0 R /XYZ 71.731 474.745 null] +/D [2887 0 R /XYZ 71.731 291.678 null] >> endobj 2905 0 obj << -/D [2889 0 R /XYZ 71.731 425.694 null] +/D [2887 0 R /XYZ 71.731 286.697 null] >> endobj 2906 0 obj << -/D [2889 0 R /XYZ 71.731 411.303 null] +/D [2887 0 R /XYZ 89.664 263.882 null] >> endobj 2907 0 obj << -/D [2889 0 R /XYZ 71.731 406.322 null] +/D [2887 0 R /XYZ 71.731 261.726 null] >> endobj 2908 0 obj << -/D [2889 0 R /XYZ 89.664 384.847 null] +/D [2887 0 R /XYZ 89.664 245.95 null] >> endobj 2909 0 obj << -/D [2889 0 R /XYZ 71.731 382.69 null] +/D [2887 0 R /XYZ 71.731 230.841 null] >> endobj 2910 0 obj << -/D [2889 0 R /XYZ 89.664 366.914 null] ->> endobj -2911 0 obj << -/D [2889 0 R /XYZ 71.731 364.758 null] +/D [2887 0 R /XYZ 89.664 215.065 null] >> endobj -2912 0 obj << -/D [2889 0 R /XYZ 89.664 348.982 null] +1405 0 obj << +/D [2887 0 R /XYZ 71.731 207.927 null] >> endobj -2913 0 obj << -/D [2889 0 R /XYZ 71.731 310.028 null] +358 0 obj << +/D [2887 0 R /XYZ 194.2 164.83 null] >> endobj -2914 0 obj << -/D [2889 0 R /XYZ 89.664 292.195 null] +2911 0 obj << +/D [2887 0 R /XYZ 71.731 156.007 null] >> endobj -1406 0 obj << -/D [2889 0 R /XYZ 71.731 272.105 null] +2912 0 obj << +/D [2887 0 R /XYZ 71.731 128.162 null] >> endobj -362 0 obj << -/D [2889 0 R /XYZ 150.026 229.007 null] +2886 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2915 0 obj << -/D [2889 0 R /XYZ 71.731 216.569 null] +/Length 2311 +/Filter /FlateDecode +>> +stream +xڅYK��6�ϯp�ɮ��zX���&��l展��vr�%�ֶ,j%:��$@=,K��j� � ��݅�"rY���K�����Ya�\��˦�������/���bwXl�EN��|�Ł��e�]�p��j���g�����2o���G$}Y���yQ���~��ku~Ē؟]�����1�/��K\�"rb�o�fy�H%>j��o@i9����Dk���B4J�W*+�˲���m��eqC�*�iLJ�3jd�H�W-�K���p���Du1ӗ��Hg�\�D�x�4B��(�ٮ����z���3�����J�z���n\m���w A�!5Zt/���dh./�~�B�����mh��V1���<�H7�vv�Nk�f��F��i�.f �BMp�2���Y����~�x�NQN�.B<f;��Ȳ��3��|'Fo�e��℅�����o������u��>��k��w�38Ԓ���L�B�$W��Q�)�s\o�|Ϥ��Eo��4�X�s���;2ߧ,{�EN�V{��1 ��Ώ'��ʺ��%!x�,�� ��ǜx�x˔�C/ߟ2�X�S��( +Պ?��~H6�e ��$y�����n#(��K�|��h���q<Qd���r]J襼D&�e���@BL�nd��5��ӹ����z���� ~9�T��U�돕�4�����Jp�� ָ2��`��̀�dY^�{A�_����^��Wy4)�A��'��� ma仞D-pDyIOIՒ�[�U�^ +^#A���Y����;��,s�i[v͖�"�����`_�(��I��R�X��H�ܠ�/�A5�_� bz�V������k���] Y���`DBsO��eE��A���]��b#��~��ğ��g2��E��NF�X��P��}'V�~�ܐ�2Р�����Z����;7��Ѩ� +ۂ��/�16.���h�3ز��c/�����<���uF"��p�A�O�yp�m�p5Af^c�M��:�_����ȸP�n�y~@�3��ޠvp96� + �{.�4��1��M(�pt�j*��2�10���2=֦i��!Er�����n���uqy9"���VmD���8 r0 ~�<�o�o;���MfH���m0S����$�^s;�&��x�'��D���:�R�b�&��tH������\5�8�q�7K�,ub �$Ǟwl�"��$V�i^����TT���X���Zja��k&�*wwI�`��<�|`s=�S�߰}�k)v~<�ܰ*b��ISW7د��/|o%���p6)���xMs��Fb���:S�Ox�w� ��� ��)��I�����S��8�adR�S��k3��W��-��M����Ρ�:ڡ�®nsFX�p�)������"�K�� ?_�B�3f�� �0�C\��#LJ�輦��oS�n"f������Dމp���K��Z���H�����od ��|��M=���@G����&X��%�jM���;)��<V���ԃ���?�L�c�����-���=�t�/��������a�S�P�ݴuJ+S��Y{{��Sji���u� +|.r{1m��#M�"�$`l�&��K�D��#��e`�~o�c��n�ߦn�P���V3=��jƲ�ވ�zZ���k �����;������/�u�10�*����g=�B�����-:T���?�p��>�p�|����B}{3��՞hU[� +�F|Q�G.�mc�>��,Dk�bLm�mN�:��^>&ac��� �����&3!�5������r ք9|sŰ���Q����#�@w�x^��`-��V��Omn���JQ�i*��uw��z�M�ߦ��f��.x^^�$�:���#��7���،�;���{��(�6s��C��ē�sb���Ϥ�e��䁮疛�}'v`9���^�g/�aA�&�,��t/���,tAcB�}�SL� �_��Bc���a��V-�� ��Uw�����D�4èw����̀#^ 7�w�7T0i���o^*y'��1CǖK�=��4A�����Y��TQek�Z�Z}m�9��16�ʜ����w�u�-��5E���@ށߤ�`�'ED�g�K�E�:������2��N,�>�i2�e.���Zg�!ި�~=I$�KK�MS��ڢZw��.���zL�_�&E�Bd4]��=�aQo���:ev��� +x�=C�g����N��Y�F��$v,�/f�g���~k���endstream +endobj +2914 0 obj << +/Type /Page +/Contents 2915 0 R +/Resources 2913 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2960 0 R >> endobj 2916 0 obj << -/D [2889 0 R /XYZ 366.767 207.448 null] +/D [2914 0 R /XYZ 71.731 729.265 null] >> endobj 2917 0 obj << -/D [2889 0 R /XYZ 395.819 207.448 null] +/D [2914 0 R /XYZ 71.731 741.22 null] >> endobj 2918 0 obj << -/D [2889 0 R /XYZ 396.191 181.545 null] +/D [2914 0 R /XYZ 71.731 718.306 null] >> endobj -1407 0 obj << -/D [2889 0 R /XYZ 71.731 166.437 null] +2919 0 obj << +/D [2914 0 R /XYZ 71.731 668.792 null] >> endobj -2888 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R >> -/ProcSet [ /PDF /Text ] +2920 0 obj << +/D [2914 0 R /XYZ 71.731 654.401 null] >> endobj 2921 0 obj << -/Length 1847 -/Filter /FlateDecode ->> -stream -xڭ˒�6�_��ʓ5+R˹d�N�i�!n/m\�k�+K�$w�~}�(��f:��x�r�'gK)�j%T��6��p��??�I�X0������S�Vb�F���,C�W�e�D���z�{��^[S�* �H��~{�˼�����և�\����?�?�}\w��h)VYt�=3�OE3�(N�Aw�p)�XZ�"� �l-��= ��ñ04��E�����]��B�B��b��������$�g.�����ۇ|�oi�2�a�K^���y捽��!]�`����v�P*���NŖq�C�ŝ��=�U�v�0OUm��jS���X���*iC��Ћi��8�렪�F ��Tb��4��N�z8ny$�p��D�d}+ʔ�R������^FB�$CTO����<вa�9�b#�YhCc�ox��L��F��t��<9���4��^}�JD_H�=���c�̙l��&���;����K��^:�r.&g�ʀ���!W�dx�Y��V�i_�u9v���M�h��ډ�ɍ���D���d�6����qd��Hs(i�Gƶ�EaX��=�E�y���M�Mb�f_���0�ӑF� �@6�5�-��\���N��M+:��I�р,-)��b��;����b� �4-�o��~i{dc�����3�uu\l�K e��X}�I9@k�Ƽ4Y;�p��c.!*�*[��]tp�����d���nօ9�3k��7�W��[�z�u�Y��!&,I���m�`�́�mՔ�]����ݢ}�v�`WR��i��h7p�>:v"��\�ķ%��LJ�A(IOInL�u�ݠ}�v 9��Y^Ɠ�d-��F���R��\n��R W鋜}�qN��1���H��z�a&�� �_<��1���p��Z91��K��>�n^>7�,x�<�{�y�p�@��Ƽl���i�J'��$�@�Z�]:p���>�ҡf7�u:4�f~���{����8]��{�D{/��ɶ��S�C1�RPx0S��@��d�Z��z�ZnѾ@��攙&X=�4 ��Wc�?^������+�*��Lm���Ho��ظx.�tn���x,��(Jc�|�e�G>r�%��(�gW�����Yvh�``��#���:�7�8o`{�\{�X�Z�~�A} -%P�F��;�(��5X��Ӑ��ՆJB�T+{���|�\���6.�B�3�F���Ld+�w#��0����j�Dl;����%��Y��bW�����-�-:�b\�T���Vm�)���v� -(#hOͰ��` \&O�5H�g��M�����sƒwh;�]�����r,��Z�+��GRW9�ʾ��=tSRw ��B�$��ݝM� �;F[���`lmއP@q�h3��&�+�uټ���T����)�F����f���M��A��x�U��\SW�~K��M3�j/�(��pӞ��;s�����ϓ��(���p�,�p�ş�K�8�q'�8�Ћ�����O/�E�2H)��Iy�#.�w�Q�{,4:�=����kz!�ݿNMK���%��e�B��ڞ/DMM�6M��Buu��[���\��㢇{�9��=���1÷#��5��%����?4A�ӧX<�8h[��L�^K�!�"�}�8}��P��U�M��� �L?�]����<��$W�� �lk0��(*�v�`�]ZЏ���}���s�) -�B"��F�rvco|fz;�����׆�@Ж��ၼ��z�!2�Eb�~4���;]3ʷ��(��r� L�KN���+�Յ�� �3��9�̀L��_-�)�Pz���W�d���@�*�Ěd2�B>��k���endstream -endobj -2920 0 obj << -/Type /Page -/Contents 2921 0 R -/Resources 2919 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2966 0 R +/D [2914 0 R /XYZ 71.731 649.42 null] >> endobj 2922 0 obj << -/D [2920 0 R /XYZ 71.731 729.265 null] ->> endobj -366 0 obj << -/D [2920 0 R /XYZ 235.992 707.841 null] +/D [2914 0 R /XYZ 89.664 627.945 null] >> endobj 2923 0 obj << -/D [2920 0 R /XYZ 71.731 697.698 null] +/D [2914 0 R /XYZ 71.731 625.788 null] >> endobj 2924 0 obj << -/D [2920 0 R /XYZ 260.965 687.716 null] +/D [2914 0 R /XYZ 89.664 610.012 null] >> endobj 2925 0 obj << -/D [2920 0 R /XYZ 154.091 674.765 null] +/D [2914 0 R /XYZ 71.731 607.856 null] >> endobj 2926 0 obj << -/D [2920 0 R /XYZ 287.74 611.004 null] +/D [2914 0 R /XYZ 89.664 592.08 null] >> endobj 2927 0 obj << -/D [2920 0 R /XYZ 258.748 598.053 null] +/D [2914 0 R /XYZ 71.731 553.126 null] >> endobj 2928 0 obj << -/D [2920 0 R /XYZ 276.999 598.053 null] +/D [2914 0 R /XYZ 89.664 535.293 null] +>> endobj +1406 0 obj << +/D [2914 0 R /XYZ 71.731 515.203 null] +>> endobj +362 0 obj << +/D [2914 0 R /XYZ 150.026 472.106 null] >> endobj 2929 0 obj << -/D [2920 0 R /XYZ 311.022 598.053 null] +/D [2914 0 R /XYZ 71.731 459.668 null] >> endobj 2930 0 obj << -/D [2920 0 R /XYZ 76.712 580.12 null] +/D [2914 0 R /XYZ 366.767 450.546 null] >> endobj 2931 0 obj << -/D [2920 0 R /XYZ 89.664 562.187 null] +/D [2914 0 R /XYZ 395.819 450.546 null] >> endobj 2932 0 obj << -/D [2920 0 R /XYZ 208.796 562.187 null] +/D [2914 0 R /XYZ 396.191 424.644 null] +>> endobj +1407 0 obj << +/D [2914 0 R /XYZ 71.731 409.535 null] +>> endobj +366 0 obj << +/D [2914 0 R /XYZ 235.992 372.32 null] >> endobj 2933 0 obj << -/D [2920 0 R /XYZ 71.731 560.03 null] +/D [2914 0 R /XYZ 71.731 362.177 null] >> endobj 2934 0 obj << -/D [2920 0 R /XYZ 89.664 544.254 null] +/D [2914 0 R /XYZ 260.965 352.195 null] >> endobj 2935 0 obj << -/D [2920 0 R /XYZ 178.191 544.254 null] +/D [2914 0 R /XYZ 154.091 339.244 null] >> endobj 2936 0 obj << -/D [2920 0 R /XYZ 284.412 544.254 null] +/D [2914 0 R /XYZ 71.731 332.106 null] >> endobj 2937 0 obj << -/D [2920 0 R /XYZ 71.731 542.097 null] +/D [2914 0 R /XYZ 220.591 321.311 null] >> endobj 2938 0 obj << -/D [2920 0 R /XYZ 89.664 526.322 null] +/D [2914 0 R /XYZ 71.731 314.173 null] >> endobj 2939 0 obj << -/D [2920 0 R /XYZ 89.664 513.37 null] +/D [2914 0 R /XYZ 89.664 293.416 null] >> endobj 2940 0 obj << -/D [2920 0 R /XYZ 202.639 513.37 null] +/D [2914 0 R /XYZ 299.943 293.416 null] >> endobj 2941 0 obj << -/D [2920 0 R /XYZ 71.731 511.931 null] +/D [2914 0 R /XYZ 71.731 286.278 null] >> endobj 2942 0 obj << -/D [2920 0 R /XYZ 89.664 495.437 null] ->> endobj -1408 0 obj << -/D [2920 0 R /XYZ 71.731 459.572 null] ->> endobj -370 0 obj << -/D [2920 0 R /XYZ 194.361 420.199 null] ->> endobj -1409 0 obj << -/D [2920 0 R /XYZ 71.731 417.008 null] ->> endobj -374 0 obj << -/D [2920 0 R /XYZ 152.762 385.729 null] +/D [2914 0 R /XYZ 164.608 275.483 null] >> endobj 2943 0 obj << -/D [2920 0 R /XYZ 71.731 379.602 null] +/D [2914 0 R /XYZ 287.74 275.483 null] >> endobj 2944 0 obj << -/D [2920 0 R /XYZ 188.442 366.8 null] +/D [2914 0 R /XYZ 258.748 262.531 null] >> endobj 2945 0 obj << -/D [2920 0 R /XYZ 71.731 348.703 null] +/D [2914 0 R /XYZ 276.999 262.531 null] >> endobj 2946 0 obj << -/D [2920 0 R /XYZ 71.731 348.703 null] +/D [2914 0 R /XYZ 311.022 262.531 null] >> endobj 2947 0 obj << -/D [2920 0 R /XYZ 71.731 337.72 null] +/D [2914 0 R /XYZ 76.712 244.599 null] >> endobj 2948 0 obj << -/D [2920 0 R /XYZ 91.656 319.975 null] +/D [2914 0 R /XYZ 89.664 226.666 null] >> endobj 2949 0 obj << -/D [2920 0 R /XYZ 71.731 307.856 null] +/D [2914 0 R /XYZ 208.796 226.666 null] >> endobj 2950 0 obj << -/D [2920 0 R /XYZ 71.731 307.856 null] +/D [2914 0 R /XYZ 71.731 224.509 null] >> endobj 2951 0 obj << -/D [2920 0 R /XYZ 71.731 297.061 null] +/D [2914 0 R /XYZ 89.664 208.733 null] >> endobj 2952 0 obj << -/D [2920 0 R /XYZ 91.656 279.128 null] +/D [2914 0 R /XYZ 178.191 208.733 null] >> endobj 2953 0 obj << -/D [2920 0 R /XYZ 365.427 279.128 null] +/D [2914 0 R /XYZ 284.412 208.733 null] >> endobj 2954 0 obj << -/D [2920 0 R /XYZ 71.731 267.009 null] +/D [2914 0 R /XYZ 71.731 206.576 null] >> endobj 2955 0 obj << -/D [2920 0 R /XYZ 71.731 267.009 null] +/D [2914 0 R /XYZ 89.664 190.8 null] >> endobj 2956 0 obj << -/D [2920 0 R /XYZ 71.731 256.214 null] +/D [2914 0 R /XYZ 89.664 177.849 null] >> endobj 2957 0 obj << -/D [2920 0 R /XYZ 91.656 238.282 null] +/D [2914 0 R /XYZ 202.639 177.849 null] >> endobj 2958 0 obj << -/D [2920 0 R /XYZ 363.424 238.282 null] +/D [2914 0 R /XYZ 71.731 176.41 null] >> endobj 2959 0 obj << -/D [2920 0 R /XYZ 71.731 215.368 null] +/D [2914 0 R /XYZ 89.664 159.916 null] >> endobj -2960 0 obj << -/D [2920 0 R /XYZ 273.602 202.416 null] +1408 0 obj << +/D [2914 0 R /XYZ 71.731 124.051 null] >> endobj -1410 0 obj << -/D [2920 0 R /XYZ 71.731 172.364 null] +2913 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R /F35 1463 0 R >> +/ProcSet [ /PDF /Text ] >> endobj -378 0 obj << -/D [2920 0 R /XYZ 244.6 135.148 null] +2963 0 obj << +/Length 1860 +/Filter /FlateDecode +>> +stream +xڭXK��6���-�d�H��R/��tڙ��^�h��V#��%g������H�Nfg�� ��A'����:�Y Y���.^<��w s��e��ܽy���JTE��<.�8�Z�S)�\.6�o�w{Տ��\�<�RA�C}h�f�z�=��i�DO7m���o~��~���ӵ�����9��d�H2�f*���"�*�_*J!Q�u=l�i��{P#����!)����ċU��l�OX¯�"�T{�n�z�lKJQI:����;��d��2�>-�<�D�G��OK���oHv�/@\Q�lY��"��=� ��H���*�K���LH)�@�:�l��"/������4844|���n5z(�{5�L�0���h<1��-2���!��;�>ҧy�����U��L7Wc��j�����+��K{����k%�����ou��y���ZV�ݲ�cA�6{��-�W�κ�ƤI�OK��� ��IԾ,�<��\_3����QWʴ3�?��}}˼�Ưe�I�M�2��2oo��Z�]��Q_�0��d�4e�q�O��s4� �@Ϋe�GJ<�?��q����LJ8N��m��<�!�j���c��D��2z�7;>j�<�y��SO��+�m��Ы�� +y���qF�4؊�mrA�`:t����lM�rfj �G=��.U� +����&ϙ�Y�`כ�6;U��K���kGt֗���ɦH��2����y�k0�j�?���_� +��s�H��r��e�S�X[雓���&c�H +��� 9I�HȮ8!��� ;4r;��/j��W�D���,�yO�ZHHb �� 9K��P� 牏�i��}k�D�HS� MW7;5j��YT�g�G���j���E;�jcQp�� �ӣ����S�?�9c��R�5�2ye�T�Tz���D��p��Y�o���%��5��S-U�v�Bg�C�_t�3�����Zi�͘���n��F��e�I��4�]����ސ�:j{a�h[\K@8wꀙ?7����5M{@��E�&���C�F7q���32�tPuX��U=���:36�/�5��4�=�G^�O>��e��;�e��Ya|Y5!��؛)q1��y-�#0������r�$���\���J$i B(-�E�Ι���B��yx^𱭮v-/,���";C�p�8�������D<��S���$I��m�H�Z�v���A��<IgЅ��怗DB=v�kM�Җ'P������"�D�365��,�:wd��(�G��L׆意c��)Y�Q��i�z%%,�z]_��_��a��C�r{��������5I�n�mخ�(�|�/��� �&��^z�8�i]r�z�8_{t>�y���(��}�<8�����y���y��V5�o��t\�=�P<��R�/���r ��ԣ���z��9���><h���4���M�h��L����\�P.\��e�4�baT��@�}d� G^)>)вi�6H�������DH��9�Rc�g�ܫ =������BA;Skb�����k�c����y�����ef��Hj:A�͌�R틡̹�C �TK2$Hѧ���{sD�ZQX����2��u,sڜM],�L�T���B>�j��l?Z�7-j�4W� ��Qî�[3�� +u'v�p�f�Sx�RѲ}k�]��h�����1�}�05хMrH�ր�텁H�t���[��@�Q�4���ަ�r��:@�;tx�s��A�e�Z�bdW��{��#�c�o��/RY����ݵ��^�������/Y)Jx�}��։����\�a�K�ɳ�����Q���Ǔendstream +endobj +2962 0 obj << +/Type /Page +/Contents 2963 0 R +/Resources 2961 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2960 0 R >> endobj -2961 0 obj << -/D [2920 0 R /XYZ 71.731 124.783 null] +2964 0 obj << +/D [2962 0 R /XYZ 71.731 729.265 null] >> endobj -2962 0 obj << -/D [2920 0 R /XYZ 419.444 115.024 null] +370 0 obj << +/D [2962 0 R /XYZ 194.361 708.149 null] >> endobj -2963 0 obj << -/D [2920 0 R /XYZ 129.275 102.072 null] +1409 0 obj << +/D [2962 0 R /XYZ 71.731 704.957 null] >> endobj -2964 0 obj << -/D [2920 0 R /XYZ 390.741 102.072 null] +374 0 obj << +/D [2962 0 R /XYZ 152.762 673.679 null] >> endobj 2965 0 obj << -/D [2920 0 R /XYZ 418.487 102.072 null] +/D [2962 0 R /XYZ 71.731 667.552 null] >> endobj -2919 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R >> -/ProcSet [ /PDF /Text ] +2966 0 obj << +/D [2962 0 R /XYZ 188.442 654.75 null] +>> endobj +2967 0 obj << +/D [2962 0 R /XYZ 71.731 636.653 null] >> endobj -2969 0 obj << -/Length 2200 -/Filter /FlateDecode ->> -stream -xڕYI���ϯ��T������d��s��R)��BKLS�BR�n���nR���Bo����W!��U�U�'ڪ(KW��C�:��_>h���f��q���Oq�ڪm�vO�$UnWy�"�V�Ï�w's�m��DiĊ���s�TЫ�Ȥ���Vum�?�����ݠ;�s�-�w��<7�E�h�w3,T�$d�ߞ@}�ß��06hQ'�1qomã����Y$_��4�.��p�45�R��\k�w�]o����a���k�������j_`��r���q3c�|O��v�j��˩*O3���6�o�#���:�; lçCß� ��ٶ1g����dz!��Ëm;G����ih�e�OQ�Q�7�Z�&����J[��,��� �L#��M%|�뫧W�g�'�UN����`(�������*�p���leS��_Gap=~m�ޔ�3�ӫ��$�r�tZ!r&9�rR�' $D ,X�V��!��e�)�u��</H���u�p^8cSxan -^�x`*�-"���J8������r�������!�/�'���G�5���,Q��g�X��c�� ��@����2q�6MV�P������"����n��t�k��@&\;3> -����VLd�G}�T=���z_����ݹ��H���:_�L��A�>O�-�kt Lj�j�<+[�� ���Z��2�cU(r3/���*q���v����� ���[(��(T:JI80;6�4ZG7��e �R��v���4>��;ī���B�<�,�'�k��T,���z⾖ xD�h�O _tVjmI��"��y������|�'%F�h��=Bܻk?����lO���L��!�Ҩ�r�kEm�x ��X �1�gfr$�H�O���]#+ �1P���A�d����*��p��Z��ą�~߈�TȂJw�����'��+3�r\�Ay��3���TAΧ�nƉ�R1k�O -=�@Z��X�៲�����"dIV+�䴌$ʝ4�3> �5^��G[J�>s2��x�֎�J'�)]p3�f�V�|�w]�烃Bݨҝ��,@~�fR�p��,�5������!�}�0�+_�.�3��@�� -5x4�x�(J��e����M�&ݡu�Z�:<�a��ϳ��ňf��'���6�S@�N��a������e���H��~<�B��W ��ut���,� �m7>��j��UlU�%�t-��nY��X��Oځȗ�8�+*�@�B�O��~MD����xVR�a�+[h�x��]�*�,����k�J&�ս��E�n��c��H>q�p���4L�{�M ��O�������r]Te����y�B�5vJ�R4�Ӧ����+��`٧J*���]ʹ=��xW�E�� ��E���x���`�Yps��`~G�a���X��oə����o~�z��0e���G�5�OY�e��7��tk�)>Uaj�g�\/U��x�1����8&��֚�+O3�q�a��$�1=�N!�gy���� -.�U��H��r���z����2�.Ch�F(]�a=^1�5�� lR(9ŴՌ�������/yE�'F'��������7�W.e��%3�UVR���K�ǖ9������I�HJ,�2�`�o�ͩv*O��d[ ���r|�d��*I�U������ږ��v�R�v���=��2Y��$�#�&PR������l���� -�ps�%C���{l�]q�`��$p���^Y�)&s�j��z�b�hT�U����I�&�84�DM' ��o1��}Vb�}��9�A�v~w��� -ra�~�\���n�P��"H:"&�W�����ҋMI���̄S�ҘQ�A�z��t�O�=xX�7 -E�!s}�J)��ƿ}Ȍ�uR���G�������<���;��U�3�� d�{�C]5x�3t_B����t&~�|�AoWΗ��hx=��ݺ���&�zz�ٿBb~�)� �ȥƐ�lًe';\g��5|Y�D����2<Yy���u|NeCiX�~�.ݽ��k��F�"��r�����K�*�'�:+}"�^�=����W��5���/�D���!~��_�&O0��N���4�����5>)T��w��0����!�r��P�go��V��7Z�endstream -endobj 2968 0 obj << -/Type /Page -/Contents 2969 0 R -/Resources 2967 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2966 0 R +/D [2962 0 R /XYZ 71.731 636.653 null] +>> endobj +2969 0 obj << +/D [2962 0 R /XYZ 71.731 625.67 null] >> endobj 2970 0 obj << -/D [2968 0 R /XYZ 71.731 729.265 null] +/D [2962 0 R /XYZ 91.656 607.925 null] >> endobj 2971 0 obj << -/D [2968 0 R /XYZ 71.731 718.306 null] +/D [2962 0 R /XYZ 71.731 585.011 null] >> endobj 2972 0 obj << -/D [2968 0 R /XYZ 299.936 695.392 null] +/D [2962 0 R /XYZ 91.656 567.078 null] >> endobj 2973 0 obj << -/D [2968 0 R /XYZ 71.731 675.303 null] +/D [2962 0 R /XYZ 365.427 567.078 null] >> endobj 2974 0 obj << -/D [2968 0 R /XYZ 120.869 664.508 null] +/D [2962 0 R /XYZ 71.731 554.959 null] >> endobj 2975 0 obj << -/D [2968 0 R /XYZ 319.55 651.557 null] +/D [2962 0 R /XYZ 71.731 554.959 null] >> endobj 2976 0 obj << -/D [2968 0 R /XYZ 448.374 651.557 null] ->> endobj -1411 0 obj << -/D [2968 0 R /XYZ 71.731 631.467 null] ->> endobj -382 0 obj << -/D [2968 0 R /XYZ 242.592 594.252 null] +/D [2962 0 R /XYZ 71.731 544.164 null] >> endobj 2977 0 obj << -/D [2968 0 R /XYZ 71.731 583.887 null] ->> endobj -1412 0 obj << -/D [2968 0 R /XYZ 71.731 571.97 null] ->> endobj -386 0 obj << -/D [2968 0 R /XYZ 215 539.656 null] +/D [2962 0 R /XYZ 91.656 526.231 null] >> endobj 2978 0 obj << -/D [2968 0 R /XYZ 71.731 531.019 null] +/D [2962 0 R /XYZ 363.424 526.231 null] >> endobj 2979 0 obj << -/D [2968 0 R /XYZ 71.731 513.589 null] +/D [2962 0 R /XYZ 71.731 503.317 null] >> endobj 2980 0 obj << -/D [2968 0 R /XYZ 361.806 502.795 null] +/D [2962 0 R /XYZ 273.602 490.366 null] +>> endobj +1410 0 obj << +/D [2962 0 R /XYZ 71.731 460.314 null] +>> endobj +378 0 obj << +/D [2962 0 R /XYZ 244.6 423.098 null] >> endobj 2981 0 obj << -/D [2968 0 R /XYZ 490.942 489.843 null] +/D [2962 0 R /XYZ 71.731 412.733 null] >> endobj 2982 0 obj << -/D [2968 0 R /XYZ 71.731 476.892 null] +/D [2962 0 R /XYZ 419.444 402.974 null] >> endobj 2983 0 obj << -/D [2968 0 R /XYZ 71.731 456.802 null] +/D [2962 0 R /XYZ 129.275 390.022 null] >> endobj 2984 0 obj << -/D [2968 0 R /XYZ 315.724 446.007 null] +/D [2962 0 R /XYZ 390.741 390.022 null] >> endobj 2985 0 obj << -/D [2968 0 R /XYZ 71.731 438.869 null] +/D [2962 0 R /XYZ 418.487 390.022 null] >> endobj 2986 0 obj << -/D [2968 0 R /XYZ 89.664 418.112 null] +/D [2962 0 R /XYZ 71.731 382.884 null] >> endobj 2987 0 obj << -/D [2968 0 R /XYZ 219.624 418.112 null] +/D [2962 0 R /XYZ 299.936 359.138 null] >> endobj 2988 0 obj << -/D [2968 0 R /XYZ 71.731 403.004 null] +/D [2962 0 R /XYZ 71.731 339.049 null] >> endobj 2989 0 obj << -/D [2968 0 R /XYZ 89.664 387.228 null] +/D [2962 0 R /XYZ 120.869 328.254 null] >> endobj 2990 0 obj << -/D [2968 0 R /XYZ 134.39 387.228 null] +/D [2962 0 R /XYZ 319.55 315.302 null] >> endobj 2991 0 obj << -/D [2968 0 R /XYZ 109.868 374.276 null] +/D [2962 0 R /XYZ 448.374 315.302 null] >> endobj -1413 0 obj << -/D [2968 0 R /XYZ 71.731 351.362 null] +1411 0 obj << +/D [2962 0 R /XYZ 71.731 295.213 null] >> endobj -390 0 obj << -/D [2968 0 R /XYZ 172.607 315.895 null] +382 0 obj << +/D [2962 0 R /XYZ 242.592 257.997 null] >> endobj 2992 0 obj << -/D [2968 0 R /XYZ 71.731 307.258 null] +/D [2962 0 R /XYZ 71.731 247.632 null] +>> endobj +1412 0 obj << +/D [2962 0 R /XYZ 71.731 235.716 null] +>> endobj +386 0 obj << +/D [2962 0 R /XYZ 215 203.402 null] >> endobj 2993 0 obj << -/D [2968 0 R /XYZ 389.137 296.966 null] +/D [2962 0 R /XYZ 71.731 194.765 null] >> endobj 2994 0 obj << -/D [2968 0 R /XYZ 472.996 296.966 null] +/D [2962 0 R /XYZ 71.731 177.335 null] >> endobj 2995 0 obj << -/D [2968 0 R /XYZ 71.731 289.828 null] +/D [2962 0 R /XYZ 361.806 166.54 null] >> endobj 2996 0 obj << -/D [2968 0 R /XYZ 106.6 266.082 null] ->> endobj -1414 0 obj << -/D [2968 0 R /XYZ 71.731 248.981 null] ->> endobj -394 0 obj << -/D [2968 0 R /XYZ 249.377 211.766 null] +/D [2962 0 R /XYZ 490.942 153.589 null] >> endobj 2997 0 obj << -/D [2968 0 R /XYZ 71.731 201.401 null] +/D [2962 0 R /XYZ 71.731 140.637 null] >> endobj 2998 0 obj << -/D [2968 0 R /XYZ 133.174 191.641 null] +/D [2962 0 R /XYZ 71.731 120.548 null] >> endobj 2999 0 obj << -/D [2968 0 R /XYZ 311.772 191.641 null] +/D [2962 0 R /XYZ 315.724 109.753 null] >> endobj 3000 0 obj << -/D [2968 0 R /XYZ 175.111 178.69 null] ->> endobj -3001 0 obj << -/D [2968 0 R /XYZ 71.731 158.6 null] ->> endobj -1415 0 obj << -/D [2968 0 R /XYZ 71.731 145.649 null] +/D [2962 0 R /XYZ 71.731 102.615 null] >> endobj -2967 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R >> +2961 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3004 0 obj << -/Length 2711 +3003 0 obj << +/Length 2239 /Filter /FlateDecode >> stream -xڝۮ۸�=_�Ȁ���-e�r��l�lМbQt�@��c"�hH��~�e�IP���h83���p�/\lB��~�N��E�x�/y -Ɲ��98o^��9�������n��� ��&��,���w��ثvy���<�����u�Ƞ��e�=�O�u����//><��x��Y�M�,�L�(^����) -h�d~�$$_�g~�(�&���Y&X<�"����r��x�`qf~�D귽jpG�͉'e�˯<5 S����GQL�d]���y����|��;�.���}6&L������'P!϶��تN5��,B�w8fH��3䯪�M��}��l<"UW�� �T����fE�<;��y�*L�� -�����������v07��yؓ��Ƴ�p�x n���ᘍ��q���b$!ڃ�V+���L�CچǷ'qVZ�:�Z -{ì�V(��|?�x�M��S}?|�%�{W�!)�P�Yťi:�*^���h�a� ��(��ZW��W�K;S���}�%�+z�ucm ����"1�{Օp*এ�6�n�y��[EK���x��x0����B�>/���Y�}��~daT\��c���x�ϧ#����=��U}ܝ�D�Ju}^�SOXh���9��[4,��s����L�Z���+�����CoL�룤Շ=S�D��hx�US:�� �B8��'���V֏.i����+n�~��+M������a�mj�D��Q���{�#>�����pnѴ6�A)%T�V��(�w}�+)+W�>�s�-n�$@;�GU��8[S�ʾ���-����p4 �h�b��^��)���2�C^��_��a]��ڙ�L% ��p�������C��5� G�5܅�>u���y�<�<��1&���$���L -�D�nUś�HA��h� y�/�Q -�t)��= C�P�sY�~����i@&F��(�BS�(��)���*3d Bw�)'�)hx';� W¦�І+�G�d��A�%��[����_�+��k��z�|ĕ������W�sJ:�R#fIY�.J��N�������XÀ��,�J)vp�9���V��T��^px��tۓ�qFG��9�j����)�q��eH)�Wtk��37�� -�3��@����l�TK8ٚ���K��3��䰟��-�>�'��od$�'|ۢ�j�s'k�� ��$4�n\aR@�=0$��+t���W"�3)�˘(��\��(�4��쮀�κ���-@�i�����)�m>eK*!#����qDhc9���:ܰ���QIN�./G�~8��z��q<"F[��w�-8o]��~��Z��ĸ�;Ј��Տ�����c|���N|�R?��i����q��A���LmP�����U� X��%���C&��Yݤ��U���~�c� ��x��S$ ��g� ����#�M��#v��\��f:)C?�2���ʛ-t��V�(e�co�l�4(+��<0�N�}����K�J-��E�^����j�%�LPPo3"���rA��rN�A�5��?J#�}�<w*���M��㗗��%�E��MHix#�B�K�,�0��\qr4�� -jT�]��yO�P^89 -�j�Ws'��'q0���� �ԏB�>�ޘ~��8��8���r����8<yM�v����^H��[�L#�um{�`�^5r�� -IskN�����$�ě]��H}�\ ������|���K�=}|���k�:��8A#���Y�j�,փ7�s � �!ԩ4��\i�N}������ؙ1'A��;u���G�<d��b�mIh;v2�5�l�=.�=�0�^Gv^N�B�#�G�d#gAI�~q$:��#�,.D�(���yƮ�y_�kե�b��S�T��y�S���:�Wq�0-��V�:FA��f˘|~��Wx[�N �aU��;�`��_p�m�P�uYH8q�yà���I��=ۄ_5t%L����sq8����ϓ��X�����B��5\� ���|���BҌ� -?���/kH�T�e� -�EɷOu�( s�.G!ҝ�SiJ䠞�����1 qw|ȏ:\QG/[s&C)���P.���6/:l��b��{�9��9��ri�d�<}&���|�m���m����T���:�Z$�ΡZ�U�)���aU�^b.#��0g�B�e��]���!��?]���|{������X`�L#/�%��hc���Wbd�c����I�E�]o��K�����A�厕4�T�I�L ђ��&m���J�����߄۴Rt�L�.�J�������S��g���i~����6>JP��; ��&*n�LI�եF^�?��K����P�� -˿a[H�����?I���zhҜ��[?�R?'R?ǐh��b�z]5CL[�n7��w<�{ q@�df�a�y� K���(K�sw -�Xګ(<9*1�rVq��zs��c��Lf$�TA���\�l��l�h���Oh)u��wő�\ln�R[�t�l�ⴇG�m6p�`�]���� -=�o�u@�S��|`\��z�H�7�|�/(����@0Va�E�r$:P�z��x�����^�|�`Е����*��s�H(+�7�Zc��ZYC� -c�N:�Kg���o�?�$�p�Ϳ�G��?�io�t�B�ds��9�?���endstream +xڍYY��~�_�7Ke �}lR��k��ʓJ���EbDf)��a�����H��̸�@��ht}@�n�s7��b>^��(���7��+?�q�� ,����7�|���T���yx���b'�ľ����<��~(�v�������W�}W����^5'&�w���ߪ��ݿ~z���tv��*M���Dy��9x�J=��R��N�� ������Dz� \�V(IU��{��;�-[^<{%��[���C�q�ok���#S�a��煪���m�<����p{��� �/�y�u��'325�DL��J�|�:8Nv� t����N7�>1�7��SoEd��l�9�?�Q�A {"@a@�����R��`+���k���A��ϝ�u��ı7q��RepP�y̺�ь徎\��CgZ���F�]��XR��=� ���� �/T��� >�8VA�"�g��@.hY�9���*�_8�Z(����;.#�w��wE50Bq)kxe���j��>F��a2vkYb���6��TCyg�`\a����^��x�e�3�z���<?��Β�{�(�+� ���Au)u'�y����.�+���9<Dc3�L�Io�q]P<D7\HȐ��t�ĥ��*Q��0���tH%X�h��uJ�yG�.��IF����s��|�����r�(;M#��l?���0����Q��"]%���yR .c���у��"�qγ(/��%C�-�0Bq�t��E`��<Ǔ�Oխ��T�q"�S��:9*��a]�E�&P�h��L`O� +8ȎU]a�n43~5�(�j�'{���;����?�\��+&s�j�z,��7+��թ�z��N��T�Z +p�P)��` +\�-fw�[��/o����@%Qz�;�Bz���ݹ]M���� +9I<$���"Hn<EL(�n�^�hs\�{��Xv}O��_g&\b���R�Pnέi�g|��|��J��2&�E�S�z�J)����6df +p�gR�Q�Z������ttn>X��J@0"��� w|]W�g�h�����'Gk�H���W���^nv /�x�a�@�m��!,��Z�ꏐ��WD�[@��ǐ�t>�f�@µ�ՆB �^k�$n�PE�$F��g1�Jv��p*�J�*��Fi�?fl��"6g������:�>�RVy��JyiL��D�H��5��.����65E}v�[{9�=�L��g�Eۓ0D)CUԲ��4��W��b��2<] �h�)6��}��q��ũul��k@1 �qbQ��>L.N��t^:�g��#d�+���߯��(��Qv�����TV����=1A�gŔ�̀�����Ӆ����y7����zeptּeɕ }H�It� 돟��>#ӶW��~��x��v�%��82Ofb=�����Ξ��Kc��+�fRqI?�=�H���L~��1����s�-�s���*S왦�l|����3 S:t-Y]����M���)� ެ��)�uVo���Y��VC�;�iU;@}�����m�;����5Ч'Y�p �ų��5dU�x�n�e����|��}�h���-,�-�Z���R���X�E�(tVC��[9�y���XL>��`aȹ����<g��~خ��Ii����z�Zy?`q������Q_��gђ2e������;����;0C�*�k����it�65C�<a�� �5h}��Ҍ5X3��b�Z��)��ZƟF���ނ��8F��VL��mu&R0���L1�C/M�[2�+H�{�=��.�_�]ȗ\�U��>�c[��v1�8,%p����,���R���_�5܅�?bs��ao�A4_��EN*"����c��pQ]u��M���^�yp����^k��`!�BW�40��C�H0������;��c"#������+��!��� +3e b�:3���p`AAD�;��]ɆH��'��ε_�5��ΜWM8�_k�z�eą����k�ofpJju^!gNY�~�z�}�P.r ��۶�z|`&����~ȁ=�m�L<���3�ђ��8��#L˃�3����)'0~q4���3~��1uo�=|6�� ��=vͷ�)���� ��K\�Gˤ^��9�J�jn��������F~@�����.k������y��( ]i7�0)�h����ο�`��������e$*�'�K�T�Yn��z���I +�������Z�endstream endobj -3003 0 obj << +3002 0 obj << /Type /Page -/Contents 3004 0 R -/Resources 3002 0 R +/Contents 3003 0 R +/Resources 3001 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2966 0 R +/Parent 2960 0 R >> endobj -3005 0 obj << -/D [3003 0 R /XYZ 71.731 729.265 null] +3004 0 obj << +/D [3002 0 R /XYZ 71.731 729.265 null] >> endobj -398 0 obj << -/D [3003 0 R /XYZ 201.18 708.344 null] +3005 0 obj << +/D [3002 0 R /XYZ 71.731 741.22 null] >> endobj 3006 0 obj << -/D [3003 0 R /XYZ 71.731 699.706 null] +/D [3002 0 R /XYZ 89.664 708.344 null] >> endobj 3007 0 obj << -/D [3003 0 R /XYZ 165.864 689.415 null] +/D [3002 0 R /XYZ 219.624 708.344 null] >> endobj 3008 0 obj << -/D [3003 0 R /XYZ 71.731 676.364 null] ->> endobj -402 0 obj << -/D [3003 0 R /XYZ 142.614 646.077 null] +/D [3002 0 R /XYZ 71.731 693.235 null] >> endobj 3009 0 obj << -/D [3003 0 R /XYZ 71.731 640.892 null] +/D [3002 0 R /XYZ 89.664 677.46 null] >> endobj 3010 0 obj << -/D [3003 0 R /XYZ 71.731 608.055 null] ->> endobj -406 0 obj << -/D [3003 0 R /XYZ 166.016 577.335 null] +/D [3002 0 R /XYZ 134.39 677.46 null] >> endobj 3011 0 obj << -/D [3003 0 R /XYZ 71.731 570.257 null] +/D [3002 0 R /XYZ 109.868 664.508 null] >> endobj -3012 0 obj << -/D [3003 0 R /XYZ 71.731 539.313 null] +1413 0 obj << +/D [3002 0 R /XYZ 71.731 641.594 null] >> endobj -410 0 obj << -/D [3003 0 R /XYZ 156.761 508.593 null] +390 0 obj << +/D [3002 0 R /XYZ 172.607 606.127 null] +>> endobj +3012 0 obj << +/D [3002 0 R /XYZ 71.731 597.49 null] >> endobj 3013 0 obj << -/D [3003 0 R /XYZ 71.731 501.395 null] +/D [3002 0 R /XYZ 389.137 587.198 null] >> endobj 3014 0 obj << -/D [3003 0 R /XYZ 71.731 477.709 null] +/D [3002 0 R /XYZ 472.996 587.198 null] >> endobj 3015 0 obj << -/D [3003 0 R /XYZ 266.731 477.709 null] +/D [3002 0 R /XYZ 71.731 580.06 null] >> endobj 3016 0 obj << -/D [3003 0 R /XYZ 71.731 451.806 null] +/D [3002 0 R /XYZ 106.6 556.314 null] +>> endobj +1414 0 obj << +/D [3002 0 R /XYZ 71.731 539.213 null] +>> endobj +394 0 obj << +/D [3002 0 R /XYZ 249.377 501.997 null] >> endobj 3017 0 obj << -/D [3003 0 R /XYZ 71.731 444.668 null] +/D [3002 0 R /XYZ 71.731 491.632 null] >> endobj 3018 0 obj << -/D [3003 0 R /XYZ 244.236 420.922 null] +/D [3002 0 R /XYZ 133.174 481.873 null] >> endobj 3019 0 obj << -/D [3003 0 R /XYZ 397.391 420.922 null] +/D [3002 0 R /XYZ 311.772 481.873 null] >> endobj 3020 0 obj << -/D [3003 0 R /XYZ 111.017 407.97 null] +/D [3002 0 R /XYZ 175.111 468.922 null] >> endobj 3021 0 obj << -/D [3003 0 R /XYZ 279.62 407.97 null] +/D [3002 0 R /XYZ 71.731 448.832 null] +>> endobj +1415 0 obj << +/D [3002 0 R /XYZ 71.731 435.881 null] +>> endobj +398 0 obj << +/D [3002 0 R /XYZ 201.18 403.567 null] >> endobj 3022 0 obj << -/D [3003 0 R /XYZ 71.731 395.019 null] +/D [3002 0 R /XYZ 71.731 394.929 null] >> endobj 3023 0 obj << -/D [3003 0 R /XYZ 345.153 395.019 null] +/D [3002 0 R /XYZ 165.864 384.638 null] >> endobj 3024 0 obj << -/D [3003 0 R /XYZ 71.731 387.881 null] +/D [3002 0 R /XYZ 71.731 371.587 null] +>> endobj +402 0 obj << +/D [3002 0 R /XYZ 142.614 341.3 null] >> endobj 3025 0 obj << -/D [3003 0 R /XYZ 226.957 364.134 null] +/D [3002 0 R /XYZ 71.731 336.115 null] >> endobj 3026 0 obj << -/D [3003 0 R /XYZ 485.41 364.134 null] +/D [3002 0 R /XYZ 71.731 303.278 null] +>> endobj +406 0 obj << +/D [3002 0 R /XYZ 166.016 272.558 null] >> endobj 3027 0 obj << -/D [3003 0 R /XYZ 71.731 344.045 null] +/D [3002 0 R /XYZ 71.731 265.48 null] >> endobj 3028 0 obj << -/D [3003 0 R /XYZ 109.396 333.25 null] +/D [3002 0 R /XYZ 71.731 234.536 null] +>> endobj +410 0 obj << +/D [3002 0 R /XYZ 156.761 203.816 null] >> endobj 3029 0 obj << -/D [3003 0 R /XYZ 143.754 333.25 null] +/D [3002 0 R /XYZ 71.731 196.618 null] >> endobj 3030 0 obj << -/D [3003 0 R /XYZ 388.886 333.25 null] +/D [3002 0 R /XYZ 71.731 172.931 null] >> endobj 3031 0 obj << -/D [3003 0 R /XYZ 134.644 320.299 null] +/D [3002 0 R /XYZ 266.731 172.931 null] >> endobj 3032 0 obj << -/D [3003 0 R /XYZ 226.941 320.299 null] +/D [3002 0 R /XYZ 71.731 147.029 null] >> endobj 3033 0 obj << -/D [3003 0 R /XYZ 71.731 307.347 null] +/D [3002 0 R /XYZ 71.731 139.89 null] >> endobj 3034 0 obj << -/D [3003 0 R /XYZ 146.719 307.347 null] +/D [3002 0 R /XYZ 244.236 116.144 null] >> endobj 3035 0 obj << -/D [3003 0 R /XYZ 71.731 302.247 null] ->> endobj -3036 0 obj << -/D [3003 0 R /XYZ 71.731 256.374 null] +/D [3002 0 R /XYZ 397.391 116.144 null] >> endobj -3037 0 obj << -/D [3003 0 R /XYZ 71.731 256.374 null] +3001 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R /F48 1934 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 3038 0 obj << -/D [3003 0 R /XYZ 257.935 245.579 null] +/Length 2588 +/Filter /FlateDecode +>> +stream +xڥY[oܶ~ϯ�[w�]Ewis��I�=iи888-��� +ѭ�6�ϯ��(Q+;uQ���3���!p�ϻH<' ���?�.��{q#߿��c+,[��������b������p������$�4�/n������t����� +��ɫ�.z��-�.Okou���,����^��eGA�������~~2�g��N���G]�l`-|o����>���^�z�� �!�����953_5U�Ժd����̙�Ҫ�5UYr'3szY�f��hO +iY���� *�y�#J7FB�r�� �g��m��z��O��uV�r��m��ι�М�KX��+X��"����<vWЦ������wj�K[�/o �=�.�����Fcf�`3�+n��3n��vn�)�Xo��n�uZ �۪��{���~�j���4CQ���8ګJ�K�dfY�?lPOȇ�����y״ۜ-#:�N7O�ݷW.0��G��Y�H���_�6|0���8����a'C��ؠ&z�l���0����i����\�(����V@������;�uG��ԕ��ޭG�]�W""��8�7��R1P��2(����%vR�Xl����8��b/vҝ0dm�%,��f�zM)���ۊq�9$���3���tj��j[�L�m#H��D�yƖh��mD�ݱȎL>P�p6����ͻMSg��(da����� +J<?q�N�9� ���O�Nj"��l�{�K+���qY�,��5�>4�( ��Ũ���5�@�hK\�5�nt����\��@F��j!/v4�Q}�� �`b"���~��f���{�D�W<uZN���EctuE� &gi��ȱs�k�AH `��z�F8����b86'a�3u� �ۈ<�ʆ��k�Y�0�^�e ;�W�kX�d����f�,�B��]�R����5qa�I��F�K2�c�@f�Rl��š���ˆ�a��r���sS�p����0�z��d��`�)�r��ȎY�;^�!���#e:�;U��T��]���s)�4�L-<t�Mt^HXy��B�t�şl^d��+���I�y=��^Um�_-�<��$�~��7�)T*�����')4�4M)�p�51�<�4�T�.��Z�>��֒�0]�BK��Ԝz�)���� ��{p��i.�a(�wo�ܗz!,���>W�gJ�]J�vao0�b�'*ea�W'����&2@ȗJ郄Z������u���j�,Lc�Z-�����`U��A,��L�KY����AD�;�v]�7��(e��&������.Nf!����c ��7�d�c�Ɛ�CQ6��cX�����5l2]�Z���[齮)a�\$��jm +.��(m#����I�LڼR��� S%o�����$1�e�UO>6�2��*��lm����_-�fgWT�K���j�!��0��T�i���'u"�s�LNAs���%�B��uH�*,�gSߕ�*�������y��]?R?�R?�4�Q��Pd�dJ�a�������>���j�w�����P�@���t�*ʬĂa��)*�Yy +TZ�^%���ZW��R]�"�h�$�VT�bvQ�9L6�&��)y�f���$�mud*��UJ��}�tLD�S��p)yZ�-�=TKcI����g��.�O1�w��|7.�~%�ƙ�O�s�p*I��0�*�/�E��A�ݸ�:�#O���G#��m%��n���}�J�+�7m�xc&䱲�$N��h-��� +�OS�c��Hy���&VgI����0�<�.Vl�|�<�YӮ��8k�o�/V.yؾ9�^��Ze���{)��{�!��%���^Ym2�q<��/��'q�/F� +ҥ�=������Y�����>�2��� +�'���ݢ>�q��z<���ːQ�a��!W��CQ M�c==C!���ȯUH��GO Ow]1E��,����Q;|����R��u�y3���t����>s�H����To0�VOC�O1��I�pĦ`Ħxv��r��r�ƁA�`��5�qK��9� �� +[�w�n�o��x�d�e�SGp�����)�x���9w��qb#��Z�;�l�Qշf��+�KE��!˓v��s��w�e�#f�1S�ٷs�{3������0�:�ԃ.嚗�x�BWbT�;܉]o_�a����Y�7>�Dr�E�yo.z2(�gCC,�����{�0�_�%>�-ESlbL��֞���5?���A1:#�4O�8��%�>2W� ��鍩Ӹ+Y�3�$�5��4�� V�(�Ә@6'~;M�(�Vr5��_���U������ׂ��N-���A�w|Ƙ��MġWW���臿�&ӱonP#���?2� ���1�|��0�"�W/�-�~C�dJA%��4�nX@-di���I�@�M���<72�"�lr6�}4r�W�N!!�7��#��u�:�d�T��eo�Ð�T!�B�y��u�x��f�E&w���F�y��p<1`��L������(?����z�WޜX�nF~긾Y�",}�ʥ�? �+endstream +endobj +3037 0 obj << +/Type /Page +/Contents 3038 0 R +/Resources 3036 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 2960 0 R >> endobj 3039 0 obj << -/D [3003 0 R /XYZ 439.391 232.628 null] +/D [3037 0 R /XYZ 71.731 729.265 null] >> endobj 3040 0 obj << -/D [3003 0 R /XYZ 146.138 219.676 null] +/D [3037 0 R /XYZ 111.017 708.344 null] >> endobj 3041 0 obj << -/D [3003 0 R /XYZ 222.467 219.676 null] +/D [3037 0 R /XYZ 279.62 708.344 null] >> endobj 3042 0 obj << -/D [3003 0 R /XYZ 281.244 206.725 null] +/D [3037 0 R /XYZ 71.731 695.392 null] >> endobj 3043 0 obj << -/D [3003 0 R /XYZ 435.614 206.725 null] +/D [3037 0 R /XYZ 345.153 695.392 null] >> endobj 3044 0 obj << -/D [3003 0 R /XYZ 71.731 199.587 null] ->> endobj -414 0 obj << -/D [3003 0 R /XYZ 154.051 168.867 null] +/D [3037 0 R /XYZ 485.41 664.508 null] >> endobj 3045 0 obj << -/D [3003 0 R /XYZ 71.731 161.788 null] +/D [3037 0 R /XYZ 71.731 644.419 null] >> endobj -3002 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F48 1937 0 R >> -/ProcSet [ /PDF /Text ] +3046 0 obj << +/D [3037 0 R /XYZ 109.396 633.624 null] >> endobj -3048 0 obj << -/Length 2329 -/Filter /FlateDecode ->> -stream -xڥْ�6�}��o�*L�w����-g��xRy������ -Ie<���Hj$;��r�h4��;����/ T s�����7������B�������ͫ�a��*OB�~�E��R?��P�,��}����`���k��P�x[�eS��/�=�ޜ��b��������n�ݏ��0Uy~U=G�U��g�� -���{�����~�2_����c��vG��u��Yj��2��1��+�g���n��_���� z�>P+^~�B���flwB܌�4o_.����[������r�ph����x:�X6<�@����aRc%��Ϧw3����5Q6������,�H~�2��~��f���P�Οs�T� P (��c[ۡ�m���p�Ԟ�u�?�{\>�o���e�b�=2�� ->�~h0�yZ6����P� ��Qp2 -��'Da�1��6o'��ѧ�v=#w][3�����hӈ/q��� ��/�����J�E���+A�^&OG�x�~��.ڑ���S�=��O>ip -�|L$����g[פN�x�0�&p -6ydR�+�ٮ����r�$ۈ5���^��� m��Z������6a���mS�,6�1�ʂ��'�s�5�f�r(MӴ�3�i����8��y�pl��d���l�u�.�����L^�gz����#�dn .���`��1q��7�#l�S�Q�0ʣ\�e��l�m�x2�o���݄j����ť!�����d{�0�_�a}��h�8�b'`�C0����Q�8U�,btNfE) +�5 %+N��A���8E<$$����S�z氓��p�F��1B�h1��d�vb�(�Zr5���̀���2����ؿ����4�۩>��,����Mšww<� ��?���Z�|2�v�b`��v��Z�� U}7R6 2K�eK/�T�'a�cE�C�ϫcKٚcz��J�����&Pˇ���p2l�d?�W�N��|)$d�ek}ű�=�Nj2x�BӲ7w<�ڔ�dbQ����.��7�mq����+���xjdz<И��W/�LB���n�K[SQ]�����T x������D�[qi�~f�Cp�c�P0b��C��dV -ʊgSAȜ�r)萁�����mx�k t�t��1Dզ���,NذT�� ?q�rS��c(���:I�@@�'%!�ݑ�U��ó �34gA�a�j��L��v -�Sgl�ŬܮF �� �>�I+˄���WN:�[tk-EXC!s*����љ���] @R�(Cyv����ٳ��o,~ -�ըA�&�*w�X���]D -�����x2�?�`��i/b0O_h�]�*E��{��\J-���Qq�:�B�# üyp�a��)���V�\*��!y�cUn_���c�FS�N���A��}�c".���g��T�l� ���'�@�M�|��X[�(X�r������b}�b����� -Υ��ٸ���/���X��d �ݭ����C�p�;�s5*R����6��ɾ��8d*I/����"�m9Q��u� -Y�ns{��A���)�'�b�l��-��n]^� -<��To\$�3���SD ��8.e\�ľ��Z�>O<19�^�� FrE�^���뱯� �%��Tyk�����Hc�6�1���6��uN[�L�Ij�������k`�m�Z��E�q�N�P�~jV�m�p��"�E�䖗��g����`T�:���F:mZ��Z����_�|�q;Y�<��2;_��2^��r���Y���=o!L��|4 ���� -un̓k��C�ZE�����Է��qA�8�� �*�2|c���_}�����o�=� qj��і�^g���Ǜ�;�����2��k��:�s��l|���T%����� �T U��e&���$� xb�8�*�C���d�˴��,�䢀���0$�!jtN�Ҍc?�T�T?ICy^ܷ���E���"!�;�L��g�eV��-7�kN��D�6t�t��u3�ufv�L�C�G�g��a ���|�zI�A��4ƇA�mǩ���U �X�}ED�P����/-���GK����FG�dz,�{+M�����1Xl��A1�o��6|\�Ìl�M)� ?�ͿI$�D��b�x8��#-��ef�cy�6c�rM!�0����^�`� �� C6o2�#¸ů��#����:i�6\1��(�v�f��d��f;߅�wE)�c�w}Q>�(���f ���~�*��(���� -�kvA�Ǚ������2���?+�:S������KØ�q��L�vvendstream -endobj 3047 0 obj << -/Type /Page -/Contents 3048 0 R -/Resources 3046 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 2966 0 R +/D [3037 0 R /XYZ 143.754 633.624 null] +>> endobj +3048 0 obj << +/D [3037 0 R /XYZ 388.886 633.624 null] >> endobj 3049 0 obj << -/D [3047 0 R /XYZ 71.731 729.265 null] +/D [3037 0 R /XYZ 134.644 620.672 null] >> endobj 3050 0 obj << -/D [3047 0 R /XYZ 71.731 718.306 null] +/D [3037 0 R /XYZ 226.941 620.672 null] >> endobj 3051 0 obj << -/D [3047 0 R /XYZ 71.731 718.306 null] +/D [3037 0 R /XYZ 71.731 607.721 null] >> endobj 3052 0 obj << -/D [3047 0 R /XYZ 71.731 688.254 null] ->> endobj -418 0 obj << -/D [3047 0 R /XYZ 142.923 657.534 null] +/D [3037 0 R /XYZ 146.719 607.721 null] >> endobj 3053 0 obj << -/D [3047 0 R /XYZ 71.731 652.349 null] +/D [3037 0 R /XYZ 71.731 602.62 null] >> endobj 3054 0 obj << -/D [3047 0 R /XYZ 224.195 626.65 null] +/D [3037 0 R /XYZ 71.731 556.747 null] >> endobj 3055 0 obj << -/D [3047 0 R /XYZ 71.731 593.609 null] ->> endobj -422 0 obj << -/D [3047 0 R /XYZ 171.774 562.889 null] +/D [3037 0 R /XYZ 71.731 556.747 null] >> endobj 3056 0 obj << -/D [3047 0 R /XYZ 71.731 555.811 null] +/D [3037 0 R /XYZ 257.935 545.953 null] >> endobj 3057 0 obj << -/D [3047 0 R /XYZ 181.465 544.956 null] +/D [3037 0 R /XYZ 439.391 533.001 null] >> endobj 3058 0 obj << -/D [3047 0 R /XYZ 380.939 544.956 null] +/D [3037 0 R /XYZ 146.138 520.05 null] >> endobj 3059 0 obj << -/D [3047 0 R /XYZ 473.597 544.956 null] +/D [3037 0 R /XYZ 222.467 520.05 null] >> endobj 3060 0 obj << -/D [3047 0 R /XYZ 509.52 544.956 null] +/D [3037 0 R /XYZ 281.244 507.098 null] >> endobj 3061 0 obj << -/D [3047 0 R /XYZ 191.511 532.005 null] +/D [3037 0 R /XYZ 435.614 507.098 null] >> endobj 3062 0 obj << -/D [3047 0 R /XYZ 71.731 524.867 null] +/D [3037 0 R /XYZ 71.731 499.96 null] >> endobj -426 0 obj << -/D [3047 0 R /XYZ 148.701 494.147 null] +414 0 obj << +/D [3037 0 R /XYZ 154.051 469.24 null] >> endobj 3063 0 obj << -/D [3047 0 R /XYZ 71.731 488.961 null] +/D [3037 0 R /XYZ 71.731 462.162 null] >> endobj 3064 0 obj << -/D [3047 0 R /XYZ 71.731 456.125 null] ->> endobj -430 0 obj << -/D [3047 0 R /XYZ 224.367 425.405 null] +/D [3037 0 R /XYZ 71.731 405.315 null] >> endobj 3065 0 obj << -/D [3047 0 R /XYZ 71.731 418.326 null] +/D [3037 0 R /XYZ 71.731 405.315 null] >> endobj 3066 0 obj << -/D [3047 0 R /XYZ 71.731 381.569 null] +/D [3037 0 R /XYZ 71.731 374.431 null] >> endobj -3067 0 obj << -/D [3047 0 R /XYZ 71.731 361.48 null] +418 0 obj << +/D [3037 0 R /XYZ 142.923 343.711 null] >> endobj -434 0 obj << -/D [3047 0 R /XYZ 170.649 330.76 null] +3067 0 obj << +/D [3037 0 R /XYZ 71.731 338.526 null] >> endobj 3068 0 obj << -/D [3047 0 R /XYZ 71.731 323.681 null] +/D [3037 0 R /XYZ 224.195 312.827 null] >> endobj 3069 0 obj << -/D [3047 0 R /XYZ 129.576 312.827 null] +/D [3037 0 R /XYZ 71.731 279.786 null] +>> endobj +422 0 obj << +/D [3037 0 R /XYZ 171.774 249.066 null] >> endobj 3070 0 obj << -/D [3047 0 R /XYZ 279.855 299.875 null] +/D [3037 0 R /XYZ 71.731 241.988 null] >> endobj 3071 0 obj << -/D [3047 0 R /XYZ 349.928 299.875 null] ->> endobj -1416 0 obj << -/D [3047 0 R /XYZ 71.731 269.823 null] ->> endobj -438 0 obj << -/D [3047 0 R /XYZ 199.853 236.513 null] +/D [3037 0 R /XYZ 181.465 231.133 null] >> endobj 3072 0 obj << -/D [3047 0 R /XYZ 71.731 227.876 null] +/D [3037 0 R /XYZ 380.939 231.133 null] >> endobj 3073 0 obj << -/D [3047 0 R /XYZ 159.666 217.584 null] +/D [3037 0 R /XYZ 473.597 231.133 null] >> endobj 3074 0 obj << -/D [3047 0 R /XYZ 71.731 197.494 null] +/D [3037 0 R /XYZ 509.52 231.133 null] >> endobj 3075 0 obj << -/D [3047 0 R /XYZ 186.589 186.7 null] +/D [3037 0 R /XYZ 191.511 218.182 null] >> endobj 3076 0 obj << -/D [3047 0 R /XYZ 71.731 184.543 null] +/D [3037 0 R /XYZ 71.731 211.044 null] +>> endobj +426 0 obj << +/D [3037 0 R /XYZ 148.701 180.324 null] >> endobj 3077 0 obj << -/D [3047 0 R /XYZ 118.555 145.979 null] +/D [3037 0 R /XYZ 71.731 175.138 null] >> endobj 3078 0 obj << -/D [3047 0 R /XYZ 232.228 137.515 null] +/D [3037 0 R /XYZ 71.731 142.301 null] >> endobj -3079 0 obj << -/D [3047 0 R /XYZ 378.496 114.202 null] ->> endobj -3046 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F48 1937 0 R /F23 1125 0 R /F44 1925 0 R >> +3036 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F48 1934 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3082 0 obj << -/Length 2718 +3081 0 obj << +/Length 2335 /Filter /FlateDecode >> stream -xڅMw��>��ϗ��KT}������雾n��fv�h��ّD�(%����/��Ӂ$ � .���&�714Q�G�t����=���]���r;�����/��x���:^<<.� �7A��đ�������� ��lV�Qx�O�]Q�Z��zO��*��?TY������C�;�7~�ů��p���E�y���n�A��Ib���O}+�&�>�%�` �����G���f�o�� 3?�rK�a���5�ړ@{K�A,�?���396�(�VIsC��u��ޮT��\�j� EQ�RB��T5#�r��Si�d���4�F[�k� �˟�L@|G0����7�'���'���NN𨛊�L������%���}l$z�oj�{�6��ܑ�d0�Ə�� �p��s��o�,d |ɖQ�)��U�z�]EY�U�z�ǡ���B= h+i�W�����5�&��ni� �P ɔ�jw���� -��<`'�A��h%�i�n�R�G_�U](��Z�#O���&4[*gf������ n�����8 �i���DM �{�E���p+_~�z��K��R�WK���0ij��̮+EC@� ��w��uK0���bfQ?�f���d�Y���ܟwpp���8�����}4,�#�FqBG%ƭ�� ?�?�Ҩ�A]Qo�������_~���ϰ�%A����ߗ7�gw�@G -:�1�D]&o] -�;��x���?��՞�� J�^S��.��Z�%�Q=oret��*̼��w��G��.����n -�<�� -�q�Qb/�~� /M�2`U�P�,��S8iq`�ϳ�&��Ir[��bn$���Q|��A�B�+���:��k���yɫ�gd���@K>)k���Y4^~*�q ]���d��)������輖RF������&�u�d�F٫:�\ӹC�}G�t~�כ:���B3����0]�@��S���N}��B(\� ʁ��ӂ��:(&�QO��T�ˀ�W(��������N�0O_�ƀs��B���5�y�m��K����DSk@�)b�D�R�f��WJ껸{n�<��$Y��0AsН��3�[�)��5��^�y��� #L���1�����b��Y+� -��~ZX�4�y��c'����4x_ƕ"������]F��s� ��7/e��o�F��q,L��I����|�z}M��<�Yy�����ׯ��r�� �%W����۾?e|�����m69U�B�T#A�P9���;в���>6�� ��0�US�&GJ�����5x��ک �Ё�d��3-檳��[<:P�;�E'��{�;6�ۡr��}�������\.��r)���ex��w�Pڭ�Ȼ�15ټ�G8לѡ��k�x�כ���Y����Y�p��d�KQ��]{3<a��C]v��tO���F>�F��6��۱��Z^�H�J�+*f�Ya���u�hJ����mI�y��r �v���D%���{�9d.�"W���w�5V)�����(EC�zB�a�ǫ&�i��5>��Q����j8y0��~�f35�yDU-�kJO5a[<ʝB�w�����Y�.��5�HK�%1��4�X�`P�X��,nF��^#�BW.o��@C�Z*Qp������&#�K�'1Q6�(Eq�p�"�+3Th���J�(�s��m�6�,��P���Eq�ߍ#}@7wu��1j�y�E���$cL�R�J�#]�z>1���>u��2c���$<jc���<qȧ��{�����'�Q|�V�y��{���ڎ��X���$�g��j�5�MM '�mc?&Ux��JH�������=G�HV�8�%#mYy9ߠ��`�ʏ�=���V�Ի!����`�p��{��V��������>e��8% ����ETz�mD����,Fϐi��{�P�ڒ�ͳ]����V�4�ҥ_8�ص�}��ť�`I�o���%�UM�[����T �y�*��$]O���O� `H�he���aʶ��ZA %�=$O�)���K����&���8�v䣀��� ��[z(��}����k:� -�H{�G��5<a�h�4�|'��1����� >��^��ۯ���A@�=����$:��q��n/�[�ϝ���TW�d�L�q�!B��\���ug�4;�$chj�D����^�rn�����!�O -����B����87;����`�1���W]�Z>#8k�Vd�vH�0���a�"�h��,�5�9��l�2!�!�NR ��U���$���[axD������/���� ��BO -[� �7�Q�F��F�y����}�b �rC���H��`˻Yăh�d��*�����3>�3+b��y�q��2��X1��P`�π��<�`�\����_�E�zRr��9�����:��C��k�P��7�f��♮���i��"��F��}�>zj���LR�4�2�W��g����Wk��I0d �M��Ῐߌ{����_N\r�x��#ت!���X����q��Kg�4��ߧ˯��O�n�t������.���;� �S��RVDW<le��g��\�Q=ʦ����H�Tb�w~ߥ�I�g�������He~9"��_��|����H�endstream +xڥ�r�F���`�b�Jjh��Iv䩤�Ό�ć8�&�$ca�в���m ���T�T���oo�_x��/_%A��8Z������ο�|����Ϋ���o�^d*���a�=O%^�Ht��(X<�-_��~���6���V��+�){��͖A�+��oYUf���OW���H'*K�7�s8g��餟;��*���V���A�$]~�ۼ��yAn��a�-������Y�oYY��� �X{�[4�k �W@��lY������P �H��+{�Z�_������شc4vD�G��n�l�~��iȄ��>����y���0�9��,�8�h7�ԏ�U��DU�����~�+�>PY���i�(��8�3�����D�_:[�+���h��"��p 9-? ?�l�3&J��RН:�P�����[ٛQ���G{BD��E�T�Z[F�A�)�I8 >�F%u��t��M�`'d�{g�'aRl��٠����&�mg0F�1m�(�W�z�z���n��ͱX��."��g���f0r(�G��a�}�T/~��a��k���'/�@�a�t�L^�ָjZ~Vm�u������zhOd`J�g_q���� �#�ң��IEx�[�2���נ�v�c� :|� �aƷ�����QF�Q�@ �Dk�$���n�x�6/��尅�\N�v�W�φ7�&���w��L +Υ����"�0П��a� ��k,2pj��zS�jx��J�ѹ*R����(�L�E9`_S����<��]� :�r�.��mL�$b��s{��A���)ۀ���;�0������حA��t8��P�]$�mp��m/���L�1p\ʸ��<q5,ֲ��G���'&G\�������j��a%W��!�Hb=�T���d $U~��$@R�o��Co/�M�� #V���R�=�"\�+B��DX�A+��צ9�a kˤ+�WF�X��� +� �a�Z[��w���S�\T�:�@ ��O�ƫ�Vtr~ ���"]�t�q7Y�<�g��ש���$z +��=���_r���8 �$����l�b�d/U�1�I�n��R���k%�"�"��a2���߽Ec�O���>^!r�#��L/:��\}���� �k@�&e�3�N�[�ʏ�qL�a*�10��+ � ���e잏�L�Ѵ�$\@��D�q���$#��P�)f� �(��lt���2�.×r�g?v�Q�'�mc�u ���PP6][���D,�ڊ���a s�I6vtCW��vn�s��� ��x�B����֔����T/1�o}���~Qq�fcA<�� +H��_���0J)�n0��e/��R�(q1:_r���T[+�&�l�\��_�H�Y1������.��<� �X�?9�H�T~�d��S�@��d�,�<f��B�)$�ҘG~����!��G���`k���u�Is���!���&6�|(��n�Iy�C�vv΅��E)�c�u}V>�PCh/f ��R?Ԟ�i����B�"�)v�<j�rل�B�S��j2�?m�c�b�/�!�������b�=�!����n(-��ǡx�:�S����_QK�(@�9��9 I{D�\��E�s-�]�"��\�K_�������(�k��)���_�v��^w��X;uQ�SO�m>�6vs���C F���ܵ��U�vq���WQľ�u�C�dT�f�J�[����m>�&� �����8���f�};�.���B�j���qW�;ޑ��kr�L�䆺��Y��A���u�!�#�=�~���ݪ?F ����3�r��騗@~�Kqxb��=٢�x8���TP=X��F�Uciԃq ن��ș�P��9���B��4�91 +),��W����� Y� ���s�k(vu4]�\�t4wl�CN�G�ڀ��!@'�Y�����y���wo~|���8�5C��w��ox-�8W�S +r0~�`2�R���V��ޕ����+ۮ���$r�!�u�x������l>��q/]����З���ߔ��a�s�-�xw����l��`� �u[���(��B�/�w��.�T��ĬS��y�;,���p����� ��?�i��8�$��9��o�>a������\�n+gk` ��8���k1]�N<7R��Ѕ�[}+�wǢ�'��<���*�7m>�<ksA�s���\�_��D���� [���|-�C=����uY�S�9oR���8��"�|��u(��*ت86��'�Ñ����|�X���B25��J�����P����DŽ�r��?�%�� Lkendstream endobj -3081 0 obj << +3080 0 obj << /Type /Page -/Contents 3082 0 R -/Resources 3080 0 R +/Contents 3081 0 R +/Resources 3079 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2966 0 R +/Parent 2960 0 R >> endobj -3083 0 obj << -/D [3081 0 R /XYZ 71.731 729.265 null] +3082 0 obj << +/D [3080 0 R /XYZ 71.731 729.265 null] >> endobj -1417 0 obj << -/D [3081 0 R /XYZ 71.731 718.306 null] +430 0 obj << +/D [3080 0 R /XYZ 224.367 708.344 null] >> endobj -442 0 obj << -/D [3081 0 R /XYZ 193.206 708.344 null] +3083 0 obj << +/D [3080 0 R /XYZ 71.731 701.265 null] >> endobj 3084 0 obj << -/D [3081 0 R /XYZ 71.731 699.706 null] +/D [3080 0 R /XYZ 71.731 664.508 null] >> endobj 3085 0 obj << -/D [3081 0 R /XYZ 247.76 689.415 null] ->> endobj -3086 0 obj << -/D [3081 0 R /XYZ 159.162 676.463 null] +/D [3080 0 R /XYZ 71.731 644.419 null] >> endobj -1418 0 obj << -/D [3081 0 R /XYZ 71.731 649.4 null] +434 0 obj << +/D [3080 0 R /XYZ 170.649 613.699 null] >> endobj -446 0 obj << -/D [3081 0 R /XYZ 157.239 606.302 null] +3086 0 obj << +/D [3080 0 R /XYZ 71.731 606.62 null] >> endobj 3087 0 obj << -/D [3081 0 R /XYZ 71.731 593.864 null] +/D [3080 0 R /XYZ 129.576 595.766 null] >> endobj 3088 0 obj << -/D [3081 0 R /XYZ 71.731 538.751 null] +/D [3080 0 R /XYZ 279.855 582.814 null] >> endobj 3089 0 obj << -/D [3081 0 R /XYZ 71.731 525.799 null] +/D [3080 0 R /XYZ 349.928 582.814 null] +>> endobj +1416 0 obj << +/D [3080 0 R /XYZ 71.731 552.762 null] +>> endobj +438 0 obj << +/D [3080 0 R /XYZ 199.853 519.452 null] >> endobj 3090 0 obj << -/D [3081 0 R /XYZ 71.731 520.818 null] +/D [3080 0 R /XYZ 71.731 510.815 null] >> endobj 3091 0 obj << -/D [3081 0 R /XYZ 89.664 500.061 null] +/D [3080 0 R /XYZ 159.666 500.523 null] >> endobj 3092 0 obj << -/D [3081 0 R /XYZ 71.731 497.904 null] +/D [3080 0 R /XYZ 71.731 480.433 null] >> endobj 3093 0 obj << -/D [3081 0 R /XYZ 89.664 482.128 null] +/D [3080 0 R /XYZ 186.589 469.639 null] >> endobj 3094 0 obj << -/D [3081 0 R /XYZ 89.664 482.128 null] +/D [3080 0 R /XYZ 71.731 467.482 null] >> endobj 3095 0 obj << -/D [3081 0 R /XYZ 71.731 479.971 null] +/D [3080 0 R /XYZ 118.555 428.918 null] >> endobj 3096 0 obj << -/D [3081 0 R /XYZ 89.664 464.195 null] +/D [3080 0 R /XYZ 232.228 420.454 null] >> endobj 3097 0 obj << -/D [3081 0 R /XYZ 89.664 464.195 null] +/D [3080 0 R /XYZ 378.496 397.141 null] +>> endobj +1417 0 obj << +/D [3080 0 R /XYZ 71.731 375.221 null] +>> endobj +442 0 obj << +/D [3080 0 R /XYZ 193.206 346.574 null] >> endobj 3098 0 obj << -/D [3081 0 R /XYZ 71.731 438.193 null] +/D [3080 0 R /XYZ 71.731 337.937 null] >> endobj 3099 0 obj << -/D [3081 0 R /XYZ 89.664 420.36 null] +/D [3080 0 R /XYZ 247.76 327.645 null] >> endobj 3100 0 obj << -/D [3081 0 R /XYZ 89.664 420.36 null] +/D [3080 0 R /XYZ 159.162 314.694 null] >> endobj -3101 0 obj << -/D [3081 0 R /XYZ 71.731 405.251 null] +1418 0 obj << +/D [3080 0 R /XYZ 71.731 287.63 null] >> endobj -3102 0 obj << -/D [3081 0 R /XYZ 89.664 389.475 null] +446 0 obj << +/D [3080 0 R /XYZ 157.239 244.533 null] >> endobj -1419 0 obj << -/D [3081 0 R /XYZ 71.731 382.337 null] +3101 0 obj << +/D [3080 0 R /XYZ 71.731 232.095 null] >> endobj -450 0 obj << -/D [3081 0 R /XYZ 163.591 339.24 null] +3102 0 obj << +/D [3080 0 R /XYZ 71.731 176.981 null] >> endobj 3103 0 obj << -/D [3081 0 R /XYZ 71.731 327.069 null] +/D [3080 0 R /XYZ 71.731 164.03 null] >> endobj 3104 0 obj << -/D [3081 0 R /XYZ 71.731 284.64 null] +/D [3080 0 R /XYZ 71.731 159.048 null] >> endobj 3105 0 obj << -/D [3081 0 R /XYZ 181.725 273.845 null] +/D [3080 0 R /XYZ 89.664 138.291 null] >> endobj 3106 0 obj << -/D [3081 0 R /XYZ 71.731 240.804 null] +/D [3080 0 R /XYZ 71.731 136.134 null] >> endobj 3107 0 obj << -/D [3081 0 R /XYZ 71.731 171.066 null] +/D [3080 0 R /XYZ 89.664 120.359 null] >> endobj 3108 0 obj << -/D [3081 0 R /XYZ 71.731 127.23 null] +/D [3080 0 R /XYZ 89.664 120.359 null] >> endobj -1420 0 obj << -/D [3081 0 R /XYZ 71.731 109.297 null] +3109 0 obj << +/D [3080 0 R /XYZ 71.731 118.202 null] >> endobj -3080 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R >> +3079 0 obj << +/Font << /F33 1230 0 R /F48 1934 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3111 0 obj << -/Length 2710 +3112 0 obj << +/Length 3031 /Filter /FlateDecode >> stream -xڝ]���}~E�8``�Z��=uw�w�õEo�=����J�c�,{g����H)���n��%�")��HE�|���T�4�O�� �W���_����d� �l&4o���]�r�'��q��|_�~�J�@dq�z�~���Ӡ��&�}/�}]�����=�ތk���[7M����ǻw�Nv�"��ճ4��J�"�1*h���"�2�_(�D�����_�'M���W����3� ҳ��&�"�s����y��W4M�b�A1�-�C�3��o����n��{�fIO}W��-�b��>tcS1m�<3楕jR�CQ3�S�M��Zwe]5��kq�[���U�1oN�{k##�];�]�(&��ݑFd�3C����ѩ�3��V6�>A�Α/���EiD����1���ʀK���k "Y��9��/�4�ڵ���y����ge���N�-�*ơ;��K�gB����^E��<�Ok{���A��� ��\�S_��u�<s�4F(0�>!��n�m�&&�0���'�J�WփGc���� }�����yG׃����� �z�&�C a�AB�uݵ�`E�+�X�k�������t�p����Q�V�nG�z�ׂ��cp��������)\�Ný ���G�����Ot��Ŵ�Acx��6AA2�f���x�i`�X��8���������Q���8j����pv�0_\3��� �������U�)8��4<OZ�8E&� p�.�j�U�@sM�bb"cBچmL�k��;l� ?��19��$�E{Nu�`rqR��9�%Ț�pcgC���S�n{�~���RKQ��f_w�&�?�q>�����=\e�=A�0D���D$.'|K�Qt�"��Oz�1�/�*�[�`��2�F�hM��@їoD����{�!��!��Y|��2�guBgD�K05l� �Λq���!'VtK�p,,Z�յ�o���'��o���u1%���9z��d�8q���n��Mـ��h`!ƥ%�� -� �'f�%C���S�p��0<���� �(h��j�n��f�DscIġ5�QG43nE�V�KebT�-�`RW:;̤������}���8c `[�Z��){3� ؙa�7U,��¯ُ��V����vTZ�Cm5�ӂ�P�-4��B5�����V=#�v�j�g�H�=�j@���v�c��u�{BPQ4�}�vST���H�zj@Q�{�iҚ��<0MG_US���~��{vi�=�hg��Poe t�9s�H�� 9*�#�"��seok��XH9�'����nsd�?pr�b�\U�o��J�C$W4! (x��"�̈́���6�m{*+d]���:ټ�E��(�� ���HwG ����8I�Q~&�u�I��'n �4�f��Ɉ�nZ�BЗ v[{�� -�����4}tsަ�[� -G��:��+.X4:gh�We+KXëM�R� -��U5�5��-��y(�8{�o�[��$trox/��%��(�;j˂��n2@�D�2�D�_غ>��&��$�� ��)#��>[�"���TZ|�������UT�c��vP��@+�{a��I� -u!���A-���X�M��&(�+Ӥ�8��;U[���/.J]�}�f� T�Dk}P����ˏ� F+�[L�$ߘA(qoZ�P�ͥ!���b"�$���}��>�l���p>�7 -�@ -/�z�m��,���S9��EL�t�C�y?�t$���vc��&�l��Q-ۃ��I3n�]�;��J���_�㡟�l��x�~8�B�~��F��4��@ȄFP����:P&��8����"��(`!d$�3��9yP�>֮�#؉z*�u(�h`J*�i7���{��#F�QJB�'̋N�^4�ǵ��HA�㤂%^K:"�}.K.ٚ);2uK���\�jd �.=�aK[Np�m��';̧��ȇҰ �6�k�MN<�@Gܑ��q�e<�ǿLk�/-V!G͔����,5�RP�[�Vle6�n��d���&���a07ys[Q�ԇ�x�b��Յ��'��k� P�e3VV�i������Y -?��"4��N���+�������LH?�+���_�W\�?�������<��^�y���jw����HM2��%���.Xl�6p@����\���g+�1��"��u�o�-{s��62�v�Br3�j�C�*�ݳ�8/�C���:���"�+����+M`�G\�Ǟ��`����/���E�I�}#�8��ؠ=�ھo�Q�9�lGż���A!�(K�c���?��sٙ�x�3��2��^1��"� -n86�5b.���dbݵg�V$h�,�DI���A&5�F�j�����k�B�����6���f��R���7ܯz� Ͻ{qbb�3|�H'!��=�#�������@��� 0�DF��fY/��쥲ޒ�Ǣ[e���W��/�^�u��D1וQ��0@-M��K����7o�5X;���6����+�F��S��!��)X#�[��+'�w'�^��x?�����<���wH�_��n�@{��d�'�?�����,Fm:�@�)g�M/���7�~ܟ�+��!�"i\6��+-\"�L_�1�Lr�[tdp�,~���/%��}�?endstream +xڕ˒�6��P�%TՈK�!�ٓ�8�l9Nm2N�=@F"��x��� R���r�4��~�ШE��b��MCZ��X���b;?�P������Ë|�e�*�����q�'I�I��&K�H��D��4�~�J�$�b_���3�ոT��/�4z�߇�x��.�M\���ˋ2N�t�J��J�m*�Ǥ��<"�����QP`�������|1��Ϻ������S�]�ųҟ�q<���4�m�����8\�H3��UI亖��ix�;�JoϷ�4��=J8W���X7 ��-c�(ݡ�=��Vo�g�'t]w�Y;�d�m�eZDO�L���Y�}�%�+��J�q%�9%�k������p�껮�f��y.�ș����:��$�!9�1�.�c�}���lؾ:�g��-��m�2}�O�fv�q���Q@#^i��]�"z&=$��E +p�u��'�q���")�������G������������g�������l��{���2\Xi��¶<��7%8�2/�n7�o���)�Cwԃ�uC����&�I7sF�ia���k���w����Oo�c��`��UVm���k���a�@�&���S�]b&q#�,Lv��U$��6��uF�1�ءw}�����Q)$���3�q"���wo~_Vi�Y�̲x��_v�3�gRPP�g����;�ξ �g��֢��n��A�ʦ�Ի����vf����v3u����SoMo��{ԍ�?��ߟv�Uw��U�P�8U�i�iU$q��%s�$fO��hO��!��*.���i�f�H��tVF�ׁa�� 㧁7��9fO��@� ret-:�~�I)���9���=��}��`�>0�7nl��K^�R6�m���j�����l憺��v���I��P�@ē�-�_3�OTS̸�����$�@�� � �橆ԃ���S����~��:�u��>{5��`��Q�$e�M����kD"Ie��1]��<�pbe�CUj2ԣ���sGQ�Q���wM�V���Gd��n�U��W�Ũ��m��R0O��G��dQD1�#H4����+7��n��S��R�(|�*~ˀ��g<��~�*��˴��3*(�<zN��8� +f��3Es��El�g�jO�'��h�9y�<)gD ���O�Egx�K�b� ��'L��y�.�{�� +Fc��7f�O�q{��O-�����ӻ�� h�H���� C��N�=�beyƾ{�PiJ�ŕC0���5�������F)`5��w�����8H�lx��&`t��ʗ�0A �̶`�GRq-���Y����/�s(2,I����Ѵݸ?̏�Y���F̓%�=�l]R��`_�~���,�u�;K�I����=�x��q��GP�@v�75�4j��� R#}�s�&m@0?Zg9���9��{�������I�@�������Y��эx���f{Ó�����(������f*�O30�bF�F��x��� �[�$���|?xI!��BmQ����h!x����r�|��/�β?:f�ʄ�L�Qw���d@��.�� �#8aMÎ�wt�^4���ޛ�Q_��{� +�9 A��5�FV�p�=s��O� +-��NVO����r���[��ݹ�I��KTd45!�&�(��. @������X��g��r�I|} ����՝��������0�1�EKd� 9�m�O3@Bw���|C��D�v��˴��r-�1�BQ���R9�H2��\�g��:z�(]�j�av!.@���\:d��� �E�xf�X)3C�9zj�Z!�T7�A�����k�5ɋ >�C��,E�I��p�����'8�̡9���fWp���K�-�HrL�S�ݺ/��9}~�r���j�A��J��ҡ�&=�� B�?��־xؚ��w^0Q��� Փ鏺5-�y5�J�ϻՃ%�ݗ��뇞^�Ɠ<G��O7x������_k�~�vP�����yכ�L�`��ʺ�у�M~XyT���X�<Q�څ�?�mIGH��^��%��Nm�A��q2ݩ1ҽ=F��jQ�[{뚘� S��P,���n��u$�njВ5q(�p�d���!�i�&�� x��ǣ\H��K�@��{�0��]i}�(w'�qa�]���J}�P��\�k�V��?�^s� �i��̟OJ��bޢ�� ���5&���j0o�^2K' +���7�X���nm��Bb� W�k�u��37{�w��|=L����;r�a�:����>��� �>҅���y�8y��絫&8-U�Q��b�r���I���S_�����sVm{?Ӱ�v��p�`�=�zִ��M�_���og�4($��3�_���7�gQY6q���O&oi+)�����������&i ���Yʫ&02 iԙ��b[<i�)&V&��l��<�ܿ�����<N��*#U3mL���s���S��:H!F~!s��0n�.�xv��M��r�1�n}�wk�.��8_K�}�3s ���8��i)̱��!,|˘y~�L�\��+ +��Z��%�Amuϐ 7J�Xk(s��(�"% T�K;{$x�g{e�9�1r���9oF��g[�8�����_��*�ۛ=^��*r���c�̺�_ʱ�:ț@NM�X�}�;!2�7� \@���|��|fʹ�"LjB����hAW��5'�~���' ��f���$�$�6��q�Ȭ�=��P�@�':�=X�ݎ�/JE� +��5�hVA���:l�e)��Jpv!����1_�� jB��?0I�]�Xο3o�-�p�%�3R�2�=?��Ҷ��1�>���Ha�5 )�i�N�8�h^��� +����� @Q[E�xђ{S�����G)�33�7��&y���]��B�?k8���oX�Gy�j��?�8�\��Y�%�bO�~QM>�'�'� �a�uendstream endobj -3110 0 obj << +3111 0 obj << /Type /Page -/Contents 3111 0 R -/Resources 3109 0 R +/Contents 3112 0 R +/Resources 3110 0 R /MediaBox [0 0 609.714 789.041] -/Parent 2966 0 R ->> endobj -3112 0 obj << -/D [3110 0 R /XYZ 71.731 729.265 null] ->> endobj -1522 0 obj << -/D [3110 0 R /XYZ 71.731 741.22 null] ->> endobj -454 0 obj << -/D [3110 0 R /XYZ 339.876 705.748 null] +/Parent 2960 0 R >> endobj 3113 0 obj << -/D [3110 0 R /XYZ 71.731 693.577 null] +/D [3111 0 R /XYZ 71.731 729.265 null] >> endobj 3114 0 obj << -/D [3110 0 R /XYZ 376.087 671.237 null] +/D [3111 0 R /XYZ 89.664 708.344 null] >> endobj 3115 0 obj << -/D [3110 0 R /XYZ 71.731 664.099 null] +/D [3111 0 R /XYZ 89.664 708.344 null] >> endobj 3116 0 obj << -/D [3110 0 R /XYZ 71.731 633.215 null] +/D [3111 0 R /XYZ 71.731 682.341 null] >> endobj 3117 0 obj << -/D [3110 0 R /XYZ 353.441 622.42 null] +/D [3111 0 R /XYZ 89.664 664.508 null] >> endobj 3118 0 obj << -/D [3110 0 R /XYZ 280.021 609.469 null] +/D [3111 0 R /XYZ 89.664 664.508 null] >> endobj 3119 0 obj << -/D [3110 0 R /XYZ 175.77 596.517 null] +/D [3111 0 R /XYZ 71.731 649.4 null] >> endobj 3120 0 obj << -/D [3110 0 R /XYZ 397.028 596.517 null] +/D [3111 0 R /XYZ 89.664 633.624 null] +>> endobj +1419 0 obj << +/D [3111 0 R /XYZ 71.731 626.486 null] +>> endobj +450 0 obj << +/D [3111 0 R /XYZ 163.591 583.388 null] >> endobj 3121 0 obj << -/D [3110 0 R /XYZ 71.731 594.361 null] +/D [3111 0 R /XYZ 71.731 571.217 null] >> endobj 3122 0 obj << -/D [3110 0 R /XYZ 71.731 579.417 null] +/D [3111 0 R /XYZ 71.731 528.788 null] >> endobj 3123 0 obj << -/D [3110 0 R /XYZ 462.474 546.605 null] ->> endobj -1521 0 obj << -/D [3110 0 R /XYZ 76.712 517.015 null] ->> endobj -458 0 obj << -/D [3110 0 R /XYZ 232.492 477.643 null] +/D [3111 0 R /XYZ 181.725 517.994 null] >> endobj 3124 0 obj << -/D [3110 0 R /XYZ 71.731 467.278 null] +/D [3111 0 R /XYZ 71.731 484.953 null] >> endobj 3125 0 obj << -/D [3110 0 R /XYZ 71.731 455.362 null] +/D [3111 0 R /XYZ 71.731 415.214 null] >> endobj 3126 0 obj << -/D [3110 0 R /XYZ 71.731 450.38 null] +/D [3111 0 R /XYZ 71.731 371.378 null] +>> endobj +1420 0 obj << +/D [3111 0 R /XYZ 71.731 353.446 null] +>> endobj +454 0 obj << +/D [3111 0 R /XYZ 339.876 310.348 null] >> endobj 3127 0 obj << -/D [3110 0 R /XYZ 89.664 429.623 null] +/D [3111 0 R /XYZ 71.731 298.177 null] >> endobj 3128 0 obj << -/D [3110 0 R /XYZ 131.167 429.623 null] +/D [3111 0 R /XYZ 376.087 275.838 null] >> endobj 3129 0 obj << -/D [3110 0 R /XYZ 71.731 427.466 null] +/D [3111 0 R /XYZ 71.731 268.699 null] >> endobj 3130 0 obj << -/D [3110 0 R /XYZ 89.664 411.69 null] +/D [3111 0 R /XYZ 71.731 237.815 null] >> endobj 3131 0 obj << -/D [3110 0 R /XYZ 300.451 411.69 null] +/D [3111 0 R /XYZ 353.441 227.021 null] >> endobj 3132 0 obj << -/D [3110 0 R /XYZ 450.128 411.69 null] +/D [3111 0 R /XYZ 280.021 214.069 null] >> endobj 3133 0 obj << -/D [3110 0 R /XYZ 71.731 409.534 null] +/D [3111 0 R /XYZ 175.77 201.118 null] >> endobj 3134 0 obj << -/D [3110 0 R /XYZ 89.664 393.758 null] +/D [3111 0 R /XYZ 397.028 201.118 null] >> endobj 3135 0 obj << -/D [3110 0 R /XYZ 135.13 393.758 null] +/D [3111 0 R /XYZ 71.731 198.961 null] >> endobj 3136 0 obj << -/D [3110 0 R /XYZ 174.159 393.758 null] +/D [3111 0 R /XYZ 71.731 184.017 null] >> endobj 3137 0 obj << -/D [3110 0 R /XYZ 250.842 393.758 null] +/D [3111 0 R /XYZ 462.474 151.205 null] >> endobj -3138 0 obj << -/D [3110 0 R /XYZ 341.239 393.758 null] +1521 0 obj << +/D [3111 0 R /XYZ 76.712 121.616 null] >> endobj -3139 0 obj << -/D [3110 0 R /XYZ 467.454 380.806 null] +3110 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 3140 0 obj << -/D [3110 0 R /XYZ 71.731 373.668 null] +/Length 2218 +/Filter /FlateDecode +>> +stream +xڝ�n���]_A,�h:l��S��z�[��~�Ȟfy�<,+_���j�3��Xh�Gu�W�HˁҊ��<���p��ʪ;�:���;�G9�`�z���7�g%" =��d��#"'�"�q�Z��/�ח��W����� ��ϫ�.:X/�3-}5�}�_Q����o�><��/I���g`6���%}��!2h�t"�R�� )�D�����UiO,��c{p��;�PE���ut!�@#y<��H�d�C��c���\%�&i�A"bW^W7�g0$Ό�dYъ��5Z��H����^�E�?�Re= �_X���w�Z��OkeQ�QQ��O&�SӠ��-n)͗"��}�M07�� ȸ{Si[Zo+m�� +��9駃tlVAJ���Tm�ɮ5Թj�>��ڊ���!닦�h����C^�sǜLҁת�a<ç;4)��5������uo��D�ƛ`n�A(~ooK�m���^�E��@��]��� XE��*5�@����.��T�o�I�N�KX�Ad`�?�i���IT�w�sϤe�����k30� ����ԗ�+m=�)�^�z1�I�HO���@����NzJdр�>�|ʡL������xkQW��J3N�I���<z)I�K� ��c8�BsQ��LV٧����($T�h(�O,�'Q�N�PUiQ�0�sd^1P�b�d��0hIl�1�|.7 GB�+C��c�T�4�ԜVt�jÔ��d��uW �6�3�L0,h �! ��2�Zܹ���"ޅ��+�g�W�&K�0(�G7�f�_P�$8ߟ�`?�1buڼ���{�����.i}V4>�ME#WȐF/����b~q��37tC٫�)����<���>�:A`�C��3�>60f�1���,���0��Ll�K�fB*�AD!�����=��z�� ]n<"�jP�`�(��#�Nf[Z=eCF�b�j��1�L����E�.qm��9���1Q!�dm0'�T��*%͖���@�dD�g3�R� ]O�'�g^ ��#��� ��f�{�z�d��,�iI�]aP�yS+^���J����l�{]�=7��B�<`�����q���m�{ZA�}8-uV�!����ю8Yڑ��f���撐?�����`S��'E�D���s\,�����c�P��������{I( }�H�j�u�����#&��@�ᠳ�Aq4܀u��^<G������z��>d̶fk.s�Q���W�u|��̝�t�*+N�:S�<�O���%�Վ�� +�=�+h]�>��nh��n/4Q�`�¥��e�Il!����p�}):mTd�w1�"���(P{�Y�CcL�}�� +1�f�Ό�C8�Uz���w�z���*�1b?#u[��Ļ ����)�!wM=�5$�[�F�"#Ρ�IlR��4�V�=_�s�>1��Za��Hg�Hg!�o پ�'�R#����DL�5Á�t��۽�p=?�_��c�'������^� �;m�A�������n��h�Кu���J?�V��&�K�����J�[��*/Z��Vf�J�MIЈ�w�� +��{�#�V��-���H���~~�A<Ax� +��e�����i�������䮰���Y��>��T���1� 3Ŭm7�d:�����G�B$�-.�Є�����t�7<p�����7=pK�mܡ�B��ߟ��̏��ؕ�+--Mw#X֚{�����o�,�`�����mcs>��|V�ȜDlB,a�j�mX�ڔQu�f(sZ}�v��:��mH�F�m}�W���\C�6�ӾI_�U�����Ȥ�)cD��R�G��%zC W]el��L ��O�U�R�?=8�\O�CGu��G}��Z�-���<D��K�<� 0�j����@���5Sr1���е�M9�_t�|�nE��o�I��3�[i@v7��z3"�h��҅s� /���C{\ �f[���'>��7>��s���0j�t83���o.�1�%�h��Mc0���Zoc�� +��3�]�+i�iI���/�b�1������L"�x��hsK�d��� +�7U�G{�vRu(I%�]0�����-'���B�_�~ ��kX(M��A��u����'���9щ2���a���>�����д;@B=.j�k�_��խ��'%:`��r6�l~8�Z{�D���֯`[J�sn�\endstream +endobj +3139 0 obj << +/Type /Page +/Contents 3140 0 R +/Resources 3138 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 3176 0 R >> endobj 3141 0 obj << -/D [3110 0 R /XYZ 71.731 347.765 null] +/D [3139 0 R /XYZ 71.731 729.265 null] >> endobj 3142 0 obj << -/D [3110 0 R /XYZ 71.731 332.821 null] +/D [3139 0 R /XYZ 71.731 741.22 null] +>> endobj +458 0 obj << +/D [3139 0 R /XYZ 232.492 707.841 null] >> endobj 3143 0 obj << -/D [3110 0 R /XYZ 76.712 260.059 null] +/D [3139 0 R /XYZ 71.731 697.476 null] >> endobj 3144 0 obj << -/D [3110 0 R /XYZ 136.488 216.514 null] +/D [3139 0 R /XYZ 71.731 685.559 null] >> endobj 3145 0 obj << -/D [3110 0 R /XYZ 76.712 156.841 null] +/D [3139 0 R /XYZ 71.731 680.578 null] >> endobj 3146 0 obj << -/D [3110 0 R /XYZ 89.664 138.909 null] +/D [3139 0 R /XYZ 89.664 659.821 null] >> endobj 3147 0 obj << -/D [3110 0 R /XYZ 71.731 123.8 null] +/D [3139 0 R /XYZ 131.167 659.821 null] >> endobj -3109 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R >> -/ProcSet [ /PDF /Text ] +3148 0 obj << +/D [3139 0 R /XYZ 71.731 657.664 null] >> endobj -3150 0 obj << -/Length 2043 -/Filter /FlateDecode ->> -stream -xڍYK��6��Wxz�<�V�~��y��3�tR�iz�%��T�\I����P���3{ ���A�����^����qb� �Uzze����+�96̲�x�l_��ຫ،w�ݯ<�2C+^��cF���fo�ɹ�z�����}�Ny�7@����\ֶq��E��k�۫��N��f���y~d:���8�;��b��Vd���m� �-0�b���AQl����(]��N7/Y�}#u?��w^h\�"#ɲ�R�k�7^�|������"�[bi��HoD�&��T� Ac�>4��A<�- �4�%�Y���J� -T՚)�����X]���;��mlnj9g�2-.��(3��1oh$��0)����ӣ��ܝ:�}Ϣ>�m�T�K˲��(Dˋ.��Y澮@�i�0�.Ywe{��C��!�*H�+w隶m:��02�&?���~Uk�7�J���T�ː[#Z�X2�mǗ¿��R������{I�s�+6���'��*�L��0Q';~mÚk3B C)�\Ӳ�EDj<s�T,�9{���"rI��XԽ=j�0r0}z�s��y[\9� -H�$'��{�K|]}lu�?�}� �W�,�\W�,�)�L0��7�(X��3łq�1��n0�t߈C�^ �" -�X� �h����cW>�q�ć��0���� P_tu�3�jf��1�걮��^�}#�wu`�Kl�KA �S�4� -Z�F�U(�zJZ�ڀ��Zb�p)���\�W����@H*n0��X� /�Y(ьK[��<E��rqR�l�O������~�c~C�ޯ�^_���*ߕs���ʖ(�M�����%m*?)�Ǹ�|7ƚ���:����4�3[��t %4Ń�y��M�7�q�84.�vd�(��J%�L"n�:� -ϩ�Д�U�?\��G�h#PU�u)�ZI+s&R"~�&`���'�B���it�3�dWH!{y^��)�E�z%mU���ž��R�\�к�\I�9�b���e Zޞ���.N�f����C�P�*!-�&�H�MU��,�3�`���<��YU>Q���O�A�?`���d��=����$�+�ā����'Eֽ^�{l��O�q�Ә�\u���x��k<s�]�,v5��V�%�7bQw-���ʜ��?'�|�a�'p���{��e�#ı�Y���Ǽ�PT�\A2���a��[�+���f|�|�y��#��^�,]z�L��5vՒ�[�ǫ9;u[�t��^$u��I^v����r�m�.�%�ƉB���^�>�r��`�"���S�q�R��Q_�C�{�������}RMX��� ��m��l�j��%b�pO����a���i(G��ٮb�6~T�м�j��� G�"�4�9l)��^rB�]t-���˷���y�AzY�.��Lv�V��x~<�,=�|�x@ ��K�}�"I�O�e�|�j����ڈ�6V��ڨ��x -|`J��x��(���3u��� �:�Ec��C��1�##Ϛ���!2�x�R� z8�w��@5���O�`�Ii%�֡g9So͢eʧ#� -�1)[Q+���f"f&�>ua �0��86=7\���3iłxs���u�K�oĎU�:S��Q7*�1��m�f���w/�㋎�Q2GzLʃ���?Vw't;��lM/��KZ�N��4��"���~hZX�*7��V����f��u-|jke�Y��&��L7�*rp�Z�2���ME M��N���ǣ��k�dd!;����â�@���ß�U�S'`Q�k5^h���W��A�)ՅL�Itم�w������a}#u{aҮ{l���'t�>(?)��]��/9xuSǐ$�i�_@P�)��K_��kҰ��U��}����nG���K�����v#Ē�L�s��t�[�z/�rV����xJ���B�N��n8�W�!��5������7�e��>���������_��x���������UM�����.���g��w"�r�Y2��6�5��ƶendstream -endobj 3149 0 obj << -/Type /Page -/Contents 3150 0 R -/Resources 3148 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 3178 0 R +/D [3139 0 R /XYZ 89.664 641.888 null] +>> endobj +3150 0 obj << +/D [3139 0 R /XYZ 300.451 641.888 null] >> endobj 3151 0 obj << -/D [3149 0 R /XYZ 71.731 729.265 null] +/D [3139 0 R /XYZ 450.128 641.888 null] >> endobj 3152 0 obj << -/D [3149 0 R /XYZ 71.731 741.22 null] +/D [3139 0 R /XYZ 71.731 639.731 null] >> endobj 3153 0 obj << -/D [3149 0 R /XYZ 89.664 708.344 null] ->> endobj -462 0 obj << -/D [3149 0 R /XYZ 304.825 651.039 null] +/D [3139 0 R /XYZ 89.664 623.955 null] >> endobj 3154 0 obj << -/D [3149 0 R /XYZ 71.731 640.674 null] +/D [3139 0 R /XYZ 135.13 623.955 null] >> endobj 3155 0 obj << -/D [3149 0 R /XYZ 71.731 628.757 null] +/D [3139 0 R /XYZ 174.159 623.955 null] >> endobj 3156 0 obj << -/D [3149 0 R /XYZ 71.731 623.776 null] +/D [3139 0 R /XYZ 250.842 623.955 null] >> endobj 3157 0 obj << -/D [3149 0 R /XYZ 89.664 603.019 null] +/D [3139 0 R /XYZ 341.239 623.955 null] >> endobj 3158 0 obj << -/D [3149 0 R /XYZ 71.731 600.862 null] +/D [3139 0 R /XYZ 467.454 611.004 null] >> endobj 3159 0 obj << -/D [3149 0 R /XYZ 89.664 585.086 null] +/D [3139 0 R /XYZ 71.731 603.866 null] >> endobj 3160 0 obj << -/D [3149 0 R /XYZ 71.731 582.929 null] +/D [3139 0 R /XYZ 71.731 577.963 null] >> endobj 3161 0 obj << -/D [3149 0 R /XYZ 89.664 567.153 null] ->> endobj -1523 0 obj << -/D [3149 0 R /XYZ 71.731 547.064 null] ->> endobj -466 0 obj << -/D [3149 0 R /XYZ 381.763 509.848 null] +/D [3139 0 R /XYZ 71.731 563.019 null] >> endobj 3162 0 obj << -/D [3149 0 R /XYZ 71.731 499.483 null] +/D [3139 0 R /XYZ 76.712 490.257 null] >> endobj 3163 0 obj << -/D [3149 0 R /XYZ 275.93 489.724 null] +/D [3139 0 R /XYZ 136.488 446.711 null] >> endobj 3164 0 obj << -/D [3149 0 R /XYZ 71.731 456.683 null] +/D [3139 0 R /XYZ 76.712 387.039 null] >> endobj 3165 0 obj << -/D [3149 0 R /XYZ 71.731 443.731 null] +/D [3139 0 R /XYZ 89.664 369.106 null] >> endobj 3166 0 obj << -/D [3149 0 R /XYZ 71.731 438.75 null] +/D [3139 0 R /XYZ 71.731 353.998 null] >> endobj 3167 0 obj << -/D [3149 0 R /XYZ 89.664 417.993 null] +/D [3139 0 R /XYZ 89.664 338.222 null] +>> endobj +1522 0 obj << +/D [3139 0 R /XYZ 71.731 318.133 null] +>> endobj +462 0 obj << +/D [3139 0 R /XYZ 304.825 280.917 null] >> endobj 3168 0 obj << -/D [3149 0 R /XYZ 71.731 415.836 null] +/D [3139 0 R /XYZ 71.731 270.552 null] >> endobj 3169 0 obj << -/D [3149 0 R /XYZ 89.664 400.06 null] +/D [3139 0 R /XYZ 71.731 258.636 null] >> endobj 3170 0 obj << -/D [3149 0 R /XYZ 71.731 372 null] +/D [3139 0 R /XYZ 71.731 253.654 null] >> endobj 3171 0 obj << -/D [3149 0 R /XYZ 89.664 356.224 null] +/D [3139 0 R /XYZ 89.664 232.897 null] >> endobj 3172 0 obj << -/D [3149 0 R /XYZ 71.731 315.213 null] +/D [3139 0 R /XYZ 71.731 230.74 null] >> endobj 3173 0 obj << -/D [3149 0 R /XYZ 89.664 299.437 null] +/D [3139 0 R /XYZ 89.664 214.964 null] >> endobj 3174 0 obj << -/D [3149 0 R /XYZ 193.314 299.437 null] +/D [3139 0 R /XYZ 71.731 212.808 null] >> endobj 3175 0 obj << -/D [3149 0 R /XYZ 332.302 299.437 null] +/D [3139 0 R /XYZ 89.664 197.032 null] >> endobj -3176 0 obj << -/D [3149 0 R /XYZ 71.731 292.299 null] ->> endobj -3177 0 obj << -/D [3149 0 R /XYZ 71.731 243.482 null] ->> endobj -1524 0 obj << -/D [3149 0 R /XYZ 71.731 200.707 null] +1523 0 obj << +/D [3139 0 R /XYZ 71.731 176.942 null] >> endobj -3148 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R >> +3138 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3181 0 obj << -/Length 1289 +3179 0 obj << +/Length 1920 /Filter /FlateDecode >> stream -xڥXmo�6��_�����}ߒ^�۰��k�ö��6����ݯ)J�c'��C���)>4���� ��p80��}�H�+�x�'wW\i,��b��Z_]r#b���'õ,X�86=�X��7�xz��=�t�˴�ʬ���|���~����<�g���]w؞�(tκ�u&�َ�]�>:��� -X�r��8g.���MUUI�r�˳$n��lh�z��ٖY�wzS��Jޠ��Y�y�i�enp����(E�4���8!v��F�~��-I�"��Y�:��0�����,�# �������܉��Z��r�=�&{�v}�U�Y���7�nh��4�8�*�u��Vo��圌��v��u��S���j��N��V� �z�v��� z.!N�幆0���B�xD����9�|��Y��o��i�3�#�F���z�������D�����o�cpJ_/`V��k����c,�L,�>��ǖ��r���0 I��ǰ6` �$�a�Iq�"t����6#��ό[�;J\��H82�OuU�u�TE����6کV��z��T�վ���8B�v+(o��|A���ܫz(�M���Lc -Qltr�� ƋMע����O4�J����m�%�K/�f�X�s����?�~Z~�-�����������������aSjʅ_�*��`��aٸ<-G~Og����(���a��A�tb}�pM�"����Y�|hj�6��H<�#&W�$����n�U�aq��O3�35�*EN�N o�v;W�Ày2�Gf\+��B�"wA�7�(b<p��5���P�08�����1V1�w�a��[m9�=2�؏R��zsl?�l�ZEgz�i����Sa9��M:�^�dؔ -�n����a;�=2��T��Gæo��A`��[�l�Y7%��A}�Z�S��X����:'�T(g� -���=�=2�t�ހ�.(d���{C���C��n{#�' -Dщ"��X���X�7�p �����,.Un� -e�؉�fC��ћ{Ȟ��t{���}N��fXٰ�ֶ�Z�`t��L�|�({;,�q���|�S��� -]����.�I��SQ\��؊T��h,bjBh�W9�e%� j��]A�"%��u���i���7y�@�w���g��ll��_\��*�� ����*cR�f���YҴ�4Ҍl��.NU !?�t��ݤl%�%�Gu���58�P�7�z�x�������Q�K��y 2&}��!yp��^e�{�g�̲��u�S?.L����S endstream +xڥXݏ�6��"�\T�+������ �h3ź'Qc�������)R�'�[���HS$E�G�rG~�(rE���K�7 G���m��Í��X2w���|��d���Q ��d2�|Oġ7���t��V�x���=g�}�g�|C��f�:��n�����~�v���H$��=#3���Gn �`��u�Hā���� +�W;���69��C9��S4"&ή"N]��#�WͲ��{0ua���'�������0w�p�8�RO$�Ze5�� DD�ҥ"��"VJ$ȱ"퍥ò������V��J`���.ʾVrJs�%����v���'��E�7�,�oRz�Ƹ�%yF��DR��T8���ڥ������'��rXt�J�4^�tz8�e���c��cW:i�����+���.JV���'���9M�V}�J"T^�'F ��^4�5@�k �ܧ�_��fR����r���k����>ɑ�R��I���w��N�hk�.�e�9K�%K�����.��7vC�`<�t�����[�Z� +�PA�.�:�e�fW����_���f��������B��(�䎦n��B)#��%C����\�;�'b: ��:}��y�U�'j�v��i��d��ğ��?$�q< ��1 �X�пK�RL���]��[�����h�������B:јa�����r|��|�Sg#��g�H��HY� ��%N�J�bm��l�Qۗ�.]�[��5���,o]�Vgꇵ��\Zs^�GTSc���� ���c�$���,$qY8��o�ꈫ_l��,�8%�KM�ikU�&ı��7��Xsڵ���i�w��_���u�UG;��12�Jm[�:�s�ޥ������:�:���b:�\�������b�Dm�����+��ő�y�O�`�������>��x��E:��<`�@�ŵ�.Q���Ͳ��+�a�dm�Y���ڸ���������g�G����i���@�E_<D_�G�pC��7 +�y(����L�aA�ne +乔�O�`�im9�kчT��S�褃:������Orh����r3�O�� �C:H"\�1;�K�f 4\���гp�b��tx�0��(W�5�Fucww��4V����q��SGK,�i�Q'��e��mσ>�e�Y��5��u\�=~*1�h�M�#�����VU��26���(}��%�i]�L���jYf�h�jJp�ʘc�wKtU�DJd��!A�X���z���,�J�'���#�L���uQ�j�_�ԉcC��RW'®�����̸I|} +�{����n���u�0Y����a�)u\p��Ƭ��&[7�i��&oJ<݀�a�761oRN@n��6���J�����Z%|�����R&5�c�Rꚍ'D]'�M�%�4]Uet���j� �i��0�^�.�{#�Q8�S���}�E�U@(~O�R:o矾�������l������u^����=�}�ۜ�f_��n�[�X�*�07'��ޡ���N��x�{溥5��RD=s.|P�*�hXi��%u�0���[}V˦����.r\��P� ����9�r�sƐU�@��`J���^8��!P��jT�^ 鉡�ݒ��[���W���X^Ѡ��nU͢��Eu�C#��,:ܤ�gꍆ����S-�Ѭ3l��2����+q�~��×�����pO���R ����a������N_�g�wv.���������020 #����6�e`g P:�%�1 h9&+��x�f��w�ԡ���N����.�=�l���e拦�����ș_4�\���be�5yMu�$��jp ��ض��l�}��[����Tu���N�@uzV�!��*Ĺ�0��b_jK�V�\�^,�g��C�w�~h�_��:�endstream endobj -3180 0 obj << +3178 0 obj << /Type /Page -/Contents 3181 0 R -/Resources 3179 0 R +/Contents 3179 0 R +/Resources 3177 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3178 0 R +/Parent 3176 0 R >> endobj -3182 0 obj << -/D [3180 0 R /XYZ 71.731 729.265 null] +3180 0 obj << +/D [3178 0 R /XYZ 71.731 729.265 null] >> endobj -470 0 obj << -/D [3180 0 R /XYZ 398.777 707.841 null] +466 0 obj << +/D [3178 0 R /XYZ 381.763 707.841 null] >> endobj -1525 0 obj << -/D [3180 0 R /XYZ 71.731 704.871 null] +3181 0 obj << +/D [3178 0 R /XYZ 71.731 697.476 null] >> endobj -474 0 obj << -/D [3180 0 R /XYZ 359.858 673.37 null] +3182 0 obj << +/D [3178 0 R /XYZ 275.93 687.716 null] >> endobj 3183 0 obj << -/D [3180 0 R /XYZ 71.731 664.918 null] ->> endobj -1526 0 obj << -/D [3180 0 R /XYZ 71.731 528.314 null] ->> endobj -478 0 obj << -/D [3180 0 R /XYZ 381.114 492.847 null] +/D [3178 0 R /XYZ 71.731 641.724 null] >> endobj 3184 0 obj << -/D [3180 0 R /XYZ 71.731 484.395 null] +/D [3178 0 R /XYZ 71.731 636.743 null] >> endobj 3185 0 obj << -/D [3180 0 R /XYZ 71.731 448.847 null] ->> endobj -1527 0 obj << -/D [3180 0 R /XYZ 71.731 394.416 null] ->> endobj -482 0 obj << -/D [3180 0 R /XYZ 342.285 358.949 null] +/D [3178 0 R /XYZ 89.664 615.985 null] >> endobj 3186 0 obj << -/D [3180 0 R /XYZ 71.731 350.497 null] +/D [3178 0 R /XYZ 71.731 613.828 null] >> endobj 3187 0 obj << -/D [3180 0 R /XYZ 71.731 324.912 null] +/D [3178 0 R /XYZ 89.664 598.053 null] >> endobj 3188 0 obj << -/D [3180 0 R /XYZ 71.731 319.931 null] +/D [3178 0 R /XYZ 71.731 569.993 null] >> endobj 3189 0 obj << -/D [3180 0 R /XYZ 89.664 299.173 null] +/D [3178 0 R /XYZ 89.664 554.217 null] >> endobj 3190 0 obj << -/D [3180 0 R /XYZ 71.731 297.017 null] +/D [3178 0 R /XYZ 71.731 513.206 null] >> endobj 3191 0 obj << -/D [3180 0 R /XYZ 89.664 281.241 null] +/D [3178 0 R /XYZ 89.664 497.43 null] >> endobj 3192 0 obj << -/D [3180 0 R /XYZ 71.731 279.084 null] +/D [3178 0 R /XYZ 193.314 497.43 null] >> endobj 3193 0 obj << -/D [3180 0 R /XYZ 89.664 263.308 null] +/D [3178 0 R /XYZ 332.302 497.43 null] >> endobj 3194 0 obj << -/D [3180 0 R /XYZ 71.731 256.17 null] +/D [3178 0 R /XYZ 71.731 490.292 null] >> endobj 3195 0 obj << -/D [3180 0 R /XYZ 71.731 233.256 null] +/D [3178 0 R /XYZ 71.731 441.475 null] +>> endobj +1524 0 obj << +/D [3178 0 R /XYZ 71.731 398.7 null] +>> endobj +470 0 obj << +/D [3178 0 R /XYZ 398.777 359.328 null] +>> endobj +1525 0 obj << +/D [3178 0 R /XYZ 71.731 356.358 null] +>> endobj +474 0 obj << +/D [3178 0 R /XYZ 359.858 324.857 null] >> endobj 3196 0 obj << -/D [3180 0 R /XYZ 71.731 167.168 null] +/D [3178 0 R /XYZ 71.731 316.405 null] >> endobj 3197 0 obj << -/D [3180 0 R /XYZ 71.731 116.195 null] +/D [3178 0 R /XYZ 71.731 280.857 null] >> endobj -3179 0 obj << +1526 0 obj << +/D [3178 0 R /XYZ 71.731 179.801 null] +>> endobj +478 0 obj << +/D [3178 0 R /XYZ 381.114 144.334 null] +>> endobj +3198 0 obj << +/D [3178 0 R /XYZ 71.731 135.882 null] +>> endobj +3177 0 obj << /Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3200 0 obj << -/Length 2453 +3201 0 obj << +/Length 1379 /Filter /FlateDecode >> stream -xڝْ��}��o-Wl��y�\�����f�����-і2��ұ��� @���=��� ���H�~�"��$�!�� ���8��__�L�f��E�n����0\dn���~��<7�En�]�O�})�Av�uyN�Ҹ-�US�����ލK�9���k�����Ww��(L�, _T��\�-R�/F��gz�n6Z�m�˾߾Y�c�s>����"������n���/_M3�P9��}7����ض��Ƿ���v��~;#�5��;U��@t�\AC -��?��W��k�ޫ�Q5���s��������V��N��~{�����{�)~�~�'���M�Ls]?@�HR���Љ������^.��9�䫬��e�|����w���ڼ2<��KϪ����O%��I��kNK�sD3�L�d�����R�1+B=�R5�He��d֍\���W�a�dO3�m[�� 3�,���_3���n����Ǯ�(�����C�'ed���$ZM{����m!Ip![�L� {iq�k���7���a�I!r����c���Ç�O��6��At%l�F�Ma��Y8m�%|�b%�̤�J6Vc�Oth������4[���|�ШnF3cت��^ ��� �^���9;3ŏ�|-��v�~egK�̃��Aò�*5�y)���M�D^�dz���(�K����A�ư/�9�m���²&��a�Ix�i>g�,1�:d��㰩�<��<`Bu�J^I�U��� �&ٰ�z�S��FZ�$��sn�p�}P-a�ܞ���Zm��f[+Q����d�J�M��J}'��)��B��K�3A)��x���(��$��i��sa�љ���Υ�Ԧd���i�aҌGH������FP�'�=4"�iS�����o���9���6B'&�2,5����|8O� �A6F��J�[��F��zz��xZƑ��Y�NW(��巄?� �J�Ӓ�>���JT)*�7�������Th�!DS��0 �;����E\(��� -�0�>����GE�7��Y�����[)���o�K�E��wù7��*x��1ďXLeqc�<�x>4���&�¡�r�`C?t�h���mI��a������0y���h*����㘗v�mh�1�3\q+9V )��Ϭ��vF���ݔng����{�,Z�͜��*H%�~��y�|+Ԙ���N[���+�?�:�;���&L�j�С�%����\@Tg��[�Li�SLy���0�����+'�0�i� gqëu�n�;.��tLq8�64Z��c�)x"�8bZ��:C3�8�;7+�b>���r�]���Rm)�:�f��A<Ԓ`�,�ũ��"8�����g�3N<�g��%L��5B:[#\�.,+��k�u��5KC�6}nh����g� �M���\D��$;&��}�����Dy��=�F��\v�0�M6�c�<��r)8S��$B>m-)#��qS:X�mr6�Kq$h/kNZ��Z5J��NЯ�z� ��a`���Ϩi�8�r��.a�h%&��8f�a3���]���U����R0�%��E��ޢ�pW�����������X˷4�˔�@3�8Y��LB�l�@,����9s�-��7zx��Y���;攮���緃��������_3��V+,O�p�M�q�I�ӱ�c��I7:����V��1�����A�H����!r�����Cu+6�-�A�=�_=Z��"�������F�- -��� ��s -�e�p���ՐIe������������"�np�i�t�Z �KXj*�,3��v�"=��0��D�}�/5�`Y�5���v*���$ֽ&�'�&��4��hi���{��g1uu�i6A��2�8_ �4%�gɥ4,g�C_���;������o��.�/?@�Q\x���{�,�������(}�8pJ���o���y���p�,A�e$v��6s���)�{�K�'"��K��= -� -,D_�b�����_� *�Lč��LVG(��:����dF�tW��`�Ɩ�mA%�DޫA�!���L ^��zHC }a��7�0 -@v`� Xm��t��Q�a�2�-6!��P�%��ъN�F;$��!�H� ����Do����<�[#dS��.h�ї ]����&^�K���� `���-;�%��R˲�@�&{��ʢp$~�0��[�Ջ#CT,�:yyԥv��T=b\�+i{X%���<%�A�b�57���>Ņ�2���J�K�R6]���r��n\Ƙ_t�p��*�/�Q$!� #O�<�ᢌ�������9_o�\�q!�'6pڛ7���a��Z� �o<�JN�P-�����j���^HQO��j( ��~8aDa���}��M��o�����(H]/0LP�M�ܿAג��%�^endstream +x��XKo�6��W�(1#Q�kov�)Z�H�X,�=(m�EC�M�_�iɒ�t=��p������Ȇ?g8,p���7Jv�h +/-1�"���|yqu纣�E�;Z�FS�f������e��u����(��ٖ˨���,�J���5M��c��ζ�x������s��Y�L�>o�}>ڧ���|懁2��B�uR�'�m[O"���zc�� �y�8��|%Z��WY����@{nn�f����uy��lq3[><~��Ww�����ty�C��2X�2�G�cn[���/�6�2���KVm�w-w;3��v�{ 4'���g�H�-�!���ȷ���e�����%Wz����5�$�8IDY깍��3�P�����S,�����A� Ae9�r�U�yJ�e�߃�,���q�ߡӫ�{֊�M@{�&�?�js���u���4��B�d.D*Ү��>��2Ǐ�C�D&-���A��� +#���!�n{��[�bw�"�P +|~�/��yg��k'v�t���4�n4K%��C>;E�g3��ikdNҦE�t~��>������E��� m&<I��c��x=j�T��&��M�rΓ������62' �"tg�"���>�g�;jB�?K�� ��� �6Ӣ y"�K1|Q ��(R�Ͷy.������+[۩���r��8�w� +Q����q��;�C�r�~r� g��UQ�v�|�zI}��0�aF;�mG8�.N�9���%5wʴ��=��x�}���\��v�4��Md�M�(Fq�b%R�BR��_Ǝmi�&��(�)md�[��4h�Į�#p�x?s���mVB�w��m� +�����yE��'���0�@7˩�I$�rSfN�C�(5�X��\�Nd���cdz�d.h^�U���hѝ�H`�CMm_���r�!0��uaj! �E + +�� �&U�R��×��b6 ����h�O�sتc�m��`�v=[���/��8`�15q� +MM�u=�y�.��0T�����J�G�����p螀��<:���ȁw�~d�Q� +Kn��@T-ǭWA*���ׁ�1Q�ʭT�xU�Z�v�Xg.i�Y/Qε<|�֛�x~�JE\Յ(i$ڳϒ�Q9�����3ʡ`2� +����k�4�0�N�H�3M�s��Us�O����"OM�AS�-�+E`RI|;u�z�9�)#���%c*��A�}g$�q��� ��A��e��2ޔ-(����[�mB��7��|��Ӛ����@Y�)��,��^�x�>X}���)�I�=�{H�s�C�Q�@��Ng"meou����Z���=;[�Gm�)�71&X:�dDnԧ���,t���6"��M<2�%�YS�ԏ }��^]�endstream endobj -3199 0 obj << +3200 0 obj << /Type /Page -/Contents 3200 0 R -/Resources 3198 0 R +/Contents 3201 0 R +/Resources 3199 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3178 0 R ->> endobj -3201 0 obj << -/D [3199 0 R /XYZ 71.731 729.265 null] ->> endobj -1528 0 obj << -/D [3199 0 R /XYZ 71.731 596.862 null] ->> endobj -486 0 obj << -/D [3199 0 R /XYZ 341.27 551.607 null] +/Parent 3176 0 R >> endobj 3202 0 obj << -/D [3199 0 R /XYZ 71.731 539.169 null] +/D [3200 0 R /XYZ 71.731 729.265 null] >> endobj 3203 0 obj << -/D [3199 0 R /XYZ 71.731 514.94 null] +/D [3200 0 R /XYZ 71.731 718.306 null] +>> endobj +1527 0 obj << +/D [3200 0 R /XYZ 71.731 663.412 null] +>> endobj +482 0 obj << +/D [3200 0 R /XYZ 342.285 627.945 null] >> endobj 3204 0 obj << -/D [3199 0 R /XYZ 71.731 509.959 null] +/D [3200 0 R /XYZ 71.731 619.493 null] >> endobj 3205 0 obj << -/D [3199 0 R /XYZ 81.694 489.202 null] +/D [3200 0 R /XYZ 71.731 593.908 null] >> endobj 3206 0 obj << -/D [3199 0 R /XYZ 71.731 487.045 null] +/D [3200 0 R /XYZ 71.731 588.927 null] >> endobj 3207 0 obj << -/D [3199 0 R /XYZ 81.694 471.269 null] ->> endobj -1529 0 obj << -/D [3199 0 R /XYZ 71.731 469.112 null] ->> endobj -490 0 obj << -/D [3199 0 R /XYZ 249.392 431.896 null] +/D [3200 0 R /XYZ 89.664 568.169 null] >> endobj 3208 0 obj << -/D [3199 0 R /XYZ 71.731 424.544 null] +/D [3200 0 R /XYZ 71.731 566.013 null] >> endobj 3209 0 obj << -/D [3199 0 R /XYZ 71.731 352.828 null] +/D [3200 0 R /XYZ 89.664 550.237 null] >> endobj 3210 0 obj << -/D [3199 0 R /XYZ 71.731 270.138 null] +/D [3200 0 R /XYZ 71.731 548.08 null] >> endobj 3211 0 obj << -/D [3199 0 R /XYZ 71.731 205.381 null] +/D [3200 0 R /XYZ 89.664 532.304 null] >> endobj 3212 0 obj << -/D [3199 0 R /XYZ 71.731 190.437 null] +/D [3200 0 R /XYZ 71.731 525.166 null] >> endobj 3213 0 obj << -/D [3199 0 R /XYZ 108.889 169.281 null] +/D [3200 0 R /XYZ 71.731 502.252 null] >> endobj -1530 0 obj << -/D [3199 0 R /XYZ 71.731 118.073 null] +3214 0 obj << +/D [3200 0 R /XYZ 71.731 436.164 null] >> endobj -3198 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R /F48 1937 0 R >> -/ProcSet [ /PDF /Text ] +3215 0 obj << +/D [3200 0 R /XYZ 71.731 385.191 null] +>> endobj +1528 0 obj << +/D [3200 0 R /XYZ 71.731 252.553 null] +>> endobj +486 0 obj << +/D [3200 0 R /XYZ 341.27 207.299 null] >> endobj 3216 0 obj << -/Length 2986 +/D [3200 0 R /XYZ 71.731 194.861 null] +>> endobj +3217 0 obj << +/D [3200 0 R /XYZ 71.731 170.631 null] +>> endobj +3218 0 obj << +/D [3200 0 R /XYZ 71.731 165.65 null] +>> endobj +3219 0 obj << +/D [3200 0 R /XYZ 81.694 144.893 null] +>> endobj +3220 0 obj << +/D [3200 0 R /XYZ 71.731 142.736 null] +>> endobj +3221 0 obj << +/D [3200 0 R /XYZ 81.694 126.96 null] +>> endobj +1529 0 obj << +/D [3200 0 R /XYZ 71.731 124.803 null] +>> endobj +3199 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F23 1125 0 R /F27 1132 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3224 0 obj << +/Length 3149 /Filter /FlateDecode >> stream -xڝk��8����|8� �xl��ޗk��]t�=tz����B���[�v��4��)?3�(��(��(��ge�?g8V �#"K��*>?ث#����0ŎIv#��O��K���ȗ���ʵm+��U �zb�����椪6�7;��ki��MrΊ�|V ���8��_Y����O?=|����d`E�����Y�'��q-����٧X��h���K�^A��Pk��N0����=�ICU$�Ro��.�4��UY�`{�6�����S -Dz�����NL��Fx�-�.h�`���K�vZG^x-;6mV4��YYXs����� -�s�|�d7�!���4c�s����}�������K�ʞ�E���{���{~�={���:����=���`�5x��ho��ړ��xa{Vw��� -���_��}�0��͋��$(M�x�KY_>�;�glQ��%�ȥ�K�L�)R=ǁ��=D��� l8*/�k CsW�9��\B,4�![9�} ��3F_r !�����@�K0 �ϗ\b)��.qG��-�~SU������I�Ns����2 �Rm|�t�6w<J���}�N�殲sF/y�\h�P��} ��3Fc�@�,�a���T��S`�^�.��ТMʨ -uoR a��1�����X�|k�N8:&\S���W�[3�:;�Z�:�5�%]Gp�Vi��mPԩ4)��y���3b���>MYM�1k�eT��6KĭK�\IS\�dK�����J�㭏T�q����i{��5pR�3<�M-�q״�9�+Mz�z"St� -��<����H[�/��GB���mq�jn4]�=�(��d�TJ��mrQ�g/́�OuVv ��gmz#� -Z����˹��'��K֞���Y|`{�g^�*'��Lq8��J������f�"c9V�����ogc&ٍh�j�f��,K�#!S�]���9#o ��s�I�?��J)��� D��t)%�8N�ٝ+��#��WMTS�E$�<~��#�a�e��e�L��E����%d�Y���X.��`���^��^�i��r s��9Н��1��F�k��o�����D��1�j\s*�<!�vM�]��ί4�TV�i�W.T��y��P� �8��ɌX��l�%�=�w-�1��.�����j���c�f�����/�@�A��H�*�KB�u@����G� -Fu����X̙ fL��TqL���N(XBY -0C/h���m���1�n�s�U7����1�~�D�C���YLB���$b�w8���o�o���9w Q��k��m��9!{�X{� -J���ZL��)�/Qg��r#k'�����Jg� f��]��,�;�^p��)7^�t)^�� S}'�X�i��)�n���ש&M��H�ܕJK::=~z��w{�@.� ~������� ZA���NW�����9�|i _��Ak�n�bg�ٹ¶lϿ�!mǒ^�r}:w������}��uW���z�� �����e@W������9�G�*=c�����Vm$����*1%�-��g�|�@a�q0�٫]�cW����>�Ԑ���+D��e����9o;~ۡY ���A�}z@��z�M��h���x�!C�I�&H�n�P�-R��4�d͉9��qҦ�����(�4�5�3��x)�,"x4����[ԲT��9d7�/���"�n�"c��� u -�^ׁ 4�;��������j.\���I���]i[2���>�F�����;(���ȷ�� ���x�N?+��tˋ���3�!9�yN��/�Ѻ�&�!~��X�ZJW� �Sv�ӄg�E��5�Y=ꁁ���y�3���j=�^պ]Iw7��=��A��@�B�p�ԭ:������"^�1�h'��70�h8T[�U����\M��Y7�̕�p��5.Y��U��^�O�9bQ�|�h�L]���Mޔ��Jr��X3?O�Y��Q���8 �2��V����mh�x���7do�~�I��1j��������xj���g==8���UI�~D�k3kźeK;��1�N�<�n� ���®e����~�w�ڼ�����:oMa�CF��7m�vm:ŧ��F�0sbE.�gr�e�:�^�b�@�t�-C?��}� &����g���A|'��Tv�DD� ��I�A��#l���Fr�:��^)q����1s���#�l��/����ӷE���9�E���x�[/��>ؠ)f���I&k�:��Ż�d��Z8M�/ !i����(�BȌ88�a��K\��%�߀hkP��X��5}!xY�K�/�4���P� -\YT*��kb�[t���%��̛woԼ�X�?�UF9��.��˄o.s�s ��ǔ�����9�k��Mֹ��g�tq�u��@[�5K���.�9 -�36�W�1eh`o�`&��nj�6`o�ʦ��Y���g��Mi��ThB��9�*�3pD㙧�I�����$N�������z��y̵Eͥ�&χ���`"n��6m�)�^/[m ���պ���}��ߛ����y�s�AP;Ԍ�gѽ�Q�_i�ZK��e�4<�z ����l��R�p�>´�O^���`�f�@� ;���4W�=N��Θӵ�� F�T�y���c��t)t_����[nI��|V���"M�}� ���Yе�̔'la��0�O��lyq�L���*��;j�7�:+,#�T��.okY���`O�*ܑN#"���D�h���b�ŷ�[�V�%�������/Y� �w��K|�ߕǣ>R\���x$�}]A�?ct֯UQ�s�5�r�(o_crz�:�s�.�[��!�\����u��ꍂ5�������U/�ՖVcF����PӻN�s�a�>W�G�f:3��j#�>����Ʊbo?���Q�w����N����/�_���� �Թ����/5<,a�����ҟ],%�!(�Mendstream +xڅK�۸�_��'OmE�[�S����3�v�o���Z�-m�=�����$K�3>�A��,v��.v�A�&���z��.0�w�1��r\�|z}��Ϟ�K�$�v���8v�$��s�8pw�ٿ�s������<�ڏYU�E��Ӹ�叢,����}����;�";������|�����! +h��Dv�-�g�(W[��AVV_45R�q�.��(��M;�����@��4�`�geEߖ���ȷ�\��@u��o]��fd�2��� ��C�����[5�@����~E�ldf�3����)��+���RCΌa�����|5�v�B��CM��A}I@�D��K=�I"ā6���z�i� +b�@U�i�aP��I�$�+jjA��(�`0zs8˰���E�N#8G!k�0��d�!Q7��\�&Çs�=�UQg�%/)������9 �����:�(�dI��3�ڻ�����v�+�Pﲧ)a��Q�-Ga�`z7��2q�vJ�.� �ר�qH��r�,"f��SǷ�� ��iUWޱ}�A`}Q�@=�$��`������N����1V~+���W�+j=�ā��@����K]��4�*-�5/�nL����������[`��M�4m�V�I�X�+���;k���h��C�d�;�UEMB��!���4�7�kl/����,N�1�����#+,�,�P3�ݠ���#�h��^!�B�ǽ��c��5�F�}����x�M�s{�^D� +m*�Re+��(�nI��@#i�Ij:U*�+�^��g\�_�]S���7��ں��R�zi��<�7�1���cM���bt�}r��5�����=C#�8;� 1���x�wՐ���X��S=�:�f��A�JE��Y0���0�`�[�n2�z��g9F��@S�;K�xK�pV8[h T^6m�#�-$�i��f�,��~`vfo8χ�`>���:F9+ ���'�=�����{������i�����RU��`:�)N��7 ��h�(&�Mqo�9��R'�B_ɊzgUr�bkע4�%�~�5�k�����밈�H �d�` �eՃ���Zb�3�7Ό4�a�StZ^x{߱xvq���\2�j��ԗ��֢�E�'��i��~��}��l,��c�5��۞,df&�R^�@�<u3'ۂHmlK�Rv0u\앣w�!���܄oΆ{f&�S������șj������Q�]"��Mo�M�k#�`�v�SQ���QO���=�s��e�mZ.=�C�Ӽk�s�c�� +Mvs|+��+�� +� ��4��yܹ_�L�эC�wFHH?��e,k0�P+J����@Z �Nj��yD�?T���4i2_-�^�,67�j��}wE|�C����?���m:�Zh�i2��V�"�+/2�� �MF˫0��1�|���̞�8k�ٔEU�,����Dd��������9W�����P�ܻ~ ��i��-X�au����e��ţK=8K���� ��A������t�G{s8���iـ1��uX0r�^-���7Uj1��������KᦿI���~`�ԟ�n�5��(s$��oJ&� +.���:��~B<����.�g�~*Ë-�7-x�j�k������N��p�C�`̕�uz����-�5�N��:T�=��b +b]�(�d�����V�6Gi5\��$��ʠ��)�p�#$�7c��<(#/��M4S�wx��bc����p�R��=��7"�+^�5�]ݤ/|�n4 +"��1��"�^Vܣ�҅��Ema�8q�-z�֧�wZ���9�T�=����g��G�bqA����0xF*f�y���Ez������t1$:�O�b�/[�i �����i +�KLXĊc�o6tKy�8�����LO���� ��Z��P�U ���ֳ���ᮬ_�t3b��Lɒ�41��!�^ߜ�7�(�i���z���g�`�a<�\.�����#5��!o2�(c�j�I!����ژoR�g� W�)�f� �:e�+��W�;�<ripm�n~*C^!���ʈQbG��yD4�A��P�*".��"�^qb����xWd��������/�A�_K$|����+2(���)"�%�5{� �8���78OX�@<8m7��0����i�QN����3�+���'zS�X�]u�,Ev'IU����:��f�)��<�rM�I� �%�.�<�`E�{&9v>�� �A�G��a�}sx���(2�ض�u�.$PH�k���� i�����M�-�O=ѐAy&��#��6�#ȁb�){Fy�����Ф�����g�˲"���H���ZSx5e +�C� +�6�� � �'�00\S+����4��|�)z��yF�g�Uu�,�6Q��������� �ȉ)En��%�/D�'V)鋌g.T�Z�x�>�x���B�7�5Ծ��'t�t����ĵұ���Cg6����ԗ8��z���o�5n�����}c�v;N4����+u�)�=H�%���>�ȓ��;�4Sa���C�_��8���#�t����8K�℩d�D���,�T���љd_B��>1�3ns���cցJ�I�"<h�G`F9.p������[lÿ� J�>cnp�r_B����k~���y����غ���E2��}�Z�iƎNY5RGA��6 m%�`t`v�WM�D9���F��"Pe4�����?�<��_��L�����F�eL�hhs�S�^�V�~�F7O7ֶ�5 �T�r��!� �yc#\���G���U5���K*�����ǭ�E�Ы:��MD*^D�a�km���P����ϴ'�4��~�#A��Z>�)�����GEXevI���������"\��?�2U�D6�1n��OX���u���2���`�]�����Z�:���?�`U2�>��XI��*�$��zuC�F�x)7�� +mYr�u�} ��p�����a8YV�e�l���VTX��\�e٨v��WY8��=,����b��c���T������W/�B9��tK��!șnߛ���K���7W��퓖����v,��ۙQ6�� ��v\C���������՜0�endstream endobj -3215 0 obj << +3223 0 obj << /Type /Page -/Contents 3216 0 R -/Resources 3214 0 R +/Contents 3224 0 R +/Resources 3222 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3178 0 R -/Annots [ 3222 0 R 3225 0 R 3228 0 R 3230 0 R ] +/Parent 3176 0 R +/Annots [ 3237 0 R 3240 0 R 3243 0 R 3245 0 R ] >> endobj -3222 0 obj << +3237 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.14 657.664 205.897 666.575] +/Rect [141.14 304.469 205.897 313.38] /Subtype /Link /A << /S /GoTo /D (upgrade-cvs) >> >> endobj -3225 0 obj << +3240 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [203.157 639.731 267.914 648.643] +/Rect [203.157 286.536 267.914 295.447] /Subtype /Link /A << /S /GoTo /D (upgrade-tarball) >> >> endobj -3228 0 obj << +3243 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.225 621.799 278.982 630.71] +/Rect [214.225 268.603 278.982 277.514] /Subtype /Link /A << /S /GoTo /D (upgrade-patches) >> >> endobj -3230 0 obj << +3245 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [81.972 565.385 134.276 573.923] +/Rect [81.972 212.19 134.276 220.727] /Subtype /Link /A << /S /GoTo /D (template-method) >> >> endobj -3217 0 obj << -/D [3215 0 R /XYZ 71.731 729.265 null] ->> endobj -494 0 obj << -/D [3215 0 R /XYZ 367.202 707.841 null] ->> endobj -3218 0 obj << -/D [3215 0 R /XYZ 71.731 697.476 null] ->> endobj -3219 0 obj << -/D [3215 0 R /XYZ 71.731 685.559 null] ->> endobj -3220 0 obj << -/D [3215 0 R /XYZ 71.731 680.578 null] ->> endobj -3221 0 obj << -/D [3215 0 R /XYZ 89.664 659.821 null] ->> endobj -3223 0 obj << -/D [3215 0 R /XYZ 71.731 657.664 null] ->> endobj -3224 0 obj << -/D [3215 0 R /XYZ 89.664 641.888 null] +3225 0 obj << +/D [3223 0 R /XYZ 71.731 729.265 null] >> endobj 3226 0 obj << -/D [3215 0 R /XYZ 71.731 639.731 null] +/D [3223 0 R /XYZ 71.731 741.22 null] +>> endobj +490 0 obj << +/D [3223 0 R /XYZ 249.392 707.841 null] >> endobj 3227 0 obj << -/D [3215 0 R /XYZ 89.664 623.955 null] +/D [3223 0 R /XYZ 71.731 700.488 null] +>> endobj +3228 0 obj << +/D [3223 0 R /XYZ 71.731 628.772 null] >> endobj 3229 0 obj << -/D [3215 0 R /XYZ 71.731 616.817 null] +/D [3223 0 R /XYZ 71.731 546.083 null] +>> endobj +3230 0 obj << +/D [3223 0 R /XYZ 71.731 481.325 null] >> endobj 3231 0 obj << -/D [3215 0 R /XYZ 71.731 560.404 null] +/D [3223 0 R /XYZ 71.731 466.381 null] >> endobj 3232 0 obj << -/D [3215 0 R /XYZ 71.731 495.273 null] +/D [3223 0 R /XYZ 108.889 445.226 null] +>> endobj +1530 0 obj << +/D [3223 0 R /XYZ 71.731 394.018 null] +>> endobj +494 0 obj << +/D [3223 0 R /XYZ 367.202 354.645 null] >> endobj 3233 0 obj << -/D [3215 0 R /XYZ 118.555 456.709 null] +/D [3223 0 R /XYZ 71.731 344.28 null] >> endobj 3234 0 obj << -/D [3215 0 R /XYZ 71.731 403.119 null] +/D [3223 0 R /XYZ 71.731 332.364 null] >> endobj 3235 0 obj << -/D [3215 0 R /XYZ 364.919 370.462 null] ->> endobj -1531 0 obj << -/D [3215 0 R /XYZ 71.731 355.354 null] ->> endobj -498 0 obj << -/D [3215 0 R /XYZ 244.469 323.04 null] +/D [3223 0 R /XYZ 71.731 327.383 null] >> endobj 3236 0 obj << -/D [3215 0 R /XYZ 71.731 314.402 null] ->> endobj -3237 0 obj << -/D [3215 0 R /XYZ 71.731 263.1 null] +/D [3223 0 R /XYZ 89.664 306.625 null] >> endobj 3238 0 obj << -/D [3215 0 R /XYZ 71.731 248.156 null] +/D [3223 0 R /XYZ 71.731 304.469 null] >> endobj 3239 0 obj << -/D [3215 0 R /XYZ 71.731 199.105 null] ->> endobj -3240 0 obj << -/D [3215 0 R /XYZ 71.731 163.14 null] +/D [3223 0 R /XYZ 89.664 288.693 null] >> endobj 3241 0 obj << -/D [3215 0 R /XYZ 104.01 151.583 null] +/D [3223 0 R /XYZ 71.731 286.536 null] >> endobj 3242 0 obj << -/D [3215 0 R /XYZ 104.01 139.926 null] ->> endobj -3243 0 obj << -/D [3215 0 R /XYZ 147.048 116.614 null] +/D [3223 0 R /XYZ 89.664 270.76 null] >> endobj 3244 0 obj << -/D [3215 0 R /XYZ 104.01 104.958 null] +/D [3223 0 R /XYZ 71.731 263.622 null] >> endobj -3214 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R /F35 1463 0 R /F57 2358 0 R /F54 2195 0 R >> -/ProcSet [ /PDF /Text ] +3246 0 obj << +/D [3223 0 R /XYZ 71.731 207.208 null] >> endobj 3247 0 obj << -/Length 2190 +/D [3223 0 R /XYZ 71.731 142.078 null] +>> endobj +3222 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R /F48 1934 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3250 0 obj << +/Length 2475 /Filter /FlateDecode >> stream -xڭko��{~�?8��iQo����^q��W\ڢ� -Z�-�dQ+��f}g8CY~l�� �D�p�p��\��#�y�h#�,]���p���??H�X1�j����a�m/6b�ŋ��" C���EG�H��S�S�V���r�a���:4]3���zw\�`��i[������?=M��8�"~u{�v颀�e�?̰q�����\ea��.�=��oQ>p]I)�4�@3m�K;Ze�k�l��o�V���T�׃n���Ga?���Z}�[e�Zw�J�Ա���J-(q���������@�ߦ��ܗg�W��ږ��Z�R�"͓Ee"I%j���O?�� -T�=��~O���%��f!�f/��=�����@ͯ� Zƻa��Y�i!�t�Q�� ܠ;[�"����ӥ�WGۘ�����E"R䜉,.�w��*��@�'�v��MG_[3�m���́��n&�2̅�M��s�<ᱯ��n���"r���}�1���5�QD�8�Q&�0e���LQ$/?N'舝��%ؠ�A������1G����.�5�jiX֪��q��v�Bdara����#�v��2 �H�c���(P -έ�o?����/:�a��V���K��p 4봮.Y�����e�� Ǥai:8_ܔ��rP�R��Q�^�V�1���ݑc���똁ƨH��Z��<יM�A��og�r)���.G�y�n~�4�jO6i���:L&1��b�t�$�,28����0w�L�k\80��,(�2Ϥ����o�~Pդ���j� �r��sJ�;6��GY�8���=����t�Z+�%� -��w���!��$`���y���Mϗ���|��i�w�?�edb�^g�����) ���֪���Լ��eDֈ��h���棙�B���A���5�"��e�������^�N��%���?(L�~]�X�Yc�Au̸4�B�.��:��p!�`8�]��H��t�q#ԩ�@L{���6E0�Gݕ�C���[�x���`�i�L�3�8��^[����y5Ü7vFɽ�����Zci�o�C�ތcCW떡��� ��s�$<��OX2�FQP5�-�N�MṘ��[��|n N]��ʑ��{�EQ>����~d�l���-��K���Y��Xu\���Y `z�5V9�^��"�tN�tV3�x������]�J�u� -��,�������w���r{��!G�F������X�9�[w&;�T �4��RF��]Ѹ��QA��ŭ�BL�"��j�õ`>� fs�RQyyG�s�+&���_���\�\쀿�`ؽe�1c���5����ӎ�-�U$$bCV����m�{��s����pxVW��Q��x6� -����yG���w��Q�sz!�w��k5f�GY�,�U�5��(žA�������p�J��*��w��/)+��z �dMkWʖ�L�v�����vF�[��(��7XyAo������\�U���Z�7Dyw�|�%!����a�25ۤ_��W�{b�L�*��.v�e�,�CPC���^��"�/��'�5/�\�q~��VXe��#�k ���=i���>G�5k�G?�M���œ�ƊV�ôy�@�a�Tg Vi(c�GF`��m�B(��`�����l��i�ZA��t�7�`�` Eqa��,��m�+��}Dy�qG�jsC��e�9��H=�b3+�J��hƢ7i�d���Ms^GQ/&� �-���T=� �4��Ǡ��w���sE�B�f*\����历X�+O�J@���қ`� ��i�$ #����+\n��?�{��j��1]��;�W�TV��W�gA�68+r�� �3-�@�q����h����L�����cX%%mR�;S��M���#������v=gQ&vo>����fz:�dd�۾o_&��n_�4�T���ˬF&��f���/�42���p�M�o��i�t�w�z����)�ѣ_gع}t`�}�Ꮁ�]_A -G�^��u\p204lv��O!�l_�:�Z?��C<0���LO='N\������aP�1�A�������4�o�X0��Ɇ}�qjV�Ki*f���-�z���w3�z��hf�؛ǡ")D!�W�cpF���A"�<<~�~���V��D�endstream +xڭ]�۸�}� +Dִ$��yj������Z�w���i[YTDi����g(K��&M�`#r8�瓎!��y$r �x#�,]���pq��o"�X1�j����f������drq�_$a(�p��e,�4^��~�U��n���0����v���,���@���2 +���Z-��������w*s�)��%q"`��b�I#��x���b�?�ߟ�w�A����f��F.:����r�T�Xe���Ѡ��wEbER�y�R)�4��E��d�.FB��"�����,�0P]�z5�H�E�uVQ� %2������=,�0��?�s��iT�I�hj�:/��2�v���"X������ڣ��lU��������gf�s�z�UVӚjxS9t�nz���ziG��7��g��(��4�o"�D��9U��S���<菚�Lڟ�(��������\�#S0�v��~�*(��#0�"0N���f��V�!��&�A�</eMsK��U�4:*��Q��B2��N�U���"�w�D#�2�rg|Ǐ+�`Z���~��'2��@<����7����\<'���E��ENwxEqZ��?�S[k��MP5��{���k��=s��ln�����U`u �(���p�����{��=��#4&�ޣ��X���-am����;�_]�f�Q��n��Ic�r�1o�U'uN1�%xg����������aS���7U�59 ��I`U��Q�kM����N�څ�&m+����=0͘i�m�܅}�>���{Ɵfʈ�'OL3E���A������#;�.�]�XB<⅋�%�+��t�k V�f��� �S���%z� 7]��(��^u����>��z�.�on����]�8a`#�U�R���q��%!R��<��a{ +�Y���:�,զ�G��3�tD��R���M�q���%�x�ھ�^?bɧu��}��Ȃ�!v^�q�J�Z�b }B�HS�ܼ�����@���W� +v� q:�q���\k�.*�8Z߳��.��z�x%�z�ACޅP+=�X���qE����gj�B�٫�A���G��-��k��Ƒ��DCw�X��b�[ �� �ZWqpr�(*�֔�f����G�SO�����;'�#�-�]N K����B<i���xg@�&���f�����ΦU��w�@ߡ�s)�(Ґ�3�֔J����W;�h��,����f~P����v���!BʒB5��{�:U]��I���?Ө���p[�1�8 #��|��~ax��^a�!� �^&bZH�{�*�Z[cm���g;�{s�����P��8m�� +�[��X���c��f�p��ztF�D��}�:Kǩ���/Ac��x|�.�H�����}y]hZ&}�vUd:�"aR*W�Ͳ<�9��Й�/0�m����V�����؞F-�?Jϸ�!��nii�4G�Z��q�ˊ>�af��rfPS��3O+��Ԏ���LBQ$���<����eO��%�����+�P���4����h�s~=� +1)^OJ����|r�f��r_�\�-onv3*�C[��f��P� +�p|.���ފ��1�3����/�M͈%q%1Y[ �da�T}��5�S.+�0m���%f�9T͗�M�5���R܇��x%�}ق��c����1�������5�Z����Nа��e��8Bʭ��l�;k:��<2��H��i�b���vc<���BWs���^�A��U�hDO(��L������H_o�Ƃ��������}�j����#��}�}�#���V�C+�� �z4pOhy�9�l�C<���+�ϝ)�ʙ��I��������w�kݬwz��o�ή��X�� +4xџ�����$�u_ +_�������E&��{���W�DŽ�LW�t��s�AЇg�"�C�)H�o��b�SoA�H��S��TR��/�)�q@?�/���o��D4�tp�)�\D2�1nd�' ��턽�"xTaG�3 \a�6eB�)ozsM4�����x���Q!��N��u����+jM�^ +�����>�]ȹDC'���u�SW[��4�P1r:�4�?[@��%�D���T<{h���9 8���1|&w����/k���I(�X�>3Ap�5��5�ͧm[꜇ʴ4�. ŀh�'��R5�N���1J��Ɗ+[��[�9=m�)����{�aj�-��x������0� xi4s�'嗩�rE�}i�žtT2ti�E�B�����ķ�o#g�5��k��\������|9[\�'pa�!�SG�K7@�2���< +l��5˛�:TU56j,=M;*�y|��R��1I؞Y#n��գZl|W���̦6���w�gc���Ǿo_���B�,����{�R�wRk�v%�=�&v֪\��|(���R�b�D�܌_9�SR�J��~���\�,��pcO����������ڵ�endstream endobj -3246 0 obj << +3249 0 obj << /Type /Page -/Contents 3247 0 R -/Resources 3245 0 R +/Contents 3250 0 R +/Resources 3248 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3178 0 R ->> endobj -3248 0 obj << -/D [3246 0 R /XYZ 71.731 729.265 null] ->> endobj -3249 0 obj << -/D [3246 0 R /XYZ 71.731 660.311 null] ->> endobj -3250 0 obj << -/D [3246 0 R /XYZ 71.731 638.406 null] +/Parent 3176 0 R >> endobj 3251 0 obj << -/D [3246 0 R /XYZ 118.555 597.873 null] +/D [3249 0 R /XYZ 71.731 729.265 null] >> endobj 3252 0 obj << -/D [3246 0 R /XYZ 225.689 586.396 null] +/D [3249 0 R /XYZ 118.555 689.705 null] >> endobj -3253 0 obj << -/D [3246 0 R /XYZ 332.317 586.396 null] +1531 0 obj << +/D [3249 0 R /XYZ 71.731 588.35 null] >> endobj -1532 0 obj << -/D [3246 0 R /XYZ 71.731 541.163 null] +498 0 obj << +/D [3249 0 R /XYZ 244.469 556.036 null] >> endobj -502 0 obj << -/D [3246 0 R /XYZ 277.022 512.517 null] +3253 0 obj << +/D [3249 0 R /XYZ 71.731 547.398 null] >> endobj 3254 0 obj << -/D [3246 0 R /XYZ 71.731 503.879 null] +/D [3249 0 R /XYZ 71.731 496.096 null] >> endobj 3255 0 obj << -/D [3246 0 R /XYZ 86.396 480.636 null] +/D [3249 0 R /XYZ 71.731 481.152 null] >> endobj 3256 0 obj << -/D [3246 0 R /XYZ 71.731 473.498 null] +/D [3249 0 R /XYZ 71.731 432.101 null] >> endobj 3257 0 obj << -/D [3246 0 R /XYZ 401.148 449.752 null] +/D [3249 0 R /XYZ 71.731 396.135 null] >> endobj 3258 0 obj << -/D [3246 0 R /XYZ 71.731 424.681 null] +/D [3249 0 R /XYZ 104.01 384.579 null] >> endobj 3259 0 obj << -/D [3246 0 R /XYZ 104.01 415.182 null] +/D [3249 0 R /XYZ 104.01 372.922 null] >> endobj 3260 0 obj << -/D [3246 0 R /XYZ 104.01 403.526 null] +/D [3249 0 R /XYZ 147.048 349.61 null] >> endobj 3261 0 obj << -/D [3246 0 R /XYZ 71.731 402.311 null] +/D [3249 0 R /XYZ 104.01 337.954 null] >> endobj 3262 0 obj << -/D [3246 0 R /XYZ 104.01 380.213 null] +/D [3249 0 R /XYZ 71.731 278.264 null] >> endobj 3263 0 obj << -/D [3246 0 R /XYZ 71.731 343.836 null] +/D [3249 0 R /XYZ 71.731 256.36 null] >> endobj 3264 0 obj << -/D [3246 0 R /XYZ 104.01 321.932 null] +/D [3249 0 R /XYZ 118.555 215.827 null] >> endobj 3265 0 obj << -/D [3246 0 R /XYZ 104.01 310.275 null] +/D [3249 0 R /XYZ 225.689 204.35 null] >> endobj 3266 0 obj << -/D [3246 0 R /XYZ 104.01 298.619 null] +/D [3249 0 R /XYZ 332.317 204.35 null] +>> endobj +1532 0 obj << +/D [3249 0 R /XYZ 71.731 159.117 null] +>> endobj +502 0 obj << +/D [3249 0 R /XYZ 277.022 130.47 null] >> endobj 3267 0 obj << -/D [3246 0 R /XYZ 104.01 286.963 null] +/D [3249 0 R /XYZ 71.731 121.833 null] >> endobj 3268 0 obj << -/D [3246 0 R /XYZ 104.01 275.306 null] ->> endobj -3269 0 obj << -/D [3246 0 R /XYZ 104.01 263.65 null] +/D [3249 0 R /XYZ 86.396 98.59 null] >> endobj -3270 0 obj << -/D [3246 0 R /XYZ 71.731 251.994 null] +3248 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R /F35 1463 0 R /F57 2355 0 R /F53 2191 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 3271 0 obj << -/D [3246 0 R /XYZ 118.555 208.449 null] +/Length 2340 +/Filter /FlateDecode +>> +stream +x��M������D�i}Kn{�K�Nri;٤�4Y�m&��H��������}���dvv� � �r�Y?Ѭ�T��'^�8�fu�ζ0�ׇH(B�8�y����K��Vj�'���, CU��Y�Ī���S�c�ծ�;=�q���Mgz3��[F�;̣`���m5���ۇ??M���P�2��z��F��8���*ISR�igFP`U������Ќ��ֶ몾!�"wvg�QVɈ�2�V;A섗��ﰮږǛ�v$��hM���s��W�jG��ގ�Y��� �ae��V��thL0�"��J\�$b����t��ƛ���z�T�A� K��Y(��fÔ/����zQ�c���~��<��y��J��a܊RΞ&a?u٬����<�Fl7�|����x\�\�2�E$*NJ�����K�B;���H�[�a��,F�"�����O���=r� i�F��h;�vs���nG #���y ����8a-x��QVm��h4���۷Zݚ�!�T�h;�j������ܮ*.Vb�����y�/d�"�Y���tdP�����\�_�Y��(Pv�.���Rp4�`tֶ�r}༱�U�ԥ����� R��,H8��o�?� +��r�=���{U������5.i��Ҥ��U����$�~�e�v�������\��5㥬k�������Gߕ��2V���,@�)�������d����^(�.���p+���d�6zS���v<��K�\���m��S��|(x$ʻ�EDQ��"��e�r` ¯?���&��ߟ�����)HL�$R�U2�l����?&N�Y��U�1�V�nX,�6�4�}��_IfQ +� �<�T���4�\��9O�\=2t2'�F%�^!�AH�B�=�T���G�����7���eY� N=P�k�� Me���=6{P|���ǝ�i2(��W<KE�$P7e�=�aا�zǸF�ʴ�B H��V�p�`�i결m���b�ѣ3}����'� +��"�}[0�T�܂�]�>�&�`�}� ��/\�{�'��㢷M0��, +�ˀJa#I��F�.���<4s��V: 3��V���g��F����QRB�h�5��Jōb�g*���q��g�����Jju��'��,�|��`�:͓,i��4U�W�P�?WL�����B�=X/������57�����G)���<kr ���� Mˣ�0:h@>P�Rߟ�8�Y6�*���h��dAW��I���5�=8�#��Y4V�t��ʽ���kݜ��h@���}��wL�~�s��M�-18�Q��`����Y���QMl�N�pp}3y#IR���8쭣C���g�p��k� Ԉ�����T��������[oo��<��zD�e�l�Rn<)��� ��y\�<H-n����J�wN���r�}�As'І +�2\�3@_1��/B1��t%g�q����6�F����k���s��� +��Tk �����_�4�z��7� �i�{�lʚ�q�����;=�����4c���3M$�� N�wX◲����b����1`t�Nj9�2�#�������/�m5���Э�MD��"� �%����l5K�8;`�D�j|�&���9lA�<ij�Ѫ@8�M婜wİ�����PB�4v�X7@���[c�a��N8�)+�ЌD'���>�.���ky��}��m��5��@��%];v��p#�өĵ���yx�<Y�D�z.X̉��U�qEBb�뛶Z���tGHD�2 +��֧ +��}G��?�8�Uwǟ���3�d-h��%dS�A�v�;�t�F��)�!xX۶���ht0��"��%`D ���A��3|��ȸF�뵈�,���֫�ї�`Z�!���xq>��҄�,�2Zqq�qn��@�Z�<�K���4LS~@̾�z�ebmyzJ��|6��҆���Fē]QI���f'fడZ�`�{m�e����B��L����6�U/��/���O�.�jI>���$��H�'1�9���r"���n)��6��u+���9R�nEڽ�F�e��[z�z&,�o_�8�6�bm�cj<���%'z]��eƯ1���K�B���ȅ����22{���SйN&�CE�3�D��ɻ���|V.b<����ߡtw��:T����Hw�u��=���Fh�[�O>Qr{�{���S���nBO |��M�J�g�B5f���<Pn�������i���D�`{y��ӵ&�@zk��S�D�1#G*ߡ{jd#��j�^_���TeT|�b'���eqsT(�_��� �endstream +endobj +3270 0 obj << +/Type /Page +/Contents 3271 0 R +/Resources 3269 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 3176 0 R >> endobj 3272 0 obj << -/D [3246 0 R /XYZ 136.092 199.984 null] +/D [3270 0 R /XYZ 71.731 729.265 null] >> endobj 3273 0 obj << -/D [3246 0 R /XYZ 71.731 166.408 null] +/D [3270 0 R /XYZ 71.731 718.306 null] >> endobj 3274 0 obj << -/D [3246 0 R /XYZ 71.731 126.612 null] +/D [3270 0 R /XYZ 401.148 695.392 null] >> endobj -3245 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F54 2195 0 R /F23 1125 0 R /F44 1925 0 R /F27 1132 0 R /F57 2358 0 R >> -/ProcSet [ /PDF /Text ] +3275 0 obj << +/D [3270 0 R /XYZ 71.731 670.321 null] >> endobj -3277 0 obj << -/Length 2305 -/Filter /FlateDecode ->> -stream -xڭٮ����~��X#�kї�n�(�ķ-�4#�������٨���N`��9s���X/|���V��� SA-�̓����7Z0V��:�y�����1�Le�Y<������ T����Mi��藫 �=���뼩�j�x���zZjo���k����ۇ�<�L��Լ�ތs�_`Z�,���YN?U&�?�t�E�%���n�ۜ���i8.;;n����b@�rr��_�t�� #��-W���'7���.B/wD�`��Y�7�����/��=��(�{��߱�#����s��ʢ��k����Z�AN�S�Ac�� - (���*��ֶ�����"o��%cZRI�n�һ�5��^�t"��?Gw�׆�½�h��PiQ%�:�#�nd��H�#l3Zp&R+�m�3�v]�t3�X25^��rU�u��Cr����j���ȡ�~�@.��q���^�eyJLK>�\�ԩ�_�B���V|�����3Ǚ7��\�r���j���y��?^�����MK:�]������D{�m���%:�M��~Xw�cAU�M����P��L�p�ϭ��b�F0ᶮ@�!D�`(G^>>���Pl���L�/���p�����T[���4+ ��V���r�щ��ƽ��;��1?�/�<nS~@HWۖ}�H;ޞ() ʇ� -. �`|"���I�Ȥ������������Kw �J�7�0��쭸�����o���|=�lK���ȕ%ٞ��|����9�T��5r�ۡ�ݻy���@�{%��KkHq�<�u�H?�U�W.PL���kΠ��;���5�<ɑ~�}�ef>S����8(����(���qH���R�1P�d�n��6�����l���gP`� �/X�����w��i�j�]W-�7�ɿ�� ���B�뾰����"g�j|u"r�[+�wM5�4Jd�f���D���2Р���hu;���ZŚ����)JNH��I��0����`{L�kLu� f�� -�{��[VBamIş|ׁ|o�QN�U�$�C�u�~�M�����PlF��Y� -j0b��_��R�U^�vj�Q��59��Lc7 7h���)���3��O�Ǫc��\���s\����7�:͋?_sB�ַ��46� - -32dE�ۗ�������˟��Y����8\�~��}�6��p��|��.���q�fk���Z%�"��5v�??��ȡ]�����j���,�b�{x��ݑ��*�h�YnI�fn��E*��� ���V&J!u�<�g�MDOe���G�Na��aЀ^66l�טx��fj)͛D�vܤ���z�g�0��[O>M�-����sF��Q�(�Mq}��<��T�CK�2�r���[��a�h��7�~w+: -cc�U>G��<I�U���e[7�9�o.�1WFg*N��,cV�VU(�v�e� -�.4Y�Lj�=-�[��4�0�&��|wGI�X�P�o�UqI�7w�x�̔7b�0{���ۯ�H\j���`��Ʃ�N@�֡�����`����<���ր�����9�1D�>�����a�3=����gC~qw�| ĉ�{��~��� C��%�{(+ -�(85��v�t9���Ŷtn� я�C��-�ڢ�#���O�Dipb0HQ=s��\7�5�R��ǂ}�>����y ��qT<��#5̠�鋆xf��c[��.^������k�5�d�w�u�~^&�~[� -#���C��җAgX�^._�' >�|�U�T��� r_���*�l�}%*~R(���{�9+I�"pʣ%�)m�U�ʁ�������S]��tXx@�Ѷ�!�!ā��%�xf�Q}.�����H���u��}��?�mɁT��`~w4�<w���������O�jB\��[[�qyE%�bm�g@�g��� -J|�> ��z!Ho���DF�a�oS8y�����6��i��Ͳ�G���u����;S���)4Pf0�J��q}d8���5�$���R�;$�D4�:Z��Gl�_�&����T�Rh�E�1�jt��� -<�� wQ��@鞈_������\�6�9av��A�B�o���=Z#�2Ƃ^O`Ej�]�#�m��g������w�R�@�������u�)�����������|{�5|��`��ⷼ^���TַO^�y���=��}$�T�:y�ON(7�{ ���a�����^�f�$endstream -endobj 3276 0 obj << -/Type /Page -/Contents 3277 0 R -/Resources 3275 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 3178 0 R -/Annots [ 3293 0 R ] +/D [3270 0 R /XYZ 104.01 660.822 null] >> endobj -3293 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [271.86 388.635 336.659 397.225] -/Subtype /Link -/A << /S /GoTo /D (upgrade-cvs) >> +3277 0 obj << +/D [3270 0 R /XYZ 104.01 649.166 null] >> endobj 3278 0 obj << -/D [3276 0 R /XYZ 71.731 729.265 null] ->> endobj -1533 0 obj << -/D [3276 0 R /XYZ 71.731 718.306 null] ->> endobj -506 0 obj << -/D [3276 0 R /XYZ 264.948 708.344 null] +/D [3270 0 R /XYZ 71.731 647.951 null] >> endobj 3279 0 obj << -/D [3276 0 R /XYZ 71.731 699.706 null] +/D [3270 0 R /XYZ 104.01 625.853 null] >> endobj 3280 0 obj << -/D [3276 0 R /XYZ 496.727 676.463 null] +/D [3270 0 R /XYZ 71.731 589.477 null] >> endobj 3281 0 obj << -/D [3276 0 R /XYZ 415.635 663.512 null] +/D [3270 0 R /XYZ 104.01 567.572 null] >> endobj 3282 0 obj << -/D [3276 0 R /XYZ 71.731 604.568 null] +/D [3270 0 R /XYZ 104.01 555.915 null] >> endobj 3283 0 obj << -/D [3276 0 R /XYZ 71.731 570.76 null] +/D [3270 0 R /XYZ 104.01 544.259 null] >> endobj 3284 0 obj << -/D [3276 0 R /XYZ 104.01 559.203 null] +/D [3270 0 R /XYZ 104.01 532.603 null] >> endobj 3285 0 obj << -/D [3276 0 R /XYZ 104.01 547.547 null] +/D [3270 0 R /XYZ 104.01 520.946 null] >> endobj 3286 0 obj << -/D [3276 0 R /XYZ 71.731 546.332 null] +/D [3270 0 R /XYZ 104.01 509.29 null] >> endobj 3287 0 obj << -/D [3276 0 R /XYZ 104.01 524.234 null] +/D [3270 0 R /XYZ 71.731 497.634 null] >> endobj 3288 0 obj << -/D [3276 0 R /XYZ 104.01 512.578 null] +/D [3270 0 R /XYZ 118.555 454.089 null] >> endobj 3289 0 obj << -/D [3276 0 R /XYZ 71.731 476.201 null] +/D [3270 0 R /XYZ 136.092 445.624 null] >> endobj 3290 0 obj << -/D [3276 0 R /XYZ 71.731 454.296 null] +/D [3270 0 R /XYZ 71.731 412.048 null] >> endobj 3291 0 obj << -/D [3276 0 R /XYZ 118.555 410.751 null] +/D [3270 0 R /XYZ 71.731 372.252 null] >> endobj -3292 0 obj << -/D [3276 0 R /XYZ 421.576 402.287 null] +1533 0 obj << +/D [3270 0 R /XYZ 71.731 341.368 null] >> endobj -1534 0 obj << -/D [3276 0 R /XYZ 71.731 358.747 null] +506 0 obj << +/D [3270 0 R /XYZ 264.948 308.058 null] >> endobj -510 0 obj << -/D [3276 0 R /XYZ 295.902 326.351 null] +3292 0 obj << +/D [3270 0 R /XYZ 71.731 299.42 null] +>> endobj +3293 0 obj << +/D [3270 0 R /XYZ 496.727 276.177 null] >> endobj 3294 0 obj << -/D [3276 0 R /XYZ 71.731 315.986 null] +/D [3270 0 R /XYZ 415.635 263.226 null] >> endobj 3295 0 obj << -/D [3276 0 R /XYZ 355.306 306.227 null] +/D [3270 0 R /XYZ 71.731 204.282 null] >> endobj 3296 0 obj << -/D [3276 0 R /XYZ 71.731 281.156 null] +/D [3270 0 R /XYZ 71.731 170.474 null] >> endobj 3297 0 obj << -/D [3276 0 R /XYZ 104.01 271.657 null] +/D [3270 0 R /XYZ 104.01 158.917 null] >> endobj 3298 0 obj << -/D [3276 0 R /XYZ 104.01 260 null] +/D [3270 0 R /XYZ 104.01 147.261 null] >> endobj 3299 0 obj << -/D [3276 0 R /XYZ 71.731 248.344 null] +/D [3270 0 R /XYZ 71.731 146.046 null] >> endobj 3300 0 obj << -/D [3276 0 R /XYZ 118.555 204.799 null] +/D [3270 0 R /XYZ 104.01 123.948 null] >> endobj 3301 0 obj << -/D [3276 0 R /XYZ 297.118 196.334 null] +/D [3270 0 R /XYZ 104.01 112.292 null] >> endobj -3302 0 obj << -/D [3276 0 R /XYZ 71.731 174.414 null] +3269 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F57 2355 0 R /F53 2191 0 R /F23 1125 0 R /F44 1922 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +3304 0 obj << +/Length 1447 +/Filter /FlateDecode +>> +stream +xڭWY��6~������K����u�&h�>�q[IdI��H��#���w�C�Z{�IlH�s�C���Ox�`��%�X+�hW����˕pkDz^��oVw/��2����켈s���Kd�Rz���]��S5�Pq_2Z�-[�����~���K7M�ۼZ��9�V2aY*o�w乶Oy)��}G7y�dY��|*jkD̹��ME��4MULc���O#�4���`�Jn��7f�7#��t�gC�Rb+�-W�� +���]�Tyq,X�WVo�q�����?��B��.��,ˤ7T�n�z��I�T1�3uK�u|W"�Gc�Lj%�9ȡ�D1��I.�T�˔q.������X�h@�O�X���k�ejo�C(C��yr��-)�:��p��������%a v�i��-�LJ����o9'�4�H��8�E�w��.�Wu���ğ��#����9f�� +�d<���D������R���@�A�� 1R���3�0sS��ߣ���r-E��$~,�%�il�`W�:_̍;���#��B +[��n�� !��؋yf����t,��E�2bЃ�m:R-�YȮrDJ�bvS�����\r +R�� ���i��&�UɊ$�y�)I�$��$���B�O'�+�*R,�ԵQ��a`ھ��,��(E�۟����cq&����'� HY��ؠ��鲩FĶ���z���T",�#��j�MI�3Ӧ�����~���Ю�*w�B���s�� S��1�]QW������ҟX��ǎ{[�(�Ȯ���C?�]C{��k�1�Ⳅ,S��9�A"���b��rn!!d� �n�����dh���Y�Ԝ���>��v���o$?��zX��Tq�eM�ɡE�cF9�y -5���� ��s��`s�}�z��/�颖l���S^�TX�ڼ+��HR������ +�����K{�z�`�k{�>��w�BTJ��Q��6;c[=MU��"���g>٣"(��"�������v54�J�ȏ�2����X���K>b��4���4'�5�#��ڶ�Զ�����Ĩ':=�b��@@�z�@�dH�Jf7&���� ��qFl�F��*6�Yc=��Z�H?�[;3-�P�P�O�/�*�?�0��8�d>��=z�Fo1*�Dt��x��{C���uH�5�=:�ÄS�s:�ijV�k'�����=HsD3;!�i+ww����S#�e�u|����fzђ�1;?A���/c@�ZwP�ۜ��J�D�v6�tj i[�U�%�l����� +:��J� 25�{�h�B]ރ��������l�֗~_�r�1P��g����.�r�ROS�����p�"���� +����+M1����RG��J=��W�����q��,���3��w� +�g')�D�|�+�Z�߭���endstream +endobj 3303 0 obj << -/D [3276 0 R /XYZ 462.063 141.757 null] +/Type /Page +/Contents 3304 0 R +/Resources 3302 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 3321 0 R +/Annots [ 3310 0 R ] >> endobj -3275 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F57 2358 0 R /F54 2195 0 R /F44 1925 0 R /F32 1139 0 R >> -/ProcSet [ /PDF /Text ] +3310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.86 607.714 336.659 616.304] +/Subtype /Link +/A << /S /GoTo /D (upgrade-cvs) >> +>> endobj +3305 0 obj << +/D [3303 0 R /XYZ 71.731 729.265 null] >> endobj 3306 0 obj << +/D [3303 0 R /XYZ 71.731 695.28 null] +>> endobj +3307 0 obj << +/D [3303 0 R /XYZ 71.731 673.375 null] +>> endobj +3308 0 obj << +/D [3303 0 R /XYZ 118.555 629.829 null] +>> endobj +3309 0 obj << +/D [3303 0 R /XYZ 421.576 621.365 null] +>> endobj +1534 0 obj << +/D [3303 0 R /XYZ 71.731 577.826 null] +>> endobj +510 0 obj << +/D [3303 0 R /XYZ 295.902 545.43 null] +>> endobj +3311 0 obj << +/D [3303 0 R /XYZ 71.731 535.065 null] +>> endobj +3312 0 obj << +/D [3303 0 R /XYZ 355.306 525.305 null] +>> endobj +3313 0 obj << +/D [3303 0 R /XYZ 71.731 500.234 null] +>> endobj +3314 0 obj << +/D [3303 0 R /XYZ 104.01 490.735 null] +>> endobj +3315 0 obj << +/D [3303 0 R /XYZ 104.01 479.079 null] +>> endobj +3316 0 obj << +/D [3303 0 R /XYZ 71.731 467.422 null] +>> endobj +3317 0 obj << +/D [3303 0 R /XYZ 118.555 423.877 null] +>> endobj +3318 0 obj << +/D [3303 0 R /XYZ 297.118 415.413 null] +>> endobj +3319 0 obj << +/D [3303 0 R /XYZ 71.731 393.492 null] +>> endobj +3320 0 obj << +/D [3303 0 R /XYZ 462.063 360.835 null] +>> endobj +3302 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F53 2191 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R /F32 1139 0 R /F57 2355 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3324 0 obj << /Length 2511 /Filter /FlateDecode >> @@ -11763,705 +11849,678 @@ d JzK���I��%K�s��pR�C�H�a�҄��I���Ҳ���eP��M�F/?���I���K��W[̽_r�~�7�'�~�� ����檭��b�r�t/���R�"I�[_-�RL�m�j��P=[2lc�H�͟k|�4[�S\8�|�#G���d:�vO"t��S�X<`�j �����C����A4�\��L�k��Qv��( Ǔ�.bTO=�\��y��C�9�"X�ae��T<h0�cP�=?���oq�sE���G��7]� r���'졘�4Kyx9{�{E�2S��(M�����=�}��|�v0/�hK\�$��x�{D��},��(����}=&��fh�b!|܃ɴnv����|y�ύ��Å-?��jP����A���G��D�����\}�:$�B���LT -O��c3�%��l9�;�e�+-)���r�����أ�m�䏌8G��=l�b}!��*�!wM\���n%�?V�E�ꧺ�endstream +O��c3�%��l9�;�e�+-)���r�����أ�m�䏌8G��=l�b}!��*���=w0�[A��{I�/�jendstream endobj -3305 0 obj << +3323 0 obj << /Type /Page -/Contents 3306 0 R -/Resources 3304 0 R +/Contents 3324 0 R +/Resources 3322 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3332 0 R -/Annots [ 3313 0 R 3318 0 R ] +/Parent 3321 0 R +/Annots [ 3331 0 R 3336 0 R ] >> endobj -3313 0 obj << +3331 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [97.498 367.618 132.915 376.529] /Subtype /Link /A << /S /GoTo /D (gloss-daemon) >> >> endobj -3318 0 obj << +3336 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [258.734 354.666 290.823 363.578] /Subtype /Link /A << /S /GoTo /D (gloss-service) >> >> endobj -3307 0 obj << -/D [3305 0 R /XYZ 71.731 729.265 null] +3325 0 obj << +/D [3323 0 R /XYZ 71.731 729.265 null] >> endobj 1535 0 obj << -/D [3305 0 R /XYZ 71.731 718.306 null] +/D [3323 0 R /XYZ 71.731 718.306 null] >> endobj 514 0 obj << -/D [3305 0 R /XYZ 344.957 703.236 null] +/D [3323 0 R /XYZ 344.957 703.236 null] >> endobj -3308 0 obj << -/D [3305 0 R /XYZ 71.731 681.855 null] +3326 0 obj << +/D [3323 0 R /XYZ 71.731 681.855 null] >> endobj -3309 0 obj << -/D [3305 0 R /XYZ 522.288 634.645 null] +3327 0 obj << +/D [3323 0 R /XYZ 522.288 634.645 null] >> endobj -3310 0 obj << -/D [3305 0 R /XYZ 71.731 616.593 null] +3328 0 obj << +/D [3323 0 R /XYZ 71.731 616.593 null] >> endobj 1536 0 obj << -/D [3305 0 R /XYZ 71.731 575.701 null] +/D [3323 0 R /XYZ 71.731 575.701 null] >> endobj 518 0 obj << -/D [3305 0 R /XYZ 252.56 532.604 null] +/D [3323 0 R /XYZ 252.56 532.604 null] >> endobj 1537 0 obj << -/D [3305 0 R /XYZ 71.731 528.774 null] +/D [3323 0 R /XYZ 71.731 528.774 null] >> endobj 522 0 obj << -/D [3305 0 R /XYZ 198.219 493.231 null] +/D [3323 0 R /XYZ 198.219 493.231 null] >> endobj -3311 0 obj << -/D [3305 0 R /XYZ 71.731 485.879 null] +3329 0 obj << +/D [3323 0 R /XYZ 71.731 485.879 null] >> endobj 1538 0 obj << -/D [3305 0 R /XYZ 71.731 427.115 null] +/D [3323 0 R /XYZ 71.731 427.115 null] >> endobj 526 0 obj << -/D [3305 0 R /XYZ 267.87 389.899 null] +/D [3323 0 R /XYZ 267.87 389.899 null] >> endobj -3312 0 obj << -/D [3305 0 R /XYZ 71.731 379.756 null] +3330 0 obj << +/D [3323 0 R /XYZ 71.731 379.756 null] >> endobj -3314 0 obj << -/D [3305 0 R /XYZ 209.73 369.774 null] +3332 0 obj << +/D [3323 0 R /XYZ 209.73 369.774 null] >> endobj -3315 0 obj << -/D [3305 0 R /XYZ 291.334 369.774 null] +3333 0 obj << +/D [3323 0 R /XYZ 291.334 369.774 null] >> endobj -3316 0 obj << -/D [3305 0 R /XYZ 381.061 369.774 null] +3334 0 obj << +/D [3323 0 R /XYZ 381.061 369.774 null] >> endobj -3317 0 obj << -/D [3305 0 R /XYZ 419.603 369.774 null] +3335 0 obj << +/D [3323 0 R /XYZ 419.603 369.774 null] >> endobj -3319 0 obj << -/D [3305 0 R /XYZ 322.387 356.823 null] +3337 0 obj << +/D [3323 0 R /XYZ 322.387 356.823 null] >> endobj -3320 0 obj << -/D [3305 0 R /XYZ 449.982 356.823 null] +3338 0 obj << +/D [3323 0 R /XYZ 449.982 356.823 null] >> endobj -3321 0 obj << -/D [3305 0 R /XYZ 489.834 356.823 null] +3339 0 obj << +/D [3323 0 R /XYZ 489.834 356.823 null] >> endobj -3322 0 obj << -/D [3305 0 R /XYZ 436.781 343.872 null] +3340 0 obj << +/D [3323 0 R /XYZ 436.781 343.872 null] >> endobj -3323 0 obj << -/D [3305 0 R /XYZ 258.733 330.92 null] +3341 0 obj << +/D [3323 0 R /XYZ 258.733 330.92 null] >> endobj -3324 0 obj << -/D [3305 0 R /XYZ 171.642 317.969 null] +3342 0 obj << +/D [3323 0 R /XYZ 171.642 317.969 null] >> endobj -3325 0 obj << -/D [3305 0 R /XYZ 71.731 304.918 null] +3343 0 obj << +/D [3323 0 R /XYZ 71.731 304.918 null] >> endobj -3326 0 obj << -/D [3305 0 R /XYZ 71.731 289.974 null] +3344 0 obj << +/D [3323 0 R /XYZ 71.731 289.974 null] >> endobj -3327 0 obj << -/D [3305 0 R /XYZ 210.778 278.417 null] +3345 0 obj << +/D [3323 0 R /XYZ 210.778 278.417 null] >> endobj -3328 0 obj << -/D [3305 0 R /XYZ 317.348 278.417 null] +3346 0 obj << +/D [3323 0 R /XYZ 317.348 278.417 null] >> endobj -3329 0 obj << -/D [3305 0 R /XYZ 129.377 266.761 null] +3347 0 obj << +/D [3323 0 R /XYZ 129.377 266.761 null] >> endobj 1539 0 obj << -/D [3305 0 R /XYZ 71.731 238.865 null] +/D [3323 0 R /XYZ 71.731 238.865 null] >> endobj 530 0 obj << -/D [3305 0 R /XYZ 215.507 199.493 null] +/D [3323 0 R /XYZ 215.507 199.493 null] >> endobj -3330 0 obj << -/D [3305 0 R /XYZ 71.731 192.062 null] +3348 0 obj << +/D [3323 0 R /XYZ 71.731 192.062 null] >> endobj -3331 0 obj << -/D [3305 0 R /XYZ 401.912 179.368 null] +3349 0 obj << +/D [3323 0 R /XYZ 401.912 179.368 null] >> endobj 1540 0 obj << -/D [3305 0 R /XYZ 71.731 136.365 null] +/D [3323 0 R /XYZ 71.731 136.365 null] >> endobj -3304 0 obj << -/Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R /F35 1463 0 R /F44 1925 0 R /F57 2358 0 R >> +3322 0 obj << +/Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R /F35 1463 0 R /F44 1922 0 R /F57 2355 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3337 0 obj << +3354 0 obj << /Length 1632 /Filter /FlateDecode >> stream -xڭXmo�6��_a`"+�zm����-k��C;���Bd��K3����;�XR��A����x�y4�Y��3�3O�GL��l�;�f�y{�I�$�'s�<{�F�Y�WΖ3[����̓����-���O�p_����e��W��$MC���H������g�ekӑ|yҭFf䗐3�1��X�?�a��k�l&�3�o�?��v�l�"�I�U���)&=��sZ�������;�U�C�r���"�^ P),ƅ�U^� ��.Ϊ$��H #Ɇ��6g���.�D#c��0=�CE������ذG12@L�w�<ɜ6?P��_��J�v߄xQ���m^��b:C:��8���ܫ�d.�K��s��8���:K>�1.�K����W�@Y$P��]�YY�:��Q!�㻊`a�$7���Z%6��+WU`���L� +���Ğ�j��!����n@?��L�����-�4�m8�� PBs���6r�,�C��8���d�Up!���E�h�sSJ�9��}��CJ2��K�b0�G����8:�z�Hx���#���,��ɼ�H&k \��6��_kö�5L���V�mU��"� ��.h -�:�/p�� $�P�"��Vq@H�* -���$��� &��1QTWI�X���E�3&B2z%=�EG�$pr�c�c�,´6��Ϊ)��Wif�8Ƌ�����;��SZe��n�˲L6Y�m�2���z�`�~���/�ˉn�[ �ޮ�!g�3�k��̅{No ,���dW��F���������t-�ȡJ��M��[��X���-9i��}}�\�j���K$t��>�P�S��E��r�s��؝ ̂3�d��_͂�?��8�Q�r4�ǻŇ�gd�\����T|f[����@����{��o?\�~}�x��{5�I��)�H9)A�z�!�UH���5��_ac��Uq#ξ�J0�ʵzY�<أM�>I.&nyp�#�-����-���#谼�!#$���~��Y4�~����C4��c��lL��I����<�����R���8�G�dt��kA:P��ޑ51em���㒑�����u�#��mRRW��vx8�����L��Uۨ Lh�f�Ei�ѡU�W��po�C<q2�����M�!#��'Np�8ɜ6>P��Ouex� �gx���ERs�K\=�>�xl�q��������i�,E�$��)�E=�+( L�V�jdU�fzw#ϐ��BE��GU�.\o��!��s��r����"���TE�!�s��^�$Nsׁ.l�\�^��x����>^�p��Zα���G�A�gU\?����$��0Oj<xCl6q�<���'� �\� Ò�4�H�� �!6P4x�y�I7B�m;�@�2�Ȝ4?T�>�T\�㲍�=�z=���ӏ*xdÛ�u�G/�"'*�6T�_�4S�(�U�&U�KI�{�}kw)�[]��+���#;�u {���K� -m"�ڿGڇ�C���jɟ:���]R���.�q�~�;0x�>�]�F�iE_�U���@M�2�r�n��s�g[`ݽ�]�E���U?�v�@ՎjMT����i��R1�X>&{�T��O߮��|h8O]����?*G@/ %������il�_�B��endstream +xڭX_o�Fϧ0���誻����n�!ݲ���a�m�"K�%5�>��#%˒����x<�G�xdz9�@�@�GEB��h�>sFK�y{&Y�f�#s5={�F�Q$"_��#W��(�J��M��V�J�c[y�� +�^���,�it���mZ��N>�L[��D�n52���@(�c��Onh�r�Bg��z����m�"Wh��E��֑Ёn�%�����RC���*Y}9�u^��` P�!�kT^� ��:ɫ�ȓ#+������P�<�F��Q :�����>Z'W\أ�� &28m�eN��)B�d�2!��7!�"N֍c媨3�v,�:':��4̋���|:V��%͒���e����:O?� -�K���Y��W�@YoY�*�;/��L:a�J /��c��$7��(�5&6����*p����jWD��5�=�Պ�]Qs%� ܀~(���ee�c2Z��va��A�N���Rz;V�zQ�7���B��uQ�{�{.��|�<���nlk�[��a,+�@_���ڃ�����b�[��ck� �gY�?���� M���-A����F:�km��ž�YY<��b�"|� a��A���s���@����* @-�*�`I*"Ջ r(&H�+IY3�_R��>v f�Q2����N{�G�Т�0m�vC@�3kJ!-�Y�,�Z�%aDx���7�rm�7�eY��<͗M%Tk��$0˰f�ޗ��ķѭ�ag��7 +�4�H��=g6���;2�o�n#/�@eֻ�s6�}�a���fq[�b��/�q�Y��Ւ5�߾��NH5��ɔ�=���0{���;�]|r<�l���ڐQ$`��<y��Y0��wEg:���BI&�x7�0��͟#8�_�C(\Gr ���77�w�H���߯o&o'w��`�y����� �R� $� +)< ��_���6vM_�s6{@a�T��d1`�.k���:p'��X o�WM�n9�/� @���a�oF���ͤA������B�q`M��Օ���픸���7��dݑ1}$�iOM7{�,�wo���w��0��X��Ғ��b���3�dm.f�\����F�`Bs@7/ʶI�ص��d�ߛ���@�e#sr7}E����/:m�eN�)B�Ǻ2:�T�3�Y��Ess�KR=�>l��>1����� ��YHb�0HS��S2��41kV`#���m�ݭ"'�9 +�(M���:��Ҝ1p �9�r�`���(6U�tL���b/� +v�d���A6l�@�iec�wZ��i8h����X���#͐}A�X�� +s1���9̳����eR6Ϫ�ȓNG�\�G +����8�X�� !�S�{��I7@��z�@�2�Ȝ4�W�>�0.YFqY%نx�6 ��G<��M":Ãζ`*�6�\�_�,G@l�Y��U�Ki�y�}kw�����D���;���&�����D����Ç"� +lɟ��M�=�����/�I5�� x�>]�F�kE_U�2�@m��s�n����϶����w|n�/�`������&X�8ƚ��>=��c��Yn����"������G�)�T�Ĝ��s< -��L��endstream endobj -3336 0 obj << +3353 0 obj << /Type /Page -/Contents 3337 0 R -/Resources 3335 0 R +/Contents 3354 0 R +/Resources 3352 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3332 0 R -/Annots [ 3340 0 R 3358 0 R 3360 0 R ] +/Parent 3321 0 R +/Annots [ 3357 0 R 3375 0 R 3377 0 R ] >> endobj -3340 0 obj << +3357 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [141.531 644.094 194.317 653.005] /Subtype /Link /A << /S /GoTo /D (security-os-accounts) >> >> endobj -3358 0 obj << +3375 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [318.972 337.225 370.159 346.435] /Subtype /Link /A << /S /GoTo /D (security-mysql-account-root) >> >> endobj -3360 0 obj << +3377 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [392.313 236.881 445.082 245.792] /Subtype /Link /A << /S /GoTo /D (security-os-ports) >> >> endobj -3338 0 obj << -/D [3336 0 R /XYZ 71.731 729.265 null] +3355 0 obj << +/D [3353 0 R /XYZ 71.731 729.265 null] >> endobj 534 0 obj << -/D [3336 0 R /XYZ 164.538 705.748 null] +/D [3353 0 R /XYZ 164.538 705.748 null] >> endobj 1541 0 obj << -/D [3336 0 R /XYZ 71.731 702.184 null] +/D [3353 0 R /XYZ 71.731 702.184 null] >> endobj 538 0 obj << -/D [3336 0 R /XYZ 306.92 666.375 null] +/D [3353 0 R /XYZ 306.92 666.375 null] >> endobj -3339 0 obj << -/D [3336 0 R /XYZ 71.731 656.233 null] +3356 0 obj << +/D [3353 0 R /XYZ 71.731 656.233 null] >> endobj 1542 0 obj << -/D [3336 0 R /XYZ 71.731 626.161 null] +/D [3353 0 R /XYZ 71.731 626.161 null] >> endobj 542 0 obj << -/D [3336 0 R /XYZ 408.16 588.946 null] +/D [3353 0 R /XYZ 408.16 588.946 null] >> endobj -3341 0 obj << -/D [3336 0 R /XYZ 71.731 578.803 null] +3358 0 obj << +/D [3353 0 R /XYZ 71.731 578.803 null] >> endobj -3342 0 obj << -/D [3336 0 R /XYZ 213.741 568.821 null] +3359 0 obj << +/D [3353 0 R /XYZ 213.741 568.821 null] >> endobj -3343 0 obj << -/D [3336 0 R /XYZ 387.602 568.821 null] +3360 0 obj << +/D [3353 0 R /XYZ 387.602 568.821 null] >> endobj -3344 0 obj << -/D [3336 0 R /XYZ 249.294 555.87 null] +3361 0 obj << +/D [3353 0 R /XYZ 249.294 555.87 null] >> endobj -1827 0 obj << -/D [3336 0 R /XYZ 71.731 542.819 null] +1825 0 obj << +/D [3353 0 R /XYZ 71.731 542.819 null] >> endobj -3345 0 obj << -/D [3336 0 R /XYZ 71.731 503.038 null] +3362 0 obj << +/D [3353 0 R /XYZ 71.731 503.038 null] >> endobj -3346 0 obj << -/D [3336 0 R /XYZ 71.731 503.038 null] +3363 0 obj << +/D [3353 0 R /XYZ 71.731 503.038 null] >> endobj -3347 0 obj << -/D [3336 0 R /XYZ 71.731 491.996 null] +3364 0 obj << +/D [3353 0 R /XYZ 71.731 491.996 null] >> endobj -3348 0 obj << -/D [3336 0 R /XYZ 305.215 481.748 null] +3365 0 obj << +/D [3353 0 R /XYZ 305.215 481.748 null] >> endobj -3349 0 obj << -/D [3336 0 R /XYZ 71.731 480.34 null] +3366 0 obj << +/D [3353 0 R /XYZ 71.731 480.34 null] >> endobj -1828 0 obj << -/D [3336 0 R /XYZ 71.731 458.435 null] +1826 0 obj << +/D [3353 0 R /XYZ 71.731 458.435 null] >> endobj -3350 0 obj << -/D [3336 0 R /XYZ 71.731 413.573 null] +3367 0 obj << +/D [3353 0 R /XYZ 71.731 413.573 null] >> endobj -3351 0 obj << -/D [3336 0 R /XYZ 71.731 413.573 null] +3368 0 obj << +/D [3353 0 R /XYZ 71.731 413.573 null] >> endobj -3352 0 obj << -/D [3336 0 R /XYZ 71.731 402.532 null] +3369 0 obj << +/D [3353 0 R /XYZ 71.731 402.532 null] >> endobj -3353 0 obj << -/D [3336 0 R /XYZ 149.738 392.283 null] +3370 0 obj << +/D [3353 0 R /XYZ 149.738 392.283 null] >> endobj -3354 0 obj << -/D [3336 0 R /XYZ 71.731 390.876 null] +3371 0 obj << +/D [3353 0 R /XYZ 71.731 390.876 null] >> endobj -3355 0 obj << -/D [3336 0 R /XYZ 71.731 379.36 null] +3372 0 obj << +/D [3353 0 R /XYZ 71.731 379.36 null] >> endobj -3356 0 obj << -/D [3336 0 R /XYZ 71.731 357.314 null] +3373 0 obj << +/D [3353 0 R /XYZ 71.731 357.314 null] >> endobj -3357 0 obj << -/D [3336 0 R /XYZ 71.731 357.314 null] +3374 0 obj << +/D [3353 0 R /XYZ 71.731 357.314 null] >> endobj 1543 0 obj << -/D [3336 0 R /XYZ 71.731 311.486 null] +/D [3353 0 R /XYZ 71.731 311.486 null] >> endobj 546 0 obj << -/D [3336 0 R /XYZ 222.149 272.114 null] +/D [3353 0 R /XYZ 222.149 272.114 null] >> endobj -3359 0 obj << -/D [3336 0 R /XYZ 71.731 264.762 null] +3376 0 obj << +/D [3353 0 R /XYZ 71.731 264.762 null] >> endobj -1829 0 obj << -/D [3336 0 R /XYZ 71.731 223.93 null] +1827 0 obj << +/D [3353 0 R /XYZ 71.731 223.93 null] >> endobj -3361 0 obj << -/D [3336 0 R /XYZ 71.731 186.206 null] +3378 0 obj << +/D [3353 0 R /XYZ 71.731 186.206 null] >> endobj -3362 0 obj << -/D [3336 0 R /XYZ 191.311 175.277 null] +3379 0 obj << +/D [3353 0 R /XYZ 191.311 175.277 null] >> endobj -3363 0 obj << -/D [3336 0 R /XYZ 71.731 168.139 null] +3380 0 obj << +/D [3353 0 R /XYZ 71.731 168.139 null] >> endobj -3335 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F54 2195 0 R /F60 2543 0 R >> +3352 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F53 2191 0 R /F61 2544 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3366 0 obj << -/Length 1926 +3383 0 obj << +/Length 2083 /Filter /FlateDecode >> stream -xڥYߏ�6~߿"o%����<��v��j�R��jzUEI�#rQ���c�������|�73� ]�𣋐��Åń�"=ܹ�<���*�JAV�����狘�_<o�O�E��|�x�����'�&;-W�w������E�w��|ʛ�����~y�8}�8�f��.�4$��°v}n@(��]�0r�Zr��ֵ0���W��!8��@��.V<&<d�`������z ���a�١j2l?�iV��n*�jˇ��U��u��|J��*��C^d��#�=f0�P�K3��� h<7tl�!)��w��-&�G�>inСs,�4���ľf� -3��AKE�&?eiS���,�p�z_�5aY��uk��E�.���Su���K�^z�C���j)#�O�j�49��N��H ��eI��\�w���5���NY�W�.��\:<���[���+��"�U�W�u�mRnF�q��X+�q�9� ӗ�����u��p,�4i� ����ْ��fy��u��jQ=��5�JXQ\��K[��W\04.B���K��.�<��nOE�*� -}e��v��ǁ!���>���SʡL��?,)�*>�~۪� �J7r����g"������\��oA�`d�h���&3�>UUC�1S��%s��o</�������i����^ -�*�V'���q���WI���7?ʩa��r[�dz�D�V^B�A�?�rW9C�. -�Ɗ$����!��na<��e�u�c�tH��>?�x{ɛ=���x]����[ag -��� ��� -��"��Dzz�Yi ��}a� -{���ɾA�I9�I��H[�A�{����ݰv�F�A��g�v�EH�Y�Z�K�j|�,F����'�c� {Y#V͂��L�<�6�V�����(%��;��ċsv�UH+S�\�d�I�W�4Q�kՁ�g��Ԙ�F��[�~����0+ d�t8�X��,�_��0�jl*���p��^�q�X. ��=W�x1 -�"\@qjD���Θ?�(����0�lx��q�y�֏`gc����З(�A��cŕ�H/2�������v� W�RFP���xQ�����F��d�o�A5�6�75d���[���?U�Ee?��57�*��!�¬�@m��E�[s - -Q���4I�V�6߽��m�(��}�c&}� 6ߚlvߚ�o5��s���j�G{q�ݤy�|)wC�pλ���u�l��T�������5�o �qKhļb|*��SHiQ+�M�$�N9T����L -QAlB4��B4� !j�2�Q��NƊ�t�jߚcN���q8�3��9�d�;�d7���4n��Q��d�(� " 3H-�L#dր!�������#�NsF|�1�d�/�OtVZfJZ-�"�6��F؇��ٟ��"B˥��rj?�@[����N�P�j������R�U1�u;ɔ�b('�p�j�Uj�u�)�7d[���2Qk�� ��y��I(��&��&����LE#����wm6mP��..�R|ʸ9w����7�pz����L�LF��آ�d�G��nD������t��L���-ze%��_������e��M�,�cH�|V�fJ�-�"�6�dG� ���� \�94��\f� -b��f���nzA�y ��G'�� r�/=;�]�}����q��8$lj�|��|��a�RD���6k�a���A~�� ���"{�*��Lf�A���D��� �ń�f� � ���2�*wi�IL�O�f�hn��y��Z4���f��Z4wߠ�����)�\����� -�b �6k���Lg�h|����IK�L�F!l�1��1� �h�V�4��X�^#��ټhz̤h�&��.������x�h8������,".k'��t�S�ʛL���R~endstream +xڥZM��6�ϯ�m�`�)QAw� &��;��C,dY��Ȓ!��p~�V����8�EDS�|��bIj�q�oB�B."f"�����ݜ��O�F�4d7¼��{���61�o�z���g�Ǜ�,�b�z�����\۬��t����v�+/��~}��[�����?���k�)��ő�jV�1�ކ�Lp��u�s�y���Ƅ��'�lߠ��u>����8���y1�B��z�y��0���u�+�TmF��4͚��mE������U���ӭNڼ*��Ǽ�mG8x�.�B*3^�Y 4�: 5璔[.�;u��8��՞��:�"I���K�k��&���Y����Ҷ���,�t��\� +=aY��}g��E�/��Ǻ�<p�[�����p�Z.X,�Z�K�&�qq�TG�Fz 4�;ɝ~Fl�P/���ʶ�Sw�����Nuk�Sg?_�7�#�-Z x�['�L��l?�{m4�?���a�e��@g���NZ]�E�&mv`��L�2� + kV?�iX-�{.Y{�Њ���q���� �҂����?�v��3����U���u����w�TdPC@��8hvL+��R�c�aW��n��o�պQ�5u��a���� +�{j�8�9�����t��̜�����S���[�:����@�3���+�s�^?<=i�&�Tt�j\� �x(��WYzʿ�ߪ�aN��X�dz�0�����yQ����A�P��C����(m����G���*����b�tH��9�6��-o��R.�b��>/0�SoE�)�H���.B�8$cD*=�e���TV��.7D{����ܒV���,�qk�� {�7 7z`�M.AA����0�Ҭ�V���G�tn8 +����8�7R�ˆ�z�de��Qt��"dԶ��vX3�AB9;�����9��C����g�Kݹ�D{�ܦ�L72� ��F����7Rcv#����D��OY:�� �3nl���p�� �elv��B8��J?D�PB�(.�Q�!Ԯ!��P��6"�^r2Gޟ��l�?�,)�U�l���\q��ҋJr�t�S���Q����J:�*9o>^4d7�n�����ȇ��e[��2���-����U���~�5h0fn�u���]���aqK���>���h�"��c~��P����L\��Y��F�$i��%i���,M�p�����!i�[u�����U�y�U{�v�=2�ӌJoi�d�⩾C�D |n�pR�~�����h �-�d�/�d70b��䂾8��@�g.��R�麷a��@�C��4�,P����5�fȧ4f���z�j��F��?�đ�PpoUZ#̒�:�EZ3lViͰO�5f�x��g� Qi�.u�,m�::��Z?�@5f��c +��|��c�k2͒�b(n�p�m�]z�{�.�=��1���G��P_y'��E�������t��m���L�՛����6��>.����������B2ȣ��:`�UCl�j�٣�d7�u����x˛LW��-zUE͟�Q����m��ZYx��C]�fQ�bӫ�f��n*vD�5!+�� o�#̒:��3lV/̰^�y �U<�g���/-��)?~�ó����;�%�.�D,��k�f)EtK��a����i��?�s��P�/SE�@�RfR���܌��b� ��&�#���t�+\P^�Z3���Y,��d-�M�i�<������#�|�홓����s��Z�Z3l�Кa��֘�k��O��5��0���̐Y%3C>�̘�*�6�\���kD#]�F�X#̢h4�&��.��͈�*�!}`�$��� r����ժ%�G�G�V��7�ا^��3Ty]w�� ��[����=v�^��� +�{�M +{�uu��w�V�a�1 ��r�;פn��V$�_��,GS�O:8{ ��Blt���W\�O��_�9�jq�y�Pn5�����c�I��rh,v=M���{�Jp/L}�%��{�>�쐷U�Y�:SnΖ�LF,��g��1�@�����=&ݥO�&�����yendstream endobj -3365 0 obj << +3382 0 obj << /Type /Page -/Contents 3366 0 R -/Resources 3364 0 R +/Contents 3383 0 R +/Resources 3381 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3332 0 R -/Annots [ 3372 0 R 3373 0 R ] +/Parent 3321 0 R +/Annots [ 3389 0 R 3390 0 R ] >> endobj -3372 0 obj << +3389 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [272.131 566.22 315.707 574.81] /Subtype /Link /A << /S /GoTo /D (gloss-htaccess) >> >> endobj -3373 0 obj << +3390 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [262.114 554.671 321.927 563.154] /Subtype /Link /A << /S /GoTo /D (http-apache) >> >> endobj -3367 0 obj << -/D [3365 0 R /XYZ 71.731 729.265 null] +3384 0 obj << +/D [3382 0 R /XYZ 71.731 729.265 null] >> endobj 1544 0 obj << -/D [3365 0 R /XYZ 71.731 718.306 null] +/D [3382 0 R /XYZ 71.731 718.306 null] >> endobj 550 0 obj << -/D [3365 0 R /XYZ 192.823 706.118 null] +/D [3382 0 R /XYZ 192.823 706.118 null] >> endobj 1545 0 obj << -/D [3365 0 R /XYZ 71.731 705.903 null] +/D [3382 0 R /XYZ 71.731 705.903 null] >> endobj 554 0 obj << -/D [3365 0 R /XYZ 498.095 666.746 null] +/D [3382 0 R /XYZ 498.095 666.746 null] >> endobj -3368 0 obj << -/D [3365 0 R /XYZ 71.731 656.381 null] +3385 0 obj << +/D [3382 0 R /XYZ 71.731 656.381 null] >> endobj -3369 0 obj << -/D [3365 0 R /XYZ 494.232 607.767 null] +3386 0 obj << +/D [3382 0 R /XYZ 494.232 607.767 null] >> endobj -3370 0 obj << -/D [3365 0 R /XYZ 71.731 592.658 null] +3387 0 obj << +/D [3382 0 R /XYZ 71.731 592.658 null] >> endobj -3371 0 obj << -/D [3365 0 R /XYZ 71.731 577.715 null] +3388 0 obj << +/D [3382 0 R /XYZ 71.731 577.715 null] >> endobj -3374 0 obj << -/D [3365 0 R /XYZ 76.712 538.626 null] +3391 0 obj << +/D [3382 0 R /XYZ 76.712 538.626 null] >> endobj -3375 0 obj << -/D [3365 0 R /XYZ 71.731 528.663 null] +3392 0 obj << +/D [3382 0 R /XYZ 71.731 528.663 null] >> endobj -3376 0 obj << -/D [3365 0 R /XYZ 81.694 495.787 null] ->> endobj -3377 0 obj << -/D [3365 0 R /XYZ 71.731 493.63 null] ->> endobj -3378 0 obj << -/D [3365 0 R /XYZ 71.731 493.63 null] ->> endobj -3379 0 obj << -/D [3365 0 R /XYZ 91.656 482.835 null] ->> endobj -3380 0 obj << -/D [3365 0 R /XYZ 120.717 482.835 null] ->> endobj -3381 0 obj << -/D [3365 0 R /XYZ 120.717 482.835 null] ->> endobj -3382 0 obj << -/D [3365 0 R /XYZ 147.218 482.835 null] ->> endobj -3383 0 obj << -/D [3365 0 R /XYZ 147.218 482.835 null] ->> endobj -3384 0 obj << -/D [3365 0 R /XYZ 71.731 481.396 null] ->> endobj -3385 0 obj << -/D [3365 0 R /XYZ 91.656 469.884 null] ->> endobj -3386 0 obj << -/D [3365 0 R /XYZ 135.691 469.884 null] ->> endobj -3387 0 obj << -/D [3365 0 R /XYZ 135.691 469.884 null] ->> endobj -3388 0 obj << -/D [3365 0 R /XYZ 215.989 469.884 null] ->> endobj -3389 0 obj << -/D [3365 0 R /XYZ 215.989 469.884 null] ->> endobj -3390 0 obj << -/D [3365 0 R /XYZ 76.712 451.951 null] ->> endobj -3391 0 obj << -/D [3365 0 R /XYZ 81.694 439 null] ->> endobj -3392 0 obj << -/D [3365 0 R /XYZ 92.483 439 null] ->> endobj -3393 0 obj << -/D [3365 0 R /XYZ 71.731 438.811 null] +3393 0 obj << +/D [3382 0 R /XYZ 81.694 495.787 null] >> endobj 3394 0 obj << -/D [3365 0 R /XYZ 71.731 438.811 null] +/D [3382 0 R /XYZ 71.731 493.63 null] >> endobj 3395 0 obj << -/D [3365 0 R /XYZ 91.656 426.048 null] +/D [3382 0 R /XYZ 71.731 493.63 null] >> endobj 3396 0 obj << -/D [3365 0 R /XYZ 71.731 423.891 null] +/D [3382 0 R /XYZ 91.656 482.835 null] >> endobj 3397 0 obj << -/D [3365 0 R /XYZ 91.656 413.097 null] +/D [3382 0 R /XYZ 120.717 482.835 null] >> endobj 3398 0 obj << -/D [3365 0 R /XYZ 135.691 413.097 null] +/D [3382 0 R /XYZ 120.717 482.835 null] >> endobj 3399 0 obj << -/D [3365 0 R /XYZ 135.691 413.097 null] +/D [3382 0 R /XYZ 147.218 482.835 null] >> endobj 3400 0 obj << -/D [3365 0 R /XYZ 76.712 395.164 null] +/D [3382 0 R /XYZ 147.218 482.835 null] >> endobj 3401 0 obj << -/D [3365 0 R /XYZ 81.694 382.213 null] +/D [3382 0 R /XYZ 76.712 464.902 null] >> endobj 3402 0 obj << -/D [3365 0 R /XYZ 92.483 382.213 null] +/D [3382 0 R /XYZ 81.694 451.951 null] >> endobj 3403 0 obj << -/D [3365 0 R /XYZ 71.731 381.504 null] +/D [3382 0 R /XYZ 92.483 451.951 null] >> endobj 3404 0 obj << -/D [3365 0 R /XYZ 71.731 381.504 null] +/D [3382 0 R /XYZ 71.731 451.763 null] >> endobj 3405 0 obj << -/D [3365 0 R /XYZ 91.656 369.261 null] +/D [3382 0 R /XYZ 71.731 451.763 null] >> endobj 3406 0 obj << -/D [3365 0 R /XYZ 71.731 367.104 null] +/D [3382 0 R /XYZ 91.656 439 null] >> endobj 3407 0 obj << -/D [3365 0 R /XYZ 71.731 367.104 null] +/D [3382 0 R /XYZ 71.731 436.843 null] >> endobj 3408 0 obj << -/D [3365 0 R /XYZ 101.619 356.31 null] +/D [3382 0 R /XYZ 91.656 426.048 null] >> endobj 3409 0 obj << -/D [3365 0 R /XYZ 71.731 354.153 null] +/D [3382 0 R /XYZ 135.691 426.048 null] >> endobj 3410 0 obj << -/D [3365 0 R /XYZ 101.619 343.358 null] +/D [3382 0 R /XYZ 135.691 426.048 null] >> endobj 3411 0 obj << -/D [3365 0 R /XYZ 142.884 343.358 null] +/D [3382 0 R /XYZ 76.712 408.115 null] >> endobj 3412 0 obj << -/D [3365 0 R /XYZ 142.884 343.358 null] +/D [3382 0 R /XYZ 81.694 395.164 null] >> endobj 3413 0 obj << -/D [3365 0 R /XYZ 76.712 325.426 null] +/D [3382 0 R /XYZ 92.483 395.164 null] >> endobj 3414 0 obj << -/D [3365 0 R /XYZ 91.656 312.474 null] +/D [3382 0 R /XYZ 71.731 394.456 null] >> endobj 3415 0 obj << -/D [3365 0 R /XYZ 71.731 310.317 null] +/D [3382 0 R /XYZ 71.731 394.456 null] >> endobj 3416 0 obj << -/D [3365 0 R /XYZ 71.731 310.317 null] +/D [3382 0 R /XYZ 91.656 382.213 null] >> endobj 3417 0 obj << -/D [3365 0 R /XYZ 101.619 299.523 null] +/D [3382 0 R /XYZ 71.731 380.056 null] >> endobj 3418 0 obj << -/D [3365 0 R /XYZ 71.731 297.366 null] +/D [3382 0 R /XYZ 71.731 380.056 null] >> endobj 3419 0 obj << -/D [3365 0 R /XYZ 101.619 286.571 null] +/D [3382 0 R /XYZ 101.619 369.261 null] >> endobj 3420 0 obj << -/D [3365 0 R /XYZ 145.653 286.571 null] +/D [3382 0 R /XYZ 71.731 367.104 null] >> endobj 3421 0 obj << -/D [3365 0 R /XYZ 145.653 286.571 null] +/D [3382 0 R /XYZ 101.619 356.31 null] >> endobj 3422 0 obj << -/D [3365 0 R /XYZ 177.534 286.571 null] +/D [3382 0 R /XYZ 142.884 356.31 null] >> endobj 3423 0 obj << -/D [3365 0 R /XYZ 177.534 286.571 null] +/D [3382 0 R /XYZ 142.884 356.31 null] >> endobj 3424 0 obj << -/D [3365 0 R /XYZ 209.414 286.571 null] +/D [3382 0 R /XYZ 76.712 338.377 null] >> endobj 3425 0 obj << -/D [3365 0 R /XYZ 209.414 286.571 null] +/D [3382 0 R /XYZ 91.656 325.426 null] >> endobj 3426 0 obj << -/D [3365 0 R /XYZ 241.294 286.571 null] +/D [3382 0 R /XYZ 71.731 323.269 null] >> endobj 3427 0 obj << -/D [3365 0 R /XYZ 241.294 286.571 null] +/D [3382 0 R /XYZ 71.731 323.269 null] >> endobj 3428 0 obj << -/D [3365 0 R /XYZ 76.712 268.638 null] +/D [3382 0 R /XYZ 101.619 312.474 null] >> endobj 3429 0 obj << -/D [3365 0 R /XYZ 91.656 255.687 null] +/D [3382 0 R /XYZ 71.731 310.317 null] >> endobj 3430 0 obj << -/D [3365 0 R /XYZ 71.731 253.53 null] +/D [3382 0 R /XYZ 101.619 299.523 null] >> endobj 3431 0 obj << -/D [3365 0 R /XYZ 71.731 253.53 null] +/D [3382 0 R /XYZ 145.653 299.523 null] >> endobj 3432 0 obj << -/D [3365 0 R /XYZ 101.619 242.736 null] +/D [3382 0 R /XYZ 145.653 299.523 null] >> endobj 3433 0 obj << -/D [3365 0 R /XYZ 76.712 206.87 null] +/D [3382 0 R /XYZ 177.534 299.523 null] >> endobj 3434 0 obj << -/D [3365 0 R /XYZ 81.694 193.919 null] +/D [3382 0 R /XYZ 177.534 299.523 null] >> endobj 3435 0 obj << -/D [3365 0 R /XYZ 92.483 193.919 null] +/D [3382 0 R /XYZ 209.414 299.523 null] >> endobj 3436 0 obj << -/D [3365 0 R /XYZ 71.731 192.511 null] +/D [3382 0 R /XYZ 209.414 299.523 null] >> endobj 3437 0 obj << -/D [3365 0 R /XYZ 71.731 192.511 null] +/D [3382 0 R /XYZ 241.294 299.523 null] >> endobj 3438 0 obj << -/D [3365 0 R /XYZ 91.656 180.967 null] +/D [3382 0 R /XYZ 241.294 299.523 null] >> endobj 3439 0 obj << -/D [3365 0 R /XYZ 76.712 163.034 null] +/D [3382 0 R /XYZ 76.712 281.59 null] >> endobj 3440 0 obj << -/D [3365 0 R /XYZ 81.694 150.083 null] +/D [3382 0 R /XYZ 91.656 268.638 null] >> endobj 3441 0 obj << -/D [3365 0 R /XYZ 92.483 150.083 null] +/D [3382 0 R /XYZ 71.731 266.482 null] >> endobj 3442 0 obj << -/D [3365 0 R /XYZ 71.731 148.675 null] +/D [3382 0 R /XYZ 71.731 266.482 null] >> endobj 3443 0 obj << -/D [3365 0 R /XYZ 71.731 148.675 null] +/D [3382 0 R /XYZ 101.619 255.687 null] >> endobj 3444 0 obj << -/D [3365 0 R /XYZ 91.656 137.132 null] +/D [3382 0 R /XYZ 76.712 219.822 null] >> endobj -3364 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R /F54 2195 0 R /F35 1463 0 R >> -/ProcSet [ /PDF /Text ] +3445 0 obj << +/D [3382 0 R /XYZ 81.694 206.87 null] +>> endobj +3446 0 obj << +/D [3382 0 R /XYZ 92.483 206.87 null] +>> endobj +3447 0 obj << +/D [3382 0 R /XYZ 71.731 205.462 null] >> endobj 3448 0 obj << -/Length 2408 +/D [3382 0 R /XYZ 71.731 205.462 null] +>> endobj +3449 0 obj << +/D [3382 0 R /XYZ 91.656 193.919 null] +>> endobj +3450 0 obj << +/D [3382 0 R /XYZ 76.712 175.986 null] +>> endobj +3451 0 obj << +/D [3382 0 R /XYZ 81.694 163.034 null] +>> endobj +3452 0 obj << +/D [3382 0 R /XYZ 92.483 163.034 null] +>> endobj +3453 0 obj << +/D [3382 0 R /XYZ 71.731 161.627 null] +>> endobj +3454 0 obj << +/D [3382 0 R /XYZ 71.731 161.627 null] +>> endobj +3455 0 obj << +/D [3382 0 R /XYZ 91.656 150.083 null] +>> endobj +3456 0 obj << +/D [3382 0 R /XYZ 71.731 127.169 null] +>> endobj +3381 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R /F53 2191 0 R /F35 1463 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3460 0 obj << +/Length 2344 /Filter /FlateDecode >> stream -x�}XY��~�_�@��戺�Fx/g;6�� ��[Y]ֱ��O},���A�b�X����>�H�HC���xQ4��Ŏf~x%-�ʒ�Nhޭ_�} -�E.�$\���(�D,�E"��ź���~��I�U�^$��n��Qյ��g]�C5=-�������a�8LE��/��h�� -ң\�x~&�(2b���U�%�8���c̤��b�jb\�&eg�K�9����d��쪍嬊B��.;覛t��s���~�z=8�K�{�<�˖gz5LU1�j���I�D%��*V2�U9�'qJ�j����������Q�k;����=��#� �ڑO�<0t�Q�]ӫq|����a����7n,�Z��3dj�N(hP�ZL?�H��� v�b�F���tҜn�M� j�uQ�y�-��F_瞑|��U�F@X��V�g�j��~�2����n���сV�Hrv<0������Ԧւ'>������-��nh�Tu-)3����{�e�{�2K�,d����i����Y]��8ʤ'hW�y�;�~�M,�(v�ߪ�/̎If )�H��;p���I���9�k��b�����E��m�����z��F�#��08VM����w���OF����Q���5��Ҳ� `����ΒiX����o�%��[>7�ƞU����e{#OQ�L���"�S�4O����8���>g&���V<��,����R§gftt���i+��/A��o8�uP�P�[��8A�a���k(����rk��*)��b$"1<�U���(�� -2��%� �l�u�_�u����2�E�f�ď�ޮ�fuBdj�� � �ED ����h��^��Ѽ�}R��������7���E�f#�hU�뢂ŋs��`��ޘ� v�4EE�矠V8�h�hNQe4�d�4%�&)��HH��^�ۈ�i���#,�B�'�pӕ�~覩�76��rL���`����@(�}���ۑ����A&Ҝ��Tao�^?r�����AH=����R}_W��������Q11~�ۉ��Z���)P),W6���p�MC �� �'�7 -~a����}7���N������f�Fѽ�g_I)���sړ��W=V���#Y�<�*�qC��r��,�"J� P㉋� n���}�[�����#P�����|���[���"�Rs�{S2�Eyj�Xk��z`\?d_���l���T��Ic�L=�~����L���C��3W���� -$�v�U�����J�ۺa���ו�ZDc�؏ #��a�J��7֎!朠�)����FC ��e��N���-�lV�x -�$��V]��0ʅL�E"�ʹ�hV'DW7�KF8��g�%�H���c���N,LC�D��nj���= Tr��Cs������8�3rІ�����UfnT�P�0�k,qC17 in�� -���F=1`w�i����dH�rvɚ -�1}�������~���jk���M��o��kJN��um�m��cG�@Ԟx/�.�.��W��Q��У`����9*�%�s[w�d� P�vݜ��U����z||������dzU"��m'w��;=������F���Sm?�u�yMR���<<`�o}�C!�%<�f�$�6&� cl��@�uiW�־��fAN��,8�G�e���B�N��+;Ӆ:�n��㳶�MN�����C�<z��pm�h��t��|]A�j��s�2��E�ϡ�F�8��>M��58��m� ��ZhI� -��)�i]��]S�_�:��F�UQu����\������~��8���At�fi"M5��X�02�H�c��Ȉf x�� -F�4eW��v�m�_�W�*&�~�VJI]iNg4�j7W��N��ȐF7B�����e�X����Dn��ޤ_?�����5�;UmQϥ����1d�:fK��ë����u��|���J�� ��yD�P�C��A��U�����r1Yj��h��� �6uڬ�ۥ�UKK�ow�'��#xBPc�� N�����$��y��Y��q���W ��}s���a�������@ټ�-�[L������}D���DA���L5�3^C��O<��D�i������NwXR��mK>�(�hV'DWE��T�X�h=�"���ɗ6�/�u���~�L���Փ(�Qb���L�R/�S9�D*���0xy]���O�Ͷ�F�� �0�o��Ũ�S?[���B�f��u���SWWg��ӮN��C����݇��RW`lF�{�ý�k2���fGWj�܈�����<�z���=�Op��n�$v�S�U -;-��L�ݐ�?��]o�����U�w���.h='�DF-�K/�G��v9�[�8&$������JST�endstream +xڅXݏ����@*k�H}'(��%i7hڠ�>�bAK����*Q�n���pF���m� ���p>~Zn��M*E�G�B%�h��#����d�-�l/d���=���\�I��6��D,�M*��j�+��}8�ޚ�ߪ8�"A����ת�5�>�b*���g���w˞q��<�4k���K��]��L�Q�̲��A/�6�2O�%�����'� P�iP�$`O�g_^7|��#͔�` +۽R�� +m��ȫ�S7ռ��G_z �Β���lQ�q�������1lL��� ���J����=tC�mյ�6���A"��� +��H\�%a�)�����7��,�b$��b%=���;>������3��X��*�@�@�$�h%~!�v��%���o��t�L�0�k�5b��8tń�E�<��5�f�\y;?���f�D�U��/D�]�Z"_� }�K�l���t����,KA�R�[:3��i��<�J�� +ڄQ�=v�����q�4U���0ǡ��3�3 x%1,�X�۸/�M^�V^Gq a��.�Ot��_�Ĝ�Hњ��w4l���OJ��; +�;����Ɉ��l'�*4�dP� V��ZU�f��8����Ġ`W1�Tۡ�{��J����)t~��)���_#�Ls���&����.��2�!�(W��R����a��%��^o�����,���*� ���~����1���8LΨ�]՛��s���5�w��`9���X���� ���_��[�(���$X&a�Bk�9"n��q��� +f�HAE���g{:kksg�<q�E��Q~�Q_�924}����۴3�V�L�9U��:k�E͆�Nz4�.A���Q���ʰ�3 ���Е�4>�x�ѭ���S�M�Z)8@����L� Ԁ!H��ҷјl֞W��8V!f[�F���$�ͪփ��-�}+�Hb�O{��qV�+{"�[�72i)a��H˩��2�D�7@��]���uc^��i�����E���z�s_4 ���@dQ�N���(/��<e?ֆ�|����/�q�/�m*����Lb�����⸟�mx��y�]`>��+ ���k�W�H�[t1�c�ư��_P �����T'�.`���5�T�N~��>o�8������l(Ҁ9�d�y�9Q�(2�4^��zXVH�.PVI�Nĵ�5��Q.dn�$��=X�e�B7��kExtƍ��`:QooG"7�]&X��"���ݴ�ЀrO�.y:С�[A��;S4�v�9#mH����f�F�7Ce��5�10�C3����ln��2�=���"x7�v����hWN3X��|�������~���|�u�Mԍ��v��,�5|�ѱ�D`�^��.�.��g��.KH�Qwmzp��%�s[w�$� ��uwN7Dd�/w^���U����UA�cw���`/���fP�T/e�Ơ����p���:���2����8w��� �eaA3;bKph�0��. �h��y���Uk�To�L-���2�?�E�Z��M��Y�伄��h�<;T^]cȐ8���l� �z�t?��\����U娋��E�=���� d�s��ݶ�m�K�\��Z�H���9�������e��F�UQu����b� �XUoo={+0W��%�;߅ H �f�9+���!tX��椧 �y�02L��! +�����v�8�.�:�hi�&{�nO����&��z��`�K5�>�Hy>Β@����� +Q"�S���.<����=�k��ib�N2�bPl��F|7��Kg�'0�pv"p��b��>簀��4��4����I��\b�_*l0��7_�s9X ��Ϛ��lQA?>.��\t�yp��>��.�O���o�,���A�0mI�E��SG����� ��Gl:�{CO`K镝k��r�� �m���bn��[�2�,Iq2�mfIx�,��Ă�Η�NC��2��Y,b(�-���RNJ9��c���xSt�����)����ե�PUpYdġRA +o=��[ +�=�_Q��c]�>��-㼕�!~�^�-*]Ǭr����h���� +L���ì�������}u� �\<nАν��~��̝�/������!��܄���TmQO�!�%@@�v9}s�e�r���D�t�PJ�J3��D`�_�� +��J�H������j�L�OCL���w��*�����K�,�Cz��n{~^@1>�W��[S5̮�ˑ�_%1���U���Z����ǜ��d�J����zϕkS��}����oyu[N��R� �u�Ld�����*r�����ԬO˯�}��o��!�endstream endobj -3447 0 obj << +3459 0 obj << /Type /Page -/Contents 3448 0 R -/Resources 3446 0 R +/Contents 3460 0 R +/Resources 3458 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3332 0 R -/Annots [ 3459 0 R 3463 0 R 3470 0 R ] +/Parent 3321 0 R +/Annots [ 3470 0 R 3474 0 R ] >> endobj -3459 0 obj << +3470 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.678 602.148 232.014 610.63] +/Rect [179.678 628.05 232.014 636.532] /Subtype /Link /A << /S /GoTo /D (http) >> >> endobj -3463 0 obj << +3474 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [349.173 440.364 368.62 449.275] +/Rect [349.173 466.267 368.62 475.178] /Subtype /Link /A << /S /GoTo /D (gloss-dos) >> >> endobj -3470 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [486.332 230.009 537.983 238.92] -/Subtype /Link -/A << /S /GoTo /D (security-bugzilla-charset-ex) >> ->> endobj -3449 0 obj << -/D [3447 0 R /XYZ 71.731 729.265 null] ->> endobj -3450 0 obj << -/D [3447 0 R /XYZ 71.731 718.306 null] +3461 0 obj << +/D [3459 0 R /XYZ 71.731 729.265 null] >> endobj -3451 0 obj << -/D [3447 0 R /XYZ 152.136 669.489 null] +3462 0 obj << +/D [3459 0 R /XYZ 152.136 695.392 null] >> endobj -3452 0 obj << -/D [3447 0 R /XYZ 457.305 669.489 null] +3463 0 obj << +/D [3459 0 R /XYZ 457.305 695.392 null] >> endobj -3453 0 obj << -/D [3447 0 R /XYZ 281.996 643.587 null] +3464 0 obj << +/D [3459 0 R /XYZ 281.996 669.489 null] >> endobj -3454 0 obj << -/D [3447 0 R /XYZ 518.615 643.587 null] +3465 0 obj << +/D [3459 0 R /XYZ 518.615 669.489 null] >> endobj -3455 0 obj << -/D [3447 0 R /XYZ 523.039 643.587 null] +3466 0 obj << +/D [3459 0 R /XYZ 523.039 669.489 null] >> endobj -3456 0 obj << -/D [3447 0 R /XYZ 71.731 630.635 null] +3467 0 obj << +/D [3459 0 R /XYZ 71.731 656.538 null] >> endobj -3457 0 obj << -/D [3447 0 R /XYZ 71.731 630.536 null] +3468 0 obj << +/D [3459 0 R /XYZ 71.731 656.438 null] >> endobj -3458 0 obj << -/D [3447 0 R /XYZ 71.731 615.592 null] +3469 0 obj << +/D [3459 0 R /XYZ 71.731 641.494 null] >> endobj 1546 0 obj << -/D [3447 0 R /XYZ 71.731 576.139 null] +/D [3459 0 R /XYZ 71.731 602.042 null] >> endobj 558 0 obj << -/D [3447 0 R /XYZ 369.383 536.767 null] +/D [3459 0 R /XYZ 369.383 562.67 null] >> endobj -3460 0 obj << -/D [3447 0 R /XYZ 71.731 533.575 null] +3471 0 obj << +/D [3459 0 R /XYZ 71.731 559.478 null] >> endobj -3461 0 obj << -/D [3447 0 R /XYZ 71.731 516.439 null] +3472 0 obj << +/D [3459 0 R /XYZ 71.731 542.342 null] >> endobj -3462 0 obj << -/D [3447 0 R /XYZ 71.731 468.423 null] +3473 0 obj << +/D [3459 0 R /XYZ 71.731 494.326 null] >> endobj -3464 0 obj << -/D [3447 0 R /XYZ 348.289 429.569 null] +3475 0 obj << +/D [3459 0 R /XYZ 348.289 455.472 null] >> endobj -3465 0 obj << -/D [3447 0 R /XYZ 301.416 416.618 null] +3476 0 obj << +/D [3459 0 R /XYZ 301.416 442.521 null] >> endobj -3466 0 obj << -/D [3447 0 R /XYZ 370.113 403.666 null] +3477 0 obj << +/D [3459 0 R /XYZ 370.113 429.569 null] >> endobj -3467 0 obj << -/D [3447 0 R /XYZ 478.765 403.666 null] +3478 0 obj << +/D [3459 0 R /XYZ 478.765 429.569 null] >> endobj 1547 0 obj << -/D [3447 0 R /XYZ 71.731 373.614 null] +/D [3459 0 R /XYZ 71.731 399.517 null] >> endobj 562 0 obj << -/D [3447 0 R /XYZ 171.235 330.517 null] +/D [3459 0 R /XYZ 171.235 356.419 null] >> endobj 1548 0 obj << -/D [3447 0 R /XYZ 71.731 326.686 null] +/D [3459 0 R /XYZ 71.731 352.589 null] >> endobj 566 0 obj << -/D [3447 0 R /XYZ 413.668 291.144 null] ->> endobj -3468 0 obj << -/D [3447 0 R /XYZ 71.731 280.779 null] +/D [3459 0 R /XYZ 413.668 317.047 null] >> endobj -3469 0 obj << -/D [3447 0 R /XYZ 452.81 245.117 null] +3479 0 obj << +/D [3459 0 R /XYZ 71.731 306.682 null] >> endobj -1830 0 obj << -/D [3447 0 R /XYZ 71.731 217.057 null] +3480 0 obj << +/D [3459 0 R /XYZ 401.183 296.923 null] >> endobj -3471 0 obj << -/D [3447 0 R /XYZ 71.731 179.334 null] +3481 0 obj << +/D [3459 0 R /XYZ 457.301 283.971 null] >> endobj -3472 0 obj << -/D [3447 0 R /XYZ 184.656 168.404 null] +3482 0 obj << +/D [3459 0 R /XYZ 239.311 258.068 null] >> endobj -3473 0 obj << -/D [3447 0 R /XYZ 71.731 161.266 null] +3483 0 obj << +/D [3459 0 R /XYZ 71.731 250.93 null] >> endobj -3474 0 obj << -/D [3447 0 R /XYZ 71.731 136.659 null] +3484 0 obj << +/D [3459 0 R /XYZ 319.244 214.233 null] >> endobj -3446 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F57 2358 0 R /F35 1463 0 R /F32 1139 0 R >> +3458 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F57 2355 0 R /F35 1463 0 R /F32 1139 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3478 0 obj << +3488 0 obj << /Length 2482 /Filter /FlateDecode >> @@ -12475,127 +12534,127 @@ U ދ��{;/�.AyF���yALel��mLn�Z��6m��W��8^�?ʴ�B�D%�FT ���x6����)�.&�銱x����4�Je1)xD�ֿA�9�� �]�X�J�@�E� ��m�Wyc!9�~�R)�i@097�|0��=�>H���o $��Ң��g��5��Zz�j�$,���g������@j�ߒJrY�$=4�9�>���*�4D��������j6P܄S{1����,�\K�����n�#�GaH@��� )L[t��Ja,��$�Ny��@��E�H�o��/+aбsxrs�}�@^�J�ĵ' �g�7�Sz����BZ�]�ٷElƀ�:�eߎ��� ��j�$T6��K�����^�D"�TCgV�����t\܄�r�`��d���W:8�N(��{�鉼�ڴ�l��M����J�96N� G�~�Pb�Q�����k�)�*����~�|�U�\�p��V3M��Np<)��)��i"]2�}f�!(�xP�纫�� ��.<eK�ޟ�`(�Y���1�^6��Ae����̂�� 3���Z$0Oǒ����.�x��^5�W�����/��1^d��~/����6P�=V��ذ�;J�>��W�xy�X@�c9=��E,��u)c�N����L{���& �ґ���&��z{.�d���ȕν{���r��\�"�.|Y?����0����K�+��Ew��3*Üm9^Jt�JP�����7~{Y�_���`�L� v��.���ڷ�l �5Z�Z~��U�[,��h�҉g�z�Y�LXD�<I����ү�2!o�FR]8iqh��j/�����BWw�A��T/�Z�4J��N���͍��K�m)E�3L��\�2 |��$�������������r�yXMR����v9�M���?��eW�IW��� g)��/�^|�AW\�k0L`�P����zD�a�8.�-L��b!9��#�����i��Bϯ���\��f��=s�P[L�*���4(]��IΈ�t��b��7��-?���g���3�h�(���� -�0��9M����{��r��}& ���z��=n�_�+�J|��<Q�IԌm�~��� �U�e�mJ��mDD����(%R8,G�%$2���G%������t\-5G�}dM�)R_!�j>�́�Z���t����%���H?�(�*��M�У��|�bB�=®�zՖD���p�VP�T��s�ͭ����.�B����`�d�T�=u �z�k(��J1�J1�f��=�]� �v����s���-K�^��g6�ՠB�P�ݵ"�L�'�K��endstream +�0��9M����{��r��}& ���z��=n�_�+�J|��<Q�IԌm�~��� �U�e�mJ��mDD����(%R8,G�%$2���G%������t\-5G�}dM�)R_!�j>�́�Z���t����%���H?�(�*��M�У��|�bB�=®�zՖD���p�VP�T��s�ͭ����.�B����`�d�T�=u �z�k(��J1�J1�f��=�]� �v����s���-K�^��g6�ՠB�P���Z�?����K��endstream endobj -3477 0 obj << +3487 0 obj << /Type /Page -/Contents 3478 0 R -/Resources 3476 0 R +/Contents 3488 0 R +/Resources 3486 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3332 0 R -/Annots [ 3482 0 R ] +/Parent 3321 0 R +/Annots [ 3492 0 R ] >> endobj -3482 0 obj << +3492 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [390.612 583.608 442.915 592.519] /Subtype /Link /A << /S /GoTo /D (template-http-accept) >> >> endobj -3479 0 obj << -/D [3477 0 R /XYZ 71.731 729.265 null] +3489 0 obj << +/D [3487 0 R /XYZ 71.731 729.265 null] >> endobj 1549 0 obj << -/D [3477 0 R /XYZ 71.731 718.306 null] +/D [3487 0 R /XYZ 71.731 718.306 null] >> endobj 570 0 obj << -/D [3477 0 R /XYZ 388.547 703.236 null] +/D [3487 0 R /XYZ 388.547 703.236 null] >> endobj 1550 0 obj << -/D [3477 0 R /XYZ 71.731 692.184 null] +/D [3487 0 R /XYZ 71.731 692.184 null] >> endobj 574 0 obj << -/D [3477 0 R /XYZ 303.155 651.159 null] +/D [3487 0 R /XYZ 303.155 651.159 null] >> endobj -3480 0 obj << -/D [3477 0 R /XYZ 71.731 638.988 null] +3490 0 obj << +/D [3487 0 R /XYZ 71.731 638.988 null] >> endobj -3481 0 obj << -/D [3477 0 R /XYZ 71.731 609.511 null] +3491 0 obj << +/D [3487 0 R /XYZ 71.731 609.511 null] >> endobj 1551 0 obj << -/D [3477 0 R /XYZ 71.731 583.608 null] +/D [3487 0 R /XYZ 71.731 583.608 null] >> endobj 578 0 obj << -/D [3477 0 R /XYZ 308.598 546.392 null] +/D [3487 0 R /XYZ 308.598 546.392 null] >> endobj -3483 0 obj << -/D [3477 0 R /XYZ 71.731 536.249 null] +3493 0 obj << +/D [3487 0 R /XYZ 71.731 536.249 null] >> endobj -3484 0 obj << -/D [3477 0 R /XYZ 363.706 526.268 null] +3494 0 obj << +/D [3487 0 R /XYZ 363.706 526.268 null] >> endobj -3485 0 obj << -/D [3477 0 R /XYZ 219.335 500.365 null] +3495 0 obj << +/D [3487 0 R /XYZ 219.335 500.365 null] >> endobj -3486 0 obj << -/D [3477 0 R /XYZ 320.961 500.365 null] +3496 0 obj << +/D [3487 0 R /XYZ 320.961 500.365 null] >> endobj -3487 0 obj << -/D [3477 0 R /XYZ 71.731 487.413 null] +3497 0 obj << +/D [3487 0 R /XYZ 71.731 487.413 null] >> endobj -3488 0 obj << -/D [3477 0 R /XYZ 157.2 487.413 null] +3498 0 obj << +/D [3487 0 R /XYZ 157.2 487.413 null] >> endobj -3489 0 obj << -/D [3477 0 R /XYZ 71.731 485.256 null] +3499 0 obj << +/D [3487 0 R /XYZ 71.731 485.256 null] >> endobj -3490 0 obj << -/D [3477 0 R /XYZ 118.555 446.692 null] +3500 0 obj << +/D [3487 0 R /XYZ 118.555 446.692 null] >> endobj -3491 0 obj << -/D [3477 0 R /XYZ 165.524 438.228 null] +3501 0 obj << +/D [3487 0 R /XYZ 165.524 438.228 null] >> endobj -3492 0 obj << -/D [3477 0 R /XYZ 341.284 426.572 null] +3502 0 obj << +/D [3487 0 R /XYZ 341.284 426.572 null] >> endobj 1552 0 obj << -/D [3477 0 R /XYZ 71.731 392.995 null] +/D [3487 0 R /XYZ 71.731 392.995 null] >> endobj 582 0 obj << -/D [3477 0 R /XYZ 347.534 360.599 null] +/D [3487 0 R /XYZ 347.534 360.599 null] >> endobj -3493 0 obj << -/D [3477 0 R /XYZ 71.731 350.234 null] +3503 0 obj << +/D [3487 0 R /XYZ 71.731 350.234 null] >> endobj -3494 0 obj << -/D [3477 0 R /XYZ 71.731 307.434 null] +3504 0 obj << +/D [3487 0 R /XYZ 71.731 307.434 null] >> endobj -3495 0 obj << -/D [3477 0 R /XYZ 412.638 296.639 null] +3505 0 obj << +/D [3487 0 R /XYZ 412.638 296.639 null] >> endobj -3496 0 obj << -/D [3477 0 R /XYZ 111.263 270.736 null] +3506 0 obj << +/D [3487 0 R /XYZ 111.263 270.736 null] >> endobj -3497 0 obj << -/D [3477 0 R /XYZ 71.731 268.579 null] +3507 0 obj << +/D [3487 0 R /XYZ 71.731 268.579 null] >> endobj -3498 0 obj << -/D [3477 0 R /XYZ 71.731 253.635 null] +3508 0 obj << +/D [3487 0 R /XYZ 71.731 253.635 null] >> endobj -3499 0 obj << -/D [3477 0 R /XYZ 71.731 204.584 null] +3509 0 obj << +/D [3487 0 R /XYZ 71.731 204.584 null] >> endobj -3500 0 obj << -/D [3477 0 R /XYZ 71.731 178.681 null] +3510 0 obj << +/D [3487 0 R /XYZ 71.731 178.681 null] >> endobj -3501 0 obj << -/D [3477 0 R /XYZ 213.956 165.73 null] +3511 0 obj << +/D [3487 0 R /XYZ 213.956 165.73 null] >> endobj -3502 0 obj << -/D [3477 0 R /XYZ 71.731 163.573 null] +3512 0 obj << +/D [3487 0 R /XYZ 71.731 163.573 null] >> endobj -3503 0 obj << -/D [3477 0 R /XYZ 71.731 148.629 null] +3513 0 obj << +/D [3487 0 R /XYZ 71.731 148.629 null] >> endobj -3504 0 obj << -/D [3477 0 R /XYZ 134.999 139.13 null] +3514 0 obj << +/D [3487 0 R /XYZ 134.999 139.13 null] >> endobj -3476 0 obj << -/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F48 1937 0 R /F32 1139 0 R /F33 1230 0 R >> +3486 0 obj << +/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F48 1934 0 R /F32 1139 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3507 0 obj << +3517 0 obj << /Length 2964 /Filter /FlateDecode >> @@ -12613,356 +12672,357 @@ R [�:o�B&at1W4�e:��Ҵ�ʄ5M�e���uQA�)�S�R��U�K���j�����SGR�u�qiN���@KK��z��*npG˹�=��p�×$=�{Kp��0?6�4:��6C]t2�h��*k�V@.m��@�F�ʧ#��K�ѷ�?|/��kɘ��-�B���6�qB��ۀ��k+�G�h�{O���zB�P{�*�^�I0F�D"B�c�m�����*��fSqC��rH��]��)u��Zh� ���^���Y�h"���m��.H1��q.=&=K�@�ネ��y2����t�*���-y��NV�'Y�N�Tk�g����,�@�3&�i,v���^|6"��M8�ZH�~�m�9��)�_u�^ߏ_m/^���M�Ty1ɯ0����Rv��u~�q������}e���7]uD��N�VX[l�����o�H�.�_HR_���Ae�+$��{���S��p��oe�i���=$����sz�j�|Mm?��,v��оPVN���+]�pRqⱥӒ���_]���� ����`$K�s+V��)sWۄ�JNH(���d�@���*��b)����9Gy"��z�����7-i�|�"|v���N$#������n��8��#�uy<���4��F��i��N�� �h��A�s�� -����*Z��-��1l�؝S��jv�3w�z�u8���}{ýۆ2ݽs6T����<�)Q�[ҽP��I���������={a��^5uM7c��^����i���ʿ�P3\��j*�%+'�Z�a��B>�V��b�O2�'����q'#]�&�c˥vB?�4�4�^R!���bOP_���R���3�*�V�RJ�([pG�2� ϧ���۾�TK��V"�y���n�&��d~��$�s���*��(���mg�r���\�X�_ s�O'�X����RVٗC���J�s�������=R� :��z���vI�3�ޱ���¥�h�!��4�����t{����ڸl���u���iT������i�R���9�K�wyu���.�i'?�P��j�]��{y�}�w�3���� Zc?tL�?�+��N�T,endstream +����*Z��-��1l�؝S��jv�3w�z�u8���}{ýۆ2ݽs6T����<�)Q�[ҽP��I���������={a��^5uM7c��^����i���ʿ�P3\��j*�%+'�Z�a��B>�V��b�O2�'����q'#]�&�c˥vB?�4�4�^R!���bOP_���R���3�*�V�RJ�([pG�2� ϧ���۾�TK��V"�y���n�&��d~��$�s���*��(���mg�r���\�X�_ s�O'�X����RVٗC���J�s�������=R� :��z���vI�3�ޱ���¥�h�!��4�����t{����ڸl���u���iT������i�R���9�K�wyu���.�i'?�P��j�]��{y�}�w�3���� Zc?tL��>�+��N�T3-endstream endobj -3506 0 obj << +3516 0 obj << /Type /Page -/Contents 3507 0 R -/Resources 3505 0 R +/Contents 3517 0 R +/Resources 3515 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3332 0 R ->> endobj -3508 0 obj << -/D [3506 0 R /XYZ 71.731 729.265 null] ->> endobj -3509 0 obj << -/D [3506 0 R /XYZ 71.731 718.306 null] ->> endobj -3510 0 obj << -/D [3506 0 R /XYZ 71.731 649.4 null] ->> endobj -3511 0 obj << -/D [3506 0 R /XYZ 71.731 597.594 null] ->> endobj -3512 0 obj << -/D [3506 0 R /XYZ 71.731 582.65 null] ->> endobj -3513 0 obj << -/D [3506 0 R /XYZ 417.328 573.151 null] ->> endobj -3514 0 obj << -/D [3506 0 R /XYZ 218.704 561.494 null] ->> endobj -3515 0 obj << -/D [3506 0 R /XYZ 508.932 561.494 null] ->> endobj -3516 0 obj << -/D [3506 0 R /XYZ 76.712 533.201 null] ->> endobj -3517 0 obj << -/D [3506 0 R /XYZ 118.555 489.655 null] +/Parent 3541 0 R >> endobj 3518 0 obj << -/D [3506 0 R /XYZ 135.395 481.191 null] +/D [3516 0 R /XYZ 71.731 729.265 null] >> endobj 3519 0 obj << -/D [3506 0 R /XYZ 222.231 481.191 null] +/D [3516 0 R /XYZ 71.731 718.306 null] >> endobj 3520 0 obj << -/D [3506 0 R /XYZ 433.177 481.191 null] ->> endobj -1553 0 obj << -/D [3506 0 R /XYZ 71.731 447.614 null] ->> endobj -586 0 obj << -/D [3506 0 R /XYZ 267.224 415.218 null] +/D [3516 0 R /XYZ 71.731 649.4 null] >> endobj 3521 0 obj << -/D [3506 0 R /XYZ 71.731 412.249 null] +/D [3516 0 R /XYZ 71.731 597.594 null] >> endobj 3522 0 obj << -/D [3506 0 R /XYZ 71.731 395.113 null] +/D [3516 0 R /XYZ 71.731 582.65 null] >> endobj 3523 0 obj << -/D [3506 0 R /XYZ 266.919 374.77 null] +/D [3516 0 R /XYZ 417.328 573.151 null] >> endobj 3524 0 obj << -/D [3506 0 R /XYZ 71.731 346.874 null] +/D [3516 0 R /XYZ 218.704 561.494 null] >> endobj 3525 0 obj << -/D [3506 0 R /XYZ 419.408 320.972 null] +/D [3516 0 R /XYZ 508.932 561.494 null] >> endobj 3526 0 obj << -/D [3506 0 R /XYZ 71.731 300.882 null] +/D [3516 0 R /XYZ 76.712 533.201 null] >> endobj 3527 0 obj << -/D [3506 0 R /XYZ 71.731 244.095 null] +/D [3516 0 R /XYZ 118.555 489.655 null] >> endobj 3528 0 obj << -/D [3506 0 R /XYZ 71.731 187.308 null] +/D [3516 0 R /XYZ 135.395 481.191 null] >> endobj 3529 0 obj << -/D [3506 0 R /XYZ 253.921 176.513 null] +/D [3516 0 R /XYZ 222.231 481.191 null] >> endobj 3530 0 obj << -/D [3506 0 R /XYZ 311.687 163.562 null] +/D [3516 0 R /XYZ 433.177 481.191 null] >> endobj -1554 0 obj << -/D [3506 0 R /XYZ 71.731 143.472 null] +1553 0 obj << +/D [3516 0 R /XYZ 71.731 447.614 null] >> endobj -3505 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R /F48 1937 0 R >> -/ProcSet [ /PDF /Text ] +586 0 obj << +/D [3516 0 R /XYZ 267.224 415.218 null] +>> endobj +3531 0 obj << +/D [3516 0 R /XYZ 71.731 412.249 null] >> endobj -3533 0 obj << -/Length 3159 -/Filter /FlateDecode ->> -stream -xڍZY��F~���Ӛ$������qlg�$Xx�X,6�@�-�0�lz2��[W�MI����f������5�ʃ?���]� s�$^�ou�7_��b+K�֚��/^}�U�fI��W��s�(Z���M�`�/��;����6�='v��nt�TC՞x�����w����������~�9wn��� -g��H�+?��h饮e$]��n�B�Rg�N<G5�:g>t}��y[Z�.j@Ia��l�o� <�"b�ϮAFq����r���#眯����cG����+�$��y�t��A��ˮ5S"���Ⱦ�y����y6��jÒ��*��6A�^�E�㩮���V��腲�`1B��eԼ[�A`ߩ�<�^�����s6�A��W�0N��f�n&��/<G?�}��xp�Nݑ�?����_��+:ѐ��y>7 � -�`�/(ܳ�=�Q�����k�.}���T�2�+��*����3�{k�ա��@%> 4d���m��lA$��r��^� �}z�ʔ&���'�}Ã�sU��3���:v��g�>�i�ZWh5��Q������Ktd��g�~� ��`������ɢ(,H�ԍL�[�t~�(<0��)��[��}���Z�+2��~��>��Y��ٗG&ȢL�uS���n���B�; ��ڼQo�;�.$������ˌ���~�0�Ǻ�;7��:>}\W�q� J�{��J!�ᡵ��&SO.��z�cښV�BB�g"������|3{[��,� ��N�:���9�/�C{�Y����t�cL@M!� -�&��<���,@�)�*�u�.NLA(��Eb���A�O���w,��ёt�� ?*-�8�e��A����a�v"��W����}2��|���*f'��&Դ/�~j�����^b�V>T���!|��Y\��@���r�`�A��ܓk����������&N�O��QΏV�`� -3�^S旋/� -vg&mX$�7LvM������s8���7��o�%��we���p|'�Q��2����Oֻ�y�����y�����8�=҂W���)��|T*<�VɻG��/h�r�A�2�E�K>�d�j)���B���L����0��^%�yx)95?�yUNQ�%�� lׁ��ms��˫(b���ܧ�EW^1!ɲn�_�SԬ��*n�����������$3�DaĜ·,o���xYR-Ńx�~���H�}w�c��\�Y��b0��N�1(:r�8����*��8�ʀCRO�)%��,`�i�=�ճ��gN�����>�C�j`Lي������^�^��Z��u��A���4����cw�����w1"<����f��sӝ)�E#}�5Hvn�%�R��e��G 8�`f��Ή��x!�r�t^����F�'ը栤ІD榩����V�^���G -�m������d�8��:����6{ĬE̙w*� �'n������zY���.r��x��Ds���|H>�A����x��/����y�MP�F����#댭_Yr����80��IfS�.��>�T@S�Cʺe]X9���h�Z�M2<UYiiގ$#76@{ֶ6���Ψ�PNM�2�{L"�*���XP�&��)��w�8a�ڀoЋ<:s��C�Im�C)ڳɏ� u�3��4���Qyu�<�HH�w�,%��i�p�:Z|�(�S(*��� ���z`xhZ��[�F ӂ�$���V&�&�L�-lyT����5�����*`���M���N&��6Ф����~=��@��V�v��o��V�z�j��od����@�,�~�N��Rp������O<[�u�n k:�JV���)�&n.ύ`|���;����ԣ�;�r+xGC&��&,��A� ��0|G0GӅP,B�X� ,:���뼿�)z�(�R�j&V�_�nGeU�zb�Qt�;� -i�����O���/�N�cS~TO7mG�%LG�r�"O��C��B��jK�����W��@�JM���:�O�����2���; -�V�'uG���˞S�����E�{�<�9}�L&��\�T��8�Z�"��Lr�:��,�.�1��+�N�&P��:hf�m���K%�L��Uf���v�a�L̜Men�+y/��3� 0S\I�OS�A���ׂ��85U�6KJ_�`ʹ<���ѫ:83H��X����"\ -0Țc�Yہ���?����~���"Cg��& -�I�0��S/�E��T�g���V���~����-˚��'Z�]0�f��q�<�v���/v� �Ђ8��g��:x���, J=�]=��1<�Ƅ8�+v/�.K��1� �Y���/!R�A�:&�Z�1��%���V�Mk�F`���E�z��|��1�O�B�g2N��/��p��<�߹S(�����������2G�j���O���{�R�Zn�������,��}q홆�H\�h�怎�H�Q�[] ��W<8ҕl#o0�19mcc���;�>��SB�Ƕ�R�t�i�e� 96$�*7W7&������+��+�ۋ���t��u�/�m�s��r� �rg�ٙ)0��A�nj6�[ |s}+89!E���qt�H��7{��PL$-.s=Gx��?��3� -��hd����N �w�/ы�Dc��_��T��Y��RI.�ܶk��b,��vMeD,�������(�E��,�� �|HP�O�JPc�,�'�T< H -�= �a,l,&>[����}P�[ԝ&�>@��O��M�HZ?d����h< ,β�q�e���� -�W�<^ è������$�]-��@@#�T�����ۼ1W<Ww7�d��e9��ӗ+����DS�(�?�<���S��O��4���.4�V�C��n�`���ͻ�Ls�Ïb����y�&�E��q�[\����\���mYɧ�`GQ�F#�Gg��Ջ�˩����iyZT� F������P$� ��t����c�):�ṉ��^5c�c�_ �j՞x�h��B���ƙ�f�����1�\����B����{�_4�%7���=� 5������v�����endstream -endobj 3532 0 obj << -/Type /Page -/Contents 3533 0 R -/Resources 3531 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 3570 0 R +/D [3516 0 R /XYZ 71.731 395.113 null] >> endobj -3534 0 obj << -/D [3532 0 R /XYZ 71.731 729.265 null] +3533 0 obj << +/D [3516 0 R /XYZ 266.919 374.77 null] >> endobj -590 0 obj << -/D [3532 0 R /XYZ 308.397 708.149 null] +3534 0 obj << +/D [3516 0 R /XYZ 71.731 346.874 null] >> endobj 3535 0 obj << -/D [3532 0 R /XYZ 71.731 698.007 null] +/D [3516 0 R /XYZ 419.408 320.972 null] >> endobj 3536 0 obj << -/D [3532 0 R /XYZ 366.772 688.025 null] +/D [3516 0 R /XYZ 71.731 300.882 null] >> endobj 3537 0 obj << -/D [3532 0 R /XYZ 71.731 667.935 null] +/D [3516 0 R /XYZ 71.731 244.095 null] >> endobj 3538 0 obj << -/D [3532 0 R /XYZ 386.497 644.189 null] +/D [3516 0 R /XYZ 71.731 187.308 null] >> endobj 3539 0 obj << -/D [3532 0 R /XYZ 71.731 624.1 null] +/D [3516 0 R /XYZ 253.921 176.513 null] >> endobj 3540 0 obj << -/D [3532 0 R /XYZ 380.728 613.305 null] ->> endobj -3541 0 obj << -/D [3532 0 R /XYZ 71.731 593.215 null] +/D [3516 0 R /XYZ 311.687 163.562 null] >> endobj -3542 0 obj << -/D [3532 0 R /XYZ 71.731 549.38 null] +1554 0 obj << +/D [3516 0 R /XYZ 71.731 143.472 null] >> endobj -3543 0 obj << -/D [3532 0 R /XYZ 71.731 531.447 null] +3515 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R /F48 1934 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 3544 0 obj << -/D [3532 0 R /XYZ 71.731 507.701 null] +/Length 3160 +/Filter /FlateDecode +>> +stream +xڍZ�����B�j +8����q�8v|E���h��"Wq|(|�|��;�%��|1�g��ٙ�V�\��V����~��m�����o~z�Ɋ�,�Xk~ؽx�!V�J��jwX�n��0\Ł���_��8�N�y��z�G�)~����˾l�<��x�c�9eUe�������n�9 +b�&��5W����A�-�g�t�)I)O�(T�8���ut}��A�̇�����A�ֺ���QR�"� �6��<?$��hkdλ��_���AVQ蜲��:��^�Ȃ�$D�/�rx�ٖ����n� k�eۘ)�]���o;^�q�%����J߱�A�J@r���F� Ѡ(�~<Ve?��X^+�3����Y��i��<�[9���Sx����ӏ։����^m�h�b����U*��/\gx\{����0��??�~�������[ѐ��y>7 ��a�'(ܱ�]��9���k��� L��9}.m$:�Bt{ c'L�<�=�/�* ����k�`'�o�c"я�3l�t����#اӍL ;"���$�����T���ģ츎��l.�Y�g�J���ΨZ�x�^>l��i����GtF!X+pc��|�� +<�#9��0���ir +$���g߿����q��_��c~��{~vŁ �(�������{;�r�D�H�k��&���������~V���`���y� +~�$�x�qU>�A� ���Е�0����6�zr�7�xL[ӪLVH(qM��_}���ofob��^��B��|�JX�3>��%h.6"�����;� �i��Z3Q�{oY��,@�8��:A'� ��"� �K�ɉ�>v�,�,�v������o���?�#���^�,�9��Nӊ�N�າUV���l��s�--L�{�r��IkĽ 5�˵���� +PNY'�n#j�pj>��%���@�k�r�`�^���Q��n~s]�9�C<{�ۭSg��|��h��0��kJ��r�%��NLZ�@��l!� ����pJoo$��ދ��[(G��=������:�������C��:���i�c;���Hr�D+��Q���x��w�$9R�ѼYWf���e։4��u�t�Pj�v� + �2�K'��7�{H@���������ee1E��hĪ2�]��"�͑/+.��ufvr���mq��,$��QD|�r|�LQ�l��� n���J#,�nIf��69�oY^g��x^�A���᩺(. =v��uз���ڣ���t���@ӑʼn���e�����9V��z2L)�efkOK'�q�뎕�=3�%�؝������Pc��L8�VT��7������z��m���չ��ߞ��3 7#��"<���v����͢�p�5���O��R�G1{�#K03Y�v�D�����S y�tV�����']�z��І,���[Xhv�S��f���̦���� ���p`}y����m��Y| ZL�������4�`/��nX�����!.^i,єX>�Ƀ3�#���.��+���x%ts��58x{`���+ +�T㔍s�1e6�����%��R�u)���~,�l�֭��$��S�`!͍I� T��3�����Py�Q����"e0;v�D��ٱ�@݆�M����і��j�A/���y[�-&�;JўN~��ӟ�����@��y�FB���g!�L�瀓����#F��BQ!�(w��X���K�C������4Z��|'���R�5�dwaȣ����F�0櫀e�x��N,�d"�M(�7=��~�ԏl�h���F���8�5`�~%���M}a�X��:���L9��� ��x6Ϫ��@�2t�� �.b���MW�0��o���QPo�Q�i +���!�FC�렍��*H�!�E�t!Ʌ�����!���*�o���������A[U�01�(��S����uld��'Sn��@'n��)?��������CD9D�'X�����uyQ6������ +���u���S�7�|�!麖�g�U�Qߐf#����X���zu�j�\�yN@�����YB�K��TsI-e�]&�\ +�ck�R�d���}�I��U4� ��x{S��Y���Y��* +��`F ��0 Q*fN�27動��i��)��)��ͧ � `�=�k��kc��*A�%�/f���>r1zQ� @K�4�T�KYs7�;������?��7GHK+ҷvmb����p +sO:��\T�.K5y�zX�J��߭��ڻeY��D����}�8��g�nq���C�E��,�c���x螃7�;���ǐ��G�6�gטG��݀s�%Å��묍}�Ɨ�;��B�c5�1��%����F�Mk�F��u����r!c���5�6P5�d��5^:��d�y&�q�P�= �m3 +\m���2�+����O���{�B�Zn�������,��}q횆��I\�h�z���Hp�Q�[] {���<8Еl-o0�19mcc�l��>��SB�Ʀ�R�t�i�e�!9�$�.�.nL��+����닉o�Y��o���6�U�[n��S��];3��z���ц-w+�g��`''�Qx=N��i�wgo���� ����e�}�O�����c�?����F��M씐z����8,@4f�ۥ�U5���>�Jrq����_���R��eD8���(#`��*{�8��b�ղL�'PT�!A�<��*x@� ���d�S�$ )�w`4�ㆱ��|��l$Ɗ6�Aao�Sw��߀�)��ʜ�V:ܭ�I��<���ǞE�YvS ����P��T�"�r8͟�}?j��,�ھ72 ��S[ iF3�H ��1���t����"���o#Һ,��w�Bb�r��hJ��G]U�P�I�Հ�|.�$���݊!��Đ0��8��B�k+��$Ӝ���È/`���@�ߢX�����-.z���x����B[���$�Q������?�F���r*o�f���x@���a�� T�'�/ˡ��z�����-�㹉�)��1�/����n��C8q�Y.{Bc�?�LN3�a�����/�B�{!LT�����Ƽ��?4"�'�0��7��?\\�����endstream +endobj +3543 0 obj << +/Type /Page +/Contents 3544 0 R +/Resources 3542 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 3541 0 R >> endobj 3545 0 obj << -/D [3532 0 R /XYZ 228.316 507.701 null] +/D [3543 0 R /XYZ 71.731 729.265 null] +>> endobj +590 0 obj << +/D [3543 0 R /XYZ 308.397 708.149 null] >> endobj 3546 0 obj << -/D [3532 0 R /XYZ 71.731 492.593 null] +/D [3543 0 R /XYZ 71.731 698.007 null] >> endobj 3547 0 obj << -/D [3532 0 R /XYZ 71.731 477.649 null] +/D [3543 0 R /XYZ 366.772 688.025 null] >> endobj 3548 0 obj << -/D [3532 0 R /XYZ 351.57 468.149 null] +/D [3543 0 R /XYZ 71.731 667.935 null] >> endobj 3549 0 obj << -/D [3532 0 R /XYZ 71.731 416.941 null] +/D [3543 0 R /XYZ 386.497 644.189 null] >> endobj 3550 0 obj << -/D [3532 0 R /XYZ 154.754 403.99 null] +/D [3543 0 R /XYZ 71.731 624.1 null] >> endobj 3551 0 obj << -/D [3532 0 R /XYZ 102.167 391.038 null] ->> endobj -1555 0 obj << -/D [3532 0 R /XYZ 71.731 384.649 null] ->> endobj -594 0 obj << -/D [3532 0 R /XYZ 251.73 346.685 null] +/D [3543 0 R /XYZ 380.205 613.305 null] >> endobj 3552 0 obj << -/D [3532 0 R /XYZ 71.731 336.542 null] +/D [3543 0 R /XYZ 71.731 593.215 null] >> endobj 3553 0 obj << -/D [3532 0 R /XYZ 71.731 319.422 null] +/D [3543 0 R /XYZ 71.731 549.38 null] >> endobj 3554 0 obj << -/D [3532 0 R /XYZ 71.731 319.422 null] +/D [3543 0 R /XYZ 71.731 531.447 null] >> endobj 3555 0 obj << -/D [3532 0 R /XYZ 71.731 301.489 null] +/D [3543 0 R /XYZ 71.731 507.701 null] >> endobj 3556 0 obj << -/D [3532 0 R /XYZ 71.731 301.489 null] +/D [3543 0 R /XYZ 228.316 507.701 null] >> endobj 3557 0 obj << -/D [3532 0 R /XYZ 71.731 257.654 null] +/D [3543 0 R /XYZ 71.731 492.593 null] >> endobj 3558 0 obj << -/D [3532 0 R /XYZ 71.731 257.654 null] +/D [3543 0 R /XYZ 71.731 477.649 null] >> endobj 3559 0 obj << -/D [3532 0 R /XYZ 253.534 246.859 null] +/D [3543 0 R /XYZ 351.57 468.149 null] >> endobj 3560 0 obj << -/D [3532 0 R /XYZ 71.731 200.867 null] +/D [3543 0 R /XYZ 71.731 416.941 null] >> endobj 3561 0 obj << -/D [3532 0 R /XYZ 71.731 200.867 null] +/D [3543 0 R /XYZ 154.754 403.99 null] >> endobj 3562 0 obj << -/D [3532 0 R /XYZ 71.731 169.983 null] +/D [3543 0 R /XYZ 102.167 391.038 null] +>> endobj +1555 0 obj << +/D [3543 0 R /XYZ 71.731 384.649 null] +>> endobj +594 0 obj << +/D [3543 0 R /XYZ 251.73 346.685 null] >> endobj 3563 0 obj << -/D [3532 0 R /XYZ 71.731 169.983 null] +/D [3543 0 R /XYZ 71.731 336.542 null] >> endobj 3564 0 obj << -/D [3532 0 R /XYZ 439.225 159.188 null] +/D [3543 0 R /XYZ 71.731 319.422 null] >> endobj 3565 0 obj << -/D [3532 0 R /XYZ 191.147 146.236 null] +/D [3543 0 R /XYZ 71.731 319.422 null] >> endobj 3566 0 obj << -/D [3532 0 R /XYZ 307.056 146.236 null] +/D [3543 0 R /XYZ 71.731 301.489 null] >> endobj 3567 0 obj << -/D [3532 0 R /XYZ 71.731 133.285 null] +/D [3543 0 R /XYZ 71.731 301.489 null] >> endobj 3568 0 obj << -/D [3532 0 R /XYZ 71.731 126.147 null] +/D [3543 0 R /XYZ 71.731 257.654 null] >> endobj 3569 0 obj << -/D [3532 0 R /XYZ 71.731 126.147 null] +/D [3543 0 R /XYZ 71.731 257.654 null] >> endobj -3531 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F32 1139 0 R >> -/ProcSet [ /PDF /Text ] +3570 0 obj << +/D [3543 0 R /XYZ 253.534 246.859 null] +>> endobj +3571 0 obj << +/D [3543 0 R /XYZ 71.731 200.867 null] >> endobj -3573 0 obj << -/Length 2707 -/Filter /FlateDecode ->> -stream -xڍk�۸�{~�v�kl`���z8M���zm�ާ.p(�-�6=�����;/�ay��8�șἇ�|�wi�����.�^�wG���W���Ȗ�d���W�?E����%����n�^��ޥQ�eqx�T���pRg���&��U�����lS���G^x��X+S�j���?_��i�G��ˢ�2��,�ӑ;wI?#&���>�u�>��#�j8ƫ�A�pE5��x��:�W�lv�����r�4��ƛѵh��; �lm�sś^�[�>�z�0^}F2���������d&�}X�J����'��,��@� �Mz;ѓ*��u�7p�,u�s��#�$HWg�E��~�Un��}�k��ׂUՂN��0��~�Ȝt�=dl*��\�r#�R����� [i`�����t��tש��N���J�V��M� �f^D�����ꉯ���'r7�z>k���@wy -׳͙?�A�iA3� -NZ}nZ�~��3^���a�)6���c}�6s�N� -}\��J�V���M��]��h�Ԡƞ.�(��NM_���cѥ��W���v&�59���2�20���wb�?7u�^�f����@<�"aX8����(d�A6=��4�Q7�R�v��2V`S�/�Z7���O�>j�X9.�U�*�"��ZT'7`�t�N���PA�f���80��A������a��VG=�6�Q$1���pV�B��)��mg���x`H9�U����`qƃ���6������[cI� �i:'�O(��~�:6<߫�C��-Q�0���|h���D�$��cK=ÚB�Rp�B} �63<d@ +�?�b����!��<��J�m��V�V��P���ɟ#p���/��G��E����d�$�W���|j����^o�`���;^|Ɛ�P>�2Ǔe<{�xhz��<����̘���o~�_4�Eĭo�^2��0Ժ�fa�PL����d�k �(C�{�s����j�B��H2�E���]SiXuA�jZ� -��`�C�^�+��ߡr��F�JJ��e���I�D�]Ji�Ȏ[���ش_���D��c@��d��u����RX�@^��+���B(Z��t��4���SQcnEɒ�j���,��TX��w�tYt<#W�T�n$%��\(l�N��L�d'��J}�uͧ���`7��i��s�n7dL<�7h�VA!����}������Ƴѹ��5�n*�{K25����$:�!�`Ͳ_#�ƞ��P��;�ܨ��D��8d0�&X$_�쥳�Y2pK!��Z8*tg�5W}�����8�X �Rqd�Nr��:���u��D$�2�2�,�����m� -��x��_����?�~���'a၎W -��M�%R͟���$e�'��/����9>��B���H~I.<�<�����UlD\p�ʂeBjo -ڑԫ��X]�SH�R.K�lj�<����) --��6e���N�+�L�aWT"�����z<��8"C�ŊP'gX��N�7H}RSJ�W����gT�X�2�b�I!H#�8������s��2'�;K4��G�׆�'lM -�p�Ee�R݂�g��<�+j�8�w��cx���N�Uo0|)�V�G���C�P/�CJ˼*^HII��oM}�A� 2{9�w�lJ��J��V�2��,F�G��_�����;�i��:MiP&bS��q9o��n��,�I:�/�bq�r!3F�UCI�k(�y��2p��� �U�4g�F릓��7��%DRq�����q����-S1�Gph������� -�����_�:QY|�7�?�"�1�XW��~��,���B�"%�X.B�n���b���^=�\�g[��rf��fe>�.7\�5&�1,��c���b��>Z��0�DT�"h����{\����2 ���bk������ɢ��:�4�%W���+*H����Q�\�ʋ�z��X��1ii��)aiR,�����g|_�ou��� m�� � �k��b�Z�wI����*�� �����a�z%�FB�.�� כ�LNms��E��4,�z��ve ;/��,��=ޮ�5� -�[*�8� �Dj���I��1��sC|�~�i�{�H���8�Z;��@H�v�����"im}@�3iI�u�+I�U��+Z��ƢV�:%��fL�>u��C�t#]\�h(!��OX���ác���$��sޠ�=_u�P�S,��t®6Y� 99� �-��A��b���K��e�jH��N��8#�[9-,�����7����,��2d`��}_^���d|�D��hd�\>q=�0�O��.g�։UN� -KNP����������z�/7�W�%����~Dž2�=`��«��~��� ^$O����P 7iɴ����,+���"\��\��0��8� jkUN�,�Lsu�Uy�N=?ʮ�=��'Ֆ��yE�����h(�J*�/��8۸�l�B�_Ҿ�UNj��~��fa����ܓS1�$�Z���"��/�֭����=�$S�zg�����v<�'F+�w��}��7�~�}�� 34�i��~_��9�#wW�k/Ǽ�����ȏ�E��O���Ŝh�Lot�X�m��o�����ͼ����;�,�:�!b@���j�}��%��R���endstream -endobj 3572 0 obj << -/Type /Page -/Contents 3573 0 R -/Resources 3571 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 3570 0 R +/D [3543 0 R /XYZ 71.731 200.867 null] +>> endobj +3573 0 obj << +/D [3543 0 R /XYZ 71.731 169.983 null] >> endobj 3574 0 obj << -/D [3572 0 R /XYZ 71.731 729.265 null] +/D [3543 0 R /XYZ 71.731 169.983 null] >> endobj 3575 0 obj << -/D [3572 0 R /XYZ 71.731 688.254 null] +/D [3543 0 R /XYZ 439.225 159.188 null] >> endobj 3576 0 obj << -/D [3572 0 R /XYZ 71.731 688.254 null] +/D [3543 0 R /XYZ 191.147 146.236 null] >> endobj 3577 0 obj << -/D [3572 0 R /XYZ 71.731 657.37 null] +/D [3543 0 R /XYZ 307.056 146.236 null] >> endobj 3578 0 obj << -/D [3572 0 R /XYZ 71.731 657.37 null] +/D [3543 0 R /XYZ 71.731 133.285 null] >> endobj 3579 0 obj << -/D [3572 0 R /XYZ 71.731 587.631 null] +/D [3543 0 R /XYZ 71.731 126.147 null] >> endobj 3580 0 obj << -/D [3572 0 R /XYZ 71.731 587.631 null] +/D [3543 0 R /XYZ 71.731 126.147 null] >> endobj -3581 0 obj << -/D [3572 0 R /XYZ 210.674 576.837 null] ->> endobj -3582 0 obj << -/D [3572 0 R /XYZ 137.035 499.128 null] +3542 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F32 1139 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 3583 0 obj << -/D [3572 0 R /XYZ 71.731 487.726 null] +/Length 2707 +/Filter /FlateDecode +>> +stream +xڍk�۸�{~�v�kl`���z8M���zm�ާ.p(�-�6=�����;/�ay��8�șἇ�|�wi�����.�^�wG���W���Ȗ�d���W�?E����%����n�^��ޥQ�eqx�T���pRg���&��U�����lS���G^x��X+S�j���?_��i�G��ˢ�2��,�ӑ;wI?#&���>�u�>��#�j8ƫ�A�pE5��x��:�W�lv�����r�4��ƛѵh��; �lm�sś^�[�>�z�0^}F2���������d&�}X�J����'��,��@� �Mz;ѓ*��u�7p�,u�s��#�$HWg�E��~�Un��}�k��ׂUՂN��0��~�Ȝt�=dl*��\�r#�R����� [i`�����t��tש��N���J�V��M� �f^D�����ꉯ���'r7�z>k���@wy -׳͙?�A�iA3� +NZ}nZ�~��3^���a�)6���c}�6s�N� +}\��J�V���M��]��h�Ԡƞ.�(��NM_���cѥ��W���v&�59���2�20���wb�?7u�^�f����@<�"aX8����(d�A6=��4�Q7�R�v��2V`S�/�Z7���O�>j�X9.�U�*�"��ZT'7`�t�N���PA�f���80��A������a��VG=�6�Q$1���pV�B��)��mg���x`H9�U����`qƃ���6������[cI� �i:'�O(��~�:6<߫�C��-Q�0���|h���D�$��cK=ÚB�Rp�B} �63<d@ +�?�b����!��<��J�m��V�V��P���ɟ#p���/��G��E����d�$�W���|j����^o�`���;^|Ɛ�P>�2Ǔe<{�xhz��<����̘���o~�_4�Eĭo�^2��0Ժ�fa�PL����d�k �(C�{�s����j�B��H2�E���]SiXuA�jZ� +��`�C�^�+��ߡr��F�JJ��e���I�D�]Ji�Ȏ[���ش_���D��c@��d��u����RX�@^��+���B(Z��t��4���SQcnEɒ�j���,��TX��w�tYt<#W�T�n$%��\(l�N��L�d'��J}�uͧ���`7��i��s�n7dL<�7h�VA!����}������Ƴѹ��5�n*�{K25����$:�!�`Ͳ_#�ƞ��P��;�ܨ��D��8d0�&X$_�쥳�Y2pK!��Z8*tg�5W}�����8�X �Rqd�Nr��:���u��D$�2�2�,�����m� +��x��_����?�~���'a၎W +��M�%R͟���$e�'��/����9>��B���H~I.<�<�����UlD\p�ʂeBjo +ڑԫ��X]�SH�R.K�lj�<����) +-��6e���N�+�L�aWT"�����z<��8"C�ŊP'gX��N�7H}RSJ�W����gT�X�2�b�I!H#�8������s��2'�;K4��G�׆�'lM +�p�Ee�R݂�g��<�+j�8�w��cx���N�Uo0|)�V�G���C�P/�CJ˼*^HII��oM}�A� 2{9�w�lJ��J��V�2��,F�G��_�����;�i��:MiP&bS��q9o��n��,�I:�/�bq�r!3F�UCI�k(�y��2p��� �U�4g�F릓��7��%DRq�����q����-S1�Gph������� +�����_�:QY|�7�?�"�1�XW��~��,���B�"%�X.B�n���b���^=�\�g[��rf��fe>�.7\�5&�1,��c���b��>Z��0�DT�"h����{\����2 ���bk������ɢ��:�4�%W���+*H����Q�\�ʋ�z��X��1ii��)aiR,�����g|_�ou��� m�� � �k��b�Z�wI����*�� �����a�z%�FB�.�� כ�LNms��E��4,�z��ve ;/��,��=ޮ�5� +�[*�8� �Dj���I��1��sC|�~�i�{�H���8�Z;��@H�v�����"im}@�3iI�u�+I�U��+Z��ƢV�:%��fL�>u��C�t#]\�h(!��OX���ác���$��sޠ�=_u�P�S,��t®6Y� 99� �-��A��b���K��e�jH��N��8#�[9-,�����7����,��2d`��}_^���d|�D��hd�\>q=�0�O��.g�։UN� +KNP����������z�/7�W�%����~Dž2�=`��«��~��� ^$O����P 7iɴ����,+���"\��\��0��8� jkUN�,�Lsu�Uy�N=?ʮ�=��'Ֆ��yE�����h(�J*�/��8۸�l�B�_Ҿ�UNj��~��fa����ܓS1�$�Z���"��/�֭����=�$S�zg�����v<�'F+�w��}��7�~�}�� 34�i��~_��9�#wW�k/Ǽ�����ȏ�E��O���Ŝh�Lot�X�m��o�����ͼ����;�,�:�!b@���j��O����S��endstream +endobj +3582 0 obj << +/Type /Page +/Contents 3583 0 R +/Resources 3581 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 3541 0 R >> endobj 3584 0 obj << -/D [3572 0 R /XYZ 71.731 449.514 null] +/D [3582 0 R /XYZ 71.731 729.265 null] >> endobj 3585 0 obj << -/D [3572 0 R /XYZ 258.006 436.663 null] +/D [3582 0 R /XYZ 71.731 688.254 null] >> endobj 3586 0 obj << -/D [3572 0 R /XYZ 394.451 410.76 null] +/D [3582 0 R /XYZ 71.731 688.254 null] >> endobj 3587 0 obj << -/D [3572 0 R /XYZ 71.731 397.808 null] +/D [3582 0 R /XYZ 71.731 657.37 null] >> endobj 3588 0 obj << -/D [3572 0 R /XYZ 71.731 391.419 null] +/D [3582 0 R /XYZ 71.731 657.37 null] >> endobj 3589 0 obj << -/D [3572 0 R /XYZ 288.129 379.875 null] +/D [3582 0 R /XYZ 71.731 587.631 null] >> endobj 3590 0 obj << -/D [3572 0 R /XYZ 111.088 366.924 null] +/D [3582 0 R /XYZ 71.731 587.631 null] >> endobj 3591 0 obj << -/D [3572 0 R /XYZ 325.619 366.924 null] +/D [3582 0 R /XYZ 210.674 576.837 null] >> endobj 3592 0 obj << -/D [3572 0 R /XYZ 71.731 346.834 null] +/D [3582 0 R /XYZ 137.035 499.128 null] >> endobj 3593 0 obj << -/D [3572 0 R /XYZ 263.437 336.04 null] +/D [3582 0 R /XYZ 71.731 487.726 null] >> endobj 3594 0 obj << -/D [3572 0 R /XYZ 71.731 323.088 null] +/D [3582 0 R /XYZ 71.731 449.514 null] >> endobj 3595 0 obj << -/D [3572 0 R /XYZ 100.413 310.137 null] +/D [3582 0 R /XYZ 258.006 436.663 null] >> endobj 3596 0 obj << -/D [3572 0 R /XYZ 71.731 290.047 null] +/D [3582 0 R /XYZ 394.451 410.76 null] >> endobj 3597 0 obj << -/D [3572 0 R /XYZ 71.731 267.133 null] +/D [3582 0 R /XYZ 71.731 397.808 null] >> endobj 3598 0 obj << -/D [3572 0 R /XYZ 71.731 222.6 null] +/D [3582 0 R /XYZ 71.731 391.419 null] >> endobj 3599 0 obj << -/D [3572 0 R /XYZ 71.731 178.067 null] +/D [3582 0 R /XYZ 288.129 379.875 null] +>> endobj +3600 0 obj << +/D [3582 0 R /XYZ 111.088 366.924 null] +>> endobj +3601 0 obj << +/D [3582 0 R /XYZ 325.619 366.924 null] +>> endobj +3602 0 obj << +/D [3582 0 R /XYZ 71.731 346.834 null] +>> endobj +3603 0 obj << +/D [3582 0 R /XYZ 263.437 336.04 null] +>> endobj +3604 0 obj << +/D [3582 0 R /XYZ 71.731 323.088 null] +>> endobj +3605 0 obj << +/D [3582 0 R /XYZ 100.413 310.137 null] +>> endobj +3606 0 obj << +/D [3582 0 R /XYZ 71.731 290.047 null] +>> endobj +3607 0 obj << +/D [3582 0 R /XYZ 71.731 267.133 null] +>> endobj +3608 0 obj << +/D [3582 0 R /XYZ 71.731 222.6 null] +>> endobj +3609 0 obj << +/D [3582 0 R /XYZ 71.731 178.067 null] >> endobj 1556 0 obj << -/D [3572 0 R /XYZ 71.731 138.516 null] +/D [3582 0 R /XYZ 71.731 138.516 null] >> endobj -3571 0 obj << +3581 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3602 0 obj << +3612 0 obj << /Length 3030 /Filter /FlateDecode >> @@ -12981,113 +13041,113 @@ xڝk �m̆����C��my8�t(1�!8:����H����ĩ`]$������C� �V�:����u��Fhr�뒻����j�[qSA��~h�]��Q�v3-x �(�{�C��X�0��Ґ�g6���Ty����)eէ=���-�WKG����ɞ n�ܚГJ��z��6�<�! �s���T��>/Vn �Ƕd8NT[k6r�CC��K# �s��o7L�ݪ1��!�aR�PY/��c�M��"�8��z�m�٠Ml.<Eߝlv͇��#(���Gθ����e!FV�����Tkk���'K������������7��v��|q������߾�E�������������7o�����b�܈�ңm4���Nmx,�{��*"��O����s�#�,��~��$���`�o��8i4�<a�71�(�7"��5rEP�\��n"Q�����ts?m"��P�v�Y����#�U@��P���B� ��q���%�'�sS��f<�[�<]3���nl����[*��,��4�˧rd�����E<Y3p�1�]db8�辒,sl�/��1�L1Ъ�e���ٜL[vC:o������,��ضR���;!klú͛��-�ۗ-��|*�a�\8��S��� �N��V�r5 ���ʚӯ1 ��z�����_�;��*�m?�����Tz�����&oG ���kɿ�i���\?!o�x갍�$g�Y�� ��L�G� !�Y.�fC -�x#"3��fm�3��.��/�#���ȇ�Է��O���^�<鿥Q�endstream +�x#"3��fm�3��.��/�#����O`n~�����Q�Sk�=endstream endobj -3601 0 obj << +3611 0 obj << /Type /Page -/Contents 3602 0 R -/Resources 3600 0 R +/Contents 3612 0 R +/Resources 3610 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3570 0 R +/Parent 3541 0 R >> endobj -3603 0 obj << -/D [3601 0 R /XYZ 71.731 729.265 null] +3613 0 obj << +/D [3611 0 R /XYZ 71.731 729.265 null] >> endobj 598 0 obj << -/D [3601 0 R /XYZ 461.484 707.841 null] ->> endobj -3604 0 obj << -/D [3601 0 R /XYZ 71.731 697.476 null] ->> endobj -3605 0 obj << -/D [3601 0 R /XYZ 71.731 661.813 null] ->> endobj -3606 0 obj << -/D [3601 0 R /XYZ 71.731 643.781 null] ->> endobj -3607 0 obj << -/D [3601 0 R /XYZ 335.135 630.929 null] ->> endobj -3608 0 obj << -/D [3601 0 R /XYZ 117.651 617.978 null] ->> endobj -3609 0 obj << -/D [3601 0 R /XYZ 71.731 605.026 null] ->> endobj -3610 0 obj << -/D [3601 0 R /XYZ 294.096 605.026 null] ->> endobj -1557 0 obj << -/D [3601 0 R /XYZ 71.731 587.926 null] ->> endobj -602 0 obj << -/D [3601 0 R /XYZ 237.169 544.828 null] ->> endobj -3611 0 obj << -/D [3601 0 R /XYZ 71.731 541.265 null] ->> endobj -3612 0 obj << -/D [3601 0 R /XYZ 118.555 499.074 null] ->> endobj -3613 0 obj << -/D [3601 0 R /XYZ 526.195 490.61 null] +/D [3611 0 R /XYZ 461.484 707.841 null] >> endobj 3614 0 obj << -/D [3601 0 R /XYZ 71.731 457.033 null] +/D [3611 0 R /XYZ 71.731 697.476 null] >> endobj 3615 0 obj << -/D [3601 0 R /XYZ 71.731 393.392 null] +/D [3611 0 R /XYZ 71.731 661.813 null] >> endobj 3616 0 obj << -/D [3601 0 R /XYZ 71.731 321.596 null] +/D [3611 0 R /XYZ 71.731 643.781 null] >> endobj 3617 0 obj << -/D [3601 0 R /XYZ 527.223 297.85 null] +/D [3611 0 R /XYZ 335.135 630.929 null] >> endobj 3618 0 obj << -/D [3601 0 R /XYZ 147.048 284.899 null] +/D [3611 0 R /XYZ 117.651 617.978 null] >> endobj 3619 0 obj << -/D [3601 0 R /XYZ 225.125 284.899 null] +/D [3611 0 R /XYZ 71.731 605.026 null] >> endobj 3620 0 obj << -/D [3601 0 R /XYZ 71.731 277.761 null] +/D [3611 0 R /XYZ 294.096 605.026 null] +>> endobj +1557 0 obj << +/D [3611 0 R /XYZ 71.731 587.926 null] +>> endobj +602 0 obj << +/D [3611 0 R /XYZ 237.169 544.828 null] >> endobj 3621 0 obj << -/D [3601 0 R /XYZ 179.885 254.015 null] +/D [3611 0 R /XYZ 71.731 541.265 null] >> endobj 3622 0 obj << -/D [3601 0 R /XYZ 415.118 254.015 null] +/D [3611 0 R /XYZ 118.555 499.074 null] >> endobj 3623 0 obj << -/D [3601 0 R /XYZ 138.304 241.063 null] +/D [3611 0 R /XYZ 526.195 490.61 null] >> endobj 3624 0 obj << -/D [3601 0 R /XYZ 71.731 220.974 null] +/D [3611 0 R /XYZ 71.731 457.033 null] >> endobj 3625 0 obj << -/D [3601 0 R /XYZ 71.731 220.974 null] +/D [3611 0 R /XYZ 71.731 393.392 null] >> endobj 3626 0 obj << -/D [3601 0 R /XYZ 71.731 203.79 null] +/D [3611 0 R /XYZ 71.731 321.596 null] >> endobj 3627 0 obj << -/D [3601 0 R /XYZ 440.089 192.246 null] +/D [3611 0 R /XYZ 527.223 297.85 null] >> endobj 3628 0 obj << -/D [3601 0 R /XYZ 71.731 161.362 null] +/D [3611 0 R /XYZ 147.048 284.899 null] >> endobj 3629 0 obj << -/D [3601 0 R /XYZ 71.731 161.362 null] +/D [3611 0 R /XYZ 225.125 284.899 null] >> endobj 3630 0 obj << -/D [3601 0 R /XYZ 71.731 111.888 null] +/D [3611 0 R /XYZ 71.731 277.761 null] >> endobj -3600 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F32 1139 0 R >> -/ProcSet [ /PDF /Text ] +3631 0 obj << +/D [3611 0 R /XYZ 179.885 254.015 null] +>> endobj +3632 0 obj << +/D [3611 0 R /XYZ 415.118 254.015 null] >> endobj 3633 0 obj << +/D [3611 0 R /XYZ 138.304 241.063 null] +>> endobj +3634 0 obj << +/D [3611 0 R /XYZ 71.731 220.974 null] +>> endobj +3635 0 obj << +/D [3611 0 R /XYZ 71.731 220.974 null] +>> endobj +3636 0 obj << +/D [3611 0 R /XYZ 71.731 203.79 null] +>> endobj +3637 0 obj << +/D [3611 0 R /XYZ 440.089 192.246 null] +>> endobj +3638 0 obj << +/D [3611 0 R /XYZ 71.731 161.362 null] +>> endobj +3639 0 obj << +/D [3611 0 R /XYZ 71.731 161.362 null] +>> endobj +3640 0 obj << +/D [3611 0 R /XYZ 71.731 111.888 null] +>> endobj +3610 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F32 1139 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3643 0 obj << /Length 2776 /Filter /FlateDecode >> @@ -13103,125 +13163,125 @@ xڕm �8�ǜ0ox��9;���jd����_�]��2��{l9��cC��!�����m��>�Fbg�s��QNh��c���p���M��a]���S���!+O��% �|�%1=�Q'-�3/K��u>�B/��q���:O��$�D���A����z~�A�YG.�K���Q�Ϧ >�Xu�4R���9*B��Z,/�r #�:Zhj3%Џ�^���`�rP�~m���v�QA��!��:O�+E� �9�O�@A�(��+���c�+�Y���&4\_���_�4v]C�>Z�'0�\D���_ף�5��f� \9P�y�:�0��/��#Y;]WBK�D��Ts�Cc4�J��Q�Q�,�ツ:4�����3��@q!�] ��XM /�yɔ��xo �_�:S�$e�=���c�=҅������.L8��wJ ����19%Q�5�p�!,|w�/����/�� �l��~�KR����s���L.��'�`��\��tc���n�iۄ����Ue�ȓ����}��n9h��J�?�;4�T(���¾��¯ԑ��^J2q�F����^W� � j%���q�o� �:�F�u���Xizn��2$+Q�i�\��k�jߜ���E�8��{R��?آu�c�T<�讫F�����%��g�����&*~.%�S�U% -���ۄLd]����/�9�n|�z��"(���=1q�%�V����J~|�э-�����q�NA��{^�'8O�њ�Țl���2V�� �B���0��.��������z/Mm��(T�4��QV���\�(%�����UeS��k���N�(q����PZs��q2�y�w�a��u4Y�s0�[�)w��h����_��y�z���xp������g���/=�M*#O���Ba7�D,�`���lp�R�}��i�<j�(��ɍ���S������r�h�p�I���wE�� �J���7?�S_�_��]�7�R�67�t��n��������#�:$��ې�O�S�Ш& ���@����m�̈́�Z�� ����v��1L�}�z�4���-p������w;�����1�V�\P�8��?����%��0endstream +���ۄLd]����/�9�n|�z��"(���=1q�%�V����J~|�э-�����q�NA��{^�'8O�њ�Țl���2V�� �B���0��.��������z/Mm��(T�4��QV���\�(%�����UeS��k���N�(q����PZs��q2�y�w�a��u4Y�s0�[�)w��h����_��y�z���xp������g���/=�M*#O���Ba7�D,�`���lp�R�}��i�<j�(��ɍ���S������r�h�p�I���wE�� �J���7?�S_�_��]�7�R�67�t��n��������#�:$��ې�O�S�Ш& ���@����m�̈́�Z�� ����v��1L�}�z�4���-p������w;�����1�V�\P�8��?����&/�3endstream endobj -3632 0 obj << +3642 0 obj << /Type /Page -/Contents 3633 0 R -/Resources 3631 0 R +/Contents 3643 0 R +/Resources 3641 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3570 0 R ->> endobj -3634 0 obj << -/D [3632 0 R /XYZ 71.731 729.265 null] ->> endobj -3635 0 obj << -/D [3632 0 R /XYZ 71.731 695.392 null] ->> endobj -3636 0 obj << -/D [3632 0 R /XYZ 71.731 689.003 null] ->> endobj -3637 0 obj << -/D [3632 0 R /XYZ 71.731 618.516 null] ->> endobj -3638 0 obj << -/D [3632 0 R /XYZ 71.731 587.631 null] ->> endobj -3639 0 obj << -/D [3632 0 R /XYZ 71.731 556.747 null] ->> endobj -3640 0 obj << -/D [3632 0 R /XYZ 235.228 533.001 null] ->> endobj -3641 0 obj << -/D [3632 0 R /XYZ 71.731 512.912 null] ->> endobj -3642 0 obj << -/D [3632 0 R /XYZ 282.395 502.117 null] ->> endobj -3643 0 obj << -/D [3632 0 R /XYZ 500.324 502.117 null] +/Parent 3541 0 R >> endobj 3644 0 obj << -/D [3632 0 R /XYZ 300.306 489.166 null] +/D [3642 0 R /XYZ 71.731 729.265 null] >> endobj 3645 0 obj << -/D [3632 0 R /XYZ 71.731 476.214 null] +/D [3642 0 R /XYZ 71.731 695.392 null] >> endobj 3646 0 obj << -/D [3632 0 R /XYZ 71.731 453.201 null] +/D [3642 0 R /XYZ 71.731 689.003 null] >> endobj 3647 0 obj << -/D [3632 0 R /XYZ 71.731 384.868 null] +/D [3642 0 R /XYZ 71.731 618.516 null] >> endobj 3648 0 obj << -/D [3632 0 R /XYZ 246.016 372.105 null] +/D [3642 0 R /XYZ 71.731 587.631 null] >> endobj 3649 0 obj << -/D [3632 0 R /XYZ 71.731 364.966 null] +/D [3642 0 R /XYZ 71.731 556.747 null] >> endobj 3650 0 obj << -/D [3632 0 R /XYZ 178.27 354.172 null] +/D [3642 0 R /XYZ 235.228 533.001 null] >> endobj 3651 0 obj << -/D [3632 0 R /XYZ 71.731 342.052 null] +/D [3642 0 R /XYZ 71.731 512.912 null] >> endobj 3652 0 obj << -/D [3632 0 R /XYZ 71.731 321.183 null] +/D [3642 0 R /XYZ 282.395 502.117 null] >> endobj 3653 0 obj << -/D [3632 0 R /XYZ 462.665 309.639 null] +/D [3642 0 R /XYZ 500.324 502.117 null] >> endobj 3654 0 obj << -/D [3632 0 R /XYZ 71.731 289.549 null] +/D [3642 0 R /XYZ 300.306 489.166 null] >> endobj 3655 0 obj << -/D [3632 0 R /XYZ 71.731 278.655 null] +/D [3642 0 R /XYZ 71.731 476.214 null] >> endobj 3656 0 obj << -/D [3632 0 R /XYZ 71.731 273.674 null] +/D [3642 0 R /XYZ 71.731 453.201 null] >> endobj 3657 0 obj << -/D [3632 0 R /XYZ 81.694 250.859 null] +/D [3642 0 R /XYZ 71.731 384.868 null] >> endobj 3658 0 obj << -/D [3632 0 R /XYZ 81.694 237.908 null] +/D [3642 0 R /XYZ 246.016 372.105 null] >> endobj 3659 0 obj << -/D [3632 0 R /XYZ 71.731 235.751 null] +/D [3642 0 R /XYZ 71.731 364.966 null] >> endobj 3660 0 obj << -/D [3632 0 R /XYZ 81.694 219.975 null] +/D [3642 0 R /XYZ 178.27 354.172 null] >> endobj 3661 0 obj << -/D [3632 0 R /XYZ 344.309 207.024 null] +/D [3642 0 R /XYZ 71.731 342.052 null] >> endobj 3662 0 obj << -/D [3632 0 R /XYZ 140.643 194.072 null] +/D [3642 0 R /XYZ 71.731 321.183 null] >> endobj 3663 0 obj << -/D [3632 0 R /XYZ 270.568 194.072 null] +/D [3642 0 R /XYZ 462.665 309.639 null] >> endobj 3664 0 obj << -/D [3632 0 R /XYZ 333.642 194.072 null] +/D [3642 0 R /XYZ 71.731 289.549 null] >> endobj 3665 0 obj << -/D [3632 0 R /XYZ 71.731 173.983 null] +/D [3642 0 R /XYZ 71.731 278.655 null] >> endobj 3666 0 obj << -/D [3632 0 R /XYZ 309.019 163.188 null] +/D [3642 0 R /XYZ 71.731 273.674 null] >> endobj 3667 0 obj << -/D [3632 0 R /XYZ 179.902 150.237 null] +/D [3642 0 R /XYZ 81.694 250.859 null] >> endobj 3668 0 obj << -/D [3632 0 R /XYZ 494.944 150.237 null] +/D [3642 0 R /XYZ 81.694 237.908 null] >> endobj -3631 0 obj << +3669 0 obj << +/D [3642 0 R /XYZ 71.731 235.751 null] +>> endobj +3670 0 obj << +/D [3642 0 R /XYZ 81.694 219.975 null] +>> endobj +3671 0 obj << +/D [3642 0 R /XYZ 344.309 207.024 null] +>> endobj +3672 0 obj << +/D [3642 0 R /XYZ 140.643 194.072 null] +>> endobj +3673 0 obj << +/D [3642 0 R /XYZ 270.568 194.072 null] +>> endobj +3674 0 obj << +/D [3642 0 R /XYZ 333.642 194.072 null] +>> endobj +3675 0 obj << +/D [3642 0 R /XYZ 71.731 173.983 null] +>> endobj +3676 0 obj << +/D [3642 0 R /XYZ 309.019 163.188 null] +>> endobj +3677 0 obj << +/D [3642 0 R /XYZ 179.902 150.237 null] +>> endobj +3678 0 obj << +/D [3642 0 R /XYZ 494.944 150.237 null] +>> endobj +3641 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3671 0 obj << +3681 0 obj << /Length 2832 /Filter /FlateDecode >> @@ -13236,86 +13296,86 @@ uv y��`��Z����#��R���,�T�´����F�?B�Fi�~mtS��|���*FV�l��(b��T�*���"z��oz\+qG���u[����� �2Jx�/�yĶ`4I��c�,���y�p���t�9ܥJPy�F�5l����t���3I�V<9��9�˰<����I�ގ9��WL�pNF/Y����y:U�$U���ѩ���~8���bP���q6�ě�9���4x��������t+��Tqum���RQLm��6��<<����3�^A���D'n�ȧ�Q!9X`<�Cߏq&[�����AN�}���<W���J3����+7��2�}�G0Pwv̀��ѡ>��O ਓN�7��\�މ3&ڑE�<�a�F���`�6�hKx���Z��q3!�FJ������S�z��8���l�����`�% ^�N�y(}HBEi��ҳ���0��=��i�Ao��ݷ�35C�'�~EnJ��<!��C'!��I��i(�ZƉ�����/��b|3H/����~o(:J�M盿��i��"��a���~N���_� ۏI�L��T��`K9��,|�[NHDZ�cK�o<}�-P�4���f���U�Z���n�Z.���9�|��NKa9��C�i��vW��4�M�ˬ����hl�m�n�u�Fd\�az`��Q%�G�J�D&Ɩ1�����̊��� E�fA�.�v�y�nNj��Zz5��SOK�j^N���֘d{�, ���"�T����T�i��)�1��n�<=6Xq&�+ �i�t�T-$�!gV�N8 -��kS5<��ӆ� �����s�/;n�<��|}�3�3��Q�6��s�Jl����N���Io��i���NS=r"{�'��KH�������,)���Pg�x��˫�����endstream +��kS5<��ӆ� �����s�/;n�<��|}�3�3��Q�6��s�Jl����N���Io��i���NS=r"{�'��KH�������,)�(�Pc�|���˛���yendstream endobj -3670 0 obj << +3680 0 obj << /Type /Page -/Contents 3671 0 R -/Resources 3669 0 R +/Contents 3681 0 R +/Resources 3679 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3570 0 R +/Parent 3541 0 R >> endobj -3672 0 obj << -/D [3670 0 R /XYZ 71.731 729.265 null] +3682 0 obj << +/D [3680 0 R /XYZ 71.731 729.265 null] >> endobj -3673 0 obj << -/D [3670 0 R /XYZ 71.731 741.22 null] +3683 0 obj << +/D [3680 0 R /XYZ 71.731 741.22 null] >> endobj -3674 0 obj << -/D [3670 0 R /XYZ 71.731 718.306 null] +3684 0 obj << +/D [3680 0 R /XYZ 71.731 718.306 null] >> endobj -3675 0 obj << -/D [3670 0 R /XYZ 76.712 664.508 null] +3685 0 obj << +/D [3680 0 R /XYZ 76.712 664.508 null] >> endobj -3676 0 obj << -/D [3670 0 R /XYZ 81.694 646.575 null] +3686 0 obj << +/D [3680 0 R /XYZ 81.694 646.575 null] >> endobj -3677 0 obj << -/D [3670 0 R /XYZ 198.595 633.624 null] +3687 0 obj << +/D [3680 0 R /XYZ 198.595 633.624 null] >> endobj -3678 0 obj << -/D [3670 0 R /XYZ 95.463 620.672 null] +3688 0 obj << +/D [3680 0 R /XYZ 95.463 620.672 null] >> endobj -3679 0 obj << -/D [3670 0 R /XYZ 71.731 600.583 null] +3689 0 obj << +/D [3680 0 R /XYZ 71.731 600.583 null] >> endobj 1558 0 obj << -/D [3670 0 R /XYZ 71.731 540.971 null] +/D [3680 0 R /XYZ 71.731 540.971 null] >> endobj 606 0 obj << -/D [3670 0 R /XYZ 402.85 495.717 null] +/D [3680 0 R /XYZ 402.85 495.717 null] >> endobj -3680 0 obj << -/D [3670 0 R /XYZ 71.731 491.887 null] +3690 0 obj << +/D [3680 0 R /XYZ 71.731 491.887 null] >> endobj -3681 0 obj << -/D [3670 0 R /XYZ 118.555 449.696 null] +3691 0 obj << +/D [3680 0 R /XYZ 118.555 449.696 null] >> endobj -3682 0 obj << -/D [3670 0 R /XYZ 71.731 395.999 null] +3692 0 obj << +/D [3680 0 R /XYZ 71.731 395.999 null] >> endobj -3683 0 obj << -/D [3670 0 R /XYZ 71.731 345.309 null] +3693 0 obj << +/D [3680 0 R /XYZ 71.731 345.309 null] >> endobj -3684 0 obj << -/D [3670 0 R /XYZ 395.22 319.506 null] +3694 0 obj << +/D [3680 0 R /XYZ 395.22 319.506 null] >> endobj -3685 0 obj << -/D [3670 0 R /XYZ 108.148 306.555 null] +3695 0 obj << +/D [3680 0 R /XYZ 108.148 306.555 null] >> endobj -3686 0 obj << -/D [3670 0 R /XYZ 441.752 306.555 null] +3696 0 obj << +/D [3680 0 R /XYZ 441.752 306.555 null] >> endobj -3687 0 obj << -/D [3670 0 R /XYZ 71.731 286.465 null] +3697 0 obj << +/D [3680 0 R /XYZ 71.731 286.465 null] >> endobj -3688 0 obj << -/D [3670 0 R /XYZ 403.654 262.719 null] +3698 0 obj << +/D [3680 0 R /XYZ 403.654 262.719 null] >> endobj -3689 0 obj << -/D [3670 0 R /XYZ 71.731 237.648 null] +3699 0 obj << +/D [3680 0 R /XYZ 71.731 237.648 null] >> endobj -3690 0 obj << -/D [3670 0 R /XYZ 71.731 163.128 null] +3700 0 obj << +/D [3680 0 R /XYZ 71.731 163.128 null] >> endobj -3691 0 obj << -/D [3670 0 R /XYZ 477.684 139.382 null] +3701 0 obj << +/D [3680 0 R /XYZ 477.684 139.382 null] >> endobj -3669 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1925 0 R >> +3679 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3694 0 obj << +3704 0 obj << /Length 2133 /Filter /FlateDecode >> @@ -13331,81 +13391,81 @@ xڭXm \��� ��e.O���ߙ�k�;x��*�z^��{������� 9dB�ڇ��dNۺ��W'���M�E���\��@Fx<�w��܃fF"��}?�/7����i5�W_��ޛCۙj�9�j� ��C�ҙ�w��t�tla�� mlK�����U {.�^:��<��nڂ����R �q;���� Qa d:\�À�!�$�QP�i���;̟�����S����vl���#'�1����m��!=e��u�s3�B,R���bGɆ�".����)3��-�MC3M�P�!�y"����3�7uIs<Q��&��q���3,�G1\ƴ�&M�HJ@��mXe/hu�m� �A���m��u��<�P���MLvqx1�AAWg6{����zBA5B�H��@�#U�A��:Ɵ4*������Wb����q:x�h�?Ŝ�� u�N��k�sz���|��x�P1�T�^� =K���f��$A�ƘrW�Y�� l�I�{�s��;���#b?y����[����b�,��b�� -�`���C��N5���endstream +�`�i��_V����J�endstream endobj -3693 0 obj << +3703 0 obj << /Type /Page -/Contents 3694 0 R -/Resources 3692 0 R +/Contents 3704 0 R +/Resources 3702 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3570 0 R +/Parent 3722 0 R >> endobj -3695 0 obj << -/D [3693 0 R /XYZ 71.731 729.265 null] +3705 0 obj << +/D [3703 0 R /XYZ 71.731 729.265 null] >> endobj 1560 0 obj << -/D [3693 0 R /XYZ 71.731 741.22 null] +/D [3703 0 R /XYZ 71.731 741.22 null] >> endobj -3696 0 obj << -/D [3693 0 R /XYZ 71.731 718.306 null] +3706 0 obj << +/D [3703 0 R /XYZ 71.731 718.306 null] >> endobj -3697 0 obj << -/D [3693 0 R /XYZ 71.731 536.224 null] +3707 0 obj << +/D [3703 0 R /XYZ 71.731 536.224 null] >> endobj -3698 0 obj << -/D [3693 0 R /XYZ 71.731 513.31 null] +3708 0 obj << +/D [3703 0 R /XYZ 71.731 513.31 null] >> endobj -3699 0 obj << -/D [3693 0 R /XYZ 71.731 360.882 null] +3709 0 obj << +/D [3703 0 R /XYZ 71.731 360.882 null] >> endobj -3700 0 obj << -/D [3693 0 R /XYZ 118.555 322.318 null] +3710 0 obj << +/D [3703 0 R /XYZ 118.555 322.318 null] >> endobj -3701 0 obj << -/D [3693 0 R /XYZ 211.992 313.853 null] +3711 0 obj << +/D [3703 0 R /XYZ 211.992 313.853 null] >> endobj -3702 0 obj << -/D [3693 0 R /XYZ 71.731 268.728 null] +3712 0 obj << +/D [3703 0 R /XYZ 71.731 268.728 null] >> endobj -3703 0 obj << -/D [3693 0 R /XYZ 242.937 261.974 null] +3713 0 obj << +/D [3703 0 R /XYZ 242.937 261.974 null] >> endobj -3704 0 obj << -/D [3693 0 R /XYZ 410.176 261.974 null] +3714 0 obj << +/D [3703 0 R /XYZ 410.176 261.974 null] >> endobj 1559 0 obj << -/D [3693 0 R /XYZ 71.731 241.884 null] +/D [3703 0 R /XYZ 71.731 241.884 null] >> endobj 610 0 obj << -/D [3693 0 R /XYZ 369.417 198.787 null] +/D [3703 0 R /XYZ 369.417 198.787 null] >> endobj -3705 0 obj << -/D [3693 0 R /XYZ 71.731 186.349 null] +3715 0 obj << +/D [3703 0 R /XYZ 71.731 186.349 null] >> endobj -3706 0 obj << -/D [3693 0 R /XYZ 413.928 177.227 null] +3716 0 obj << +/D [3703 0 R /XYZ 413.928 177.227 null] >> endobj -3707 0 obj << -/D [3693 0 R /XYZ 86.396 164.276 null] +3717 0 obj << +/D [3703 0 R /XYZ 86.396 164.276 null] >> endobj -3708 0 obj << -/D [3693 0 R /XYZ 71.731 157.138 null] +3718 0 obj << +/D [3703 0 R /XYZ 71.731 157.138 null] >> endobj -3709 0 obj << -/D [3693 0 R /XYZ 492.055 146.343 null] +3719 0 obj << +/D [3703 0 R /XYZ 492.055 146.343 null] >> endobj -3710 0 obj << -/D [3693 0 R /XYZ 119.931 133.392 null] +3720 0 obj << +/D [3703 0 R /XYZ 119.931 133.392 null] >> endobj -3711 0 obj << -/D [3693 0 R /XYZ 525.26 133.392 null] +3721 0 obj << +/D [3703 0 R /XYZ 525.26 133.392 null] >> endobj -3692 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1925 0 R /F32 1139 0 R >> +3702 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R /F32 1139 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3714 0 obj << -/Length 3285 +3725 0 obj << +/Length 3286 /Filter /FlateDecode >> stream @@ -13420,245 +13480,248 @@ t �p��*��5�>mP�k1��P2��H��f.H����V[�@��&��l��un_�?�eҞi|m1���D�}i��q�����=�=P�p��S;t?��)ƛ/$>�������=�_�E&����)+n������}��e#�ô�r��^jOI�1p~q�Oe�~Tm��r�Ə�rL��I�:�E$Xj)�h8A�i�%�d\��N��h!G"j*�}A��*����n�wX���JuI.�xԶZ���� #��� 0��(�F � �)pCSw.<�9vT]�5X��pp\3��Lpt�0l���������w���,N����t��1Ip��a�Y�[Y��b���� S��G�0l\�1��/���*y\@F����E�B���cD����DY&EF9��{@�pz�S���C����x��I�+6BO<r.cqAa��� E���ղ��1Ǹ��K��6�Op�Q�|�{q;����z�C��.{�.{ɰ�u9�Z���z#~S�-g�ɴ�� 4��C��Bd�Զ5{�iN`ȍ'�4Z��_�����+���;+�JUڊMk�զo=7���|���G/+�A����R��i`�z'8b����)�!c[����bq��~�S�Z@�eє����+x���y"�7$C���p�o�A�uB)��W�-���Ё%�9j�e����+��*�CJl�j��'��$:�s���2Up [����ν�B������y�_�H�G�$��ʚy���&mMU�|z[��-��"1P"aX���>@��N-��vh0�� ��c��"�Q!�qA�S�����/Y�C_㟖*�N�Xk��<3>�����!j���@'�������( �4�g�d&E<�E��.zT�)�ۏD�0��� ��\�o���SP���9ڃ%��z"�sl�-qC���d����2�U_Y��- �.[U���BU���T��N#��M��6;����+Bb�-�/e����E9#M1zc�O|j���V�g�iz���Hч�����3!� �b��p��'D��j��:�rT�Oq��Q��ʒl���1q����ި���BI&�`�~�O�K�4�nÿ�&f;z�����B�2V����_%��zp�����__��ͩ�\���� ��l�{�l��G��g:�UoL˶�篹ᡁ8+��t#��i!e�����M���2��3�Y�wQ�zzɂ`�����? -�ׂt���O�>1 ���D��U�!+��ڟ!�w��Q��endstream +�ׂt���O�>1 ���D��U�A櫯��z������endstream endobj -3713 0 obj << +3724 0 obj << /Type /Page -/Contents 3714 0 R -/Resources 3712 0 R +/Contents 3725 0 R +/Resources 3723 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3734 0 R ->> endobj -3715 0 obj << -/D [3713 0 R /XYZ 71.731 729.265 null] ->> endobj -3716 0 obj << -/D [3713 0 R /XYZ 71.731 741.22 null] ->> endobj -3717 0 obj << -/D [3713 0 R /XYZ 71.731 718.306 null] ->> endobj -3718 0 obj << -/D [3713 0 R /XYZ 71.731 718.306 null] ->> endobj -614 0 obj << -/D [3713 0 R /XYZ 421.51 645.157 null] ->> endobj -3719 0 obj << -/D [3713 0 R /XYZ 71.731 632.719 null] ->> endobj -3720 0 obj << -/D [3713 0 R /XYZ 71.731 579.662 null] ->> endobj -3721 0 obj << -/D [3713 0 R /XYZ 71.731 507.867 null] ->> endobj -3722 0 obj << -/D [3713 0 R /XYZ 71.731 476.982 null] ->> endobj -3723 0 obj << -/D [3713 0 R /XYZ 71.731 409.301 null] ->> endobj -3724 0 obj << -/D [3713 0 R /XYZ 71.731 377.077 null] ->> endobj -3725 0 obj << -/D [3713 0 R /XYZ 71.731 307.339 null] +/Parent 3722 0 R >> endobj 3726 0 obj << -/D [3713 0 R /XYZ 71.731 249.834 null] ->> endobj -1561 0 obj << -/D [3713 0 R /XYZ 71.731 223.931 null] ->> endobj -618 0 obj << -/D [3713 0 R /XYZ 284.626 186.716 null] +/D [3724 0 R /XYZ 71.731 729.265 null] >> endobj 3727 0 obj << -/D [3713 0 R /XYZ 71.731 176.351 null] +/D [3724 0 R /XYZ 71.731 741.22 null] >> endobj 3728 0 obj << -/D [3713 0 R /XYZ 445.066 153.64 null] +/D [3724 0 R /XYZ 71.731 718.306 null] >> endobj 3729 0 obj << -/D [3713 0 R /XYZ 503.263 153.64 null] +/D [3724 0 R /XYZ 71.731 718.306 null] +>> endobj +614 0 obj << +/D [3724 0 R /XYZ 421.51 645.157 null] >> endobj 3730 0 obj << -/D [3713 0 R /XYZ 270.523 140.688 null] +/D [3724 0 R /XYZ 71.731 632.719 null] >> endobj 3731 0 obj << -/D [3713 0 R /XYZ 71.731 120.599 null] +/D [3724 0 R /XYZ 71.731 579.662 null] >> endobj 3732 0 obj << -/D [3713 0 R /XYZ 71.731 120.599 null] +/D [3724 0 R /XYZ 71.731 507.867 null] >> endobj 3733 0 obj << -/D [3713 0 R /XYZ 71.731 115.618 null] +/D [3724 0 R /XYZ 71.731 476.982 null] >> endobj -3712 0 obj << -/Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R >> -/ProcSet [ /PDF /Text ] +3734 0 obj << +/D [3724 0 R /XYZ 71.731 409.301 null] +>> endobj +3735 0 obj << +/D [3724 0 R /XYZ 71.731 377.077 null] >> endobj -3737 0 obj << -/Length 1468 -/Filter /FlateDecode ->> -stream -xڥXێ�6}߯PӇHȚ+R�.)�"��H� ◢)�D[�J�#Rk���w(R�d{��<H��3gng�Ǝ��c� )"u���w6���l%Vd1�y����N��(p�k'�c��%�8��o�]����ނPߥ�<�uR���e�1o�Ϳv˪b�?��n~Y��i�4 .�i�HB��QJ�yR���'=���2��Ə�1�$EQ:=����h��h�H�����&B�h�)�Pvs/:ٜ)�b���h!+�I@q���C!QZ'�[!r�� R�"�^~�� '"��Ff�y����VeD��,�)���k@�*J�߈��0��>H�aW�Bt�,�|0�r��\��~5�LJ�$��>M��!�~b˂���A� v�����w��_�V:sL�*7_ -��}�0u��Jd�G#��YזjoV��uwJU�C�1ňB��@�qE�@�e#�FQe��i�LoH��D0�m��-d^&��*cV��'�=�s�����h�LN��}4�at���~bWAo�x����/�7��O���u��G�"�C����J�{��ŧ~��=ˀ��6�/��5�}�l-ZnvZ�ҹ*2�Iz`�� oYU��[�$V��ϟ~7��a�6+ت��Ⱥ�7 -�� �S�LJ5�B��뻻�n�E�E}�L�w�b��j�t�B� -~�:�?�ٖ:��%���{���������F��Pח�q"�5">y��غJ��l�ն'E�7v$�7�2�b�͓Y�d�mE��&�t+!z.үC;��ڻ@����?��ɜ~�^�)�[�(�������F�{h�Zpc7io �ѡ���(��{}�Zk'� Q��t�ݬ�!�.7�>D0�M�5`y6�t��>�%@̭�j�=7�$�P�Y�&��a� ��������h�<�y;0�QD�A�(��N��5��XV�f+]����$5s�f����a�b[�rV����t�]؊�ۖ�\�+iɚ�(�f6/=��j��J�+�Z˰v��������h}�r����&R)�Woӆ�f/Q�CYh<�[�fOke�j/D}>�ӻ��7��_�٪�X`U��Jr~ԏ}C�0��� �F9ݢӤ�T���D��O/lh�*��~��l�"����t�c�\Bn�8�ƣˊ�*�����P"���^-N���9�r��]riӯ�u��sI�< ��f'�gZ���R,+�T�!yB鷩���t|,u�`.?�W����4˼E]��� 2�l>�[7�&�#��y]�*��DixYtӊnr�(=����F限�g�M�/���h��,�*�lr.��~� �pi�?>~>�3���k `��p �s �.�R��v��T�J<��ybo��$��l{��fHy+��{J�_ ����.��׆0A �/�q9�9�����Jhӑ�ԯ���'�U�endstream -endobj 3736 0 obj << -/Type /Page -/Contents 3737 0 R -/Resources 3735 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 3734 0 R +/D [3724 0 R /XYZ 71.731 307.339 null] +>> endobj +3737 0 obj << +/D [3724 0 R /XYZ 71.731 249.834 null] +>> endobj +1561 0 obj << +/D [3724 0 R /XYZ 71.731 223.931 null] +>> endobj +618 0 obj << +/D [3724 0 R /XYZ 284.626 186.716 null] >> endobj 3738 0 obj << -/D [3736 0 R /XYZ 71.731 729.265 null] +/D [3724 0 R /XYZ 71.731 176.351 null] >> endobj 3739 0 obj << -/D [3736 0 R /XYZ 89.664 708.344 null] +/D [3724 0 R /XYZ 445.066 153.64 null] >> endobj 3740 0 obj << -/D [3736 0 R /XYZ 119.054 690.411 null] +/D [3724 0 R /XYZ 503.263 153.64 null] >> endobj 3741 0 obj << -/D [3736 0 R /XYZ 147.008 690.411 null] +/D [3724 0 R /XYZ 270.523 140.688 null] >> endobj 3742 0 obj << -/D [3736 0 R /XYZ 71.731 683.407 null] +/D [3724 0 R /XYZ 71.731 120.599 null] >> endobj 3743 0 obj << -/D [3736 0 R /XYZ 284.172 672.478 null] +/D [3724 0 R /XYZ 71.731 120.599 null] >> endobj 3744 0 obj << -/D [3736 0 R /XYZ 399.456 646.575 null] +/D [3724 0 R /XYZ 71.731 115.618 null] >> endobj -3745 0 obj << -/D [3736 0 R /XYZ 76.712 615.691 null] ->> endobj -3746 0 obj << -/D [3736 0 R /XYZ 89.664 597.758 null] +3723 0 obj << +/Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R /F23 1125 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 3747 0 obj << -/D [3736 0 R /XYZ 71.731 590.62 null] +/Length 1468 +/Filter /FlateDecode +>> +stream +xڥXێ�6}߯PӇHȚ+R�.)�"��H� ◢)�D[�J�#Rk���w(R�d{��<H��3gng�Ǝ��c� )"u���w6���l%Vd1�y����N��(p�k'�c��%�8��o�]����ނPߥ�<�uR���e�1o�Ϳv˪b�?��n~Y��i�4 .�i�HB��QJ�yR���'=���2��Ə�1�$EQ:=����h��h�H�����&B�h�)�Pvs/:ٜ)�b���h!+�I@q���C!QZ'�[!r�� R�"�^~���d��Z�E�-"�w[!��������?�i��(�~#����^� ͇]� +�)�`��ȁ�fs-Z��|�2)�����4��Q?��e�jn����;@��p�;s�/k+�9&f��/��>z��Vy%�����Z�kK�7�\x��;�*�!�ʘbD!{L 渇� +m �ݲ��A������]�7��Q��6x�2/g`�1����ʹbeeu V�c&'Z�>�0:���L?���� |<k�~����F��{ߺm��W�l��e����ݽ���S�k�e@��g��ߚ;t@�-7;�X����$=������*Uɭ������O��o�0vY�lUqSd]�y�oĩo&�w������n��"ꢾ�P&�m��sw5k:V!X?B���lK��lA�m���K�k�� ]YN�i�b��K�8�y� �<E�gl]��K���jۓ"�;�S�f����,q2�ض���L�B:���=�ס �B�] Vr`͟N�dN�o/�ʭY�k��BH`�s#�=�_-����������zRBڽ�d����(�e:�nV��Y��S" ƃ&��0�<�D��ms� ��G�ߞ�RG(��,Z�I��_�x�`���i�W�<��(�� Ea���d�V�,�~��.� +��l����9W�M���d1���J9�N�[C:�.lE�m�Y.Ε��dM~�y3��N\5o�%�a�eX;j�^Y�[�G@�>R9���o����7�iCL��(�ǡ,4ۭJ����n��>���]��Z�/�lUG,����%9?�Ǿ�`���U��n�iRm�Y�x��xވ�64΅�|h�Gs6�Ȏ�Oz��1`.!�G �R��eE}��kۍ��?(��W`� +���^����{�o�.�����:`����k���o���3-DSL)�z*�Ґ<����trj:>��g0���C�_V�e�"����D��\6��-��O���\Ѽ.y��| �4�,�iE���J��~�o��LH�3�&��VH4��{�_�h69��y�fj�4�� ?ܙZ������50�s��?�9�\�C�_D;HN*� + +%x����}��k�=�b3$�����k�= +�]��w�TVL�f�V�kC����8���AI��~c%��?��©����U�endstream +endobj +3746 0 obj << +/Type /Page +/Contents 3747 0 R +/Resources 3745 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 3722 0 R >> endobj 3748 0 obj << -/D [3736 0 R /XYZ 71.731 590.62 null] +/D [3746 0 R /XYZ 71.731 729.265 null] >> endobj 3749 0 obj << -/D [3736 0 R /XYZ 71.731 573.437 null] +/D [3746 0 R /XYZ 89.664 708.344 null] >> endobj 3750 0 obj << -/D [3736 0 R /XYZ 159.123 561.893 null] +/D [3746 0 R /XYZ 119.054 690.411 null] >> endobj 3751 0 obj << -/D [3736 0 R /XYZ 304.466 561.893 null] +/D [3746 0 R /XYZ 147.008 690.411 null] >> endobj 3752 0 obj << -/D [3736 0 R /XYZ 71.731 554.755 null] +/D [3746 0 R /XYZ 71.731 683.407 null] >> endobj 3753 0 obj << -/D [3736 0 R /XYZ 71.731 554.755 null] +/D [3746 0 R /XYZ 284.172 672.478 null] >> endobj 3754 0 obj << -/D [3736 0 R /XYZ 119.054 543.96 null] ->> endobj -1562 0 obj << -/D [3736 0 R /XYZ 76.712 508.095 null] ->> endobj -622 0 obj << -/D [3736 0 R /XYZ 257.368 473.624 null] +/D [3746 0 R /XYZ 399.456 646.575 null] >> endobj 3755 0 obj << -/D [3736 0 R /XYZ 71.731 464.986 null] +/D [3746 0 R /XYZ 76.712 615.691 null] >> endobj 3756 0 obj << -/D [3736 0 R /XYZ 71.731 447.557 null] +/D [3746 0 R /XYZ 89.664 597.758 null] >> endobj 3757 0 obj << -/D [3736 0 R /XYZ 71.731 447.557 null] +/D [3746 0 R /XYZ 71.731 590.62 null] >> endobj 3758 0 obj << -/D [3736 0 R /XYZ 106.501 436.762 null] +/D [3746 0 R /XYZ 71.731 590.62 null] >> endobj 3759 0 obj << -/D [3736 0 R /XYZ 71.731 429.758 null] +/D [3746 0 R /XYZ 71.731 573.437 null] >> endobj 3760 0 obj << -/D [3736 0 R /XYZ 234.877 418.829 null] +/D [3746 0 R /XYZ 159.123 561.893 null] >> endobj 3761 0 obj << -/D [3736 0 R /XYZ 71.731 411.691 null] +/D [3746 0 R /XYZ 304.466 561.893 null] >> endobj 3762 0 obj << -/D [3736 0 R /XYZ 71.731 388.777 null] +/D [3746 0 R /XYZ 71.731 554.755 null] >> endobj -3735 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F54 2195 0 R /F23 1125 0 R >> -/ProcSet [ /PDF /Text ] +3763 0 obj << +/D [3746 0 R /XYZ 71.731 554.755 null] +>> endobj +3764 0 obj << +/D [3746 0 R /XYZ 119.054 543.96 null] +>> endobj +1562 0 obj << +/D [3746 0 R /XYZ 76.712 508.095 null] +>> endobj +622 0 obj << +/D [3746 0 R /XYZ 257.368 473.624 null] >> endobj 3765 0 obj << +/D [3746 0 R /XYZ 71.731 464.986 null] +>> endobj +3766 0 obj << +/D [3746 0 R /XYZ 71.731 447.557 null] +>> endobj +3767 0 obj << +/D [3746 0 R /XYZ 71.731 447.557 null] +>> endobj +3768 0 obj << +/D [3746 0 R /XYZ 106.501 436.762 null] +>> endobj +3769 0 obj << +/D [3746 0 R /XYZ 71.731 429.758 null] +>> endobj +3770 0 obj << +/D [3746 0 R /XYZ 234.877 418.829 null] +>> endobj +3771 0 obj << +/D [3746 0 R /XYZ 71.731 411.691 null] +>> endobj +3772 0 obj << +/D [3746 0 R /XYZ 71.731 388.777 null] +>> endobj +3745 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F53 2191 0 R /F23 1125 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3775 0 obj << /Length 1671 /Filter /FlateDecode >> stream xڥXmo�6��_a�K��q-�r���fk�a-046lCAK��U/.I5�~���EQr�m P'2y|��^�h���hr-o���.�m2I˫����p�5.��ּ��z�j���.o����a�Y�,כ��f/wI<��~���줹�_��j�,��]�t] %��}�9�5�f�(����ﯾ�w''���n�(8Z3D�Lv�nkБ��]Ҁ{z=����x�*����p�&Y��]��;.��y�̔��*�Yϣd�����g��q2{�o��!g���Y���4����e5W���Z��.����D5��m��<^!� -��xy�AɸJ�8ia���vs�J��h�d�Ѫ]��� |z0Ϙ���KkM�����*>6O�M��@Y�Q��c�u5���պ�ɴK^i�ܮ�υx��$�@���>��a�9�o��p%q�I�[�`��<�͎��ԢZ�� �BsG^q��mA���эG�j�I�/���)k�-xV��}�b��$/XO��_Dv��{1aIV~XD�NZ��<.[)��Ҽ\Rhy?:#q�\�� ���!i#%�@ys�e Nט@l����Á�#F�A�<p���L��3�pGy��~�X��jx,=�Gs����R���A|�x:.[�����*�զ4gՑ��)Y��3i�����a��=�$�;��X�����>�!�e�w�H5p�������U��t�TrM掤�����~�{8��<!Aj� 0I�՚w�%ZW�����j�4`�}�$yӋ�3Ԛ�spVk*��uTw��]�_��J|j�2ژ�b�\TIQf')JF2C��-�f������3��i]��j�'�Yg 9`�(Y����"��*2��dM��-Àu�}�*���� �f�@�L�JyW��InJ��n$�6�-����t$D���;�'�A�84�� ��/�U4�h$�$����2`DO�H���E'��l4�0?�,c+�h�}A���������Q�e���R( (�����V�af�馪Z��[#�Ζ_=%o0����������^A�7[+B8���?^�8Q)m�H���Fb��})� ���p`�u/3�MDX�ꚾPJ+���w�tJ�FfMh'uֱ�%�T�uj�.�д��[��Еu��0��A�����F�ߞ����X=ʺ9Q���.���� �v�Eoi?w1�US��P2ڼ�2��f��i��ƍI��@=&��˞��PA�o��C���>�� �Ѯ�9Cm�L��z�\Y4]�_�V��x_E��Ƅ�1?E��TrF�I��Z59+C�����W��p3E=�<ꢞ��g�x��4����nHg��w�3yYw�tRm� �|���E��L%�D_�,����l��!��P�YË$���an�k5�p���R_<��\���� xC�ӄD�f��Ν�����C.��뻹���+�{�B�+o����;KћC؆��M�X�x���2�ܢKmy-1Ⱥ<�O���ʓ~~��]��\�M}�mvB�̣��=1N���x�q�.o%f^l赬t� >/��=��V�D���M@����R����4����tyՏ���A/�'�r���'7��.�y��[2��M��z?�0�l�K7�Ó�]ڞendstream +��xy�AɸJ�8ia���vs�J��h�d�Ѫ]��� |z0Ϙ���KkM�����*>6O�M��@Y�Q��c�u5���պ�ɴK^i�ܮ�υx��$�@���>��a�9�o��p%q�I�[�`��<�͎��ԢZ�� �BsG^q��mA���эG�j�I�/���)k�-xV��}�b��$/XO��_Dv��{1aIV~XD�NZ��<.[)��Ҽ\Rhy?:#q�\�� ���!i#%�@ys�e Nט@l����Á�#F�A�<p���L��3�pGy��~�X��jx,=�Gs����R���A|�x:.[�����*�զ4gՑ��)Y��3i�����a��=�$�;��X�����>�!�e�w�H5p�������U��t�TrM掤�����~�{8��<!Aj� 0I�՚w�%ZW�����j�4`�}�$yӋ�3Ԛ�spVk*��uTw��]�_��J|j�2ژ�b�\TIQf')JF2C��-�f������3��i]��j�'�Yg 9`�(Y����"��*2��dM��-Àu�}�*���� �f�@�L�JyW��InJ��n$�6�-����t$D���;�'�A�84�� ��/�U4�h$�$����2`DO�H���E'��l4�0?�,c+�h�}A���������Q�e���R( (�����V�af�馪Z��[#�Ζ_=%o0����������^A�7[+B8���?^�8Q)m�H���Fb��})� ���p`�u/3�MDX�ꚾPJ+���w�tJ�FfMh'uֱ�%�T�uj�.�д��[��Еu��0��A�����F�ߞ����X=ʺ9Q���.���� �v�Eoi?w1�US��P2ڼ�2��f��i��ƍI��@=&��˞��PA�o��C���>�� �Ѯ�9Cm�L��z�\Y4]�_�V��x_E��Ƅ�1?E��TrF�I��Z59+C�����W��p3E=�<ꢞ��g�x��4����nHg��w�3yYw�tRm� �|���E��L%�D_�,����l��!��P�YË$���an�k5�p���R_<��\���� xC�ӄD�f��Ν�����C.��뻹���+�{�B�+o����;KћC؆��M�X�x���2�ܢKmy-1Ⱥ<�O���ʓ~~��]��\�M}�mvB�̣��=1N���x�q�.o%f^l赬t� >/��=��V�D���M@����R����4����tyՏ���A/�'�r���'7��.�y��[2��M��z?�0�l�K7�Ó�]@ڟendstream endobj -3764 0 obj << +3774 0 obj << /Type /Page -/Contents 3765 0 R -/Resources 3763 0 R +/Contents 3775 0 R +/Resources 3773 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3734 0 R +/Parent 3722 0 R >> endobj -3766 0 obj << -/D [3764 0 R /XYZ 71.731 729.265 null] +3776 0 obj << +/D [3774 0 R /XYZ 71.731 729.265 null] >> endobj -3767 0 obj << -/D [3764 0 R /XYZ 71.731 675.467 null] +3777 0 obj << +/D [3774 0 R /XYZ 71.731 675.467 null] >> endobj -3763 0 obj << +3773 0 obj << /Font << /F33 1230 0 R /F35 1463 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3770 0 obj << +3780 0 obj << /Length 1668 /Filter /FlateDecode >> stream -xڅX�r�6��+�\,�جH���2M&m�C{Q��4�"!cP 0���]X�t|0%���ݷo�Ζ��6i�Y��l�d���hn��#���MjW<�%ޚw��o~X�f�d������r�����f�%Oy6ە��W�h�x���<O����T�a����]w��H笮���O7v��|�I�O����5t�f@g#x���jk��.��.�|~9�Kі�[��W^3�s��\e�.��[���|T��_��#����k{s%�R�>���e�t�i�N��f�6O{�DJQ0��=��T5�t�Ȗ�Φ��� ��s���Y�l��~�Z/�xe��9�P���k����g���ۋ����\�M&�m�8;r���ˣ�8�vz�%����t\��р�3������@hE��2����x�綨̖�O(&��#܆f�G�����`�?�dS:Jd:��9�է�2C^=O2��� +xڅX�r�6��+�\L�ج(���2M&m�C{Q��4�"!cP 0���]X�t|0%���ݷo����6Y�Y���6]>波�Y̎�ˏ7�]�`�<xk��n��a��m���j�;�M�Z�g��2}ʗ�]�g�"'E���2_$yj��� �����y���&�v?�|ع���&�>�� +�L�-7:��6OW[�u�-:���r֗�-�ѯ�f����"�\]Dw7�����* ����G&�����Jԥ�}XQ������R��![��<��)E�����3S�d��|�H:�VV6��'2� �y�]�� kqd��Q{��C�Zj��|�'�5R����m��4�L۲pv�[ �Gsq���K$ )*��֕��f\z10����Њ�q�e���e��'��̖�O(&��#܆f�G�����`�?�dS:Jd�H����b�D^=O2��� '�Az�U%m���< -h����i�6-h,k�t�t���u�[]�vʑO�|�p���>�Q8�Φ����iP���$#���K'<?�T���R���i(v�8����Z���jm�̵���Ե+���i(W^w-V�FR��"Ղ0e����#V:�;[[��d<��5��Ӈ�3e4�����k�)��F��K���#O -�ʉ�@r� S����C -K@���A`C$�[�Km��[l4�ӝ,ǴOibD�����^�qlN@e�%�hh��y:.�9鳮Sd;�A-.��#S<�Q#���2��=� -�@0��A>`� ;�D �òU+�� -_��~�i�p�Tߞ����(>�K/�5u�wh� =e��V1����l|�$��������C��N(�n��ފ�+T��S-�-½/8*�������)���ٝN��JvЙ9��ƶ��(�m��;Vo��xI���?v-QLp7ei{�$�� l�9�C���t��B�)�UGq{Q^�`2ˤ7E�/�{������TV�0��~7�9{�VIQD;"K�.���~(g[q��!�m -� Ш/�O�� ��T-T,F~[L���λ���v�8���� -[��s�aB���MS��^�$����C���[>H7zr�_���85����#h�{�g�� ���*,U�cM|f8��h�X�(� H�Dz��sNI�Zd�D��k�pӬ�nfU&�bEW����.@7�N�ҤėA�ɯ��?�G� �17%L)�� +h����i�6-h,k�t�t���u�[]�vʑO�|�p���>�Q8�Φ����YP���$#���K'<?�T���B���i(v�8����Z���jm�̵���Ե+���i(W^w-V�FR��<ӂ0e����#Vz��rm1_���֔�O2ϔ�SP��Q��j��K/�Ҷ�<Q(@�+'��$&L�z�ga(,i4Ҏu� �|n�/���n��Pd�Owr���B<���7S��{��ı9���l�٣�u���8��g]��v��Z\��G�x�*�F<M�e�V{�T)�` T)�|��Av (N�J�e)�Vp�� �� $�,^���&.�=)^=9LQ,|�^�k�x�вAz�X�7�bN�ן9���Ip?�����Yׇ.q�P0�(� �eW�H!�Z�[�{_pTLgKH�S���;�Dk?��3s��4�m�Q�"lEw��@�',\~�Z���n����I��s�v-���!�S���:����L= +�d�Io��_���7�;e�&��,�t`t-�n<s�����vD��] ^�E�<Pζ�FaCZ���Q_�4%M�Z�X������ߝw�|�hq���w�W����Ä��� �����=H(q#�݇V�1|�n���5����qj�!OF�( ���:n?SUX�<ǚ��p���r��=#P�C@�%�Dz��sNI�Zd�D��k�pӬ�nfU&�bEW����.@7�N�ҤėA�ɯ��?�G� �17%L)�� ���E_U�4dtL -����@ϟ �F{��~h��L4��Fɘ��-�[���`�п�-����x'/��N �n`�L���3��yx�����?�U�Sn��[�Os�~��yҙ����D�|��)��L]l�~����3�ӓs%pt���x�\��;��0H�tB!�i�����1C���µ~$S�4�t����mu�^�0@O/ 9M��vf���\�@�=�O,���O�=���ۉ��@BlZ�DO����&����«�h3�s�����Q�oh��*v�H�_K�.ر/�Qp�K�uؖ�]�W�+�\�W>7���A��[5�#�QEn����DG!��Z���+0G���o���.��㚦���5''�9�m��<����+�L^��S��+�ٵ7ӓ�1ʉ�endstream +����@ϟ �F{��~h��L4��Fɘ��-�[���`�п�-����x'/��N �n`�L���3��yx�����?�U�Sn���gO J?�]�<���[mq"j>T�ʌe�.�d?�������ɹ8��P���r�G�^ǝ�v$w:��4�Qp�Q�䘡�eh�Z?�)|�g����a��:[/G�����&�_;3o|y�g ��'y������F����{ !6��E�'�O�pJ {|{�Uk�W�UW��7��� ;�G�ۯ�%f�ؗЍ(8ĥ�:l�����b.�+��nx��Gڈ��ܑM���� +7ՍJ�����`m-X���#��ӷQ[X��{�qM�r�ꚓ����}��~J���W�K&� +��S +��+ko��'�1���endstream endobj -3769 0 obj << +3779 0 obj << /Type /Page -/Contents 3770 0 R -/Resources 3768 0 R +/Contents 3780 0 R +/Resources 3778 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3734 0 R +/Parent 3722 0 R >> endobj -3771 0 obj << -/D [3769 0 R /XYZ 71.731 729.265 null] +3781 0 obj << +/D [3779 0 R /XYZ 71.731 729.265 null] >> endobj -3768 0 obj << +3778 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3774 0 obj << +3784 0 obj << /Length 1432 /Filter /FlateDecode >> @@ -13670,23 +13733,23 @@ xڭXmo ߧג��^ �R�������&@��&�㮝 �F����D �Z[�w��ag���EA -�*y_dZ�^ͳ��6,f�m>֦Y�#9m�P�FI��*�Ws���n���@x��"N�X:p������b)��]->̉m_/���|�^^^�7�7�����f%�o��k������b�_9_ݬʼnt�����Jy����r�����4�Xe��t*��H�[�D�8nբ7tA�B3Hb�/�;�X�z�K�+R�4�wm���ֿ�tQ�YDPJ��<g��->��v[\ٯ����Mͺ�0�㔣�^�UVm��\S�:���y_̈���k®��>��C*�/���b��t�t{X��DZ��EIz'����Y�z�������CI>�7X��k��x~{{g�m�F�����9��x��m���|e�\c��k�>Tg��"Q���E�&HB�����1�ZSg�槛bI�ˍ�N-� +d,'��1͝�y���endstream +�*y_dZ�^ͳ��6,f�m>֦Y�#9m�P�FI��*�Ws���n���@x��"N�X:p������b)��]->̉m_/���|�^^^�7�7�����f%�o��k������b�_9_ݬʼnt�����Jy����r�����4�Xe��t*��H�[�D�8nբ7tA�B3Hb�/�;�X�z�K�+R�4�wm���ֿ�tQ�YDPJ��<g��->��v[\ٯ����Mͺ�0�㔣�^�UVm��\S�:���y_̈���k®��>��C*�/���b��t�t{X��DZ��EIz'����Y�z�������CI>�7X��k��x~{{g�m�F�����9��x��m���|e�\c��k�>Tg��"Q���E�&HB�����1�ZSg�槛bI�ˍ�N-� +d,'�1͝�y��endstream endobj -3773 0 obj << +3783 0 obj << /Type /Page -/Contents 3774 0 R -/Resources 3772 0 R +/Contents 3784 0 R +/Resources 3782 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3734 0 R +/Parent 3722 0 R >> endobj -3775 0 obj << -/D [3773 0 R /XYZ 71.731 729.265 null] +3785 0 obj << +/D [3783 0 R /XYZ 71.731 729.265 null] >> endobj -3772 0 obj << +3782 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3778 0 obj << +3788 0 obj << /Length 2113 /Filter /FlateDecode >> @@ -13703,167 +13766,163 @@ n5ܐ s�� �i��3Vvn�.�����.um$�d\ `q_��̾�Õ��Af�Q�ŕ6�6��7��UWJx~����@,?ÿ_�.h���!��@�@��x�<` ����� �"��*�������K�4F��O�Ɨe��n6=7��:�{a� N��bi��/��ȹ��+��<���(�����3����WY�9��$%r�V��:��,�p�������5�+G�g}%��`9�^2B#�⑲��V0:yG9���Z��P%f�� �����%������l�^� �@&�� -{�a;� �N���������62'�%�z ��W�����\��y����)Y����||qTf��+���m��./wpN�٢q���q��r��.�n���K紛�����Yy�?�,�_kaDt\��3.�o��:��j��endstream +{�a;� �N���������62'�%�z ��W�����\��y����)Y����||qTf��+���m��./wpN�٢q���q��r��.�n���K紛�����Yy�?�,�_kaDt\��3.�o��:�����endstream endobj -3777 0 obj << +3787 0 obj << /Type /Page -/Contents 3778 0 R -/Resources 3776 0 R +/Contents 3788 0 R +/Resources 3786 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3734 0 R -/Annots [ 3781 0 R 3782 0 R 3783 0 R ] +/Parent 3800 0 R +/Annots [ 3791 0 R 3792 0 R 3793 0 R ] >> endobj -3781 0 obj << +3791 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [244.528 299.568 410.209 308.479] /Subtype /Link /A << /S /GoTo /D (cvs) >> >> endobj -3782 0 obj << +3792 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.336 273.665 537.983 282.576] /Subtype /Link /A << /S /GoTo /D (tinderbox) >> >> endobj -3783 0 obj << +3793 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [71.731 260.713 267.724 269.625] /Subtype /Link /A << /S /GoTo /D (tinderbox) >> >> endobj -3779 0 obj << -/D [3777 0 R /XYZ 71.731 729.265 null] +3789 0 obj << +/D [3787 0 R /XYZ 71.731 729.265 null] >> endobj 1563 0 obj << -/D [3777 0 R /XYZ 71.731 406.476 null] +/D [3787 0 R /XYZ 71.731 406.476 null] >> endobj 626 0 obj << -/D [3777 0 R /XYZ 449.605 361.221 null] +/D [3787 0 R /XYZ 449.605 361.221 null] >> endobj 1564 0 obj << -/D [3777 0 R /XYZ 71.731 357.391 null] +/D [3787 0 R /XYZ 71.731 357.391 null] >> endobj 630 0 obj << -/D [3777 0 R /XYZ 159.442 321.849 null] +/D [3787 0 R /XYZ 159.442 321.849 null] >> endobj -3780 0 obj << -/D [3777 0 R /XYZ 71.731 314.497 null] +3790 0 obj << +/D [3787 0 R /XYZ 71.731 314.497 null] >> endobj 1565 0 obj << -/D [3777 0 R /XYZ 71.731 255.732 null] +/D [3787 0 R /XYZ 71.731 255.732 null] >> endobj 634 0 obj << -/D [3777 0 R /XYZ 141.108 218.517 null] +/D [3787 0 R /XYZ 141.108 218.517 null] >> endobj -3784 0 obj << -/D [3777 0 R /XYZ 71.731 211.164 null] +3794 0 obj << +/D [3787 0 R /XYZ 71.731 211.164 null] >> endobj -3785 0 obj << -/D [3777 0 R /XYZ 71.731 191.254 null] +3795 0 obj << +/D [3787 0 R /XYZ 71.731 191.254 null] >> endobj -3786 0 obj << -/D [3777 0 R /XYZ 331.48 167.508 null] +3796 0 obj << +/D [3787 0 R /XYZ 331.48 167.508 null] >> endobj -3787 0 obj << -/D [3777 0 R /XYZ 86.396 141.605 null] +3797 0 obj << +/D [3787 0 R /XYZ 86.396 141.605 null] >> endobj -3788 0 obj << -/D [3777 0 R /XYZ 71.731 134.467 null] +3798 0 obj << +/D [3787 0 R /XYZ 71.731 134.467 null] >> endobj -3789 0 obj << -/D [3777 0 R /XYZ 225.881 110.721 null] +3799 0 obj << +/D [3787 0 R /XYZ 225.881 110.721 null] >> endobj -3776 0 obj << +3786 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3792 0 obj << -/Length 1401 +3803 0 obj << +/Length 1397 /Filter /FlateDecode >> stream -xڝW��6�~E�O�8��J�m�=��`������Zm˰�^��~�H?�v�P\EQ4�Ǐ�"���8,X�!y�*��hu��_�b�ز�v!��x��9IV��'��y�FE���HD����x�3��d�T�ފ, -�����:�h��1>��q��Z��:�v��q�9K��O�k�(se�(f�F'��7���5�B�4�W�TCt);�\+ܤ�9���G"t��:K/�6-1_���Bg�'$li}���y-�`���;V����7���>)>��V���u;he�Ld����4C_* -riNLݛ�)��e@�G���E5�u�"�8A���'�ؘ�J����,n&�{OD�\�~�;��IT��.l�ہ���ٝ�B��|HY��S�P�9gR�d�w&�0��}�N�@�g�����wN�?��E�A���Xd^��8Fs��8N�v�)`T���fs��A��<��$2'�H�"���Ce��ǧ`��y�"Wx�BOQu��i b���.�{w8�///�<�^b8>�F�>��| -K�@�!ޏ�W��d������ �&DJ,�M�h�Z�����B&� ��R#p��+ء�L�ԉ�!t�C��so�#����WH�5�}�Oc~���A��N�>�5֊H���3��wL�R_��߆+��yޮ'�����ɧ�KX��&=�d=t��`��U��5�| �r�g<mH̴�H']Y����+:�]Wku�[�������]��OʅI���fb$�rߒo �S�z�Ϫ"���|�vK;���,��f�(�A�T����^�Z���$4zL`g��S�3�C�_���Kw���������H @�u��u{O�7B �-����K���gh�z�M4C�tW���:^ܷ�Z������A���D�ϒ��Z�L��L9`J �� -�KAS��P�%Ҫ[�hZF�)A,(K$D���2�����Y�����<����Wd�����tz -R~ -��Ϡ����f����ɦ1��\%-�l���T���3 -��1������Դ��|Cx�Ǥ��'�EHz��I3$K��lG��|D�� +�"!QSsAX�� �r=��Xo���{�w߀`��bb~`팵�&#� 4�y��C�!�$5�`��f�l�l�F�4�S��=N2����X�f���=��~0*��z0A��������L9X=�oЙѝ1�����PDP�_v�v�p~\'8/�/���'�'pT���cW��nK���"c����e�t)�=��E��(�C���d��-_kխ�e�? �a��.>��cD��X�響$y���ĥg�x� ����|���Z[Q��cC|�.�V�B��j:�HYN-n�;����p�� 6�\���>�Ĩ�ɳo�����_J\�endstream +xڝَ�6�}��ȓزD]vޚ����n�2m��DA��I��3�ѱk'�`ù4���x��xU�a��!�ȳU��E�p~��Yb�"ۅ̇����$Y�C����Ua���"�>����ྒ�S�z+�(�B:��L��n/D�0\�Yǁ�k������O���,)��>��q�̕u�������H4�ָ +�K�,�_�S ����s�Is&����֩u��^:mZ"�hW��xOH�������ZD�p �v�F���7���>)�^T�z]��`&���Ex��?��/�4'��M�E�2� �D]��:"�O� ���dl�a��Oj7ҽ'�r�{�{�$�FI����ſU���N!مh>�,Y�)d(ǜ�3) Y���<L��b<��(P�?6=������GִH>(Q��+�c�h�z�I�n=$�J{b2���\�w#�p5��I��ZDp\`�l|������/rUO^�)ʢ.=9 @̒�e�c�G���e�gA�K�gԨ��ޘOai�9�����jwP6�>�R̊�I��n"%��M�h�Z@}C�D�6 b�J��S�_�a��3�S'��Н"��4$5F`3je�*� �z�O��p"�0<��+"=?�θwD��1�3H���P;�mرB����:p��?ݞ|ھ��kj�N��DJ�l�����/K�<D�6$f�Q�����`�D�����j�N"kf[��ZY�W�I�0I��m&B)�#�F��uJ�P/��Y�c��"��b�����"[�'!�4D������4�ǚ�բ��%��`L�1�*G\�3�C��o�W�έ���-�E �-I��F^$��:Y��'@K ٖN,���K���g��~A$ +��v������O/��L-��� Q}� �H"�gI�v|-e�e}�0%�bL��������iխV4�#ߴ 6�%"Avr��gz�ƬAWҍ�;=������{OA:=)?����Ϡ���������ɦ1��<%�l���T���3 +��1�@����Ԅ�[�!��1���ùI}2i�d�^����u���|E� �HH�4\�,��F�r?��8o���{�w?��Yl11�pv�ZM�`mp^���o� Iʹ���b��>�7��jP.�� |���um~c�y�ӌN�^kf?�*��y�`�tM����r�{�ߢ3Ww��}�g��&����{������:�}��V�<!�<��J.�vu;@�m�B]�XdL�G^*]V���3i\�M��>�\lF�n�Z�n���*��ij��É�0F�͎%���J��q0kKTzf�ב���`�«kmEst�� ���[�f�"пW۱悔�4▿s��I��q�ݟ`���/�L����=y��_T�W���Uendstream endobj -3791 0 obj << +3802 0 obj << /Type /Page -/Contents 3792 0 R -/Resources 3790 0 R +/Contents 3803 0 R +/Resources 3801 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3806 0 R +/Parent 3800 0 R >> endobj -3793 0 obj << -/D [3791 0 R /XYZ 71.731 729.265 null] +3804 0 obj << +/D [3802 0 R /XYZ 71.731 729.265 null] >> endobj -3794 0 obj << -/D [3791 0 R /XYZ 71.731 718.306 null] +3805 0 obj << +/D [3802 0 R /XYZ 71.731 718.306 null] >> endobj -3795 0 obj << -/D [3791 0 R /XYZ 373.626 695.392 null] +3806 0 obj << +/D [3802 0 R /XYZ 373.626 695.392 null] >> endobj 1566 0 obj << -/D [3791 0 R /XYZ 71.731 688.254 null] +/D [3802 0 R /XYZ 71.731 688.254 null] >> endobj 638 0 obj << -/D [3791 0 R /XYZ 204.675 651.039 null] +/D [3802 0 R /XYZ 204.675 651.039 null] >> endobj -3796 0 obj << -/D [3791 0 R /XYZ 71.731 643.686 null] +3807 0 obj << +/D [3802 0 R /XYZ 71.731 643.686 null] >> endobj -3797 0 obj << -/D [3791 0 R /XYZ 71.731 617.963 null] +3808 0 obj << +/D [3802 0 R /XYZ 71.731 617.963 null] >> endobj -3798 0 obj << -/D [3791 0 R /XYZ 249.701 617.963 null] +3809 0 obj << +/D [3802 0 R /XYZ 249.701 617.963 null] >> endobj -3799 0 obj << -/D [3791 0 R /XYZ 273.821 605.011 null] +3810 0 obj << +/D [3802 0 R /XYZ 273.821 605.011 null] >> endobj -3800 0 obj << -/D [3791 0 R /XYZ 71.731 597.873 null] +3811 0 obj << +/D [3802 0 R /XYZ 71.731 597.873 null] >> endobj 1567 0 obj << -/D [3791 0 R /XYZ 71.731 541.086 null] +/D [3802 0 R /XYZ 71.731 541.086 null] >> endobj 642 0 obj << -/D [3791 0 R /XYZ 189.239 503.87 null] +/D [3802 0 R /XYZ 189.239 503.87 null] >> endobj -3801 0 obj << -/D [3791 0 R /XYZ 71.731 496.518 null] +3812 0 obj << +/D [3802 0 R /XYZ 71.731 496.518 null] >> endobj -3802 0 obj << -/D [3791 0 R /XYZ 350.294 457.843 null] +3813 0 obj << +/D [3802 0 R /XYZ 350.294 457.843 null] >> endobj 1658 0 obj << -/D [3791 0 R /XYZ 71.731 450.705 null] +/D [3802 0 R /XYZ 71.731 450.705 null] >> endobj 646 0 obj << -/D [3791 0 R /XYZ 261.414 413.489 null] +/D [3802 0 R /XYZ 261.414 413.489 null] >> endobj -3803 0 obj << -/D [3791 0 R /XYZ 71.731 406.137 null] +3814 0 obj << +/D [3802 0 R /XYZ 71.731 406.137 null] >> endobj -3804 0 obj << -/D [3791 0 R /XYZ 71.731 380.413 null] +3815 0 obj << +/D [3802 0 R /XYZ 71.731 380.413 null] >> endobj -3805 0 obj << -/D [3791 0 R /XYZ 365.641 380.413 null] +3816 0 obj << +/D [3802 0 R /XYZ 365.641 380.413 null] >> endobj -3790 0 obj << +3801 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3809 0 obj << -/Length 2400 +3819 0 obj << +/Length 2401 /Filter /FlateDecode >> stream @@ -13871,7 +13930,7 @@ xڝko 㾜\؊����(���m��=�Pݢ�%�Vuz�6��7/ʒ,'E 9�!�M���E�I�`��x���y�#�||�ˊh�q�8�xfr���ۆ��`����}�E๛x�x>�\�� ���9���pRU���:H�����/M^��;�7/ ����_h7?q?��<`�^��F��Dz���瘬K�ܔB�,v�n e�1 -�ϧ�Y�#?t�4HM�.}G������guYCt���Fײ������~>�Z�V�R��B�nZ˴i�\W"�u��*�,��yAQ�A�l~��b���ً�S�V�ww�*e������!��s��}`�L�h�|;�� ���b:���7]��,���*ԋL筐"���;����8v��*d����fİ+����c"�ϖ��pD�AX�D��Jh����Ut�{�m��x ��5B�NuӨ:/^qRxY,c�]{ኣ�VmWk�\�jZZ I�1��m�!��P���ŗW��]�ӖV ��$�Ռ��K{�EM!Ԟ���Ϩ,�v���[\��_��>��PMO.Pf��̲�H7i��u��pR��v!�5\�fXM\�F���t�� �}D_�vl��M�+� �h���d�e�b<:Dݴ�=J����T$�h�)�e�h�+d3v��d��s^�M[��"́�T@���0cʵ.A2 �q<@L��� ����>�_~~b�3`���0�d<�;"�8����C"������9�l�!k��9�0��P�)�%���~�a�ǸH�"ׁx�}���tG�����>K%;7�0�Ů��yL��k8� p� ��_�����&��5�����Uޓm)�yJ�����_+�!$�,�Ȓ��7�-��YĈ"/������3`��g�B�e5� J +�ϧ�Y�#?t�4HM�.}G������guYCt���Fײ������~>�Z�V�R��B�nZ˴i�\W"�u��*�,��yAQ�A�l~��b���ً�S�V�ww�*e������!��s��}`�L�h�|;�� ���b:���7]��,���*ԋL筐"���;����8v��*d����fİ+����c"�ϖ��pD�AX�D��Jh����Ut�{�m��x ��5B�NuӨ:/^qRxY,c�]{ኣ�VmWk�\�jZZ I�1��m�!��P���ŗW��]�ӖV ��$�Ռ��K{�EM!Ԟ���Ϩ,�v���[\��_��>��PMO.Pf��̲�H7i��u��pR��v!�5\�fXM\�F���t�� �}D_�vl��M�+� �h���d�e�b<:Dݴ�=J����T$�h�)�e�h�+d3v��d��s^�M[��"́�T@���0cʵ.A2 �q<@L��� ����>�_~~b�3`���0�d<�;"�8����C"������9�l�!k��9�0��P�)�%���~�a�ǸH�"ׁ�}���tG�����>K%;7�0�Ů��yL��k8� p� ��_�����&��5�����Uޓm)�yJ�����_+�!$�,�Ȓ��7�-��YĈ"/������3`��g�B�e5� J y��k�V ������j�G��"n^N�o*��63fQ����<��J����9���2�ޏ��97�#���ٽn�57�C����M�����}��{�-��;��c?8�3�,�f���P<��u�10��d�+�E�A I"��X��L��s����-��������`2(ՌU`�qԥ������y6�����l4e��s,����YW)W�i$5f.��v�5�I�˅D�̜Y*�a![����� ��%����ғ*������r��vS�ɟ5�X��2�p�Q�z(��e�v J�2�^o��k�'�Ba���O�ȃǒ�aq�u i�P�CX��ɽi[sf�r�p�RG=�T�8�9��5��ͥ��%aǫ�����G��W�T`���1�A����F"����*�\�"M�)W���� /�T��烛�_��K�w� ���/� ��?� c�wy�8A� %5�KX>����d%�V5y �c&�k�䠮,���SO @@ -13881,120 +13940,120 @@ U ��E�0�� vQ�t�����D_*]c�m~�8�/��6ԩ��vq��3ك}f� m�U�]7��vT�_]T�Z��Q�]��K�/1�;��r9u�5�&���[��^��n��و��=^�c�<Z|���Mi>�����hnknet����f�כ}���4�y�<�K$>_^Rx0g����n �/�p����ف:V#:���4���*^����U�+˃Ы2 ����`���Ky�H>4��W3��Ԑ#�-��֖Ŀф���Q�|6������;k\��?�Y�i4?-�ڱ*y����4�w�F�Lb�nw�Q��܅���Z���FQ$�}yS��5rt�k�r��Z���~�ρ�#��$]1#Z��pgE+q�ˠ2��C/h�)�G �N;�0�>ۢ��c�@t��^�{(�J���ͫBO)�N+2O�P/CȒpA���˖��G3��� c�j��d5(|.þ����D���qd���Z&CQ�$O�7� -�0���u���s�}d%@;VtY��;��g��9����!|�+fc����pC�n�a��|Ǧ���L���'LY��S�1#f�IO��:WA���U�%q��oJ#{o�o��;8B�=�Z ��ǭ5Zթ,�vR�l蓮'���|�uB��������|�+֗%W)1��w�~3�d|�f��a?�endstream +�0���u���s�}d%@;VtY��;��g��9����!|�+fc����pC�n�a��|Ǧ���L���'LY��S�1#f�IO��:WA���U�%q��oJ#{o�o��;8B�=�Z ��ǭ5Zթ,�vR�l蓮'���|�uB��������|�+֗%W)1w��P �L9�߮Y��~?�endstream endobj -3808 0 obj << +3818 0 obj << /Type /Page -/Contents 3809 0 R -/Resources 3807 0 R +/Contents 3819 0 R +/Resources 3817 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3806 0 R +/Parent 3800 0 R >> endobj -3810 0 obj << -/D [3808 0 R /XYZ 71.731 729.265 null] +3820 0 obj << +/D [3818 0 R /XYZ 71.731 729.265 null] >> endobj 1659 0 obj << -/D [3808 0 R /XYZ 71.731 718.306 null] +/D [3818 0 R /XYZ 71.731 718.306 null] >> endobj 650 0 obj << -/D [3808 0 R /XYZ 320.829 703.236 null] +/D [3818 0 R /XYZ 320.829 703.236 null] >> endobj 1660 0 obj << -/D [3808 0 R /XYZ 71.731 692.184 null] +/D [3818 0 R /XYZ 71.731 692.184 null] >> endobj 654 0 obj << -/D [3808 0 R /XYZ 205.304 651.159 null] +/D [3818 0 R /XYZ 205.304 651.159 null] >> endobj -3811 0 obj << -/D [3808 0 R /XYZ 71.731 642.336 null] +3821 0 obj << +/D [3818 0 R /XYZ 71.731 642.336 null] >> endobj -3812 0 obj << -/D [3808 0 R /XYZ 506.431 629.6 null] +3822 0 obj << +/D [3818 0 R /XYZ 506.431 629.6 null] >> endobj 1661 0 obj << -/D [3808 0 R /XYZ 71.731 583.608 null] +/D [3818 0 R /XYZ 71.731 583.608 null] >> endobj 658 0 obj << -/D [3808 0 R /XYZ 317.599 540.51 null] +/D [3818 0 R /XYZ 317.599 540.51 null] >> endobj -3813 0 obj << -/D [3808 0 R /XYZ 71.731 528.072 null] +3823 0 obj << +/D [3818 0 R /XYZ 71.731 528.072 null] >> endobj -3814 0 obj << -/D [3808 0 R /XYZ 71.731 493.048 null] +3824 0 obj << +/D [3818 0 R /XYZ 71.731 493.048 null] >> endobj -3815 0 obj << -/D [3808 0 R /XYZ 71.731 490.891 null] +3825 0 obj << +/D [3818 0 R /XYZ 71.731 490.891 null] >> endobj -3816 0 obj << -/D [3808 0 R /XYZ 71.731 485.91 null] +3826 0 obj << +/D [3818 0 R /XYZ 71.731 485.91 null] >> endobj -3817 0 obj << -/D [3808 0 R /XYZ 89.664 465.153 null] +3827 0 obj << +/D [3818 0 R /XYZ 89.664 465.153 null] >> endobj -3818 0 obj << -/D [3808 0 R /XYZ 128.486 465.153 null] +3828 0 obj << +/D [3818 0 R /XYZ 128.486 465.153 null] >> endobj -3819 0 obj << -/D [3808 0 R /XYZ 171.417 452.201 null] +3829 0 obj << +/D [3818 0 R /XYZ 171.417 452.201 null] >> endobj -3820 0 obj << -/D [3808 0 R /XYZ 71.731 450.045 null] +3830 0 obj << +/D [3818 0 R /XYZ 71.731 450.045 null] >> endobj -3821 0 obj << -/D [3808 0 R /XYZ 89.664 434.269 null] +3831 0 obj << +/D [3818 0 R /XYZ 89.664 434.269 null] >> endobj -3822 0 obj << -/D [3808 0 R /XYZ 71.731 406.209 null] +3832 0 obj << +/D [3818 0 R /XYZ 71.731 406.209 null] >> endobj -3823 0 obj << -/D [3808 0 R /XYZ 89.664 390.433 null] +3833 0 obj << +/D [3818 0 R /XYZ 89.664 390.433 null] >> endobj -3824 0 obj << -/D [3808 0 R /XYZ 130.164 390.433 null] +3834 0 obj << +/D [3818 0 R /XYZ 130.164 390.433 null] >> endobj -3825 0 obj << -/D [3808 0 R /XYZ 269.817 377.482 null] +3835 0 obj << +/D [3818 0 R /XYZ 269.817 377.482 null] >> endobj -3826 0 obj << -/D [3808 0 R /XYZ 71.731 370.343 null] +3836 0 obj << +/D [3818 0 R /XYZ 71.731 370.343 null] >> endobj 1662 0 obj << -/D [3808 0 R /XYZ 71.731 339.459 null] +/D [3818 0 R /XYZ 71.731 339.459 null] >> endobj 662 0 obj << -/D [3808 0 R /XYZ 252.009 296.362 null] +/D [3818 0 R /XYZ 252.009 296.362 null] >> endobj -3827 0 obj << -/D [3808 0 R /XYZ 71.731 283.924 null] +3837 0 obj << +/D [3818 0 R /XYZ 71.731 283.924 null] >> endobj -3828 0 obj << -/D [3808 0 R /XYZ 71.731 261.851 null] +3838 0 obj << +/D [3818 0 R /XYZ 71.731 261.851 null] >> endobj -3829 0 obj << -/D [3808 0 R /XYZ 71.731 233.791 null] +3839 0 obj << +/D [3818 0 R /XYZ 71.731 233.791 null] >> endobj -3830 0 obj << -/D [3808 0 R /XYZ 71.731 228.81 null] +3840 0 obj << +/D [3818 0 R /XYZ 71.731 228.81 null] >> endobj -3831 0 obj << -/D [3808 0 R /XYZ 89.664 208.053 null] +3841 0 obj << +/D [3818 0 R /XYZ 89.664 208.053 null] >> endobj -3832 0 obj << -/D [3808 0 R /XYZ 89.664 208.053 null] +3842 0 obj << +/D [3818 0 R /XYZ 89.664 208.053 null] >> endobj -3833 0 obj << -/D [3808 0 R /XYZ 89.664 177.169 null] +3843 0 obj << +/D [3818 0 R /XYZ 89.664 177.169 null] >> endobj -3834 0 obj << -/D [3808 0 R /XYZ 71.731 177.169 null] +3844 0 obj << +/D [3818 0 R /XYZ 71.731 177.169 null] >> endobj -3807 0 obj << +3817 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3837 0 obj << -/Length 3625 +3847 0 obj << +/Length 3626 /Filter /FlateDecode >> stream @@ -14008,215 +14067,214 @@ xڭ[ݓ W5���d��v�vϪ>��.�¹MD��,����H�d$L���_��KV��d��e'��������e'�`�ZuPH�������Xc����Z���(j�zP^�g��6��u$hؗuFࠡï��D����z�+�m 3�&P����gCu����$��jc�6���K���9����ӴcJ��C��Ĥ��we�0D�c��C��ˆ��<Uu�Rp��F�ګv1�y[�[*��ݎ$Kv��nK�V��v��e��7��B��A�J�p ﶎ�J���q���h�oW}��r��(A�p"�=��<�]����c�:�d����%�<��%Th�&��Hq Y%KA=�QN�I�N��!7G��h���}2B��}���`X>�#��ЎQ͊��o�-�ǏRГO%z��n�ך��7���ͨ0�1���O{��swG]�nGYt3TAg98���8�b�^��{oj�x�c�[p'GW��d���v��"���Mw��v��͜�U�*��"�k���c=���n�(Ia�$��q$Y�#Sh=.V(�n�q�ۥG��۷&�m��H�$ �E4$�bc�$3��Ew�E9�b���k��Ѣ ��s�_��H��{�к_�]:X�����K�s8 ' 5�Q�<>�P%ܗ候�h7C8t?g+�p�%�p��&9c:�� ��&͐��}����U���v?��=�sa'��lI¸&f@��ĸu�s��49���ǂ/n�r������\V� ��2+: h��,�N�-ȧ{�0�M>��)�$�S_XqE�P��`�%0�e��ά�CQ��p�G-�`,��r\�����m�hx1�q#p/�4q3�1̯Z}{w!-], �9��YZbn<���=���S�^o}P��|�ˡ�4��N=uH��/|8zK����/�3�'^"?Mu�t�1�#�v~xA̗�ǵ��s+b/�4�Q�o�=�R[�7b��m�t�.�b�a��?��y̭XY� �*�O��K�8�×���o�݉t���yT���zJ.4���\��[`(�a̪����'鰀.m?�<��q6�c����U�"����coq���5�O�!)<�4_X9��]+�.�3/�^�0qYT�=!��iK�yZ2��VjL��cF�?��p�E��[��-���V7q˜����� -��GL�wJ� F���)H ��Y��H8��L{)��.Hh�,��^9 :�]vT-_-�5vؕ:h������ 1���h2���Q��5��l3"`��E-uZ]Ƅw�L��*�������5�����H͉+�8�����Ě�I��:��/݃��鵯k�#h V��U�`����oW_�k��~��83e� � �gi�1/�_lA�.:�V�iz}7��q�A��rM�O4SP繣n�h%e�̼|.�@� ����Ja��il�s����',0 *U��}@a���lj�ɫ9�E��ۆB��⭱��Mߞ�v�����ꬪ\UY��������<[;פ�mE{���z'C��Kξv�z=[�.�w5w.��-_��ü����\>T����j��� ���x��Q���r�*�'|�'�]I���A}��p��͎2Ggjn1�s�&7�`�Z2<�/L��H�dxL� o������x��b��.�{W�C���]z�8�g7��z�G$��Kd����6�"Y�(Sh�.��:X��茷K��</��fD->^].��;��qxy^�(:���������:�Y����n�&�O�UR�V8���Z4v���S��� �^���*ta��)?�ĩ;©T����I�T�.|G�u���O��_�Hr� Q��8fџs%K�oq��M7Jendstream +��GL�wJ� F���)H ��Y��H8��L{)��.Hh�,��^9 :�]vT-_-�5vؕ:h������ 1���h2���Q��5��l3"`��E-uZ]Ƅw�L��*�������5�����H͉+�8�����Ě�I��:��/݃��鵯k�#h V��U�`����oW_�k��~��83e� � �gi�1/�_lA�.:�V�iz}7��q�A��rM�O4SP繣n�h%e�̼|.�@� ����Ja��il�s����',0 *U��}@a���lj�ɫ9�E��ۆB��⭱��Mߞ�v�����ꬪ\UY��������<[;פ�mE{���z'C��Kξv�z=[�.�w5w.��-_��ü����\>T����j��� ���x��Q���r�*�'|�'�]I���A}��p��͎2Ggjn1�s�&7�`�Z2<�/L��H�dxL� o������x��b��.�{W�C���]z�8�g7��z�G$��Kd����6�"Y�(Sh�.��:X��茷K��</��fD->^].��;��qxy^�(:���������:�Y����n�&�O�UR�V8���Z4v���S��� �^���*ta��)?�ĩ;©T����I�T�.|G�u���O��_�Hr� Q�^`&�_sm������7endstream endobj -3836 0 obj << +3846 0 obj << /Type /Page -/Contents 3837 0 R -/Resources 3835 0 R +/Contents 3847 0 R +/Resources 3845 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3806 0 R +/Parent 3800 0 R >> endobj -3838 0 obj << -/D [3836 0 R /XYZ 71.731 729.265 null] +3848 0 obj << +/D [3846 0 R /XYZ 71.731 729.265 null] >> endobj -3839 0 obj << -/D [3836 0 R /XYZ 71.731 683.941 null] +3849 0 obj << +/D [3846 0 R /XYZ 71.731 683.941 null] >> endobj -3840 0 obj << -/D [3836 0 R /XYZ 89.664 666.008 null] +3850 0 obj << +/D [3846 0 R /XYZ 89.664 666.008 null] >> endobj -3841 0 obj << -/D [3836 0 R /XYZ 89.664 666.008 null] +3851 0 obj << +/D [3846 0 R /XYZ 89.664 666.008 null] >> endobj -3842 0 obj << -/D [3836 0 R /XYZ 71.731 637.948 null] +3852 0 obj << +/D [3846 0 R /XYZ 71.731 637.948 null] >> endobj -3843 0 obj << -/D [3836 0 R /XYZ 89.664 622.172 null] ->> endobj -3844 0 obj << -/D [3836 0 R /XYZ 89.664 622.172 null] ->> endobj -3845 0 obj << -/D [3836 0 R /XYZ 71.731 620.015 null] ->> endobj -3846 0 obj << -/D [3836 0 R /XYZ 89.664 604.239 null] ->> endobj -3847 0 obj << -/D [3836 0 R /XYZ 89.664 604.239 null] ->> endobj -3848 0 obj << -/D [3836 0 R /XYZ 71.731 602.083 null] ->> endobj -3849 0 obj << -/D [3836 0 R /XYZ 89.664 586.307 null] ->> endobj -3850 0 obj << -/D [3836 0 R /XYZ 89.664 586.307 null] ->> endobj -3851 0 obj << -/D [3836 0 R /XYZ 71.731 584.15 null] ->> endobj -3852 0 obj << -/D [3836 0 R /XYZ 89.664 568.374 null] ->> endobj -3853 0 obj << -/D [3836 0 R /XYZ 89.664 568.374 null] +3853 0 obj << +/D [3846 0 R /XYZ 89.664 622.172 null] >> endobj 3854 0 obj << -/D [3836 0 R /XYZ 71.731 566.217 null] +/D [3846 0 R /XYZ 89.664 622.172 null] >> endobj 3855 0 obj << -/D [3836 0 R /XYZ 89.664 550.441 null] +/D [3846 0 R /XYZ 71.731 620.015 null] >> endobj 3856 0 obj << -/D [3836 0 R /XYZ 89.664 550.441 null] +/D [3846 0 R /XYZ 89.664 604.239 null] >> endobj 3857 0 obj << -/D [3836 0 R /XYZ 71.731 535.333 null] +/D [3846 0 R /XYZ 89.664 604.239 null] >> endobj 3858 0 obj << -/D [3836 0 R /XYZ 89.664 519.557 null] +/D [3846 0 R /XYZ 71.731 602.083 null] >> endobj 3859 0 obj << -/D [3836 0 R /XYZ 89.664 519.557 null] +/D [3846 0 R /XYZ 89.664 586.307 null] >> endobj 3860 0 obj << -/D [3836 0 R /XYZ 71.731 517.4 null] +/D [3846 0 R /XYZ 89.664 586.307 null] >> endobj 3861 0 obj << -/D [3836 0 R /XYZ 89.664 501.624 null] +/D [3846 0 R /XYZ 71.731 584.15 null] >> endobj 3862 0 obj << -/D [3836 0 R /XYZ 89.664 501.624 null] +/D [3846 0 R /XYZ 89.664 568.374 null] >> endobj 3863 0 obj << -/D [3836 0 R /XYZ 71.731 486.516 null] +/D [3846 0 R /XYZ 89.664 568.374 null] >> endobj 3864 0 obj << -/D [3836 0 R /XYZ 89.664 470.74 null] +/D [3846 0 R /XYZ 71.731 566.217 null] >> endobj 3865 0 obj << -/D [3836 0 R /XYZ 89.664 470.74 null] +/D [3846 0 R /XYZ 89.664 550.441 null] >> endobj 3866 0 obj << -/D [3836 0 R /XYZ 71.731 455.632 null] +/D [3846 0 R /XYZ 89.664 550.441 null] >> endobj 3867 0 obj << -/D [3836 0 R /XYZ 89.664 439.856 null] +/D [3846 0 R /XYZ 71.731 535.333 null] >> endobj 3868 0 obj << -/D [3836 0 R /XYZ 89.664 439.856 null] +/D [3846 0 R /XYZ 89.664 519.557 null] >> endobj 3869 0 obj << -/D [3836 0 R /XYZ 71.731 424.748 null] +/D [3846 0 R /XYZ 89.664 519.557 null] >> endobj 3870 0 obj << -/D [3836 0 R /XYZ 89.664 408.972 null] +/D [3846 0 R /XYZ 71.731 517.4 null] >> endobj 3871 0 obj << -/D [3836 0 R /XYZ 89.664 408.972 null] +/D [3846 0 R /XYZ 89.664 501.624 null] >> endobj 3872 0 obj << -/D [3836 0 R /XYZ 71.731 380.912 null] +/D [3846 0 R /XYZ 89.664 501.624 null] >> endobj 3873 0 obj << -/D [3836 0 R /XYZ 89.664 365.136 null] +/D [3846 0 R /XYZ 71.731 486.516 null] >> endobj 3874 0 obj << -/D [3836 0 R /XYZ 89.664 365.136 null] +/D [3846 0 R /XYZ 89.664 470.74 null] >> endobj 3875 0 obj << -/D [3836 0 R /XYZ 71.731 362.979 null] +/D [3846 0 R /XYZ 89.664 470.74 null] >> endobj 3876 0 obj << -/D [3836 0 R /XYZ 89.664 347.203 null] +/D [3846 0 R /XYZ 71.731 455.632 null] >> endobj 3877 0 obj << -/D [3836 0 R /XYZ 89.664 347.203 null] +/D [3846 0 R /XYZ 89.664 439.856 null] >> endobj 3878 0 obj << -/D [3836 0 R /XYZ 71.731 345.046 null] +/D [3846 0 R /XYZ 89.664 439.856 null] >> endobj 3879 0 obj << -/D [3836 0 R /XYZ 89.664 329.271 null] +/D [3846 0 R /XYZ 71.731 424.748 null] >> endobj 3880 0 obj << -/D [3836 0 R /XYZ 89.664 329.271 null] +/D [3846 0 R /XYZ 89.664 408.972 null] >> endobj 3881 0 obj << -/D [3836 0 R /XYZ 206.435 316.319 null] +/D [3846 0 R /XYZ 89.664 408.972 null] >> endobj 3882 0 obj << -/D [3836 0 R /XYZ 335.639 316.319 null] +/D [3846 0 R /XYZ 71.731 380.912 null] >> endobj 3883 0 obj << -/D [3836 0 R /XYZ 71.731 314.162 null] +/D [3846 0 R /XYZ 89.664 365.136 null] >> endobj 3884 0 obj << -/D [3836 0 R /XYZ 71.731 240.494 null] +/D [3846 0 R /XYZ 89.664 365.136 null] >> endobj 3885 0 obj << -/D [3836 0 R /XYZ 89.664 224.718 null] +/D [3846 0 R /XYZ 71.731 362.979 null] >> endobj 3886 0 obj << -/D [3836 0 R /XYZ 89.664 224.718 null] +/D [3846 0 R /XYZ 89.664 347.203 null] >> endobj 3887 0 obj << -/D [3836 0 R /XYZ 71.731 185.764 null] +/D [3846 0 R /XYZ 89.664 347.203 null] >> endobj 3888 0 obj << -/D [3836 0 R /XYZ 89.664 167.931 null] +/D [3846 0 R /XYZ 71.731 345.046 null] >> endobj 3889 0 obj << -/D [3836 0 R /XYZ 89.664 167.931 null] +/D [3846 0 R /XYZ 89.664 329.271 null] >> endobj 3890 0 obj << -/D [3836 0 R /XYZ 71.731 152.823 null] +/D [3846 0 R /XYZ 89.664 329.271 null] >> endobj 3891 0 obj << -/D [3836 0 R /XYZ 89.664 137.047 null] +/D [3846 0 R /XYZ 206.435 316.319 null] >> endobj 3892 0 obj << -/D [3836 0 R /XYZ 89.664 137.047 null] +/D [3846 0 R /XYZ 335.639 316.319 null] >> endobj 3893 0 obj << -/D [3836 0 R /XYZ 71.731 134.89 null] +/D [3846 0 R /XYZ 71.731 314.162 null] >> endobj 3894 0 obj << -/D [3836 0 R /XYZ 89.664 119.114 null] +/D [3846 0 R /XYZ 71.731 240.494 null] >> endobj 3895 0 obj << -/D [3836 0 R /XYZ 89.664 119.114 null] +/D [3846 0 R /XYZ 89.664 224.718 null] +>> endobj +3896 0 obj << +/D [3846 0 R /XYZ 89.664 224.718 null] +>> endobj +3897 0 obj << +/D [3846 0 R /XYZ 71.731 185.764 null] +>> endobj +3898 0 obj << +/D [3846 0 R /XYZ 89.664 167.931 null] +>> endobj +3899 0 obj << +/D [3846 0 R /XYZ 89.664 167.931 null] +>> endobj +3900 0 obj << +/D [3846 0 R /XYZ 71.731 152.823 null] +>> endobj +3901 0 obj << +/D [3846 0 R /XYZ 89.664 137.047 null] +>> endobj +3902 0 obj << +/D [3846 0 R /XYZ 89.664 137.047 null] +>> endobj +3903 0 obj << +/D [3846 0 R /XYZ 71.731 134.89 null] +>> endobj +3904 0 obj << +/D [3846 0 R /XYZ 89.664 119.114 null] +>> endobj +3905 0 obj << +/D [3846 0 R /XYZ 89.664 119.114 null] >> endobj 1663 0 obj << -/D [3836 0 R /XYZ 71.731 99.025 null] +/D [3846 0 R /XYZ 71.731 99.025 null] >> endobj -3835 0 obj << +3845 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3899 0 obj << +3909 0 obj << /Length 1184 /Filter /FlateDecode >> stream xڍVKo�6��W�V�i��(i���)���.Т�-і=I^�����l��Ep���㳤���)�� �c/of�����f�%�,����������D�Co���0��^*���[��J�m?_�8����jwD~<�^��6��?�~\��a"�4|7�I�.(z2J�Ք\�$J]PZDI��_��\�%��)�������t: T��'��o�����^����_W[Ge~>��?�]o�#������?�Ě��#��O$�5B���_��THf�ACp�b3���m;�'bK�yW�ڱ#�s�/n�EP`-=�FB��w�0�,��� WU�5��z�v��˥���w&�V�&��=g1�H��s���a*"xc**��R*����z�/����eE~o��ԌU�� 6"�b,��xC�G -���y����;q����;V9c�T/l�b�j�Β���v����aݢ2}C��Y�kB�*�w�t���t9��a�y�Ű��mjГ������&OU��[�h��\��q��.�q�a�:�<�]�5V@J2�w�}��c�qXA���>:����?~�BT�1������LD��˼�և�c8r�b�ĺ�w�1B�wޑ �n��1F�R(�$D��`!�� �����y�f4K�����$��W���>w�_g���C�+�o��L��f���~����8%A2\o���Ao�_�jy��g>/�eO��i8�����������홤���i��-��;�Rb�H�Ⱞ]?.�%�v�9�C �7��^RH$�u�$�Dq ��0چ��ϹD�>�BFb��ḎKޔ�N����!�i���ଜ��\_.�P�_nz�����`��ۯ|W�s�����tL%��#��GH��[�"e���mi(�?�֔F�lq9�ȶ�a��#��q������I��^�����\M@����@���\-+��bA�{a���6賘�aB:���>��,M���(���Ân�C=V��ߧ]z�S߁�8��d�t���c� vR,���/�}˖9Y�xMP�*���iԈ���]e�5�d����}��O��@��AG2���2��W���xd��ld� ���8�lo�O��M�y�>�n��yo�t��T&�~�^D�qc��@MF��o}��{�� -� -endstream +���y����;q����;V9c�T/l�b�j�Β���v����aݢ2}C��Y�kB�*�w�t���t9��a�y�Ű��mjГ������&OU��[�h��\��q��.�q�a�:�<�]�5V@J2�w�}��c�qXA���>:����?~�BT�1������LD��˼�և�c8r�b�ĺ�w�1B�wޑ �n��1F�R(�$D��`!�� �����y�f4K�����$��W���>w�_g���C�+�o��L��f���~����8%A2\o���Ao�_�jy��g>/�eO��i8�����������홤���i��-��;�Rb�H�Ⱞ]?.�%�v�9�C �7��^RH$�u�$�Dq ��0چ��ϹD�>�BFb��ḎKޔ�N����!�i���ଜ��\_.�P +�/7�i�r�|����W���9~��P]:�}���#�J�-B���j�4�l k��k���[�d[�0T��HԸH��J`�$�X/��D�o�& Ck`Q�`MD��I�K� n���C�W�YL�0!���Ng���&���DEQ��aA7͡�}��S�.=��@l��T2[�~���;��������ގ��e˜,s�&�CCC�4jD��t��2��@2����>� ߧ�r��ޠ#��w�Me���Z�J<�J{62��LUY�m�7֧¿ަ�<M�m���w���7@:JE*�w?r/"w߸�JE�&#O���]�=��� endstream endobj -3898 0 obj << +3908 0 obj << /Type /Page -/Contents 3899 0 R -/Resources 3897 0 R +/Contents 3909 0 R +/Resources 3907 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3806 0 R -/Annots [ 3902 0 R ] +/Parent 3800 0 R +/Annots [ 3912 0 R ] >> endobj -3896 0 obj << +3906 0 obj << /Type /XObject /Subtype /Image /Width 496 @@ -14392,55 +14450,55 @@ ooo �Ç�����s�>}�-[����ob*"77������`ǎ��5��^^^���k��$��oݺ�jժ��`???���.J>lll�7o~��y����Aw���ݓ��$ 444|��U�7wZZ�������:nܸ�]�����(QB�{F�dɒ������СC�?f]��Ag���H� d:�e|�:�25ܡC-p�ÇѠ�눈���烱���۶m[�v���9�V2�~U�V�U�V���ٳ�n� ��ݻw��00�����P�8?������aaa���PΓ��$���ׯ���YYY��>�?SSS_�~��ѣ7n�Q���={��]Y y�̙����������֭��V�^=GGG��%��J�Y�&^>|8۶m���/_��=#��{4S���+A��U��u����ؠbA� RKKKr,)6H]�_@ �*��Z�� E�:H�;�j�������5j��\E>ǰEZ������c��"E�`T������wrrrvvnР�/��ҡC??���5jҤI�g�^�lF���h5�Qrr2�X������ɓŋ��=�����͋��JHH`D�$.\��g�0m@@@�ʕ���'�x��ÇЍ��ӳ�������M���ׁ�����Gc�C��jժ�� C����x�Pjendstream endobj -3902 0 obj << +3912 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [447.961 682.032 491.62 690.943] /Subtype /Link /A << /S /GoTo /D (lifecycle-image) >> >> endobj -3900 0 obj << -/D [3898 0 R /XYZ 71.731 729.265 null] +3910 0 obj << +/D [3908 0 R /XYZ 71.731 729.265 null] >> endobj 666 0 obj << -/D [3898 0 R /XYZ 259.687 705.748 null] +/D [3908 0 R /XYZ 259.687 705.748 null] >> endobj -3901 0 obj << -/D [3898 0 R /XYZ 71.731 693.31 null] +3911 0 obj << +/D [3908 0 R /XYZ 71.731 693.31 null] >> endobj -3903 0 obj << -/D [3898 0 R /XYZ 460.835 671.237 null] +3913 0 obj << +/D [3908 0 R /XYZ 460.835 671.237 null] >> endobj -3904 0 obj << -/D [3898 0 R /XYZ 220.262 658.286 null] +3914 0 obj << +/D [3908 0 R /XYZ 220.262 658.286 null] >> endobj -1826 0 obj << -/D [3898 0 R /XYZ 71.731 656.129 null] +1824 0 obj << +/D [3908 0 R /XYZ 71.731 656.129 null] >> endobj -3905 0 obj << -/D [3898 0 R /XYZ 71.731 618.405 null] +3915 0 obj << +/D [3908 0 R /XYZ 71.731 618.405 null] >> endobj 1664 0 obj << -/D [3898 0 R /XYZ 71.731 221.32 null] +/D [3908 0 R /XYZ 71.731 221.32 null] >> endobj 670 0 obj << -/D [3898 0 R /XYZ 263.164 176.066 null] +/D [3908 0 R /XYZ 263.164 176.066 null] >> endobj -3906 0 obj << -/D [3898 0 R /XYZ 71.731 163.628 null] +3916 0 obj << +/D [3908 0 R /XYZ 71.731 163.628 null] >> endobj -3907 0 obj << -/D [3898 0 R /XYZ 245.796 141.555 null] +3917 0 obj << +/D [3908 0 R /XYZ 245.796 141.555 null] >> endobj -3908 0 obj << -/D [3898 0 R /XYZ 71.731 134.417 null] +3918 0 obj << +/D [3908 0 R /XYZ 71.731 134.417 null] >> endobj -3897 0 obj << +3907 0 obj << /Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F32 1139 0 R >> -/XObject << /Im1 3896 0 R >> +/XObject << /Im1 3906 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj -3911 0 obj << +3921 0 obj << /Length 2105 /Filter /FlateDecode >> @@ -14454,140 +14512,140 @@ xڥYK $�����0c�Ǘ�4K_2�g���7��2����0~Sh�E#�߇�t���Q���"��G4�_\@����Aa�&��h��4�2Ж��B��{@�w���K�'e�^r��M����u�_N���hl��� ����s9F�J�WH�?,�$�܀��a���(ܭf�>�WՔ@5sҜAa� 2��'��A�p��$W���ҍ���f� w����Ů�_��is�]|v���k �.�M���O�,�փ� -��P���h�V�i��b]u�H��1|Հ2U�&��mtu9���H����+a�L%O��w7kq��;P&�V��ݹ>殏=�=��;����n�VF/_z[�ɵ_6<���&~��SI�g��endstream +��P���h�V�i��b]u�H��1|Հ2U�&��mtu9���H����+a�L%O��w7kq��;P&�V��ݹ>殏=�=��;����n�VF/_z[�ɵ_6<嘠���ܟ;�����endstream endobj -3910 0 obj << +3920 0 obj << /Type /Page -/Contents 3911 0 R -/Resources 3909 0 R +/Contents 3921 0 R +/Resources 3919 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3806 0 R +/Parent 3800 0 R >> endobj -3912 0 obj << -/D [3910 0 R /XYZ 71.731 729.265 null] +3922 0 obj << +/D [3920 0 R /XYZ 71.731 729.265 null] >> endobj 1668 0 obj << -/D [3910 0 R /XYZ 71.731 741.22 null] +/D [3920 0 R /XYZ 71.731 741.22 null] >> endobj -3913 0 obj << -/D [3910 0 R /XYZ 71.731 718.306 null] +3923 0 obj << +/D [3920 0 R /XYZ 71.731 718.306 null] >> endobj 1665 0 obj << -/D [3910 0 R /XYZ 71.731 706.187 null] +/D [3920 0 R /XYZ 71.731 706.187 null] >> endobj 674 0 obj << -/D [3910 0 R /XYZ 217.917 668.971 null] ->> endobj -3914 0 obj << -/D [3910 0 R /XYZ 71.731 661.619 null] ->> endobj -3915 0 obj << -/D [3910 0 R /XYZ 71.731 641.709 null] ->> endobj -3916 0 obj << -/D [3910 0 R /XYZ 71.731 612.882 null] ->> endobj -3917 0 obj << -/D [3910 0 R /XYZ 427.586 600.03 null] ->> endobj -3918 0 obj << -/D [3910 0 R /XYZ 113.318 587.078 null] ->> endobj -3919 0 obj << -/D [3910 0 R /XYZ 205.079 587.078 null] ->> endobj -3920 0 obj << -/D [3910 0 R /XYZ 71.731 566.989 null] ->> endobj -3921 0 obj << -/D [3910 0 R /XYZ 71.731 556.095 null] ->> endobj -3922 0 obj << -/D [3910 0 R /XYZ 71.731 551.113 null] ->> endobj -3923 0 obj << -/D [3910 0 R /XYZ 81.694 528.299 null] +/D [3920 0 R /XYZ 217.917 668.971 null] >> endobj 3924 0 obj << -/D [3910 0 R /XYZ 81.694 528.299 null] +/D [3920 0 R /XYZ 71.731 661.619 null] >> endobj 3925 0 obj << -/D [3910 0 R /XYZ 71.731 526.142 null] +/D [3920 0 R /XYZ 71.731 641.709 null] >> endobj 3926 0 obj << -/D [3910 0 R /XYZ 81.694 510.366 null] +/D [3920 0 R /XYZ 71.731 612.882 null] >> endobj 3927 0 obj << -/D [3910 0 R /XYZ 81.694 510.366 null] +/D [3920 0 R /XYZ 427.586 600.03 null] >> endobj 3928 0 obj << -/D [3910 0 R /XYZ 71.731 508.209 null] +/D [3920 0 R /XYZ 113.318 587.078 null] >> endobj 3929 0 obj << -/D [3910 0 R /XYZ 81.694 492.433 null] +/D [3920 0 R /XYZ 205.079 587.078 null] >> endobj 3930 0 obj << -/D [3910 0 R /XYZ 81.694 492.433 null] ->> endobj -1666 0 obj << -/D [3910 0 R /XYZ 71.731 490.277 null] ->> endobj -678 0 obj << -/D [3910 0 R /XYZ 236.902 457.963 null] +/D [3920 0 R /XYZ 71.731 566.989 null] >> endobj 3931 0 obj << -/D [3910 0 R /XYZ 71.731 451.836 null] ->> endobj -1667 0 obj << -/D [3910 0 R /XYZ 71.731 380.09 null] ->> endobj -682 0 obj << -/D [3910 0 R /XYZ 166.08 346.78 null] +/D [3920 0 R /XYZ 71.731 556.095 null] >> endobj 3932 0 obj << -/D [3910 0 R /XYZ 71.731 338.142 null] +/D [3920 0 R /XYZ 71.731 551.113 null] >> endobj 3933 0 obj << -/D [3910 0 R /XYZ 344.894 327.851 null] +/D [3920 0 R /XYZ 81.694 528.299 null] >> endobj 3934 0 obj << -/D [3910 0 R /XYZ 71.731 313.739 null] +/D [3920 0 R /XYZ 81.694 528.299 null] >> endobj 3935 0 obj << -/D [3910 0 R /XYZ 155.277 291.288 null] +/D [3920 0 R /XYZ 71.731 526.142 null] >> endobj 3936 0 obj << -/D [3910 0 R /XYZ 71.731 281.225 null] +/D [3920 0 R /XYZ 81.694 510.366 null] >> endobj 3937 0 obj << -/D [3910 0 R /XYZ 154.779 256.717 null] +/D [3920 0 R /XYZ 81.694 510.366 null] >> endobj 3938 0 obj << -/D [3910 0 R /XYZ 71.731 245.315 null] +/D [3920 0 R /XYZ 71.731 508.209 null] >> endobj 3939 0 obj << -/D [3910 0 R /XYZ 426.159 222.147 null] +/D [3920 0 R /XYZ 81.694 492.433 null] >> endobj 3940 0 obj << -/D [3910 0 R /XYZ 71.731 210.027 null] +/D [3920 0 R /XYZ 81.694 492.433 null] +>> endobj +1666 0 obj << +/D [3920 0 R /XYZ 71.731 490.277 null] +>> endobj +678 0 obj << +/D [3920 0 R /XYZ 236.902 457.963 null] >> endobj 3941 0 obj << -/D [3910 0 R /XYZ 103.272 161.674 null] +/D [3920 0 R /XYZ 71.731 451.836 null] +>> endobj +1667 0 obj << +/D [3920 0 R /XYZ 71.731 380.09 null] +>> endobj +682 0 obj << +/D [3920 0 R /XYZ 166.08 346.78 null] >> endobj 3942 0 obj << -/D [3910 0 R /XYZ 71.731 151.612 null] +/D [3920 0 R /XYZ 71.731 338.142 null] >> endobj 3943 0 obj << -/D [3910 0 R /XYZ 425.163 127.103 null] +/D [3920 0 R /XYZ 344.894 327.851 null] >> endobj 3944 0 obj << -/D [3910 0 R /XYZ 71.731 114.984 null] +/D [3920 0 R /XYZ 71.731 313.739 null] >> endobj -3909 0 obj << +3945 0 obj << +/D [3920 0 R /XYZ 155.277 291.288 null] +>> endobj +3946 0 obj << +/D [3920 0 R /XYZ 71.731 281.225 null] +>> endobj +3947 0 obj << +/D [3920 0 R /XYZ 154.779 256.717 null] +>> endobj +3948 0 obj << +/D [3920 0 R /XYZ 71.731 245.315 null] +>> endobj +3949 0 obj << +/D [3920 0 R /XYZ 426.159 222.147 null] +>> endobj +3950 0 obj << +/D [3920 0 R /XYZ 71.731 210.027 null] +>> endobj +3951 0 obj << +/D [3920 0 R /XYZ 103.272 161.674 null] +>> endobj +3952 0 obj << +/D [3920 0 R /XYZ 71.731 151.612 null] +>> endobj +3953 0 obj << +/D [3920 0 R /XYZ 425.163 127.103 null] +>> endobj +3954 0 obj << +/D [3920 0 R /XYZ 71.731 114.984 null] +>> endobj +3919 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3947 0 obj << +3957 0 obj << /Length 2811 /Filter /FlateDecode >> @@ -14599,188 +14657,188 @@ C 9/m?\�./�]Nzc#)n@��D�M����>����CpH�xv9X�@����âNO-|G��課q�e\��ti�G6~� p���($e� �#t_|��D96���6��s=& �,q�I��/��L�������ѕ�6��O�&�Rfȓ�)J���`��i�#����qh�A,�<p��"��R�SV�HSiï1 ���rU~dգg{]���w�h�W������1k�#��hf z P�`�WS�%�����;)'�Qu�a��%�]�dg�#H�X��X&�L�ho�ئ(D���9!2�����p��*��DK� È�z}������GPqow����t���֢b �4�,*ц�T��i.��*��+G*:��|����$e=w8'o�p�ww�sA���/?���Ag�w������L0]e:`���q:8ج���T-;�rDn�$�c5�}D��td?yП.G�[�q'�{ƿF��C�Y�� ��;��i#m#ψ�,��u��Ep9ər�<{�W��bKetY�*���eS�b/� 34'�,)8�.��+Q�R���[R?��́�bu-rYf��Byî����/��#m-��vp�vS�[��id�z�����{Y<�Sp~,���J�ǵ����z�N0��k���LP۬@�Na)�%�u� *2Z����^?�%�nr4��' !�������=!��9prr�e*gF����^���\��?٢���)� U`X�1�C���;Tٳ��{��T]���\s����w��n.-G�dX��GU�˕Y/t��c�Nra_�O0�#<�0��$�I��hNo� ��U������␥��mƁ��o�`L��\}�A�L��Y�VA�\�i���]����6M^�˪Ƕ���d��W��,+n�����Fr���3�J7���[t �#��-*��SF��������Կ5��|�l��*��UWT7Xe1w�����5��d!�$84�k��P�|6�����G�?N��ֿmp �R��\���(ղ5��l.w��+��yos��C�5R�� *��ehɶ�dg�j朋Zv������&$��^���'no@@��Vr�"6Z���J;��Nԋ?0q�F��6K�S�7CqH�s��X��m�mW��>�������No �iX"���Xsw�(����l�.<����e�;tD���������y�_��l���i�t���:�Ғ-è�)�݃�Z�ᄤ�g4���Ys��:8AL�&Ӵ�.���H����[0�L�L�4L��3A�804�|E�k�hx��`�38bH�-���$5xmtI�]99ڦR��v��;LJ�M���1�����-��� n�:{��ŻU�Ie� ������]Z�s���b'�����(�cC�?p�>G����gc� -=�"�Mo����p��4���P��=�h�|���AMW��p���cf��̭W�Q�v�^w��N�����{A� ���@'�xe��U�t���Gh#-U|B��,+(��и�~���I�y\�� �"�pjk+�A��*��e(��i*G�|�m�;���g��yߨLb�S�43���<�����U��}I�� ����H}�Q��W�LOW��������n��)�?�ENV�F�/'e/``�q�F�Ԃ_ +=�"�Mo����p��4���P��=�h�|���AMW��p���cf��̭W�Q�v�^w��N�����{A� ���@'�xe��U�t���Gh#-U|B��,+(��и�~���I�y\�� �"�pjk+�A��*��e(��i*G�|�m�;���g��yߨLb�S�43���<�����U��}I�� ����H}�Q��W�LOW��������n��)�?�ENV�F�/'e/``�q�F�Ԃ_ q0كJ���0�>�?�*y�@�F[R�kEN38��R�+U��!�����ْaVn%�K�ΚT��̅U�͖-qQ�*�!-92=!�nI�4�t�G0�[���kl�;�̙�Vo�ۆ�\���κ���kZ�����D�*���w���;I���p4�N*%`�#��� ��0�P7 -S:/ls&�����#i1�(����[:���:���EL{ I�xj8pDW0��_m����e[���j/����ms4��v�+�x��-����s��{�����O��w[&��h�A�m��>�O9�sфendstream +S:/ls&�����#i1�(����[:���:���EL{ I�xj8pDW0��_m����e[���j/����ms4��v�+�x��-����s��{�����O��w[&��h�A�m��>�O9�{��endstream endobj -3946 0 obj << +3956 0 obj << /Type /Page -/Contents 3947 0 R -/Resources 3945 0 R +/Contents 3957 0 R +/Resources 3955 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3806 0 R +/Parent 3972 0 R >> endobj -3948 0 obj << -/D [3946 0 R /XYZ 71.731 729.265 null] +3958 0 obj << +/D [3956 0 R /XYZ 71.731 729.265 null] >> endobj 686 0 obj << -/D [3946 0 R /XYZ 201.526 667.895 null] +/D [3956 0 R /XYZ 201.526 667.895 null] >> endobj -3949 0 obj << -/D [3946 0 R /XYZ 71.731 659.443 null] +3959 0 obj << +/D [3956 0 R /XYZ 71.731 659.443 null] >> endobj -3950 0 obj << -/D [3946 0 R /XYZ 463.469 636.015 null] +3960 0 obj << +/D [3956 0 R /XYZ 463.469 636.015 null] >> endobj -3951 0 obj << -/D [3946 0 R /XYZ 71.731 621.903 null] +3961 0 obj << +/D [3956 0 R /XYZ 71.731 621.903 null] >> endobj -3952 0 obj << -/D [3946 0 R /XYZ 514.935 586.501 null] +3962 0 obj << +/D [3956 0 R /XYZ 514.935 586.501 null] >> endobj -3953 0 obj << -/D [3946 0 R /XYZ 71.731 574.381 null] +3963 0 obj << +/D [3956 0 R /XYZ 71.731 574.381 null] >> endobj -3954 0 obj << -/D [3946 0 R /XYZ 71.731 557.959 null] +3964 0 obj << +/D [3956 0 R /XYZ 71.731 557.959 null] >> endobj 1669 0 obj << -/D [3946 0 R /XYZ 71.731 508.229 null] +/D [3956 0 R /XYZ 71.731 508.229 null] >> endobj 690 0 obj << -/D [3946 0 R /XYZ 183.664 465.132 null] +/D [3956 0 R /XYZ 183.664 465.132 null] >> endobj -3955 0 obj << -/D [3946 0 R /XYZ 71.731 452.694 null] +3965 0 obj << +/D [3956 0 R /XYZ 71.731 452.694 null] >> endobj -3956 0 obj << -/D [3946 0 R /XYZ 71.731 436.434 null] +3966 0 obj << +/D [3956 0 R /XYZ 71.731 436.434 null] >> endobj -3957 0 obj << -/D [3946 0 R /XYZ 71.731 394.756 null] +3967 0 obj << +/D [3956 0 R /XYZ 71.731 394.756 null] >> endobj -3958 0 obj << -/D [3946 0 R /XYZ 71.731 394.756 null] +3968 0 obj << +/D [3956 0 R /XYZ 71.731 394.756 null] >> endobj -3959 0 obj << -/D [3946 0 R /XYZ 71.731 289.666 null] +3969 0 obj << +/D [3956 0 R /XYZ 71.731 289.666 null] >> endobj 1670 0 obj << -/D [3946 0 R /XYZ 71.731 217.77 null] +/D [3956 0 R /XYZ 71.731 217.77 null] >> endobj 694 0 obj << -/D [3946 0 R /XYZ 198.969 174.673 null] +/D [3956 0 R /XYZ 198.969 174.673 null] >> endobj -3960 0 obj << -/D [3946 0 R /XYZ 71.731 162.235 null] +3970 0 obj << +/D [3956 0 R /XYZ 71.731 162.235 null] >> endobj -3961 0 obj << -/D [3946 0 R /XYZ 434.226 153.114 null] +3971 0 obj << +/D [3956 0 R /XYZ 434.226 153.114 null] >> endobj -3945 0 obj << +3955 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3964 0 obj << +3975 0 obj << /Length 2317 /Filter /FlateDecode >> stream -xڝێ۶�=_a�I�Z�|�[�M�4h6A����J�MD]������g��/[,"�Ù��IǓ���*W)|�M�,���&��`�㛘1�2��{zs�!M'�p�L'O�I��a�\NVi����#x؋���l�,�`���QՎ���UY�ٟO?�y��2\��p�No��q΄JV�P�l�:L��������X�\M�ӭf9�EIي(�c��0�6��,���W�a,㉔��%��d~j� WQ<Y��0�֗�L(�����d�Hq8�ބ�ev������-7y��"�z6O����,<��p,��6������e����CP|�v�}�< �h�\�*����������&�s���5-Z�K���(x_Y����*�vф��`�zu��$�,bw�Zum�k�<P�W�(�_��;���K� ������\�F�#%W�����r���,��,K��AlA ���y���`f��c�D*�I���,�C�������N�����*��{DyP���ڹ?~��a���*Y&$x�O���uS���m��R%�D��Z +xڝێ۶�=_a�I�Z�|�[�M�4h6A����J�MD]������g��/[,"�Ù��IǓ���*W)|�M�,���&��`�㛘1�2��{zs�!M'�p�L'O�I��a�\NVi����#x؋���l�,�`���QՎ���UY�ٟO?�y��2\��p�No��q΄JV�P�l�:L��������X�\M�ӭf9�EIي(�c��0�6��,���W�a,㉔��%��d~j� WQ<Y��0�֗�L(�����d�Hq8�ބ�ev������-7y��"�z6O����,<��p,��6������e����CP|�v�}�< �d�\�*����������&�s���5-Z�K���(x_Y����*�vф��`�zu��$�,bw�Zum�k�<P�W�(�_��;���K� ������\�F�#%W�����r���,��,K��AlA ���y���`f��c�D*�I���,�C�������N�����*��{DyP���ڹ?~��a���*Y&$x�O���uS���m��R%�D��Z �+�\�|�Hc�U��YYа9j��B�-�![�Y�}�R;y���S),�S���zu�_>O�̵>��P�Yw1\Q~�r�6�� m��O��vw4�����v��EQ��V���ù�E���ʮz�9����q�M�����ZA#���bM��Q���G9��u�u5v�.���\�ʀ߃�6�#�~03Txq}/,�\N&�_�j0� U��ɵ����sr���4��� ���4�� 3�A%��� i�ss�)PW�ӭy���L�90V^r�V�p㳘Oa�2m�ѩZ�jU%MU2�*] �\Uzw�s[Q�bt�}��uC����<�.�Q?�tlxiʩx�G��k�A��Ol �24�4�����c�o�V�_���������e�pW>�$�ѹ�[��'�2f���`�R��@,';>T�o�T��߬�p4�JY��f�>����09aH��&��u]C�:����b��="����'P��Oo��q���V����t�2���F��o���Q��zZik�Jt3��smZ�S�c�6�1�7G�#Bs��@����F�z�h�><t�Y ��>#���u�Gy?BJ(��K� ��Y�j:�'��*z�I�t�^�k��>͠�6�s� �U9�'P?��%g ���b�qd�Ζ )����6�5`PSN���^��W�{���m�*@!@�TSr|�F~)�m�4羹������1�4mG���fD<;�nAA�6U�w���J���xV��h�eeL��'�@��N��t���Cs���1h��2ڷ&����"��� ���xkZ����4jW9w�5�I�^�3�EN���j����f<"�~�ļ����~k漏)Tj���܍j��ݻ���9oްE(���ۯ��_?_Jy}��wK���-i^Xw��a��~��sp�fu���(u���6Ur��27��C��[. r*L��/Ce��jp%;J8l� X.��$��SY�I�m��rn�ꁫqޔ�$]��I�K�z��K�?z9��gN3T�xE� �}4r�D�����a� ѧ?zO�~�m�(@�C�t-|�ڢ�X[�J�C ����B������&�K��Cy(b�D���H�[[�KV�k����l^kc�d�0���|ͿG�n��8����Zw)D�K��F�r�VκC�j*ט�l�%�5�Cg1����۽�ΗdV�����i�R<��9(�W���CW��0͖Xp�w2��ɦ-�q8�դ�q=wvX���+�hw�=>�1^��SV������G�Bٲ�{�~2�%,m}��� ͻ��f�#�kJ��F\�Z�� �5�Z�o��)�Q*s�utqI�r�2� dH���%��0.��R��d�wVUy�$�,�����o ̏I:�p{���Y0�'X�F(o�qO���XK�K��LY��$u�p��}���� �2�,�֧�i(;�;K��[w��`����'<� %ח#�5���ik�Sa��V�/|��٠�E�ڗ���f��`phܝ=�_�A��s�z=J֥njk#P�w5��v-AH��?����-J9`��)t�[LQ0��/\��8 -|��(X_�q��r;&���m w%$�k������U���8�YOSzy�F�|� C��.����Gw��7���!f�{M[[� ��բ��Q��;_ �a�6>mլ��j� �����l���͟�:��_��:�OϿ����u��&�endstream +|��(X_�q��r;&���m w%$�k������U���8�YOSzy�F�|� C��.����Gw��7���!f�{M[[� ��բ��Q��;_ �a�6>mլ��j� �����l���͟�:��_��:�OϿJ���u��{��endstream endobj -3963 0 obj << +3974 0 obj << /Type /Page -/Contents 3964 0 R -/Resources 3962 0 R +/Contents 3975 0 R +/Resources 3973 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3987 0 R +/Parent 3972 0 R >> endobj -3965 0 obj << -/D [3963 0 R /XYZ 71.731 729.265 null] +3976 0 obj << +/D [3974 0 R /XYZ 71.731 729.265 null] >> endobj -3966 0 obj << -/D [3963 0 R /XYZ 71.731 718.306 null] +3977 0 obj << +/D [3974 0 R /XYZ 71.731 718.306 null] >> endobj -3967 0 obj << -/D [3963 0 R /XYZ 71.731 706.187 null] +3978 0 obj << +/D [3974 0 R /XYZ 71.731 706.187 null] >> endobj -3968 0 obj << -/D [3963 0 R /XYZ 71.731 701.206 null] +3979 0 obj << +/D [3974 0 R /XYZ 71.731 701.206 null] >> endobj -3969 0 obj << -/D [3963 0 R /XYZ 89.664 680.448 null] +3980 0 obj << +/D [3974 0 R /XYZ 89.664 680.448 null] >> endobj -3970 0 obj << -/D [3963 0 R /XYZ 116.855 680.448 null] +3981 0 obj << +/D [3974 0 R /XYZ 116.855 680.448 null] >> endobj -3971 0 obj << -/D [3963 0 R /XYZ 466.355 680.448 null] +3982 0 obj << +/D [3974 0 R /XYZ 466.355 680.448 null] >> endobj -3972 0 obj << -/D [3963 0 R /XYZ 71.731 665.34 null] +3983 0 obj << +/D [3974 0 R /XYZ 71.731 665.34 null] >> endobj -3973 0 obj << -/D [3963 0 R /XYZ 89.664 649.564 null] +3984 0 obj << +/D [3974 0 R /XYZ 89.664 649.564 null] >> endobj -3974 0 obj << -/D [3963 0 R /XYZ 71.731 647.407 null] +3985 0 obj << +/D [3974 0 R /XYZ 71.731 647.407 null] >> endobj -3975 0 obj << -/D [3963 0 R /XYZ 89.664 631.631 null] +3986 0 obj << +/D [3974 0 R /XYZ 89.664 631.631 null] >> endobj -3976 0 obj << -/D [3963 0 R /XYZ 71.731 616.523 null] +3987 0 obj << +/D [3974 0 R /XYZ 71.731 616.523 null] >> endobj -3977 0 obj << -/D [3963 0 R /XYZ 89.664 600.747 null] +3988 0 obj << +/D [3974 0 R /XYZ 89.664 600.747 null] >> endobj -3978 0 obj << -/D [3963 0 R /XYZ 71.731 593.609 null] +3989 0 obj << +/D [3974 0 R /XYZ 71.731 593.609 null] >> endobj -3979 0 obj << -/D [3963 0 R /XYZ 71.731 562.725 null] +3990 0 obj << +/D [3974 0 R /XYZ 71.731 562.725 null] >> endobj -3980 0 obj << -/D [3963 0 R /XYZ 71.731 533.898 null] +3991 0 obj << +/D [3974 0 R /XYZ 71.731 533.898 null] >> endobj 1671 0 obj << -/D [3963 0 R /XYZ 71.731 500.956 null] +/D [3974 0 R /XYZ 71.731 500.956 null] >> endobj 698 0 obj << -/D [3963 0 R /XYZ 211.45 457.859 null] +/D [3974 0 R /XYZ 211.45 457.859 null] >> endobj -3981 0 obj << -/D [3963 0 R /XYZ 71.731 449.036 null] +3992 0 obj << +/D [3974 0 R /XYZ 71.731 449.036 null] >> endobj -3982 0 obj << -/D [3963 0 R /XYZ 71.731 403.259 null] +3993 0 obj << +/D [3974 0 R /XYZ 71.731 403.259 null] >> endobj -3983 0 obj << -/D [3963 0 R /XYZ 71.731 374.531 null] +3994 0 obj << +/D [3974 0 R /XYZ 71.731 374.531 null] >> endobj -3984 0 obj << -/D [3963 0 R /XYZ 71.731 374.531 null] +3995 0 obj << +/D [3974 0 R /XYZ 71.731 374.531 null] >> endobj 1672 0 obj << -/D [3963 0 R /XYZ 71.731 296.669 null] +/D [3974 0 R /XYZ 71.731 296.669 null] >> endobj 702 0 obj << -/D [3963 0 R /XYZ 333.287 257.297 null] +/D [3974 0 R /XYZ 333.287 257.297 null] >> endobj -3985 0 obj << -/D [3963 0 R /XYZ 71.731 246.932 null] +3996 0 obj << +/D [3974 0 R /XYZ 71.731 246.932 null] >> endobj 1673 0 obj << -/D [3963 0 R /XYZ 71.731 206.189 null] +/D [3974 0 R /XYZ 71.731 206.189 null] >> endobj 706 0 obj << -/D [3963 0 R /XYZ 411.1 166.916 null] +/D [3974 0 R /XYZ 411.1 166.916 null] >> endobj -3986 0 obj << -/D [3963 0 R /XYZ 71.731 156.551 null] +3997 0 obj << +/D [3974 0 R /XYZ 71.731 156.551 null] >> endobj 1674 0 obj << -/D [3963 0 R /XYZ 71.731 113.75 null] +/D [3974 0 R /XYZ 71.731 113.75 null] >> endobj -3962 0 obj << +3973 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -3990 0 obj << +4000 0 obj << /Length 1979 /Filter /FlateDecode >> @@ -14791,178 +14849,186 @@ l H�! ӕ���_�/�M��=�#@�̕���s�1a�^u[���)��|������;���������c��ǜ˷).��4�����R܂�D���7����B[����\ۀX{�{67��� 1&w���3�hwBv�۾�1[6����&����@���Dd���hEe�X�����6U��ҋWkO���z���#�_j���b!m������,};�}3m;a�7I� �PWm�����N�yY;Y_�ㅭ��y;�6�>�rN;(&@�$^2`4�c��ێ��b��"?fc\ �3WM��Ç��~�3l#+��rn!�p���6 $�`65f/뛪��f�3��_�t�J)u�$��ڞWV �SY,�ɀF����Rd3�s+�J �j���b�LS[)c���a�n�(�����i�P��$j/��_�nX��ʄ��Y�y�䍱5��� ���$���S�h{�@ 힐֓|Q}���z|.���_t&�!��DS9#hW�u&Z�j� �3�l�����m94S�N�`���H�C<��ځ&�εL �SR;E��%0�м<V)���S����<k[��hh�kUw��xռ��'�����`����s�ӝ�,P10FE����&��7aN�vq_5��eO�;Q��͟qo9��0J�(Tb��^g�õx��^��i��X�+���j����^֡٣�m4��"���j@��<�9k0�ڙu�6<�E�ӊ��[�N,�� �/�r���4��!^Ҝ�w5Y��E��7���$�~:�"ll -g���:��O�w�ȶ��K#�P����~dX>��ӹ��[a�I���dj�P��(7Q�`3s��3��A�.��ᠯPʨ~�X/���L{��c��b��CT�@�����H��'mZ����ؓ��dvG4�K]�cQ� ����x�|#٢춌��ĵ2vL��A����D����G��:���U�ga�՟^G��_^U��Ad��}��K���J�/'�:endstream +g���:��O�w�ȶ��K#�P����~dX>��ӹ��[a�I���dj�P��(7Q�`3s��3��A�.��ᠯPʨ~�X/���L{��c��b��CT�@�����H��'mZ����ؓ��dvG4�K]�cQ� ����x�|#٢춌��ĵ2vL��A����D����G��:���U�ga�՟^G��_^U��Ad��}��K���J�/'7�;endstream endobj -3989 0 obj << +3999 0 obj << /Type /Page -/Contents 3990 0 R -/Resources 3988 0 R +/Contents 4000 0 R +/Resources 3998 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3987 0 R +/Parent 3972 0 R >> endobj -3991 0 obj << -/D [3989 0 R /XYZ 71.731 729.265 null] +4001 0 obj << +/D [3999 0 R /XYZ 71.731 729.265 null] >> endobj 710 0 obj << -/D [3989 0 R /XYZ 328.439 707.841 null] +/D [3999 0 R /XYZ 328.439 707.841 null] >> endobj -3992 0 obj << -/D [3989 0 R /XYZ 71.731 697.476 null] +4002 0 obj << +/D [3999 0 R /XYZ 71.731 697.476 null] >> endobj 1675 0 obj << -/D [3989 0 R /XYZ 71.731 641.724 null] +/D [3999 0 R /XYZ 71.731 641.724 null] >> endobj 714 0 obj << -/D [3989 0 R /XYZ 427.527 604.508 null] +/D [3999 0 R /XYZ 427.527 604.508 null] >> endobj -3993 0 obj << -/D [3989 0 R /XYZ 71.731 594.143 null] +4003 0 obj << +/D [3999 0 R /XYZ 71.731 594.143 null] >> endobj 1676 0 obj << -/D [3989 0 R /XYZ 71.731 551.343 null] +/D [3999 0 R /XYZ 71.731 551.343 null] >> endobj 718 0 obj << -/D [3989 0 R /XYZ 319.902 514.127 null] +/D [3999 0 R /XYZ 319.902 514.127 null] >> endobj -3994 0 obj << -/D [3989 0 R /XYZ 71.731 503.762 null] +4004 0 obj << +/D [3999 0 R /XYZ 71.731 503.762 null] >> endobj 1677 0 obj << -/D [3989 0 R /XYZ 71.731 460.962 null] +/D [3999 0 R /XYZ 71.731 460.962 null] >> endobj 722 0 obj << -/D [3989 0 R /XYZ 284.583 423.746 null] +/D [3999 0 R /XYZ 284.583 423.746 null] >> endobj -3995 0 obj << -/D [3989 0 R /XYZ 71.731 413.381 null] +4005 0 obj << +/D [3999 0 R /XYZ 71.731 413.381 null] >> endobj -3996 0 obj << -/D [3989 0 R /XYZ 71.731 372.638 null] +4006 0 obj << +/D [3999 0 R /XYZ 71.731 372.638 null] >> endobj 1678 0 obj << -/D [3989 0 R /XYZ 71.731 339.696 null] +/D [3999 0 R /XYZ 71.731 339.696 null] >> endobj 726 0 obj << -/D [3989 0 R /XYZ 262.26 302.481 null] +/D [3999 0 R /XYZ 262.26 302.481 null] >> endobj -3997 0 obj << -/D [3989 0 R /XYZ 71.731 292.116 null] +4007 0 obj << +/D [3999 0 R /XYZ 71.731 292.116 null] >> endobj 1679 0 obj << -/D [3989 0 R /XYZ 71.731 252.304 null] +/D [3999 0 R /XYZ 71.731 252.304 null] >> endobj 730 0 obj << -/D [3989 0 R /XYZ 223.845 209.207 null] +/D [3999 0 R /XYZ 223.845 209.207 null] >> endobj -3998 0 obj << -/D [3989 0 R /XYZ 71.731 197.035 null] +4008 0 obj << +/D [3999 0 R /XYZ 71.731 197.035 null] >> endobj 1680 0 obj << -/D [3989 0 R /XYZ 71.731 185.491 null] +/D [3999 0 R /XYZ 71.731 185.491 null] >> endobj 734 0 obj << -/D [3989 0 R /XYZ 223.569 148.275 null] +/D [3999 0 R /XYZ 223.569 148.275 null] >> endobj -3999 0 obj << -/D [3989 0 R /XYZ 71.731 140.923 null] +4009 0 obj << +/D [3999 0 R /XYZ 71.731 140.923 null] >> endobj -3988 0 obj << +3998 0 obj << /Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4002 0 obj << -/Length 2378 +4012 0 obj << +/Length 2474 /Filter /FlateDecode >> stream -xڍXm�����_A�!�" l*U�7�;�|���ۇY4�b��ѭ�*?>O�����v�����z���Q2��/,�x�ᑮ�4�6�W��3߾JTb�"�3���Ww�d�`��l��fYgy>Xdi����u��ao��6�I:�Fy,ϏmY�|��~)�ʌ���뫿�� ��"^-�_�)�\�.NF�w�.�l6c��{��wwOOO�|ŏ�t��kF�2� a�b=�G�2z���]S�B��Nf�0���t/�/�1J��6�����GP���i���/7{���Q�{:M-4�+k5noɑp�$I㕞�{%����u�8�`�:��i�=���r5����U���f�K�l6�'1�,�q����-��� ����|,���yvC���l�'�Y�&�LYyw���R�'K������7^:�P�E�[�[>K��w&7d�w����TA����|��$��=����e<�D�H���P�W�,C(�\!�Z����B�[y>�N���V(#��9`Pw�D�֭4|N�z2�*۽�B�c���8�<��[��C�n��ۭkT��[�ܑE��y�K �λS��?hBL���G�i�3��K[C��^z�Ϥ�i�D6Hf����[�0�F�1 E���]�����Z���wݫ�3���t�@���p -'���=��F����x�@?yt�i"�~�,;d�s�P 0ߵV5,%�i�0��,�mX��x�s�`�l�jy2��/��"�7d{�>I���� ��s��8'��p�E!�fX� �����+���J���La6_��V�'�'� ���%D 3�~�LX���,���@����p�����A�7�A4gl���yq��Dy�o��W�2O/��(�*x�]Y�/f����Wt���*N�3�A�S~�S(��Y(~oN ��*:����2>IPf��1JX�k�ϥ1[F���l�>̖/��m��P�_��s��m�h�hvv,��r�)p�J����}g�c0c>��;��t�;��C��DdET�&TH!������(�ß�)'O�����6(�JZۯa�;S�O|�0�D �����D02VE+#rq�'�#j,��$�� -%��niK)[�� �dN�<�ސ�m|Y���Q,e��� ;7b�<���8�X�_��6[�����l9(f�.�8�g!ڣ9u��\���ƶ�i�JD���Sad]lW,S��Fˌ7����S7�"Va�{a���Pb1 ��E/V3���B�Yb��V�l\lj���xґW�[c�"������v ��\���v���,8���Sn�7u�����V@7W���g.e��4$��mݞ��Q�|�9�b�:(��3�Y+��X�r �a+#���{]���fj=5�cağk2�~ځb�p�=|��&��|x����@U�ti�rw�[C����� -�K������ ��%�^���G���7a�Ǖ5�����կ���>"Uі|c�5Ou[��C���Y�I�A�9h�A�2|+���C߬�����c��@[m{uBN'�<I "Tro���Z�Q�=Ѷ�r)���`��P�����8���\���N|���ݻp��{���Ɨ�����Q�����1���.D�{~���y�G>jI�"E!Z6fc�zcR7���������mI��}W�FH�ѿ:X��f,ܶݘQy��KDV�(��Ů�qp��g�r6�ӛ�v7De�,�Ekζ,�$N�s��g�lۇ41+VIm%^�3�G�����i�Wy���iٓN��^��B$9���C��pB -��/����UXO�Chq����VV�G�<jʃ��W���I�wi�ɵ ������R���+�=W�ݓ"�d�|zJ F��=�Df�%ݜ��gv� �W���k�E����my�n�۪���$!���c FZC�������XT��>�O��r��n���j�_�Y"���?��p�CMxW��4�QwDЪV���>����<j)ؒUN�v"�:"lA)Bb�B�حm>⇗"���"k�VI)��N�����~�:)���zO���,��!�F�ڙ�k>���V���y�>��W�d���ѫ�+��ϗ�p�wҷ&�I"�U]�<p��N����4� -҂��I~��+���0�w��wᆣ��i]H6�lօnQ��L�<��HP��R�D��P7^f��[�:���C��}&k�Y,˼�?� [��K��͈p=�Q�~@^J����B�^�h4�!��:�Q}|���WW��7�����?v���i��8Iq+Or���/?o�W��2^&�_��~���>O��4 Jh�E�����;�?`Oendstream +xڍYߓ۶~�_������x")Q�u2�}Mw�I�m� I�)B!��/�?����%Yr���X,���*M�/-�x�ᑮ�4������h����HT�VEnOd^�_�}�e�U�ʳ�z3�eY���h���r���忣��9xێo��4�cy��f+��~�kU�f����_|�6�g�x��~Ӧ saT�8�m���ٌm��y���{zz��(~��H�];N����-�xD-�G+߷�-���d���������$:n���~�>��ηpN'��]U섿�^x�G��t�Zh*�W5j�Β#��$�Wz�q�̣_*�w���i�p&�����������^�6�\�f���<�1f������"�P�@�PB:��g����{S�B�,M.7؛���~kե�/�^���j^�_Q�Y�k�>K����,L��~�:��驂�\���n�I��[^}��O��4� �Z�C��^����bp����w�Um���z�z>X��<��A��[���9���L>Q��\_�Bz/�P�1�i���Z����nts�q� +VAq�C�[�^: ` D�{w�R��B� Q�x6�~��Me(,���L��6Nd�dX� (����`DR4;��W�·Κ����u�:N�*�)AT�2^�)�̢ +�tBy���K��G��&�����C�;W���}gU��R�����Nf�hæ� +�mX�т�������k�X�ߐU�e�$!���+0��X�q��l>Z�9�_�t�a '�s�{�3/\H��+��e +���ĥ�b'< <�L-!��ʄEj����ϗH`t�����y�&(��3����>:�!!��\�(��O���*^��yP���k6��,����k���+��_zl������c�����n��x��<��%0� ;����8a]2WG� +����;S�6���z�{�2b����h���J;�PW����7Wi�X-�M���`�Kzs�ٳ$l�%��<KK�ᤣr=CO�r<�S���G�4���72}�$�6���E��E�0���~����r������W���|�w�Oj�b[��*���,5���L�<� +�rT�V���7��N�r� *��3S�|� +�} "� g�|*5�C�!��l9?hćG���d��3�8����$L�Ϫ+t4�tK[Iu>�~gH��t��9��W͠��R智��s+fQP�0B{� \�G�2�ϖ�a&�|�:;���_{�,Dw0{�֡g�GKWخ3mU��rS`r�:MB��v�2�/a��x��Y��l_��U��^�Fd�.tP��"AQnZI�V +Ig���ku�(\��^�K�IG^�#ǍG�@�ûn�}`?is�N�5:�oߩ:$��}gk9��t����p��Jm��s��ʼnKYp> Ʌ!�=�t'�yT;kNb�ؿ +=�b� +ej�l'J���k� �fj=�^��rP�Jv���i���YKSݼ�5�n��p36oeTҥs��Zu����U�ƙ +�*�i�F}�����=K<�����Q�(��e4_x��?�*�� ���_]��{n�R�A]�3P\5�T�u��U�F�����UԈ��6Y(7��x��0�d)�=x�X3��V�A��� 5OR��ܙGi��Vb{i���B)���`���d�ϵ�r4y)#��W� H��(�T�:ŎVe�;��L��+��q���"2���x����"��h�D���[7x�MH�pn��Fx��B�������$�bxu�J��D�]�N���nQZ����$����l�g0�m�6�,oe�,Zs�ei&�p�D�4g�,�톐&�c��*���I�F� �?�3�*o�s2-{�)��+�P�$G"�z�('�������V�M��&��zJB�K�P\wײz=��Q[��F�p@�$/8k�!�����Hnl�s�ƨ;o��^���z��$���cj0� ��$��DGE�A�C���������tQg$)�tW��[���v*Q�J� #����FZC����wo���DT��ޝN��re�n��j�j�_�Y"�����p�CMx�t�4�Q@ЪV���>����4j)ؒUN'�d눰%�Q|�� +b7�m�P�^�h�b!��d��"�q�;S��I�7��b +>�wT��:��3rjDѩ��������keE흷��|A�����עj�J��7x'}k��$"|��n��~����]��(piAX��$?�̗�a��;˷��p�Q�д�.%�6�L7���_D&|�YKK$(�o��L��_ �+/��N-�_M�[P�>���(Od^��\�A8�.+Qڢ��P ����Ki��xY�!�}���Es!2)m����Ƿj�z���M�p��W����2V2��'�*N�\�>ğ~��e�L����Q��g�y���iPB�,f����r�����endstream endobj -4001 0 obj << +4011 0 obj << /Type /Page -/Contents 4002 0 R -/Resources 4000 0 R +/Contents 4012 0 R +/Resources 4010 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3987 0 R +/Parent 3972 0 R >> endobj -4003 0 obj << -/D [4001 0 R /XYZ 71.731 729.265 null] +4013 0 obj << +/D [4011 0 R /XYZ 71.731 729.265 null] >> endobj -4004 0 obj << -/D [4001 0 R /XYZ 282.496 708.344 null] +4014 0 obj << +/D [4011 0 R /XYZ 282.496 708.344 null] >> endobj -4005 0 obj << -/D [4001 0 R /XYZ 71.731 675.268 null] +4015 0 obj << +/D [4011 0 R /XYZ 71.731 675.268 null] >> endobj -4006 0 obj << -/D [4001 0 R /XYZ 71.731 675.268 null] +4016 0 obj << +/D [4011 0 R /XYZ 71.731 675.268 null] >> endobj -4007 0 obj << -/D [4001 0 R /XYZ 71.731 587.473 null] +4017 0 obj << +/D [4011 0 R /XYZ 71.731 587.473 null] >> endobj 1681 0 obj << -/D [4001 0 R /XYZ 71.731 556.489 null] +/D [4011 0 R /XYZ 71.731 556.489 null] >> endobj 738 0 obj << -/D [4001 0 R /XYZ 197.015 517.216 null] +/D [4011 0 R /XYZ 197.015 517.216 null] >> endobj -4008 0 obj << -/D [4001 0 R /XYZ 71.731 509.297 null] +4018 0 obj << +/D [4011 0 R /XYZ 71.731 509.297 null] >> endobj -4009 0 obj << -/D [4001 0 R /XYZ 103.934 484.14 null] +4019 0 obj << +/D [4011 0 R /XYZ 103.934 484.14 null] >> endobj -4010 0 obj << -/D [4001 0 R /XYZ 105.405 471.189 null] +4020 0 obj << +/D [4011 0 R /XYZ 105.351 471.189 null] >> endobj -4011 0 obj << -/D [4001 0 R /XYZ 71.731 464.051 null] +4021 0 obj << +/D [4011 0 R /XYZ 71.731 464.051 null] >> endobj -4012 0 obj << -/D [4001 0 R /XYZ 352.773 453.256 null] +4022 0 obj << +/D [4011 0 R /XYZ 518.615 453.256 null] >> endobj 1682 0 obj << -/D [4001 0 R /XYZ 71.731 435.224 null] +/D [4011 0 R /XYZ 71.731 433.167 null] >> endobj 742 0 obj << -/D [4001 0 R /XYZ 185.739 395.951 null] +/D [4011 0 R /XYZ 185.739 395.951 null] >> endobj -4013 0 obj << -/D [4001 0 R /XYZ 71.731 388.599 null] +4023 0 obj << +/D [4011 0 R /XYZ 71.731 388.599 null] >> endobj -4014 0 obj << -/D [4001 0 R /XYZ 71.731 316.883 null] +4024 0 obj << +/D [4011 0 R /XYZ 71.731 316.883 null] >> endobj 1683 0 obj << -/D [4001 0 R /XYZ 71.731 288.056 null] +/D [4011 0 R /XYZ 71.731 288.056 null] >> endobj 746 0 obj << -/D [4001 0 R /XYZ 198.349 248.783 null] +/D [4011 0 R /XYZ 198.349 248.783 null] >> endobj -4015 0 obj << -/D [4001 0 R /XYZ 71.731 241.431 null] +4025 0 obj << +/D [4011 0 R /XYZ 71.731 241.431 null] >> endobj -4016 0 obj << -/D [4001 0 R /XYZ 71.731 197.675 null] +4026 0 obj << +/D [4011 0 R /XYZ 71.731 197.675 null] >> endobj -4017 0 obj << -/D [4001 0 R /XYZ 71.731 177.685 null] +4027 0 obj << +/D [4011 0 R /XYZ 71.731 177.685 null] >> endobj -4018 0 obj << -/D [4001 0 R /XYZ 71.731 133.849 null] +4028 0 obj << +/D [4011 0 R /XYZ 71.731 133.849 null] >> endobj -4019 0 obj << -/D [4001 0 R /XYZ 71.731 97.152 null] +4029 0 obj << +/D [4011 0 R /XYZ 71.731 97.152 null] >> endobj -4000 0 obj << +4010 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4022 0 obj << +4032 0 obj << /Length 2247 /Filter /FlateDecode >> @@ -14972,120 +15038,120 @@ xڕَ �d�[�!�@�K���s uz�C~�ͳc�{� J[���=��/إ��?�~�ebv)X{-���Ձ���#�+S d��9�f:-�GBO;�$^R��Wp�{�f4f������� ���e"N�Vd�.����>�?pO8хu��v2ڢ�4�{,��k���=��y��<ݿ;�Op�< ��n2N[|�G�`�qp���:2�+טZ��n�F3�����e#�pI lEF?>���仟�c; /(l��^:�b�օ~H�9�46�m`B���ߟz�����ME����6qnو1�h�챍��6�p�pdME����O8���ۖk�pf�fdE�U4�Rm�#�/�F������s�+'�p����(/�e���9����� �qY�5L�Yw��&����߮�yw�I�wr{sH$���l��ے�h��0����[��� �0��#�-?d�G~�d����~8��!G5F��M�LFUyo�i�O�v&G��F�/k����d�-�a��8-�^Β�ؐ3Uj��D�U���w���,�X�@u��0��b��>��at����W�=4��F�r��~Z���I{��Y���I�?e�*P�ƚ~S�M�6k��PD�nj�b�l5t���m�C�%�fXZ���{Ѝ=���Ju�� ��Y�;����|��|��`�f���H8�o�D���lY���B�c�Y��f�İ���qn�c<��%��1�d��� ��g>�a�~b�qY�hԙx�;W -֗7ǘ)�����u�y�rl��x 2>-%�~,�U}3F{w���xDY�/, ��x��ג���vendstream +֗7ǘ)�����u�y�rl��x 2>-%�~,�U}3F{w���xDY�/, ��x��ג���Ewendstream endobj -4021 0 obj << +4031 0 obj << /Type /Page -/Contents 4022 0 R -/Resources 4020 0 R +/Contents 4032 0 R +/Resources 4030 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3987 0 R +/Parent 3972 0 R >> endobj -4023 0 obj << -/D [4021 0 R /XYZ 71.731 729.265 null] +4033 0 obj << +/D [4031 0 R /XYZ 71.731 729.265 null] >> endobj -4024 0 obj << -/D [4021 0 R /XYZ 71.731 741.22 null] +4034 0 obj << +/D [4031 0 R /XYZ 71.731 741.22 null] >> endobj -4025 0 obj << -/D [4021 0 R /XYZ 71.731 718.306 null] +4035 0 obj << +/D [4031 0 R /XYZ 71.731 718.306 null] >> endobj 1684 0 obj << -/D [4021 0 R /XYZ 71.731 662.351 null] +/D [4031 0 R /XYZ 71.731 662.351 null] >> endobj 750 0 obj << -/D [4021 0 R /XYZ 229.91 625.136 null] +/D [4031 0 R /XYZ 229.91 625.136 null] >> endobj -4026 0 obj << -/D [4021 0 R /XYZ 71.731 614.993 null] +4036 0 obj << +/D [4031 0 R /XYZ 71.731 614.993 null] >> endobj -4027 0 obj << -/D [4021 0 R /XYZ 101.182 605.011 null] +4037 0 obj << +/D [4031 0 R /XYZ 101.182 605.011 null] >> endobj -4028 0 obj << -/D [4021 0 R /XYZ 71.731 586.979 null] +4038 0 obj << +/D [4031 0 R /XYZ 71.731 586.979 null] >> endobj 1685 0 obj << -/D [4021 0 R /XYZ 71.731 531.123 null] +/D [4031 0 R /XYZ 71.731 531.123 null] >> endobj 754 0 obj << -/D [4021 0 R /XYZ 256.243 488.026 null] +/D [4031 0 R /XYZ 256.243 488.026 null] >> endobj -4029 0 obj << -/D [4021 0 R /XYZ 71.731 479.203 null] +4039 0 obj << +/D [4031 0 R /XYZ 71.731 479.203 null] >> endobj 1686 0 obj << -/D [4021 0 R /XYZ 71.731 451.358 null] +/D [4031 0 R /XYZ 71.731 451.358 null] >> endobj 758 0 obj << -/D [4021 0 R /XYZ 262.949 414.143 null] +/D [4031 0 R /XYZ 262.949 414.143 null] >> endobj -4030 0 obj << -/D [4021 0 R /XYZ 71.731 406.791 null] +4040 0 obj << +/D [4031 0 R /XYZ 71.731 406.791 null] >> endobj -4031 0 obj << -/D [4021 0 R /XYZ 406.408 381.067 null] +4041 0 obj << +/D [4031 0 R /XYZ 406.408 381.067 null] >> endobj -4032 0 obj << -/D [4021 0 R /XYZ 512.678 381.067 null] +4042 0 obj << +/D [4031 0 R /XYZ 512.678 381.067 null] >> endobj 1687 0 obj << -/D [4021 0 R /XYZ 71.731 348.026 null] +/D [4031 0 R /XYZ 71.731 348.026 null] >> endobj 762 0 obj << -/D [4021 0 R /XYZ 258.989 310.81 null] +/D [4031 0 R /XYZ 258.989 310.81 null] >> endobj -4033 0 obj << -/D [4021 0 R /XYZ 71.731 303.458 null] +4043 0 obj << +/D [4031 0 R /XYZ 71.731 303.458 null] >> endobj -4034 0 obj << -/D [4021 0 R /XYZ 71.731 288.529 null] +4044 0 obj << +/D [4031 0 R /XYZ 71.731 288.529 null] >> endobj -4035 0 obj << -/D [4021 0 R /XYZ 71.731 283.548 null] +4045 0 obj << +/D [4031 0 R /XYZ 71.731 283.548 null] >> endobj -4036 0 obj << -/D [4021 0 R /XYZ 81.694 262.791 null] +4046 0 obj << +/D [4031 0 R /XYZ 81.694 262.791 null] >> endobj -4037 0 obj << -/D [4021 0 R /XYZ 71.731 260.634 null] +4047 0 obj << +/D [4031 0 R /XYZ 71.731 260.634 null] >> endobj -4038 0 obj << -/D [4021 0 R /XYZ 81.694 249.839 null] +4048 0 obj << +/D [4031 0 R /XYZ 81.694 249.839 null] >> endobj -4039 0 obj << -/D [4021 0 R /XYZ 71.731 234.731 null] +4049 0 obj << +/D [4031 0 R /XYZ 71.731 234.731 null] >> endobj -4040 0 obj << -/D [4021 0 R /XYZ 81.694 223.936 null] +4050 0 obj << +/D [4031 0 R /XYZ 81.694 223.936 null] >> endobj -4041 0 obj << -/D [4021 0 R /XYZ 71.731 210.885 null] +4051 0 obj << +/D [4031 0 R /XYZ 71.731 210.885 null] >> endobj -4042 0 obj << -/D [4021 0 R /XYZ 81.694 198.033 null] +4052 0 obj << +/D [4031 0 R /XYZ 81.694 198.033 null] >> endobj -4043 0 obj << -/D [4021 0 R /XYZ 530.108 198.033 null] +4053 0 obj << +/D [4031 0 R /XYZ 530.108 198.033 null] >> endobj -4044 0 obj << -/D [4021 0 R /XYZ 71.731 195.877 null] +4054 0 obj << +/D [4031 0 R /XYZ 71.731 195.877 null] >> endobj -4045 0 obj << -/D [4021 0 R /XYZ 71.731 162.507 null] +4055 0 obj << +/D [4031 0 R /XYZ 71.731 162.507 null] >> endobj -4046 0 obj << -/D [4021 0 R /XYZ 81.694 151.712 null] +4056 0 obj << +/D [4031 0 R /XYZ 81.694 151.712 null] >> endobj 1688 0 obj << -/D [4021 0 R /XYZ 71.731 144.574 null] +/D [4031 0 R /XYZ 71.731 144.574 null] >> endobj -4020 0 obj << +4030 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4049 0 obj << -/Length 2995 +4059 0 obj << +/Length 2994 /Filter /FlateDecode >> stream @@ -15099,144 +15165,145 @@ xڝ˒۸ �0�>p��O�i!�*m¯1$�kT��e��u����府N8XjPo����5O��<)m���&��}S��=.\���`!�C��:��3/4� ���T��4���)���#)��ȅ��B�Pʒ�C �RHKX 0������������5"��Mj)����+w�S��9�k$�^#~�G�#��4@�$�O��+~�q^1(���f�2�N��z�|Ix��K�����`�1�~��5��XC�����e���v����0�J7!j��֠����q(71h�����@���C��fD�%G���bXh<Y�1�Va��5���8�|�����ч���a��*(��q���T�!��J�Z������a����'��i������ٔٛjU�;�Jx݃喭<N�L�?�Y=�.�X���V���Q9lS3R�a��!�����JGʜ��p�Q��������0u���~Ȅ�t5Mj���[�N�k��'μc��2'��f�O}n;��$N�:��4=����& �@q �J�5�����������8�C�;dkb�����o��� &k�DP\�%b�Q0:�eе����k�*��[�ŀ{V��-� �K�]2{Y�K��Z��A�����χ,�ß��t"i��zqUu�F2�%�^�zq@/\=h-k�7n��`!i������$�E�s�w2�Y��Xl9�*2����d%�X�U}'2����6�0g;o��n|��c�n�P��nDϚ��sÄ�&���EZa~mB6�����9��vR9�dI3�a LJԓN_�oH�[ .0q��JF�`����"�.�1J�!F������c�p+X�����~�Nc��nB�&�[� /Ò��ưd�0���=_{�?���u��y?n��1pD����r4���Lg<kR6N^t��{˯�6/��^�F ����:��ҫ`���%����d�Ы��_[?�;��)l���N��J�&����@hH{F_��7Ѓ��G�1&o[��u1�n�y���<�/�Cƃ��[�P7�U���,u���,g�����#'�l�*���^ ���Y͛���5�#/�G�/m��I8ʩ�p�l+�ك�~)!��mf��m��f,wb�6�4q}֍4S�bo_z|��̫�ib�S��~�F��~�J���\��K���2��S�|�)�X�ٷ�t��B)6�C~�(u��B��'�[U)w�o|����O#�fy��8����ci��A�p�~�+A�N���4lbji���I�9���M���cc#�v��\�C�r�_�aį���*᭻A����m���m$�ֿ��K�#1���%d��C�� ߕ����#��2��`rQجx��<�� -�\c�A�j�[˿Km&����&%����d�¤���<�������<�O��e���Q������G����Թ4$;��ˉJ��FmF���Z���@j�0��>���o�a��.�������@K�w�"_��?�;�X}}��S����K%dؒ�"`F�-��@π�%=q�api�hfj���ьGx����Nh���e�0��(� ��Τ��q�VG��?�/�i����Y�I�])������#�<�{!/�.�.��I�m�»R�E���Ͽ�'�ſ��A�B~\���%��_��endstream +�\c�A�j�[˿Km&����&%����d�¤���<�������<�O��e���Q������G����Թ4$;��ˉJ��FmF���Z���@j�0��>���o�a��.�������@K�w�"_��?�;�X}}��S����K%dؒ�"`F�-��@π�%=q�api�hfj���ьGx����Nh���e�0��(� ��Τ��q�VG��?�/�i����Y�I�])������#�<�{!/�.�.��I�m�»R�E���Ͽ�'�ſ��A +k#�\����%��,�endstream endobj -4048 0 obj << +4058 0 obj << /Type /Page -/Contents 4049 0 R -/Resources 4047 0 R +/Contents 4059 0 R +/Resources 4057 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3987 0 R ->> endobj -4050 0 obj << -/D [4048 0 R /XYZ 71.731 729.265 null] ->> endobj -4051 0 obj << -/D [4048 0 R /XYZ 71.731 741.22 null] ->> endobj -766 0 obj << -/D [4048 0 R /XYZ 243.84 707.841 null] ->> endobj -4052 0 obj << -/D [4048 0 R /XYZ 71.731 700.488 null] ->> endobj -4053 0 obj << -/D [4048 0 R /XYZ 71.731 628.772 null] ->> endobj -4054 0 obj << -/D [4048 0 R /XYZ 71.731 613.828 null] ->> endobj -4055 0 obj << -/D [4048 0 R /XYZ 71.731 564.777 null] ->> endobj -4056 0 obj << -/D [4048 0 R /XYZ 164.944 551.826 null] ->> endobj -4057 0 obj << -/D [4048 0 R /XYZ 368.717 551.826 null] ->> endobj -4058 0 obj << -/D [4048 0 R /XYZ 273.801 538.874 null] ->> endobj -4059 0 obj << -/D [4048 0 R /XYZ 71.731 531.736 null] +/Parent 3972 0 R >> endobj 4060 0 obj << -/D [4048 0 R /XYZ 317.393 507.99 null] +/D [4058 0 R /XYZ 71.731 729.265 null] >> endobj 4061 0 obj << -/D [4048 0 R /XYZ 232.347 495.039 null] +/D [4058 0 R /XYZ 71.731 741.22 null] +>> endobj +766 0 obj << +/D [4058 0 R /XYZ 243.84 707.841 null] >> endobj 4062 0 obj << -/D [4048 0 R /XYZ 71.731 492.882 null] +/D [4058 0 R /XYZ 71.731 700.488 null] >> endobj 4063 0 obj << -/D [4048 0 R /XYZ 71.731 477.938 null] +/D [4058 0 R /XYZ 71.731 628.772 null] >> endobj 4064 0 obj << -/D [4048 0 R /XYZ 91.656 456.782 null] +/D [4058 0 R /XYZ 71.731 613.828 null] >> endobj 4065 0 obj << -/D [4048 0 R /XYZ 71.731 417.231 null] +/D [4058 0 R /XYZ 71.731 564.777 null] >> endobj 4066 0 obj << -/D [4048 0 R /XYZ 475.448 404.279 null] +/D [4058 0 R /XYZ 164.944 551.826 null] >> endobj 4067 0 obj << -/D [4048 0 R /XYZ 71.731 363.268 null] +/D [4058 0 R /XYZ 368.717 551.826 null] >> endobj 4068 0 obj << -/D [4048 0 R /XYZ 71.731 358.287 null] +/D [4058 0 R /XYZ 273.801 538.874 null] >> endobj 4069 0 obj << -/D [4048 0 R /XYZ 81.694 337.53 null] +/D [4058 0 R /XYZ 71.731 531.736 null] >> endobj 4070 0 obj << -/D [4048 0 R /XYZ 491.507 337.53 null] +/D [4058 0 R /XYZ 317.393 507.99 null] >> endobj 4071 0 obj << -/D [4048 0 R /XYZ 71.731 324.479 null] +/D [4058 0 R /XYZ 232.347 495.039 null] >> endobj 4072 0 obj << -/D [4048 0 R /XYZ 81.694 311.627 null] +/D [4058 0 R /XYZ 71.731 492.882 null] >> endobj 4073 0 obj << -/D [4048 0 R /XYZ 139.516 298.675 null] +/D [4058 0 R /XYZ 71.731 477.938 null] >> endobj 4074 0 obj << -/D [4048 0 R /XYZ 71.731 296.518 null] +/D [4058 0 R /XYZ 91.656 456.782 null] >> endobj 4075 0 obj << -/D [4048 0 R /XYZ 81.694 285.724 null] +/D [4058 0 R /XYZ 71.731 417.231 null] >> endobj 4076 0 obj << -/D [4048 0 R /XYZ 478.291 285.724 null] +/D [4058 0 R /XYZ 475.448 404.279 null] >> endobj 4077 0 obj << -/D [4048 0 R /XYZ 71.731 270.616 null] +/D [4058 0 R /XYZ 71.731 363.268 null] >> endobj 4078 0 obj << -/D [4048 0 R /XYZ 81.694 259.821 null] +/D [4058 0 R /XYZ 71.731 358.287 null] >> endobj 4079 0 obj << -/D [4048 0 R /XYZ 373.716 259.821 null] +/D [4058 0 R /XYZ 81.694 337.53 null] >> endobj 4080 0 obj << -/D [4048 0 R /XYZ 71.731 257.664 null] +/D [4058 0 R /XYZ 491.507 337.53 null] >> endobj 4081 0 obj << -/D [4048 0 R /XYZ 81.694 246.869 null] +/D [4058 0 R /XYZ 71.731 324.479 null] >> endobj 4082 0 obj << -/D [4048 0 R /XYZ 511.114 246.869 null] +/D [4058 0 R /XYZ 81.694 311.627 null] >> endobj 4083 0 obj << -/D [4048 0 R /XYZ 71.731 231.761 null] +/D [4058 0 R /XYZ 139.516 298.675 null] >> endobj 4084 0 obj << -/D [4048 0 R /XYZ 71.731 216.817 null] +/D [4058 0 R /XYZ 71.731 296.518 null] >> endobj 4085 0 obj << -/D [4048 0 R /XYZ 71.731 179.422 null] +/D [4058 0 R /XYZ 81.694 285.724 null] >> endobj 4086 0 obj << -/D [4048 0 R /XYZ 339.03 127.617 null] +/D [4058 0 R /XYZ 478.291 285.724 null] >> endobj 4087 0 obj << -/D [4048 0 R /XYZ 96.637 101.714 null] +/D [4058 0 R /XYZ 71.731 270.616 null] >> endobj 4088 0 obj << -/D [4048 0 R /XYZ 276.322 101.714 null] +/D [4058 0 R /XYZ 81.694 259.821 null] >> endobj 4089 0 obj << -/D [4048 0 R /XYZ 71.731 99.557 null] +/D [4058 0 R /XYZ 373.716 259.821 null] >> endobj -4047 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R /F35 1463 0 R >> -/ProcSet [ /PDF /Text ] +4090 0 obj << +/D [4058 0 R /XYZ 71.731 257.664 null] +>> endobj +4091 0 obj << +/D [4058 0 R /XYZ 81.694 246.869 null] >> endobj 4092 0 obj << -/Length 2397 +/D [4058 0 R /XYZ 511.114 246.869 null] +>> endobj +4093 0 obj << +/D [4058 0 R /XYZ 71.731 231.761 null] +>> endobj +4094 0 obj << +/D [4058 0 R /XYZ 71.731 216.817 null] +>> endobj +4095 0 obj << +/D [4058 0 R /XYZ 71.731 179.422 null] +>> endobj +4096 0 obj << +/D [4058 0 R /XYZ 339.03 127.617 null] +>> endobj +4097 0 obj << +/D [4058 0 R /XYZ 96.637 101.714 null] +>> endobj +4098 0 obj << +/D [4058 0 R /XYZ 276.322 101.714 null] +>> endobj +4099 0 obj << +/D [4058 0 R /XYZ 71.731 99.557 null] +>> endobj +4057 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R /F35 1463 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4102 0 obj << +/Length 2398 /Filter /FlateDecode >> stream @@ -15246,83 +15313,83 @@ $ g����#����935}�ν��*�+���8Vyt�� ������ߣ��7ҀK�D��f 7�)uw�0����nx����2d ��L�ϴI��G�l -�%���$<#<QJ�R~��G(�a�U^�-�'H_�B�L����;Y2���z�O{��ۅT5�*��ן����*����H�E�����%�&-hOY|��[��g��endstream +�%���$<#<QJ�R~��G(�a�U^�-�'H_�B�L����;Y2���z�O{��ۅT5�*��ן����*����H�E�����e\���,?�������endstream endobj -4091 0 obj << +4101 0 obj << /Type /Page -/Contents 4092 0 R -/Resources 4090 0 R +/Contents 4102 0 R +/Resources 4100 0 R /MediaBox [0 0 609.714 789.041] -/Parent 3987 0 R +/Parent 4117 0 R >> endobj -4093 0 obj << -/D [4091 0 R /XYZ 71.731 729.265 null] +4103 0 obj << +/D [4101 0 R /XYZ 71.731 729.265 null] >> endobj -4094 0 obj << -/D [4091 0 R /XYZ 71.731 741.22 null] +4104 0 obj << +/D [4101 0 R /XYZ 71.731 741.22 null] >> endobj -4095 0 obj << -/D [4091 0 R /XYZ 71.731 657.136 null] +4105 0 obj << +/D [4101 0 R /XYZ 71.731 657.136 null] >> endobj -4096 0 obj << -/D [4091 0 R /XYZ 180.774 644.184 null] +4106 0 obj << +/D [4101 0 R /XYZ 180.774 644.184 null] >> endobj -4097 0 obj << -/D [4091 0 R /XYZ 391.53 644.184 null] +4107 0 obj << +/D [4101 0 R /XYZ 391.53 644.184 null] >> endobj -4098 0 obj << -/D [4091 0 R /XYZ 71.731 611.143 null] +4108 0 obj << +/D [4101 0 R /XYZ 71.731 611.143 null] >> endobj -4099 0 obj << -/D [4091 0 R /XYZ 104 574.446 null] +4109 0 obj << +/D [4101 0 R /XYZ 104 574.446 null] >> endobj 1689 0 obj << -/D [4091 0 R /XYZ 71.731 567.308 null] +/D [4101 0 R /XYZ 71.731 567.308 null] >> endobj 770 0 obj << -/D [4091 0 R /XYZ 204.474 530.092 null] +/D [4101 0 R /XYZ 204.474 530.092 null] >> endobj -4100 0 obj << -/D [4091 0 R /XYZ 71.731 522.74 null] +4110 0 obj << +/D [4101 0 R /XYZ 71.731 522.74 null] >> endobj 1690 0 obj << -/D [4091 0 R /XYZ 71.731 479.915 null] +/D [4101 0 R /XYZ 71.731 479.915 null] >> endobj 774 0 obj << -/D [4091 0 R /XYZ 275.232 436.818 null] +/D [4101 0 R /XYZ 275.232 436.818 null] >> endobj -4101 0 obj << -/D [4091 0 R /XYZ 71.731 424.647 null] +4111 0 obj << +/D [4101 0 R /XYZ 71.731 424.647 null] >> endobj 1691 0 obj << -/D [4091 0 R /XYZ 71.731 387.573 null] +/D [4101 0 R /XYZ 71.731 387.573 null] >> endobj 778 0 obj << -/D [4091 0 R /XYZ 174.075 349.984 null] +/D [4101 0 R /XYZ 174.075 349.984 null] >> endobj -4102 0 obj << -/D [4091 0 R /XYZ 71.731 339.841 null] +4112 0 obj << +/D [4101 0 R /XYZ 71.731 339.841 null] >> endobj -4103 0 obj << -/D [4091 0 R /XYZ 71.731 322.721 null] +4113 0 obj << +/D [4101 0 R /XYZ 71.731 322.721 null] >> endobj -4104 0 obj << -/D [4091 0 R /XYZ 71.731 280.943 null] +4114 0 obj << +/D [4101 0 R /XYZ 71.731 280.943 null] >> endobj -4105 0 obj << -/D [4091 0 R /XYZ 71.731 235.05 null] +4115 0 obj << +/D [4101 0 R /XYZ 71.731 235.05 null] >> endobj -4106 0 obj << -/D [4091 0 R /XYZ 71.731 204.165 null] +4116 0 obj << +/D [4101 0 R /XYZ 71.731 204.165 null] >> endobj 1692 0 obj << -/D [4091 0 R /XYZ 71.731 149.436 null] +/D [4101 0 R /XYZ 71.731 149.436 null] >> endobj -4090 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F44 1925 0 R /F27 1132 0 R >> +4100 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4109 0 obj << +4120 0 obj << /Length 2665 /Filter /FlateDecode >> @@ -15338,77 +15405,77 @@ I L8�u}k� �! AR*��q�ߚ�7.��2�,K�5��9��u� //�e�ʂ�X0u�Tz~j������R����I(�^��;�H�P���cJŲP�O1�F; �s���n�����@�垄�k�4~�4��g-�:N��[�O��c������R��F��dd��&F�/?S[����9��(ʦ�sp�|�BW��������(�= ����RoRac�o���:a��RY\6��zj�u�Gc%��9M�HG���%�S�_��!�3B�����Hsԥ��w>�H �m,���6|�&�DI��YA�~��|��V�m�z��l�7/�bI%;)�Q��@��S=%o$�,�'5rj�s�0���}�Ph�P�z�͏'����%M�������m�x�2�?��y�_~��>��Rk��T-�,�^��RD%�%=��:��粣 v�H�b�4`ƗDs��0����N�y�Z$,b[ Ų��Ol�/�%.m��F���Z���As�+�Go�͢�m� -���#�غv��wC��/���O����q���q��Il� �i��/��G�����endstream +���#�غv��wC��/���O����q���q��^`� �i����'��ީ�endstream endobj -4108 0 obj << +4119 0 obj << /Type /Page -/Contents 4109 0 R -/Resources 4107 0 R +/Contents 4120 0 R +/Resources 4118 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4123 0 R +/Parent 4117 0 R >> endobj -4110 0 obj << -/D [4108 0 R /XYZ 71.731 729.265 null] +4121 0 obj << +/D [4119 0 R /XYZ 71.731 729.265 null] >> endobj 782 0 obj << -/D [4108 0 R /XYZ 165.31 707.841 null] +/D [4119 0 R /XYZ 165.31 707.841 null] >> endobj -4111 0 obj << -/D [4108 0 R /XYZ 71.731 700.488 null] +4122 0 obj << +/D [4119 0 R /XYZ 71.731 700.488 null] >> endobj -4112 0 obj << -/D [4108 0 R /XYZ 71.731 630.83 null] +4123 0 obj << +/D [4119 0 R /XYZ 71.731 630.83 null] >> endobj -4113 0 obj << -/D [4108 0 R /XYZ 71.731 615.886 null] +4124 0 obj << +/D [4119 0 R /XYZ 71.731 615.886 null] >> endobj -4114 0 obj << -/D [4108 0 R /XYZ 71.731 564.777 null] +4125 0 obj << +/D [4119 0 R /XYZ 71.731 564.777 null] >> endobj -4115 0 obj << -/D [4108 0 R /XYZ 71.731 518.785 null] +4126 0 obj << +/D [4119 0 R /XYZ 71.731 518.785 null] >> endobj 1693 0 obj << -/D [4108 0 R /XYZ 71.731 469.036 null] +/D [4119 0 R /XYZ 71.731 469.036 null] >> endobj 786 0 obj << -/D [4108 0 R /XYZ 211.497 434.665 null] +/D [4119 0 R /XYZ 211.497 434.665 null] >> endobj -4116 0 obj << -/D [4108 0 R /XYZ 71.731 426.028 null] +4127 0 obj << +/D [4119 0 R /XYZ 71.731 426.028 null] >> endobj -4117 0 obj << -/D [4108 0 R /XYZ 71.731 369.744 null] +4128 0 obj << +/D [4119 0 R /XYZ 71.731 369.744 null] >> endobj -4118 0 obj << -/D [4108 0 R /XYZ 71.731 325.908 null] +4129 0 obj << +/D [4119 0 R /XYZ 71.731 325.908 null] >> endobj -4119 0 obj << -/D [4108 0 R /XYZ 71.731 295.024 null] +4130 0 obj << +/D [4119 0 R /XYZ 71.731 295.024 null] >> endobj -4120 0 obj << -/D [4108 0 R /XYZ 71.731 264.14 null] +4131 0 obj << +/D [4119 0 R /XYZ 71.731 264.14 null] >> endobj 1694 0 obj << -/D [4108 0 R /XYZ 71.731 246.207 null] +/D [4119 0 R /XYZ 71.731 246.207 null] >> endobj 790 0 obj << -/D [4108 0 R /XYZ 255.599 212.897 null] +/D [4119 0 R /XYZ 255.599 212.897 null] >> endobj -4121 0 obj << -/D [4108 0 R /XYZ 71.731 204.259 null] +4132 0 obj << +/D [4119 0 R /XYZ 71.731 204.259 null] >> endobj -4122 0 obj << -/D [4108 0 R /XYZ 71.731 160.927 null] +4133 0 obj << +/D [4119 0 R /XYZ 71.731 160.927 null] >> endobj 1695 0 obj << -/D [4108 0 R /XYZ 71.731 110.117 null] +/D [4119 0 R /XYZ 71.731 110.117 null] >> endobj -4107 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R >> +4118 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4126 0 obj << +4136 0 obj << /Length 2732 /Filter /FlateDecode >> @@ -15422,85 +15489,85 @@ xڥYm {�����J���6@ >I�.���y�������h% z'��� Ԃ�v$��#d�<�| ��7F�<��~�QX�����<�呆��O���˩GV>��cl�Ez"Y��������3 ǐG��N���៶#0�����d1Ze�v��η�^��ɹ�Zmn1-Ƽ8����{�6��S��q�_�㛯��8\��?]��,�T�8�I�<��m���~?s+��"X�t�$ZӺ��"g�W�����=�1�<���i�\�a�^ cw�ͧP�G���˔�f���F���A}2�깯�6�&����v���䔅�P���w��x 0�d�=��x�qJK��D���1d����"��X����S՚��� ���u�݅x}��$�!""��0�%�/w��=�]`�����Tæ-�z��W��+W��N�OU�"���&ӣ �rzx\/��q��e�$�?���IfQ���·MM⣔Ҹ�Ɣc}�e��^����o����T��ݢ������Gvxϳȅe$M���&��Ċ�Veā�/$za�]��6K �3R)?U���y9^�b�i�~+�9֖�����?�RJ]����'L�ͩ���P���(Ƶ!`��l�2 -7P�����B.�(��nZ�E�y�����,)�(qBp�M���W�/���endstream +7P�����B.�(��nZ�E�y�����,)�(qBp�M����W�/���endstream endobj -4125 0 obj << +4135 0 obj << /Type /Page -/Contents 4126 0 R -/Resources 4124 0 R +/Contents 4136 0 R +/Resources 4134 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4123 0 R -/Annots [ 4142 0 R ] +/Parent 4117 0 R +/Annots [ 4152 0 R ] >> endobj -4142 0 obj << +4152 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [138.415 143.149 190.751 149.927] /Subtype /Link /A << /S /GoTo /D (installation-whining) >> >> endobj -4127 0 obj << -/D [4125 0 R /XYZ 71.731 729.265 null] +4137 0 obj << +/D [4135 0 R /XYZ 71.731 729.265 null] >> endobj 794 0 obj << -/D [4125 0 R /XYZ 159.597 706.118 null] +/D [4135 0 R /XYZ 159.597 706.118 null] >> endobj -4128 0 obj << -/D [4125 0 R /XYZ 71.731 693.68 null] +4138 0 obj << +/D [4135 0 R /XYZ 71.731 693.68 null] >> endobj -4129 0 obj << -/D [4125 0 R /XYZ 71.731 664.469 null] +4139 0 obj << +/D [4135 0 R /XYZ 71.731 664.469 null] >> endobj -4130 0 obj << -/D [4125 0 R /XYZ 71.731 633.585 null] +4140 0 obj << +/D [4135 0 R /XYZ 71.731 633.585 null] >> endobj -4131 0 obj << -/D [4125 0 R /XYZ 71.731 576.798 null] +4141 0 obj << +/D [4135 0 R /XYZ 71.731 576.798 null] >> endobj -4132 0 obj << -/D [4125 0 R /XYZ 71.731 558.865 null] +4142 0 obj << +/D [4135 0 R /XYZ 71.731 558.865 null] >> endobj -4133 0 obj << -/D [4125 0 R /XYZ 71.731 527.981 null] +4143 0 obj << +/D [4135 0 R /XYZ 71.731 527.981 null] >> endobj -4134 0 obj << -/D [4125 0 R /XYZ 71.731 497.097 null] +4144 0 obj << +/D [4135 0 R /XYZ 71.731 497.097 null] >> endobj -4135 0 obj << -/D [4125 0 R /XYZ 71.731 453.261 null] +4145 0 obj << +/D [4135 0 R /XYZ 71.731 453.261 null] >> endobj 1696 0 obj << -/D [4125 0 R /XYZ 71.731 409.426 null] +/D [4135 0 R /XYZ 71.731 409.426 null] >> endobj 798 0 obj << -/D [4125 0 R /XYZ 182.7 366.328 null] +/D [4135 0 R /XYZ 182.7 366.328 null] >> endobj -4136 0 obj << -/D [4125 0 R /XYZ 71.731 353.89 null] +4146 0 obj << +/D [4135 0 R /XYZ 71.731 353.89 null] >> endobj -4137 0 obj << -/D [4125 0 R /XYZ 71.731 303.758 null] +4147 0 obj << +/D [4135 0 R /XYZ 71.731 303.758 null] >> endobj -4138 0 obj << -/D [4125 0 R /XYZ 118.555 265.194 null] +4148 0 obj << +/D [4135 0 R /XYZ 118.555 265.194 null] >> endobj -4139 0 obj << -/D [4125 0 R /XYZ 118.555 226.441 null] +4149 0 obj << +/D [4135 0 R /XYZ 118.555 226.441 null] >> endobj -4140 0 obj << -/D [4125 0 R /XYZ 71.731 181.509 null] +4150 0 obj << +/D [4135 0 R /XYZ 71.731 181.509 null] >> endobj -4141 0 obj << -/D [4125 0 R /XYZ 71.731 161.584 null] +4151 0 obj << +/D [4135 0 R /XYZ 71.731 161.584 null] >> endobj -4143 0 obj << -/D [4125 0 R /XYZ 76.712 126.695 null] +4153 0 obj << +/D [4135 0 R /XYZ 76.712 126.695 null] >> endobj -4124 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R >> +4134 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4146 0 obj << +4156 0 obj << /Length 2729 /Filter /FlateDecode >> @@ -15512,82 +15579,82 @@ v 0����̀i���Ʀ��o�l����V���p§�����J�EjJ���1n���q�zm� ���T3��r|��Vd@�w*2_[;���ҏ *1���fx>2�����3a��N���&B:�:�Z�R�8X��!���ï�{�����y@���_�+妩^�fux����H D����k4x/�%�$�V���v*��n��Nq]{ �z���mI����:� ��o�J�q���V��v�##��R�a ˍ,��{A�V����8�����;:n�kA`wHn�)_��*.;~J��0��0�D@ � ��p�њ���:e��:�5��"Z�'6!��+���j��Ʀ�g�YҚˠ(��ZY�.`�qU�����1�¥��{�U�7R��:�P��B<�@�IU0�P~SQ ����#� �dQ�Mj!��\6���6� �"؞*�n�-4��jf��Q �D ��}���\�&:�\nV�#T��燳�O�99#@�8B����mm?�RW��N�p �:[5�r�јn��בTEj(%d(�WD�p�.��%y���8���< �Lx]�t�h���f�<��+i V��VJ����`p\jѳ����pM��3!g3�d��ě�t"9�����͆A��`Z���C��T����OU�(��k༌O٪��VD�mm��^���x����J�4�A�c���E�w��$���e�M�X�ʣ�T�`I�`�m��tM�_I��)�J�Hr1s˗�z�, �9-+T���zl���d�ӽy8���8���P��\����U�<�.]8C��J�U���'I�.XRV!�cӉ��p�C��[C�������}%��.������枨�D�z�u�ڐ�T�x��;�`���Fŵ�,Y��@6�;�,0g}͜���T��ٞX*��Q�8��f�!��K�#��U��'T\b)������E?O-�<J`;�Iy.�#�@�f��MTĞ=h���g+5�|�C���O��S��9zO�N�y�94$S�G6s�������2����4�X.�o�doxF,N��y�Cr&TߑA�Od ���÷��"P��R�Ό����;�-@�:�B�7�}�^4ad{JLJAM�Z�@�ͳm�8�X�T�2�e@�WB�^%���<��6���&!��H�/��3��0��� -+�X<E3��(��{���qL��4�W�d���Z�G�B�(�?�"E�m��� �o�%��b��#�t�V܉/S�9��d�U_�+�H��R��K�wdG?�m8��8a��<zm��5���0��~ʂ����fylΪI�7� ��Tj��Jb���r�m�'P�Z"��8��/����"�endstream ++�X<E3��(��{���qL��4�W�d���Z�G�B�(�?�"E�m��� �o�%��b��#�t�V܉/S�9��d�U_�+�H��R��K�wdG?�m8��8a��<zm��5���0��~ʂ����fylΪI�7� ��Tj��Jb���r�m�'P�Z"�����/����!���endstream endobj -4145 0 obj << +4155 0 obj << /Type /Page -/Contents 4146 0 R -/Resources 4144 0 R +/Contents 4156 0 R +/Resources 4154 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4123 0 R -/Annots [ 4149 0 R ] +/Parent 4117 0 R +/Annots [ 4159 0 R ] >> endobj -4149 0 obj << +4159 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [364.929 706.456 418.584 714.938] /Subtype /Link /A << /S /GoTo /D (installation-whining-cron) >> >> endobj -4147 0 obj << -/D [4145 0 R /XYZ 71.731 729.265 null] +4157 0 obj << +/D [4155 0 R /XYZ 71.731 729.265 null] >> endobj -4148 0 obj << -/D [4145 0 R /XYZ 71.731 718.306 null] +4158 0 obj << +/D [4155 0 R /XYZ 71.731 718.306 null] >> endobj 1697 0 obj << -/D [4145 0 R /XYZ 76.712 678.755 null] +/D [4155 0 R /XYZ 76.712 678.755 null] >> endobj 802 0 obj << -/D [4145 0 R /XYZ 188.149 639.382 null] +/D [4155 0 R /XYZ 188.149 639.382 null] >> endobj -4150 0 obj << -/D [4145 0 R /XYZ 71.731 632.03 null] +4160 0 obj << +/D [4155 0 R /XYZ 71.731 632.03 null] >> endobj -4151 0 obj << -/D [4145 0 R /XYZ 71.731 599.168 null] +4161 0 obj << +/D [4155 0 R /XYZ 71.731 599.168 null] >> endobj -4152 0 obj << -/D [4145 0 R /XYZ 71.731 542.381 null] +4162 0 obj << +/D [4155 0 R /XYZ 71.731 542.381 null] >> endobj 1698 0 obj << -/D [4145 0 R /XYZ 71.731 511.871 null] +/D [4155 0 R /XYZ 71.731 511.871 null] >> endobj 806 0 obj << -/D [4145 0 R /XYZ 243.797 474.281 null] +/D [4155 0 R /XYZ 243.797 474.281 null] >> endobj -4153 0 obj << -/D [4145 0 R /XYZ 71.731 463.916 null] +4163 0 obj << +/D [4155 0 R /XYZ 71.731 463.916 null] >> endobj -4154 0 obj << -/D [4145 0 R /XYZ 71.731 421.116 null] +4164 0 obj << +/D [4155 0 R /XYZ 71.731 421.116 null] >> endobj -4155 0 obj << -/D [4145 0 R /XYZ 71.731 382.262 null] +4165 0 obj << +/D [4155 0 R /XYZ 71.731 382.262 null] >> endobj -4156 0 obj << -/D [4145 0 R /XYZ 118.555 343.698 null] +4166 0 obj << +/D [4155 0 R /XYZ 118.555 343.698 null] >> endobj -4157 0 obj << -/D [4145 0 R /XYZ 71.731 291.892 null] +4167 0 obj << +/D [4155 0 R /XYZ 71.731 291.892 null] >> endobj -4158 0 obj << -/D [4145 0 R /XYZ 71.731 250.984 null] +4168 0 obj << +/D [4155 0 R /XYZ 71.731 250.984 null] >> endobj -4159 0 obj << -/D [4145 0 R /XYZ 71.731 199.178 null] +4169 0 obj << +/D [4155 0 R /XYZ 71.731 199.178 null] >> endobj -4160 0 obj << -/D [4145 0 R /XYZ 71.731 184.235 null] +4170 0 obj << +/D [4155 0 R /XYZ 71.731 184.235 null] >> endobj 1699 0 obj << -/D [4145 0 R /XYZ 71.731 111.871 null] +/D [4155 0 R /XYZ 71.731 111.871 null] >> endobj -4144 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F44 1925 0 R /F27 1132 0 R >> +4154 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F44 1922 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4163 0 obj << +4173 0 obj << /Length 2331 /Filter /FlateDecode >> @@ -15605,76 +15672,76 @@ w>9@ ҍT�_�7�m��s��F�"� h��O� G]xY�i��۞����^�/{O������T��4�`_��~\D��@ʛ" C|ף4E���뇻�0+���CښX�o)ε�������[�s��(�$��SR�|g��zx4�%Trݼ�w���t�~���*���F?ń���o���藆9v��ǣ��Ϳl$j~a��|}���� �{�,g�X���tRu4쒋1 aM� � qW�1ܙx�BR;���TZQ�@�]�������$��u>���'����~�G¹���&��g���u�����/F�,��$l]>K���/$�4a�pr�u��������wga��람9Q�CII��z.�\�wNʀ\99s��G -;���n��e�~��{�+5z��k/3&g���▿����r�I*I/)���C��J����endstream +;���n��e�~��{�+5z��k/3&g���▿����r�I*I/)���C��J��H��endstream endobj -4162 0 obj << +4172 0 obj << /Type /Page -/Contents 4163 0 R -/Resources 4161 0 R +/Contents 4173 0 R +/Resources 4171 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4123 0 R -/Annots [ 4168 0 R ] +/Parent 4117 0 R +/Annots [ 4178 0 R ] >> endobj -4168 0 obj << +4178 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [192.636 559.034 237.468 567.945] /Subtype /Link /A << /S /GoTo /D (list) >> >> endobj -4164 0 obj << -/D [4162 0 R /XYZ 71.731 729.265 null] +4174 0 obj << +/D [4172 0 R /XYZ 71.731 729.265 null] >> endobj 810 0 obj << -/D [4162 0 R /XYZ 233.582 707.841 null] +/D [4172 0 R /XYZ 233.582 707.841 null] >> endobj -4165 0 obj << -/D [4162 0 R /XYZ 71.731 697.476 null] +4175 0 obj << +/D [4172 0 R /XYZ 71.731 697.476 null] >> endobj -4166 0 obj << -/D [4162 0 R /XYZ 71.731 654.675 null] +4176 0 obj << +/D [4172 0 R /XYZ 71.731 654.675 null] >> endobj -4167 0 obj << -/D [4162 0 R /XYZ 71.731 623.791 null] +4177 0 obj << +/D [4172 0 R /XYZ 71.731 623.791 null] >> endobj -4169 0 obj << -/D [4162 0 R /XYZ 71.731 559.034 null] +4179 0 obj << +/D [4172 0 R /XYZ 71.731 559.034 null] >> endobj -4170 0 obj << -/D [4162 0 R /XYZ 71.731 544.09 null] +4180 0 obj << +/D [4172 0 R /XYZ 71.731 544.09 null] >> endobj -4171 0 obj << -/D [4162 0 R /XYZ 71.731 495.039 null] +4181 0 obj << +/D [4172 0 R /XYZ 71.731 495.039 null] >> endobj -4172 0 obj << -/D [4162 0 R /XYZ 71.731 449.046 null] +4182 0 obj << +/D [4172 0 R /XYZ 71.731 449.046 null] >> endobj -4173 0 obj << -/D [4162 0 R /XYZ 71.731 425.201 null] +4183 0 obj << +/D [4172 0 R /XYZ 71.731 425.201 null] >> endobj -4174 0 obj << -/D [4162 0 R /XYZ 118.555 386.637 null] +4184 0 obj << +/D [4172 0 R /XYZ 118.555 386.637 null] >> endobj 1700 0 obj << -/D [4162 0 R /XYZ 71.731 344.596 null] +/D [4172 0 R /XYZ 71.731 344.596 null] >> endobj 814 0 obj << -/D [4162 0 R /XYZ 266.363 312.2 null] +/D [4172 0 R /XYZ 266.363 312.2 null] >> endobj -4175 0 obj << -/D [4162 0 R /XYZ 71.731 301.835 null] +4185 0 obj << +/D [4172 0 R /XYZ 71.731 301.835 null] >> endobj -4176 0 obj << -/D [4162 0 R /XYZ 71.731 276.967 null] +4186 0 obj << +/D [4172 0 R /XYZ 71.731 276.967 null] >> endobj -4177 0 obj << -/D [4162 0 R /XYZ 71.731 262.023 null] +4187 0 obj << +/D [4172 0 R /XYZ 71.731 262.023 null] >> endobj -4161 0 obj << -/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1925 0 R >> +4171 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4180 0 obj << +4190 0 obj << /Length 2435 /Filter /FlateDecode >> @@ -15692,111 +15759,111 @@ K .��h��nb�NT(Ey��7n�tb|{g���;nR!�n=IS�@U"���D ���$J�M�������zHt��O�a������5����G �ܢ�#���iЍN�8��,�HLy��ᜏ��7�"��?���3��k�9N�H��ۓu�D����˥��F�<��d�uI�IHW�;H;��`������@wC�����JB� Q��'�$�����h&ej��(TbI�Ic������9ٓ�"�B�I�5=E����x_V�L����^4ŧ��*�\���r�^�+��� ���>��ܢ1rWQ� � ܪ[�Pm4�d73�MɼVS� r\��ױ���_�pF5if�ل�#������i���+o���i@��.ԁ�B����F����M�'?.!]��']��XK <�������N��ds }��P-=y 7�?�y�n�e���U�2����E��] -uG�q�J��<~��d�n���#�<�yƿ�a�Hv�����Z��e, 9+2��7�YMr�H0@T+L/%��f����߿y����oY ̲���k��AD+B��V���5T��"�"q,50>]� ?�8�7K *]���сC[vy%<�� ��c�/��=~���u=̐����e-ş�1�[��>QU$��։k��l<{�8�:#?�$+.'������f�^�F+?��t�*�^�� -t����cWendstream +uG�q�J��<~��d�n���#�<�yƿ�a�Hv�����Z��e, 9+2��7�YMr�H0@T+L/%��f����߿y����oY ̲���k��AD+B��V���5T��"�"q,50>]� ?�8�7K *]���сC[vy%<�� ��c�/��=~���u=̐����e-ş�1�[��>QU$��։k��l<{�8�:#?�$+.'������f�^�F+?��t�*�^�� +t�����Xendstream endobj -4179 0 obj << +4189 0 obj << /Type /Page -/Contents 4180 0 R -/Resources 4178 0 R +/Contents 4190 0 R +/Resources 4188 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4123 0 R +/Parent 4117 0 R >> endobj -4181 0 obj << -/D [4179 0 R /XYZ 71.731 729.265 null] +4191 0 obj << +/D [4189 0 R /XYZ 71.731 729.265 null] >> endobj 1774 0 obj << -/D [4179 0 R /XYZ 71.731 718.306 null] +/D [4189 0 R /XYZ 71.731 718.306 null] >> endobj 818 0 obj << -/D [4179 0 R /XYZ 366.546 703.236 null] ->> endobj -4182 0 obj << -/D [4179 0 R /XYZ 71.731 681.855 null] ->> endobj -4183 0 obj << -/D [4179 0 R /XYZ 71.731 671.343 null] ->> endobj -4184 0 obj << -/D [4179 0 R /XYZ 71.731 666.361 null] ->> endobj -4185 0 obj << -/D [4179 0 R /XYZ 71.731 661.38 null] ->> endobj -4186 0 obj << -/D [4179 0 R /XYZ 71.731 638.889 null] ->> endobj -4187 0 obj << -/D [4179 0 R /XYZ 71.731 615.552 null] ->> endobj -4188 0 obj << -/D [4179 0 R /XYZ 354.338 599.776 null] ->> endobj -4189 0 obj << -/D [4179 0 R /XYZ 71.731 597.619 null] ->> endobj -4190 0 obj << -/D [4179 0 R /XYZ 71.731 574.705 null] ->> endobj -4191 0 obj << -/D [4179 0 R /XYZ 71.731 569.724 null] +/D [4189 0 R /XYZ 366.546 703.236 null] >> endobj 4192 0 obj << -/D [4179 0 R /XYZ 71.731 538.84 null] +/D [4189 0 R /XYZ 71.731 681.855 null] >> endobj 4193 0 obj << -/D [4179 0 R /XYZ 74.222 497.161 null] +/D [4189 0 R /XYZ 71.731 671.343 null] >> endobj 4194 0 obj << -/D [4179 0 R /XYZ 71.731 472.09 null] +/D [4189 0 R /XYZ 71.731 666.361 null] >> endobj 4195 0 obj << -/D [4179 0 R /XYZ 138.434 456.314 null] +/D [4189 0 R /XYZ 71.731 661.38 null] >> endobj 4196 0 obj << -/D [4179 0 R /XYZ 288.63 443.363 null] +/D [4189 0 R /XYZ 71.731 638.889 null] >> endobj 4197 0 obj << -/D [4179 0 R /XYZ 95.641 417.46 null] +/D [4189 0 R /XYZ 71.731 615.552 null] >> endobj 4198 0 obj << -/D [4179 0 R /XYZ 71.731 416.052 null] +/D [4189 0 R /XYZ 354.338 599.776 null] >> endobj 4199 0 obj << -/D [4179 0 R /XYZ 71.731 392.389 null] +/D [4189 0 R /XYZ 71.731 597.619 null] >> endobj 4200 0 obj << -/D [4179 0 R /XYZ 105.325 376.613 null] +/D [4189 0 R /XYZ 71.731 574.705 null] >> endobj 4201 0 obj << -/D [4179 0 R /XYZ 71.731 374.456 null] +/D [4189 0 R /XYZ 71.731 569.724 null] >> endobj 4202 0 obj << -/D [4179 0 R /XYZ 71.731 351.542 null] +/D [4189 0 R /XYZ 71.731 538.84 null] >> endobj 4203 0 obj << -/D [4179 0 R /XYZ 71.731 276.822 null] +/D [4189 0 R /XYZ 74.222 497.161 null] >> endobj 4204 0 obj << -/D [4179 0 R /XYZ 296.767 253.076 null] +/D [4189 0 R /XYZ 71.731 472.09 null] >> endobj 4205 0 obj << -/D [4179 0 R /XYZ 74.222 222.192 null] +/D [4189 0 R /XYZ 138.434 456.314 null] >> endobj 4206 0 obj << -/D [4179 0 R /XYZ 71.731 197.121 null] +/D [4189 0 R /XYZ 288.63 443.363 null] >> endobj 4207 0 obj << -/D [4179 0 R /XYZ 71.731 148.304 null] +/D [4189 0 R /XYZ 95.641 417.46 null] >> endobj 4208 0 obj << -/D [4179 0 R /XYZ 378.741 137.509 null] +/D [4189 0 R /XYZ 71.731 416.052 null] >> endobj -4178 0 obj << +4209 0 obj << +/D [4189 0 R /XYZ 71.731 392.389 null] +>> endobj +4210 0 obj << +/D [4189 0 R /XYZ 105.325 376.613 null] +>> endobj +4211 0 obj << +/D [4189 0 R /XYZ 71.731 374.456 null] +>> endobj +4212 0 obj << +/D [4189 0 R /XYZ 71.731 351.542 null] +>> endobj +4213 0 obj << +/D [4189 0 R /XYZ 71.731 276.822 null] +>> endobj +4214 0 obj << +/D [4189 0 R /XYZ 296.767 253.076 null] +>> endobj +4215 0 obj << +/D [4189 0 R /XYZ 74.222 222.192 null] +>> endobj +4216 0 obj << +/D [4189 0 R /XYZ 71.731 197.121 null] +>> endobj +4217 0 obj << +/D [4189 0 R /XYZ 71.731 148.304 null] +>> endobj +4218 0 obj << +/D [4189 0 R /XYZ 378.741 137.509 null] +>> endobj +4188 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F32 1139 0 R /F33 1230 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4211 0 obj << +4221 0 obj << /Length 3229 /Filter /FlateDecode >> @@ -15816,206 +15883,206 @@ UEG+j L��������md��+�9�z2Z�f[�LjjS<M�Fچ<�{j� �~���>S���`"ù�2+�BۃD/G�E�/u������A�}MI�Cp�~�$�����[B`>���I}�������� ض���p�-K�m����k�EU�X(mȁ��H�O�I+�D��0O�! �ᩏ2o�" �&r�`Ce �5�yNV}�Ȯ�Y.9u� �.~ͅPQ+y7�˅8~y��4���ϱ�����g~?��������<wY�z��� �� YI*�eq�Vޞ+t�r�`pI�������,��5Ɵ�.�ȏ�f��e-��]�ב�0�����+Ig3� ōᜱ�6O�~}��T}qd��T#y�&���9z���2���<dYӏf~���lO���Rg��t$Y�?��g-9[:�O��b[�=C������Z�����B�䆉M.ʊ̅�K�B�;�ƗT(���*�ߚ�h��I�O��%�FŴ�Ae�����q(�q�Ʈ�ؚ�dš��ԃH$,�ZQ������$�Y" -���`����OW�J1�'���"�.��(��r7̓$�Զ=����>Feԩ��0�H�)�h쯷��^����/����:�`�64���앸h<]��!4�ݕ���X�+ԫ�@������_ ��f�a^6r=�L����Aq���|w(O��A��b�@��o3��?͈���� ^% ���'���endstream +���`����OW�J1�'���"�.��(��r7̓$�Զ=����>Feԩ��0�H�)�h쯷��^����/����:�`�64���앸h<]��!4�ݕ���X�+ԫ�@������_ ��f�a^6r=�L����Aq���|w(O��A��b�@��o3��?͈���� ^% ���'��3�endstream endobj -4210 0 obj << +4220 0 obj << /Type /Page -/Contents 4211 0 R -/Resources 4209 0 R +/Contents 4221 0 R +/Resources 4219 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4123 0 R ->> endobj -4212 0 obj << -/D [4210 0 R /XYZ 71.731 729.265 null] ->> endobj -4213 0 obj << -/D [4210 0 R /XYZ 71.731 741.22 null] ->> endobj -4214 0 obj << -/D [4210 0 R /XYZ 71.731 675.303 null] ->> endobj -4215 0 obj << -/D [4210 0 R /XYZ 429.028 651.557 null] ->> endobj -4216 0 obj << -/D [4210 0 R /XYZ 153.769 612.702 null] ->> endobj -4217 0 obj << -/D [4210 0 R /XYZ 453.126 612.702 null] ->> endobj -4218 0 obj << -/D [4210 0 R /XYZ 74.222 581.818 null] ->> endobj -4219 0 obj << -/D [4210 0 R /XYZ 71.731 556.747 null] ->> endobj -4220 0 obj << -/D [4210 0 R /XYZ 71.731 522.939 null] ->> endobj -4221 0 obj << -/D [4210 0 R /XYZ 105.883 497.136 null] +/Parent 4248 0 R >> endobj 4222 0 obj << -/D [4210 0 R /XYZ 71.731 489.998 null] +/D [4220 0 R /XYZ 71.731 729.265 null] >> endobj 4223 0 obj << -/D [4210 0 R /XYZ 132.174 427.397 null] +/D [4220 0 R /XYZ 71.731 741.22 null] >> endobj 4224 0 obj << -/D [4210 0 R /XYZ 71.731 420.259 null] +/D [4220 0 R /XYZ 71.731 675.303 null] >> endobj 4225 0 obj << -/D [4210 0 R /XYZ 71.731 350.894 null] +/D [4220 0 R /XYZ 429.028 651.557 null] >> endobj 4226 0 obj << -/D [4210 0 R /XYZ 71.731 350.894 null] +/D [4220 0 R /XYZ 153.769 612.702 null] >> endobj 4227 0 obj << -/D [4210 0 R /XYZ 74.222 308.842 null] +/D [4220 0 R /XYZ 453.126 612.702 null] >> endobj 4228 0 obj << -/D [4210 0 R /XYZ 148.772 285.928 null] +/D [4220 0 R /XYZ 74.222 581.818 null] >> endobj 4229 0 obj << -/D [4210 0 R /XYZ 71.731 284.52 null] +/D [4220 0 R /XYZ 71.731 556.747 null] >> endobj 4230 0 obj << -/D [4210 0 R /XYZ 368.158 267.995 null] +/D [4220 0 R /XYZ 71.731 522.939 null] >> endobj 4231 0 obj << -/D [4210 0 R /XYZ 95.641 229.141 null] +/D [4220 0 R /XYZ 105.883 497.136 null] >> endobj 4232 0 obj << -/D [4210 0 R /XYZ 71.731 201.081 null] +/D [4220 0 R /XYZ 71.731 489.998 null] >> endobj 4233 0 obj << -/D [4210 0 R /XYZ 202.524 180.324 null] +/D [4220 0 R /XYZ 132.174 427.397 null] >> endobj 4234 0 obj << -/D [4210 0 R /XYZ 340.43 180.324 null] +/D [4220 0 R /XYZ 71.731 420.259 null] >> endobj 4235 0 obj << -/D [4210 0 R /XYZ 71.731 167.273 null] +/D [4220 0 R /XYZ 71.731 350.894 null] >> endobj 4236 0 obj << -/D [4210 0 R /XYZ 385.027 149.44 null] +/D [4220 0 R /XYZ 71.731 350.894 null] >> endobj 4237 0 obj << -/D [4210 0 R /XYZ 71.731 111.417 null] +/D [4220 0 R /XYZ 74.222 308.842 null] >> endobj -4209 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R >> -/ProcSet [ /PDF /Text ] +4238 0 obj << +/D [4220 0 R /XYZ 148.772 285.928 null] >> endobj -4240 0 obj << -/Length 2321 -/Filter /FlateDecode ->> -stream -xڅk����� -7)�r����|h���{m��r�A�+�D��ɢ#J�s}g8#[~�&9�=C���~�h�iC4Q���ͳ`���7�B����xz6yǣ��e��i9J�T�H'�D�F���?��v��R�Qx��Ƨ��ɋn�?]U�V��a�z��$�ޏ�����WO�x*fy�U&{�.���Y*�$ey*���8�e�g�wlD���Y8� -��Ⱥ�+]+�ۍ��3��8̽���|"S��BץG�����Օ�<ߛ�0ee ��r��ǠE{��Nׂ��-�����%����q����@+�\�E;ݮQ��#?�Č-�:_�Z6{���T��`�訲,a��X���m%E�C�Ʊ�f)c�ֺX��k���ƶw����9_��r��!��q��@d�̑{x�!�����^��ơaV�,�o��ˤ���&[�T� 8@0F��������w�Xi}'�K9A�(� H玱�V�Ir��Z{\��i�{{4��Zc�X�R����o�L=B, Y��*�YE+�����C�u���r�-Ue�Ivslj\8�g�")��"7�JYF�K�4CS;Sg!��Bi�t��x���jA����E�5�h:T���-�%hI\�0�C�$y2u����q:�h�������ۘR�\����B�mP��{�G��x�ꉴ�F$��3l�.}<�1Kf��v7��)Qk���/OD4�zle[�IZ�@�|l��Z���8KE��!ſ�"�=�V���tx<��j���d\��B��4�rf�$�/��`����~��5��4ؘ�j]CR[�f#[��a��<�M:��ӭ���NVJZF*֪����H��'��P/�����6f�h�b��B0���@/�5)��%��ݫ2 ����7�.� -�n����d��a��{.�¸亚����r���q -�k���T�:3��@3�G�����b���䥩U�5:5N��>�ɤO��֪jy%A'�ٙ�%M �8�����WLZ�g�,��R7�\�������j�5~%�t�2��[C�.�R5�b����8h:�8>����Y�|�i,���p<+����;n�҇���tIHmOk�6O�����bO@�ږ�`����7/�mA�ͶQ�?��E�����á� r�p~J��9) ���̺;���� ��J�n00���p4������Ҷm�7�AC�h��/au�����4�Б�)ǵ^��� ��A���&���14=�����.�ܟ�{ԥj��t� d@��'�iD�8���(����կ~���_�?��.���?a#�M�s`c�*ף���Y<�y��u�@*�@�(J`�֚B�A�S�G-�عi��ڐ��(pq��+�V� -ڸj#�G� ��B�"�j�HV��垠DVS����ZE{�c�LT-��ʮb -٪�fI`��ߖձ��'�p5! �?�?��%V�0���?]��b��+f%��]Nz蝃+� -��}�hɪ�x}���s�ΐ��d��ҍG��1՝�� -c>iީ�F�Q�c�"D�g�Q��2F� -��Y���d|�\�=95�uu Q}Qnf���� A��x����<84,f�e"J�93t����4vr:�/�t�^���OEo�'�:��p�?C84Ԩ �ڔqoU�6S�On �YP����2�_!���q��f�|�(�8%��b�&uz�U�O��C��)�u`���U��N�g %I����v���A&D�5�u� m�{�@[�{���=�&A���e�v�4Ks�4��L��1����6�H����]C�;kJm��Zj�\$�}X�V��JD�Q��a�:�#����J���'y�A�������G�i��FS/�l�1���:�vj�/��-1�E3j���n]W���/ �ښ�;�ToU�ګ��f�R.j��5��l^%�/�m�C�m��q��o g&tXp6�����M��ǾW��:8���7R��v�4�E"�f�@dy~��� p%+����ץBŸ6<����w�&\xt�SC�Ԋ��,�X _���/���ɞ}G�݇,xܷ��l�j6��9�JB I�8�G%p3ͱ�]��J{�xz�Qq�Q�����@�X]�Sڲ(��u$�}3`�4���c��-F^}����9&.��(���0�6�`-0��]�+�M�U M�pC�!�Ⴓ����=i���(�&��%~�9p�?TOS��,7l���Yo�F�G5�h숛������V�ޛ�"�_�"|D�� �F�������]�����endstream -endobj 4239 0 obj << -/Type /Page -/Contents 4240 0 R -/Resources 4238 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 4268 0 R +/D [4220 0 R /XYZ 71.731 284.52 null] +>> endobj +4240 0 obj << +/D [4220 0 R /XYZ 368.158 267.995 null] >> endobj 4241 0 obj << -/D [4239 0 R /XYZ 71.731 729.265 null] +/D [4220 0 R /XYZ 95.641 229.141 null] >> endobj 4242 0 obj << -/D [4239 0 R /XYZ 71.731 660.359 null] +/D [4220 0 R /XYZ 71.731 201.081 null] >> endobj 4243 0 obj << -/D [4239 0 R /XYZ 71.731 639.203 null] +/D [4220 0 R /XYZ 202.524 180.324 null] >> endobj 4244 0 obj << -/D [4239 0 R /XYZ 71.731 619.278 null] +/D [4220 0 R /XYZ 340.43 180.324 null] >> endobj 4245 0 obj << -/D [4239 0 R /XYZ 115.567 595.965 null] +/D [4220 0 R /XYZ 71.731 167.273 null] >> endobj 4246 0 obj << -/D [4239 0 R /XYZ 71.731 568.07 null] +/D [4220 0 R /XYZ 385.027 149.44 null] >> endobj 4247 0 obj << -/D [4239 0 R /XYZ 376.59 555.118 null] +/D [4220 0 R /XYZ 71.731 111.417 null] >> endobj -4248 0 obj << -/D [4239 0 R /XYZ 216.969 542.167 null] ->> endobj -4249 0 obj << -/D [4239 0 R /XYZ 200.218 529.215 null] ->> endobj -4250 0 obj << -/D [4239 0 R /XYZ 71.731 504.862 null] +4219 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 4251 0 obj << -/D [4239 0 R /XYZ 71.731 452.937 null] +/Length 2321 +/Filter /FlateDecode +>> +stream +xڅk����� +7)�r����|h���{m��r�A�+�D��ɢ#J�s}g8#[~�&9�=C���~�h�iC4Q���ͳ`���7�B����xz6yǣ��e��i9J�T�H'�D�F���?��v��R�Qx��Ƨ��ɋn�?]U�V��a�z��$�ޏ�����WO�x*fy�U&{�.���Y*�$ey*���8�e�g�wlD���Y8� +��Ⱥ�+]+�ۍ��3��8̽���|"S��BץG�����Օ�<ߛ�0ee ��r��ǠE{��Nׂ��-�����%����q����@+�\�E;ݮQ��#?�Č-�:_�Z6{���T��`�訲,a��X���m%E�C�Ʊ�f)c�ֺX��k���ƶw����9_��r��!��q��@d�̑{x�!�����^��ơaV�,�o��ˤ���&[�T� 8@0F��������w�Xi}'�K9A�(� H玱�V�Ir��Z{\��i�{{4��Zc�X�R����o�L=B, Y��*�YE+�����C�u���r�-Ue�Ivslj\8�g�")��"7�JYF�K�4CS;Sg!��Bi�t��x���jA����E�5�h:T���-�%hI\�0�C�$y2u����q:�h�������ۘR�\����B�mP��{�G��x�ꉴ�F$��3l�.}<�1Kf��v7��)Qk���/OD4�zle[�IZ�@�|l��Z���8KE��!ſ�"�=�V���tx<��j���d\��B��4�rf�$�/��`����~��5��4ؘ�j]CR[�f#[��a��<�M:��ӭ���NVJZF*֪����H��'��P/�����6f�h�b��B0���@/�5)��%��ݫ2 ����7�.� +�n����d��a��{.�¸亚����r���q +�k���T�:3��@3�G�����b���䥩U�5:5N��>�ɤO��֪jy%A'�ٙ�%M �8�����WLZ�g�,��R7�\�������j�5~%�t�2��[C�.�R5�b����8h:�8>����Y�|�i,���p<+����;n�҇���tIHmOk�6O�����bO@�ږ�`����7/�mA�ͶQ�?��E�����á� r�p~J��9) ���̺;���� ��J�n00���p4������Ҷm�7�AC�h��/au�����4�Б�)ǵ^��� ��A���&���14=�����.�ܟ�{ԥj��t� d@��'�iD�8���(����կ~���_�?��.���?a#�M�s`c�*ף���Y<�y��u�@*�@�(J`�֚B�A�S�G-�عi��ڐ��(pq��+�V� +ڸj#�G� ��B�"�j�HV��垠DVS����ZE{�c�LT-��ʮb +٪�fI`��ߖձ��'�p5! �?�?��%V�0���?]��b��+f%��]Nz蝃+� +��}�hɪ�x}���s�ΐ��d��ҍG��1՝�� +c>iީ�F�Q�c�"D�g�Q��2F� +��Y���d|�\�=95�uu Q}Qnf���� A��x����<84,f�e"J�93t����4vr:�/�t�^���OEo�'�:��p�?C84Ԩ �ڔqoU�6S�On �YP����2�_!���q��f�|�(�8%��b�&uz�U�O��C��)�u`���U��N�g %I����v���A&D�5�u� m�{�@[�{���=�&A���e�v�4Ks�4��L��1����6�H����]C�;kJm��Zj�\$�}X�V��JD�Q��a�:�#����J���'y�A�������G�i��FS/�l�1���:�vj�/��-1�E3j���n]W���/ �ښ�;�ToU�ګ��f�R.j��5��l^%�/�m�C�m��q��o g&tXp6�����M��ǾW��:8���7R��v�4�E"�f�@dy~��� p%+����ץBŸ6<����w�&\xt�SC�Ԋ��,�X _���/���ɞ}G�݇,xܷ��l�j6��9�JB I�8�G%p3ͱ�]��J{�xz�Qq�Q�����@�X]�Sڲ(��u$�}3`�4���c��-F^}����9&.��(���0�6�`-0��]�+�M�U M�pC�!�Ⴓ����=i���(�&��%~�9p�?TOS��,7l���Yo�F�G5�h숛������V�ޛ�"�_�"|D�� �F�����'�]�����endstream +endobj +4250 0 obj << +/Type /Page +/Contents 4251 0 R +/Resources 4249 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4248 0 R >> endobj 4252 0 obj << -/D [4239 0 R /XYZ 439.725 442.142 null] +/D [4250 0 R /XYZ 71.731 729.265 null] >> endobj 4253 0 obj << -/D [4239 0 R /XYZ 95.641 403.288 null] +/D [4250 0 R /XYZ 71.731 660.359 null] >> endobj 4254 0 obj << -/D [4239 0 R /XYZ 336.678 390.336 null] +/D [4250 0 R /XYZ 71.731 639.203 null] >> endobj 4255 0 obj << -/D [4239 0 R /XYZ 455.543 390.336 null] +/D [4250 0 R /XYZ 71.731 619.278 null] >> endobj 4256 0 obj << -/D [4239 0 R /XYZ 74.222 359.452 null] +/D [4250 0 R /XYZ 115.567 595.965 null] >> endobj 4257 0 obj << -/D [4239 0 R /XYZ 71.731 334.381 null] +/D [4250 0 R /XYZ 71.731 568.07 null] >> endobj 4258 0 obj << -/D [4239 0 R /XYZ 71.731 316.448 null] +/D [4250 0 R /XYZ 376.59 555.118 null] >> endobj 4259 0 obj << -/D [4239 0 R /XYZ 218.849 295.691 null] +/D [4250 0 R /XYZ 216.969 542.167 null] >> endobj 4260 0 obj << -/D [4239 0 R /XYZ 71.731 293.534 null] +/D [4250 0 R /XYZ 200.218 529.215 null] >> endobj 4261 0 obj << -/D [4239 0 R /XYZ 486.265 264.807 null] +/D [4250 0 R /XYZ 71.731 504.862 null] >> endobj 4262 0 obj << -/D [4239 0 R /XYZ 71.731 239.736 null] +/D [4250 0 R /XYZ 71.731 452.937 null] >> endobj 4263 0 obj << -/D [4239 0 R /XYZ 71.731 239.736 null] +/D [4250 0 R /XYZ 439.725 442.142 null] >> endobj 4264 0 obj << -/D [4239 0 R /XYZ 71.731 216.956 null] +/D [4250 0 R /XYZ 95.641 403.288 null] >> endobj 4265 0 obj << -/D [4239 0 R /XYZ 71.731 183.014 null] +/D [4250 0 R /XYZ 336.678 390.336 null] >> endobj 4266 0 obj << -/D [4239 0 R /XYZ 71.731 165.081 null] +/D [4250 0 R /XYZ 455.543 390.336 null] >> endobj 4267 0 obj << -/D [4239 0 R /XYZ 71.731 127.158 null] +/D [4250 0 R /XYZ 74.222 359.452 null] >> endobj -4238 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R /F44 1925 0 R >> -/ProcSet [ /PDF /Text ] +4268 0 obj << +/D [4250 0 R /XYZ 71.731 334.381 null] +>> endobj +4269 0 obj << +/D [4250 0 R /XYZ 71.731 316.448 null] +>> endobj +4270 0 obj << +/D [4250 0 R /XYZ 218.849 295.691 null] >> endobj 4271 0 obj << +/D [4250 0 R /XYZ 71.731 293.534 null] +>> endobj +4272 0 obj << +/D [4250 0 R /XYZ 486.265 264.807 null] +>> endobj +4273 0 obj << +/D [4250 0 R /XYZ 71.731 239.736 null] +>> endobj +4274 0 obj << +/D [4250 0 R /XYZ 71.731 239.736 null] +>> endobj +4275 0 obj << +/D [4250 0 R /XYZ 71.731 216.956 null] +>> endobj +4276 0 obj << +/D [4250 0 R /XYZ 71.731 183.014 null] +>> endobj +4277 0 obj << +/D [4250 0 R /XYZ 71.731 165.081 null] +>> endobj +4278 0 obj << +/D [4250 0 R /XYZ 71.731 127.158 null] +>> endobj +4249 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4281 0 obj << /Length 2713 /Filter /FlateDecode >> @@ -16030,104 +16097,104 @@ xڅi FA"��v&Ƒ`j] ���%$bT� �o��^��O(���������6t���ƅ�s-�i�����ak�;Z� �-���^�����u�O�|9�}���5Y)��>��/%D�c]���r�.ogOgL��<o�n��j48����*��Z*(�� <��h���������n�Ϊj]�˖�!*K��Ȓމ�Q�r�I�&O[ �+�80Yj me>VZR��4v����O�'aJ���n���T�b��n6$��p�L�u�$Mz8E�l�P���E\��k38�W)8Yx���_���b<h&� MM.��w����!J���R\���`�u��aȲ��*B�����'��`������M�t�jy��~Aq��`Q�n�K�$o��7�)���Y\�2�[��$fa�t���R ̶y�*���!�yu� Nj�<�1�C�>|s=J��cdc�K��ؖBSR�K�ޗ Q��+kH>=ԅd�c:c�" H�-y�W�l^p���+ �)`V]��a���������XZˑeP%�^���5��µ��c�r��?���Q.�G��,Ew�j٢�\�F�%Ӭ����'}(�s�N��/�b"��|�U FB����Ȍ�,���~��'�wrE��܈(��)��Pcu!�N�(����$�&��i��>�ɑ������Dj�{)R�4��C��m�8��� �n�@���Ij;cب������.�*�\9%��,]���y����>��;VA�-΄�`��o��iގ����]��v�.�36�BHα�C�(>�`�X���x���b��q���Xf'�eY��r����M��R�����\�,��"��X)������ڥ#�Vl��O��Ъ/�M�d�)t#i4tj����:���F��У�w*������~�����ӻh>���U�<0��0��Bb(v�(#�:�-�w��h υOVJ0q�`��f�� ��L�X>����K }8py����%vt��8�)_G�F�W��^yH�~p]�E;�l�'���Z�Gֿ��;�;�����4<+I1����5/�VBÕR0���oc���7��� �0-4^7{?�G��c%�S_�#h��Q���B^������GXm��`I�=7t ���e��\j�Q���a����⛍��(MI!�WB��=`�)x.^��@@*C(ڈG�"|iL/�MD � �倢+nc3�Ϧ�{9��H�5�K�M�[i�2Vpm�ew.l�V�G���(���Hy�ˆ�;����/3����HS8�հ�+��pQ!�綔�~)1������:��$i8krET$�Q<��:�9���n ��:����7?�+G���OH Z���#L��_�@"�"Q�8\`=��,u����>~��7����%��R�W��F�i1��Z�:)b@1�V^�z��I,�rݗU��� ��J��E�h��ʉb�c��DZw1�͏zT�=p��Z�Nf���3��(�U�2|������b?���ZW Ll�2 -y��]�s���&v���qhΗ����$IVJa5N��q] a��R�A�`w� c7�]˚f-��AS�����֍}�Z��j�L-�E������Q�������d<�~�����ŏnendstream +y��]�s���&v���qhΗ����$IVJa5N��q] a��R�A�`w� c7�]˚f-��AS�����֍}�Z��j�L-�E������Q�������d<��������oendstream endobj -4270 0 obj << +4280 0 obj << /Type /Page -/Contents 4271 0 R -/Resources 4269 0 R +/Contents 4281 0 R +/Resources 4279 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4268 0 R -/Annots [ 4278 0 R ] +/Parent 4248 0 R +/Annots [ 4288 0 R ] >> endobj -4278 0 obj << +4288 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [240.776 608.553 290.588 617.464] /Subtype /Link /A << /S /GoTo /D (reporting) >> >> endobj -4272 0 obj << -/D [4270 0 R /XYZ 71.731 729.265 null] ->> endobj -4273 0 obj << -/D [4270 0 R /XYZ 71.731 718.306 null] ->> endobj -4274 0 obj << -/D [4270 0 R /XYZ 523.238 708.344 null] ->> endobj -4275 0 obj << -/D [4270 0 R /XYZ 74.222 677.46 null] ->> endobj -4276 0 obj << -/D [4270 0 R /XYZ 71.731 639.437 null] ->> endobj -4277 0 obj << -/D [4270 0 R /XYZ 146.578 623.661 null] ->> endobj -4279 0 obj << -/D [4270 0 R /XYZ 71.731 603.572 null] ->> endobj -4280 0 obj << -/D [4270 0 R /XYZ 74.222 535.99 null] ->> endobj -4281 0 obj << -/D [4270 0 R /XYZ 71.731 510.919 null] ->> endobj 4282 0 obj << -/D [4270 0 R /XYZ 71.731 480.035 null] +/D [4280 0 R /XYZ 71.731 729.265 null] >> endobj 4283 0 obj << -/D [4270 0 R /XYZ 71.731 457.121 null] +/D [4280 0 R /XYZ 71.731 718.306 null] >> endobj 4284 0 obj << -/D [4270 0 R /XYZ 428.12 442.64 null] +/D [4280 0 R /XYZ 523.238 708.344 null] >> endobj 4285 0 obj << -/D [4270 0 R /XYZ 71.731 425.539 null] +/D [4280 0 R /XYZ 74.222 677.46 null] >> endobj 4286 0 obj << -/D [4270 0 R /XYZ 450.21 404.384 null] +/D [4280 0 R /XYZ 71.731 639.437 null] >> endobj 4287 0 obj << -/D [4270 0 R /XYZ 71.731 353.176 null] ->> endobj -4288 0 obj << -/D [4270 0 R /XYZ 325.465 317.31 null] +/D [4280 0 R /XYZ 146.578 623.661 null] >> endobj 4289 0 obj << -/D [4270 0 R /XYZ 71.731 302.202 null] +/D [4280 0 R /XYZ 71.731 603.572 null] >> endobj 4290 0 obj << -/D [4270 0 R /XYZ 71.731 253.385 null] +/D [4280 0 R /XYZ 74.222 535.99 null] >> endobj 4291 0 obj << -/D [4270 0 R /XYZ 353.315 242.59 null] +/D [4280 0 R /XYZ 71.731 510.919 null] >> endobj 4292 0 obj << -/D [4270 0 R /XYZ 71.731 211.607 null] +/D [4280 0 R /XYZ 71.731 480.035 null] >> endobj 4293 0 obj << -/D [4270 0 R /XYZ 378.982 198.755 null] +/D [4280 0 R /XYZ 71.731 457.121 null] >> endobj 4294 0 obj << -/D [4270 0 R /XYZ 340.628 185.803 null] +/D [4280 0 R /XYZ 428.12 442.64 null] >> endobj 4295 0 obj << -/D [4270 0 R /XYZ 71.731 165.714 null] +/D [4280 0 R /XYZ 71.731 425.539 null] >> endobj 4296 0 obj << -/D [4270 0 R /XYZ 244.777 154.919 null] +/D [4280 0 R /XYZ 450.21 404.384 null] >> endobj 4297 0 obj << -/D [4270 0 R /XYZ 74.222 124.035 null] +/D [4280 0 R /XYZ 71.731 353.176 null] >> endobj -4269 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R >> -/ProcSet [ /PDF /Text ] +4298 0 obj << +/D [4280 0 R /XYZ 325.465 317.31 null] +>> endobj +4299 0 obj << +/D [4280 0 R /XYZ 71.731 302.202 null] >> endobj 4300 0 obj << -/Length 2756 +/D [4280 0 R /XYZ 71.731 253.385 null] +>> endobj +4301 0 obj << +/D [4280 0 R /XYZ 353.315 242.59 null] +>> endobj +4302 0 obj << +/D [4280 0 R /XYZ 71.731 211.607 null] +>> endobj +4303 0 obj << +/D [4280 0 R /XYZ 378.982 198.755 null] +>> endobj +4304 0 obj << +/D [4280 0 R /XYZ 340.628 185.803 null] +>> endobj +4305 0 obj << +/D [4280 0 R /XYZ 71.731 165.714 null] +>> endobj +4306 0 obj << +/D [4280 0 R /XYZ 244.777 154.919 null] +>> endobj +4307 0 obj << +/D [4280 0 R /XYZ 74.222 124.035 null] +>> endobj +4279 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4310 0 obj << +/Length 2755 /Filter /FlateDecode >> stream @@ -16147,222 +16214,220 @@ g? �`HL��+���uT���9�7�5B5ܷJ�����V��+F�/ �[0�.�ct�\K����t� �_��,O�8=��2�24B��9�rj�}�z>�����q[��祿RA"Bl����O'c5Mȯ���O�Fg@�����8bq�=q��H�`�:R�G��ٚ���(�Wzp!|�S{ն�E���W���#�$;�����.���f���8<Љx��~��z��^���$�N�.y��>H� S9�V. -����H��A��ՠt(�%��ӽ� �_&=R;_|:��@�R���n�>G��{���r?��s��~Z�����qW1� �����ߋKmq�zT;y�A�_^���Nb���0 �u������YM��O����f�ZxR�(k�~r��Z�)���3�7��3��oD�j��v�͂-S<��1�z7�V�<��Or+�G�W�����O��7��I���L��"��J�_���z��`��endstream +����H��A��ՠt(�%��ӽ� �_&=R;_|:��@�R���n�>G��{���r?��s��~Z�����qW1� �����ߋKmq�zT;y�A�_^���Nb���0 �u������YM��O����f�ZxR�(k�~r��Z�)���3�7��3��oD�j��v�͂-S<��1�z7�V�<��Or+�G�W�����O��7��I���L�-� \P�t�k>^o�'��;endstream endobj -4299 0 obj << +4309 0 obj << /Type /Page -/Contents 4300 0 R -/Resources 4298 0 R +/Contents 4310 0 R +/Resources 4308 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4268 0 R -/Annots [ 4320 0 R ] +/Parent 4248 0 R +/Annots [ 4330 0 R ] >> endobj -4320 0 obj << +4330 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [453.197 148.279 505.5 157.19] /Subtype /Link /A << /S /GoTo /D (template-specific) >> >> endobj -4301 0 obj << -/D [4299 0 R /XYZ 71.731 729.265 null] +4311 0 obj << +/D [4309 0 R /XYZ 71.731 729.265 null] >> endobj -4302 0 obj << -/D [4299 0 R /XYZ 71.731 706.187 null] +4312 0 obj << +/D [4309 0 R /XYZ 71.731 706.187 null] >> endobj -4303 0 obj << -/D [4299 0 R /XYZ 95.641 677.46 null] +4313 0 obj << +/D [4309 0 R /XYZ 95.641 677.46 null] >> endobj -4304 0 obj << -/D [4299 0 R /XYZ 273.207 651.557 null] ->> endobj -4305 0 obj << -/D [4299 0 R /XYZ 71.731 638.506 null] ->> endobj -4306 0 obj << -/D [4299 0 R /XYZ 71.731 613.534 null] ->> endobj -4307 0 obj << -/D [4299 0 R /XYZ 71.731 595.602 null] ->> endobj -4308 0 obj << -/D [4299 0 R /XYZ 71.731 572.688 null] ->> endobj -4309 0 obj << -/D [4299 0 R /XYZ 196.632 543.96 null] ->> endobj -4310 0 obj << -/D [4299 0 R /XYZ 71.731 541.803 null] ->> endobj -4311 0 obj << -/D [4299 0 R /XYZ 417.183 495.143 null] ->> endobj -4312 0 obj << -/D [4299 0 R /XYZ 71.731 492.986 null] ->> endobj -4313 0 obj << -/D [4299 0 R /XYZ 71.731 457.121 null] ->> endobj -4314 0 obj << -/D [4299 0 R /XYZ 74.222 402.491 null] +4314 0 obj << +/D [4309 0 R /XYZ 273.207 651.557 null] >> endobj 4315 0 obj << -/D [4299 0 R /XYZ 71.731 351.517 null] +/D [4309 0 R /XYZ 71.731 638.506 null] >> endobj 4316 0 obj << -/D [4299 0 R /XYZ 71.731 283.836 null] +/D [4309 0 R /XYZ 71.731 613.534 null] >> endobj 4317 0 obj << -/D [4299 0 R /XYZ 71.731 247.97 null] +/D [4309 0 R /XYZ 71.731 595.602 null] >> endobj 4318 0 obj << -/D [4299 0 R /XYZ 71.731 202.077 null] +/D [4309 0 R /XYZ 71.731 572.688 null] >> endobj 4319 0 obj << -/D [4299 0 R /XYZ 71.731 179.163 null] +/D [4309 0 R /XYZ 196.632 543.96 null] +>> endobj +4320 0 obj << +/D [4309 0 R /XYZ 71.731 541.803 null] >> endobj 4321 0 obj << -/D [4299 0 R /XYZ 71.731 138.316 null] +/D [4309 0 R /XYZ 417.183 495.143 null] >> endobj 4322 0 obj << -/D [4299 0 R /XYZ 71.731 138.316 null] +/D [4309 0 R /XYZ 71.731 492.986 null] >> endobj 4323 0 obj << -/D [4299 0 R /XYZ 71.731 115.826 null] +/D [4309 0 R /XYZ 71.731 457.121 null] >> endobj -4298 0 obj << -/Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R >> -/ProcSet [ /PDF /Text ] +4324 0 obj << +/D [4309 0 R /XYZ 74.222 402.491 null] >> endobj -4326 0 obj << -/Length 3031 -/Filter /FlateDecode ->> -stream -xڝZY��F~�_����F���5q��l��&�dk7I�(�GbL�2O�_�h��4r6�r���h\ �����YD�y�q� �E���[�|s��ZP��/o�x�y��JBo���������Zq�.��������� ��ſ�;Ń/��EY�<{�r�`y������_�y��� A�EV{W�48�R���I`�>��c��}-�g9�����NbA�ʄ�U�Z�9S�=wyh�d�T�+g�֨�nr�.��CQmy�S�t;�(B�-�}٥������,S�Ȟ����iӽ�ج\{�o_����T��HUNg\��\kǵ���jں�Kت�r)U��\W�K;3����O�,�B�o�n�wW��`�,5��#�_l�U�+-� Qq��:�g��Qy�H�<�{h-�=��xcJt���i��$�˲hVx�Ne]a��^3�yWd;٭�J�*���ʡ��i�9�x%�Őe�ה���X������&4Z�yE&��E����Ј����H�4W��2��ӂaғ�ao�3�9�'��'X����$��d��dβ�ɒ�gu�YA���@j��G�o�ҒGr���ɹ!(�.><uv�q��1~�^��� ��_���6"��q5���N���a�:q�M�}�b3ǀnն��$��=-�`6�R�Z���Y��S:2_k V�k�yڥ���پ'C��l�����+��fl-�k`�^�q�ka��-M�1�����Pdi�f�#�S��ѷ{���^豱р�����"Z4�R�g%4*�ݣ&C?>��;:���'^>�}ãQg4+�P�6+'FP4~ �x�OE�j� �Z6��fWT��~Zv��Ҏ���`������=[@,[�Eq0I[ƚ\4f�:��49�Ct�>Q�4�a���{��ը4_ו���t�4 �4�b���� �-�Ok2���������箳��s��&Xm�)̝�;��9��4e����9_�i�ɍcW��|�<�6X������y�؞:�f\Dz��bcp�$]Ŝ�iF���E� ;dz�ȿ�n�;��=������/��9�&����Ԝ��>M# t\ SuusZ�RL�y��`�[yCQ�nN�>C��qF���LL���겊��.����:1v�wݐRd"��P?N 8��J<7`�L�)[�s<�g����N� K��-y�H/��~�Q�]ߌ7M�$9��J�x�t�_Na�c��i ��-���T�ŦP������ ��tF�XGXZިvXl���6�x^�>� 1��7���U�\��@��͖���@XG��� j������c퇻&3�mD>��)�9�V;V.�G�'�H%F���#\5+��y O�Tm65��\ĩ�ۖB��R�C�r��z� ����}1�]`��v����,�M5�J�F\��0J}Ө��c��?_R�Z���<0AzY���Y�E%���J��~F���ت�؈�6�#?����Z�_g̻���uc��W�O����;������I6��Iy�Aq���si=�J�&.��A�J��=E�oޑ߿��B,�B+p¿v��c��V`�'��=�L?�3 -ʡ���� -���B���e@0�[bV�<�E�U�/��i&@�� ���zA^g����G�[TҰQ�f���/I����÷�ޯ/< �ߜ�`�H����N` *�#1�\����с��-�ؘIE���u_�������;K��-O��`�̩W�s{(+�XGz�F�,�p� ~�q<��O�"��5���ٗ��`��Mz��=Pi�,���F�x��vi#C�m,�'� -��ާ��$��E��س�slT��� -X��B>5ʣp��3����ϐv�v&�������� -�:�u���Os&��&Ԧ�ߧU/�Y����n�=����m+r����b�78��ŀ����U�3º����*ġh[����p��Ua���â�.S�,Q����Tzp��U�U~'l���\�۔�bS9��T��U]��yp��<�~.�e�xcY��56$.;V:{YZ���z��d�����0�}V�2�v|mRө�{B�>��=��A���4k��1�� -W�$��T��B��>������aP���������=?�B�l�JoѨ������J�k�����གwFbm�A������-���eJF`�-���r{�ߔ��f��_�0�a�����^3�z���]�S`��\ -<�z���V��(?���x�o��S:,�=��ӕ�/©�w+�x>kr<��i������F(���ЄʘW\�:kwx���/g��mZ�J��(.�ghΠ���iX�O����%�%��@K�i ��V(gE��{��J��P,pb�<��i/0+��5��7݉�a���P)�\ؐÁ�2����gnYTm��٤^TsE�6���P��Bc=���uJ�Ś|�@��Z���+BI|���\�~J��ga��o�p�51�#y���WsϼxLڞ�� -y��g�b�A�1��$<���߽��ݛ��~����Ү���\�p3�'�|g�1���(b�)��\�sϭ�f�9�!-o�K�K�w -]�jo�6��%}��SBJG�������-^0�Ӝ�Ԯ�}*�b��cp=��T^t���a���m�/�X��>�[�ܱ�1�����f�;��J� ؠ��db���d�&�K/I�`���T���#�/X���<צ �����l2��Q�����7q6��4�gI����>�B!��O����K��E8���6%Nt�`1lbq�hxŦ��H��=(GcrK�^���/��\��\^��p���<����%�_i��������3�L�#&Okf����A���O7Ԍ��Y46�3)��i��?�͔�/Pڮ��)�_�Db� -���x���b���m�GAϫ~oj�њ��� -���� �A��7�K�ݭ}{�q�=�c'��� #�ٟ�n��� -9_���sV�H�:endstream -endobj 4325 0 obj << -/Type /Page -/Contents 4326 0 R -/Resources 4324 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 4268 0 R -/Annots [ 4351 0 R ] +/D [4309 0 R /XYZ 71.731 351.517 null] >> endobj -4351 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.95 216.02 269.707 222.874] -/Subtype /Link -/A << /S /GoTo /D (upgrade-cvs) >> +4326 0 obj << +/D [4309 0 R /XYZ 71.731 283.836 null] >> endobj 4327 0 obj << -/D [4325 0 R /XYZ 71.731 729.265 null] +/D [4309 0 R /XYZ 71.731 247.97 null] >> endobj 4328 0 obj << -/D [4325 0 R /XYZ 71.731 693.235 null] +/D [4309 0 R /XYZ 71.731 202.077 null] >> endobj 4329 0 obj << -/D [4325 0 R /XYZ 71.731 649.4 null] ->> endobj -4330 0 obj << -/D [4325 0 R /XYZ 71.731 626.486 null] +/D [4309 0 R /XYZ 71.731 179.163 null] >> endobj 4331 0 obj << -/D [4325 0 R /XYZ 71.731 569.699 null] +/D [4309 0 R /XYZ 71.731 138.316 null] >> endobj 4332 0 obj << -/D [4325 0 R /XYZ 71.731 546.785 null] +/D [4309 0 R /XYZ 71.731 138.316 null] >> endobj 4333 0 obj << -/D [4325 0 R /XYZ 71.731 541.803 null] +/D [4309 0 R /XYZ 71.731 115.826 null] >> endobj -4334 0 obj << -/D [4325 0 R /XYZ 71.731 539.313 null] +4308 0 obj << +/Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +4336 0 obj << +/Length 3031 +/Filter /FlateDecode +>> +stream +xڝZYs�F~��Л�*��}<M9�L�[��&�dk7I�(�-1C��(�~?4�$Eɚl��b7��h\ �Y��s�cEnb�a���7�b�7��8������Ǜ/�x�"���[<>-|'�b��V�������ᠪ��c�v{yo��q�x�e���(˔goV�,�W���~���?o�~$��Jb敖�\Jw�2 �Ї�vly����,�"~_�q��I� @�P��U!=g*��.M��̟�|�,���M��e�}(�-O�w�b�n���B�ž/��Ru�2R�e`�7��f�n'|�t/46+�^��W<3��$ R��k���q�DN頚������JUwE&����Ό$�1������[��~��,��A�FbP�qd��m�*��!*��cQ��,s�*�bi�G|�ųy?����/�uZ4<��,ڂ�SYW���~��NV��B�� +���rh�A�fCFa�9 �E1d��5�(b��n�㡶 �VAe^� �s���d%4���<2�>��7G�-�`��d{��������F�����bg��P2{��dIӽ:z� �Vr 5ˁ�ᙫ��ljj}�o���O�|\�q�����<qC����h��H�1F\�ǶS{6}�C�Ng�f����1`��F����%I�sO����T�V} n��Δ������e�v�&me����e-�c!���r�KK����j\�ZX�r�Ag����|aw<YZ������Ts�`��hرzll4`=�<i`�E��M���Y � +|G���Ç�W}G��x��į�u��h�� +!T��ʉ��"�S���Zu½��u���`熟��j��#E��h1#���c�˖NQGLҖ�&�Y�%4MNt�w�O�9 hX<5��G)c5*��u�*&�5 )����p�dr����L�/�n�����oŹ묽�\p� V[t�s���}���1�@���q�C·qcr��� �����f_���ռ�ql� +T3�c�~x��18� ��bN�4#D[�"愝�YA�_b7��e�u�3������n�y���1�a>r�����#�G�i$��d��n�B�S�)}@"Oq�w�!o(��� �g�v;ΨR������=^rW]V���!�٢@'�β�R�L�X�� ���@����:��3e�W���5z�5� d�Լ%/�s��7J��� �$�G�Ԍ��L7a��8����0���h��O%Yl +��J�.����Og4�u�����[��t@���;��NgB��Ͳ�h�1W"$�n�r���Ā�>֑��:��a717���E���Ɍy�wEepJ`N���΅7 �#�I�#w�K����Q����r�6��?D.�T�mK!�z)���o�Ar=�M�^a����.��|��~Fx¦�?��N�Bb%��iT�ͱBʟ/)�-��L� ��D��,�����%^c?#L�l�ylDeǑ����]QO�?���.������w�ĕ����?�Τ�"�6y�́a`R^`P� B蹴�o%�_��y\%��"�7�ȋ��~}!�{�8�_�IʱՋ\+�ݓ��T�����T�rm��e!cqz�2 ��-1+K��"���Iee� ���E�Mz�ޤ~!�3�R~��:��4,B��An��%���7�}�����������i�x� ,�M�m$暋QU���1�pQ�r���T^�pZ�e�Ѝ,..��ĭ���=�ʜJq�;�����u�_\��e.�:����IW���.�}��fZ�ФW��ك��܁�베BW������.md(���� �B���tE4 nw��a4�,d�=+����O��(ܲ�Li.u�3������5���q����@$��ӜI�����)��i��mV7����i�<�b��|ۊ\�z�� �� )�1�_`���������>u� +q����'.$obUxwz���a�H����I^Q����Tzp��U�U~'l���\�۔�bS9��T��U]��yp��<�~.�e�xcY��56$.;V:{YZ���z��d�����0�}V�2�v�mRө�{B�>��=��A���4k��1�� +W�$��T��B��>������aP������!dϏ�9۱��[4j�t�������<r�k4x����Xi1�9��zǷ<���z7���^�7e�����1�@/X;��$��Lh�^�W|W���8���O�^�zc<#���lc�agw��O��S:,�=��ӕ�7©���'�Ϛ�tr�<�6pǴ���/4�2�U��ۢΚ��(����ިa�V��h���u���3�k-r^�'M�xl� ʒ��K��ܴ��u+�����=RK��v\(�8��S��ߴ�a������0H�b��M.l��@�^�FR��3�,��k�l��/��"\ei`(^J!��Q��:%�bM>o��v-�r�x���$��\P�r?%�������ηl8����\k����gn�&mO�v�\�ڳk���� +bh���߽͛��ݛ��~����Ү���\�p3�'�|g�1���(� S�Ϲ��[���sBC.Z�җ8�z��:��2�!mP�K�F�����0���W��[��TNs�R���h�(g�����Sy��:��V�-.��b�M���nuLs�^,�,vb�w&���A�L�+�$`��2t����.��G��/�$%��V8cP�z��o�t�W���6�̴��f�����G�����T��\Kb���� +������\��X@7���Ŷ)q���a�E��(65@*���D9�[z�p�m/}!О�o���O�����F�7<��抷��;0jϬ�2d��\��-�sI6�?�P3V&楱�IY5M�����o�\}��v��N���'�UP�w�3d�{�d�o�? +�^�{SÍ�L�LU���n��]�n�۳�+��@�����AF����n�*c�B[���~�q���=endstream +endobj 4335 0 obj << -/D [4325 0 R /XYZ 113.574 521.046 null] +/Type /Page +/Contents 4336 0 R +/Resources 4334 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4248 0 R +/Annots [ 4361 0 R ] >> endobj -4336 0 obj << -/D [4325 0 R /XYZ 149.15 508.095 null] +4361 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.95 216.02 269.707 222.874] +/Subtype /Link +/A << /S /GoTo /D (upgrade-cvs) >> >> endobj 4337 0 obj << -/D [4325 0 R /XYZ 71.731 480.035 null] +/D [4335 0 R /XYZ 71.731 729.265 null] >> endobj 4338 0 obj << -/D [4325 0 R /XYZ 113.574 464.259 null] +/D [4335 0 R /XYZ 71.731 693.235 null] >> endobj 4339 0 obj << -/D [4325 0 R /XYZ 71.731 462.102 null] +/D [4335 0 R /XYZ 71.731 649.4 null] >> endobj 4340 0 obj << -/D [4325 0 R /XYZ 113.574 446.326 null] +/D [4335 0 R /XYZ 71.731 626.486 null] >> endobj 4341 0 obj << -/D [4325 0 R /XYZ 131.461 446.326 null] +/D [4335 0 R /XYZ 71.731 569.699 null] >> endobj 4342 0 obj << -/D [4325 0 R /XYZ 349.56 446.326 null] +/D [4335 0 R /XYZ 71.731 546.785 null] >> endobj 4343 0 obj << -/D [4325 0 R /XYZ 71.731 413.659 null] +/D [4335 0 R /XYZ 71.731 541.803 null] >> endobj 4344 0 obj << -/D [4325 0 R /XYZ 100.623 358.655 null] +/D [4335 0 R /XYZ 71.731 539.313 null] >> endobj 4345 0 obj << -/D [4325 0 R /XYZ 113.574 340.722 null] +/D [4335 0 R /XYZ 113.574 521.046 null] >> endobj 4346 0 obj << -/D [4325 0 R /XYZ 419.902 340.722 null] +/D [4335 0 R /XYZ 149.15 508.095 null] >> endobj 4347 0 obj << -/D [4325 0 R /XYZ 71.731 325.614 null] +/D [4335 0 R /XYZ 71.731 480.035 null] >> endobj 4348 0 obj << -/D [4325 0 R /XYZ 164.384 287.05 null] +/D [4335 0 R /XYZ 113.574 464.259 null] >> endobj 4349 0 obj << -/D [4325 0 R /XYZ 222.306 266.929 null] +/D [4335 0 R /XYZ 71.731 462.102 null] >> endobj 4350 0 obj << -/D [4325 0 R /XYZ 71.731 229.071 null] +/D [4335 0 R /XYZ 113.574 446.326 null] +>> endobj +4351 0 obj << +/D [4335 0 R /XYZ 131.461 446.326 null] >> endobj 4352 0 obj << -/D [4325 0 R /XYZ 74.222 198.187 null] +/D [4335 0 R /XYZ 349.56 446.326 null] >> endobj 4353 0 obj << -/D [4325 0 R /XYZ 71.731 173.116 null] +/D [4335 0 R /XYZ 71.731 413.659 null] >> endobj 4354 0 obj << -/D [4325 0 R /XYZ 421.753 157.34 null] +/D [4335 0 R /XYZ 100.623 358.655 null] >> endobj 4355 0 obj << -/D [4325 0 R /XYZ 95.641 144.389 null] +/D [4335 0 R /XYZ 113.574 340.722 null] >> endobj 4356 0 obj << -/D [4325 0 R /XYZ 252.683 144.389 null] +/D [4335 0 R /XYZ 419.902 340.722 null] >> endobj 4357 0 obj << -/D [4325 0 R /XYZ 185.773 105.535 null] +/D [4335 0 R /XYZ 71.731 325.614 null] >> endobj -4324 0 obj << -/Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R >> -/ProcSet [ /PDF /Text ] +4358 0 obj << +/D [4335 0 R /XYZ 164.384 287.05 null] +>> endobj +4359 0 obj << +/D [4335 0 R /XYZ 222.306 266.929 null] >> endobj 4360 0 obj << +/D [4335 0 R /XYZ 71.731 229.071 null] +>> endobj +4362 0 obj << +/D [4335 0 R /XYZ 74.222 198.187 null] +>> endobj +4363 0 obj << +/D [4335 0 R /XYZ 71.731 173.116 null] +>> endobj +4364 0 obj << +/D [4335 0 R /XYZ 421.753 157.34 null] +>> endobj +4365 0 obj << +/D [4335 0 R /XYZ 95.641 144.389 null] +>> endobj +4366 0 obj << +/D [4335 0 R /XYZ 252.683 144.389 null] +>> endobj +4367 0 obj << +/D [4335 0 R /XYZ 185.773 105.535 null] +>> endobj +4334 0 obj << +/Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4370 0 obj << /Length 2389 /Filter /FlateDecode >> @@ -16376,94 +16441,94 @@ I ҇|:l�Smr��+�X��t�<v�O�^?�r!�&9����Ǝb. �9�~�ه98s��j���n��i��; "���|��� |�ˁ�c�}��G�S��3�1��S������U�,@O8tc1p�K{;�i�5��4�&E���8�͌h��njpG?�. (;\��>:��{N��</:�v����m�\NTpHh�]��V��q����N\�H�����l��S�=g�0�����!Vp��`6��a������(���I.R(�IN�k����b��82y+��."�yH�>P�\AIT�����Y?K�{H�%z����e]Q}|���b"�5OCdS]ӳ�Ӳ�1�a2N�����j�H��Ur<�9��M;wQ��F�J>rD�5�֣r��������ވ6�kɱ��6�ЊB*^�v!���R��nK��'H���i�\ZDS�����4B;0�}=\0U�UC��k��"�Nh�ja/RC����ĉ��е�Tx%��u�Xف����qױ$�g��N��fy� -��S��-�%��갼�%��%�uQ�K�_��2������%�0RA8���#O�r'�|%����6���:�H���e lR�=nfU3Mp7����K�B�=�I��7����]-l�&7���1�P|Nק 7Xj�S�ǂ.��;;��#����Q+�jבGt��8�m���|��)O;#�V��������_���S�fEV�c�L�TPN~!��FN;=��P�����{M>��f��R���R� ��y�9�7y���u��6�$/wXi��Ur}��rF���-��b��c�ǁ6o� ;�7����ۧ��ٛ�{h�Ѻ�C8Jk�W=�.�$Y�Ps!��aH-�WN���#s���0{��ˇRm|w�B���)<�y��B['��2�uc�|�b�ݺPM��T[/�MA�B;�E�E#�s$�sL���B��&���l�ܘ��}�=H��h凵���������0��a��M�U1����#�ԣ�GS�]5<<n����4�>��&Y���[JO\P�t�W/�KQ�1 Jendstream +��S��-�%��갼�%��%�uQ�K�_��2������%�0RA8���#O�r'�|%����6���:�H���e lR�=nfU3Mp7����K�B�=�I��7����]-l�&7���1�P|Nק 7Xj�S�ǂ.��;;��#����Q+�jבGt��8�m���|��)O;#�V��������_���S�fEV�c�L�TPN~!��FN;=��P�����{M>��f��R���R� ��y�9�7y���u��6�$/wXi��Ur}��rF���-��b��c�ǁ6o� ;�7����ۧ��ٛ�{h�Ѻ�C8Jk�W=�.�$Y�Ps!��aH-�WN���#s���0{��ˇRm|w�B���)<�y��B['��2�uc�|�b�ݺPM��T[/�MA�B;�E�E#�s$�sL���B��&���l�ܘ��}�=H��h凵���������0��a��M�U1����#�ԣ�GS�]5<<n����4�>��&Y���!\�B��Hӿz�_J�?�I�endstream endobj -4359 0 obj << +4369 0 obj << /Type /Page -/Contents 4360 0 R -/Resources 4358 0 R +/Contents 4370 0 R +/Resources 4368 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4268 0 R -/Annots [ 4374 0 R ] +/Parent 4248 0 R +/Annots [ 4384 0 R ] >> endobj -4374 0 obj << +4384 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [312.894 353.147 351.505 362.058] /Subtype /Link /A << /S /GoTo /D (installing-bugzilla) >> >> endobj -4361 0 obj << -/D [4359 0 R /XYZ 71.731 729.265 null] ->> endobj -4362 0 obj << -/D [4359 0 R /XYZ 71.731 718.306 null] ->> endobj -4363 0 obj << -/D [4359 0 R /XYZ 485.041 695.392 null] ->> endobj -4364 0 obj << -/D [4359 0 R /XYZ 74.222 664.508 null] ->> endobj -4365 0 obj << -/D [4359 0 R /XYZ 71.731 639.437 null] ->> endobj -4366 0 obj << -/D [4359 0 R /XYZ 71.731 600.648 null] ->> endobj -4367 0 obj << -/D [4359 0 R /XYZ 128.474 554.521 null] ->> endobj -4368 0 obj << -/D [4359 0 R /XYZ 71.731 539.412 null] ->> endobj -4369 0 obj << -/D [4359 0 R /XYZ 142.466 500.848 null] ->> endobj -4370 0 obj << -/D [4359 0 R /XYZ 142.466 469.071 null] ->> endobj 4371 0 obj << -/D [4359 0 R /XYZ 180.841 457.415 null] +/D [4369 0 R /XYZ 71.731 729.265 null] >> endobj 4372 0 obj << -/D [4359 0 R /XYZ 142.466 446.185 null] +/D [4369 0 R /XYZ 71.731 718.306 null] >> endobj 4373 0 obj << -/D [4359 0 R /XYZ 71.731 362.058 null] +/D [4369 0 R /XYZ 485.041 695.392 null] +>> endobj +4374 0 obj << +/D [4369 0 R /XYZ 74.222 664.508 null] >> endobj 4375 0 obj << -/D [4359 0 R /XYZ 264.01 303.498 null] +/D [4369 0 R /XYZ 71.731 639.437 null] >> endobj 4376 0 obj << -/D [4359 0 R /XYZ 375.655 303.498 null] +/D [4369 0 R /XYZ 71.731 600.648 null] >> endobj 4377 0 obj << -/D [4359 0 R /XYZ 71.731 288.39 null] +/D [4369 0 R /XYZ 128.474 554.521 null] >> endobj 4378 0 obj << -/D [4359 0 R /XYZ 71.731 273.446 null] +/D [4369 0 R /XYZ 71.731 539.412 null] >> endobj 4379 0 obj << -/D [4359 0 R /XYZ 71.731 224.395 null] +/D [4369 0 R /XYZ 142.466 500.848 null] >> endobj 4380 0 obj << -/D [4359 0 R /XYZ 111.412 198.492 null] +/D [4369 0 R /XYZ 142.466 469.071 null] >> endobj 4381 0 obj << -/D [4359 0 R /XYZ 71.731 170.596 null] +/D [4369 0 R /XYZ 180.841 457.415 null] >> endobj 4382 0 obj << -/D [4359 0 R /XYZ 71.731 170.596 null] +/D [4369 0 R /XYZ 142.466 446.185 null] >> endobj 4383 0 obj << -/D [4359 0 R /XYZ 71.731 145.66 null] +/D [4369 0 R /XYZ 71.731 362.058 null] >> endobj -4358 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R /F44 1925 0 R >> -/ProcSet [ /PDF /Text ] +4385 0 obj << +/D [4369 0 R /XYZ 264.01 303.498 null] >> endobj 4386 0 obj << +/D [4369 0 R /XYZ 375.655 303.498 null] +>> endobj +4387 0 obj << +/D [4369 0 R /XYZ 71.731 288.39 null] +>> endobj +4388 0 obj << +/D [4369 0 R /XYZ 71.731 273.446 null] +>> endobj +4389 0 obj << +/D [4369 0 R /XYZ 71.731 224.395 null] +>> endobj +4390 0 obj << +/D [4369 0 R /XYZ 111.412 198.492 null] +>> endobj +4391 0 obj << +/D [4369 0 R /XYZ 71.731 170.596 null] +>> endobj +4392 0 obj << +/D [4369 0 R /XYZ 71.731 170.596 null] +>> endobj +4393 0 obj << +/D [4369 0 R /XYZ 71.731 145.66 null] +>> endobj +4368 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4396 0 obj << /Length 2390 /Filter /FlateDecode >> @@ -16476,115 +16541,115 @@ E [,Up�����K8F�j�:��ӵ�O�|c5��8 �CY�;��.��a��(J�����$�����A��%� �u�~�}튺��c^7E�"u�(� T�t]���ߖ��������z����KJ7�%ˮ��/�u7خ�6�H~-��.��{�7�0�v������W��[֓V��D-9�<[I|rV�N�f���M��w O��������;.��ESt.��r�-���i���j��ɺ�P�5�$9>�T9<��ؒ����K��Tvzho�u ���o�qh�5]�^��1��t�k��]nz[��QO�/�v���8N��t{TN&d˪�ޖ�vN ��}I�0����I�7�k��.#̩�2�qhb���4L���ԃ ��76+<��^�8έ!t_�E����oJ���D�7�-��#�o�#�%<�r�bK��m��c�pM,2�s� �ʽn ���A���Eam��[����\�&4~��pB��ު��}�葟��Zn�"�?��gRE�^B��^����Զ�%�%��2�k�Щ9�&ͭg�t�Uc 1����^ea�Wm�c�4�SD��Oh�#җ��ew���^O�,�E�~O�K2Qҡ��F�^<V�;ۑ۸��S�ʌ*���6���R�z� �]�����r̒c5e��jO*���VڧO�+��az�9 `�^I��Y��5���� ������+�ñe3)����\�����p��O2�`C!�8���.�����.@���#$��ҝ~�����<#c3�1��Pw^T3���f2��*N�Ne��~o���7�6������}�����.�(��X���\V�D��$*Ę��5]���N7$�N������G�cen�}���ҟ`�W#���.�������늚�k��F7�T�K�*Q��h-��~^�e"��h��3�w�N���:�*�r�����n�H�t�5-��wF{9�F��њ�ܻI��'���zW���`k� -�̌iP�NT��|��srJT��I�A�P7v�¬�o8:�t]�1ą4!����'��/��c�"��zh;����#�h�*�1Ws��k˛��S�ڌ8���Rl��l$�ȁ�6k$�$�ٙ`H�~IY�^rV&Hw0�WT�-d�8����U����O(@�%�rg+�#,�C��eDŽ���U+��;Q��\|���R���ѧF�������JM�0�x��V���|��9l�v�@1�}�O��Zs��B(�dy��Ϛ�c�؎E�b�� ؋O�PF�19��D�6~p�a�}��N����K\e��L�������5�JS�/Q���ݢFa��DN�X��9��E1��kHe���{Ë����i���>�~;�T�~BH�,._��aD���AE�a�'B�e�s?\r�/W7V�endstream +�̌iP�NT��|��srJT��I�A�P7v�¬�o8:�t]�1ą4!����'��/��c�"��zh;����#�h�*�1Ws��k˛��S�ڌ8���Rl��l$�ȁ�6k$�$�ٙ`H�~IY�^rV&Hw0�WT�-d�8����U����O(@�%�rg+�#,�C��eDŽ���U+��;Q��\|���R���ѧF�������JM�0�x��V���|��9l�v�@1�}�O��Zs��B(�dy��Ϛ�c�؎E�b�� ؋O�PF�19��D�6~p�a�}��N����K\e��L�������5�JS�/Q���ݢFa��DN�X��9��E1��kHe���{Ë����i���>�~;�T�~BH�,._��aD���AE�a�'B�e�s?\r�/WbV�endstream endobj -4385 0 obj << +4395 0 obj << /Type /Page -/Contents 4386 0 R -/Resources 4384 0 R +/Contents 4396 0 R +/Resources 4394 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4268 0 R -/Annots [ 4393 0 R ] +/Parent 4427 0 R +/Annots [ 4403 0 R ] >> endobj -4393 0 obj << +4403 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [422.465 613.447 467.048 622.037] /Subtype /Link /A << /S /GoTo /D (security-mysql) >> >> endobj -4387 0 obj << -/D [4385 0 R /XYZ 71.731 729.265 null] ->> endobj -4388 0 obj << -/D [4385 0 R /XYZ 71.731 693.235 null] ->> endobj -4389 0 obj << -/D [4385 0 R /XYZ 184.704 677.46 null] ->> endobj -4390 0 obj << -/D [4385 0 R /XYZ 387.861 677.46 null] ->> endobj -4391 0 obj << -/D [4385 0 R /XYZ 71.731 662.471 null] ->> endobj -4392 0 obj << -/D [4385 0 R /XYZ 142.466 623.907 null] ->> endobj -4394 0 obj << -/D [4385 0 R /XYZ 74.222 575.891 null] ->> endobj -4395 0 obj << -/D [4385 0 R /XYZ 71.731 550.82 null] ->> endobj -4396 0 obj << -/D [4385 0 R /XYZ 71.731 497.021 null] ->> endobj 4397 0 obj << -/D [4385 0 R /XYZ 71.731 497.021 null] +/D [4395 0 R /XYZ 71.731 729.265 null] >> endobj 4398 0 obj << -/D [4385 0 R /XYZ 71.731 474.242 null] +/D [4395 0 R /XYZ 71.731 693.235 null] >> endobj 4399 0 obj << -/D [4385 0 R /XYZ 71.731 440.299 null] +/D [4395 0 R /XYZ 184.704 677.46 null] >> endobj 4400 0 obj << -/D [4385 0 R /XYZ 204.252 396.563 null] +/D [4395 0 R /XYZ 387.861 677.46 null] >> endobj 4401 0 obj << -/D [4385 0 R /XYZ 71.731 381.455 null] +/D [4395 0 R /XYZ 71.731 662.471 null] >> endobj 4402 0 obj << -/D [4385 0 R /XYZ 71.731 358.541 null] ->> endobj -4403 0 obj << -/D [4385 0 R /XYZ 194.459 342.765 null] +/D [4395 0 R /XYZ 142.466 623.907 null] >> endobj 4404 0 obj << -/D [4385 0 R /XYZ 357.109 342.765 null] +/D [4395 0 R /XYZ 74.222 575.891 null] >> endobj 4405 0 obj << -/D [4385 0 R /XYZ 71.731 330.645 null] +/D [4395 0 R /XYZ 71.731 550.82 null] >> endobj 4406 0 obj << -/D [4385 0 R /XYZ 197.727 298.232 null] +/D [4395 0 R /XYZ 71.731 497.021 null] >> endobj 4407 0 obj << -/D [4385 0 R /XYZ 328.437 298.232 null] +/D [4395 0 R /XYZ 71.731 497.021 null] >> endobj 4408 0 obj << -/D [4385 0 R /XYZ 71.731 296.075 null] +/D [4395 0 R /XYZ 71.731 474.242 null] >> endobj 4409 0 obj << -/D [4385 0 R /XYZ 71.731 281.131 null] +/D [4395 0 R /XYZ 71.731 440.299 null] >> endobj 4410 0 obj << -/D [4385 0 R /XYZ 71.731 259.674 null] +/D [4395 0 R /XYZ 204.252 396.563 null] >> endobj 4411 0 obj << -/D [4385 0 R /XYZ 115.567 206.247 null] +/D [4395 0 R /XYZ 71.731 381.455 null] >> endobj 4412 0 obj << -/D [4385 0 R /XYZ 71.731 178.351 null] +/D [4395 0 R /XYZ 71.731 358.541 null] >> endobj 4413 0 obj << -/D [4385 0 R /XYZ 71.731 153.281 null] +/D [4395 0 R /XYZ 194.459 342.765 null] >> endobj 4414 0 obj << -/D [4385 0 R /XYZ 187.785 120.867 null] +/D [4395 0 R /XYZ 357.109 342.765 null] >> endobj 4415 0 obj << -/D [4385 0 R /XYZ 71.731 118.71 null] +/D [4395 0 R /XYZ 71.731 330.645 null] >> endobj 4416 0 obj << -/D [4385 0 R /XYZ 71.731 113.729 null] +/D [4395 0 R /XYZ 197.727 298.232 null] >> endobj -4384 0 obj << -/Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R /F48 1937 0 R >> -/ProcSet [ /PDF /Text ] +4417 0 obj << +/D [4395 0 R /XYZ 328.437 298.232 null] +>> endobj +4418 0 obj << +/D [4395 0 R /XYZ 71.731 296.075 null] >> endobj 4419 0 obj << +/D [4395 0 R /XYZ 71.731 281.131 null] +>> endobj +4420 0 obj << +/D [4395 0 R /XYZ 71.731 259.674 null] +>> endobj +4421 0 obj << +/D [4395 0 R /XYZ 115.567 206.247 null] +>> endobj +4422 0 obj << +/D [4395 0 R /XYZ 71.731 178.351 null] +>> endobj +4423 0 obj << +/D [4395 0 R /XYZ 71.731 153.281 null] +>> endobj +4424 0 obj << +/D [4395 0 R /XYZ 187.785 120.867 null] +>> endobj +4425 0 obj << +/D [4395 0 R /XYZ 71.731 118.71 null] +>> endobj +4426 0 obj << +/D [4395 0 R /XYZ 71.731 113.729 null] +>> endobj +4394 0 obj << +/Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R /F48 1934 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4430 0 obj << /Length 2690 /Filter /FlateDecode >> @@ -16601,169 +16666,169 @@ c ����N���T7��zZ��I��c��rȌ�f�e.�ua�O�o���%����_lD){�����D�0e��:��]8ǖ(�=��x�x1z��ޢ��\k���u۠+w5��'J���5�-\��([���/��l#��1$�Ҕ�A�|��\��ǖ���<���� ��F��N�hph�`�e�v�\�_��GW��ĭ����7����s��Jc9=t}G��VA�E�K�W� :�/�'��2��w�&�E����h�k�K�r^�X�)v�������les���|sݛ����7�(nӦr: ��B��r �Vu���<ԕ�[(rn|�����HZ��ɗ���rHK�kš�>�<�!�rt)�YM�r�D�忰4UyĔ��!�55���J�}q�����S�#�A��X6-q<^�Ug�6�إ�28���>6���7�-V�!Ӑ �vX �M�������=[.P6�7a����bVڇ����f����E�x�?[��aU�f����f���5ߛ��ۣ�(*�����{����z�r�h5̹��bƗ�&���r�Y���U�țC@���W�:J���|���P'�� ��a���B�_�;(�۞'� D�%I �<U'I�k;��K���r�+�~T�Ł��/��"��k��azs������{A���)�:�i3<� �j�V&k�>��/�C���j(�p�atB���5��R��x`�;2?"�0d\�I*�E�e�(��'%qG|��s�Y��u�M&��$Kp�Õ ���i>?l9ƽm���N6���D�o���F��}�[/:������SUlj�v�E:���^��~���#ɤ)��`�� -4���u��Pt�endstream +4��u��O�endstream endobj -4418 0 obj << +4429 0 obj << /Type /Page -/Contents 4419 0 R -/Resources 4417 0 R +/Contents 4430 0 R +/Resources 4428 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4468 0 R -/Annots [ 4449 0 R ] +/Parent 4427 0 R +/Annots [ 4460 0 R ] >> endobj -4449 0 obj << +4460 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [208.787 359.487 228.214 368.398] /Subtype /Link /A << /S /GoTo /D (gloss-mta) >> >> endobj -4420 0 obj << -/D [4418 0 R /XYZ 71.731 729.265 null] ->> endobj -4421 0 obj << -/D [4418 0 R /XYZ 105.604 708.344 null] ->> endobj -4422 0 obj << -/D [4418 0 R /XYZ 140.184 708.344 null] ->> endobj -4423 0 obj << -/D [4418 0 R /XYZ 184.766 708.344 null] ->> endobj -4424 0 obj << -/D [4418 0 R /XYZ 71.731 706.187 null] ->> endobj -4425 0 obj << -/D [4418 0 R /XYZ 105.604 690.411 null] ->> endobj -4426 0 obj << -/D [4418 0 R /XYZ 140.184 690.411 null] ->> endobj -4427 0 obj << -/D [4418 0 R /XYZ 185.563 690.411 null] ->> endobj -4428 0 obj << -/D [4418 0 R /XYZ 71.731 688.254 null] ->> endobj -4429 0 obj << -/D [4418 0 R /XYZ 105.604 672.478 null] ->> endobj -4430 0 obj << -/D [4418 0 R /XYZ 132.164 672.478 null] ->> endobj 4431 0 obj << -/D [4418 0 R /XYZ 74.222 654.545 null] +/D [4429 0 R /XYZ 71.731 729.265 null] >> endobj 4432 0 obj << -/D [4418 0 R /XYZ 71.731 629.475 null] +/D [4429 0 R /XYZ 105.604 708.344 null] >> endobj 4433 0 obj << -/D [4418 0 R /XYZ 433.301 613.699 null] +/D [4429 0 R /XYZ 140.184 708.344 null] >> endobj 4434 0 obj << -/D [4418 0 R /XYZ 159.09 600.747 null] +/D [4429 0 R /XYZ 184.766 708.344 null] >> endobj 4435 0 obj << -/D [4418 0 R /XYZ 71.731 567.706 null] +/D [4429 0 R /XYZ 71.731 706.187 null] >> endobj 4436 0 obj << -/D [4418 0 R /XYZ 95.641 543.96 null] +/D [4429 0 R /XYZ 105.604 690.411 null] >> endobj 4437 0 obj << -/D [4418 0 R /XYZ 74.222 513.076 null] +/D [4429 0 R /XYZ 140.184 690.411 null] >> endobj 4438 0 obj << -/D [4418 0 R /XYZ 71.731 488.005 null] +/D [4429 0 R /XYZ 185.563 690.411 null] >> endobj 4439 0 obj << -/D [4418 0 R /XYZ 71.731 457.121 null] +/D [4429 0 R /XYZ 71.731 688.254 null] >> endobj 4440 0 obj << -/D [4418 0 R /XYZ 71.731 434.207 null] +/D [4429 0 R /XYZ 105.604 672.478 null] >> endobj 4441 0 obj << -/D [4418 0 R /XYZ 162.252 418.431 null] +/D [4429 0 R /XYZ 132.164 672.478 null] >> endobj 4442 0 obj << -/D [4418 0 R /XYZ 254.556 418.431 null] +/D [4429 0 R /XYZ 74.222 654.545 null] >> endobj 4443 0 obj << -/D [4418 0 R /XYZ 327.124 418.431 null] +/D [4429 0 R /XYZ 71.731 629.475 null] >> endobj 4444 0 obj << -/D [4418 0 R /XYZ 499.517 418.431 null] +/D [4429 0 R /XYZ 433.301 613.699 null] >> endobj 4445 0 obj << -/D [4418 0 R /XYZ 207.161 392.528 null] +/D [4429 0 R /XYZ 159.09 600.747 null] >> endobj 4446 0 obj << -/D [4418 0 R /XYZ 270.687 392.528 null] +/D [4429 0 R /XYZ 71.731 567.706 null] >> endobj 4447 0 obj << -/D [4418 0 R /XYZ 476.12 392.528 null] +/D [4429 0 R /XYZ 95.641 543.96 null] >> endobj 4448 0 obj << -/D [4418 0 R /XYZ 71.731 372.438 null] +/D [4429 0 R /XYZ 74.222 513.076 null] +>> endobj +4449 0 obj << +/D [4429 0 R /XYZ 71.731 488.005 null] >> endobj 4450 0 obj << -/D [4418 0 R /XYZ 356.244 361.644 null] +/D [4429 0 R /XYZ 71.731 457.121 null] >> endobj 4451 0 obj << -/D [4418 0 R /XYZ 122.471 348.692 null] +/D [4429 0 R /XYZ 71.731 434.207 null] >> endobj 4452 0 obj << -/D [4418 0 R /XYZ 74.222 330.76 null] +/D [4429 0 R /XYZ 162.252 418.431 null] >> endobj 4453 0 obj << -/D [4418 0 R /XYZ 71.731 305.689 null] +/D [4429 0 R /XYZ 254.556 418.431 null] >> endobj 4454 0 obj << -/D [4418 0 R /XYZ 179.919 276.961 null] +/D [4429 0 R /XYZ 327.124 418.431 null] >> endobj 4455 0 obj << -/D [4418 0 R /XYZ 417.149 276.961 null] +/D [4429 0 R /XYZ 499.517 418.431 null] >> endobj 4456 0 obj << -/D [4418 0 R /XYZ 71.731 256.872 null] +/D [4429 0 R /XYZ 207.161 392.528 null] >> endobj 4457 0 obj << -/D [4418 0 R /XYZ 71.731 225.988 null] +/D [4429 0 R /XYZ 270.687 392.528 null] >> endobj 4458 0 obj << -/D [4418 0 R /XYZ 236.948 215.193 null] +/D [4429 0 R /XYZ 476.12 392.528 null] >> endobj 4459 0 obj << -/D [4418 0 R /XYZ 289.53 215.193 null] ->> endobj -4460 0 obj << -/D [4418 0 R /XYZ 434.503 215.193 null] +/D [4429 0 R /XYZ 71.731 372.438 null] >> endobj 4461 0 obj << -/D [4418 0 R /XYZ 71.731 187.298 null] +/D [4429 0 R /XYZ 356.244 361.644 null] >> endobj 4462 0 obj << -/D [4418 0 R /XYZ 71.731 187.298 null] +/D [4429 0 R /XYZ 122.471 348.692 null] >> endobj 4463 0 obj << -/D [4418 0 R /XYZ 71.731 162.361 null] +/D [4429 0 R /XYZ 74.222 330.76 null] >> endobj 4464 0 obj << -/D [4418 0 R /XYZ 71.731 139.313 null] +/D [4429 0 R /XYZ 71.731 305.689 null] >> endobj 4465 0 obj << -/D [4418 0 R /XYZ 131.018 123.537 null] +/D [4429 0 R /XYZ 179.919 276.961 null] >> endobj 4466 0 obj << -/D [4418 0 R /XYZ 223.917 123.537 null] +/D [4429 0 R /XYZ 417.149 276.961 null] >> endobj 4467 0 obj << -/D [4418 0 R /XYZ 145.843 110.585 null] +/D [4429 0 R /XYZ 71.731 256.872 null] >> endobj -4417 0 obj << +4468 0 obj << +/D [4429 0 R /XYZ 71.731 225.988 null] +>> endobj +4469 0 obj << +/D [4429 0 R /XYZ 236.948 215.193 null] +>> endobj +4470 0 obj << +/D [4429 0 R /XYZ 289.53 215.193 null] +>> endobj +4471 0 obj << +/D [4429 0 R /XYZ 434.503 215.193 null] +>> endobj +4472 0 obj << +/D [4429 0 R /XYZ 71.731 187.298 null] +>> endobj +4473 0 obj << +/D [4429 0 R /XYZ 71.731 187.298 null] +>> endobj +4474 0 obj << +/D [4429 0 R /XYZ 71.731 162.361 null] +>> endobj +4475 0 obj << +/D [4429 0 R /XYZ 71.731 139.313 null] +>> endobj +4476 0 obj << +/D [4429 0 R /XYZ 131.018 123.537 null] +>> endobj +4477 0 obj << +/D [4429 0 R /XYZ 223.917 123.537 null] +>> endobj +4478 0 obj << +/D [4429 0 R /XYZ 145.843 110.585 null] +>> endobj +4428 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4472 0 obj << +4482 0 obj << /Length 2715 /Filter /FlateDecode >> @@ -16781,95 +16846,95 @@ OQ ��Ħ �!��R��Zpӊ�`}�I������� �~�h��� *��"ٲ��0ŕpHmU:3��e���t$����?�!)�\���n��C��A+�E����Y=Z�PtY��H- }������)�~�"�x'�a�5$��G8�}ԡ ^W���Z%}R}�G����� -��40AE��~:���Q\�endstream +��40AE�ɧ~:���Q3\�endstream endobj -4471 0 obj << +4481 0 obj << /Type /Page -/Contents 4472 0 R -/Resources 4470 0 R +/Contents 4482 0 R +/Resources 4480 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4468 0 R +/Parent 4427 0 R >> endobj -4473 0 obj << -/D [4471 0 R /XYZ 71.731 729.265 null] +4483 0 obj << +/D [4481 0 R /XYZ 71.731 729.265 null] >> endobj -4474 0 obj << -/D [4471 0 R /XYZ 71.731 741.22 null] +4484 0 obj << +/D [4481 0 R /XYZ 71.731 741.22 null] >> endobj -4475 0 obj << -/D [4471 0 R /XYZ 71.731 667.333 null] +4485 0 obj << +/D [4481 0 R /XYZ 71.731 667.333 null] >> endobj -4476 0 obj << -/D [4471 0 R /XYZ 71.731 644.419 null] +4486 0 obj << +/D [4481 0 R /XYZ 71.731 644.419 null] >> endobj -4477 0 obj << -/D [4471 0 R /XYZ 394.879 615.691 null] +4487 0 obj << +/D [4481 0 R /XYZ 394.879 615.691 null] >> endobj -4478 0 obj << -/D [4471 0 R /XYZ 236.4 589.788 null] +4488 0 obj << +/D [4481 0 R /XYZ 236.4 589.788 null] >> endobj -4479 0 obj << -/D [4471 0 R /XYZ 441.444 589.788 null] +4489 0 obj << +/D [4481 0 R /XYZ 441.444 589.788 null] >> endobj -4480 0 obj << -/D [4471 0 R /XYZ 71.731 569.699 null] +4490 0 obj << +/D [4481 0 R /XYZ 71.731 569.699 null] >> endobj -4481 0 obj << -/D [4471 0 R /XYZ 217.135 545.953 null] +4491 0 obj << +/D [4481 0 R /XYZ 217.135 545.953 null] >> endobj -4482 0 obj << -/D [4471 0 R /XYZ 74.222 528.02 null] +4492 0 obj << +/D [4481 0 R /XYZ 74.222 528.02 null] >> endobj -4483 0 obj << -/D [4471 0 R /XYZ 71.731 502.949 null] +4493 0 obj << +/D [4481 0 R /XYZ 71.731 502.949 null] >> endobj -4484 0 obj << -/D [4471 0 R /XYZ 248.221 487.173 null] +4494 0 obj << +/D [4481 0 R /XYZ 248.221 487.173 null] >> endobj -4485 0 obj << -/D [4471 0 R /XYZ 439.947 461.27 null] +4495 0 obj << +/D [4481 0 R /XYZ 439.947 461.27 null] >> endobj -4486 0 obj << -/D [4471 0 R /XYZ 71.731 459.113 null] +4496 0 obj << +/D [4481 0 R /XYZ 71.731 459.113 null] >> endobj -4487 0 obj << -/D [4471 0 R /XYZ 142.466 420.549 null] +4497 0 obj << +/D [4481 0 R /XYZ 142.466 420.549 null] >> endobj -4488 0 obj << -/D [4471 0 R /XYZ 74.222 372.533 null] +4498 0 obj << +/D [4481 0 R /XYZ 74.222 372.533 null] >> endobj -4489 0 obj << -/D [4471 0 R /XYZ 71.731 347.462 null] +4499 0 obj << +/D [4481 0 R /XYZ 71.731 347.462 null] >> endobj -4490 0 obj << -/D [4471 0 R /XYZ 71.731 311.597 null] +4500 0 obj << +/D [4481 0 R /XYZ 71.731 311.597 null] >> endobj -4491 0 obj << -/D [4471 0 R /XYZ 71.731 269.819 null] +4501 0 obj << +/D [4481 0 R /XYZ 71.731 269.819 null] >> endobj -4492 0 obj << -/D [4471 0 R /XYZ 411.009 256.967 null] +4502 0 obj << +/D [4481 0 R /XYZ 411.009 256.967 null] >> endobj -4493 0 obj << -/D [4471 0 R /XYZ 71.731 216.12 null] +4503 0 obj << +/D [4481 0 R /XYZ 71.731 216.12 null] >> endobj -4494 0 obj << -/D [4471 0 R /XYZ 71.731 216.12 null] +4504 0 obj << +/D [4481 0 R /XYZ 71.731 216.12 null] >> endobj -4495 0 obj << -/D [4471 0 R /XYZ 71.731 191.183 null] +4505 0 obj << +/D [4481 0 R /XYZ 71.731 191.183 null] >> endobj -4496 0 obj << -/D [4471 0 R /XYZ 71.731 168.135 null] +4506 0 obj << +/D [4481 0 R /XYZ 71.731 168.135 null] >> endobj -4497 0 obj << -/D [4471 0 R /XYZ 71.731 145.221 null] +4507 0 obj << +/D [4481 0 R /XYZ 71.731 145.221 null] >> endobj -4470 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R /F44 1925 0 R >> +4480 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R /F23 1125 0 R /F44 1922 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4500 0 obj << +4510 0 obj << /Length 2512 /Filter /FlateDecode >> @@ -16884,127 +16949,127 @@ _ Î�C��T���mh�f�Yu�㎰�'���6���jC����v����D���>#R��$��Ҙ�W@����8�v��k���>o�r�AU�Kq ���m���zH'��1!<�'�'��?�n<��ُ#�����Yjt�9Y�{*+���a�69����C��_Q����v/+��P�K�G�M���"�bv��Cpsq��}�.�qP �>N��}��~D����|�BsWW��K��������tY�����uq����%�#���i�v�|�w������h�~���{H�oq�p��gؽ~�1{/��ad������z��P��#�����N�g�Ag����J6�X�ޠ�n��w�o��(im2yV�{j#]��K�z�5�����ޛ�y]�h3�?���a&4��>�J�4b�o���4�w��Agv�� �M�|�7��U�+�������K7��>=���mV�5��9��m�X���K$��b�Y������!y�|�M�����rRaG�}���\�[m_����V|���Rq��oZ+��O�Y9�����'e�%m��rA� ���Ǝ�=��Ȕ$Uk:^���pX���'b�?�j��SQeB�����5@��ڡX�^P�iqcJ�>Wƥa�J0�,ɛ`�7u��8J��;\���l������D�֜����@n~�(�-6�t/1����g_{�C�� ���%�p��$h(�I��ADOӢ�d���C��+S��Mid ��Cr"A��m�'a�����F��� -5Dj*���8�U� mJ�z�m�v��ϰ�����w3��QTZ�v�T���"�5��=�@�+��H�/��yD9�3�+�ܵDP����k�)��Zn_�endstream +5Dj*���8�U� mJ�z�m�v��ϰ�����w3��QTZ�v�T���"�5��=�@�+��H�/��yD9�3�+�ܵDP��{���SN�Z�_�endstream endobj -4499 0 obj << +4509 0 obj << /Type /Page -/Contents 4500 0 R -/Resources 4498 0 R +/Contents 4510 0 R +/Resources 4508 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4468 0 R -/Annots [ 4502 0 R ] +/Parent 4427 0 R +/Annots [ 4512 0 R ] >> endobj -4502 0 obj << +4512 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [380.968 693.235 433.271 702.147] /Subtype /Link /A << /S /GoTo /D (os-win32) >> >> endobj -4501 0 obj << -/D [4499 0 R /XYZ 71.731 729.265 null] ->> endobj -4503 0 obj << -/D [4499 0 R /XYZ 74.222 646.575 null] ->> endobj -4504 0 obj << -/D [4499 0 R /XYZ 71.731 621.504 null] ->> endobj -4505 0 obj << -/D [4499 0 R /XYZ 71.731 590.62 null] ->> endobj -4506 0 obj << -/D [4499 0 R /XYZ 212.034 569.863 null] ->> endobj -4507 0 obj << -/D [4499 0 R /XYZ 71.731 567.706 null] ->> endobj -4508 0 obj << -/D [4499 0 R /XYZ 71.731 520.947 null] ->> endobj -4509 0 obj << -/D [4499 0 R /XYZ 297.791 508.095 null] ->> endobj -4510 0 obj << -/D [4499 0 R /XYZ 71.731 496.692 null] ->> endobj 4511 0 obj << -/D [4499 0 R /XYZ 71.731 496.692 null] ->> endobj -4512 0 obj << -/D [4499 0 R /XYZ 422.619 439.851 null] +/D [4509 0 R /XYZ 71.731 729.265 null] >> endobj 4513 0 obj << -/D [4499 0 R /XYZ 74.222 421.918 null] +/D [4509 0 R /XYZ 74.222 646.575 null] >> endobj 4514 0 obj << -/D [4499 0 R /XYZ 71.731 396.847 null] +/D [4509 0 R /XYZ 71.731 621.504 null] >> endobj 4515 0 obj << -/D [4499 0 R /XYZ 300.601 381.071 null] +/D [4509 0 R /XYZ 71.731 590.62 null] >> endobj 4516 0 obj << -/D [4499 0 R /XYZ 71.731 376.424 null] +/D [4509 0 R /XYZ 212.034 569.863 null] >> endobj 4517 0 obj << -/D [4499 0 R /XYZ 113.574 358.157 null] +/D [4509 0 R /XYZ 71.731 567.706 null] >> endobj 4518 0 obj << -/D [4499 0 R /XYZ 71.731 356 null] +/D [4509 0 R /XYZ 71.731 520.947 null] >> endobj 4519 0 obj << -/D [4499 0 R /XYZ 113.574 340.224 null] +/D [4509 0 R /XYZ 297.791 508.095 null] >> endobj 4520 0 obj << -/D [4499 0 R /XYZ 71.731 340.125 null] +/D [4509 0 R /XYZ 71.731 496.692 null] >> endobj 4521 0 obj << -/D [4499 0 R /XYZ 113.574 322.291 null] +/D [4509 0 R /XYZ 71.731 496.692 null] >> endobj 4522 0 obj << -/D [4499 0 R /XYZ 71.731 320.135 null] +/D [4509 0 R /XYZ 422.619 439.851 null] >> endobj 4523 0 obj << -/D [4499 0 R /XYZ 113.574 304.359 null] +/D [4509 0 R /XYZ 74.222 421.918 null] >> endobj 4524 0 obj << -/D [4499 0 R /XYZ 71.731 302.202 null] +/D [4509 0 R /XYZ 71.731 396.847 null] >> endobj 4525 0 obj << -/D [4499 0 R /XYZ 113.574 286.426 null] +/D [4509 0 R /XYZ 300.601 381.071 null] >> endobj 4526 0 obj << -/D [4499 0 R /XYZ 113.574 286.426 null] +/D [4509 0 R /XYZ 71.731 376.424 null] >> endobj 4527 0 obj << -/D [4499 0 R /XYZ 137.584 286.426 null] +/D [4509 0 R /XYZ 113.574 358.157 null] >> endobj 4528 0 obj << -/D [4499 0 R /XYZ 214.923 255.542 null] +/D [4509 0 R /XYZ 71.731 356 null] >> endobj 4529 0 obj << -/D [4499 0 R /XYZ 71.731 243.422 null] +/D [4509 0 R /XYZ 113.574 340.224 null] >> endobj 4530 0 obj << -/D [4499 0 R /XYZ 71.731 243.422 null] +/D [4509 0 R /XYZ 71.731 340.125 null] >> endobj 4531 0 obj << -/D [4499 0 R /XYZ 71.731 220.643 null] +/D [4509 0 R /XYZ 113.574 322.291 null] >> endobj 4532 0 obj << -/D [4499 0 R /XYZ 71.731 197.594 null] +/D [4509 0 R /XYZ 71.731 320.135 null] >> endobj 4533 0 obj << -/D [4499 0 R /XYZ 71.731 168.767 null] +/D [4509 0 R /XYZ 113.574 304.359 null] >> endobj 4534 0 obj << -/D [4499 0 R /XYZ 71.731 143.796 null] +/D [4509 0 R /XYZ 71.731 302.202 null] >> endobj -4498 0 obj << +4535 0 obj << +/D [4509 0 R /XYZ 113.574 286.426 null] +>> endobj +4536 0 obj << +/D [4509 0 R /XYZ 113.574 286.426 null] +>> endobj +4537 0 obj << +/D [4509 0 R /XYZ 137.584 286.426 null] +>> endobj +4538 0 obj << +/D [4509 0 R /XYZ 214.923 255.542 null] +>> endobj +4539 0 obj << +/D [4509 0 R /XYZ 71.731 243.422 null] +>> endobj +4540 0 obj << +/D [4509 0 R /XYZ 71.731 243.422 null] +>> endobj +4541 0 obj << +/D [4509 0 R /XYZ 71.731 220.643 null] +>> endobj +4542 0 obj << +/D [4509 0 R /XYZ 71.731 197.594 null] +>> endobj +4543 0 obj << +/D [4509 0 R /XYZ 71.731 168.767 null] +>> endobj +4544 0 obj << +/D [4509 0 R /XYZ 71.731 143.796 null] +>> endobj +4508 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4537 0 obj << +4547 0 obj << /Length 3090 /Filter /FlateDecode >> @@ -17021,223 +17086,226 @@ EC �Rq��E8���^Tl �E���7��&��0��lO�h�y��)�֗e0�y��wtկN�+f ����ugd����22;���]>t����3����� �1i��4}?�L���/[��˫6_�O�{{�6��ވ1PR�*i�-jG�ظu���Z�����gF�����/0Q�ʂ4}+id�7]@=t[�����x;ʲ��L�H�t[3%��W\��<!v�Z�麧ڠf�Gn�me:3،Df�Ξ%��v�_��,���ԅ�+3 ���D�*'v}d�}�9֘n�-��x&]]���;��t�"��d��L-�eW�`�^��v���p�Ffi{�"|:jj8T�y��{��.)<+:�Vs���, �ՆQ �E�cl)�u���t?�Yx��az. ax��:�(���S�}�\v3ݦ���{8�ު1�M�w�/b��w�株۞��o������N���A[���К�����7(���Di�:8�+���--1[���x�T�2��I�� �Ft�<j�(�e�<�b���������[�_2�4kd�N�:2%�B"� ��X�0!uIN���R��`?���(8�~��-k^����7o�� ~Z=��=���ՕP��z}%�O��{��ddr�1�"M1�j�C���fRLr�c��+W�\��x6{m-�ni��?Jj) KPj��m����`��0�_q��v����t�{K[dԑ�Uf��m\�%��@ӊ5 &�ƒ�x�FOf�m2��3y97�My�5 -jtq_�F� ��s�Bq�H(��{����`b}%�����F����A�I �V˳�,qT?����2�j�2x�q���� @�\A/�م�P��?�G�O�$��p����\��F�~9$x���7�-���endstream +jtq_�F� ��s�Bq�H(��{����`b}%�����F����A�I �V˳�,qT?����2�j�2x�q���� @�\A/�م�P��?�G�O�$��p����\��F�~9$x���7�-���endstream endobj -4536 0 obj << +4546 0 obj << /Type /Page -/Contents 4537 0 R -/Resources 4535 0 R +/Contents 4547 0 R +/Resources 4545 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4468 0 R ->> endobj -4538 0 obj << -/D [4536 0 R /XYZ 71.731 729.265 null] ->> endobj -4539 0 obj << -/D [4536 0 R /XYZ 71.731 741.22 null] ->> endobj -4540 0 obj << -/D [4536 0 R /XYZ 71.731 718.306 null] ->> endobj -4541 0 obj << -/D [4536 0 R /XYZ 493.42 708.344 null] ->> endobj -4542 0 obj << -/D [4536 0 R /XYZ 429.405 695.392 null] ->> endobj -4543 0 obj << -/D [4536 0 R /XYZ 71.731 654.381 null] ->> endobj -4544 0 obj << -/D [4536 0 R /XYZ 71.731 639.437 null] ->> endobj -4545 0 obj << -/D [4536 0 R /XYZ 71.731 590.386 null] ->> endobj -4546 0 obj << -/D [4536 0 R /XYZ 74.222 546.55 null] ->> endobj -4547 0 obj << -/D [4536 0 R /XYZ 259.97 523.636 null] +/Parent 4427 0 R >> endobj 4548 0 obj << -/D [4536 0 R /XYZ 71.731 508.528 null] +/D [4546 0 R /XYZ 71.731 729.265 null] >> endobj 4549 0 obj << -/D [4536 0 R /XYZ 95.641 464.359 null] +/D [4546 0 R /XYZ 71.731 741.22 null] >> endobj 4550 0 obj << -/D [4536 0 R /XYZ 71.731 464.359 null] +/D [4546 0 R /XYZ 71.731 718.306 null] >> endobj 4551 0 obj << -/D [4536 0 R /XYZ 71.731 414.053 null] +/D [4546 0 R /XYZ 493.42 708.344 null] >> endobj 4552 0 obj << -/D [4536 0 R /XYZ 309.199 393.295 null] +/D [4546 0 R /XYZ 429.405 695.392 null] >> endobj 4553 0 obj << -/D [4536 0 R /XYZ 71.731 391.139 null] +/D [4546 0 R /XYZ 71.731 654.381 null] >> endobj 4554 0 obj << -/D [4536 0 R /XYZ 71.731 360.254 null] +/D [4546 0 R /XYZ 71.731 639.437 null] >> endobj 4555 0 obj << -/D [4536 0 R /XYZ 71.731 337.34 null] +/D [4546 0 R /XYZ 71.731 590.386 null] >> endobj 4556 0 obj << -/D [4536 0 R /XYZ 336.008 308.613 null] +/D [4546 0 R /XYZ 74.222 546.55 null] >> endobj 4557 0 obj << -/D [4536 0 R /XYZ 71.731 306.456 null] +/D [4546 0 R /XYZ 259.97 523.636 null] >> endobj 4558 0 obj << -/D [4536 0 R /XYZ 246.006 285.699 null] +/D [4546 0 R /XYZ 71.731 508.528 null] >> endobj 4559 0 obj << -/D [4536 0 R /XYZ 71.731 283.542 null] +/D [4546 0 R /XYZ 95.641 464.359 null] >> endobj 4560 0 obj << -/D [4536 0 R /XYZ 71.731 260.628 null] +/D [4546 0 R /XYZ 71.731 464.359 null] >> endobj 4561 0 obj << -/D [4536 0 R /XYZ 279.615 236.882 null] +/D [4546 0 R /XYZ 71.731 414.053 null] >> endobj 4562 0 obj << -/D [4536 0 R /XYZ 521.375 223.93 null] +/D [4546 0 R /XYZ 309.199 393.295 null] >> endobj 4563 0 obj << -/D [4536 0 R /XYZ 71.731 203.841 null] +/D [4546 0 R /XYZ 71.731 391.139 null] >> endobj 4564 0 obj << -/D [4536 0 R /XYZ 71.731 160.005 null] +/D [4546 0 R /XYZ 71.731 360.254 null] >> endobj -4535 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F32 1139 0 R >> -/ProcSet [ /PDF /Text ] +4565 0 obj << +/D [4546 0 R /XYZ 71.731 337.34 null] >> endobj -4567 0 obj << -/Length 2116 -/Filter /FlateDecode ->> -stream -xڕXms�6��_���5g�$H�T���rܛ&�%�un�N"a� E��[���/�EJ������b�]�b�]ț��ϛD���sG��I�}�N�0����%l-bd~Z>;����ܙ����vx��>�p�PL���eU�"�]����r����[��\��j�y�u9 \�_�?��|�X��~��c�Q#�̱�bo�9�;~��s�5�2��k4d"|g -�`Q��xN�_�h�����5(��F���2U��iw��A�)�\O��`nu���-k&Z��r�f_�,.�([k�=86u�V��õ$�<���3s�n�VM�\�<a7�L��JU�g<s��f��J���z��1)S��T ��0�,��nTVk�T�֝��Y�Ό�=�9F��k�^��uCn�ڞp�G��5�<�\K{��d��?����ϙysZ��V��^0�h�����_���,���O��\'���+Y?��ջ���W�<���K���B��N����h��8�Ǻ������#�����M쑆���ɍ��۟�R�{`J�q&a� �g(�aߍ,�7%S�J�������h��@*�������O��߽��a��-��\�Lgm&s�jZB+�j���p -R����Q@ -a�����_G7�Q_s��]Q�D5��w̸�d��t�_y�l^x�+����*J2V��G�A�VhՎG9�Y��%��M�U5� -Beg��Qa��4��VA������ -��Ϛ���x�aI�4���J˚�D�;vΪ4�a#��:5,=b�����*����$QU+W���l��U�0N.�8���fj�09p�80u@|{XaP����6Z���E�����`}��S?�����7't���G7t7m[}~�� M��V2 �Ƌ����!�N��.��S�ʶk^�]����u �|���뷋���/��,�_�e�%�KsF0�;�hx�/%���bQ�t�)���oŭa��uSY$jۯ�g�!�\cw��C�2���Q8�ہ����$�<&=HG��t!U:�qn�z"8OD��1z#�>o%���6��#e���<_}�Ox��Ln9�08�U~A�Fh��e*+��K)����L�::�1P�a|�t�� ��E�)�$C���k%�ˮ�*�����Rf04�lT҇�M%膽^���sr�� ���h��$m|0���jI]"&�4B���A�0www�Yh9���H���E|�HU+��a-�I�WJ�0���!��>1`Д] �D|����� �:ߨzR�I F� -���=5�cN�}8tN*Y绿=���i���P#�u|!�e§&ǐ��z�ӁH�-�_rA��3t:T�3ȋ )�Sty�_P��;u�3Wx$��� �䌇��m�@�Z��[���?۶��5�e�!�0��.����r-ut)�Yw*���L:�@��ɂ'q��`��Lj.< J����� !S����4�����6�Bk��0-δ�ߧahi�婻鉮�h�� -i��9�s��=�c�F�������V�s)���f*/���z��^i��<E{m����o$`��ʮ���kg���mT�UN������� :��þe|è[A�� -}:,�5G�1�Q���8EE 7�t��4k+Y�m�Q=N���=_�h���8F��� ��c�_���W�~�f�\��k�hX����/��7<ڷa�.K�<��/pj�|�t ��\��������_"��=�_"FG>�O�?*��y�F�)u�߽z��q���EAOolJ���W�{� ��=*�@?�t E�����}�@E=��SM%��qziQ��hB���'��z8�Z����y��������Q�o�L�^�sxB���IU?�rî�'S�G#OR���1*�<���P>��Nc1�YO��b��9���_E8p�m�~��l\�� 2t�s�E���,���z�@H��@�������� ��\�c��1�!8�.i�/�_�����nH#t�+(����p��l[�l�<����/7��Y����܊�O���2�3���eG�Ȇ��Zsp1�ϢA�=��^���PĎ+�&��C?�k����endstream -endobj 4566 0 obj << -/Type /Page -/Contents 4567 0 R -/Resources 4565 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 4468 0 R +/D [4546 0 R /XYZ 336.008 308.613 null] +>> endobj +4567 0 obj << +/D [4546 0 R /XYZ 71.731 306.456 null] >> endobj 4568 0 obj << -/D [4566 0 R /XYZ 71.731 729.265 null] +/D [4546 0 R /XYZ 246.006 285.699 null] >> endobj 4569 0 obj << -/D [4566 0 R /XYZ 71.731 718.306 null] +/D [4546 0 R /XYZ 71.731 283.542 null] >> endobj 4570 0 obj << -/D [4566 0 R /XYZ 71.731 696.359 null] +/D [4546 0 R /XYZ 71.731 260.628 null] >> endobj 4571 0 obj << -/D [4566 0 R /XYZ 71.731 673.31 null] +/D [4546 0 R /XYZ 279.615 236.882 null] >> endobj 4572 0 obj << -/D [4566 0 R /XYZ 71.731 634.521 null] +/D [4546 0 R /XYZ 521.375 223.93 null] >> endobj 4573 0 obj << -/D [4566 0 R /XYZ 71.731 484.074 null] +/D [4546 0 R /XYZ 71.731 203.841 null] >> endobj 4574 0 obj << -/D [4566 0 R /XYZ 71.731 451.741 null] ->> endobj -4575 0 obj << -/D [4566 0 R /XYZ 74.222 410.062 null] +/D [4546 0 R /XYZ 71.731 160.005 null] >> endobj -4576 0 obj << -/D [4566 0 R /XYZ 71.731 384.991 null] +4545 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F32 1139 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 4577 0 obj << -/D [4566 0 R /XYZ 111.572 369.215 null] +/Length 2116 +/Filter /FlateDecode +>> +stream +xڕXms�6��_���5g�$H�T���rܛ&�%�un�N"a� E��[���/�EJ������b�]�b�]ț��ϛD���sG��I�}�N�0����%l-bd~Z>;����ܙ����vx��>�p�PL���eU�"�]����r����[��\��j�y�u9 \�_�?��|�X��~��c�Q#�̱�bo�9�;~��s�5�2��k4d"|g +�`Q��xN�_�h�����5(��F���2U��iw��A�)�\O��`nu���-k&Z��r�f_�,.�([k�=86u�V��õ$�<���3s�n�VM�\�<a7�L��JU�g<s��f��J���z��1)S��T ��0�,��nTVk�T�֝��Y�Ό�=�9F��k�^��uCn�ڞp�G��5�<�\K{��d��?����ϙysZ��V��^0�h�����_���,���O��\'���+Y?��ջ���W�<���K���B��N����h��8�Ǻ������#�����M쑆���ɍ��۟�R�{`J�q&a� �g(�aߍ,�7%S�J�������h��@*�������O��߽��a��-��\�Lgm&s�jZB+�j���p +R����Q@ +a�����_G7�Q_s��]Q�D5��w̸�d��t�_y�l^x�+����*J2V��G�A�VhՎG9�Y��%��M�U5� +Beg��Qa��4��VA������ +��Ϛ���x�aI�4���J˚�D�;vΪ4�a#��:5,=b�����*����$QU+W���l��U�0N.�8���fj�09p�80u@|{XaP����6Z���E�����`}��S?�����7't���G7t7m[}~�� M��V2 �Ƌ����!�N��.��S�ʶk^�]����u �|���뷋���/��,�_�e�%�KsF0�;�hx�/%���bQ�t�)���oŭa��uSY$jۯ�g�!�\cw��C�2���Q8�ہ����$�<&=Hp�:��*��87U=�'"S���[����U�i�����P��?����'�^p&�� +��*?��U#4� +�2�Iޥ��al���h�(�0>@��K|���{�!fS浒�eWJL}t]qOb)3��H6*����t�^����99VEC_S4]N �6>��FY ��.y� !�z� �p�����,��QDM$���"��@���Yް��+��Pn�lq�0hʮ��r"��Q��Op�P�oT=)դ�q��ɞ��1'�>:'����ߞFN�4r�Q���?��2�S��c�lr=Ќ�@���/9� \�:*Î�E���)�<�/�K杺��+<EY�@r����X ��^�-f���m�� ����^�P��\wq���nF��ͬ;��vZ&b�J�d���8FV0�g��cD��F��OZ��)K_�nHP�oy�m�5�w�gڎ���0�����݅�D�E4 _@�4���9pȞ���K�h���QC�C+ҹQ�X3����Pl�_A�4X@���6YAI �7�ꌅke����3VR�6��*���N�Q����t�y�a�2�aԭ�?�Q �>͚�Ԙ��k��v��"�x:�T�������'��Þ��O�J�N�^~���1�/���+~�b�L.��5]4�[�u�قۛ�۰u�� +_���8� y>h���Dx��J���v���/F��/�#l�'�F�<� ������^�^����Q����76%r������=���z �u:���z���>^���̩����8����`4��x���h����A���h���h>��`cT�[/S���ޅ��0��`�@Տ�°+2�ɔ���ȓ+�|�J 9�c;��-��X�z�S��X�x����D��A�{���;�`���@��D�0K�m j���E=��4��}a,�}?vB!�%��@`{�m��B���W;�&yƿ��� + +C��$/�(�V&,��.��� )z�����}F"���)�z��A���:j��*�!=�-��\L��h�G���9�8�� +� �}���ǚ��G��endstream +endobj +4576 0 obj << +/Type /Page +/Contents 4577 0 R +/Resources 4575 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4427 0 R >> endobj 4578 0 obj << -/D [4566 0 R /XYZ 71.731 349.126 null] +/D [4576 0 R /XYZ 71.731 729.265 null] >> endobj 4579 0 obj << -/D [4566 0 R /XYZ 272.368 338.331 null] +/D [4576 0 R /XYZ 71.731 718.306 null] >> endobj 4580 0 obj << -/D [4566 0 R /XYZ 169.456 312.428 null] +/D [4576 0 R /XYZ 71.731 696.359 null] >> endobj 4581 0 obj << -/D [4566 0 R /XYZ 74.222 281.544 null] +/D [4576 0 R /XYZ 71.731 673.31 null] >> endobj 4582 0 obj << -/D [4566 0 R /XYZ 488.744 258.63 null] +/D [4576 0 R /XYZ 71.731 634.521 null] >> endobj 4583 0 obj << -/D [4566 0 R /XYZ 106.431 245.679 null] +/D [4576 0 R /XYZ 71.731 484.074 null] >> endobj 4584 0 obj << -/D [4566 0 R /XYZ 71.731 245.579 null] +/D [4576 0 R /XYZ 71.731 451.741 null] >> endobj 4585 0 obj << -/D [4566 0 R /XYZ 207.151 227.746 null] +/D [4576 0 R /XYZ 74.222 410.062 null] >> endobj 4586 0 obj << -/D [4566 0 R /XYZ 171.988 214.795 null] +/D [4576 0 R /XYZ 71.731 384.991 null] >> endobj 4587 0 obj << -/D [4566 0 R /XYZ 337.682 201.843 null] +/D [4576 0 R /XYZ 111.572 369.215 null] >> endobj 4588 0 obj << -/D [4566 0 R /XYZ 71.731 199.686 null] +/D [4576 0 R /XYZ 71.731 349.126 null] >> endobj 4589 0 obj << -/D [4566 0 R /XYZ 71.731 176.772 null] +/D [4576 0 R /XYZ 272.368 338.331 null] >> endobj 4590 0 obj << -/D [4566 0 R /XYZ 71.731 171.791 null] +/D [4576 0 R /XYZ 169.456 312.428 null] >> endobj 4591 0 obj << -/D [4566 0 R /XYZ 71.731 169.3 null] +/D [4576 0 R /XYZ 74.222 281.544 null] >> endobj 4592 0 obj << -/D [4566 0 R /XYZ 113.574 151.034 null] +/D [4576 0 R /XYZ 488.744 258.63 null] >> endobj 4593 0 obj << -/D [4566 0 R /XYZ 286.733 151.034 null] +/D [4576 0 R /XYZ 106.431 245.679 null] >> endobj 4594 0 obj << -/D [4566 0 R /XYZ 291.157 151.034 null] +/D [4576 0 R /XYZ 71.731 245.579 null] >> endobj 4595 0 obj << -/D [4566 0 R /XYZ 71.731 135.925 null] +/D [4576 0 R /XYZ 207.151 227.746 null] >> endobj 4596 0 obj << -/D [4566 0 R /XYZ 113.574 120.149 null] +/D [4576 0 R /XYZ 171.988 214.795 null] >> endobj 4597 0 obj << -/D [4566 0 R /XYZ 307.174 120.149 null] +/D [4576 0 R /XYZ 337.682 201.843 null] >> endobj 4598 0 obj << -/D [4566 0 R /XYZ 388.314 120.149 null] +/D [4576 0 R /XYZ 71.731 199.686 null] >> endobj 4599 0 obj << -/D [4566 0 R /XYZ 239.479 107.198 null] +/D [4576 0 R /XYZ 71.731 176.772 null] >> endobj -4565 0 obj << +4600 0 obj << +/D [4576 0 R /XYZ 71.731 171.791 null] +>> endobj +4601 0 obj << +/D [4576 0 R /XYZ 71.731 169.3 null] +>> endobj +4602 0 obj << +/D [4576 0 R /XYZ 113.574 151.034 null] +>> endobj +4603 0 obj << +/D [4576 0 R /XYZ 286.733 151.034 null] +>> endobj +4604 0 obj << +/D [4576 0 R /XYZ 291.157 151.034 null] +>> endobj +4605 0 obj << +/D [4576 0 R /XYZ 71.731 135.925 null] +>> endobj +4606 0 obj << +/D [4576 0 R /XYZ 113.574 120.149 null] +>> endobj +4607 0 obj << +/D [4576 0 R /XYZ 307.174 120.149 null] +>> endobj +4608 0 obj << +/D [4576 0 R /XYZ 388.314 120.149 null] +>> endobj +4609 0 obj << +/D [4576 0 R /XYZ 239.479 107.198 null] +>> endobj +4575 0 obj << /Font << /F33 1230 0 R /F32 1139 0 R /F27 1132 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4602 0 obj << +4612 0 obj << /Length 1024 /Filter /FlateDecode >> @@ -17247,44 +17315,44 @@ J Z�m�w>����3�j��[���#nَ�:QI����P�5��-�� �ۭ�- �nh��8@S�V,H�d�( �s���Ab�����Լ��&�|�%_$&�v5 .N��E�8�^��!r�l}����cIL�E�&;]�2o��mv����5�`p� fy. ���"� w���#�i����X�,oU%�8Aܢ�xbԎ? G�ըna�2�], Eֽ�$h=��l<������2S�Z?^�e��/c�e8��d���k�;�㩚��<��㷋D�� )��:QN�.e��o�/�w�'�U�`p��4��i�<ҬP�0;�ՠ����<p���̠�?�jD;�[�a�F,�:���z�N\��S��ً�J�qý���ʌ�?a��M�7���=' -��S2����~��"��旕���ջ����j�'%���d�nx��-^�\endstream +��S2����~��"��旕���ջ����j�'%����nx��-��]endstream endobj -4601 0 obj << +4611 0 obj << /Type /Page -/Contents 4602 0 R -/Resources 4600 0 R +/Contents 4612 0 R +/Resources 4610 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4468 0 R +/Parent 4621 0 R >> endobj -4603 0 obj << -/D [4601 0 R /XYZ 71.731 729.265 null] +4613 0 obj << +/D [4611 0 R /XYZ 71.731 729.265 null] >> endobj -4604 0 obj << -/D [4601 0 R /XYZ 186.062 695.392 null] +4614 0 obj << +/D [4611 0 R /XYZ 186.062 695.392 null] >> endobj -4605 0 obj << -/D [4601 0 R /XYZ 71.731 693.235 null] +4615 0 obj << +/D [4611 0 R /XYZ 71.731 693.235 null] >> endobj -4606 0 obj << -/D [4601 0 R /XYZ 113.574 677.46 null] +4616 0 obj << +/D [4611 0 R /XYZ 113.574 677.46 null] >> endobj -4607 0 obj << -/D [4601 0 R /XYZ 71.731 638.506 null] +4617 0 obj << +/D [4611 0 R /XYZ 71.731 638.506 null] >> endobj -4608 0 obj << -/D [4601 0 R /XYZ 113.574 620.672 null] +4618 0 obj << +/D [4611 0 R /XYZ 113.574 620.672 null] >> endobj -4609 0 obj << -/D [4601 0 R /XYZ 71.731 605.564 null] +4619 0 obj << +/D [4611 0 R /XYZ 71.731 605.564 null] >> endobj -4610 0 obj << -/D [4601 0 R /XYZ 113.574 589.788 null] +4620 0 obj << +/D [4611 0 R /XYZ 113.574 589.788 null] >> endobj -4600 0 obj << +4610 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4613 0 obj << +4624 0 obj << /Length 2470 /Filter /FlateDecode >> @@ -17296,129 +17364,129 @@ Eg �72�"-Ʌ���Щ�r�Y�Q*�����Jt&�OQa>*<.�zࡺ������,}KKK.M��.��'�����#a��Wۣ �O�a��9b� �����`ZO����My'��w2�E���f(�p�~{�s����7 ��?���RG"���p�'�חk!�1}��L�����L�ƹ?@�Ưԇ�O���|�#�օ7FY;fm��`L�)�SC$�P_�EY������DS��g�D��q- h�J��f��k�`oj��pzp���6�A�P��1�8�v0�aƔ�x���H�W� K'S��?��7w����_좎y%ʫ�%��`�ս%���Ўk#X8��f��t��r�$r�>I�����oKs���ҕDlQ�OEa�@��j8�q�"��m�W����X%`T7���Uz���+�ݭ���>�\l=B�����T��bt�8O��.\�d�K��*�}�L�E�o��}[��:���;�]?��)�Иj��#�ʼnn�@ԇt�&����-'����uhYu�rЭ�8���� ���@��Q��2`5�/a�����a�Cy����� R�E=b 0>�2���� �g̳���BvZ�����e�$�~�ݡ�NR,����?`��#�E%�d^�hb�#厄(T9E�gn�|���U "Up˄:?�cӖbij�D� �R͆TZ$�z�1�0��U9���V�����Æ���=f�{7�����M5@&{X�,gZn�t�t�@�� #V0��-�����g#��g׆�wf�3�4����P��1:��<��!�D���pH(RU�h �5��(��{�8���G�|�車�%�(t?�2;��!�s�D���@� ��(�%\b��9�<:��q}%���g\�*V��$��Y?��t�_B_z�g���]�(����`��,ݑP��?� �*��`]��<t=�b�'�m��������T���䬵F���d�S���T���Fѕ{,I4jN��TH�rz�8�l��Qx�W��Y+ԃ�I -��|��֢>,xK["X��[$�mPp5D�0{��vǭ�l���!��n$��Sz������o&�����q��Ư�UǶu���-=�+o��oK��=�E �ܓ[��Cp��<8W�0:�滻�qv�����������ɝ�\g�@���>z�!�I7�z�ͷ��boQ�m��7����T2�0�9}��CM��H�r����j���r��+)�ķ~���㈜��L�懓*�T�H�Ϋ�g����4��ȿ��ʞeX����<~7u�8��u�)��ιg��7Θԃye���'|�|����L��\�h'��w�rF��pnz�<�K^�L$It���;��-��^�E��\K�9���l�("��H�9����(@\��,�AZ�P#��Z�5��s�`��!0k����7��/�wIGݽ���/a��vʗ�w��zl��;�DrI���vM�{�������T��4�N��KKW�VF|uf�s��K���c�����ċ��,]��l��8�3���۬q�k}/��H��GW�M�u)��7��i֏���I�\6B�;)����4|�����4pJ�s~�rG�ALy��7���B�ˍc9X��PD��];�����C���vk�endstream +��|��֢>,xK["X��[$�mPp5D�0{��vǭ�l���!��n$��Sz������o&�����q��Ư�UǶu���-=�+o��oK��=�E �ܓ[��Cp��<8W�0:�滻�qv�����������ɝ�\g�@���>z�!�I7�z�ͷ��boQ�m��7����T2�0�9}��CM��H�r����j���r��+)�ķ~���㈜��L�懓*�T�H�Ϋ�g����4��ȿ��ʞeX����<~7u�8��u�)��ιg��7Θԃye���'|�|����L��\�h'��w�rF��pnz�<�K^�L$It���;��-��^�E��\K�9���l�("��H�9����(@\��,�AZ�P#��Z�5��s�`��!0k����7��/�wIGݽ���/a��vʗ�w��zl��;�DrI���vM�{�������T��4�N��KKW�VF|uf�s��K���c�����ċ��,]��l��8�3���۬q�k}/��H��GW�M�u)��7��i֏���I�\6B�;)����4|�����4pJ�s~�rG�ALy��7���B�ˍc�����(ڹ{gɒ�������`3��endstream endobj -4612 0 obj << +4623 0 obj << /Type /Page -/Contents 4613 0 R -/Resources 4611 0 R +/Contents 4624 0 R +/Resources 4622 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4638 0 R -/Annots [ 4620 0 R 4621 0 R ] +/Parent 4621 0 R +/Annots [ 4631 0 R 4632 0 R ] >> endobj -4620 0 obj << +4631 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [235.548 547.742 280.892 556.654] /Subtype /Link /A << /S /GoTo /D (installation) >> >> endobj -4621 0 obj << +4632 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [355.754 547.742 401.098 556.654] /Subtype /Link /A << /S /GoTo /D (configuration) >> >> endobj -4614 0 obj << -/D [4612 0 R /XYZ 71.731 729.265 null] +4625 0 obj << +/D [4623 0 R /XYZ 71.731 729.265 null] >> endobj 1775 0 obj << -/D [4612 0 R /XYZ 71.731 718.306 null] +/D [4623 0 R /XYZ 71.731 718.306 null] >> endobj 822 0 obj << -/D [4612 0 R /XYZ 358.696 703.236 null] +/D [4623 0 R /XYZ 358.696 703.236 null] >> endobj -4615 0 obj << -/D [4612 0 R /XYZ 71.731 681.855 null] +4626 0 obj << +/D [4623 0 R /XYZ 71.731 681.855 null] >> endobj 1776 0 obj << -/D [4612 0 R /XYZ 71.731 658.391 null] +/D [4623 0 R /XYZ 71.731 658.391 null] >> endobj 826 0 obj << -/D [4612 0 R /XYZ 233.175 615.294 null] +/D [4623 0 R /XYZ 233.175 615.294 null] >> endobj -4616 0 obj << -/D [4612 0 R /XYZ 71.731 606.471 null] +4627 0 obj << +/D [4623 0 R /XYZ 71.731 606.471 null] >> endobj -4617 0 obj << -/D [4612 0 R /XYZ 141.316 593.735 null] +4628 0 obj << +/D [4623 0 R /XYZ 141.316 593.735 null] >> endobj -4618 0 obj << -/D [4612 0 R /XYZ 405.441 580.783 null] +4629 0 obj << +/D [4623 0 R /XYZ 405.441 580.783 null] >> endobj -4619 0 obj << -/D [4612 0 R /XYZ 71.731 560.694 null] +4630 0 obj << +/D [4623 0 R /XYZ 71.731 560.694 null] >> endobj -4622 0 obj << -/D [4612 0 R /XYZ 82.138 523.996 null] +4633 0 obj << +/D [4623 0 R /XYZ 82.138 523.996 null] >> endobj -4623 0 obj << -/D [4612 0 R /XYZ 71.731 490.955 null] +4634 0 obj << +/D [4623 0 R /XYZ 71.731 490.955 null] >> endobj -4624 0 obj << -/D [4612 0 R /XYZ 430.969 467.209 null] +4635 0 obj << +/D [4623 0 R /XYZ 430.969 467.209 null] >> endobj -4625 0 obj << -/D [4612 0 R /XYZ 71.731 454.258 null] +4636 0 obj << +/D [4623 0 R /XYZ 71.731 454.258 null] >> endobj -4626 0 obj << -/D [4612 0 R /XYZ 468.549 428.355 null] +4637 0 obj << +/D [4623 0 R /XYZ 468.549 428.355 null] >> endobj 1777 0 obj << -/D [4612 0 R /XYZ 71.731 421.217 null] +/D [4623 0 R /XYZ 71.731 421.217 null] >> endobj 830 0 obj << -/D [4612 0 R /XYZ 537.833 378.119 null] +/D [4623 0 R /XYZ 537.833 378.119 null] >> endobj -4627 0 obj << -/D [4612 0 R /XYZ 71.731 365.681 null] +4638 0 obj << +/D [4623 0 R /XYZ 71.731 365.681 null] >> endobj -4628 0 obj << -/D [4612 0 R /XYZ 149.514 356.56 null] +4639 0 obj << +/D [4623 0 R /XYZ 149.514 356.56 null] >> endobj -4629 0 obj << -/D [4612 0 R /XYZ 252.264 356.56 null] +4640 0 obj << +/D [4623 0 R /XYZ 252.264 356.56 null] >> endobj -4630 0 obj << -/D [4612 0 R /XYZ 71.731 331.489 null] +4641 0 obj << +/D [4623 0 R /XYZ 71.731 331.489 null] >> endobj -4631 0 obj << -/D [4612 0 R /XYZ 71.731 331.489 null] +4642 0 obj << +/D [4623 0 R /XYZ 71.731 331.489 null] >> endobj 1778 0 obj << -/D [4612 0 R /XYZ 71.731 263.994 null] +/D [4623 0 R /XYZ 71.731 263.994 null] >> endobj 834 0 obj << -/D [4612 0 R /XYZ 207.49 197.767 null] +/D [4623 0 R /XYZ 207.49 197.767 null] >> endobj -4632 0 obj << -/D [4612 0 R /XYZ 71.731 188.945 null] +4643 0 obj << +/D [4623 0 R /XYZ 71.731 188.945 null] >> endobj -4633 0 obj << -/D [4612 0 R /XYZ 71.731 174.051 null] +4644 0 obj << +/D [4623 0 R /XYZ 71.731 174.051 null] >> endobj -4634 0 obj << -/D [4612 0 R /XYZ 71.731 169.07 null] +4645 0 obj << +/D [4623 0 R /XYZ 71.731 169.07 null] >> endobj -4635 0 obj << -/D [4612 0 R /XYZ 89.664 148.313 null] +4646 0 obj << +/D [4623 0 R /XYZ 89.664 148.313 null] >> endobj -4636 0 obj << -/D [4612 0 R /XYZ 89.664 122.41 null] +4647 0 obj << +/D [4623 0 R /XYZ 89.664 122.41 null] >> endobj -4637 0 obj << -/D [4612 0 R /XYZ 71.731 120.253 null] +4648 0 obj << +/D [4623 0 R /XYZ 71.731 120.253 null] >> endobj 1779 0 obj << -/D [4612 0 R /XYZ 71.731 48.817 null] +/D [4623 0 R /XYZ 71.731 48.817 null] >> endobj -4611 0 obj << -/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F57 2358 0 R /F33 1230 0 R >> +4622 0 obj << +/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F57 2355 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4641 0 obj << -/Length 1772 +4651 0 obj << +/Length 1771 /Filter /FlateDecode >> stream @@ -17429,168 +17497,168 @@ O`M(2 �Z,.NJ�撷� 0� C�<��!M^���lW:�4�3���N٦i4T��h(�{y��t=&�XU�� &�oYZ������1q�����{�vA�� llOT�Y) ��^]^��/k�W�(����h�ndm�.�Ban|�Lɮ����E a�z�Fc��%8Zl��$���`��g6����0�3�(����ہ��|�U�Ӂn�t���.�֔����J�i����.@�s� ���Kh�����!dv03¡m3;�G�|N�W���4�<��K*�{���n~�ys}{�$�@1�}u���\����B��}aб�X�Q����(�fl"c��'��Ϡ��q��l�5�e���k�ф���1�Pu��o^�=�sN���^�^p������w�_�`|���}��V��?�f1��.Kv)Ҟ��F��|��0�b?�6�M-�|��9��oR��բ5>E\�[u�[�(Cq%�G$��LJ�э��&>��B���@����8QVn �����Q��گO���;h���v�퇗Ux-���w��`a����(��:�� �턏�ɮ��<��#��E�I;Q����/�~μ�>�De�ށ��dֳ�rC+N���2u��I�%wD��;���;���?���!hK���.9���' ����A��WNN�ː�e��2�l��l����/��f!,�X�����k�a�|�zI�u'>:���頸�V�ߥ�[!�|�¸��t�^�Og���h��fW0L|�dk��$���$4'Qi���gY����۸۲�ڜf��#1�=�Ԫu�*�yz��HO�\����<T��Usml�F��Z -�[��*>��2����>H�t�Ŧ;O�1�=�}���!0��zs��i������5v���ųc9��'p�9�49 ?��ͱ��q[�?endstream +�[��*>��2����>H�t�Ŧ;O�1�=�}���!0��zs��i������5v���ųc9��'p#H�Q +��D����X��q��Bendstream endobj -4640 0 obj << +4650 0 obj << /Type /Page -/Contents 4641 0 R -/Resources 4639 0 R +/Contents 4651 0 R +/Resources 4649 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4638 0 R +/Parent 4621 0 R >> endobj -4642 0 obj << -/D [4640 0 R /XYZ 71.731 729.265 null] +4652 0 obj << +/D [4650 0 R /XYZ 71.731 729.265 null] >> endobj -4643 0 obj << -/D [4640 0 R /XYZ 89.664 708.344 null] +4653 0 obj << +/D [4650 0 R /XYZ 89.664 708.344 null] >> endobj 838 0 obj << -/D [4640 0 R /XYZ 505.555 645.157 null] +/D [4650 0 R /XYZ 505.555 645.157 null] >> endobj -4644 0 obj << -/D [4640 0 R /XYZ 71.731 632.719 null] +4654 0 obj << +/D [4650 0 R /XYZ 71.731 632.719 null] >> endobj -4645 0 obj << -/D [4640 0 R /XYZ 129.185 623.597 null] +4655 0 obj << +/D [4650 0 R /XYZ 129.185 623.597 null] >> endobj -4646 0 obj << -/D [4640 0 R /XYZ 71.731 616.459 null] +4656 0 obj << +/D [4650 0 R /XYZ 71.731 616.459 null] >> endobj 1780 0 obj << -/D [4640 0 R /XYZ 71.731 559.672 null] +/D [4650 0 R /XYZ 71.731 559.672 null] >> endobj 842 0 obj << -/D [4640 0 R /XYZ 370.33 516.575 null] +/D [4650 0 R /XYZ 370.33 516.575 null] >> endobj -4647 0 obj << -/D [4640 0 R /XYZ 71.731 504.137 null] +4657 0 obj << +/D [4650 0 R /XYZ 71.731 504.137 null] >> endobj -4648 0 obj << -/D [4640 0 R /XYZ 71.731 482.896 null] +4658 0 obj << +/D [4650 0 R /XYZ 71.731 482.896 null] >> endobj -4649 0 obj << -/D [4640 0 R /XYZ 71.731 427.416 null] +4659 0 obj << +/D [4650 0 R /XYZ 71.731 427.416 null] >> endobj -4650 0 obj << -/D [4640 0 R /XYZ 139.576 415.514 null] +4660 0 obj << +/D [4650 0 R /XYZ 139.576 415.514 null] >> endobj -4651 0 obj << -/D [4640 0 R /XYZ 71.731 403.394 null] +4661 0 obj << +/D [4650 0 R /XYZ 71.731 403.394 null] >> endobj -4652 0 obj << -/D [4640 0 R /XYZ 71.731 336.258 null] +4662 0 obj << +/D [4650 0 R /XYZ 71.731 336.258 null] >> endobj -4653 0 obj << -/D [4640 0 R /XYZ 71.731 314.293 null] +4663 0 obj << +/D [4650 0 R /XYZ 71.731 314.293 null] >> endobj -4654 0 obj << -/D [4640 0 R /XYZ 71.731 245.1 null] +4664 0 obj << +/D [4650 0 R /XYZ 71.731 245.1 null] >> endobj 1781 0 obj << -/D [4640 0 R /XYZ 71.731 226.433 null] +/D [4650 0 R /XYZ 71.731 226.433 null] >> endobj 846 0 obj << -/D [4640 0 R /XYZ 374.461 182.962 null] +/D [4650 0 R /XYZ 374.461 182.962 null] >> endobj -4655 0 obj << -/D [4640 0 R /XYZ 71.731 170.791 null] +4665 0 obj << +/D [4650 0 R /XYZ 71.731 170.791 null] >> endobj -4656 0 obj << -/D [4640 0 R /XYZ 402.991 161.403 null] +4666 0 obj << +/D [4650 0 R /XYZ 402.991 161.403 null] >> endobj -4657 0 obj << -/D [4640 0 R /XYZ 71.731 136.332 null] +4667 0 obj << +/D [4650 0 R /XYZ 71.731 136.332 null] >> endobj -4639 0 obj << +4649 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F32 1139 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4660 0 obj << -/Length 1559 +4670 0 obj << +/Length 1560 /Filter /FlateDecode >> stream -x��ko�6�{~����T�HY/�di��M���V�C K�ET�4=�X���;۵�v@W`���{?(��|rz�������w����n(C�l����=o�8�F��h"8�y< -=�"_�f��Q]�2Sw�#|�:f��l߷{�[U?/d�WU�ʥ��짃�كT�Yy�*6��h&µf��nļ�D+6�Uk;�$�h ��L���������Q|��]��>�F㛤�uU��_��%]��U74��jd�U�=��#8���ʌ�j�G48��Us{��]����82��8��ȵ�k��'���>74LsP�n��O�~�Vp��a0r��G�Ov�mP� ����U��v]qgP::b[uS��[r�13G�u�����(*[�ٖ֭6��{���T��о,1���*iձ��*IsU�AI?W���i��7r�!�/\��^h�$�u�pY��#���hOX����O��<|H�"�F<d��ZYnj��]&�@�:f!z8��W6w]���(���:g(u���$���m��eW�ll�PP��y��uy}qy~�����l������:�k)�u�f�}O`2`@j�AbK���h�sC6��� T�>x� -9��l@�U=�J:�Lj�T�5�Dtd5nU�T��m|0���2�]����J�� �RIz�ۊ�b0>��/�4���<A}�2�̥, jd]5�̦�YF�8y���x��"���8:�`���B�#��A�yE�F��F�l��Bg� ���m3.�|,�q�:-��c��1�h<��zE� -]� h���1���ƪ��_\���eL��1iv��˫��W�*��Vy�_��ۜ��E��M�c!phᲪ��$m��v�9��p(Z����I2j�� �np�JsuIM���l�V]��K�H'�"�j�W�.��-� ��#Mt�ck�֛N�"T�n?�j`M꺸7������ Y(t[ҥ�S���*ͷ&E;�$�b+RE2/�d 4����@�څQ��w�bL�N�l�?��)g�?���4�HV5 -l��a�@�%� -�����;t�ۓ������mg�)���(�g������\<D8$��X�[��+"�KZO�Χӓ���)�41�������?��^_�#���������O����Յa����٣�!>����,�=��:�N�^\cC8z1�fJn跇�gR��\u[��~���Si�]�@�ԯ���`� -��-XGM먉�_6j��Z���Z���g����*4��ȼZOo�]s�̙�7�y���y�EV -�.��>�K��.t?��tx��f�x)�%��>U�k��_rm�� ��-�m�sC�|\�9��+ *�$Q��K�ꍒ�8s�M��N�d%;4q����x���SZ5��'�z�l8��wS2P�خ�}�������`P����L�\�a ����g�7�~�n ��ν� �����N��S�L��Z�7�d�:툖�K5̣A���8{�ă~Ӗ��ӂ�E`�2�_<�$;?x�"��}��n�����+��`uendstream +x��ko�6�{~�����4IY{�$K�lm2d�bY�-����R+��w�#k�v�� +,����x�e���/z�`��3�ty�{89?�b`I4�Ӄ����l���7���Ÿ��Ł�M�?���Ve���p��:����G�Wu�B��ju���9���t�Nj�Gl��*�hv4��Z3g ��?Ŧ�^��(�h���J�n��Pu �����Gp����,��I3\�UU�u�StaS�����g�Qi[5$"O�����*�«���\?����~`�ve>�Ʊ%d�qڏ��P[ }�����i��݈����h��`$ƣ�7!?� �6�:Z-A@1'��h}Ź��(9{uS͊��Ԓbj�b�NAIQT}xwv[�E�=��j�ve��f6UI�����I��R9IL@�L�}�=�Kn����H~�Ц�G�J�]wH�Bp���F{�B�e�o<�w�, ��Ie���A���Cs�E��(�^��9��P���M�"P���)[�2ڞ�e[�l����@J��F������叧��][�R� oԩ���!4��<���À���=]�� �[� լteO�����.�d2�J-kw+i-+:ӫ��$�U ۪q�ۜ�Z5�.h��qF����)��%y��J�� ��Iz��3�`}��_�i�y���e��)UԨ�jZ�Mv��< +��K�B�"���8&�`��\��#��A�yE�F������r����`��U3,�l,��J�F� n�ƏC�p +�a��.�\����e��|!��N~u��1I�/b����/W�G�/?dU�Y��}���!�M��n����B��UUcI)ھ��q9���-�z�$5|a l��8@�����&\5�[U]�,�K��'�$�j�/A]F�#Z +�A�AG����V9֛N�v�شX� �&u]<XTnk~^�1H +ݖ�i���w�N�m�I�r,ɫ؊t�� +�5q��#�#�sT�8�6�_CB�ffC��N�X�����F��`����Q�Y5�($�'2�p�:�������.��`�)���(�g��x y��^<D8"��Y<ou���@-h=9��LN���#����V�_/�����pqzs�P���������>��oGח�� &|��`�����^������t29~u� ���d�i����[�I�'3�n]��ɼ+SL1L�}vY���y��O�*�߶`5��&�Ǣ~٨E�/j��#j�F�v��6�A��ȾZc�j=��v-�3g�0�����{)�����l��S87��<XS��5�6��RTh�}���|�_r�vP������i�G����sT WT)�z%��V�k��q�A�4�R�h�&3���JYNi��럤�a�-�[� �M��.�]/��<<a�@��S����L�\(7��4�h�9��Y�M�<@��Q��^aIOa|U'�͂�b�YS-�p*ӭqĊ�����V'�g��x��aڲ�Z���bC&=��ǚd��@ƌK��2�?�Ʈ��E^t�endstream endobj -4659 0 obj << +4669 0 obj << /Type /Page -/Contents 4660 0 R -/Resources 4658 0 R +/Contents 4670 0 R +/Resources 4668 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4638 0 R +/Parent 4621 0 R >> endobj -4661 0 obj << -/D [4659 0 R /XYZ 71.731 729.265 null] +4671 0 obj << +/D [4669 0 R /XYZ 71.731 729.265 null] >> endobj -4662 0 obj << -/D [4659 0 R /XYZ 71.731 718.306 null] +4672 0 obj << +/D [4669 0 R /XYZ 71.731 718.306 null] >> endobj -4663 0 obj << -/D [4659 0 R /XYZ 175.682 708.344 null] +4673 0 obj << +/D [4669 0 R /XYZ 175.682 708.344 null] >> endobj -4664 0 obj << -/D [4659 0 R /XYZ 395.942 708.344 null] +4674 0 obj << +/D [4669 0 R /XYZ 395.942 708.344 null] >> endobj -4665 0 obj << -/D [4659 0 R /XYZ 486.807 708.344 null] +4675 0 obj << +/D [4669 0 R /XYZ 486.807 708.344 null] >> endobj -4666 0 obj << -/D [4659 0 R /XYZ 71.731 695.392 null] +4676 0 obj << +/D [4669 0 R /XYZ 71.731 695.392 null] >> endobj -4667 0 obj << -/D [4659 0 R /XYZ 71.731 682.441 null] +4677 0 obj << +/D [4669 0 R /XYZ 71.731 682.441 null] >> endobj -4668 0 obj << -/D [4659 0 R /XYZ 107.048 682.441 null] +4678 0 obj << +/D [4669 0 R /XYZ 107.048 682.441 null] >> endobj 1782 0 obj << -/D [4659 0 R /XYZ 71.731 675.303 null] +/D [4669 0 R /XYZ 71.731 675.303 null] >> endobj 850 0 obj << -/D [4659 0 R /XYZ 189.38 609.825 null] +/D [4669 0 R /XYZ 189.38 609.825 null] >> endobj -4669 0 obj << -/D [4659 0 R /XYZ 71.731 599.152 null] +4679 0 obj << +/D [4669 0 R /XYZ 71.731 599.152 null] >> endobj -4670 0 obj << -/D [4659 0 R /XYZ 236.591 588.266 null] +4680 0 obj << +/D [4669 0 R /XYZ 236.591 588.266 null] >> endobj -4671 0 obj << -/D [4659 0 R /XYZ 71.731 563.195 null] +4681 0 obj << +/D [4669 0 R /XYZ 71.731 563.195 null] >> endobj -4672 0 obj << -/D [4659 0 R /XYZ 71.731 460.731 null] +4682 0 obj << +/D [4669 0 R /XYZ 71.731 460.731 null] >> endobj -4673 0 obj << -/D [4659 0 R /XYZ 321.183 436.236 null] +4683 0 obj << +/D [4669 0 R /XYZ 321.183 436.236 null] >> endobj -4674 0 obj << -/D [4659 0 R /XYZ 71.731 424.117 null] +4684 0 obj << +/D [4669 0 R /XYZ 71.731 424.117 null] >> endobj 1783 0 obj << -/D [4659 0 R /XYZ 71.731 205.449 null] +/D [4669 0 R /XYZ 71.731 205.449 null] >> endobj 854 0 obj << -/D [4659 0 R /XYZ 496.414 161.243 null] +/D [4669 0 R /XYZ 496.414 161.243 null] >> endobj -4675 0 obj << -/D [4659 0 R /XYZ 71.731 148.805 null] +4685 0 obj << +/D [4669 0 R /XYZ 71.731 148.805 null] >> endobj -4676 0 obj << -/D [4659 0 R /XYZ 206.804 139.684 null] +4686 0 obj << +/D [4669 0 R /XYZ 206.804 139.684 null] >> endobj -4658 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F57 2358 0 R /F23 1125 0 R >> +4668 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F57 2355 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4679 0 obj << +4689 0 obj << /Length 2158 /Filter /FlateDecode >> @@ -17605,90 +17673,90 @@ GC NnT�|dr� q��,B�Qvӻƶq�� mzN��]"���D��_Q��p>����s!X���ם��i�&���D\{f�s����D�I�q�#��vr� 1v�w��@I~�O�D+%�H�bƶ?a�q�}�;)����c<Զ��=��R� �6�Yw�e�\�{� �D� Y�4�<tRjj��B���u �Żp�gd���T��YER� ���G�RT����T��n���?K{6�A}5��h���n�5�cDǥ�߭����NXYnA5��y=En�ɚ[�� �q&Q�C���eVẂ�+��!,L�r����t���;J���t�pk�T�xo�S������N������x�{pZ�0��#�vE�q�S��@8A_��3s�-� �֘�8@�%|!�Jd����M����x�v@gt�7�gx�U��і���v�v�S�Rh$�a��/aCe���<���\����dO��2�PS��ɩ�X�!,YP %��[+�����q�B��=�G�-R�'[a߯ >cN}�I�y����.�d<�����o�L��Ǡ�}Z�o�Z�`#�Rr�w����-6� �y�W�i0��r�Ô���\���ya�]�������x&�Ǡ�h��(ʱ)�2ֈc��:��c�5��5���Vɴ'Ҡ� -��yZN8�s�(�������)���@��f�&��ϰ��Ty�`F��'��L����.���!.�>���~Hcy�Nks�#�%I�KI�� u-="a���z�W:�U%lT͢�]j* Ib#�<��\JE���O}xHRr2����d�\C:�f������0m�/U_��.��{�o/e�t�<�0�'8h��}eU�&����0Gt��/�����4[r��Q0*K�<�ɻ�'*� ՁF����/��]�`�Ga��d�/�w�3�RoXG��]��m�6x���-�P�N�q��'�谲��]z5&{%��ף�IN��7ϥ��8vT�<2�Y�+z.UV�h#��`&�>�U��Q�u��Xq�l�$dX��+/U�=��`��Q���N?����Z.�Y�����WnUQ�����_J���Pf���IgӂƍvG=�L���0�m%�F:[I=�eruT`g=H3��r���w<$�O��Q?x%M��|$M��T����3ǝϞy���S陃���yp��^��AB�zw�~�ew���rHYv�yT����:�����>�G��~����}���}���ԗ�?����}|�endstream +��yZN8�s�(�������)���@��f�&��ϰ��Ty�`F��'��L����.���!.�>���~Hcy�Nks�#�%I�KI�� u-="a���z�W:�U%lT͢�]j* Ib#�<��\JE���O}xHRr2����d�\C:�f������0m�/U_��.��{�o/e�t�<�0�'8h��}eU�&����0Gt��/�����4[r��Q0*K�<�ɻ�'*� ՁF����/��]�`�Ga��d�/�w�3�RoXG��]��m�6x���-�P�N�q��'�谲��]z5&{%��ף�IN��7ϥ��8vT�<2�Y�+z.UV�h#��`&�>�U��Q�u��Xq�l�$dX��+/U�=��`��Q���N?����Z.�Y�����WnUQ�����_J���Pf���IgӂƍvG=�L���0�m%�F:[I=�eruT`g=H3��r���w<$�O��Q?x%M��|$M��T����3ǝϞy���S陃���yp��^��AB�zw�~�ew���rHYv�yT����:�����>�G��~����}���}���ԗ�}����_�|�endstream endobj -4678 0 obj << +4688 0 obj << /Type /Page -/Contents 4679 0 R -/Resources 4677 0 R +/Contents 4689 0 R +/Resources 4687 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4638 0 R +/Parent 4621 0 R >> endobj -4680 0 obj << -/D [4678 0 R /XYZ 71.731 729.265 null] +4690 0 obj << +/D [4688 0 R /XYZ 71.731 729.265 null] >> endobj -4681 0 obj << -/D [4678 0 R /XYZ 71.731 718.306 null] +4691 0 obj << +/D [4688 0 R /XYZ 71.731 718.306 null] >> endobj -4682 0 obj << -/D [4678 0 R /XYZ 508.292 708.344 null] +4692 0 obj << +/D [4688 0 R /XYZ 508.292 708.344 null] >> endobj -4683 0 obj << -/D [4678 0 R /XYZ 71.731 649.4 null] +4693 0 obj << +/D [4688 0 R /XYZ 71.731 649.4 null] >> endobj -4684 0 obj << -/D [4678 0 R /XYZ 71.731 631.467 null] +4694 0 obj << +/D [4688 0 R /XYZ 71.731 631.467 null] >> endobj -1831 0 obj << -/D [4678 0 R /XYZ 71.731 579.661 null] +1828 0 obj << +/D [4688 0 R /XYZ 71.731 579.661 null] >> endobj -4685 0 obj << -/D [4678 0 R /XYZ 71.731 546.919 null] +4695 0 obj << +/D [4688 0 R /XYZ 71.731 546.919 null] >> endobj -4686 0 obj << -/D [4678 0 R /XYZ 71.731 536.956 null] +4696 0 obj << +/D [4688 0 R /XYZ 71.731 536.956 null] >> endobj -4687 0 obj << -/D [4678 0 R /XYZ 135.985 527.323 null] +4697 0 obj << +/D [4688 0 R /XYZ 135.985 527.323 null] >> endobj -4688 0 obj << -/D [4678 0 R /XYZ 135.985 492.354 null] +4698 0 obj << +/D [4688 0 R /XYZ 135.985 492.354 null] >> endobj -4689 0 obj << -/D [4678 0 R /XYZ 71.731 435.766 null] +4699 0 obj << +/D [4688 0 R /XYZ 71.731 435.766 null] >> endobj -1832 0 obj << -/D [4678 0 R /XYZ 71.731 396.812 null] +1829 0 obj << +/D [4688 0 R /XYZ 71.731 396.812 null] >> endobj -4690 0 obj << -/D [4678 0 R /XYZ 71.731 362.013 null] +4700 0 obj << +/D [4688 0 R /XYZ 71.731 362.013 null] >> endobj -4691 0 obj << -/D [4678 0 R /XYZ 71.731 352.05 null] +4701 0 obj << +/D [4688 0 R /XYZ 71.731 352.05 null] >> endobj -4692 0 obj << -/D [4678 0 R /XYZ 135.985 342.416 null] +4702 0 obj << +/D [4688 0 R /XYZ 135.985 342.416 null] >> endobj -4693 0 obj << -/D [4678 0 R /XYZ 135.985 307.447 null] +4703 0 obj << +/D [4688 0 R /XYZ 135.985 307.447 null] >> endobj -4694 0 obj << -/D [4678 0 R /XYZ 71.731 274.172 null] +4704 0 obj << +/D [4688 0 R /XYZ 71.731 274.172 null] >> endobj -4695 0 obj << -/D [4678 0 R /XYZ 181.691 261.22 null] +4705 0 obj << +/D [4688 0 R /XYZ 181.691 261.22 null] >> endobj -4696 0 obj << -/D [4678 0 R /XYZ 485.889 261.22 null] +4706 0 obj << +/D [4688 0 R /XYZ 485.889 261.22 null] >> endobj 1784 0 obj << -/D [4678 0 R /XYZ 71.731 228.179 null] +/D [4688 0 R /XYZ 71.731 228.179 null] >> endobj 858 0 obj << -/D [4678 0 R /XYZ 517.296 185.082 null] +/D [4688 0 R /XYZ 517.296 185.082 null] >> endobj -4697 0 obj << -/D [4678 0 R /XYZ 71.731 172.644 null] +4707 0 obj << +/D [4688 0 R /XYZ 71.731 172.644 null] >> endobj -4698 0 obj << -/D [4678 0 R /XYZ 71.731 157.102 null] +4708 0 obj << +/D [4688 0 R /XYZ 71.731 157.102 null] >> endobj -4677 0 obj << +4687 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F32 1139 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4701 0 obj << -/Length 1810 +4711 0 obj << +/Length 1812 /Filter /FlateDecode >> stream @@ -17704,249 +17772,248 @@ J �-�@�U���& <Ȗ���N�B.���iΔ\�Gi���oc���T\CS�l쭝+0�����=`}�j�������4��`�-�>>��#m!�.�zkj� ���u<$��y}�;t��3i��LIΪ��G8��2�o�E���a�����z>7�ek�m�ÉpG��+p��@+AG�����N=%4��q<W- s�@��O�S�ǮCT�ˣB��@� ���۬ڢ5�K��]���C��vՏ-��m�ŅoFdž�#\�qtp�x�-xz�6��|���z���Sk���Kq�`�Ű�~���4�a�����$�KL���O��z��yL�:���[ ��t̓P��`��s>�p�b�Cӌ/�Ǯ�Zg�m�^��ʶ�̈�m��%�0��4�� ��P���t0|�$��� -���D��A���ӕ�\���n��Q���z�|Lqq�+Z;4�C�P�Q_�H��[�[#�g��&_ٲ������WW��G�*�;�u_���^�D����Ou�W����������R,�������_6��D�<<�_��ӿޅ��endstream +���D��A���ӕ�\���n��Q���z�|Lqq�+Z;4�C�P�Q_�H��[�[#�g��&_ٲ������WW��G�*�;�u_���^�D����Ou�W����������R,�������_6��D� +J.���a�y�K��*endstream endobj -4700 0 obj << +4710 0 obj << /Type /Page -/Contents 4701 0 R -/Resources 4699 0 R +/Contents 4711 0 R +/Resources 4709 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4638 0 R -/Annots [ 4710 0 R ] +/Parent 4621 0 R +/Annots [ 4720 0 R ] >> endobj -4710 0 obj << +4720 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [81.972 518.428 141.748 525.282] /Subtype /Link /A << /S /GoTo /D (http-apache) >> >> endobj -4702 0 obj << -/D [4700 0 R /XYZ 71.731 729.265 null] +4712 0 obj << +/D [4710 0 R /XYZ 71.731 729.265 null] >> endobj -4703 0 obj << -/D [4700 0 R /XYZ 71.731 718.306 null] +4713 0 obj << +/D [4710 0 R /XYZ 71.731 718.306 null] >> endobj -4704 0 obj << -/D [4700 0 R /XYZ 310.001 708.344 null] +4714 0 obj << +/D [4710 0 R /XYZ 310.001 708.344 null] >> endobj -4705 0 obj << -/D [4700 0 R /XYZ 278.636 682.441 null] +4715 0 obj << +/D [4710 0 R /XYZ 278.636 682.441 null] >> endobj 1785 0 obj << -/D [4700 0 R /XYZ 71.731 636.448 null] +/D [4710 0 R /XYZ 71.731 636.448 null] >> endobj 862 0 obj << -/D [4700 0 R /XYZ 107.109 570.971 null] +/D [4710 0 R /XYZ 107.109 570.971 null] >> endobj -4706 0 obj << -/D [4700 0 R /XYZ 71.731 562.148 null] +4716 0 obj << +/D [4710 0 R /XYZ 71.731 562.148 null] >> endobj -4707 0 obj << -/D [4700 0 R /XYZ 71.731 542.274 null] +4717 0 obj << +/D [4710 0 R /XYZ 71.731 542.274 null] >> endobj -4708 0 obj << -/D [4700 0 R /XYZ 274.373 531.479 null] +4718 0 obj << +/D [4710 0 R /XYZ 274.373 531.479 null] >> endobj -4709 0 obj << -/D [4700 0 R /XYZ 390.766 531.479 null] +4719 0 obj << +/D [4710 0 R /XYZ 390.766 531.479 null] >> endobj 1786 0 obj << -/D [4700 0 R /XYZ 71.731 513.447 null] +/D [4710 0 R /XYZ 71.731 513.447 null] >> endobj 866 0 obj << -/D [4700 0 R /XYZ 452.394 445.912 null] +/D [4710 0 R /XYZ 452.394 445.912 null] >> endobj -4711 0 obj << -/D [4700 0 R /XYZ 71.731 433.741 null] +4721 0 obj << +/D [4710 0 R /XYZ 71.731 433.741 null] >> endobj -4712 0 obj << -/D [4700 0 R /XYZ 71.731 411.401 null] +4722 0 obj << +/D [4710 0 R /XYZ 71.731 411.401 null] >> endobj -4713 0 obj << -/D [4700 0 R /XYZ 437.99 411.401 null] +4723 0 obj << +/D [4710 0 R /XYZ 437.99 411.401 null] >> endobj -4714 0 obj << -/D [4700 0 R /XYZ 71.731 391.312 null] +4724 0 obj << +/D [4710 0 R /XYZ 71.731 391.312 null] >> endobj -4715 0 obj << -/D [4700 0 R /XYZ 130.401 354.614 null] +4725 0 obj << +/D [4710 0 R /XYZ 130.401 354.614 null] >> endobj -4699 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F57 2358 0 R /F35 1463 0 R >> +4709 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R /F57 2355 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4718 0 obj << -/Length 3010 +4728 0 obj << +/Length 3011 /Filter /FlateDecode >> stream -xڝk��6��� -�W 6�֊zZ-��6�k�H/�f��- -Z�-u��He����7�����E��p89O��ʇb� -/ �d^�ī���WG���J0E�$^�_���a�e�p��q�����A� -|/����a��� LV�ŏ�۾WmQ}�l�t�~��k�P�7?�,�U�eI���6Hy�}�+�d- Hג�����@pw������'��J�4��x�WUTŶk5 ��H,- ƫ��@A�ג� -��W�����������M��l��r�<���"�����nx�$�ڣ��ˊ��0Wu,K������axQ�[mE�e��Ԩ���_�R5��D�"�k�bPgd���t�M#�b[W�"�[%�M����%��Z�����e�/Fu��Ƭ���0ƪ'L��Zk�MUW�R���n�E L^V푆3�!��5�� ��84�3y�\���Z���:�t��\�x����-'K�ɛ�^��F��~����AW���0�D��A�5�v��L�K�~TÓ��Bš�f;&�^r���3��x�+m�L"�k""��<��K����0�5ԫ��OQE�Ћ�hC�IR�1��Տ?��з��+�=^!q^�f+�eY���p������e{F�o�L�`�u�lc��4�!ND^�u���!�h7Ÿl"�i��ko �N������:Ẓp�G���5 �Amix�����4��$������7`��):��ұ�ނl����|O$ �VR[��f֯�(%Ƈ�C����^)�f�Q�b��8 -�"V�+��ډB�w ܢ���2�sBe���͙,�L�����[��"��Ya� Ӑ.�F�� m8�`�PףNq�����B��Q<o���D>Pn���§^i����T1��3(�/,�<v��qP���#�ofC4�5�tG����ƺ x����D�ajUT�x���9�GLP���T�� �4t�ȁ0�cm��bx�F�Q�|��+�8(' �bfSG`��#�o���l�3k�z�� ���ۨ�I:�w)��2������1��n����ʶA -PuM�Uo6pct�81�ʜ��eX@Z�y��@�8@�"`��X���T �o�{MP/���Z��Ʀ�F���ΰ�c�w�gߙ�:�����\�윳�&dz�K��A�p���Cױ��a6��d�βi��H�� P�c"z�U�[��Vj][U���w݂G�1��r?�[���h���+����%�E����̍-~ah�:� �����2;�w�f3#�zdPr�]���pN�8�1��P���#y�ce��f�|�N�p�ڼ�ͽ�h��ˈ�J�_�c��[G�Xl��� �&� ��՛����뻷�D��>TC�bd!"�� ~�=E@ݗ��6�ޏ\<"}=���M�7!�J��x -`�jkK�NjJ0EHk���SʕU�B���B�o��+h�k���� �d^~�<�%s��yhEj�������FTe-� ��� ��`��aD]�M�z�Ja�a�i��d^\�lV��мV��*W(��hnw;6w�<*���\�E���~,+-��˺���*� �UxF�2ܲ���G��@�.d�0�',=�Yz��91�b3`o�}�=>#���F��O���y�P�qs��۴�5}�0�n}�7���<��*^r�J36�s���UkMDPg@`a����}`�SN���W�*f������:�]0\�?3��Y4�%�����Wga��D -Y��4<��X���FB�y"t�>�"햙��Z�\��������p@�φ����Г[����$¨��/.<v�(s��}x���3���k��נ�iK�Q�]WЙO���'ԙ��;�Z�w�W#wKd��+���&�k=� _+��>���45����/�Z�CxMPK��"���|����rO�w���0�m���Ѻ��d�e��l��4�?�͈bۭ9kf\��T��N�eK�n��u3DS�p�����DQD<��VS苸��drC�N�3���Å~\�b0�B[���*����qnN�����y+�I襉8se*D�dݏC�i�*+Iܳ�)�\QE�Pb�>��pO� �1S�M�=�!p�B���x&���U�k��y;qor�#�Bo�%���L>ڔ�8�i[u!�A=�]e� ���ݕ���ƣ@q���J�m�e��G.iLk!�.���z_|Z�.|/\���5R�4�@�����t���(�����L�[�2��0�-��E���f�%q��axQz��չ�)0<%(����p!��Kͣ�)j�f����s��L(�e봕�2$P�y#ut-A��sU;�F������գm����pw4H�m������� ��ap��bMM/K�����y�:�0`���k� v��U!���yF��[�n/ILJ�|�vwl���;���)Z\r��v�+���������G�*��9f����8�_����R�L!. -@zvڲ�o[T�$�ϗ�n֑���s�h\���0(4�6�tL�N<�Å6�c� -.\�♤�Ybi%-��X�*�����>{i�+|K��v��?�T����m�E��or�UG�����p^���%i�,z�d�V����`kA��CP:F��٭jZaQ龖O�#wJ�x��j��JlC�+�y��)L&�ص[*��Q�f����p��_�SQ��:B���óif���uG��-�x���_P���O �u˓t�s��]ޱd�z��ᴂ�&'&;<RK��oD״@�ܗ�������D&`%�G�B�������`��;1��w�`�?������m����S����Hn!���J�_���ZN� ��^`�����n�G;o'ҋ?C3��DB������3�O)|�������&Yendstream +xڝY{��6�?��+Xk���"8��]�Ez�6pmQp%�RW�������o8CY^;��6��!�ɱ�r��[%��������*����3_^yBƱ�G>���(H�t��_�]���V���Q���ϻ�����.�a���t��6[?٭_;�m��/�7?�} �*u�8 �j� Y|W�^cE��Z��{�3��yjj6 �h����Y�*��b:���*Y��|�6ʆIF,-4D��I �ǵ� #�>��ݗ��}��������M�cl��G�9?���^��Ҽ�u6���&��o~W�"ƀ��Y�6���o� "� ��j��N +��Z7#-���X�ڑ����8��5����o���VM���F3�V��w���s��n�Q�{�����Խ�O�~��0��`�z�x��1f��4�U9�z���e�Ɋ�9�p�6��ۚ!������:�� ��x���N�E�JYg���Kv��2�ԛ��ͥ�����/Ut�l��^@e��赀d��^�j��y>9a*���t��@���PQ�$�N��9��c �~:T�0�3 ]��Dt�����.��l�sd,�PC����U</p�$\E=q�QLy��O�*G��������w�$]yN��^��Wo���9�,���Ń� +����f�o�_�8/t���������9��c�N2\sax����Љ늃�u�A��>���6W�L����Rc9( �=n�5� ���1yk�ZYv��-dyhq��w���^WZ �k����+�����+��,kZax��H3u$v~��(p�ŕ�A턁���h����,�B�t��Ҵ%�E�d.����'�E�P%%� �� �Uי�Ff����� �Q�*gd�j-�F) �A��@�`>uzp�nj��%�s>���"�/c�z���I�� �0�k -�Q�E;U9����0�'�F��y��&KFN}��P���f�"�O��㡵D ��4��I�{�����N�� ;��r���^[I�S�B$c���\���}�gѲ����������d�����y� ��1\c7�tsy>g[?�tU1f���qc|�41���x�n�a�4.���A��#���f��[O�ȩ���y�P������c�N�Ã�Q$�����8��XH�ç\^9���U��:�a��1LY�s&�W�}�o[�^Z�/����쪧Y1-��yAZ��H@͎I��V�l�c~[5���ؾ���[x�������=S��v�k�"��N\.��� +իl4�/�&�� �X<�`�.ӣ�Qh�k!�T��ZͶ�Y�O��:�D�`<RV=�c��l��7�vj�a��%m��G$��mF�U���j��8�����eqb!���&���߾y����ܾ�c�"p�Z�mC���L6C�T�y��+6�m�W���x$�j^oL��oF�Y_�9X)�`���U:�)���}��/0ǔ�ʊ�d�caB�o@���5T��Q)��%2';�ϲ����<��l!��4�2�TY�k�P�`��x����� �ؾ�Ѵ}�������l�L"��%˦���g��H��D�K�+J�4\���΄��G�zL3ʆ^B���cQ�ht��j�P=��$��wT�Q.�p��TjF +�¦�)�8c��,ҋ�,��;�����s����hvs�}76/��5C1��g77��I+N������p�yf����e�RB'(ǩ7��KD +oy.`��.c"w<*� ����ah���圮�|�b�ֲ㾝��a�uk�����z�cMM t|�����I�p)�"�J��c���X��h$�����7�H�&/6A�n�oxxsx��$ g'C�� �������(��S�����a��_\x�ZQ�����A5JΨ3a?�'�������ж9��x�N�n~B�x +^�j���^ �-�aϯ��{Nh]�1��Z%|���xS�u%�|���xH�״�Z�ŋ0����юˋ��>��5G/��������ڶ�h�e��D��h��f���֜43.^]�g�*ÖC n���q3Bs�q���E�DsD<��US䋴��d��K1��g +O����� +D��&��%�*�����qn�s��I�e+��8p��;qe.D�x�M}�20UV�g�9�.�"�91���M1ܓn�k̄l�g�q�!(+����3ٝ���_[����ؾɉ�m�p��K���B>�T�$㴍��P��l{[u�r�����@��x(�6;��n�p�2R<��1_����p�e�xл��I�뤾�a���[#0���5��joAy.J9�,����ڹ��q���l>g��(v�N��vy�L��48{���QݫAFS�DMms5]�(��L���u��Xh˼V��Z�]�P��\�L�e���rW�`�h���%��;�'�M�q�/�Q��?��[s�ːY��`��r@��qy�&�i����2VE`���9�nYٽ()]� F��e˶'8�i�j����%g�*[�8�x�՜G(��?h[A����1s[7�p��3��s�|e�ا�9ą>��g7І }����|��x�X���-����U<�cHh�m�ѩ>�L̅�<�Å6��H�:&�a��DZ�KPkS�H��J�P��K�_1�-$��A�h�DFЁA�F�(lj,�V~�K�[~\,�D���jʵ)I��d�[ܓ9[�O��.�ak=C��#PYF��ĭ�5�a^]����tJ`<��g5�l%�!���<��� f�C9vm�*��5��dk"����\���B���n3BspR -,�ݠh݁�~�O<���f�ϸS�t�DŽj��q��9l�6��c=@�p^!o�#��a��7�k^��Kb�f��6� ɲi�: + �P�͵��l';3�w�`�?Y�����i�4��S�k����Hv��YoK�_�����AV���a��d�ُ�tw��K.�-�# w��ԲO-:%J���%������&Zendstream endobj -4717 0 obj << +4727 0 obj << /Type /Page -/Contents 4718 0 R -/Resources 4716 0 R +/Contents 4728 0 R +/Resources 4726 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4638 0 R +/Parent 4770 0 R >> endobj -4719 0 obj << -/D [4717 0 R /XYZ 71.731 729.265 null] +4729 0 obj << +/D [4727 0 R /XYZ 71.731 729.265 null] >> endobj 1787 0 obj << -/D [4717 0 R /XYZ 71.731 718.306 null] +/D [4727 0 R /XYZ 71.731 718.306 null] >> endobj 870 0 obj << -/D [4717 0 R /XYZ 271.435 703.236 null] +/D [4727 0 R /XYZ 271.435 703.236 null] >> endobj -4720 0 obj << -/D [4717 0 R /XYZ 71.731 682.175 null] +4730 0 obj << +/D [4727 0 R /XYZ 71.731 682.175 null] >> endobj -4721 0 obj << -/D [4717 0 R /XYZ 297.998 673.5 null] +4731 0 obj << +/D [4727 0 R /XYZ 297.998 673.5 null] >> endobj 1788 0 obj << -/D [4717 0 R /XYZ 71.731 660.449 null] +/D [4727 0 R /XYZ 71.731 660.449 null] >> endobj 874 0 obj << -/D [4717 0 R /XYZ 365.87 615.294 null] ->> endobj -4722 0 obj << -/D [4717 0 R /XYZ 71.731 606.471 null] ->> endobj -4723 0 obj << -/D [4717 0 R /XYZ 457.285 593.735 null] ->> endobj -4724 0 obj << -/D [4717 0 R /XYZ 199.72 580.783 null] ->> endobj -4725 0 obj << -/D [4717 0 R /XYZ 258.499 580.783 null] ->> endobj -4726 0 obj << -/D [4717 0 R /XYZ 315.525 580.783 null] ->> endobj -4727 0 obj << -/D [4717 0 R /XYZ 71.731 578.626 null] ->> endobj -4728 0 obj << -/D [4717 0 R /XYZ 118.555 540.062 null] ->> endobj -4729 0 obj << -/D [4717 0 R /XYZ 71.731 509.785 null] ->> endobj -4730 0 obj << -/D [4717 0 R /XYZ 71.731 509.785 null] ->> endobj -4731 0 obj << -/D [4717 0 R /XYZ 71.731 490.079 null] +/D [4727 0 R /XYZ 365.87 615.294 null] >> endobj 4732 0 obj << -/D [4717 0 R /XYZ 165.11 477.128 null] +/D [4727 0 R /XYZ 71.731 606.471 null] >> endobj 4733 0 obj << -/D [4717 0 R /XYZ 71.731 469.99 null] +/D [4727 0 R /XYZ 457.285 593.735 null] >> endobj 4734 0 obj << -/D [4717 0 R /XYZ 71.731 469.99 null] +/D [4727 0 R /XYZ 199.72 580.783 null] >> endobj 4735 0 obj << -/D [4717 0 R /XYZ 164.065 446.244 null] +/D [4727 0 R /XYZ 258.499 580.783 null] >> endobj 4736 0 obj << -/D [4717 0 R /XYZ 210.352 446.244 null] +/D [4727 0 R /XYZ 315.525 580.783 null] >> endobj 4737 0 obj << -/D [4717 0 R /XYZ 352.569 446.244 null] +/D [4727 0 R /XYZ 71.731 578.626 null] >> endobj 4738 0 obj << -/D [4717 0 R /XYZ 442.661 446.244 null] +/D [4727 0 R /XYZ 118.555 540.062 null] >> endobj 4739 0 obj << -/D [4717 0 R /XYZ 203.715 433.292 null] +/D [4727 0 R /XYZ 71.731 509.785 null] >> endobj 4740 0 obj << -/D [4717 0 R /XYZ 372.061 433.292 null] +/D [4727 0 R /XYZ 71.731 509.785 null] >> endobj 4741 0 obj << -/D [4717 0 R /XYZ 71.731 426.154 null] +/D [4727 0 R /XYZ 71.731 490.079 null] >> endobj 4742 0 obj << -/D [4717 0 R /XYZ 460.217 415.36 null] +/D [4727 0 R /XYZ 165.11 477.128 null] >> endobj 4743 0 obj << -/D [4717 0 R /XYZ 71.731 382.318 null] +/D [4727 0 R /XYZ 71.731 469.99 null] >> endobj 4744 0 obj << -/D [4717 0 R /XYZ 71.731 382.318 null] +/D [4727 0 R /XYZ 71.731 469.99 null] >> endobj 4745 0 obj << -/D [4717 0 R /XYZ 237.451 371.524 null] +/D [4727 0 R /XYZ 164.065 446.244 null] >> endobj 4746 0 obj << -/D [4717 0 R /XYZ 71.731 358.572 null] +/D [4727 0 R /XYZ 210.352 446.244 null] >> endobj 4747 0 obj << -/D [4717 0 R /XYZ 220.87 345.621 null] +/D [4727 0 R /XYZ 352.569 446.244 null] >> endobj 4748 0 obj << -/D [4717 0 R /XYZ 71.731 338.483 null] +/D [4727 0 R /XYZ 442.661 446.244 null] >> endobj 4749 0 obj << -/D [4717 0 R /XYZ 257.124 327.688 null] +/D [4727 0 R /XYZ 203.715 433.292 null] >> endobj 4750 0 obj << -/D [4717 0 R /XYZ 358.713 327.688 null] ->> endobj -1789 0 obj << -/D [4717 0 R /XYZ 71.731 320.55 null] ->> endobj -878 0 obj << -/D [4717 0 R /XYZ 462 277.453 null] +/D [4727 0 R /XYZ 372.061 433.292 null] >> endobj 4751 0 obj << -/D [4717 0 R /XYZ 71.731 265.015 null] +/D [4727 0 R /XYZ 71.731 426.154 null] >> endobj 4752 0 obj << -/D [4717 0 R /XYZ 117.29 255.893 null] +/D [4727 0 R /XYZ 460.217 415.36 null] >> endobj 4753 0 obj << -/D [4717 0 R /XYZ 427.895 255.893 null] +/D [4727 0 R /XYZ 71.731 382.318 null] >> endobj 4754 0 obj << -/D [4717 0 R /XYZ 71.731 224.91 null] +/D [4727 0 R /XYZ 71.731 382.318 null] >> endobj 4755 0 obj << -/D [4717 0 R /XYZ 173.632 212.058 null] +/D [4727 0 R /XYZ 237.451 371.524 null] >> endobj 4756 0 obj << -/D [4717 0 R /XYZ 420.183 212.058 null] +/D [4727 0 R /XYZ 71.731 358.572 null] >> endobj 4757 0 obj << -/D [4717 0 R /XYZ 71.731 166.065 null] +/D [4727 0 R /XYZ 220.87 345.621 null] >> endobj 4758 0 obj << -/D [4717 0 R /XYZ 71.731 122.23 null] +/D [4727 0 R /XYZ 71.731 338.483 null] >> endobj 4759 0 obj << -/D [4717 0 R /XYZ 71.731 122.23 null] +/D [4727 0 R /XYZ 257.124 327.688 null] >> endobj -4716 0 obj << -/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F32 1139 0 R /F33 1230 0 R >> -/ProcSet [ /PDF /Text ] +4760 0 obj << +/D [4727 0 R /XYZ 358.713 327.688 null] +>> endobj +1789 0 obj << +/D [4727 0 R /XYZ 71.731 320.55 null] +>> endobj +878 0 obj << +/D [4727 0 R /XYZ 462 277.453 null] +>> endobj +4761 0 obj << +/D [4727 0 R /XYZ 71.731 265.015 null] >> endobj 4762 0 obj << +/D [4727 0 R /XYZ 117.29 255.893 null] +>> endobj +4763 0 obj << +/D [4727 0 R /XYZ 427.895 255.893 null] +>> endobj +4764 0 obj << +/D [4727 0 R /XYZ 71.731 224.91 null] +>> endobj +4765 0 obj << +/D [4727 0 R /XYZ 173.632 212.058 null] +>> endobj +4766 0 obj << +/D [4727 0 R /XYZ 420.183 212.058 null] +>> endobj +4767 0 obj << +/D [4727 0 R /XYZ 71.731 166.065 null] +>> endobj +4768 0 obj << +/D [4727 0 R /XYZ 71.731 122.23 null] +>> endobj +4769 0 obj << +/D [4727 0 R /XYZ 71.731 122.23 null] +>> endobj +4726 0 obj << +/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F32 1139 0 R /F33 1230 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4773 0 obj << /Length 1514 /Filter /FlateDecode >> @@ -17956,486 +18023,536 @@ xڵَ ������t穣��V Y7r���)��̞�!���$��.}ė������rG �E@��`Y=TA���QA�֥�`'�� #�ʖw���/3�q�lM����'s�\�X�UC�맡�P��9�i勂��ɁBv��텰�� \�T�q������rt�����cµNzm�:�!Xb� ��7�*�@Dw|����k�۶&{���uߏ�c�tɽ F�i�g�`��v=W:�)�Q�H��1dԉ�TN;�ʭ�`4��¡gyE�a(5�I8�lY����)�V�(���N<1Um,i��z9�|����E�T��)<#��f��O�Z�xq�U���PSKĦ��^���^?3�Yƒ�K&0���M���j�+¼3��Op���0ˉ�1dBd_�)Ϝ���Z�7ƺ�f�~��-ig4��5��{�D�5iV��ō+n�T�>���OҙPНwW;Zw�vGI� �c��2�'�BU�锬\1w�3N�c��~ ?N�q���t���U�+�4�����]4����jI�6S���ST���P��1�W��tZ5<��� �3̔����0����'1��8��W��Y���r�%�0��z^W���9`�(��mw�о���M<%�r��Vj����+/.�|�� ��#�h�����3s9��Y-ށSO5�`�ߗʦ|��E)��@� -m���RӔ�^�����h"�yd�?r}��&���:�x�?J(D9D�s��"8����(:�s""F��9�sk�cQ�/�SY��2�3endstream +m���RӔ�^�����h"�yd�?r}��&���:�x�?J(D9D�s��"8����(:�s""F��9�sk�cQ�/�SY��]�4endstream endobj -4761 0 obj << +4772 0 obj << /Type /Page -/Contents 4762 0 R -/Resources 4760 0 R +/Contents 4773 0 R +/Resources 4771 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4788 0 R +/Parent 4770 0 R >> endobj -4763 0 obj << -/D [4761 0 R /XYZ 71.731 729.265 null] +4774 0 obj << +/D [4772 0 R /XYZ 71.731 729.265 null] >> endobj 1790 0 obj << -/D [4761 0 R /XYZ 71.731 718.306 null] +/D [4772 0 R /XYZ 71.731 718.306 null] >> endobj 882 0 obj << -/D [4761 0 R /XYZ 155.521 676.38 null] +/D [4772 0 R /XYZ 155.521 676.38 null] >> endobj 1791 0 obj << -/D [4761 0 R /XYZ 71.731 669.666 null] +/D [4772 0 R /XYZ 71.731 669.666 null] >> endobj 886 0 obj << -/D [4761 0 R /XYZ 206.096 624.303 null] ->> endobj -4764 0 obj << -/D [4761 0 R /XYZ 71.731 615.48 null] ->> endobj -4765 0 obj << -/D [4761 0 R /XYZ 71.731 582.654 null] ->> endobj -4766 0 obj << -/D [4761 0 R /XYZ 71.731 572.692 null] ->> endobj -4767 0 obj << -/D [4761 0 R /XYZ 71.731 572.692 null] ->> endobj -4768 0 obj << -/D [4761 0 R /XYZ 71.731 561.784 null] ->> endobj -4769 0 obj << -/D [4761 0 R /XYZ 71.731 551.348 null] ->> endobj -4770 0 obj << -/D [4761 0 R /XYZ 71.731 538.472 null] ->> endobj -4771 0 obj << -/D [4761 0 R /XYZ 71.731 528.035 null] ->> endobj -4772 0 obj << -/D [4761 0 R /XYZ 71.731 516.379 null] ->> endobj -4773 0 obj << -/D [4761 0 R /XYZ 76.712 483.292 null] ->> endobj -4774 0 obj << -/D [4761 0 R /XYZ 71.731 468.348 null] +/D [4772 0 R /XYZ 206.096 624.303 null] >> endobj 4775 0 obj << -/D [4761 0 R /XYZ 486.228 456.692 null] +/D [4772 0 R /XYZ 71.731 615.48 null] >> endobj 4776 0 obj << -/D [4761 0 R /XYZ 451.424 445.035 null] +/D [4772 0 R /XYZ 71.731 582.654 null] >> endobj 4777 0 obj << -/D [4761 0 R /XYZ 71.731 403.09 null] +/D [4772 0 R /XYZ 71.731 572.692 null] >> endobj 4778 0 obj << -/D [4761 0 R /XYZ 71.731 393.127 null] +/D [4772 0 R /XYZ 71.731 572.692 null] >> endobj 4779 0 obj << -/D [4761 0 R /XYZ 140.075 384.632 null] ->> endobj -1792 0 obj << -/D [4761 0 R /XYZ 71.731 324.627 null] ->> endobj -890 0 obj << -/D [4761 0 R /XYZ 275.663 279.373 null] +/D [4772 0 R /XYZ 71.731 561.784 null] >> endobj 4780 0 obj << -/D [4761 0 R /XYZ 71.731 279.157 null] +/D [4772 0 R /XYZ 71.731 551.348 null] >> endobj 4781 0 obj << -/D [4761 0 R /XYZ 71.731 260.587 null] +/D [4772 0 R /XYZ 71.731 538.472 null] >> endobj 4782 0 obj << -/D [4761 0 R /XYZ 71.731 209.594 null] +/D [4772 0 R /XYZ 71.731 528.035 null] >> endobj 4783 0 obj << -/D [4761 0 R /XYZ 71.731 184.523 null] +/D [4772 0 R /XYZ 71.731 516.379 null] >> endobj 4784 0 obj << -/D [4761 0 R /XYZ 188.024 173.729 null] +/D [4772 0 R /XYZ 76.712 483.292 null] >> endobj 4785 0 obj << -/D [4761 0 R /XYZ 181.907 160.777 null] +/D [4772 0 R /XYZ 71.731 468.348 null] >> endobj 4786 0 obj << -/D [4761 0 R /XYZ 158.345 147.826 null] +/D [4772 0 R /XYZ 486.228 456.692 null] >> endobj 4787 0 obj << -/D [4761 0 R /XYZ 71.731 48.817 null] +/D [4772 0 R /XYZ 451.424 445.035 null] >> endobj -4760 0 obj << -/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1925 0 R /F33 1230 0 R >> -/ProcSet [ /PDF /Text ] +4788 0 obj << +/D [4772 0 R /XYZ 71.731 403.09 null] +>> endobj +4789 0 obj << +/D [4772 0 R /XYZ 71.731 393.127 null] >> endobj -4791 0 obj << -/Length 647 -/Filter /FlateDecode ->> -stream -xڽ��r�0��~ -�b�������d܉;�)�NӅ�a*.<n��W�K�x�^<,@���������E,�@���!�p+�G�Z���1� q�bf��0f�П0+z��C��\F�ǩ%_����"�~�����/D���M+�mV����c߳�=���-�d-���}����q�B�cg�b����.���A6wɿ���gE��P -}b���O���Vڔ�M!K���* ��S�VB�M@*�� ƕ(`Y��+�dM� V9��r�b���k������o &ƚҾ�9u�`S��ox�#,,�u�mW���7��=��V���Iø�Q�jġ1��C'��e7�38�t}��V8�:W��p��{w�:F�;�`>�Di�.�^� �BB 2/�֘���L!^d����h�j�be�Y�o�wX (P7ZAY��h��WG�"�q��i�2Q�� r�%��+4��^{ǀ�P�"�ǘJ ���~fjk�B+�>����������K�{���t�̢�]s�R�k٭P���<d�&�K��tƿ0��滼����1�|ӿ�L<��������f�,D��|�ɤ�c>Ui|E�5����������V�����v�\d�3cz�={�ۅ��8e3EgM0}�v�� �l�5endstream -endobj 4790 0 obj << -/Type /Page -/Contents 4791 0 R -/Resources 4789 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 4788 0 R +/D [4772 0 R /XYZ 140.075 384.632 null] >> endobj -4792 0 obj << -/D [4790 0 R /XYZ 71.731 729.265 null] +1792 0 obj << +/D [4772 0 R /XYZ 71.731 324.627 null] >> endobj -4793 0 obj << -/D [4790 0 R /XYZ 71.731 741.22 null] +890 0 obj << +/D [4772 0 R /XYZ 275.663 279.373 null] +>> endobj +4791 0 obj << +/D [4772 0 R /XYZ 71.731 279.157 null] +>> endobj +4792 0 obj << +/D [4772 0 R /XYZ 71.731 260.587 null] +>> endobj +4793 0 obj << +/D [4772 0 R /XYZ 71.731 209.594 null] >> endobj 4794 0 obj << -/D [4790 0 R /XYZ 71.731 718.306 null] +/D [4772 0 R /XYZ 71.731 184.523 null] >> endobj 4795 0 obj << -/D [4790 0 R /XYZ 158.345 659.527 null] +/D [4772 0 R /XYZ 188.024 173.729 null] >> endobj 4796 0 obj << -/D [4790 0 R /XYZ 71.731 618.68 null] +/D [4772 0 R /XYZ 181.907 160.777 null] >> endobj 4797 0 obj << -/D [4790 0 R /XYZ 71.731 593.609 null] +/D [4772 0 R /XYZ 158.345 147.826 null] >> endobj 4798 0 obj << -/D [4790 0 R /XYZ 188.024 582.814 null] ->> endobj -4799 0 obj << -/D [4790 0 R /XYZ 158.345 556.912 null] +/D [4772 0 R /XYZ 71.731 48.817 null] >> endobj -4800 0 obj << -/D [4790 0 R /XYZ 71.731 516.065 null] +4771 0 obj << +/Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F44 1922 0 R /F33 1230 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 4801 0 obj << -/D [4790 0 R /XYZ 71.731 490.994 null] +/Length 647 +/Filter /FlateDecode +>> +stream +xڽ��r�0��~ +�b�������d܉;�)�NӅ�a*.<n��W�K�x�^<,@���������E,�@���!�p+�G�Z���1� q�bf��0f�П0+z��C��\F�ǩ%_����"�~�����/D���M+�mV����c߳�=���-�d-���}����q�B�cg�b����.���A6wɿ���gE��P +}b���O���Vڔ�M!K���* ��S�VB�M@*�� ƕ(`Y��+�dM� V9��r�b���k������o &ƚҾ�9u�`S��ox�#,,�u�mW���7��=��V���Iø�Q�jġ1��C'��e7�38�t}��V8�:W��p��{w�:F�;�`>�Di�.�^� �BB 2/�֘���L!^d����h�j�be�Y�o�wX (P7ZAY��h��WG�"�q��i�2Q�� r�%��+4��^{ǀ�P�"�ǘJ ���~fjk�B+�>����������K�{���t�̢�]s�R�k٭P���<d�&�K��tƿ0��滼����1�|ӿ�L<��������f�,D��|�ɤ�c>Ui|E�5����������V�����v�\d�3cz�={�ۅ��8e3EgM0{�v�� ���6endstream +endobj +4800 0 obj << +/Type /Page +/Contents 4801 0 R +/Resources 4799 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4770 0 R >> endobj 4802 0 obj << -/D [4790 0 R /XYZ 188.024 480.199 null] +/D [4800 0 R /XYZ 71.731 729.265 null] >> endobj 4803 0 obj << -/D [4790 0 R /XYZ 181.907 467.248 null] +/D [4800 0 R /XYZ 71.731 741.22 null] >> endobj 4804 0 obj << -/D [4790 0 R /XYZ 158.345 454.296 null] +/D [4800 0 R /XYZ 71.731 718.306 null] >> endobj 4805 0 obj << -/D [4790 0 R /XYZ 71.731 413.45 null] +/D [4800 0 R /XYZ 158.345 659.527 null] >> endobj 4806 0 obj << -/D [4790 0 R /XYZ 71.731 390.436 null] +/D [4800 0 R /XYZ 71.731 618.68 null] >> endobj 4807 0 obj << -/D [4790 0 R /XYZ 188.024 377.584 null] +/D [4800 0 R /XYZ 71.731 593.609 null] >> endobj 4808 0 obj << -/D [4790 0 R /XYZ 181.907 364.633 null] +/D [4800 0 R /XYZ 188.024 582.814 null] >> endobj 4809 0 obj << -/D [4790 0 R /XYZ 158.345 351.681 null] +/D [4800 0 R /XYZ 158.345 556.912 null] >> endobj 4810 0 obj << -/D [4790 0 R /XYZ 71.731 310.834 null] +/D [4800 0 R /XYZ 71.731 516.065 null] >> endobj 4811 0 obj << -/D [4790 0 R /XYZ 71.731 285.763 null] +/D [4800 0 R /XYZ 71.731 490.994 null] >> endobj 4812 0 obj << -/D [4790 0 R /XYZ 188.024 274.969 null] +/D [4800 0 R /XYZ 188.024 480.199 null] >> endobj 4813 0 obj << -/D [4790 0 R /XYZ 181.907 262.017 null] +/D [4800 0 R /XYZ 181.907 467.248 null] >> endobj 4814 0 obj << -/D [4790 0 R /XYZ 158.345 249.066 null] +/D [4800 0 R /XYZ 158.345 454.296 null] >> endobj 4815 0 obj << -/D [4790 0 R /XYZ 71.731 208.219 null] +/D [4800 0 R /XYZ 71.731 413.45 null] >> endobj 4816 0 obj << -/D [4790 0 R /XYZ 71.731 183.148 null] +/D [4800 0 R /XYZ 71.731 390.436 null] >> endobj 4817 0 obj << -/D [4790 0 R /XYZ 188.024 172.354 null] +/D [4800 0 R /XYZ 188.024 377.584 null] >> endobj 4818 0 obj << -/D [4790 0 R /XYZ 158.345 146.451 null] +/D [4800 0 R /XYZ 181.907 364.633 null] >> endobj -4789 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R >> -/ProcSet [ /PDF /Text ] +4819 0 obj << +/D [4800 0 R /XYZ 158.345 351.681 null] >> endobj -4821 0 obj << -/Length 685 -/Filter /FlateDecode ->> -stream -xڽVMo�@��+|\����?nIhh��E���6`e�-{Q}w���$-�`��7���"�C-�������F�b-��ɀ�N��b�g|˹�?��la�!�߹��'�5�����H�8}�&C��M(���J�R�*�3���G��y3�=�������L*������lW��.�?[|sT=s��w"�pX��$f���X��������� ���>CW_Z����f2�(\&A�\)UW6EIXF+��0������8N+� �����XՐ�����_�5�R5�N�����Y�2}�A���p�G�u��ڦC"��� E�S�2�#��5.�s< X�5#�1��Z����\߫��(�F�y.S����?����2g���f���2ԨY��&%4�/���w��$>E�:s�a�&Tm��<�NY��,12>� ���%��ވ>T�L����S���T��a���dL��}2�T�O�G}�Gy+����Q���l��W�Bmm���L:z��u��c���%�ٜ ��r=��0���W�������2 -B4Sr���a�\Ч�mg���_�U����CUF���ս="h6��6���K���TE�87�DO��cR#�Ѐ7�J ��߿ ���u�^��!Gw8�8�wY J��K�1�/�$�Hendstream -endobj 4820 0 obj << -/Type /Page -/Contents 4821 0 R -/Resources 4819 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 4788 0 R +/D [4800 0 R /XYZ 71.731 310.834 null] +>> endobj +4821 0 obj << +/D [4800 0 R /XYZ 71.731 285.763 null] >> endobj 4822 0 obj << -/D [4820 0 R /XYZ 71.731 729.265 null] +/D [4800 0 R /XYZ 188.024 274.969 null] >> endobj 4823 0 obj << -/D [4820 0 R /XYZ 71.731 718.306 null] +/D [4800 0 R /XYZ 181.907 262.017 null] >> endobj 4824 0 obj << -/D [4820 0 R /XYZ 158.345 659.527 null] +/D [4800 0 R /XYZ 158.345 249.066 null] >> endobj 4825 0 obj << -/D [4820 0 R /XYZ 71.731 618.68 null] +/D [4800 0 R /XYZ 71.731 208.219 null] >> endobj 4826 0 obj << -/D [4820 0 R /XYZ 71.731 593.609 null] +/D [4800 0 R /XYZ 71.731 183.148 null] >> endobj 4827 0 obj << -/D [4820 0 R /XYZ 188.024 582.814 null] +/D [4800 0 R /XYZ 188.024 172.354 null] >> endobj 4828 0 obj << -/D [4820 0 R /XYZ 181.907 569.863 null] ->> endobj -4829 0 obj << -/D [4820 0 R /XYZ 158.345 556.912 null] +/D [4800 0 R /XYZ 158.345 146.451 null] >> endobj -4830 0 obj << -/D [4820 0 R /XYZ 71.731 516.065 null] +4799 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 4831 0 obj << -/D [4820 0 R /XYZ 71.731 490.994 null] +/Length 730 +/Filter /FlateDecode +>> +stream +x��V�n�0��+t�P�/���ԉ��.|0�CӃ"1�����|}IQr�8v��1P�@Q\���,ib��O $dL��!k�V�#�E�]�;��\���Y�ƞ���<O�!%�"�n_�5+�|縄"{�8K�M���M)d�y"�To�Ȯ���� �͚.nVe΄�c�et��3�^���;I��9`O�'��(���s��x��FQ����B-�a�y�Dľ���X9��ےWI�ׁ���Xl�k)�B�`�%M�i���j�+��BB �����E��d'�|>�C43m���Ҧ�ff�!���!��h�3@�N�tS�R�6=/d��:cj���� Ϫ�Uk�!@��wmE���e�[���z ����R-�EP=PU�!���O?H�c�+ʜ��k^><�B-�[���H�z�U�� �uq�u�>s���K(�d���T�$X�e��8^6�97�܈�܉O������]A�ɮ�uE�w�trF٧�su�tr��o�+$�K��b��ٖ�%ս�:XuI��E����fvǗ�`c���jXנv�|���x��K@��SY?v`JB-D��\�Ԍ��O���8�ːLO�Z�p�s�9τ[��\:>��23�bH�%� ��l ��y� �����f����~u;W����"�ꃝ�b�U{� ��mp����t)�1N>�`#�>����|,^�躋��'/�O!wQJ<���Ϣk��?vy<�� ���endstream +endobj +4830 0 obj << +/Type /Page +/Contents 4831 0 R +/Resources 4829 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4770 0 R >> endobj 4832 0 obj << -/D [4820 0 R /XYZ 188.024 480.199 null] +/D [4830 0 R /XYZ 71.731 729.265 null] >> endobj 4833 0 obj << -/D [4820 0 R /XYZ 158.345 454.296 null] +/D [4830 0 R /XYZ 71.731 718.306 null] >> endobj 4834 0 obj << -/D [4820 0 R /XYZ 71.731 413.45 null] +/D [4830 0 R /XYZ 158.345 659.527 null] >> endobj 4835 0 obj << -/D [4820 0 R /XYZ 71.731 390.436 null] +/D [4830 0 R /XYZ 71.731 618.68 null] >> endobj 4836 0 obj << -/D [4820 0 R /XYZ 188.024 377.584 null] +/D [4830 0 R /XYZ 71.731 593.609 null] >> endobj 4837 0 obj << -/D [4820 0 R /XYZ 181.907 364.633 null] +/D [4830 0 R /XYZ 188.024 582.814 null] >> endobj 4838 0 obj << -/D [4820 0 R /XYZ 158.345 351.681 null] ->> endobj -1793 0 obj << -/D [4820 0 R /XYZ 71.731 310.834 null] ->> endobj -894 0 obj << -/D [4820 0 R /XYZ 252.009 265.58 null] +/D [4830 0 R /XYZ 181.907 569.863 null] >> endobj 4839 0 obj << -/D [4820 0 R /XYZ 71.731 253.409 null] +/D [4830 0 R /XYZ 158.345 556.912 null] >> endobj 4840 0 obj << -/D [4820 0 R /XYZ 71.731 233.959 null] +/D [4830 0 R /XYZ 71.731 516.065 null] >> endobj 4841 0 obj << -/D [4820 0 R /XYZ 188.024 221.107 null] +/D [4830 0 R /XYZ 71.731 490.994 null] >> endobj 4842 0 obj << -/D [4820 0 R /XYZ 182.306 208.155 null] +/D [4830 0 R /XYZ 188.024 480.199 null] >> endobj 4843 0 obj << -/D [4820 0 R /XYZ 158.345 195.204 null] +/D [4830 0 R /XYZ 158.345 454.296 null] >> endobj 4844 0 obj << -/D [4820 0 R /XYZ 71.731 154.357 null] +/D [4830 0 R /XYZ 71.731 413.45 null] >> endobj 4845 0 obj << -/D [4820 0 R /XYZ 71.731 129.286 null] +/D [4830 0 R /XYZ 71.731 390.436 null] >> endobj 4846 0 obj << -/D [4820 0 R /XYZ 188.024 118.492 null] +/D [4830 0 R /XYZ 188.024 377.584 null] >> endobj 4847 0 obj << -/D [4820 0 R /XYZ 181.907 105.54 null] +/D [4830 0 R /XYZ 181.907 364.633 null] >> endobj -4819 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> -/ProcSet [ /PDF /Text ] +4848 0 obj << +/D [4830 0 R /XYZ 158.345 351.681 null] >> endobj -4850 0 obj << -/Length 715 -/Filter /FlateDecode ->> -stream -xڽ�]o�0���+��llp���,j�LQ�}H�4�@�F�,Y��F�l٤*R����{�k����BB_]p�X�j�Yug2@�w�vb^����[1���5�������D[��}Q�y����b��#`�SZ�)7�ˢ��s*�(�H���ܙ9�g��.n*�5�k���j0�?)#~��?)��9P�ý��!Z�?���H��Z[bd,�,�V���%HKZ�Q9(�0c���Ѥ���P�ɖ� �F�X�?%�� U�"�V&�g�n=╴����D=����>H�U8J4�abdy=sbl_�۹ L�M���J���"��HM��s�Jh@ �T��K���f��*f��z��9سG����,WG�,�#�����P�t����t�$&ǪΫS��X%c�J!x��66: ��� ��(��kV<$��c)s �T�&�G#(W��A*VP�e4�Jf YY�h�u�ӌg�+ -�~rd�"3Ⱥ��% @���V�����N)8��]�1���ᑆ~�^w�~A�݃�|w���ř -��r�ix3^5����X��f��26�T<�^�j0H�]��/�R����7�2]��4{��ӵ\� -^�_����x�,��y�`k���`k�w����Aj�cm�VB���o��g�\'���iޝ�D(<y�؇*�����,M6��;�~��c�endstream -endobj 4849 0 obj << -/Type /Page -/Contents 4850 0 R -/Resources 4848 0 R -/MediaBox [0 0 609.714 789.041] -/Parent 4788 0 R +/D [4830 0 R /XYZ 71.731 310.834 null] +>> endobj +4850 0 obj << +/D [4830 0 R /XYZ 71.731 287.821 null] >> endobj 4851 0 obj << -/D [4849 0 R /XYZ 71.731 729.265 null] +/D [4830 0 R /XYZ 188.024 274.969 null] >> endobj 4852 0 obj << -/D [4849 0 R /XYZ 158.345 708.344 null] +/D [4830 0 R /XYZ 175.332 262.017 null] >> endobj 4853 0 obj << -/D [4849 0 R /XYZ 71.731 667.497 null] +/D [4830 0 R /XYZ 158.345 249.066 null] >> endobj 4854 0 obj << -/D [4849 0 R /XYZ 71.731 642.426 null] +/D [4830 0 R /XYZ 71.731 208.219 null] >> endobj 4855 0 obj << -/D [4849 0 R /XYZ 188.024 631.631 null] +/D [4830 0 R /XYZ 71.731 183.148 null] >> endobj 4856 0 obj << -/D [4849 0 R /XYZ 182.306 618.68 null] +/D [4830 0 R /XYZ 188.024 172.354 null] >> endobj 4857 0 obj << -/D [4849 0 R /XYZ 158.345 605.729 null] +/D [4830 0 R /XYZ 175.332 159.402 null] >> endobj 4858 0 obj << -/D [4849 0 R /XYZ 71.731 564.882 null] +/D [4830 0 R /XYZ 158.345 146.451 null] >> endobj -4859 0 obj << -/D [4849 0 R /XYZ 71.731 539.811 null] +1793 0 obj << +/D [4830 0 R /XYZ 71.731 105.604 null] >> endobj -4860 0 obj << -/D [4849 0 R /XYZ 188.024 529.016 null] +4829 0 obj << +/Font << /F33 1230 0 R /F27 1132 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 4861 0 obj << -/D [4849 0 R /XYZ 175.332 516.065 null] +/Length 772 +/Filter /FlateDecode +>> +stream +xڽV�r�0��^��2 )% -C�c��t��n���fH����L �0�v/lIW��{�d�j896���X�A�!�FF�Ftې�V�ż��ض�!�o�{��dØc3�rf��o�@�(�G��81�H�'"_�T��i*�ȡ��Ž�Z.1�����2�*����s5b�my�}��:f�=� � F���V�p��܆�в��l��q�RqlxCk�$r62��(��kR\Ƣ�}�BT��b +��CC�阩�1s���7WyZ�p-�X@���1�,jF�bH�����k.p�T5nPq�t(@�~L���PR0yxKKStg1b.�0� Q�L")�g�T�X�,����T��SCU���`f��9ͦ:}�!�E��*vH�� nw-.���iFC��B�g�4l�b0�&�N��ۓ��(������O�-����� M��%�H�N��;���άOu�B8=�O��#-��=����ܫn�76r�����u�e�g4�����Q�cg� +dh +�L�IJ_t�����sIP�,S�=��Ȱ�s��>�8M�T9xS��!>���U�ulijH��^,�(�����ǫ��p�ar�l����cem�O�,�����ꓵ�ʟ�h�7p?>��&��B�ƣq���'b�g�SXY�tK�y�.èH�1��Ճv�ɕ�KrQ���R@��BR�e ��q���qUŲ� +�X�����Y�E.u^Q7!{7T�lDlo�E����v����*r�endstream +endobj +4860 0 obj << +/Type /Page +/Contents 4861 0 R +/Resources 4859 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4770 0 R >> endobj 4862 0 obj << -/D [4849 0 R /XYZ 158.345 503.113 null] +/D [4860 0 R /XYZ 71.731 729.265 null] +>> endobj +894 0 obj << +/D [4860 0 R /XYZ 252.009 705.748 null] >> endobj 4863 0 obj << -/D [4849 0 R /XYZ 71.731 462.267 null] +/D [4860 0 R /XYZ 71.731 693.577 null] >> endobj 4864 0 obj << -/D [4849 0 R /XYZ 71.731 439.253 null] +/D [4860 0 R /XYZ 71.731 674.126 null] >> endobj 4865 0 obj << -/D [4849 0 R /XYZ 188.024 426.401 null] +/D [4860 0 R /XYZ 188.024 661.274 null] >> endobj 4866 0 obj << -/D [4849 0 R /XYZ 158.345 400.498 null] +/D [4860 0 R /XYZ 182.306 648.323 null] >> endobj 4867 0 obj << -/D [4849 0 R /XYZ 71.731 359.651 null] +/D [4860 0 R /XYZ 158.345 635.372 null] >> endobj 4868 0 obj << -/D [4849 0 R /XYZ 71.731 336.638 null] +/D [4860 0 R /XYZ 71.731 594.525 null] >> endobj 4869 0 obj << -/D [4849 0 R /XYZ 188.024 323.786 null] +/D [4860 0 R /XYZ 71.731 569.454 null] >> endobj 4870 0 obj << -/D [4849 0 R /XYZ 181.907 310.834 null] +/D [4860 0 R /XYZ 188.024 558.659 null] >> endobj 4871 0 obj << -/D [4849 0 R /XYZ 158.345 297.883 null] +/D [4860 0 R /XYZ 181.907 545.708 null] >> endobj -4848 0 obj << -/Font << /F33 1230 0 R /F27 1132 0 R >> -/ProcSet [ /PDF /Text ] +4872 0 obj << +/D [4860 0 R /XYZ 158.345 532.756 null] +>> endobj +4873 0 obj << +/D [4860 0 R /XYZ 71.731 491.91 null] >> endobj 4874 0 obj << -/Length 2688 +/D [4860 0 R /XYZ 71.731 466.839 null] +>> endobj +4875 0 obj << +/D [4860 0 R /XYZ 188.024 456.044 null] +>> endobj +4876 0 obj << +/D [4860 0 R /XYZ 182.306 443.093 null] +>> endobj +4877 0 obj << +/D [4860 0 R /XYZ 158.345 430.141 null] +>> endobj +4878 0 obj << +/D [4860 0 R /XYZ 71.731 389.294 null] +>> endobj +4879 0 obj << +/D [4860 0 R /XYZ 71.731 366.281 null] +>> endobj +4880 0 obj << +/D [4860 0 R /XYZ 188.024 353.429 null] +>> endobj +4881 0 obj << +/D [4860 0 R /XYZ 158.345 327.526 null] +>> endobj +4882 0 obj << +/D [4860 0 R /XYZ 71.731 286.679 null] +>> endobj +4883 0 obj << +/D [4860 0 R /XYZ 71.731 263.666 null] +>> endobj +4884 0 obj << +/D [4860 0 R /XYZ 188.024 250.814 null] +>> endobj +4885 0 obj << +/D [4860 0 R /XYZ 181.907 237.862 null] +>> endobj +4886 0 obj << +/D [4860 0 R /XYZ 158.345 224.911 null] +>> endobj +4887 0 obj << +/D [4860 0 R /XYZ 71.731 184.064 null] +>> endobj +4888 0 obj << +/D [4860 0 R /XYZ 71.731 158.993 null] +>> endobj +4889 0 obj << +/D [4860 0 R /XYZ 188.024 148.199 null] +>> endobj +4890 0 obj << +/D [4860 0 R /XYZ 158.345 122.296 null] +>> endobj +4859 0 obj << +/Font << /F33 1230 0 R /F23 1125 0 R /F27 1132 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4893 0 obj << +/Length 199 /Filter /FlateDecode >> stream -xڭˎ�8�0|�5zZ��S�MYL�g���Z����a�rz��^��D�\ �Ȫb�X�'���KWUW9|�C���UݽJV����U*�~ge��̫�p��v3o^��>�WY�����vI�8���������E���k�˪��]��_��;�[�y����v�7i�F3���Ժwz��^���9n��v I%���I�4����2��8��裲���Y�$����#+���x�����I��ٚ��K�E�gR&o�_�S�D#9��������MZFõo�D[~�k��>��C6U���ʲO���P�_�(�<O�fpc���5�t�K������x����y腓q��a -�.+:�E�Ό�nXW���Zt�3��1n��ɒ�JL�9�i����2�χ�0?��r��Tl@nN����M��3#PϦ��v�de���X�:_�U��%��N.�(��:w"6��j������e��p&���r�����ʜX���� 쁬�"��g�P����ꯪ� -#�J�k<��-�+{�g-�'k�qF���+�g�������&��H�����%�I 8��I����sW2tkT�����@� �']�f"d�5�����zfs�������j�\`�d�3�HCȀ`� �9=�M���6(gY��C�i[�Cm�|�����sPS?���(�e3�^�8�5�2�mG�&pr��i�:��oAā��IH����ckA��A��`��yP�Ǜm�Ђ�]8,q�gqɧ�i�W.w��-���4 ��@�� ��ם�~��?�$�):�#w����2s� �x!)�Hg -� 3�L?��о�����Ӹ�2N�i��V�0�j�Ep*1�l�jnȈ��r�R�A\O. ��awuc��n'��Q�������9z�sv��"���ad�)d�ί㘅cJ�4н��奟иjF�z����v�1s�2"�wD7ڙ� Ql},�������ksG�3���0$����l/���U�p��b��!'�82��hF������ -��Dk������[�=�Z���#��r@tQ��(�U���<���rJ �;;`l��� � �� 4�$jq�!O�&�Q�_L��}�%�#/��K��5dW�2<�Է�@�A���o @/d��l~cY�|p�(Z���py�*������fQ�ze�$a(���GU<�6����+U6�8���@�M���L!A�����˨�wr��Y�!�s��#�N|����,�p��=�IR�`l5e2N,�˙����P�#��������*�tx)�AN��c(�}~�����k�T��2�.�$��p�m@�QGӚ�A\=`��1��6�a}G�ZZ�ʷx{�+�ϩ^�`v�S: ��j �^[R�!{�����b4X:���6 ���~���o������:%��1~C�|b��cn�-ܶ(#hf�c!�a`�����A��"䎘�\8x��=̿�9j)ܥbB"�� w����� �ܕ�;�S`�VD1���(f��i=��xa�e���$I���C�42z롐雯(��!�+#%���p]/e8�����?J�ę3��v�LC�%I�i��S$�d���#3y��e��s,��8��P���T`˚RJ=a���y��� ���*1�����gO=Z8m�B+�o�T�i������ϊ<Z�J�������R�ts�]����@���J>���HOT��E}"pX� XH/V����=�Y�4�s6Pqf�۫���H/Z��:��-��gs����.�+�PM-��_�O@ hQ��&Tq�^B���v��ꃍr]Ȝ0�G/�gI� O� i+3GO7���R�<��Pߣ����j�DT@!ʼnj/Uc ���3��`�g�.o�/�h�OOG�g#9ߨ��}���t+59@��e�0_@�(Q���CP�&`��2D���-��n�ϯ���)��3H�'�7���Yn�Qr�<�d$2=�����"$��B��7P`w��Z|��'8��͛r�9�� �dwE5Iᶷ�^�v*[!� -�='��������$����.�?LCIkpf��n��и���n�˦Z��M�]V�k��XT�1�a���2��ڎ|�U~c4�l«P5"�hƖ�,�BZ:T�V0B� *���EP��$5��-��d�S�W@(��� �+ -��,,�E�Y1���U�|Yu�6J��.e_E���0~Of��+��IW�+� ��v��E9���_dƇ���l �PY���ۏ$���F՟�D���/���^� l~Eؔ��n)U� -�� �^BQ�K^��_9���Ad�ϋ.�I��@T )F�V���ab*U4���'Fn����A�)��� �E�\j��d�7�)<�����V� -��+�����+B���2�opL��ZE3%�%�1�~1Z��y1�y><����LBz�ktI����L�x2)�`��b��%�˙�>�]��� W{ %NܫH�=n`�*�W�^�Z�z�I,D[�r 8��'/;/o�F �N -9>A|��t������)onK�V� -y����W���_qߥ�⯇B��H�C�e��.�<N��BM}R~����۽��[��endstream +x�}�� +�@E�|ŔI�qwg����b;�&!&b"���$> +�)f�{�����p4�p(���)bp�"��H��L|4��C� | $R� �J�Ϸ��|.��xKR�X<ž����U����.���;6u�H7e�l���2p�&�VE���*���3E�����(��T[�Rڿ �E��׀J�`���<�q�9zz����Ppendstream endobj -4873 0 obj << +4892 0 obj << /Type /Page -/Contents 4874 0 R -/Resources 4872 0 R +/Contents 4893 0 R +/Resources 4891 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4788 0 R +/Parent 4770 0 R >> endobj -4875 0 obj << -/D [4873 0 R /XYZ 71.731 729.265 null] +4894 0 obj << +/D [4892 0 R /XYZ 71.731 729.265 null] +>> endobj +4891 0 obj << +/Font << /F33 1230 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4897 0 obj << +/Length 2687 +/Filter /FlateDecode +>> +stream +xڭˎ�8�0|�5z�={J�� ��"@��v�@Kt�=QN��~�EJ�V'�E-��X,�Iǫ��U�e +�d&E���7��0����"+�0�/ wyZ���t��qx����I�J��������%J�$-V������j��f��w�������w|��������n�āM�1�7S�����{��}�/R�*Z�@�Rv�c�q���(��xˣ�j�N<L�(��U����.��"����yG�u0���Y�g�G��_�S�D#9�������� ���8�KWӉ���U��" �=C6e���Ȳ/���P�_�(�4��������-�t��Ө������� ��õ���a��K:�Y�G]��ƞ���g�tm�8��&�� 0����m�b�8�<���d��3S��9�.�N�{4�#ό@���j�~�����C��t�a�x�;��,c��ܑ��A���gm^��8�s6��I���p�-ج����?`�-����͂V}� �٪�0ҨԿ�C��2�d��e�4t�Qw<w����6��Ŧsj�I:'<����o�v��{xv�=�e��U~kf��=}D�QW��E{�h.i�Y�l7"����_X@ ���x�iH =Lھ6�+[д��A9�`�iշ�*�q�i�7 +�I�=5u}爉�ȃ�1�������-C�&p�m'�A[=�Nt[�q�.p�>h���KF�����C�U��}�#*T�x� ^Z�K�����4����wK8�55�$P���=�uG�߈.��(J*���ȭ��� !��܆^6HDi*^H +��Ba����ӯ��#�oD��}5�8�����a��a�U'�Ǔy�J�7)0C� �NQv�W,7���%A1�0l/v�4���d�;�a�?��8E�!�`�V��A��!C?�;����u�pLɘ�Ӄjx�4����-c���a��b�\����ѵ��C�@[���˳�t�t����Q�L�48) �:�2�f�z�,ㄴXbD�ɉJ����x���,n�³���/aњ' :Fc'��i�R��q"�H;��AT�3ʗ�q!���p�}J d�x'{�-��Z[��M�c0�#��@�bȓ��bT�7S��S���K���e ��O�me���6��;�YFn,��X8 4����_ޢJ���m~�IP���.I��B,�PW�Fr�|�L�A��7�����Vd�� �]��l� +�e��wr��I�>�s�N�N\����,�p���IR�`<h�d�X��3��*s�dGt>O̓I��5T i/�R(��~�F_���0�tW�Bx�t9�n"�:�ƌWq�� ��d����Ujq9+�b��ᮌ�<�z��u ��O�4@�5:m J1��9*��Ί�`� ����<>\�r�V�6-�:�M�6�JjXc܆h��l)��[�m����Lr��t��F%$�X���!ùp���{�s�R�KńDd�2)�;���uw���ԍ�"bzm�AȐ��zX��������IΒ筇�id��A!���(��!�*#%������2�oi�֟�P���t�k��ؒ����4�]E�)�|�DD���������s��=�}q�D����5���z�zA���q{ +$I=+1ʻ���gG=p�F�V�_�|�7 �E=�WT�di�v��������R�ts�]�t�k�@���J>����I��z�*��D`�4tA0�^,s� zʳ0�5�l���T5;+P�^�(\_:��.�O�WW�]�W,��Z+�?��E��,��Pɉz ���ǃ�6 +�9�>s�e��%�<&�a��,=ݼ�9y�M��G3a7 !�舨�B�#�N��@)-&���OT]ެ_8Q�NNG�g#9ߨ��}���t+59@��g5F-(`���n�������>hM�&*�e����[���#�['�39�/#$S�g�O(oly>=���%��"y�3�Hdz�{2H������������{�g?��to��3��vnH'���I +���w"4S�� V`4�9A`gh�{�ç�0('����u��aJZ�5SuuS��Ɲ�W��]6��B0��m2�\kŢ����f�������W^�7F��f!��U#��fl�Ȃ�0ˤ�C%o#��ĸ�yP��kR���ݒK�I�.u<��|9F@%O P\Q���`~�,rϊ��|-�ʪ��Q_:�v)E��σ +��=����`�&]ή&�#��ZH��g�<��� 3>ܜd���ꏔ�~$��$�w����%��9�}��n`�+¦��wK��" +(�6�z E �b,y|7�,����T̋.�I��@T)F��jůk�~b*U4�MO��"V��1�.�U���Aڳ����?�,4o(Sx~A3�:`�C�W"a P=�W&�rA�e��������fJrK�c��f����b��|x�Ny��t$��(�0j��噠vdR&�E��J��3'�}D�R����"J�G71��W�{\�f�ɯ"�=C�H���$�����@p\�O^v^�0jl�r|��8�i��=1��R ��"�0���B50/ +�o><��W��.����_�b7��o��|��'IX�� ��Q�|'�+�˭��Ӷendstream +endobj +4896 0 obj << +/Type /Page +/Contents 4897 0 R +/Resources 4895 0 R +/MediaBox [0 0 609.714 789.041] +/Parent 4911 0 R +>> endobj +4898 0 obj << +/D [4896 0 R /XYZ 71.731 729.265 null] >> endobj 1794 0 obj << -/D [4873 0 R /XYZ 71.731 718.306 null] +/D [4896 0 R /XYZ 71.731 718.306 null] >> endobj 898 0 obj << -/D [4873 0 R /XYZ 530.903 703.236 null] +/D [4896 0 R /XYZ 530.903 703.236 null] >> endobj -4876 0 obj << -/D [4873 0 R /XYZ 71.731 682.175 null] +4899 0 obj << +/D [4896 0 R /XYZ 71.731 682.175 null] >> endobj -4877 0 obj << -/D [4873 0 R /XYZ 71.731 672.06 null] +4900 0 obj << +/D [4896 0 R /XYZ 71.731 672.06 null] >> endobj -4878 0 obj << -/D [4873 0 R /XYZ 71.731 662.097 null] +4901 0 obj << +/D [4896 0 R /XYZ 71.731 662.097 null] >> endobj 1795 0 obj << -/D [4873 0 R /XYZ 71.731 638.283 null] +/D [4896 0 R /XYZ 71.731 638.283 null] >> endobj 902 0 obj << -/D [4873 0 R /XYZ 168.205 594.97 null] +/D [4896 0 R /XYZ 168.205 594.97 null] >> endobj -4879 0 obj << -/D [4873 0 R /XYZ 71.731 586.147 null] +4902 0 obj << +/D [4896 0 R /XYZ 71.731 586.147 null] >> endobj -4880 0 obj << -/D [4873 0 R /XYZ 71.731 527.418 null] +4903 0 obj << +/D [4896 0 R /XYZ 71.731 527.418 null] >> endobj -4881 0 obj << -/D [4873 0 R /XYZ 71.731 485.64 null] +4904 0 obj << +/D [4896 0 R /XYZ 71.731 485.64 null] >> endobj 1796 0 obj << -/D [4873 0 R /XYZ 71.731 415.902 null] +/D [4896 0 R /XYZ 71.731 415.902 null] >> endobj 906 0 obj << -/D [4873 0 R /XYZ 312.796 370.747 null] +/D [4896 0 R /XYZ 312.796 370.747 null] >> endobj -4882 0 obj << -/D [4873 0 R /XYZ 71.731 358.576 null] +4905 0 obj << +/D [4896 0 R /XYZ 71.731 358.576 null] >> endobj -4883 0 obj << -/D [4873 0 R /XYZ 71.731 316.147 null] +4906 0 obj << +/D [4896 0 R /XYZ 71.731 316.147 null] >> endobj -4884 0 obj << -/D [4873 0 R /XYZ 71.731 285.262 null] +4907 0 obj << +/D [4896 0 R /XYZ 71.731 285.262 null] >> endobj -4885 0 obj << -/D [4873 0 R /XYZ 71.731 202.573 null] +4908 0 obj << +/D [4896 0 R /XYZ 71.731 202.573 null] >> endobj -4886 0 obj << -/D [4873 0 R /XYZ 71.731 171.688 null] +4909 0 obj << +/D [4896 0 R /XYZ 71.731 171.688 null] >> endobj -4887 0 obj << -/D [4873 0 R /XYZ 71.731 140.804 null] +4910 0 obj << +/D [4896 0 R /XYZ 71.731 140.804 null] >> endobj -4872 0 obj << +4895 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4890 0 obj << +4914 0 obj << /Length 3082 /Filter /FlateDecode >> @@ -18452,189 +18569,190 @@ G& �1�g���+�dž1f^H z��v���D���hO��s����**n\�$Ł_Ô ��5֝Q��P]7F?�אѐ*�ī�`���r]�$8j�ߣ�̰wx��k���Τ��x6���+��1����\^�?���fFd��{�<8�٥k2�[;�6>T�=MZN���r���>˹'Qb�tZ��m3Ή�LB~2�EҌsTY��c��8yt焫��_�~�n�v���TI!C���n��vFb<�.ZflOj�����$N]J���.rZ�.�锤��I�X��2�I�熅��(e��r�����{B�"q�8RJS�7��cړ� ��-T�Rq�ո�F"�g$�n,�d���0�To-�H�L\$�1����ʉ)P���nb���fH��2��g��E�\I��E�8�G^ Fۥ��2�Ѿ'w-6���Kd�*����/�1I4�bVc����-�nl�If��f�ƞ�Piҟ����yJ̴820��+�P�Lu�EK1�G�Tִ h�k���'��4�8=,�b?�l�j}�d�;��dI���*$���`��H������.w@(�-�&�~[acA��1��c�Tl`wc{?��i���;º����6q��O8�閪�w-;�*�U��g�C|_q�K���jU���oq}<8�Ův�<�/Ǔqi�5���� $!,���f��YPWT~(���."��iu�,��6�(;V1U��Ɂ -�R�^p�y�|bw�U�9%݅�pw �N�����B��z��B�0k��K�̫�ci��<�^��j��j�~.��| �ȭ��p�ڨҵ ��|���Dx�t LM5�gWo@1(�n��p+'n���05Ճ0'o_�vy���ׇ�,�~)�V����9�:4��yD�2r_�~�2���x����L���h�Oo���\��6B�]eϞ%���$�a��H���D~X��b o������������幢d+�I�w"2�e�71\�.�+-���w�f����@U�SV�<���X&)�_3�*=V�u�&N�)���پj&�H�]D����k��/�`�+!�=����[;i&�-��'N���;�7�(t����9�)�V����h�ֳ���ς4������Z1m��gE��<>8,H^������X42endstream +�R�^p�y�|bw�U�9%݅�pw �N�����B��z��B�0k��K�̫�ci��<�^��j��j�~.��| �ȭ��p�ڨҵ ��|���Dx�t LM5�gWo@1(�n��p+'n���05Ճ0'o_�vy���ׇ�,�~)�V����9�:4��yD�2r_�~�2���x����L���h�Oo���\��6B�]eϞ%���$�a��H���D~X��b o������������幢d+�I�w"2�e�71\�.�+-���w�f����@U�SV�<���X&)�_3�*=V�u�&N�)���پj&�H�]D����k��/�`�+!�=����[;i&�-��'N���;�7�(t����9�)�V����h�ֳ���ς4������Z1m��gE'�098,H^���o��]��G4.endstream endobj -4889 0 obj << +4913 0 obj << /Type /Page -/Contents 4890 0 R -/Resources 4888 0 R +/Contents 4914 0 R +/Resources 4912 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4788 0 R +/Parent 4911 0 R >> endobj -4891 0 obj << -/D [4889 0 R /XYZ 71.731 729.265 null] +4915 0 obj << +/D [4913 0 R /XYZ 71.731 729.265 null] >> endobj -4892 0 obj << -/D [4889 0 R /XYZ 71.731 662.351 null] +4916 0 obj << +/D [4913 0 R /XYZ 71.731 662.351 null] >> endobj -4893 0 obj << -/D [4889 0 R /XYZ 71.731 592.613 null] +4917 0 obj << +/D [4913 0 R /XYZ 71.731 592.613 null] >> endobj 1797 0 obj << -/D [4889 0 R /XYZ 71.731 535.826 null] +/D [4913 0 R /XYZ 71.731 535.826 null] >> endobj 910 0 obj << -/D [4889 0 R /XYZ 237.066 492.728 null] +/D [4913 0 R /XYZ 237.066 492.728 null] >> endobj -4894 0 obj << -/D [4889 0 R /XYZ 71.731 480.29 null] +4918 0 obj << +/D [4913 0 R /XYZ 71.731 480.29 null] >> endobj -4895 0 obj << -/D [4889 0 R /XYZ 71.731 401.331 null] +4919 0 obj << +/D [4913 0 R /XYZ 71.731 401.331 null] >> endobj 1798 0 obj << -/D [4889 0 R /XYZ 71.731 381.341 null] +/D [4913 0 R /XYZ 71.731 381.341 null] >> endobj 914 0 obj << -/D [4889 0 R /XYZ 254.178 338.244 null] +/D [4913 0 R /XYZ 254.178 338.244 null] >> endobj -4896 0 obj << -/D [4889 0 R /XYZ 71.731 325.806 null] +4920 0 obj << +/D [4913 0 R /XYZ 71.731 325.806 null] >> endobj -4897 0 obj << -/D [4889 0 R /XYZ 71.731 231.838 null] +4921 0 obj << +/D [4913 0 R /XYZ 71.731 231.838 null] >> endobj -4898 0 obj << -/D [4889 0 R /XYZ 71.731 200.953 null] +4922 0 obj << +/D [4913 0 R /XYZ 71.731 200.953 null] >> endobj -4888 0 obj << +4912 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4901 0 obj << -/Length 3184 +4925 0 obj << +/Length 3186 /Filter /FlateDecode >> stream -xڍَ�6�}��Ȁ��:�}K2G&����b��E��#K�$���U��D��0E��bݤ�x�'6�p��~����hs���6�0��`�=�� ���|�!6������ �& |�����?�w�������ޏ<�K����Q�4� q���w���UV]�uE�?'Y�r�ߧ�����Օk����dX��wp�0T+��m�A8EK����.�N�;�������;Uu7@ Nw�xൾS�TWl0;uDR#�w��aj�y4�|A��Y���纑�x^�]S�Ҋ�1W[9��Q"�f+γ�'pi/|7���ףl���=շB�;��j�}.�~������`�Wh����KV��=���8�"��l�݅Z����g�p� JM�˄^�b�Ht\�q�����y���Q���K�x�R���<C4`�/�(V���(�Q�����A[���ʩa��$Ќ�4Yɠ��Bmv�;�N%�KB� %�@r��*�ò�N -C^�~,D�<���㏖�7�?�!)��,)��)�����kI�AHYʬ�z����{ع:X��M���5�T��|�xP!��6aG_,=s�����Rc�����3WBg�i����;/�T�cľ-=u�{l\ 1d ���pϟِR4dȥ���6~��V�?���A|hN�Bѱ���ڗ�$a��_�mG���S8mo$�%-��j��������?��?I��n�(v�a�k�ހ��~�rZ��!u�8��5��i�U�#�H��VsbN�<�iDp%���=��^�"l?o�z2ԹiwU�i��`���Z(�EE�s�M}�Ƚ �WIC/p��fO��^gE_�oQ+�J#���Xm��R�.�^�{���p� KB�]/܊z�G�y�,Z�9���QPǏ0X7�L��)���h��R��;8����}�13�A]��fW�E碔�)Ӿ8��s���i�M�\TY��G��e��q�Ch�-y��l�E� =J�$�H�'�y�%��3�Y r��E���z��+�Gh���ټ��6�2{cSi�S+�>��b��4���1$�|��p�)��|P�1deji��� ��ű���+��(�_��:����#�{*��%Z�Ra���6�;���eGr���LUr=9p1Y�f*X�z�(�`����cDK���,�N㰲�eIC��x2�Ƹ���S�� -V��\����w{m�HS쭑��ט0N]�$�c�,i��u���13�j��Z���;m��A��2p��� ������`р}E��������B��.D"!���Z$b�,E"��n�� -�Z��٘ ���9����Whb:~ە4���F���&7bI�do�̉����~��SZ�ٸB{�V�yng�� �'�)����^#i�\7}�ͭ�(i��ىL��o���b Ge�:����`K"r�d!�V{dz(�ˇ��s�eJ��U���T�s���)�W0 ��p**Մ���)�A�� �:1�t1�QF?%��jV�9d��P$re�N��(����1���Iú@>�G)"�U�j`�l�:�XL��֪��27�+����R-@�>�*�3�Q�����a ���ՀY2���qI�fh=��5�#�3��;��D��ށ�<����gq�AVV��N~!Q1^NJ���'e��l@� ��K�����2R��6�`���7���fP��1֪M�7[�)�B�a��!Z�(pc�.=Ȣ(��qQ&��2a�a�F%OH�@uxbTf�b�w��Z9݂p�8�A��Q#�� ��m4jՋ��z̯5�6�9� ����8��T�$I��������(|�>bA�u�h�.�Q�:TD� �tL��Lo+�A�����:��te`D�Uf �)���d g0+��BS;���1�:k��d��<���9�Z��;�z:�\�4�Z C(iMUh�@�g|���3y \ӝ&_f� ͩ�*� -���h���{�@�ƉO��) ̐��@b��� ����fl�48��ޑ�T�+R2(�:T������>�b���Ē}k.�SSI,��� ;B�i��'��.��G�Dv�{��9�Y�D�dj,$ȉ���є�Cs�F�B:5F�AWj>hq��f�n��HYS���OUy8��#cIA����0e�Uv��:x�vv:�j��Ws�(9k���eM�ĸ�:p-WQĐrF�L��cV�8/�ѐ +Z5[ ����N!�������1b*�Zh����m��!�b�pu���q�1k%�A-ŝ�4OI��{?l��q�;�2S�~N��)�CôjQo�\�2J�0�Kª]_��$��+l�a�,��L���6�.�a����ZΔ�����X�4�|��F��N} ��� -l%6�C'���:� -�9F5:�g�;�.F#�N�<��^݇�I�oÆK,&���VNf)�� ��.ڬ)��Fk��-E� �0�����qdp�����ӗ�R4�{�x��[Sz�0�d^p-�,DyC����B�چ��|�崖�z�lQBAXl��4���~��?K@m�r]2�FeE��.U,|����� -M6�+��o��;��a�k���6����d"�/��2��T&� �cI.gh=��5�#�s��H��q1Ji�����s��Aݛ� C?Ѽ��";��[>/�2��4��T+�(����@���/��4-M!�z�^�0�&�ݕ}/k����<�J$�D��݂�Z�;���=��FĞ�ּD�ހ�J����ˢDMi=���#�*J������݄%F�!���U�?[9~�����@6���『R�*����yʃ@|���wC�_�G̒?� ȩ_OiJ��)����XrĽF��湑N���|�� i�}����.����ԍ�g�n�H�u���U�PLtT�Z���A��\/�� �ł$������a�]�bG_ ��sNh�:U�F��/W�~3z���d��m�ȟ��,ί�ð��ʳ��?8e�N�aF/V��A�ѩ��"+�C�#� H��8�����$=���-e��$o�@��������"k�J^��e�q�N�������d����2y A' �Mx�қ�)��ӗ�endstream +xڍ]��6�}E�/u�ĵ,;���n��k�;=�p�O�L|u��v���Hْ���"K)Q���&�?�I��H� S?<ě��M�y��oC�do�|�����ܤ~z����FFG?��&�����S���MUy��vƁ�ާ���F��q�5[�xJQϻ�t� +着.늺�ޟ���Z���ӏo�?�ˊe�G��r3Yz�K7���"���v/��~��]���w�z��0��T���U4$����k}�Ʃ�:�`v���Fv�.u����h��L!�UYR��:2��횂�VT/��ڊ�{���7[q�^4?�K{�)Xu�>�������S}+T�����ߗb��_����z�V�zϻd�I��nM�S�*rЌ��碻P+�S���ND�i{�0��,���;�#������a�q�� ���E19z?�y�{�'-m-ϳD��zֿ�B�e<J��5C��2h��ԝU95��P�ѐ!��_�X���p�ة��~I�����H��^�xX�Ic�ڏ��U��7���r%��g:$��#%B��:E<�^�C#�!i�J��ʌs��9~;�=�)XCC_�F��V��*$��&�若!`��ѲԪb-_�jf�Z�l8��;���zy�8te���y���%�,!���3Ҋ���j�І�ou�*�g��3�/��ͩY(:6�Y���$l7������׃~ +�����vQ�4��|ۻ����'��M�ct��Z��`���E���?�uL��!��5��i�U�#�H��Vsb���x��{��Ρ��_�\���=�Rd��C�ԓ��M�#��L�����&<�B�-*�X�wn�!@�M���HZz��6wrm�:+r��Z~�Z�T�.@���?_�Ӆ��K}/����;aI� ��3���%b���y�,Z�9���QP�0X7�L��)���h��R��;8����}�13�A]��fW�E碕�)3�8v�96�4��Ӭ�⥨��1ܟa��q���}����o��-�L�(9��L6��~ �y�%��3�Y r��E���z��+�Gh��Oټ�m�e�l��O��;���;��og�0t��!���� ?��hNI����A֦���`=�]<�<�\�c�6��Kqc\���Nt�qO�����T*\3��f|ǰ���H��>�ZΠ#n"&'�Lk[OE�Sq�r�h`�&����i�ֳ,i��Of�7�3v�>�A� +V�����n�Mi��52�R_$ɪ�X0Kc@p��-i����F{�i����q����q���m�$X4`_a�\�����'�����H�B���X0K��A>�[<�)��g�B{�i� +D5v�G*b��D��D.,�����v%M�s����i�����K�� {fN�m4����l��z���#�:��s7��n�=�M�5`�D��9H���cln]GI+G���NdҬ|{p�]�A8*����M�v[�/��0[C�-��8H�/�o���x.Sj��e�����T��kO,�^q��I�%�Sѩ&�e�Ns��Ehh։ᬠ��ƈ2�)��T�����!��"�k�u�vD1PM�w���eL���<J��BUG<`�ױ�b"]�Nn�����^9P�Ը���$胪�;C?���1_2���Q�nX-�%�j@�)�$o��C�[�=B;cX�#1)HL��z�ý��ءq�Gd ��h������u�耱��'u����tP �tI_��)#u=m��V=# +�o'���k������r.����Ea���Ѓ,�A �%aB� ,v�ZhT�TTф'Ve�(&x�n���-_⍔�X�do�L��ѫ^dה�c~��v��)Nd$��šW�B%Ir����FY�c�B﨓G#,pQ���С#z a�c�ue�x[� z@T6yL`*#r�*kPOym�"cHh8��\ ���!o���!�Y�ƨ'�D����)�"����ӡ���!�jBKk�CC bN���?,��k���4���L`hN��a�RJ���?�'>l[��0CF'���n�ђ ����fl[�48��ޑ�ԓ+�2(�q�{��W��v1�a]bɾ5W��)�I,��˒ 7B���'�����G�Dv��M�9�Y�D�dj$ȉ��є�Cs�F�A:5F�h*������f�n�����H}G��� +pnGƒ��3va�t����M����t��=��>��r�dU{˚�uu�Z���!���Jw8���� �aE�g�Z;����)��շR�3f��ʰ��E,�qW qȭk\��ed����������X�����Eн6t�8�[��p?�O�c��a[���>}Y%a��%aݮ�TET�.���}q�p�qŰw�0V-gJ�\x�^L"�;�%��l��\B��V� ��Щ�!�N����~�U����l|��@��h�י�dz2k��01)T�mؐc���#C_r5�`�"N����͚�zl�Vh��R� r �M@G��_o�9�QQ�}/ +O�}KcZ����E`��(oh���[��ذ�׀����RW�-J$����a�b���b�b�ޟ����P۪ܔL�QYQe��B�q����B����x�������g��e�*��2�H��t�Lf�,�����X��Z�r���\�16gg�F�RZ<:�w��?l��&g��O�/���M������L�(��x%� +$�m��2P&{�;�c��&��L�J/O�|���ʾ��5CV�K�~%�i"��nANu0�KT���Fҭy�"��3�( n��E���z,Q+�Ghu��J� �5Y� K��B��"�r�����X�l�=+0�>��)�%$�Џ�p�Y0K�Ȁ �~Y<�)�ǧ�B{��b��e_p��F:��"��A8�6�-�1��n�0j��ũ��@�y����!��������|/?���ծ���b2I�G`0��a��"D������܀�_�Nש���Ƶ�ߌa�+��g0��=+��+��0l�����O�D�©�Eo�ы��|)#ЌN�UYI�aN@�H��1r��X/&��Xo)~&y�ڐ�/�����W~Y3pV�:�Ǖ-�X�C�v�|�@4��O$�/d���8�~ S�'�t�Q�������endstream endobj -4900 0 obj << +4924 0 obj << /Type /Page -/Contents 4901 0 R -/Resources 4899 0 R +/Contents 4925 0 R +/Resources 4923 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4936 0 R +/Parent 4911 0 R >> endobj -4902 0 obj << -/D [4900 0 R /XYZ 71.731 729.265 null] +4926 0 obj << +/D [4924 0 R /XYZ 71.731 729.265 null] >> endobj -4903 0 obj << -/D [4900 0 R /XYZ 71.731 741.22 null] +4927 0 obj << +/D [4924 0 R /XYZ 71.731 741.22 null] >> endobj -4904 0 obj << -/D [4900 0 R /XYZ 71.731 718.306 null] +4928 0 obj << +/D [4924 0 R /XYZ 71.731 718.306 null] >> endobj 1799 0 obj << -/D [4900 0 R /XYZ 71.731 688.254 null] +/D [4924 0 R /XYZ 71.731 688.254 null] >> endobj 918 0 obj << -/D [4900 0 R /XYZ 201.827 645.157 null] +/D [4924 0 R /XYZ 201.827 645.157 null] >> endobj -4905 0 obj << -/D [4900 0 R /XYZ 71.731 636.334 null] +4929 0 obj << +/D [4924 0 R /XYZ 71.731 636.334 null] >> endobj -4906 0 obj << -/D [4900 0 R /XYZ 71.731 582.586 null] +4930 0 obj << +/D [4924 0 R /XYZ 71.731 582.586 null] >> endobj -4907 0 obj << -/D [4900 0 R /XYZ 71.731 577.605 null] +4931 0 obj << +/D [4924 0 R /XYZ 71.731 577.605 null] >> endobj -4908 0 obj << -/D [4900 0 R /XYZ 89.664 556.848 null] +4932 0 obj << +/D [4924 0 R /XYZ 89.664 556.848 null] >> endobj -4909 0 obj << -/D [4900 0 R /XYZ 71.731 528.788 null] +4933 0 obj << +/D [4924 0 R /XYZ 71.731 528.788 null] >> endobj -4910 0 obj << -/D [4900 0 R /XYZ 89.664 513.012 null] +4934 0 obj << +/D [4924 0 R /XYZ 89.664 513.012 null] >> endobj -4911 0 obj << -/D [4900 0 R /XYZ 71.731 485.326 null] +4935 0 obj << +/D [4924 0 R /XYZ 71.731 485.326 null] >> endobj -4912 0 obj << -/D [4900 0 R /XYZ 89.664 469.177 null] +4936 0 obj << +/D [4924 0 R /XYZ 89.664 469.177 null] >> endobj -4913 0 obj << -/D [4900 0 R /XYZ 71.731 467.02 null] +4937 0 obj << +/D [4924 0 R /XYZ 71.731 467.02 null] >> endobj -4914 0 obj << -/D [4900 0 R /XYZ 89.664 451.244 null] +4938 0 obj << +/D [4924 0 R /XYZ 89.664 451.244 null] >> endobj -4915 0 obj << -/D [4900 0 R /XYZ 71.731 449.087 null] +4939 0 obj << +/D [4924 0 R /XYZ 71.731 449.087 null] >> endobj -4916 0 obj << -/D [4900 0 R /XYZ 89.664 433.311 null] +4940 0 obj << +/D [4924 0 R /XYZ 89.664 433.311 null] >> endobj -4917 0 obj << -/D [4900 0 R /XYZ 71.731 431.154 null] +4941 0 obj << +/D [4924 0 R /XYZ 71.731 431.154 null] >> endobj -4918 0 obj << -/D [4900 0 R /XYZ 89.664 415.378 null] +4942 0 obj << +/D [4924 0 R /XYZ 89.664 415.378 null] >> endobj -4919 0 obj << -/D [4900 0 R /XYZ 71.731 400.987 null] +4943 0 obj << +/D [4924 0 R /XYZ 71.731 400.987 null] >> endobj -4920 0 obj << -/D [4900 0 R /XYZ 89.664 384.494 null] +4944 0 obj << +/D [4924 0 R /XYZ 89.664 384.494 null] >> endobj -4921 0 obj << -/D [4900 0 R /XYZ 71.731 371.443 null] +4945 0 obj << +/D [4924 0 R /XYZ 71.731 371.443 null] >> endobj -4922 0 obj << -/D [4900 0 R /XYZ 89.664 353.61 null] +4946 0 obj << +/D [4924 0 R /XYZ 89.664 353.61 null] >> endobj -4923 0 obj << -/D [4900 0 R /XYZ 71.731 351.453 null] +4947 0 obj << +/D [4924 0 R /XYZ 71.731 351.453 null] >> endobj -4924 0 obj << -/D [4900 0 R /XYZ 89.664 335.677 null] +4948 0 obj << +/D [4924 0 R /XYZ 89.664 335.677 null] >> endobj -4925 0 obj << -/D [4900 0 R /XYZ 71.731 294.666 null] +4949 0 obj << +/D [4924 0 R /XYZ 71.731 294.666 null] >> endobj -4926 0 obj << -/D [4900 0 R /XYZ 89.664 278.89 null] +4950 0 obj << +/D [4924 0 R /XYZ 89.664 278.89 null] >> endobj -4927 0 obj << -/D [4900 0 R /XYZ 71.731 237.879 null] +4951 0 obj << +/D [4924 0 R /XYZ 71.731 237.879 null] >> endobj -4928 0 obj << -/D [4900 0 R /XYZ 89.664 222.103 null] +4952 0 obj << +/D [4924 0 R /XYZ 89.664 222.103 null] >> endobj -4929 0 obj << -/D [4900 0 R /XYZ 71.731 206.995 null] +4953 0 obj << +/D [4924 0 R /XYZ 71.731 206.995 null] >> endobj -4930 0 obj << -/D [4900 0 R /XYZ 89.664 191.219 null] +4954 0 obj << +/D [4924 0 R /XYZ 89.664 191.219 null] >> endobj -4931 0 obj << -/D [4900 0 R /XYZ 71.731 176.111 null] +4955 0 obj << +/D [4924 0 R /XYZ 71.731 176.111 null] >> endobj -4932 0 obj << -/D [4900 0 R /XYZ 89.664 160.335 null] +4956 0 obj << +/D [4924 0 R /XYZ 89.664 160.335 null] >> endobj -4933 0 obj << -/D [4900 0 R /XYZ 71.731 158.178 null] +4957 0 obj << +/D [4924 0 R /XYZ 71.731 158.178 null] >> endobj -4934 0 obj << -/D [4900 0 R /XYZ 89.664 142.402 null] +4958 0 obj << +/D [4924 0 R /XYZ 89.664 142.402 null] >> endobj -4935 0 obj << -/D [4900 0 R /XYZ 71.731 135.264 null] +4959 0 obj << +/D [4924 0 R /XYZ 71.731 135.264 null] >> endobj -4899 0 obj << +4923 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4939 0 obj << +4962 0 obj << /Length 2664 /Filter /FlateDecode >> @@ -18648,66 +18766,66 @@ xڝYݏ۸ �� ���p`mF�"��P|Y���x(�P*w��Fw^2A�d��-��ʋa��b(�k�j���H.���n���5��-t³�l����hS��Fѷ����0��TAU�ұCc3mo�e}�~{\�$���;Ё��S��PXC�;&O����3H�<��>q��Re�L I�bg\X��j��uR��C�������78�^�=���KA�t�NB�0�v� ;������1L��ap�D���q��Eh{3E4��a�f��,ⷎ{ Dip����7.��.�F��) �:qW�0��uk`�C�A[1�s���s���/�)@%�g��Gh3��y.��9����3��n7Q��z�k��eo�{����7���M��Lˑ��@�S�{�|�䯶?3]A&�qc���U����ah*e'Q��f�Ȓ���~f�,0��d��� �D��^sZF�i@����D6�>t�#|�,���Y��������DL�w-Ԫ�yF���z�J���ꭄ���E�D��3�˝@�Z �zl�㡹HD�蝹���'�����k=��S��]�? ڡG�A�gAp�g9]�/m�TM0�K�7�X�Ds�H���1L!Re�%t-Q�(�+���Ls@#e h�3n�e�{�&CAQ;�p������'J ���=�J�!����Cƙ�q�Sm�?~�$}<r�����N�'͉�{��i<�n�A$!�:PE�^S^-�`*�0��EA �n��.�g������tɔ�3��0���A㡱�D�h�rRfEYe/�uF��.��y© [�8��x�w��z��a���" ����JZP ���{X����\J�b�P�wa�����MK��f-�:����J�S� �.{�*���ɟ�)4�$�Ie����R@2�%e��.�?��6��&�[�kV��R�f�n��<_��R$��ޛ�G��T=��~X��e��$�E��fܔҘ�1������0����G��� �� �����P#���coF ���S �H%��;�V"�P�:*|̑{ f�,�܊{� ��{q���k<��g@�oW���� M��<�z�i�6Wѩ1�YF7;O}��6��B�l�|u=��>��?�/��C|����,�O?U=ݐɐ����}+�[=�|F`���#Yc2F��1��#�*$�VX~"Į�q�����t �u�\,3����(�CļW;>��R��l�����x�@� +<4�C���+�ъ,�+�V�FN7$TY}c{v��������I��z/��n�e�we7p>���P�{I�*z��1�_)3���<Q���;)iCˇkL�qWF���ƴ���,ҕ���/�'�$/R� �s�1��%���:肞�;+������O�zz�Bm��kSZ�p@.��~�r��#W�<el�G�8��W�܋}^��zU�3�~�?��_�F��!Ʀ�˳q�t� ��f�U7����;���� �U�B�_��E��~,�*����7P��_��璘ߞP�3'��Q�p`�2�#���"��*#��j�~�����Uv!�BOt��#:�E"�& @,�K -�,�U_DY-F/����e/[�;Q*ޞe�dvbG�"�/�n��߽�c��s���˱��8�i���g����Qc��(��e-,-�������I�z��hxth��Ź�e�7{����3W�s6t�Mѵ^��*��&Ŧ����xb���8���6ީ4g�-�����^���B�endstream +�,�U_DY-F/����e/[�;Q*ޞe�dvbG�"�/�n��߽�c��s���˱��8�i���g����Qc��(��e-,-�������I�z��hxth��Ź�e�7{����3W�s6t�Mѵ^��*��&Ŧ����xb���8���6ީ4'$�o��{���UB�endstream endobj -4938 0 obj << +4961 0 obj << /Type /Page -/Contents 4939 0 R -/Resources 4937 0 R +/Contents 4962 0 R +/Resources 4960 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4936 0 R +/Parent 4911 0 R >> endobj -4940 0 obj << -/D [4938 0 R /XYZ 71.731 729.265 null] +4963 0 obj << +/D [4961 0 R /XYZ 71.731 729.265 null] >> endobj -4941 0 obj << -/D [4938 0 R /XYZ 71.731 646.476 null] +4964 0 obj << +/D [4961 0 R /XYZ 71.731 646.476 null] >> endobj -4942 0 obj << -/D [4938 0 R /XYZ 71.731 561.729 null] +4965 0 obj << +/D [4961 0 R /XYZ 71.731 561.729 null] >> endobj 1800 0 obj << -/D [4938 0 R /XYZ 71.731 530.844 null] +/D [4961 0 R /XYZ 71.731 530.844 null] >> endobj 922 0 obj << -/D [4938 0 R /XYZ 279.296 487.747 null] +/D [4961 0 R /XYZ 279.296 487.747 null] >> endobj -4943 0 obj << -/D [4938 0 R /XYZ 71.731 475.309 null] +4966 0 obj << +/D [4961 0 R /XYZ 71.731 475.309 null] >> endobj -4944 0 obj << -/D [4938 0 R /XYZ 71.731 433.147 null] +4967 0 obj << +/D [4961 0 R /XYZ 71.731 433.147 null] >> endobj -4945 0 obj << -/D [4938 0 R /XYZ 71.731 365.466 null] +4968 0 obj << +/D [4961 0 R /XYZ 71.731 365.466 null] >> endobj 1801 0 obj << -/D [4938 0 R /XYZ 71.731 321.63 null] +/D [4961 0 R /XYZ 71.731 321.63 null] >> endobj 926 0 obj << -/D [4938 0 R /XYZ 303.224 276.475 null] +/D [4961 0 R /XYZ 303.224 276.475 null] >> endobj -4946 0 obj << -/D [4938 0 R /XYZ 71.731 267.652 null] +4969 0 obj << +/D [4961 0 R /XYZ 71.731 267.652 null] >> endobj -4947 0 obj << -/D [4938 0 R /XYZ 71.731 221.875 null] +4970 0 obj << +/D [4961 0 R /XYZ 71.731 221.875 null] >> endobj 1802 0 obj << -/D [4938 0 R /XYZ 71.731 178.039 null] +/D [4961 0 R /XYZ 71.731 178.039 null] >> endobj 930 0 obj << -/D [4938 0 R /XYZ 394.793 134.942 null] +/D [4961 0 R /XYZ 394.793 134.942 null] >> endobj -4948 0 obj << -/D [4938 0 R /XYZ 71.731 122.504 null] +4971 0 obj << +/D [4961 0 R /XYZ 71.731 122.504 null] >> endobj -4937 0 obj << +4960 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4951 0 obj << -/Length 2502 +4974 0 obj << +/Length 2503 /Filter /FlateDecode >> stream @@ -18717,74 +18835,74 @@ xڍY[ �Ɇ�c���3��жRϔ%�1���%���Uf�{���-\����� ��l�a ���9��������+�����^��l��e���^�^���EiD�Tn"8�<N�$��ã.���`h��D�ꩇ��M�τ�K�XÌZe�R����Qr��k̀A���H#�~�-z�1q��&o�H`]�J�Thz��2����� �ۧ���*��F�.��}eSU\ �b��#j��ˇ+�2�'n��i�i3=@�sPj[�l��\��N�f���X��y��U����u�@�%. �Y��I �i;�r+�)ZU�����6{`KG4�w�Z�%�bʅ{~B�n'���^�� O~�}�9��+�b����@�����fNt��e�{�{��i�hr�� ��[�E*�Z.���a:��)�J��C}�-�.�P \�]LO�s�^u�*~G=�U�[Rh��k5�&%�S#iyír'���,cJ�j5N��������^H�䀢��2�F<�c��<͑� -���TiH�\�p��cl����l�,?��Y-�G9����x�3c�0T��� ��O�օ�(3�������*���+�E���dp*;<><�]�'���$�h�%"���~�z�>�l�?}b�����?�o*0�q���[7��r� D����|�m���+���#0�Wu��t��3Pl��F�#t{D���8�ܦ�@�F�6-u�����/���N ���y`mw�]4�hY=�~��p[�7���\#P@_X`�/�C��W�G�m�ga�ſ�M,wtK��⽕�����?����ه�%endstream +���TiH�\�p��cl����l�,?��Y-�G9����x�3c�0T��� ��O�օ�(3�������*���+�E���dp*;<><�]�'���$�h�%"���~�z�>�l�?}b�����?�o*0�q���[7��r� D����|�m���+���#0�Wu��t��3Pl��F�#t{D���8�ܦ�@�F�6-u�����/���N ���y`mw�]4�hY=�~��p[�7���\#P@_X`�/�C��W�G�m�ga�ſ�M,wtK��⽕B�}����{]��[�endstream endobj -4950 0 obj << +4973 0 obj << /Type /Page -/Contents 4951 0 R -/Resources 4949 0 R +/Contents 4974 0 R +/Resources 4972 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4936 0 R +/Parent 4911 0 R >> endobj -4952 0 obj << -/D [4950 0 R /XYZ 71.731 729.265 null] +4975 0 obj << +/D [4973 0 R /XYZ 71.731 729.265 null] >> endobj -4953 0 obj << -/D [4950 0 R /XYZ 71.731 675.303 null] +4976 0 obj << +/D [4973 0 R /XYZ 71.731 675.303 null] >> endobj 1803 0 obj << -/D [4950 0 R /XYZ 71.731 631.467 null] +/D [4973 0 R /XYZ 71.731 631.467 null] >> endobj 934 0 obj << -/D [4950 0 R /XYZ 182.287 588.37 null] +/D [4973 0 R /XYZ 182.287 588.37 null] >> endobj -4954 0 obj << -/D [4950 0 R /XYZ 71.731 579.547 null] +4977 0 obj << +/D [4973 0 R /XYZ 71.731 579.547 null] >> endobj 1804 0 obj << -/D [4950 0 R /XYZ 71.731 494.915 null] +/D [4973 0 R /XYZ 71.731 494.915 null] >> endobj 938 0 obj << -/D [4950 0 R /XYZ 188.364 451.818 null] +/D [4973 0 R /XYZ 188.364 451.818 null] >> endobj -4955 0 obj << -/D [4950 0 R /XYZ 71.731 442.995 null] +4978 0 obj << +/D [4973 0 R /XYZ 71.731 442.995 null] >> endobj 1805 0 obj << -/D [4950 0 R /XYZ 71.731 384.266 null] +/D [4973 0 R /XYZ 71.731 384.266 null] >> endobj 942 0 obj << -/D [4950 0 R /XYZ 365.182 341.169 null] +/D [4973 0 R /XYZ 365.182 341.169 null] >> endobj -4956 0 obj << -/D [4950 0 R /XYZ 71.731 332.346 null] +4979 0 obj << +/D [4973 0 R /XYZ 71.731 332.346 null] >> endobj -4957 0 obj << -/D [4950 0 R /XYZ 179.356 293.707 null] +4980 0 obj << +/D [4973 0 R /XYZ 179.356 293.707 null] >> endobj -4958 0 obj << -/D [4950 0 R /XYZ 71.731 286.568 null] +4981 0 obj << +/D [4973 0 R /XYZ 71.731 286.568 null] >> endobj 1806 0 obj << -/D [4950 0 R /XYZ 71.731 216.83 null] +/D [4973 0 R /XYZ 71.731 216.83 null] >> endobj 946 0 obj << -/D [4950 0 R /XYZ 433.251 173.732 null] +/D [4973 0 R /XYZ 433.251 173.732 null] >> endobj -4959 0 obj << -/D [4950 0 R /XYZ 71.731 161.561 null] +4982 0 obj << +/D [4973 0 R /XYZ 71.731 161.561 null] >> endobj -4960 0 obj << -/D [4950 0 R /XYZ 71.731 137.065 null] +4983 0 obj << +/D [4973 0 R /XYZ 71.731 137.065 null] >> endobj -4961 0 obj << -/D [4950 0 R /XYZ 71.731 127.102 null] +4984 0 obj << +/D [4973 0 R /XYZ 71.731 127.102 null] >> endobj -4949 0 obj << +4972 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R /F23 1125 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4964 0 obj << +4987 0 obj << /Length 789 /Filter /FlateDecode >> @@ -18793,29 +18911,29 @@ xڕUQo �C�!��ܐ��n@��� �{�z�����?j�)Um�KQS��N<���M֪��b��L�����D�%���m���j��8(�y� İ�XD�=�� GN���p<�n�1&l�/��><!zx���Fݣs%n�^�z��J�#m"���^;j���`�x�Q\CQ�KYo"���@�Bfr��D�X��g�Al���Ѯ���;#6�B��P��4Y� ��i#EGj��סs��Zp:��j+��q�F6gTٵ5 -��½�ᛰ�p� ��le�+"�^�{T^Is�#1q�jM���_��G�Z�Ҡ<�|��BZ�<*�kB��lT?S��su�]�$O��s���[�ݍp��Q��������Lc��8T��Q�v���Q��endstream +��½�ᛰ�p� ��le�+"�^�{T^Is�#1q�jM���_��G�Z�Ҡ<�|��BZ�<*�kB��lT?S��su�]�$O��s���[�ݍp��Q��������Lc��8T��Q�v������endstream endobj -4963 0 obj << +4986 0 obj << /Type /Page -/Contents 4964 0 R -/Resources 4962 0 R +/Contents 4987 0 R +/Resources 4985 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4936 0 R +/Parent 4911 0 R >> endobj -4965 0 obj << -/D [4963 0 R /XYZ 71.731 729.265 null] +4988 0 obj << +/D [4986 0 R /XYZ 71.731 729.265 null] >> endobj -4966 0 obj << -/D [4963 0 R /XYZ 71.731 689.765 null] +4989 0 obj << +/D [4986 0 R /XYZ 71.731 689.765 null] >> endobj -4967 0 obj << -/D [4963 0 R /XYZ 71.731 647.771 null] +4990 0 obj << +/D [4986 0 R /XYZ 71.731 647.771 null] >> endobj -4962 0 obj << +4985 0 obj << /Font << /F33 1230 0 R /F27 1132 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4970 0 obj << +4993 0 obj << /Length 1875 /Filter /FlateDecode >> @@ -18826,190 +18944,190 @@ gkx ��� ��n��Xwi�)�ǧ�^��V��A�l>�r�YpN�y����}Ae2������<��,�DGAz8I��oB�h"+�o�%�G�/����B�wp��렯��r�4]�W�rG�v \�*�ip�:�I��Hcb�I��:҈��w���TZ�ap�W���P;�=���� ��9xM��K�4�uӵ����~������3 W��t� zĵߩr{��*m/I05�bOj ��]X}�!cz?VT��V�. T�����8*�(n��c�zky�/����+,��S|�p9��r�cH��b��:���Y�O Y�c��O1@;h�,ɓg7�u�����1O���_� ��_\�i,*v�x�A -\ƥ���O��?5���?XOWxendstream +\ƥ��q�.�j<_�X�Wzendstream endobj -4969 0 obj << +4992 0 obj << /Type /Page -/Contents 4970 0 R -/Resources 4968 0 R +/Contents 4993 0 R +/Resources 4991 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4936 0 R -/Annots [ 5016 0 R ] +/Parent 5041 0 R +/Annots [ 5039 0 R ] >> endobj -5016 0 obj << +5039 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [375.699 134.004 435.474 142.915] /Subtype /Link /A << /S /GoTo /D (http-apache) >> >> endobj -4971 0 obj << -/D [4969 0 R /XYZ 71.731 729.265 null] +4994 0 obj << +/D [4992 0 R /XYZ 71.731 729.265 null] >> endobj 1807 0 obj << -/D [4969 0 R /XYZ 71.731 718.306 null] +/D [4992 0 R /XYZ 71.731 718.306 null] >> endobj 950 0 obj << -/D [4969 0 R /XYZ 160.355 703.236 null] +/D [4992 0 R /XYZ 160.355 703.236 null] >> endobj -4972 0 obj << -/D [4969 0 R /XYZ 71.731 692.504 null] +4995 0 obj << +/D [4992 0 R /XYZ 71.731 692.504 null] >> endobj 954 0 obj << -/D [4969 0 R /XYZ 208.364 644.101 null] +/D [4992 0 R /XYZ 208.364 644.101 null] >> endobj -3445 0 obj << -/D [4969 0 R /XYZ 71.731 629.175 null] +3457 0 obj << +/D [4992 0 R /XYZ 71.731 629.175 null] >> endobj 958 0 obj << -/D [4969 0 R /XYZ 117.14 620.82 null] +/D [4992 0 R /XYZ 117.14 620.82 null] >> endobj -4973 0 obj << -/D [4969 0 R /XYZ 71.731 615.714 null] +4996 0 obj << +/D [4992 0 R /XYZ 71.731 615.714 null] >> endobj -4974 0 obj << -/D [4969 0 R /XYZ 71.731 610.733 null] +4997 0 obj << +/D [4992 0 R /XYZ 71.731 610.733 null] >> endobj -4975 0 obj << -/D [4969 0 R /XYZ 118.328 584.955 null] +4998 0 obj << +/D [4992 0 R /XYZ 118.328 584.955 null] >> endobj -4976 0 obj << -/D [4969 0 R /XYZ 296.214 572.003 null] +4999 0 obj << +/D [4992 0 R /XYZ 296.214 572.003 null] >> endobj -4977 0 obj << -/D [4969 0 R /XYZ 71.731 536.138 null] +5000 0 obj << +/D [4992 0 R /XYZ 71.731 536.138 null] >> endobj 962 0 obj << -/D [4969 0 R /XYZ 86.646 483.825 null] +/D [4992 0 R /XYZ 86.646 483.825 null] >> endobj -4978 0 obj << -/D [4969 0 R /XYZ 71.731 473.496 null] +5001 0 obj << +/D [4992 0 R /XYZ 71.731 473.496 null] >> endobj 966 0 obj << -/D [4969 0 R /XYZ 107.616 460.544 null] +/D [4992 0 R /XYZ 107.616 460.544 null] >> endobj -4979 0 obj << -/D [4969 0 R /XYZ 71.731 453.501 null] +5002 0 obj << +/D [4992 0 R /XYZ 71.731 453.501 null] >> endobj -4980 0 obj << -/D [4969 0 R /XYZ 71.731 448.519 null] +5003 0 obj << +/D [4992 0 R /XYZ 71.731 448.519 null] >> endobj -4981 0 obj << -/D [4969 0 R /XYZ 256.795 411.727 null] +5004 0 obj << +/D [4992 0 R /XYZ 256.795 411.727 null] >> endobj -4982 0 obj << -/D [4969 0 R /XYZ 392.166 411.727 null] +5005 0 obj << +/D [4992 0 R /XYZ 392.166 411.727 null] >> endobj -4983 0 obj << -/D [4969 0 R /XYZ 71.731 409.57 null] +5006 0 obj << +/D [4992 0 R /XYZ 71.731 409.57 null] >> endobj -4984 0 obj << -/D [4969 0 R /XYZ 71.731 395.623 null] +5007 0 obj << +/D [4992 0 R /XYZ 71.731 395.623 null] >> endobj 970 0 obj << -/D [4969 0 R /XYZ 320.85 382.238 null] +/D [4992 0 R /XYZ 320.85 382.238 null] >> endobj -4985 0 obj << -/D [4969 0 R /XYZ 71.731 369.615 null] +5008 0 obj << +/D [4992 0 R /XYZ 71.731 369.615 null] >> endobj -4986 0 obj << -/D [4969 0 R /XYZ 71.731 369.615 null] +5009 0 obj << +/D [4992 0 R /XYZ 71.731 369.615 null] >> endobj -4987 0 obj << -/D [4969 0 R /XYZ 71.731 369.615 null] +5010 0 obj << +/D [4992 0 R /XYZ 71.731 369.615 null] >> endobj -4988 0 obj << -/D [4969 0 R /XYZ 71.731 357.916 null] +5011 0 obj << +/D [4992 0 R /XYZ 71.731 357.916 null] >> endobj -4989 0 obj << -/D [4969 0 R /XYZ 111.582 341.391 null] +5012 0 obj << +/D [4992 0 R /XYZ 111.582 341.391 null] >> endobj -4990 0 obj << -/D [4969 0 R /XYZ 71.731 329.271 null] +5013 0 obj << +/D [4992 0 R /XYZ 71.731 329.271 null] >> endobj -4991 0 obj << -/D [4969 0 R /XYZ 71.731 329.271 null] +5014 0 obj << +/D [4992 0 R /XYZ 71.731 329.271 null] >> endobj -4992 0 obj << -/D [4969 0 R /XYZ 71.731 329.271 null] +5015 0 obj << +/D [4992 0 R /XYZ 71.731 329.271 null] >> endobj -4993 0 obj << -/D [4969 0 R /XYZ 71.731 317.069 null] +5016 0 obj << +/D [4992 0 R /XYZ 71.731 317.069 null] >> endobj -4994 0 obj << -/D [4969 0 R /XYZ 71.731 317.069 null] +5017 0 obj << +/D [4992 0 R /XYZ 71.731 317.069 null] >> endobj -4995 0 obj << -/D [4969 0 R /XYZ 71.731 317.069 null] +5018 0 obj << +/D [4992 0 R /XYZ 71.731 317.069 null] >> endobj -4996 0 obj << -/D [4969 0 R /XYZ 71.731 304.118 null] +5019 0 obj << +/D [4992 0 R /XYZ 71.731 304.118 null] >> endobj -4997 0 obj << -/D [4969 0 R /XYZ 111.582 287.593 null] +5020 0 obj << +/D [4992 0 R /XYZ 111.582 287.593 null] >> endobj -4998 0 obj << -/D [4969 0 R /XYZ 326.852 274.641 null] +5021 0 obj << +/D [4992 0 R /XYZ 326.852 274.641 null] >> endobj -4999 0 obj << -/D [4969 0 R /XYZ 71.731 262.522 null] +5022 0 obj << +/D [4992 0 R /XYZ 71.731 262.522 null] >> endobj -5000 0 obj << -/D [4969 0 R /XYZ 71.731 262.522 null] +5023 0 obj << +/D [4992 0 R /XYZ 71.731 262.522 null] >> endobj -5001 0 obj << -/D [4969 0 R /XYZ 71.731 262.522 null] +5024 0 obj << +/D [4992 0 R /XYZ 71.731 262.522 null] >> endobj -5002 0 obj << -/D [4969 0 R /XYZ 71.731 250.319 null] +5025 0 obj << +/D [4992 0 R /XYZ 71.731 250.319 null] >> endobj -5003 0 obj << -/D [4969 0 R /XYZ 111.582 233.794 null] +5026 0 obj << +/D [4992 0 R /XYZ 111.582 233.794 null] >> endobj -5004 0 obj << -/D [4969 0 R /XYZ 352.018 233.794 null] +5027 0 obj << +/D [4992 0 R /XYZ 352.018 233.794 null] >> endobj -5005 0 obj << -/D [4969 0 R /XYZ 135.374 220.843 null] +5028 0 obj << +/D [4992 0 R /XYZ 135.374 220.843 null] >> endobj -5006 0 obj << -/D [4969 0 R /XYZ 224.983 220.843 null] +5029 0 obj << +/D [4992 0 R /XYZ 224.983 220.843 null] >> endobj -5007 0 obj << -/D [4969 0 R /XYZ 297.992 220.843 null] +5030 0 obj << +/D [4992 0 R /XYZ 297.992 220.843 null] >> endobj -5008 0 obj << -/D [4969 0 R /XYZ 419.728 220.843 null] +5031 0 obj << +/D [4992 0 R /XYZ 419.728 220.843 null] >> endobj -5009 0 obj << -/D [4969 0 R /XYZ 111.582 207.892 null] +5032 0 obj << +/D [4992 0 R /XYZ 111.582 207.892 null] >> endobj -5010 0 obj << -/D [4969 0 R /XYZ 71.731 196.521 null] +5033 0 obj << +/D [4992 0 R /XYZ 71.731 196.521 null] >> endobj -5011 0 obj << -/D [4969 0 R /XYZ 71.731 196.521 null] +5034 0 obj << +/D [4992 0 R /XYZ 71.731 196.521 null] >> endobj -5012 0 obj << -/D [4969 0 R /XYZ 71.731 196.521 null] +5035 0 obj << +/D [4992 0 R /XYZ 71.731 196.521 null] >> endobj -5013 0 obj << -/D [4969 0 R /XYZ 71.731 183.57 null] +5036 0 obj << +/D [4992 0 R /XYZ 71.731 183.57 null] >> endobj -5014 0 obj << -/D [4969 0 R /XYZ 111.582 167.045 null] +5037 0 obj << +/D [4992 0 R /XYZ 111.582 167.045 null] >> endobj -5015 0 obj << -/D [4969 0 R /XYZ 71.731 146.955 null] +5038 0 obj << +/D [4992 0 R /XYZ 71.731 146.955 null] >> endobj -5017 0 obj << -/D [4969 0 R /XYZ 71.731 113.246 null] +5040 0 obj << +/D [4992 0 R /XYZ 71.731 113.246 null] >> endobj -4968 0 obj << +4991 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F32 1139 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5020 0 obj << +5044 0 obj << /Length 1473 /Filter /FlateDecode >> @@ -19019,146 +19137,146 @@ xڕWM :M/�*�I�<�2�㢈�g� �9��xP�S��{!/!PQ���F&�'�Cgy��F̳�" aT+ݰs�"hP�ɢ^��`�~�|B�Ϟ��6C�'v���^Yk��A]1�f�)h�U��Os�zA{6��4l,��1Ʋ6?�`s�4:��Q���4I�VR�H���8��ܽ 5c�P�--R`�-*v�h�Sއ����0˜����R���TI��ތ�p��>���E�����gݓ� �� �#�Ϭ�u��z�C�a���;�m������䋆�'�=>�����FFw_��p����܄�,�,\����e���IBfhxg��ٴ��B�~�WLB���w@��#Q�M���b5�Qh��X���%;�CK�d3�e��� -�kB�%v�d]�f����v�\��R'7��{JS����i�?��3a#MN�F���I��Gရ�[K�G�N�Z�!�2P�,��4�8��~A���bl��C��>#������<M��ɾ���Lxw��d�H���ɞ�?w�? ������*~���w��#������N��|�n��.qZ�a����JQ�Q�X�%�W��>���@� �_��NM�� �%%j���g���U����6��z�V@�ܞ�@ =.�Y�)6ޱ������33����،=+6�� ?"�f�0.l���v���o�N�X�� �ˋI����K)�96A$���C��/c��6�dendstream +�kB�%v�d]�f����v�\��R'7��{JS����i�?��3a#MN�F���I��Gရ�[K�G�N�Z�!�2P�,��4�8��~A���bl��C��>#������<M��ɾ���Lxw��d�H���ɞ�?w�? ������*~���w��#������N��|�n��.qZ�a����JQ�Q�X�%�W��>���@� �_��NM�� �%%j���g���U����6��z�V@�ܞ�@ =.�Y�)6ޱ������33����،=+6�� ?"�f�0.l���v���o�N�X�� �ˋI����K)�96A$�ȟ�?f_�����fendstream endobj -5019 0 obj << +5043 0 obj << /Type /Page -/Contents 5020 0 R -/Resources 5018 0 R +/Contents 5044 0 R +/Resources 5042 0 R /MediaBox [0 0 609.714 789.041] -/Parent 4936 0 R +/Parent 5041 0 R >> endobj -5021 0 obj << -/D [5019 0 R /XYZ 71.731 729.265 null] +5045 0 obj << +/D [5043 0 R /XYZ 71.731 729.265 null] >> endobj 974 0 obj << -/D [5019 0 R /XYZ 86.646 703.68 null] +/D [5043 0 R /XYZ 86.646 703.68 null] >> endobj -5022 0 obj << -/D [5019 0 R /XYZ 71.731 693.351 null] +5046 0 obj << +/D [5043 0 R /XYZ 71.731 693.351 null] >> endobj 978 0 obj << -/D [5019 0 R /XYZ 91.098 680.4 null] +/D [5043 0 R /XYZ 91.098 680.4 null] >> endobj -5023 0 obj << -/D [5019 0 R /XYZ 71.731 673.202 null] +5047 0 obj << +/D [5043 0 R /XYZ 71.731 673.202 null] >> endobj -5024 0 obj << -/D [5019 0 R /XYZ 71.731 668.22 null] +5048 0 obj << +/D [5043 0 R /XYZ 71.731 668.22 null] >> endobj -5025 0 obj << -/D [5019 0 R /XYZ 101.865 657.485 null] +5049 0 obj << +/D [5043 0 R /XYZ 101.865 657.485 null] >> endobj -5026 0 obj << -/D [5019 0 R /XYZ 236.362 644.534 null] +5050 0 obj << +/D [5043 0 R /XYZ 236.362 644.534 null] >> endobj -5027 0 obj << -/D [5019 0 R /XYZ 284.401 644.534 null] +5051 0 obj << +/D [5043 0 R /XYZ 284.401 644.534 null] >> endobj -5028 0 obj << -/D [5019 0 R /XYZ 71.731 619.129 null] +5052 0 obj << +/D [5043 0 R /XYZ 71.731 619.129 null] >> endobj 982 0 obj << -/D [5019 0 R /XYZ 131.506 606.178 null] +/D [5043 0 R /XYZ 131.506 606.178 null] >> endobj -5029 0 obj << -/D [5019 0 R /XYZ 71.731 598.98 null] +5053 0 obj << +/D [5043 0 R /XYZ 71.731 598.98 null] >> endobj -5030 0 obj << -/D [5019 0 R /XYZ 71.731 593.999 null] +5054 0 obj << +/D [5043 0 R /XYZ 71.731 593.999 null] >> endobj -1929 0 obj << -/D [5019 0 R /XYZ 71.731 544.908 null] +1926 0 obj << +/D [5043 0 R /XYZ 71.731 544.908 null] >> endobj 986 0 obj << -/D [5019 0 R /XYZ 109.927 531.956 null] +/D [5043 0 R /XYZ 109.927 531.956 null] >> endobj -5031 0 obj << -/D [5019 0 R /XYZ 71.731 524.758 null] +5055 0 obj << +/D [5043 0 R /XYZ 71.731 524.758 null] >> endobj -5032 0 obj << -/D [5019 0 R /XYZ 71.731 519.777 null] +5056 0 obj << +/D [5043 0 R /XYZ 71.731 519.777 null] >> endobj -5033 0 obj << -/D [5019 0 R /XYZ 71.731 486.128 null] +5057 0 obj << +/D [5043 0 R /XYZ 71.731 486.128 null] >> endobj 990 0 obj << -/D [5019 0 R /XYZ 86.646 433.815 null] +/D [5043 0 R /XYZ 86.646 433.815 null] >> endobj -1991 0 obj << -/D [5019 0 R /XYZ 71.731 423.228 null] +1988 0 obj << +/D [5043 0 R /XYZ 71.731 423.228 null] >> endobj 994 0 obj << -/D [5019 0 R /XYZ 202.589 410.535 null] +/D [5043 0 R /XYZ 202.589 410.535 null] >> endobj -5034 0 obj << -/D [5019 0 R /XYZ 71.731 403.491 null] +5058 0 obj << +/D [5043 0 R /XYZ 71.731 403.491 null] >> endobj -5035 0 obj << -/D [5019 0 R /XYZ 71.731 398.51 null] +5059 0 obj << +/D [5043 0 R /XYZ 71.731 398.51 null] >> endobj -5036 0 obj << -/D [5019 0 R /XYZ 71.731 398.51 null] +5060 0 obj << +/D [5043 0 R /XYZ 71.731 398.51 null] >> endobj -5037 0 obj << -/D [5019 0 R /XYZ 257.363 374.669 null] +5061 0 obj << +/D [5043 0 R /XYZ 257.363 374.669 null] >> endobj -5038 0 obj << -/D [5019 0 R /XYZ 71.731 349.264 null] +5062 0 obj << +/D [5043 0 R /XYZ 71.731 349.264 null] >> endobj 998 0 obj << -/D [5019 0 R /XYZ 127.073 336.313 null] +/D [5043 0 R /XYZ 127.073 336.313 null] >> endobj -5039 0 obj << -/D [5019 0 R /XYZ 71.731 329.269 null] +5063 0 obj << +/D [5043 0 R /XYZ 71.731 329.269 null] >> endobj -5040 0 obj << -/D [5019 0 R /XYZ 71.731 324.288 null] +5064 0 obj << +/D [5043 0 R /XYZ 71.731 324.288 null] >> endobj -2544 0 obj << -/D [5019 0 R /XYZ 71.731 262.091 null] +2549 0 obj << +/D [5043 0 R /XYZ 71.731 262.091 null] >> endobj 1002 0 obj << -/D [5019 0 R /XYZ 248.655 249.14 null] +/D [5043 0 R /XYZ 248.655 249.14 null] >> endobj -5041 0 obj << -/D [5019 0 R /XYZ 71.731 242.096 null] +5065 0 obj << +/D [5043 0 R /XYZ 71.731 242.096 null] >> endobj -5042 0 obj << -/D [5019 0 R /XYZ 71.731 237.115 null] +5066 0 obj << +/D [5043 0 R /XYZ 71.731 237.115 null] >> endobj -5043 0 obj << -/D [5019 0 R /XYZ 71.731 237.115 null] +5067 0 obj << +/D [5043 0 R /XYZ 71.731 237.115 null] >> endobj -5044 0 obj << -/D [5019 0 R /XYZ 180.012 226.226 null] +5068 0 obj << +/D [5043 0 R /XYZ 180.012 226.226 null] >> endobj -5045 0 obj << -/D [5019 0 R /XYZ 118.495 213.274 null] +5069 0 obj << +/D [5043 0 R /XYZ 118.495 213.274 null] >> endobj -2452 0 obj << -/D [5019 0 R /XYZ 71.731 187.87 null] +2457 0 obj << +/D [5043 0 R /XYZ 71.731 187.87 null] >> endobj -5046 0 obj << -/D [5019 0 R /XYZ 71.731 187.87 null] +5070 0 obj << +/D [5043 0 R /XYZ 71.731 187.87 null] >> endobj 1006 0 obj << -/D [5019 0 R /XYZ 109.39 174.918 null] +/D [5043 0 R /XYZ 109.39 174.918 null] >> endobj -5047 0 obj << -/D [5019 0 R /XYZ 71.731 169.757 null] +5071 0 obj << +/D [5043 0 R /XYZ 71.731 169.757 null] >> endobj -5048 0 obj << -/D [5019 0 R /XYZ 71.731 164.776 null] +5072 0 obj << +/D [5043 0 R /XYZ 71.731 164.776 null] >> endobj -5049 0 obj << -/D [5019 0 R /XYZ 109.568 153.299 null] +5073 0 obj << +/D [5043 0 R /XYZ 109.568 153.299 null] >> endobj -5018 0 obj << -/Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R /F57 2358 0 R /F35 1463 0 R >> +5042 0 obj << +/Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R /F57 2355 0 R /F35 1463 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5052 0 obj << +5076 0 obj << /Length 1537 /Filter /FlateDecode >> @@ -19171,770 +19289,777 @@ xڍ ����Њ��^,+�cBeP�9�~ZQ"�s�<~�옯j$����pG U��XI�z�ҍ��DYOL�-�/{�i������W=E��Hk�`�c J��Q��1 1/o^�\�ן7Ln�AIH��u�K�X;�Ɉg�N��V������n;��0`c�Q�ސ�z�*C�,v��n9V2��k�i�Q�f�bt�"�B�X���i�<@Ȝ�%:����s�#�"�W���/�X��\@�%!�}�8�y��Ң�Z~���4/�i"b��Y��2�9R����H��h� ��R@1�_f"�~����ſa�� ~GoXPv ȏ"���g�`�E)�q����Χ�A$m HY�(gVq�Q��B�"���B3�ڷ5cO�~�>t��d�X� �8M+�Eᛃ �o����$��"��t�[�?%ȣ����k�y�u�x�K�UT�߄����H�����?T�2�>Qz��o���Ѡ��`?���Uj��q�l��|�y�� �- c/�����3�ː=��kg�JTNBA`����,���JjU3펁_îMz�`0��xò�N6^��L}=����z�E;��{���o�V�]��aK�D�(�$1�Zj��i�?��N� |5���W�"��I�injN<`��6���\,�5������*4��;�Y@ ��S��� !STիL;ͽaZ��0K'q���y. -�'���3�~�h�g[���gE.�������4ьc�{���ǩk� �IvO<�l�)�S*^V^�τ��_�[u�1g_u/-�Ãcp���${+*��^��Fn�gendstream +�'���3�~�h�g[���gE.�������4ьc�{���ǩk� �IvO<�l�)�S*^V^�τ��_�[u�1g_u/-�Ãcp���$+*��^��F��iendstream endobj -5051 0 obj << +5075 0 obj << /Type /Page -/Contents 5052 0 R -/Resources 5050 0 R +/Contents 5076 0 R +/Resources 5074 0 R /MediaBox [0 0 609.714 789.041] -/Parent 5078 0 R -/Annots [ 5066 0 R ] +/Parent 5041 0 R +/Annots [ 5090 0 R ] >> endobj -5066 0 obj << +5090 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [221.059 393.303 273.526 401.497] /Subtype /Link /A << /S /GoTo /D (security-webserver-mod-throttle) >> >> endobj -5053 0 obj << -/D [5051 0 R /XYZ 71.731 729.265 null] +5077 0 obj << +/D [5075 0 R /XYZ 71.731 729.265 null] >> endobj -5054 0 obj << -/D [5051 0 R /XYZ 71.731 741.22 null] +5078 0 obj << +/D [5075 0 R /XYZ 71.731 741.22 null] >> endobj -5055 0 obj << -/D [5051 0 R /XYZ 527.567 708.344 null] +5079 0 obj << +/D [5075 0 R /XYZ 527.567 708.344 null] >> endobj -5056 0 obj << -/D [5051 0 R /XYZ 71.731 691.243 null] +5080 0 obj << +/D [5075 0 R /XYZ 71.731 691.243 null] >> endobj -5057 0 obj << -/D [5051 0 R /XYZ 194.722 681.743 null] +5081 0 obj << +/D [5075 0 R /XYZ 194.722 681.743 null] >> endobj -5058 0 obj << -/D [5051 0 R /XYZ 71.731 606.326 null] +5082 0 obj << +/D [5075 0 R /XYZ 71.731 606.326 null] >> endobj 1010 0 obj << -/D [5051 0 R /XYZ 86.646 554.013 null] +/D [5075 0 R /XYZ 86.646 554.013 null] >> endobj -3333 0 obj << -/D [5051 0 R /XYZ 71.731 543.684 null] +3350 0 obj << +/D [5075 0 R /XYZ 71.731 543.684 null] >> endobj 1014 0 obj << -/D [5051 0 R /XYZ 109.927 530.733 null] +/D [5075 0 R /XYZ 109.927 530.733 null] >> endobj -5059 0 obj << -/D [5051 0 R /XYZ 71.731 525.627 null] +5083 0 obj << +/D [5075 0 R /XYZ 71.731 525.627 null] >> endobj -5060 0 obj << -/D [5051 0 R /XYZ 71.731 520.646 null] +5084 0 obj << +/D [5075 0 R /XYZ 71.731 520.646 null] >> endobj -5061 0 obj << -/D [5051 0 R /XYZ 408.876 494.867 null] +5085 0 obj << +/D [5075 0 R /XYZ 408.876 494.867 null] >> endobj -5062 0 obj << -/D [5051 0 R /XYZ 91.656 481.916 null] +5086 0 obj << +/D [5075 0 R /XYZ 91.656 481.916 null] >> endobj -3475 0 obj << -/D [5051 0 R /XYZ 71.731 456.511 null] +3485 0 obj << +/D [5075 0 R /XYZ 71.731 456.511 null] >> endobj 1018 0 obj << -/D [5051 0 R /XYZ 126.336 443.56 null] +/D [5075 0 R /XYZ 126.336 443.56 null] >> endobj -5063 0 obj << -/D [5051 0 R /XYZ 71.731 438.454 null] +5087 0 obj << +/D [5075 0 R /XYZ 71.731 438.454 null] >> endobj -5064 0 obj << -/D [5051 0 R /XYZ 71.731 433.473 null] +5088 0 obj << +/D [5075 0 R /XYZ 71.731 433.473 null] >> endobj -5065 0 obj << -/D [5051 0 R /XYZ 91.656 394.743 null] +5089 0 obj << +/D [5075 0 R /XYZ 91.656 394.743 null] >> endobj -5067 0 obj << -/D [5051 0 R /XYZ 71.731 345.926 null] +5091 0 obj << +/D [5075 0 R /XYZ 71.731 345.926 null] >> endobj 1022 0 obj << -/D [5051 0 R /XYZ 87.803 293.613 null] +/D [5075 0 R /XYZ 87.803 293.613 null] >> endobj -5068 0 obj << -/D [5051 0 R /XYZ 71.731 283.026 null] +5092 0 obj << +/D [5075 0 R /XYZ 71.731 283.026 null] >> endobj 1026 0 obj << -/D [5051 0 R /XYZ 106.959 270.332 null] +/D [5075 0 R /XYZ 106.959 270.332 null] >> endobj -5069 0 obj << -/D [5051 0 R /XYZ 71.731 263.289 null] +5093 0 obj << +/D [5075 0 R /XYZ 71.731 263.289 null] >> endobj -5070 0 obj << -/D [5051 0 R /XYZ 71.731 258.307 null] +5094 0 obj << +/D [5075 0 R /XYZ 71.731 258.307 null] >> endobj -5071 0 obj << -/D [5051 0 R /XYZ 135.305 247.418 null] +5095 0 obj << +/D [5075 0 R /XYZ 135.305 247.418 null] >> endobj -5072 0 obj << -/D [5051 0 R /XYZ 477.105 234.467 null] +5096 0 obj << +/D [5075 0 R /XYZ 477.105 234.467 null] >> endobj -5073 0 obj << -/D [5051 0 R /XYZ 91.656 221.515 null] +5097 0 obj << +/D [5075 0 R /XYZ 91.656 221.515 null] >> endobj -5074 0 obj << -/D [5051 0 R /XYZ 71.731 198.601 null] +5098 0 obj << +/D [5075 0 R /XYZ 71.731 198.601 null] >> endobj 1030 0 obj << -/D [5051 0 R /XYZ 83.217 146.288 null] +/D [5075 0 R /XYZ 83.217 146.288 null] >> endobj -5075 0 obj << -/D [5051 0 R /XYZ 71.731 135.701 null] +5099 0 obj << +/D [5075 0 R /XYZ 71.731 135.701 null] >> endobj 1034 0 obj << -/D [5051 0 R /XYZ 121.773 123.008 null] +/D [5075 0 R /XYZ 121.773 123.008 null] >> endobj -5076 0 obj << -/D [5051 0 R /XYZ 71.731 115.964 null] +5100 0 obj << +/D [5075 0 R /XYZ 71.731 115.964 null] >> endobj -5077 0 obj << -/D [5051 0 R /XYZ 71.731 110.983 null] +5101 0 obj << +/D [5075 0 R /XYZ 71.731 110.983 null] >> endobj -5050 0 obj << -/Font << /F27 1132 0 R /F23 1125 0 R /F44 1925 0 R /F35 1463 0 R /F33 1230 0 R >> +5074 0 obj << +/Font << /F27 1132 0 R /F23 1125 0 R /F44 1922 0 R /F35 1463 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5081 0 obj << +5104 0 obj << /Length 1556 /Filter /FlateDecode >> stream -xڭXKo�6��W�h1-�z�t��M�6z�#Ѷ��襤�_�嗼�=,X�p8��H�O�㓄�D�GdL��$�o��V~��#�c&"�+��H&,K�d~"���f�^ȉXe��ՠ%�8��s���q���+cY,�)�̅d"�Ġ�V�x0]���gs����YL�jڭ�@ ���=W3�@"��Q4���@�`����<NR��8A�2�w�~��MG�eK߾�-v�(�i:k*�tM��@����;Z0+��Z�`�g7 }}�}�����7i�m{Teuw��ڢ�.�@fН�Al�n{�X�Z�|��jD�����(�n��a���1U�@i/2��l[�>��2�.��p�LkS���%�nS��?��/e��("@`Z��� ��MAt��%j��3(��hp&DN�{�a���I��O��h��YQ�0�+m]�pG�`��l��R��Jװ���4-1���pU�]��ʋC��ƀ�I*�Uo�A,��Z��$�Z�}�x��^ -]��i��u�1ŕ�䜅�<�۳UV�O�l.!�.=@�, � ��s����EϜ#�a̲ �lV�K�r�at�Y��L����� �avV��S��(p��o�;@���$�lH�i�2`�`C�<����1LF1����߾2�s.�tX x8�{�U���dW.H�1t��������� b�]�ԁg~�� U�xr)�������Hc -�ok�<#��Q4>��Z',�#�O"���h.�@(�ʨ;�V�Դ�1l���b(�z�~�Xnj�L�(8.�j�� �������6�� -��QuY�ʖ_�3̐Ӷ�Zˮ�64���K�Q&��w�گnʵ��5eӵ�EY}7 �HX������O���Op{�3@��.t��-l�Օ��$CJb(�PBX��9�v~�_~吅Ш T�Qܨ��TTґ����������b�dp�O1*�GYu�U�zH76a|քl1��2߾G� �r�#�~��~+�2�C���x���j<t�CA���_�jz����f��}sNO� ���w'�TE Y��5�=˛�!���Z 7RH�i~��D��æ�3z��x�{����*>��!Q#1/���͔�S�K�Q��S�y\��ǁ�(t�W,G�K*�Į���7m�^������e -&��-��ϛ�\ -BO�t~40db��s��7�{���_:?��o���\���$b$�j��3b9��,��,>�L�3x8|?.UsJ��u)����m��"IU�%�S�v5 پZ��xwr����3n�o/���ŕ[ˠ��ֲ������~�Hx�,-mq��H����̢a���3vO<�����='��܊��-M�,w�ƙ�[��bع#�)^b��h��Թ>ښU�s'�V,}QV�wO�͕�<۴U��R��r�C5�1q>p�'SoM����s�����hvF�I��4(4�p�����q'�H�KgtZ:��J ��C�l��&0x��C��<��rm�P3e�A���lh�FS���j;{���et-���� R�$��KU�? ƺ�,�5�endstream +xڭXKo�6��W�h1-�z�t��M�6z�#Ѷ��襤�_�嗼�=,X�p8o~C�O�㓄�D�GdL��$�o��V~��#�c&"�+��H&,K�d~"���f�^ȉXe��ՠ%�8��s���q���+cY,�)�̅d"�Ġ�V�x0]���gs����YL�jڭ�@ ���=W3�@"��Q4���@�`����<NR��8A�2�w�~��MG�eK߾�-v�(�i:k*�tM��@����;Z0+��Z�`�g7 }}�}�����7i�m{Teuw��ڢ�.�@fН�Al�n{�X�Z�|��jD�����(�n��a���1U�@i/2��l[�>��2�.��p�LkS���%�nS��?��/e��("@`Z��� ��MAt��%j��3(��hp&DN�{�a���I��O��h��YQ�0�+m]�pG�`��l��R��Jװ���4-1���pU�]��ʋC��ƀ�I*�Uo�A,��Z��$�Z�}�x��^ +]��i��u�1ŕ�䜅px�g��N���\B�?\z�DXv +�-<�, ����9?F�ØeA�٬�ܗV�v�芳� ��/�7f7V2���j��p�������h�Y��,��!u��Ȁ%�9l1�L�z��0�4��?�.� ι��a���4�-V��]� ��Х����^ +Hf��IvR�� ��Ty�ɥ ��w�O#�Q(�����4�DD K��L�;B�8aA��)<����0���*����ʚ�V=��v�Y�_����M� ���Y �����ٛ����UA�6U�U�l�9�9m�����nC#��D�Aa��p�n�S��M����l���(��� K3�}*��o���G>�.@�B7��6]]9��H2�$�r%�%��c� o�=��{(�,���@5ō�+J�A%�lD�ևݕl0�!&N�1���r|�U�^U��t�!���[L�q��̷o�"H��H�_����o�Sf�q(��q_�����~h ��:��^M��q3�,<T�on��C�$�p1��s�@U��Y�Q��Y���,�ԟ@+�F +�?��Җh�x(�G��Op����\�'5?$j$�u��2�b� �a);��z�<�;}�q�6C +����Q钊7��y=�Mۯ�͞6^�,C�d���|�yӓKA�ɓΏ�L��c;@{S��y[�����}|C�%����$ �U۷�˙�g^e��f*������q�S���K�/d�nI�Z,YH�괫i������Ż���.�ϸ�X.Wn-�ړ[�Ңp3Ͽ��#�q����M�#e�O��Z0��9X�{�`?�o������:p+^��4m��mgVo���a�Z�R�6�"��h��Թ>ښU�s��+��(��;�'��{�m�*|q@��r��j�c�|�$�O�ޚFS��s�����hvF�I��4(4�p�����qP$�%�3��*�R��;[�� ^1��+�(�\�#����<��c�ڿ�Ô�<�z�=���2��FPr��)h���c]�.h5�endstream endobj -5080 0 obj << +5103 0 obj << /Type /Page -/Contents 5081 0 R -/Resources 5079 0 R +/Contents 5104 0 R +/Resources 5102 0 R /MediaBox [0 0 609.714 789.041] -/Parent 5078 0 R -/Annots [ 5093 0 R 5109 0 R ] +/Parent 5041 0 R +/Annots [ 5116 0 R 5132 0 R ] >> endobj -5093 0 obj << +5116 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [222.931 489.622 255.658 498.533] /Subtype /Link /A << /S /GoTo /D (gloss-rdbms) >> >> endobj -5109 0 obj << +5132 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [342.364 349.149 387.195 358.06] /Subtype /Link /A << /S /GoTo /D (security-mysql) >> >> endobj -5082 0 obj << -/D [5080 0 R /XYZ 71.731 729.265 null] +5105 0 obj << +/D [5103 0 R /XYZ 71.731 729.265 null] >> endobj 1038 0 obj << -/D [5080 0 R /XYZ 88.939 651.05 null] +/D [5103 0 R /XYZ 88.939 651.05 null] >> endobj -4469 0 obj << -/D [5080 0 R /XYZ 71.731 640.72 null] +4479 0 obj << +/D [5103 0 R /XYZ 71.731 640.72 null] >> endobj 1042 0 obj << -/D [5080 0 R /XYZ 193.573 627.769 null] +/D [5103 0 R /XYZ 193.573 627.769 null] >> endobj -5083 0 obj << -/D [5080 0 R /XYZ 71.731 620.571 null] +5106 0 obj << +/D [5103 0 R /XYZ 71.731 620.571 null] >> endobj -5084 0 obj << -/D [5080 0 R /XYZ 71.731 615.59 null] +5107 0 obj << +/D [5103 0 R /XYZ 71.731 615.59 null] >> endobj -5085 0 obj << -/D [5080 0 R /XYZ 487.065 604.855 null] +5108 0 obj << +/D [5103 0 R /XYZ 487.065 604.855 null] >> endobj -5086 0 obj << -/D [5080 0 R /XYZ 91.656 566 null] +5109 0 obj << +/D [5103 0 R /XYZ 91.656 566 null] >> endobj -5087 0 obj << -/D [5080 0 R /XYZ 364.962 566 null] +5110 0 obj << +/D [5103 0 R /XYZ 364.962 566 null] >> endobj -5088 0 obj << -/D [5080 0 R /XYZ 478.805 566 null] +5111 0 obj << +/D [5103 0 R /XYZ 478.805 566 null] >> endobj -5089 0 obj << -/D [5080 0 R /XYZ 154.739 553.049 null] +5112 0 obj << +/D [5103 0 R /XYZ 154.739 553.049 null] >> endobj -5090 0 obj << -/D [5080 0 R /XYZ 71.731 527.644 null] +5113 0 obj << +/D [5103 0 R /XYZ 71.731 527.644 null] >> endobj 1046 0 obj << -/D [5080 0 R /XYZ 106.052 514.693 null] +/D [5103 0 R /XYZ 106.052 514.693 null] >> endobj -5091 0 obj << -/D [5080 0 R /XYZ 71.731 507.649 null] +5114 0 obj << +/D [5103 0 R /XYZ 71.731 507.649 null] >> endobj -5092 0 obj << -/D [5080 0 R /XYZ 71.731 502.668 null] +5115 0 obj << +/D [5103 0 R /XYZ 71.731 502.668 null] >> endobj -5094 0 obj << -/D [5080 0 R /XYZ 444.255 491.779 null] +5117 0 obj << +/D [5103 0 R /XYZ 444.255 491.779 null] >> endobj -5095 0 obj << -/D [5080 0 R /XYZ 71.731 476.671 null] +5118 0 obj << +/D [5103 0 R /XYZ 71.731 476.671 null] >> endobj -5096 0 obj << -/D [5080 0 R /XYZ 71.731 461.727 null] +5119 0 obj << +/D [5103 0 R /XYZ 71.731 461.727 null] >> endobj -5097 0 obj << -/D [5080 0 R /XYZ 71.731 461.727 null] +5120 0 obj << +/D [5103 0 R /XYZ 71.731 461.727 null] >> endobj -5098 0 obj << -/D [5080 0 R /XYZ 71.731 448.775 null] +5121 0 obj << +/D [5103 0 R /XYZ 71.731 448.775 null] >> endobj -5099 0 obj << -/D [5080 0 R /XYZ 111.582 432.999 null] +5122 0 obj << +/D [5103 0 R /XYZ 111.582 432.999 null] >> endobj -5100 0 obj << -/D [5080 0 R /XYZ 71.731 420.88 null] +5123 0 obj << +/D [5103 0 R /XYZ 71.731 420.88 null] >> endobj -5101 0 obj << -/D [5080 0 R /XYZ 71.731 420.88 null] +5124 0 obj << +/D [5103 0 R /XYZ 71.731 420.88 null] >> endobj -5102 0 obj << -/D [5080 0 R /XYZ 71.731 407.928 null] +5125 0 obj << +/D [5103 0 R /XYZ 71.731 407.928 null] >> endobj -5103 0 obj << -/D [5080 0 R /XYZ 111.582 392.152 null] +5126 0 obj << +/D [5103 0 R /XYZ 111.582 392.152 null] >> endobj -5104 0 obj << -/D [5080 0 R /XYZ 315.276 392.152 null] +5127 0 obj << +/D [5103 0 R /XYZ 315.276 392.152 null] >> endobj -5105 0 obj << -/D [5080 0 R /XYZ 71.731 380.033 null] +5128 0 obj << +/D [5103 0 R /XYZ 71.731 380.033 null] >> endobj -5106 0 obj << -/D [5080 0 R /XYZ 71.731 380.033 null] +5129 0 obj << +/D [5103 0 R /XYZ 71.731 380.033 null] >> endobj -5107 0 obj << -/D [5080 0 R /XYZ 71.731 367.082 null] +5130 0 obj << +/D [5103 0 R /XYZ 71.731 367.082 null] >> endobj -5108 0 obj << -/D [5080 0 R /XYZ 111.582 351.306 null] +5131 0 obj << +/D [5103 0 R /XYZ 111.582 351.306 null] >> endobj -5110 0 obj << -/D [5080 0 R /XYZ 71.731 328.392 null] +5133 0 obj << +/D [5103 0 R /XYZ 71.731 328.392 null] >> endobj 1050 0 obj << -/D [5080 0 R /XYZ 85.51 276.079 null] +/D [5103 0 R /XYZ 85.51 276.079 null] >> endobj -2511 0 obj << -/D [5080 0 R /XYZ 71.731 265.749 null] +2514 0 obj << +/D [5103 0 R /XYZ 71.731 265.749 null] >> endobj 1054 0 obj << -/D [5080 0 R /XYZ 176.696 252.798 null] +/D [5103 0 R /XYZ 176.696 252.798 null] >> endobj -5111 0 obj << -/D [5080 0 R /XYZ 71.731 245.6 null] +5134 0 obj << +/D [5103 0 R /XYZ 71.731 245.6 null] >> endobj -5112 0 obj << -/D [5080 0 R /XYZ 71.731 240.619 null] +5135 0 obj << +/D [5103 0 R /XYZ 71.731 240.619 null] >> endobj -5113 0 obj << -/D [5080 0 R /XYZ 71.731 240.619 null] +5136 0 obj << +/D [5103 0 R /XYZ 71.731 240.619 null] >> endobj -2887 0 obj << -/D [5080 0 R /XYZ 71.731 204.479 null] +2885 0 obj << +/D [5103 0 R /XYZ 71.731 204.479 null] >> endobj 1058 0 obj << -/D [5080 0 R /XYZ 109.17 191.528 null] +/D [5103 0 R /XYZ 109.17 191.528 null] >> endobj -5114 0 obj << -/D [5080 0 R /XYZ 71.731 186.422 null] +5137 0 obj << +/D [5103 0 R /XYZ 71.731 186.422 null] >> endobj -5115 0 obj << -/D [5080 0 R /XYZ 71.731 181.441 null] +5138 0 obj << +/D [5103 0 R /XYZ 71.731 181.441 null] >> endobj -5079 0 obj << +5102 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F35 1463 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5119 0 obj << -/Length 1294 +5142 0 obj << +/Length 1293 /Filter /FlateDecode >> stream -xڍ�n�6�=_a`/`3�X����m�n��$��h��$ -$U7����C�Jb�A���xn:&^D�/�1ۦp$K6٢쮢E �߮b/��lX�%�_`��tˊ<]�fnwW�wI�(X�I���H��t�^���aB�Ώ�Ax{�J��*IX���Ɔ�4]G-�=!�':��Z{��0�KB?� IC'�C�0:���}+�4hUk���y-����{5����_�(���/����,�.������1��UC�1`�[�-��BHD�R��ʾ&t�/Q��lCݕF�{y6�S���h���@��3���^�sݩ����=0�0ɂ�Єb��:��NZ'O�Ϣ�]���,"��|Ǩ�Y�Sor��Wn���l[��lҌm���^_�!������IJ�N��m�����m��9c hG]�'��-#IY�S�7o*�/I�������zK��9��<�� C�giA�i�������� 7ƌ���@�h{:;e����0zҬ����V%�[���:����.��,p+Uo.}a�$��H����; ��H����"��!*{�� -�p�Z��%j'�5���Ǝ���|r]y�^@��3����jI�i^�u��{��֨=ZC�k�4��:�e�%��X�˯�9_ka�]�����DŜS⡙�I��`+�����V,��f4�fA/��R��yT��S -������M�!�}��>���bWM�0몇�uՃh]]q� -�<x�-��F����=ǜCm���� ��'cE�����������ړ-�:�����7����n��.�mç���_�=|��ٞ^גy~u�sr>ꅎS4��f��&�,`�S~�2)l�l�_�8\.?|�Tѿ7�3Π�[x^P�6�I1{�$��Gl4X�t적�;@�^�l yq�=�H�U9�G���_ܚ��ï����J����3���*�j�۵�<̢� W��\�o��ǟU�#�V(�o�oʺ��Yo�5���6�[�y���fZ�N�z�ʒ���{����NuC��jt��|ZYb"��F+��O}�_�E�>�9�7Bc0��]�3�5 �j���몦#i��~���fB%L.��%|����jU}҃���{��9�e ����^EH�IyS�10ա�iH:��=���w�=)#��~/�G��=PNaI�ˌ�%�I�n�_�����G7ð�5�4����ǭWv�����s��ۋ|/�:�������A�Fi1i���8{ij�Oᵭ���R�endstream +xڍ�n�6�=_a`/2`3�X����m�n��$��h��$ +$U7����C�Jb�A���xn:&Z��-v�%p�9���h��E�߮"/��nY���_`��d��,Y�gn�W�wq��Y�M��d$�X��,��?��eB7������,��u�<"�;��]��d���Vt�����k����Y�Y�M8H:9Z,����+?4�H�V��-! 嬨W��ћ��Wck� :�%c���B�� K��� i����S��\G0�����r ��Sh�[�U����%LC35a衻R�b�!�bu +@2Z�P�Ȳs&�p��kp�;���z����$4���OZ{ـ�Q����Y��������3���C2+�M¢mW���P��M�_�M��]��b��k9d����X��i�m���u��]�C5�,���~��lAq��¸�yS����~7�6;"\�)���n�<KL��%��L|�T\H�1fм+*`D����*��7\/�,�F��hO�(<�*~�oX��Q}+:S��e +.��JՙK_*����$��?D��NCh4���z)��):��/���]��Ca�� +a�e'ۡ%!c!�\��w�/e߃ZF��Z��n�����1�B�V��& �<��p�s ��O�y�Ճ3�+-�!�k 8�����sJ<4��4H6�(*P�h��[���`tbL+U̜GUI�;0��_ +���0�DS��N~�S{�/v�� ��z�YW=���ǯ�˂���[na�8��q�9�� +_��{|2V�o�I<K`�l^�����0�pC���N~��\��|�n��5��i����q-��W7�1G��^�8EN�q�*l�e��uʧ/��fN�>�Հ������K�{c>��@�����% +hNʈ�� �%�?b���u�+`���� + �E ɋ�iGz��?e�u��֬�����a��`�����u��P:TV۶��a�>'��b}c�?���q�BI��xS��dOsx�lpŕ��� +̂��Ą7�uj�aVV���<(e�V���Z�V�[G��}���]G4Z�9|�#���.R��7�Y��a��k�i�IPT{�<O_W5� I�-��V�#"(`r�T �=�O�l�T��I���I����>L�{!'�M���T�&�!����w���=��0�Hwȇ��-&�@�(�Kȓ�ʿ���� n�a�k:i����[7�>����o2�E��|/�>�������ƶ�Q E����^���iR�endstream endobj -5118 0 obj << +5141 0 obj << /Type /Page -/Contents 5119 0 R -/Resources 5117 0 R +/Contents 5142 0 R +/Resources 5140 0 R /MediaBox [0 0 609.714 789.041] -/Parent 5078 0 R +/Parent 5041 0 R >> endobj -5120 0 obj << -/D [5118 0 R /XYZ 71.731 729.265 null] +5143 0 obj << +/D [5141 0 R /XYZ 71.731 729.265 null] >> endobj -5121 0 obj << -/D [5118 0 R /XYZ 71.731 718.306 null] +5144 0 obj << +/D [5141 0 R /XYZ 71.731 718.306 null] >> endobj 1062 0 obj << -/D [5118 0 R /XYZ 90.261 708.344 null] +/D [5141 0 R /XYZ 90.261 708.344 null] >> endobj -5122 0 obj << -/D [5118 0 R /XYZ 71.731 703.238 null] +5145 0 obj << +/D [5141 0 R /XYZ 71.731 703.238 null] >> endobj -5123 0 obj << -/D [5118 0 R /XYZ 71.731 698.257 null] +5146 0 obj << +/D [5141 0 R /XYZ 71.731 698.257 null] >> endobj -5124 0 obj << -/D [5118 0 R /XYZ 134.824 659.527 null] +5147 0 obj << +/D [5141 0 R /XYZ 134.824 659.527 null] >> endobj -5125 0 obj << -/D [5118 0 R /XYZ 71.731 636.613 null] +5148 0 obj << +/D [5141 0 R /XYZ 71.731 636.613 null] >> endobj 1066 0 obj << -/D [5118 0 R /XYZ 87.803 584.3 null] +/D [5141 0 R /XYZ 87.803 584.3 null] >> endobj -5126 0 obj << -/D [5118 0 R /XYZ 71.731 572.897 null] +5149 0 obj << +/D [5141 0 R /XYZ 71.731 572.897 null] >> endobj 1070 0 obj << -/D [5118 0 R /XYZ 86.675 561.019 null] +/D [5141 0 R /XYZ 86.675 561.019 null] >> endobj -5127 0 obj << -/D [5118 0 R /XYZ 71.731 555.52 null] +5150 0 obj << +/D [5141 0 R /XYZ 71.731 555.52 null] >> endobj -5128 0 obj << -/D [5118 0 R /XYZ 71.731 550.539 null] +5151 0 obj << +/D [5141 0 R /XYZ 71.731 550.539 null] >> endobj -5129 0 obj << -/D [5118 0 R /XYZ 71.731 550.539 null] +5152 0 obj << +/D [5141 0 R /XYZ 71.731 550.539 null] >> endobj -5130 0 obj << -/D [5118 0 R /XYZ 119.841 538.105 null] +5153 0 obj << +/D [5141 0 R /XYZ 119.841 538.105 null] >> endobj -5131 0 obj << -/D [5118 0 R /XYZ 167.644 538.105 null] +5154 0 obj << +/D [5141 0 R /XYZ 167.644 538.105 null] >> endobj -5132 0 obj << -/D [5118 0 R /XYZ 249.411 538.105 null] +5155 0 obj << +/D [5141 0 R /XYZ 249.411 538.105 null] >> endobj -5133 0 obj << -/D [5118 0 R /XYZ 442.122 512.202 null] +5156 0 obj << +/D [5141 0 R /XYZ 442.122 512.202 null] >> endobj -5134 0 obj << -/D [5118 0 R /XYZ 71.731 476.337 null] +5157 0 obj << +/D [5141 0 R /XYZ 71.731 476.337 null] >> endobj 1074 0 obj << -/D [5118 0 R /XYZ 86.646 424.024 null] +/D [5141 0 R /XYZ 86.646 424.024 null] >> endobj -5116 0 obj << -/D [5118 0 R /XYZ 71.731 413.695 null] +5139 0 obj << +/D [5141 0 R /XYZ 71.731 413.695 null] >> endobj 1078 0 obj << -/D [5118 0 R /XYZ 269.378 400.743 null] +/D [5141 0 R /XYZ 269.378 400.743 null] >> endobj -5135 0 obj << -/D [5118 0 R /XYZ 71.731 393.545 null] +5158 0 obj << +/D [5141 0 R /XYZ 71.731 393.545 null] >> endobj -5136 0 obj << -/D [5118 0 R /XYZ 71.731 388.564 null] +5159 0 obj << +/D [5141 0 R /XYZ 71.731 388.564 null] >> endobj -5137 0 obj << -/D [5118 0 R /XYZ 71.731 339.473 null] +5160 0 obj << +/D [5141 0 R /XYZ 71.731 339.473 null] >> endobj 1082 0 obj << -/D [5118 0 R /XYZ 165.299 326.522 null] +/D [5141 0 R /XYZ 165.299 326.522 null] >> endobj -5138 0 obj << -/D [5118 0 R /XYZ 71.731 319.324 null] +5161 0 obj << +/D [5141 0 R /XYZ 71.731 319.324 null] >> endobj -5139 0 obj << -/D [5118 0 R /XYZ 71.731 314.342 null] +5162 0 obj << +/D [5141 0 R /XYZ 71.731 314.342 null] >> endobj -5140 0 obj << -/D [5118 0 R /XYZ 476.554 303.607 null] +5163 0 obj << +/D [5141 0 R /XYZ 476.554 303.607 null] >> endobj -5141 0 obj << -/D [5118 0 R /XYZ 71.731 267.742 null] +5164 0 obj << +/D [5141 0 R /XYZ 71.731 267.742 null] >> endobj 1086 0 obj << -/D [5118 0 R /XYZ 85.51 215.429 null] +/D [5141 0 R /XYZ 85.51 215.429 null] >> endobj -3334 0 obj << -/D [5118 0 R /XYZ 71.731 204.842 null] +3351 0 obj << +/D [5141 0 R /XYZ 71.731 204.842 null] >> endobj 1090 0 obj << -/D [5118 0 R /XYZ 107.277 192.148 null] +/D [5141 0 R /XYZ 107.277 192.148 null] >> endobj -5142 0 obj << -/D [5118 0 R /XYZ 71.731 187.043 null] +5165 0 obj << +/D [5141 0 R /XYZ 71.731 187.043 null] >> endobj -5143 0 obj << -/D [5118 0 R /XYZ 71.731 182.061 null] +5166 0 obj << +/D [5141 0 R /XYZ 71.731 182.061 null] >> endobj -5144 0 obj << -/D [5118 0 R /XYZ 382.967 156.283 null] +5167 0 obj << +/D [5141 0 R /XYZ 382.967 156.283 null] >> endobj -5117 0 obj << +5140 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5147 0 obj << +5170 0 obj << /Length 1983 /Filter /FlateDecode >> stream -xڍ]��6�=���K���Y�dI��%w �����m�@˴Ŭ,�D���w�3��] X�C����,6�,�$.RXD�m��ϯ6���{�0E���"��9\�iWe�X�^x�{���D���j�.vljɦ��,[��E?�{�a���{ ,�� @"_����dF�N�Ed���2:����H�9�Nuj����� �DZ�{?��4ʓ�kYL�o%]��ѹF"����e�G�����Y&y�>0�� -џ�� -UC�Pl� -����͆��,u�^&QG���dz�ӆQ{i����}@֦Nn�U�[�$Ә#���lxhE(�(�h$�]c�1|��G@Y7�7W%�8}F�4��CiI�f� �u+��f)��I DZ%��=S��pI�<N��!�_����[!�B[z��n{��z?8��t�mh�oY����@Y!���� �Z݀�f��������a��f�R��D�Ι ��P�����iw1#�ˁ�!��;�M��O�v�JuL�1?�N�^3�%�{�{�Z�^�on4��7�H+� -����B0 -�5�_W�`�[�p�g3r�@e�x�W�P2�<!(�n���di,ʄ ����`�d)�]�уn!�M���4Mϔ�ɿP&�,��=I���ƚ�N���ػ���F�O� ��x�阈ԫ�l�{�P*tx��X�i��=-�͕�.���Ukz�n�h�6xL"C�����K[����WL��d�?�?A6�u�����[��cǑ���@�������~��j�X�n�-���u�H�{Y����R�O�u�J���j,�� ����#!S��U�����p�B�I{{O�(1�`��^�Ԉ5���@Ŗ܆/��S���S~&��|���'Џ�k�y�������"vX\��᪺F��9Q���#�>Du�_����)����Bƴ�~o��LU����9�e9��W��* �^�-0�C��5�P+"���{v%lC_���X�tˉ�#���/3P�;P{�+�>@�t��fd8�s�?��ѽ<h�g@���/C5�7h ���LK��ޫWTT�a%c�)E�#l7K��P�jJ9��cT����q@Β�H"ެ͑zK�7����Eo����|��_�~����|E5��cN��wjҗ`�y��5�>�a���8�m�^^����f�Ň#��\�6�p�����C$g;3=z�y�tu��n<��G5\��<���w�H��r�y��ԩ��K({�����ZȠU��<5���s����ŕR��p39���d��EÓ�"��I�����Yk*�JZ7���kq��G� -��qL�� ����#��V�+HЏ��Z�ɥSN�����<"2Jcjg������K`�Z�� -j�����pm���&�fi��t0L�����eSD���B����D�~� A>$pE�"�/q��F��y���#�:~�;����(��_����Mt�qs7֠䗵�M�ύ�{�N��&����e���X8v��`��a�쒚����-c&����l$9�@\��{��g6��r� ����͊4������� l���O��lh��f��|��n�hc�ݲ��B{��F,���=��/0��qz:0��~ ��g�ÃVS.�pf�� ,��A|M�*����]_�)MsS���A���F�`�Shf�s�n�&�d�/ڴ��<��+Ci�?�*.�GC���VӨ�,'�+��t%����X��Ȱʎ�����7Ҧ�,:��N��2/�qЪ;����f%���%D��_����d��w\�5�Ϣ�6;�p��ߛ<�Nn�$��}��φ�Asl��ׁ�i�E9l(n�W�(nd����Y�{�������^�{7���?�ee\&���٘b}%��6�a -)E^�b�}�*�`��ן��G�endstream +xڍ]��6�=���K����ӒڧK�\��P)��h�YYԉT7ί�g(˻.,����9^E���8,RX�*Lv��>��V'8y�*f�l��<���6O��*��v���|���*�v�j��De�f�j������������%�j�$a/���}c.�� �!Iҟ�@� a��^��S�%#��8 t�џ&q�p-���(����':�JB�U�^�y���&�0�u��� ߔ��deoԡ��"j�B`CT�,E��E=�Y�� +���������U�Qa���N�GֺNv�M� +d7V +��GZ�Q�ІPdQ�� +�I��X��2i��4v~o�J�T�ꌄi���,��a����n?�u�Or<N�t쉐� ]�K��a�����r/P�]�K�P��$���A.�>�NFt9;���[��G��?PV�������"�B+��A�l��|W�8���(��?)4QR�K&�e��乄D�G��x�]�D�b�s�F�'ڠI��iT�B\ɞ�{��!�K�+&@9��D��c/}/:ћ�э&�u�B@i%Q8�F/�PN3��u�v�u w�0 � +T�$ +wy����%���"E��ts���I&e��B��r�Wye�:�x��/*M�3epr/���C{vO�o��T3�I��B���{7��ڨ�i���=��9b�m��`ϚcJ��?h�<�>ڧu]Y@�J0ځ����\��ѭ���&� dH7Cќ9ik9X�`~�ix��A���'�F��Rq��C��q�9�3���~�53�;��Z�����"�^X���t/�r-��,M�7���:A��3Y��D2��$d��0������.^<)g��%F���8(���Vp�ؑ��E>jU�>c��x�X�Ow|��Q~8�0�>9�6�`����o8�5��<���C$�M�2�TMa�w�Һ��{��g�:�o�h}��/�ɷ��TTau����� l���Z��G5�+a��ߦx��:ND@�8U�~���}C��l����[mڍ��!��^}" 0,��;y.кπr1�9_�jFh ���LC�r�ީWTT�a%c�)E�%l�H��P��$J9��cT�����q@.��HIm͑zK�6����ŠG����|�v_�~����]Eդ��O��wjҗ`�x��5>N~��8i�m� ^N����f�Ņ#�,�\��7�p�����C$g;3=:�y��u��n<��'9^ֻ<��s��r�y��Թ�v�K({�����Ƞ���<5���[�s�����ŕR��0���f6| �ߡ���$wq�����Ek*b�JZ7�$��V�`� +Ð��Ax� �GF��6W���5�p�K��9Eg�n����(��[ª�a.#W�N�.� kE�+�1���;,µu���������0�u��k����a�n ":��ɴ���݊4��!���u�B�Ǟt��e�P��*C�<P�z�� +;kп�i��X��_�vr7]>�b�;��Q���e��^�X8� +��`��a�쒚����-cZ&1�쟠l$9̭@\��{��g6t�r������͊4������1l���O!�lh�sf��|/n�hc���J�-������X.[1~{��+0��i~�31�}~%ثϒ-���\��WW7��� AX������UH��{W���zS����<;� +�r7��*2"��$.����v�Nm8�_�iI?yh�V���U\����-��Q��sY�7t�?�Jj���j19�a��:k6�+zo�M-Xt��-#.�(�a^,�d�t��f%���%D��_����d��w\�5�͢�6;�p��ߛ<��n�8�}�����Asl��מ�i�EZl(n�WaR��;ų��G]�������~�� �ʰ�����1��J�~e[�l��$���͊q������%�?�wG�endstream endobj -5146 0 obj << +5169 0 obj << /Type /Page -/Contents 5147 0 R -/Resources 5145 0 R +/Contents 5170 0 R +/Resources 5168 0 R /MediaBox [0 0 609.714 789.041] -/Parent 5078 0 R +/Parent 5041 0 R >> endobj -5148 0 obj << -/D [5146 0 R /XYZ 71.731 729.265 null] +5171 0 obj << +/D [5169 0 R /XYZ 71.731 729.265 null] >> endobj -5149 0 obj << -/D [5146 0 R /XYZ 71.731 718.306 null] +5172 0 obj << +/D [5169 0 R /XYZ 71.731 718.306 null] >> endobj -5150 0 obj << -/D [5146 0 R /XYZ 71.731 718.306 null] +5173 0 obj << +/D [5169 0 R /XYZ 71.731 718.306 null] >> endobj 1094 0 obj << -/D [5146 0 R /XYZ 103.282 708.344 null] +/D [5169 0 R /XYZ 103.282 708.344 null] >> endobj -5151 0 obj << -/D [5146 0 R /XYZ 71.731 703.238 null] +5174 0 obj << +/D [5169 0 R /XYZ 71.731 703.238 null] >> endobj -5152 0 obj << -/D [5146 0 R /XYZ 71.731 698.257 null] +5175 0 obj << +/D [5169 0 R /XYZ 71.731 698.257 null] >> endobj -5153 0 obj << -/D [5146 0 R /XYZ 71.731 698.257 null] +5176 0 obj << +/D [5169 0 R /XYZ 71.731 698.257 null] >> endobj -5154 0 obj << -/D [5146 0 R /XYZ 166.836 685.43 null] +5177 0 obj << +/D [5169 0 R /XYZ 166.836 685.43 null] >> endobj -5155 0 obj << -/D [5146 0 R /XYZ 408.475 672.478 null] +5178 0 obj << +/D [5169 0 R /XYZ 408.475 672.478 null] >> endobj -5156 0 obj << -/D [5146 0 R /XYZ 243.467 659.527 null] +5179 0 obj << +/D [5169 0 R /XYZ 243.467 659.527 null] >> endobj -5157 0 obj << -/D [5146 0 R /XYZ 246.801 659.527 null] +5180 0 obj << +/D [5169 0 R /XYZ 246.801 659.527 null] >> endobj -5158 0 obj << -/D [5146 0 R /XYZ 298.91 659.527 null] +5181 0 obj << +/D [5169 0 R /XYZ 298.91 659.527 null] >> endobj -5159 0 obj << -/D [5146 0 R /XYZ 448.559 659.527 null] +5182 0 obj << +/D [5169 0 R /XYZ 448.559 659.527 null] >> endobj -5160 0 obj << -/D [5146 0 R /XYZ 164.884 646.575 null] +5183 0 obj << +/D [5169 0 R /XYZ 164.884 646.575 null] >> endobj -5161 0 obj << -/D [5146 0 R /XYZ 481.157 646.575 null] +5184 0 obj << +/D [5169 0 R /XYZ 481.157 646.575 null] >> endobj -5162 0 obj << -/D [5146 0 R /XYZ 132.363 633.624 null] +5185 0 obj << +/D [5169 0 R /XYZ 132.363 633.624 null] >> endobj -5163 0 obj << -/D [5146 0 R /XYZ 71.731 610.71 null] +5186 0 obj << +/D [5169 0 R /XYZ 71.731 610.71 null] >> endobj 1098 0 obj << -/D [5146 0 R /XYZ 84.353 558.397 null] +/D [5169 0 R /XYZ 84.353 558.397 null] >> endobj -5164 0 obj << -/D [5146 0 R /XYZ 71.731 548.068 null] +5187 0 obj << +/D [5169 0 R /XYZ 71.731 548.068 null] >> endobj 1102 0 obj << -/D [5146 0 R /XYZ 150.047 535.116 null] +/D [5169 0 R /XYZ 150.047 535.116 null] >> endobj -5165 0 obj << -/D [5146 0 R /XYZ 71.731 527.918 null] +5188 0 obj << +/D [5169 0 R /XYZ 71.731 527.918 null] >> endobj -5166 0 obj << -/D [5146 0 R /XYZ 71.731 522.937 null] +5189 0 obj << +/D [5169 0 R /XYZ 71.731 522.937 null] >> endobj -5167 0 obj << -/D [5146 0 R /XYZ 192.963 499.251 null] +5190 0 obj << +/D [5169 0 R /XYZ 192.963 499.251 null] >> endobj -5168 0 obj << -/D [5146 0 R /XYZ 71.731 447.943 null] +5191 0 obj << +/D [5169 0 R /XYZ 71.731 447.943 null] >> endobj 1106 0 obj << -/D [5146 0 R /XYZ 193.264 434.992 null] +/D [5169 0 R /XYZ 193.264 434.992 null] >> endobj -5169 0 obj << -/D [5146 0 R /XYZ 71.731 427.794 null] +5192 0 obj << +/D [5169 0 R /XYZ 71.731 427.794 null] >> endobj -5170 0 obj << -/D [5146 0 R /XYZ 71.731 422.813 null] +5193 0 obj << +/D [5169 0 R /XYZ 71.731 422.813 null] >> endobj -5171 0 obj << -/D [5146 0 R /XYZ 71.731 363.261 null] +5194 0 obj << +/D [5169 0 R /XYZ 71.731 363.261 null] >> endobj 1110 0 obj << -/D [5146 0 R /XYZ 84.353 310.948 null] +/D [5169 0 R /XYZ 84.353 310.948 null] >> endobj -5172 0 obj << -/D [5146 0 R /XYZ 71.731 300.619 null] +5195 0 obj << +/D [5169 0 R /XYZ 71.731 300.619 null] >> endobj 1114 0 obj << -/D [5146 0 R /XYZ 163.964 287.667 null] +/D [5169 0 R /XYZ 163.964 287.667 null] >> endobj -5173 0 obj << -/D [5146 0 R /XYZ 71.731 280.469 null] +5196 0 obj << +/D [5169 0 R /XYZ 71.731 280.469 null] >> endobj -5174 0 obj << -/D [5146 0 R /XYZ 71.731 275.488 null] +5197 0 obj << +/D [5169 0 R /XYZ 71.731 275.488 null] >> endobj -5175 0 obj << -/D [5146 0 R /XYZ 71.731 249.645 null] +5198 0 obj << +/D [5169 0 R /XYZ 71.731 249.645 null] >> endobj -5176 0 obj << -/D [5146 0 R /XYZ 71.731 239.682 null] +5199 0 obj << +/D [5169 0 R /XYZ 71.731 239.682 null] >> endobj -5177 0 obj << -/D [5146 0 R /XYZ 71.731 176.635 null] +5200 0 obj << +/D [5169 0 R /XYZ 71.731 176.635 null] >> endobj -5178 0 obj << -/D [5146 0 R /XYZ 469.856 143.607 null] +5201 0 obj << +/D [5169 0 R /XYZ 469.856 143.607 null] >> endobj -5145 0 obj << +5168 0 obj << /Font << /F23 1125 0 R /F27 1132 0 R /F33 1230 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2543 0 obj << +2544 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZapfDingbats >> endobj -5179 0 obj << +5202 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 22/.notdef 30/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 129/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/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 -2358 0 obj << +2355 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Courier-Bold >> endobj -2195 0 obj << +2191 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Courier-Oblique >> endobj -1937 0 obj << +1934 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Helvetica-Oblique >> endobj -1925 0 obj << +1922 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Helvetica >> endobj 1463 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Courier >> endobj 1230 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Times-Italic >> endobj 1139 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Times-Bold >> endobj 1132 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Times-Roman >> endobj 1125 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5179 0 R +/Encoding 5202 0 R /BaseFont /Helvetica-Bold >> endobj 1126 0 obj << /Type /Pages /Count 6 -/Parent 5180 0 R +/Parent 5203 0 R /Kids [1118 0 R 1128 0 R 1134 0 R 1277 0 R 1422 0 R 1569 0 R] >> endobj 1773 0 obj << /Type /Pages /Count 6 -/Parent 5180 0 R -/Kids [1702 0 R 1809 0 R 1834 0 R 1865 0 R 1917 0 R 1931 0 R] +/Parent 5203 0 R +/Kids [1702 0 R 1809 0 R 1831 0 R 1862 0 R 1914 0 R 1928 0 R] >> endobj -1990 0 obj << +1987 0 obj << /Type /Pages /Count 6 -/Parent 5180 0 R -/Kids [1967 0 R 1993 0 R 2029 0 R 2087 0 R 2107 0 R 2127 0 R] +/Parent 5203 0 R +/Kids [1964 0 R 1990 0 R 2026 0 R 2087 0 R 2107 0 R 2129 0 R] >> endobj -2186 0 obj << +2200 0 obj << /Type /Pages /Count 6 -/Parent 5180 0 R -/Kids [2162 0 R 2188 0 R 2236 0 R 2278 0 R 2317 0 R 2352 0 R] +/Parent 5203 0 R +/Kids [2163 0 R 2202 0 R 2243 0 R 2278 0 R 2318 0 R 2357 0 R] >> endobj -2417 0 obj << +2418 0 obj << /Type /Pages /Count 6 -/Parent 5180 0 R -/Kids [2387 0 R 2419 0 R 2454 0 R 2485 0 R 2513 0 R 2546 0 R] +/Parent 5203 0 R +/Kids [2389 0 R 2420 0 R 2459 0 R 2489 0 R 2516 0 R 2551 0 R] >> endobj -2594 0 obj << +2603 0 obj << /Type /Pages /Count 6 -/Parent 5180 0 R -/Kids [2574 0 R 2596 0 R 2624 0 R 2648 0 R 2675 0 R 2699 0 R] +/Parent 5203 0 R +/Kids [2582 0 R 2605 0 R 2632 0 R 2655 0 R 2682 0 R 2700 0 R] >> endobj -2757 0 obj << +2758 0 obj << /Type /Pages /Count 6 -/Parent 5181 0 R -/Kids [2733 0 R 2759 0 R 2785 0 R 2816 0 R 2858 0 R 2889 0 R] +/Parent 5204 0 R +/Kids [2734 0 R 2760 0 R 2786 0 R 2817 0 R 2861 0 R 2887 0 R] >> endobj -2966 0 obj << +2960 0 obj << /Type /Pages /Count 6 -/Parent 5181 0 R -/Kids [2920 0 R 2968 0 R 3003 0 R 3047 0 R 3081 0 R 3110 0 R] +/Parent 5204 0 R +/Kids [2914 0 R 2962 0 R 3002 0 R 3037 0 R 3080 0 R 3111 0 R] >> endobj -3178 0 obj << +3176 0 obj << /Type /Pages /Count 6 -/Parent 5181 0 R -/Kids [3149 0 R 3180 0 R 3199 0 R 3215 0 R 3246 0 R 3276 0 R] +/Parent 5204 0 R +/Kids [3139 0 R 3178 0 R 3200 0 R 3223 0 R 3249 0 R 3270 0 R] >> endobj -3332 0 obj << +3321 0 obj << /Type /Pages /Count 6 -/Parent 5181 0 R -/Kids [3305 0 R 3336 0 R 3365 0 R 3447 0 R 3477 0 R 3506 0 R] +/Parent 5204 0 R +/Kids [3303 0 R 3323 0 R 3353 0 R 3382 0 R 3459 0 R 3487 0 R] >> endobj -3570 0 obj << +3541 0 obj << /Type /Pages /Count 6 -/Parent 5181 0 R -/Kids [3532 0 R 3572 0 R 3601 0 R 3632 0 R 3670 0 R 3693 0 R] +/Parent 5204 0 R +/Kids [3516 0 R 3543 0 R 3582 0 R 3611 0 R 3642 0 R 3680 0 R] >> endobj -3734 0 obj << +3722 0 obj << /Type /Pages /Count 6 -/Parent 5181 0 R -/Kids [3713 0 R 3736 0 R 3764 0 R 3769 0 R 3773 0 R 3777 0 R] +/Parent 5204 0 R +/Kids [3703 0 R 3724 0 R 3746 0 R 3774 0 R 3779 0 R 3783 0 R] >> endobj -3806 0 obj << +3800 0 obj << /Type /Pages /Count 6 -/Parent 5182 0 R -/Kids [3791 0 R 3808 0 R 3836 0 R 3898 0 R 3910 0 R 3946 0 R] +/Parent 5205 0 R +/Kids [3787 0 R 3802 0 R 3818 0 R 3846 0 R 3908 0 R 3920 0 R] >> endobj -3987 0 obj << +3972 0 obj << /Type /Pages /Count 6 -/Parent 5182 0 R -/Kids [3963 0 R 3989 0 R 4001 0 R 4021 0 R 4048 0 R 4091 0 R] +/Parent 5205 0 R +/Kids [3956 0 R 3974 0 R 3999 0 R 4011 0 R 4031 0 R 4058 0 R] >> endobj -4123 0 obj << +4117 0 obj << /Type /Pages /Count 6 -/Parent 5182 0 R -/Kids [4108 0 R 4125 0 R 4145 0 R 4162 0 R 4179 0 R 4210 0 R] +/Parent 5205 0 R +/Kids [4101 0 R 4119 0 R 4135 0 R 4155 0 R 4172 0 R 4189 0 R] >> endobj -4268 0 obj << +4248 0 obj << /Type /Pages /Count 6 -/Parent 5182 0 R -/Kids [4239 0 R 4270 0 R 4299 0 R 4325 0 R 4359 0 R 4385 0 R] +/Parent 5205 0 R +/Kids [4220 0 R 4250 0 R 4280 0 R 4309 0 R 4335 0 R 4369 0 R] >> endobj -4468 0 obj << +4427 0 obj << /Type /Pages /Count 6 -/Parent 5182 0 R -/Kids [4418 0 R 4471 0 R 4499 0 R 4536 0 R 4566 0 R 4601 0 R] +/Parent 5205 0 R +/Kids [4395 0 R 4429 0 R 4481 0 R 4509 0 R 4546 0 R 4576 0 R] >> endobj -4638 0 obj << +4621 0 obj << /Type /Pages /Count 6 -/Parent 5182 0 R -/Kids [4612 0 R 4640 0 R 4659 0 R 4678 0 R 4700 0 R 4717 0 R] +/Parent 5205 0 R +/Kids [4611 0 R 4623 0 R 4650 0 R 4669 0 R 4688 0 R 4710 0 R] >> endobj -4788 0 obj << +4770 0 obj << /Type /Pages /Count 6 -/Parent 5183 0 R -/Kids [4761 0 R 4790 0 R 4820 0 R 4849 0 R 4873 0 R 4889 0 R] +/Parent 5206 0 R +/Kids [4727 0 R 4772 0 R 4800 0 R 4830 0 R 4860 0 R 4892 0 R] >> endobj -4936 0 obj << +4911 0 obj << /Type /Pages /Count 6 -/Parent 5183 0 R -/Kids [4900 0 R 4938 0 R 4950 0 R 4963 0 R 4969 0 R 5019 0 R] +/Parent 5206 0 R +/Kids [4896 0 R 4913 0 R 4924 0 R 4961 0 R 4973 0 R 4986 0 R] >> endobj -5078 0 obj << +5041 0 obj << /Type /Pages -/Count 4 -/Parent 5183 0 R -/Kids [5051 0 R 5080 0 R 5118 0 R 5146 0 R] +/Count 6 +/Parent 5206 0 R +/Kids [4992 0 R 5043 0 R 5075 0 R 5103 0 R 5141 0 R 5169 0 R] >> endobj -5180 0 obj << +5203 0 obj << /Type /Pages /Count 36 -/Parent 5184 0 R -/Kids [1126 0 R 1773 0 R 1990 0 R 2186 0 R 2417 0 R 2594 0 R] +/Parent 5207 0 R +/Kids [1126 0 R 1773 0 R 1987 0 R 2200 0 R 2418 0 R 2603 0 R] >> endobj -5181 0 obj << +5204 0 obj << /Type /Pages /Count 36 -/Parent 5184 0 R -/Kids [2757 0 R 2966 0 R 3178 0 R 3332 0 R 3570 0 R 3734 0 R] +/Parent 5207 0 R +/Kids [2758 0 R 2960 0 R 3176 0 R 3321 0 R 3541 0 R 3722 0 R] >> endobj -5182 0 obj << +5205 0 obj << /Type /Pages /Count 36 -/Parent 5184 0 R -/Kids [3806 0 R 3987 0 R 4123 0 R 4268 0 R 4468 0 R 4638 0 R] +/Parent 5207 0 R +/Kids [3800 0 R 3972 0 R 4117 0 R 4248 0 R 4427 0 R 4621 0 R] >> endobj -5183 0 obj << +5206 0 obj << /Type /Pages -/Count 16 -/Parent 5184 0 R -/Kids [4788 0 R 4936 0 R 5078 0 R] +/Count 18 +/Parent 5207 0 R +/Kids [4770 0 R 4911 0 R 5041 0 R] >> endobj -5184 0 obj << +5207 0 obj << /Type /Pages -/Count 124 -/Kids [5180 0 R 5181 0 R 5182 0 R 5183 0 R] +/Count 126 +/Kids [5203 0 R 5204 0 R 5205 0 R 5206 0 R] >> endobj -5185 0 obj << +5208 0 obj << /Type /Outlines /First 3 0 R /Last 1111 0 R @@ -19948,7 +20073,7 @@ endobj 1111 0 obj << /Title 1112 0 R /A 1109 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1099 0 R /First 1115 0 R /Last 1115 0 R @@ -19970,7 +20095,7 @@ endobj 1099 0 obj << /Title 1100 0 R /A 1097 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1087 0 R /Next 1111 0 R /First 1103 0 R @@ -19993,7 +20118,7 @@ endobj 1087 0 obj << /Title 1088 0 R /A 1085 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1075 0 R /Next 1099 0 R /First 1091 0 R @@ -20016,7 +20141,7 @@ endobj 1075 0 obj << /Title 1076 0 R /A 1073 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1067 0 R /Next 1087 0 R /First 1079 0 R @@ -20031,7 +20156,7 @@ endobj 1067 0 obj << /Title 1068 0 R /A 1065 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1051 0 R /Next 1075 0 R /First 1071 0 R @@ -20061,7 +20186,7 @@ endobj 1051 0 obj << /Title 1052 0 R /A 1049 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1039 0 R /Next 1067 0 R /First 1055 0 R @@ -20084,7 +20209,7 @@ endobj 1039 0 obj << /Title 1040 0 R /A 1037 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1031 0 R /Next 1051 0 R /First 1043 0 R @@ -20099,7 +20224,7 @@ endobj 1031 0 obj << /Title 1032 0 R /A 1029 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1023 0 R /Next 1039 0 R /First 1035 0 R @@ -20114,7 +20239,7 @@ endobj 1023 0 obj << /Title 1024 0 R /A 1021 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 1011 0 R /Next 1031 0 R /First 1027 0 R @@ -20137,7 +20262,7 @@ endobj 1011 0 obj << /Title 1012 0 R /A 1009 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 991 0 R /Next 1023 0 R /First 1015 0 R @@ -20174,7 +20299,7 @@ endobj 991 0 obj << /Title 992 0 R /A 989 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 975 0 R /Next 1011 0 R /First 995 0 R @@ -20204,7 +20329,7 @@ endobj 975 0 obj << /Title 976 0 R /A 973 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 963 0 R /Next 991 0 R /First 979 0 R @@ -20227,7 +20352,7 @@ endobj 963 0 obj << /Title 964 0 R /A 961 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 955 0 R /Next 975 0 R /First 967 0 R @@ -20242,7 +20367,7 @@ endobj 955 0 obj << /Title 956 0 R /A 953 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 951 0 R /Next 963 0 R /First 959 0 R @@ -20252,7 +20377,7 @@ endobj 951 0 obj << /Title 952 0 R /A 949 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 899 0 R /Next 955 0 R >> endobj @@ -20341,7 +20466,7 @@ endobj 899 0 obj << /Title 900 0 R /A 897 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 883 0 R /Next 951 0 R /First 903 0 R @@ -20370,7 +20495,7 @@ endobj 883 0 obj << /Title 884 0 R /A 881 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 871 0 R /Next 899 0 R /First 887 0 R @@ -20392,7 +20517,7 @@ endobj 871 0 obj << /Title 872 0 R /A 869 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 823 0 R /Next 883 0 R /First 875 0 R @@ -20477,7 +20602,7 @@ endobj 823 0 obj << /Title 824 0 R /A 821 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 819 0 R /Next 871 0 R /First 827 0 R @@ -20487,7 +20612,7 @@ endobj 819 0 obj << /Title 820 0 R /A 817 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 651 0 R /Next 823 0 R >> endobj @@ -20787,7 +20912,7 @@ endobj 651 0 obj << /Title 652 0 R /A 649 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 571 0 R /Next 819 0 R /First 655 0 R @@ -20932,7 +21057,7 @@ endobj 571 0 obj << /Title 572 0 R /A 569 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 515 0 R /Next 651 0 R /First 575 0 R @@ -21035,8 +21160,8 @@ endobj 515 0 obj << /Title 516 0 R /A 513 0 R -/Parent 5185 0 R -/Prev 315 0 R +/Parent 5208 0 R +/Prev 311 0 R /Next 571 0 R /First 519 0 R /Last 563 0 R @@ -21086,7 +21211,7 @@ endobj 487 0 obj << /Title 488 0 R /A 485 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 455 0 R /First 491 0 R /Last 511 0 R @@ -21143,7 +21268,7 @@ endobj 455 0 obj << /Title 456 0 R /A 453 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 451 0 R /Next 487 0 R /First 459 0 R @@ -21153,14 +21278,14 @@ endobj 451 0 obj << /Title 452 0 R /A 449 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 447 0 R /Next 455 0 R >> endobj 447 0 obj << /Title 448 0 R /A 445 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 363 0 R /Next 451 0 R >> endobj @@ -21309,7 +21434,7 @@ endobj 363 0 obj << /Title 364 0 R /A 361 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 359 0 R /Next 447 0 R /First 367 0 R @@ -21319,465 +21444,465 @@ endobj 359 0 obj << /Title 360 0 R /A 357 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 355 0 R /Next 363 0 R >> endobj 355 0 obj << /Title 356 0 R /A 353 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 351 0 R /Next 359 0 R >> endobj 351 0 obj << /Title 352 0 R /A 349 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 347 0 R /Next 355 0 R >> endobj 347 0 obj << /Title 348 0 R /A 345 0 R -/Parent 315 0 R +/Parent 311 0 R /Prev 343 0 R /Next 351 0 R >> endobj 343 0 obj << /Title 344 0 R /A 341 0 R -/Parent 315 0 R -/Prev 323 0 R +/Parent 311 0 R +/Prev 319 0 R /Next 347 0 R >> endobj 339 0 obj << /Title 340 0 R /A 337 0 R -/Parent 331 0 R +/Parent 327 0 R /Prev 335 0 R >> endobj 335 0 obj << /Title 336 0 R /A 333 0 R -/Parent 331 0 R +/Parent 327 0 R +/Prev 331 0 R /Next 339 0 R >> endobj 331 0 obj << /Title 332 0 R /A 329 0 R -/Parent 323 0 R -/Prev 327 0 R -/First 335 0 R -/Last 339 0 R -/Count -2 +/Parent 327 0 R +/Next 335 0 R >> endobj 327 0 obj << /Title 328 0 R /A 325 0 R -/Parent 323 0 R -/Next 331 0 R +/Parent 319 0 R +/Prev 323 0 R +/First 331 0 R +/Last 339 0 R +/Count -3 >> endobj 323 0 obj << /Title 324 0 R /A 321 0 R -/Parent 315 0 R -/Prev 319 0 R -/Next 343 0 R -/First 327 0 R -/Last 331 0 R -/Count -2 +/Parent 319 0 R +/Next 327 0 R >> endobj 319 0 obj << /Title 320 0 R /A 317 0 R -/Parent 315 0 R -/Next 323 0 R +/Parent 311 0 R +/Prev 315 0 R +/Next 343 0 R +/First 323 0 R +/Last 327 0 R +/Count -2 >> endobj 315 0 obj << /Title 316 0 R /A 313 0 R -/Parent 5185 0 R -/Prev 43 0 R -/Next 515 0 R -/First 319 0 R -/Last 487 0 R -/Count -12 +/Parent 311 0 R +/Next 319 0 R >> endobj 311 0 obj << /Title 312 0 R /A 309 0 R -/Parent 259 0 R -/Prev 303 0 R +/Parent 5208 0 R +/Prev 43 0 R +/Next 515 0 R +/First 315 0 R +/Last 487 0 R +/Count -12 >> endobj 307 0 obj << /Title 308 0 R /A 305 0 R -/Parent 303 0 R +/Parent 255 0 R +/Prev 299 0 R >> endobj 303 0 obj << /Title 304 0 R /A 301 0 R -/Parent 259 0 R -/Prev 291 0 R -/Next 311 0 R -/First 307 0 R -/Last 307 0 R -/Count -1 +/Parent 299 0 R >> endobj 299 0 obj << /Title 300 0 R /A 297 0 R -/Parent 291 0 R -/Prev 295 0 R +/Parent 255 0 R +/Prev 287 0 R +/Next 307 0 R +/First 303 0 R +/Last 303 0 R +/Count -1 >> endobj 295 0 obj << /Title 296 0 R /A 293 0 R -/Parent 291 0 R -/Next 299 0 R +/Parent 287 0 R +/Prev 291 0 R >> endobj 291 0 obj << /Title 292 0 R /A 289 0 R -/Parent 259 0 R -/Prev 287 0 R -/Next 303 0 R -/First 295 0 R -/Last 299 0 R -/Count -2 +/Parent 287 0 R +/Next 295 0 R >> endobj 287 0 obj << /Title 288 0 R /A 285 0 R -/Parent 259 0 R -/Prev 267 0 R -/Next 291 0 R +/Parent 255 0 R +/Prev 283 0 R +/Next 299 0 R +/First 291 0 R +/Last 295 0 R +/Count -2 >> endobj 283 0 obj << /Title 284 0 R /A 281 0 R -/Parent 271 0 R -/Prev 279 0 R +/Parent 255 0 R +/Prev 263 0 R +/Next 287 0 R >> endobj 279 0 obj << /Title 280 0 R /A 277 0 R -/Parent 271 0 R +/Parent 267 0 R /Prev 275 0 R -/Next 283 0 R >> endobj 275 0 obj << /Title 276 0 R /A 273 0 R -/Parent 271 0 R +/Parent 267 0 R +/Prev 271 0 R /Next 279 0 R >> endobj 271 0 obj << /Title 272 0 R /A 269 0 R /Parent 267 0 R -/First 275 0 R -/Last 283 0 R -/Count -3 +/Next 275 0 R >> endobj 267 0 obj << /Title 268 0 R /A 265 0 R -/Parent 259 0 R -/Prev 263 0 R -/Next 287 0 R +/Parent 263 0 R /First 271 0 R -/Last 271 0 R -/Count -1 +/Last 279 0 R +/Count -3 >> endobj 263 0 obj << /Title 264 0 R /A 261 0 R -/Parent 259 0 R -/Next 267 0 R +/Parent 255 0 R +/Prev 259 0 R +/Next 283 0 R +/First 267 0 R +/Last 267 0 R +/Count -1 >> endobj 259 0 obj << /Title 260 0 R /A 257 0 R -/Parent 43 0 R -/Prev 215 0 R -/First 263 0 R -/Last 311 0 R -/Count -6 +/Parent 255 0 R +/Next 263 0 R >> endobj 255 0 obj << /Title 256 0 R /A 253 0 R -/Parent 215 0 R -/Prev 243 0 R +/Parent 43 0 R +/Prev 211 0 R +/First 259 0 R +/Last 307 0 R +/Count -6 >> endobj 251 0 obj << /Title 252 0 R /A 249 0 R -/Parent 243 0 R -/Prev 247 0 R +/Parent 211 0 R +/Prev 239 0 R >> endobj 247 0 obj << /Title 248 0 R /A 245 0 R -/Parent 243 0 R -/Next 251 0 R +/Parent 239 0 R +/Prev 243 0 R >> endobj 243 0 obj << /Title 244 0 R /A 241 0 R -/Parent 215 0 R -/Prev 219 0 R -/Next 255 0 R -/First 247 0 R -/Last 251 0 R -/Count -2 +/Parent 239 0 R +/Next 247 0 R >> endobj 239 0 obj << /Title 240 0 R /A 237 0 R -/Parent 219 0 R -/Prev 235 0 R +/Parent 211 0 R +/Prev 215 0 R +/Next 251 0 R +/First 243 0 R +/Last 247 0 R +/Count -2 >> endobj 235 0 obj << /Title 236 0 R /A 233 0 R -/Parent 219 0 R +/Parent 215 0 R /Prev 231 0 R -/Next 239 0 R >> endobj 231 0 obj << /Title 232 0 R /A 229 0 R -/Parent 219 0 R +/Parent 215 0 R /Prev 227 0 R /Next 235 0 R >> endobj 227 0 obj << /Title 228 0 R /A 225 0 R -/Parent 219 0 R +/Parent 215 0 R /Prev 223 0 R /Next 231 0 R >> endobj 223 0 obj << /Title 224 0 R /A 221 0 R -/Parent 219 0 R +/Parent 215 0 R +/Prev 219 0 R /Next 227 0 R >> endobj 219 0 obj << /Title 220 0 R /A 217 0 R /Parent 215 0 R -/Next 243 0 R -/First 223 0 R -/Last 239 0 R -/Count -5 +/Next 223 0 R >> endobj 215 0 obj << /Title 216 0 R /A 213 0 R -/Parent 43 0 R -/Prev 183 0 R -/Next 259 0 R +/Parent 211 0 R +/Next 239 0 R /First 219 0 R -/Last 255 0 R -/Count -3 +/Last 235 0 R +/Count -5 >> endobj 211 0 obj << /Title 212 0 R /A 209 0 R -/Parent 183 0 R -/Prev 207 0 R +/Parent 43 0 R +/Prev 179 0 R +/Next 255 0 R +/First 215 0 R +/Last 251 0 R +/Count -3 >> endobj 207 0 obj << /Title 208 0 R /A 205 0 R -/Parent 183 0 R +/Parent 179 0 R /Prev 203 0 R -/Next 211 0 R >> endobj 203 0 obj << /Title 204 0 R /A 201 0 R -/Parent 183 0 R +/Parent 179 0 R /Prev 199 0 R /Next 207 0 R >> endobj 199 0 obj << /Title 200 0 R /A 197 0 R -/Parent 183 0 R +/Parent 179 0 R /Prev 195 0 R /Next 203 0 R >> endobj 195 0 obj << /Title 196 0 R /A 193 0 R -/Parent 183 0 R +/Parent 179 0 R /Prev 191 0 R /Next 199 0 R >> endobj 191 0 obj << /Title 192 0 R /A 189 0 R -/Parent 183 0 R +/Parent 179 0 R /Prev 187 0 R /Next 195 0 R >> endobj 187 0 obj << /Title 188 0 R /A 185 0 R -/Parent 183 0 R +/Parent 179 0 R +/Prev 183 0 R /Next 191 0 R >> endobj 183 0 obj << /Title 184 0 R /A 181 0 R -/Parent 43 0 R -/Prev 119 0 R -/Next 215 0 R -/First 187 0 R -/Last 211 0 R -/Count -7 +/Parent 179 0 R +/Next 187 0 R >> endobj 179 0 obj << /Title 180 0 R /A 177 0 R -/Parent 119 0 R -/Prev 167 0 R +/Parent 43 0 R +/Prev 115 0 R +/Next 211 0 R +/First 183 0 R +/Last 207 0 R +/Count -7 >> endobj 175 0 obj << /Title 176 0 R /A 173 0 R -/Parent 167 0 R -/Prev 171 0 R +/Parent 115 0 R +/Prev 163 0 R >> endobj 171 0 obj << /Title 172 0 R /A 169 0 R -/Parent 167 0 R -/Next 175 0 R +/Parent 163 0 R +/Prev 167 0 R >> endobj 167 0 obj << /Title 168 0 R /A 165 0 R -/Parent 119 0 R -/Prev 163 0 R -/Next 179 0 R -/First 171 0 R -/Last 175 0 R -/Count -2 +/Parent 163 0 R +/Next 171 0 R >> endobj 163 0 obj << /Title 164 0 R /A 161 0 R -/Parent 119 0 R -/Prev 127 0 R -/Next 167 0 R +/Parent 115 0 R +/Prev 159 0 R +/Next 175 0 R +/First 167 0 R +/Last 171 0 R +/Count -2 >> endobj 159 0 obj << /Title 160 0 R /A 157 0 R -/Parent 151 0 R -/Prev 155 0 R +/Parent 115 0 R +/Prev 123 0 R +/Next 163 0 R >> endobj 155 0 obj << /Title 156 0 R /A 153 0 R -/Parent 151 0 R -/Next 159 0 R +/Parent 147 0 R +/Prev 151 0 R >> endobj 151 0 obj << /Title 152 0 R /A 149 0 R -/Parent 127 0 R -/Prev 131 0 R -/First 155 0 R -/Last 159 0 R -/Count -2 +/Parent 147 0 R +/Next 155 0 R >> endobj 147 0 obj << /Title 148 0 R /A 145 0 R -/Parent 131 0 R -/Prev 143 0 R +/Parent 123 0 R +/Prev 127 0 R +/First 151 0 R +/Last 155 0 R +/Count -2 >> endobj 143 0 obj << /Title 144 0 R /A 141 0 R -/Parent 131 0 R +/Parent 127 0 R /Prev 139 0 R -/Next 147 0 R >> endobj 139 0 obj << /Title 140 0 R /A 137 0 R -/Parent 131 0 R +/Parent 127 0 R /Prev 135 0 R /Next 143 0 R >> endobj 135 0 obj << /Title 136 0 R /A 133 0 R -/Parent 131 0 R +/Parent 127 0 R +/Prev 131 0 R /Next 139 0 R >> endobj 131 0 obj << /Title 132 0 R /A 129 0 R /Parent 127 0 R -/Next 151 0 R -/First 135 0 R -/Last 147 0 R -/Count -4 +/Next 135 0 R >> endobj 127 0 obj << /Title 128 0 R /A 125 0 R -/Parent 119 0 R -/Prev 123 0 R -/Next 163 0 R +/Parent 123 0 R +/Next 147 0 R /First 131 0 R -/Last 151 0 R -/Count -2 +/Last 143 0 R +/Count -4 >> endobj 123 0 obj << /Title 124 0 R /A 121 0 R -/Parent 119 0 R -/Next 127 0 R +/Parent 115 0 R +/Prev 119 0 R +/Next 159 0 R +/First 127 0 R +/Last 147 0 R +/Count -2 >> endobj 119 0 obj << /Title 120 0 R /A 117 0 R -/Parent 43 0 R -/Prev 47 0 R -/Next 183 0 R -/First 123 0 R -/Last 179 0 R -/Count -5 +/Parent 115 0 R +/Next 123 0 R >> endobj 115 0 obj << /Title 116 0 R /A 113 0 R -/Parent 47 0 R -/Prev 75 0 R +/Parent 43 0 R +/Prev 47 0 R +/Next 179 0 R +/First 119 0 R +/Last 175 0 R +/Count -5 >> endobj 111 0 obj << /Title 112 0 R /A 109 0 R -/Parent 75 0 R -/Prev 107 0 R +/Parent 47 0 R +/Prev 75 0 R >> endobj 107 0 obj << /Title 108 0 R /A 105 0 R /Parent 75 0 R /Prev 103 0 R -/Next 111 0 R >> endobj 103 0 obj << /Title 104 0 R @@ -21832,10 +21957,10 @@ endobj /A 73 0 R /Parent 47 0 R /Prev 71 0 R -/Next 115 0 R +/Next 111 0 R /First 79 0 R -/Last 111 0 R -/Count -9 +/Last 107 0 R +/Count -8 >> endobj 71 0 obj << /Title 72 0 R @@ -21883,19 +22008,19 @@ endobj /Title 48 0 R /A 45 0 R /Parent 43 0 R -/Next 119 0 R +/Next 115 0 R /First 51 0 R -/Last 115 0 R +/Last 111 0 R /Count -6 >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 19 0 R -/Next 315 0 R +/Next 311 0 R /First 47 0 R -/Last 259 0 R +/Last 255 0 R /Count -5 >> endobj 39 0 obj << @@ -21934,7 +22059,7 @@ endobj 19 0 obj << /Title 20 0 R /A 17 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 15 0 R /Next 43 0 R /First 23 0 R @@ -21944,5252 +22069,5275 @@ endobj 15 0 obj << /Title 16 0 R /A 13 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 11 0 R /Next 19 0 R >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Prev 3 0 R /Next 11 0 R >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R -/Parent 5185 0 R +/Parent 5208 0 R /Next 7 0 R >> endobj -5186 0 obj << -/Names [(1.0) 2 0 R (10.0) 650 0 R (10.33.1) 654 0 R (10.34.1) 658 0 R (10.35.1) 662 0 R (10.36.1) 666 0 R (10.37.1) 670 0 R (10.37.63.2) 674 0 R (10.37.63.42.3) 678 0 R (10.37.63.43.3) 682 0 R (10.37.63.44.3) 686 0 R (10.38.1) 690 0 R (10.39.1) 694 0 R (10.40.1) 698 0 R (10.40.64.2) 702 0 R (10.40.65.2) 706 0 R (10.40.66.2) 710 0 R (10.40.67.2) 714 0 R (10.40.68.2) 718 0 R (10.40.69.2) 722 0 R (10.40.70.2) 726 0 R (10.41.1) 730 0 R (10.41.71.2) 734 0 R (10.41.72.2) 738 0 R (10.41.73.2) 742 0 R (10.41.74.2) 746 0 R (10.41.75.2) 750 0 R (10.42.1) 754 0 R (10.42.76.2) 758 0 R (10.42.77.2) 762 0 R (10.42.78.2) 766 0 R (10.42.79.2) 770 0 R (10.43.1) 774 0 R (10.43.80.2) 778 0 R (10.43.81.2) 782 0 R (10.43.81.45.3) 786 0 R (10.43.81.46.3) 790 0 R (10.44.1) 794 0 R (10.45.1) 798 0 R (10.45.82.2) 802 0 R (10.45.83.2) 806 0 R (10.45.84.2) 810 0 R (10.45.85.2) 814 0 R (1000) 2696 0 R (1001) 2697 0 R (1006) 2702 0 R (1007) 2703 0 R (1009) 2704 0 R (101) 1902 0 R (1011) 2705 0 R (1012) 2706 0 R (1013) 2707 0 R (1015) 2708 0 R (1016) 2709 0 R (1017) 2710 0 R (1018) 2711 0 R (1019) 2712 0 R (102) 1903 0 R (1020) 2713 0 R (1021) 2714 0 R (1023) 2715 0 R (1024) 2716 0 R (1025) 2717 0 R (1027) 2718 0 R (1028) 2719 0 R (1029) 2720 0 R (103) 1904 0 R (1030) 2721 0 R (1032) 2722 0 R (1033) 2723 0 R (1034) 2724 0 R (1035) 2725 0 R (1037) 2726 0 R (1038) 2727 0 R (1039) 2728 0 R (104) 1905 0 R (1040) 2729 0 R (1041) 2730 0 R (1042) 2731 0 R (1044) 2736 0 R (1046) 2737 0 R (1047) 2738 0 R (1048) 2739 0 R (1049) 2740 0 R (105) 1906 0 R (1050) 2741 0 R (1051) 2742 0 R (1053) 2743 0 R (1054) 2744 0 R (1055) 2745 0 R (1056) 2746 0 R (1058) 2747 0 R (1059) 2748 0 R (106) 1907 0 R (1060) 2749 0 R (1061) 2750 0 R (1063) 2751 0 R (1064) 2752 0 R (1065) 2753 0 R (1067) 2754 0 R (1068) 2755 0 R (1069) 2756 0 R (107) 1908 0 R (1071) 2763 0 R (1072) 2764 0 R (1073) 2765 0 R (1075) 2766 0 R (1076) 2767 0 R (1077) 2768 0 R (1078) 2769 0 R (1079) 2770 0 R (108) 1909 0 R (1080) 2771 0 R (1082) 2772 0 R (1083) 2773 0 R (1084) 2774 0 R (1085) 2775 0 R (1087) 2776 0 R (1088) 2777 0 R (1089) 2778 0 R (109) 1910 0 R (1091) 2779 0 R (1092) 2780 0 R (1093) 2781 0 R (1098) 2782 0 R (1099) 2783 0 R (11.0) 818 0 R (110) 1911 0 R (1100) 2762 0 R (1105) 2789 0 R (1106) 2790 0 R (1107) 2791 0 R (1108) 2792 0 R (1109) 2793 0 R (111) 1912 0 R (1110) 2794 0 R (1111) 2795 0 R (1112) 2796 0 R (1113) 2797 0 R (1114) 2798 0 R (1117) 2799 0 R (1118) 2800 0 R (1119) 2801 0 R (112) 1913 0 R (1120) 2802 0 R (1121) 2803 0 R (1122) 2804 0 R (1123) 2805 0 R (1124) 2806 0 R (1125) 2807 0 R (1126) 2808 0 R (1127) 2809 0 R (1128) 2810 0 R (1129) 2811 0 R (113) 1914 0 R (1130) 2812 0 R (1131) 2813 0 R (1132) 2814 0 R (1133) 2819 0 R (1134) 2820 0 R (1135) 2788 0 R (1137) 2821 0 R (1138) 2822 0 R (1139) 2823 0 R (114) 1915 0 R (1140) 2824 0 R (1141) 2825 0 R (1142) 2826 0 R (1143) 2827 0 R (1144) 2828 0 R (1145) 2829 0 R (1146) 2830 0 R (1147) 2831 0 R (1148) 2832 0 R (1149) 2833 0 R (1150) 2834 0 R (1151) 2835 0 R (1152) 2836 0 R (1153) 2837 0 R (1154) 2838 0 R (1155) 2839 0 R (1156) 2840 0 R (1157) 2841 0 R (1158) 2842 0 R (1159) 2843 0 R (1160) 2844 0 R (1161) 2845 0 R (1162) 2846 0 R (1163) 2847 0 R (1164) 2848 0 R (1165) 2849 0 R (1166) 2850 0 R (1167) 2851 0 R (1168) 2852 0 R (1169) 2853 0 R (117) 1919 0 R (1172) 2854 0 R (1173) 2855 0 R (1174) 2856 0 R (1175) 2861 0 R (1176) 2862 0 R (1177) 2863 0 R (1180) 2864 0 R (1182) 2866 0 R (1183) 2867 0 R (1184) 2868 0 R (1185) 2869 0 R (1186) 2870 0 R (1187) 2871 0 R (1188) 2872 0 R (1189) 2873 0 R (119) 1920 0 R (1190) 2874 0 R (1191) 2875 0 R (1194) 2876 0 R (1195) 2877 0 R (1196) 2878 0 R (1197) 2879 0 R (1198) 2880 0 R (1199) 2881 0 R (12.0) 822 0 R (12.46.1) 826 0 R (12.47.1) 830 0 R (12.48.1) 834 0 R (12.49.1) 838 0 R (12.50.1) 842 0 R (12.51.1) 846 0 R (12.52.1) 850 0 R (12.53.1) 854 0 R (12.54.1) 858 0 R (12.55.1) 862 0 R (12.56.1) 866 0 R (120) 1921 0 R (1200) 2882 0 R (1201) 2883 0 R (1202) 2884 0 R (1203) 2885 0 R (1204) 2886 0 R (1207) 2893 0 R (1208) 2894 0 R (1209) 2895 0 R (121) 1922 0 R (1210) 2896 0 R (1211) 2897 0 R (1212) 2898 0 R (1213) 2899 0 R (1214) 2900 0 R (1215) 2901 0 R (1218) 2902 0 R (1219) 2903 0 R (1220) 2904 0 R (1221) 2905 0 R (1222) 2906 0 R (1223) 2907 0 R (1224) 2908 0 R (1225) 2909 0 R (1226) 2910 0 R (1227) 2911 0 R (1228) 2912 0 R (1229) 2913 0 R (1230) 2914 0 R (1233) 2915 0 R (1234) 2916 0 R (1235) 2917 0 R (1236) 2918 0 R (1239) 2923 0 R (1240) 2924 0 R (1241) 2925 0 R (1242) 2892 0 R (1249) 2926 0 R (1250) 2927 0 R (1251) 2928 0 R (1252) 2929 0 R (1253) 2930 0 R (1254) 2931 0 R (1255) 2932 0 R (1256) 2933 0 R (1257) 2934 0 R (1258) 2935 0 R (1259) 2936 0 R (1260) 2937 0 R (1261) 2938 0 R (1262) 2939 0 R (1263) 2940 0 R (1264) 2941 0 R (1265) 2942 0 R (1270) 2943 0 R (1271) 2944 0 R (1273) 2945 0 R (1274) 2946 0 R (1275) 2947 0 R (1276) 2948 0 R (1278) 2949 0 R (1279) 2950 0 R (1280) 2951 0 R (1281) 2952 0 R (1282) 2953 0 R (1284) 2954 0 R (1285) 2955 0 R (1286) 2956 0 R (1287) 2957 0 R (1288) 2958 0 R (1289) 2959 0 R (1290) 2960 0 R (1293) 2961 0 R (1294) 2962 0 R (1295) 2963 0 R (1296) 2964 0 R (1297) 2965 0 R (1298) 2971 0 R (1299) 2972 0 R (13.0) 870 0 R (13.57.1) 874 0 R (13.58.1) 878 0 R (1300) 2973 0 R (1301) 2974 0 R (1302) 2975 0 R (1303) 2976 0 R (1306) 2977 0 R (1309) 2978 0 R (1310) 2979 0 R (1311) 2980 0 R (1312) 2981 0 R (1313) 2982 0 R (1314) 2983 0 R (1315) 2984 0 R (1316) 2985 0 R (1317) 2986 0 R (1318) 2987 0 R (1319) 2988 0 R (1320) 2989 0 R (1321) 2990 0 R (1322) 2991 0 R (1325) 2992 0 R (1326) 2993 0 R (1327) 2994 0 R (1328) 2995 0 R (1329) 2996 0 R (1332) 2997 0 R (1333) 2998 0 R (1334) 2999 0 R (1335) 3000 0 R (1336) 3001 0 R (1339) 3006 0 R (1340) 3007 0 R (1343) 3009 0 R (1346) 3011 0 R (1349) 3013 0 R (1350) 3014 0 R (1351) 3015 0 R (1352) 3016 0 R (1353) 3017 0 R (1354) 3018 0 R (1355) 3019 0 R (1356) 3020 0 R (1357) 3021 0 R (1358) 3022 0 R (1359) 3023 0 R (1360) 3024 0 R (1361) 3025 0 R (1362) 3026 0 R (1363) 3027 0 R (1364) 3028 0 R (1365) 3029 0 R (1366) 3030 0 R (1367) 3031 0 R (1368) 3032 0 R (1369) 3033 0 R (1370) 3034 0 R (1371) 3035 0 R (1372) 3036 0 R (1373) 3037 0 R (1374) 3038 0 R (1375) 3039 0 R (1376) 3040 0 R (1377) 3041 0 R (1378) 3042 0 R (1379) 3043 0 R (1382) 3045 0 R (1383) 3050 0 R (1384) 3051 0 R (1387) 3053 0 R (1388) 3054 0 R (1391) 3056 0 R (1392) 3057 0 R (1393) 3058 0 R (1394) 3059 0 R (1395) 3060 0 R (1396) 3061 0 R (1399) 3063 0 R (14.0) 882 0 R (14.59.1) 886 0 R (14.60.1) 890 0 R (14.61.1) 894 0 R (1402) 3065 0 R (1403) 3066 0 R (1406) 3068 0 R (1407) 3069 0 R (1408) 3070 0 R (1409) 3071 0 R (1412) 3072 0 R (1413) 3073 0 R (1414) 3074 0 R (1415) 3075 0 R (1416) 3076 0 R (1417) 3077 0 R (1418) 3078 0 R (1419) 3079 0 R (1422) 3084 0 R (1423) 3085 0 R (1424) 3086 0 R (1427) 3087 0 R (1428) 3088 0 R (1429) 3089 0 R (1430) 3090 0 R (1431) 3091 0 R (1432) 3092 0 R (1433) 3093 0 R (1434) 3094 0 R (1435) 3095 0 R (1436) 3096 0 R (1437) 3097 0 R (1438) 3098 0 R (1439) 3099 0 R (1440) 3100 0 R (1441) 3101 0 R (1442) 3102 0 R (1445) 3103 0 R (1446) 3104 0 R (1447) 3105 0 R (1448) 3106 0 R (1449) 3107 0 R (1450) 3108 0 R (1453) 3113 0 R (1454) 3114 0 R (1455) 3115 0 R (1456) 3116 0 R (1457) 3117 0 R (1458) 3118 0 R (1459) 3119 0 R (1460) 3120 0 R (1461) 3121 0 R (1462) 3122 0 R (1463) 3123 0 R (1464) 1521 0 R (1466) 3124 0 R (1467) 3125 0 R (1468) 3126 0 R (1469) 3127 0 R (1470) 3128 0 R (1471) 3129 0 R (1472) 3130 0 R (1473) 3131 0 R (1474) 3132 0 R (1475) 3133 0 R (1476) 3134 0 R (1477) 3135 0 R (1478) 3136 0 R (1479) 3137 0 R (1480) 3138 0 R (1481) 3139 0 R (1482) 3140 0 R (1483) 3141 0 R (1484) 3142 0 R (1485) 3143 0 R (1486) 3144 0 R (1487) 3145 0 R (1488) 3146 0 R (1489) 3147 0 R (1490) 3153 0 R (1491) 1522 0 R (1493) 3154 0 R (1494) 3155 0 R (1495) 3156 0 R (1496) 3157 0 R (1497) 3158 0 R (1498) 3159 0 R (1499) 3160 0 R (15.0) 898 0 R (15.62.1) 902 0 R (15.63.1) 906 0 R (15.64.1) 910 0 R (15.65.1) 914 0 R (15.66.1) 918 0 R (15.67.1) 922 0 R (15.68.1) 926 0 R (15.69.1) 930 0 R (15.70.1) 934 0 R (15.71.1) 938 0 R (15.72.1) 942 0 R (15.73.1) 946 0 R (1500) 3161 0 R (1501) 1523 0 R (1503) 3162 0 R (1504) 3163 0 R (1505) 3164 0 R (1506) 3165 0 R (1507) 3166 0 R (1508) 3167 0 R (1509) 3168 0 R (1510) 3169 0 R (1511) 3170 0 R (1512) 3171 0 R (1513) 3172 0 R (1514) 3173 0 R (1515) 3174 0 R (1516) 3175 0 R (1517) 3176 0 R (1518) 3177 0 R (1519) 1524 0 R (1521) 1525 0 R (1523) 3183 0 R (1524) 3152 0 R (1525) 1526 0 R (1527) 3184 0 R (1528) 3185 0 R (1529) 1527 0 R (1531) 3186 0 R (1532) 3187 0 R (1533) 3188 0 R (1534) 3189 0 R (1535) 3190 0 R (1536) 3191 0 R (1537) 3192 0 R (1538) 3193 0 R (1539) 3194 0 R (1540) 3195 0 R (1541) 3196 0 R (1542) 3197 0 R (1545) 3202 0 R (1546) 3203 0 R (1547) 3204 0 R (1548) 3205 0 R (1549) 3206 0 R (1550) 3207 0 R (1553) 3208 0 R (1554) 3209 0 R (1555) 3210 0 R (1556) 3211 0 R (1557) 3212 0 R (1558) 3213 0 R (1561) 3218 0 R (1562) 3219 0 R (1563) 3220 0 R (1564) 3221 0 R (1566) 3223 0 R (1567) 3224 0 R (1569) 3226 0 R (1570) 3227 0 R (1572) 3229 0 R (1574) 3231 0 R (1575) 3232 0 R (1576) 3233 0 R (1577) 3234 0 R (1578) 3235 0 R (1581) 3236 0 R (1582) 3237 0 R (1583) 3238 0 R (1584) 3239 0 R (1585) 3240 0 R (1586) 3241 0 R (1587) 3242 0 R (1588) 3243 0 R (1589) 3244 0 R (1590) 3249 0 R (1591) 3250 0 R (1592) 3251 0 R (1593) 3252 0 R (1594) 3253 0 R (1597) 3254 0 R (1598) 3255 0 R (1599) 3256 0 R (16.0) 950 0 R (1600) 3257 0 R (1601) 3258 0 R (1602) 3259 0 R (1603) 3260 0 R (1604) 3261 0 R (1605) 3262 0 R (1606) 3263 0 R (1607) 3264 0 R (1608) 3265 0 R (1609) 3266 0 R (1610) 3267 0 R (1611) 3268 0 R (1612) 3269 0 R (1613) 3270 0 R (1614) 3271 0 R (1615) 3272 0 R (1616) 3273 0 R (1617) 3274 0 R (1620) 3279 0 R (1621) 3280 0 R (1622) 3281 0 R (1623) 3282 0 R (1624) 3283 0 R (1625) 3284 0 R (1626) 3285 0 R (1627) 3286 0 R (1628) 3287 0 R (1629) 3288 0 R (1630) 3289 0 R (1631) 3290 0 R (1632) 3291 0 R (1633) 3292 0 R (1637) 3294 0 R (1638) 3295 0 R (1639) 3296 0 R (1640) 3297 0 R (1641) 3298 0 R (1642) 3299 0 R (1643) 3300 0 R (1644) 3301 0 R (1645) 3302 0 R (1646) 3303 0 R (1649) 3308 0 R (1650) 3309 0 R (1651) 3310 0 R (1656) 3311 0 R (1659) 3312 0 R (1661) 3314 0 R (1662) 3315 0 R (1663) 3316 0 R (1664) 3317 0 R (1666) 3319 0 R (1667) 3320 0 R (1668) 3321 0 R (1669) 3322 0 R (1670) 3323 0 R (1671) 3324 0 R (1672) 3325 0 R (1673) 3326 0 R (1674) 3327 0 R (1675) 3328 0 R (1676) 3329 0 R (1680) 3330 0 R (1681) 3331 0 R (1686) 3339 0 R (1692) 3341 0 R (1693) 3342 0 R (1694) 3343 0 R (1695) 3344 0 R (1699) 3345 0 R (17.0) 954 0 R (17.73.86.2) 958 0 R (1700) 3346 0 R (1701) 3347 0 R (1702) 3348 0 R (1703) 3349 0 R (1707) 3350 0 R (1708) 3351 0 R (1710) 3352 0 R (1711) 3353 0 R (1712) 3354 0 R (1713) 3355 0 R (1714) 3356 0 R (1715) 3357 0 R (1720) 3359 0 R (1724) 3361 0 R (1725) 3362 0 R (1726) 3363 0 R (1731) 3368 0 R (1732) 3369 0 R (1733) 3370 0 R (1734) 3371 0 R (1738) 3374 0 R (1739) 3375 0 R (1740) 3376 0 R (1741) 3377 0 R (1742) 3378 0 R (1743) 3379 0 R (1745) 3380 0 R (1746) 3381 0 R (1747) 3382 0 R (1748) 3383 0 R (1749) 3384 0 R (1750) 3385 0 R (1752) 3386 0 R (1753) 3387 0 R (1754) 3388 0 R (1755) 3389 0 R (1756) 3390 0 R (1757) 3391 0 R (1758) 3392 0 R (1759) 3393 0 R (1760) 3394 0 R (1761) 3395 0 R (1762) 3396 0 R (1763) 3397 0 R (1765) 3398 0 R (1766) 3399 0 R (1767) 3400 0 R (1768) 3401 0 R (1769) 3402 0 R (1770) 3403 0 R (1771) 3404 0 R (1772) 3405 0 R (1773) 3406 0 R (1774) 3407 0 R (1775) 3408 0 R (1776) 3409 0 R (1777) 3410 0 R (1779) 3411 0 R (1780) 3412 0 R (1781) 3413 0 R (1782) 3414 0 R (1783) 3415 0 R (1784) 3416 0 R (1785) 3417 0 R (1786) 3418 0 R (1787) 3419 0 R (1789) 3420 0 R (1790) 3421 0 R (1791) 3422 0 R (1792) 3423 0 R (1793) 3424 0 R (1794) 3425 0 R (1795) 3426 0 R (1796) 3427 0 R (1797) 3428 0 R (1798) 3429 0 R (1799) 3430 0 R (18.0) 962 0 R (18.73.87.2) 966 0 R (18.73.87.47.3) 970 0 R (1800) 3431 0 R (1801) 3432 0 R (1802) 3433 0 R (1803) 3434 0 R (1804) 3435 0 R (1805) 3436 0 R (1806) 3437 0 R (1807) 3438 0 R (1808) 3439 0 R (1809) 3440 0 R (1810) 3441 0 R (1811) 3442 0 R (1812) 3443 0 R (1813) 3444 0 R (1814) 3450 0 R (1815) 3451 0 R (1816) 3452 0 R (1817) 3453 0 R (1818) 3454 0 R (1819) 3455 0 R (182) 1927 0 R (1820) 3456 0 R (1821) 3457 0 R (1822) 3458 0 R (1827) 3460 0 R (1828) 3461 0 R (1829) 3462 0 R (183) 1928 0 R (1831) 3464 0 R (1832) 3465 0 R (1833) 3466 0 R (1834) 3467 0 R (1839) 3468 0 R (1840) 3469 0 R (1844) 3471 0 R (1845) 3472 0 R (1846) 3473 0 R (1847) 3474 0 R (1852) 3480 0 R (1853) 3481 0 R (1857) 3483 0 R (1858) 3484 0 R (1859) 3485 0 R (1860) 3486 0 R (1861) 3487 0 R (1862) 3488 0 R (1863) 3489 0 R (1864) 3490 0 R (1865) 3491 0 R (1866) 3492 0 R (1869) 3493 0 R (1870) 3494 0 R (1871) 3495 0 R (1872) 3496 0 R (1873) 3497 0 R (1874) 3498 0 R (1875) 3499 0 R (1876) 3500 0 R (1877) 3501 0 R (1878) 3502 0 R (1879) 3503 0 R (188) 1933 0 R (1880) 3504 0 R (1881) 3509 0 R (1882) 3510 0 R (1883) 3511 0 R (1884) 3512 0 R (1885) 3513 0 R (1886) 3514 0 R (1887) 3515 0 R (1888) 3516 0 R (1889) 3517 0 R (189) 1934 0 R (1890) 3518 0 R (1891) 3519 0 R (1892) 3520 0 R (1895) 3521 0 R (1896) 3522 0 R (1897) 3523 0 R (1898) 3524 0 R (1899) 3525 0 R (19.0) 974 0 R (19.73.88.2) 978 0 R (19.73.89.2) 982 0 R (19.73.90.2) 986 0 R (190) 1935 0 R (1900) 3526 0 R (1901) 3527 0 R (1902) 3528 0 R (1903) 3529 0 R (1904) 3530 0 R (1907) 3535 0 R (1908) 3536 0 R (1909) 3537 0 R (191) 1938 0 R (1910) 3538 0 R (1911) 3539 0 R (1912) 3540 0 R (1913) 3541 0 R (1914) 3542 0 R (1915) 3543 0 R (1916) 3544 0 R (1917) 3545 0 R (1918) 3546 0 R (1919) 3547 0 R (1920) 3548 0 R (1921) 3549 0 R (1922) 3550 0 R (1923) 3551 0 R (1926) 3552 0 R (1927) 3553 0 R (1928) 3554 0 R (1929) 3555 0 R (193) 1941 0 R (1930) 3556 0 R (1931) 3557 0 R (1932) 3558 0 R (1933) 3559 0 R (1934) 3560 0 R (1935) 3561 0 R (1936) 3562 0 R (1937) 3563 0 R (1938) 3564 0 R (1939) 3565 0 R (194) 1942 0 R (1940) 3566 0 R (1941) 3567 0 R (1942) 3568 0 R (1943) 3569 0 R (1944) 3575 0 R (1945) 3576 0 R (1946) 3577 0 R (1947) 3578 0 R (1948) 3579 0 R (1949) 3580 0 R (195) 1943 0 R (1950) 3581 0 R (1951) 3582 0 R (1952) 3583 0 R (1953) 3584 0 R (1954) 3585 0 R (1955) 3586 0 R (1956) 3587 0 R (1957) 3588 0 R (1958) 3589 0 R (1959) 3590 0 R (196) 1944 0 R (1960) 3591 0 R (1961) 3592 0 R (1962) 3593 0 R (1963) 3594 0 R (1964) 3595 0 R (1965) 3596 0 R (1966) 3597 0 R (1967) 3598 0 R (1968) 3599 0 R (197) 1945 0 R (1971) 3604 0 R (1972) 3605 0 R (1973) 3606 0 R (1974) 3607 0 R (1975) 3608 0 R (1976) 3609 0 R (1977) 3610 0 R (198) 1946 0 R (1980) 3611 0 R (1981) 3612 0 R (1982) 3613 0 R (1983) 3614 0 R (1984) 3615 0 R (1985) 3616 0 R (1986) 3617 0 R (1987) 3618 0 R (1988) 3619 0 R (1989) 3620 0 R (199) 1947 0 R (1990) 3621 0 R (1991) 3622 0 R (1992) 3623 0 R (1993) 3624 0 R (1994) 3625 0 R (1995) 3626 0 R (1996) 3627 0 R (1997) 3628 0 R (2.0) 6 0 R (20.0) 990 0 R (20.73.91.2) 994 0 R (20.73.92.2) 998 0 R (20.73.93.2) 1002 0 R (20.73.94.2) 1006 0 R (200) 1948 0 R (2002) 3630 0 R (2003) 3635 0 R (2004) 3636 0 R (2005) 3637 0 R (2006) 3638 0 R (2007) 3639 0 R (2008) 3640 0 R (2009) 3641 0 R (201) 1949 0 R (2010) 3642 0 R (2011) 3643 0 R (2012) 3644 0 R (2013) 3645 0 R (2014) 3646 0 R (2015) 3647 0 R (2016) 3648 0 R (2017) 3649 0 R (2018) 3650 0 R (2019) 3651 0 R (2020) 3652 0 R (2021) 3653 0 R (2022) 3654 0 R (2023) 3655 0 R (2024) 3656 0 R (2025) 3657 0 R (2026) 3658 0 R (2027) 3659 0 R (2028) 3660 0 R (2029) 3661 0 R (2030) 3662 0 R (2031) 3663 0 R (2032) 3664 0 R (2033) 3665 0 R (2034) 3666 0 R (2035) 3667 0 R (2036) 3668 0 R (2037) 3674 0 R (2038) 3675 0 R (2039) 3676 0 R (204) 1951 0 R (2040) 3677 0 R (2041) 3678 0 R (2042) 3679 0 R (2045) 3680 0 R (2046) 3681 0 R (2047) 3682 0 R (2048) 3683 0 R (2049) 3684 0 R (2050) 3685 0 R (2051) 3686 0 R (2052) 3687 0 R (2053) 3688 0 R (2054) 3689 0 R (2055) 3690 0 R (2056) 3691 0 R (2057) 3696 0 R (2058) 3673 0 R (2059) 3697 0 R (2060) 3698 0 R (2061) 3699 0 R (2062) 3700 0 R (2063) 3701 0 R (2064) 3702 0 R (2065) 3703 0 R (2066) 3704 0 R (2069) 3705 0 R (207) 1953 0 R (2070) 3706 0 R (2071) 3707 0 R (2072) 3708 0 R (2073) 3709 0 R (2074) 3710 0 R (2075) 3711 0 R (2076) 3717 0 R (2077) 3718 0 R (2080) 3719 0 R (2081) 3720 0 R (2082) 3721 0 R (2083) 3722 0 R (2084) 3723 0 R (2085) 3724 0 R (2086) 3725 0 R (2087) 3726 0 R (2088) 1561 0 R (2090) 3727 0 R (2091) 3728 0 R (2092) 3729 0 R (2093) 3730 0 R (2094) 3731 0 R (2095) 3732 0 R (2096) 3733 0 R (2097) 3739 0 R (2098) 3716 0 R (21.0) 1010 0 R (21.73.95.2) 1014 0 R (21.73.96.2) 1018 0 R (210) 1955 0 R (2100) 3740 0 R (2101) 3741 0 R (2102) 3742 0 R (2103) 3743 0 R (2104) 3744 0 R (2105) 3745 0 R (2106) 3746 0 R (2107) 3747 0 R (2108) 3748 0 R (2109) 3749 0 R (2110) 3750 0 R (2111) 3751 0 R (2112) 3752 0 R (2113) 3753 0 R (2114) 3754 0 R (2115) 1562 0 R (2117) 3755 0 R (2118) 3756 0 R (2119) 3757 0 R (2120) 3758 0 R (2121) 3759 0 R (2122) 3760 0 R (2123) 3761 0 R (2124) 3762 0 R (2125) 3767 0 R (213) 1957 0 R (2130) 3780 0 R (2135) 3784 0 R (2136) 3785 0 R (2137) 3786 0 R (2138) 3787 0 R (2139) 3788 0 R (2140) 3789 0 R (2141) 3794 0 R (2142) 3795 0 R (2145) 3796 0 R (2146) 3797 0 R (2147) 3798 0 R (2148) 3799 0 R (2149) 3800 0 R (2152) 3801 0 R (2153) 3802 0 R (2156) 3803 0 R (2157) 3804 0 R (2158) 3805 0 R (216) 1959 0 R (2163) 3811 0 R (2164) 3812 0 R (2167) 3813 0 R (2168) 3814 0 R (2169) 3815 0 R (2170) 3816 0 R (2171) 3817 0 R (2172) 3818 0 R (2173) 3819 0 R (2174) 3820 0 R (2175) 3821 0 R (2176) 3822 0 R (2177) 3823 0 R (2178) 3824 0 R (2179) 3825 0 R (2180) 3826 0 R (2183) 3827 0 R (2184) 3828 0 R (2185) 3829 0 R (2186) 3830 0 R (2187) 3831 0 R (2188) 3832 0 R (2189) 3833 0 R (219) 1961 0 R (22.0) 1022 0 R (22.73.97.2) 1026 0 R (2210) 3839 0 R (2211) 3840 0 R (2212) 3841 0 R (2213) 3842 0 R (2214) 3843 0 R (2215) 3844 0 R (2216) 3845 0 R (2217) 3846 0 R (2218) 3847 0 R (2219) 3848 0 R (2220) 3849 0 R (2221) 3850 0 R (2222) 3851 0 R (2223) 3852 0 R (2224) 3853 0 R (2225) 3854 0 R (2226) 3855 0 R (2227) 3856 0 R (2228) 3857 0 R (2229) 3858 0 R (223) 1962 0 R (2230) 3859 0 R (2231) 3860 0 R (2232) 3861 0 R (2233) 3862 0 R (2234) 3863 0 R (2235) 3864 0 R (2236) 3865 0 R (2237) 3866 0 R (2238) 3867 0 R (2239) 3868 0 R (224) 1963 0 R (2240) 3869 0 R (2241) 3870 0 R (2242) 3871 0 R (2243) 3872 0 R (2244) 3873 0 R (2245) 3874 0 R (2246) 3875 0 R (2247) 3876 0 R (2248) 3877 0 R (2249) 3878 0 R (225) 1964 0 R (2250) 3879 0 R (2251) 3880 0 R (2252) 3881 0 R (2253) 3882 0 R (226) 1965 0 R (2274) 3884 0 R (2275) 3885 0 R (2276) 3886 0 R (2277) 3887 0 R (2278) 3888 0 R (2279) 3889 0 R (2280) 3890 0 R (2281) 3891 0 R (2282) 3892 0 R (2283) 3893 0 R (2284) 3894 0 R (2285) 3895 0 R (2288) 3901 0 R (229) 1969 0 R (2290) 3903 0 R (2291) 3904 0 R (2294) 3905 0 R (2299) 3906 0 R (23.0) 1030 0 R (23.73.98.2) 1034 0 R (2300) 3907 0 R (2301) 3908 0 R (2302) 3913 0 R (2305) 3914 0 R (2306) 3915 0 R (2307) 3916 0 R (2308) 3917 0 R (2309) 3918 0 R (2310) 3919 0 R (2311) 3920 0 R (2312) 3921 0 R (2313) 3922 0 R (2314) 3923 0 R (2315) 3924 0 R (2316) 3925 0 R (2317) 3926 0 R (2318) 3927 0 R (2319) 3928 0 R (232) 1970 0 R (2320) 3929 0 R (2321) 3930 0 R (2324) 3931 0 R (2327) 3932 0 R (2328) 3933 0 R (2329) 3934 0 R (233) 1971 0 R (2330) 3935 0 R (2331) 3936 0 R (2332) 3937 0 R (2333) 3938 0 R (2334) 3939 0 R (2335) 3940 0 R (2336) 3941 0 R (2337) 3942 0 R (2338) 3943 0 R (2339) 3944 0 R (234) 1972 0 R (2342) 3949 0 R (2343) 3950 0 R (2344) 3951 0 R (2345) 3952 0 R (2346) 3953 0 R (2347) 3954 0 R (235) 1973 0 R (2350) 3955 0 R (2351) 3956 0 R (2352) 3957 0 R (236) 1974 0 R (237) 1975 0 R (2371) 3959 0 R (2374) 3960 0 R (2375) 3961 0 R (2376) 3966 0 R (2377) 3967 0 R (2378) 3968 0 R (2379) 3969 0 R (238) 1976 0 R (2380) 3970 0 R (2381) 3971 0 R (2382) 3972 0 R (2383) 3973 0 R (2384) 3974 0 R (2385) 3975 0 R (2386) 3976 0 R (2387) 3977 0 R (2388) 3978 0 R (2389) 3979 0 R (239) 1977 0 R (2390) 3980 0 R (2393) 3981 0 R (2394) 3982 0 R (2395) 3983 0 R (24) 1836 0 R (24.0) 1038 0 R (24.73.100.2) 1046 0 R (24.73.99.2) 1042 0 R (240) 1978 0 R (2405) 3985 0 R (2408) 3986 0 R (2411) 3992 0 R (2414) 3993 0 R (2417) 3994 0 R (2420) 3995 0 R (2421) 3996 0 R (2424) 3997 0 R (2427) 3998 0 R (2428) 1680 0 R (243) 1979 0 R (2430) 3999 0 R (2431) 4004 0 R (2432) 4005 0 R (244) 1980 0 R (2441) 4007 0 R (2444) 4008 0 R (2445) 4009 0 R (2446) 4010 0 R (2447) 4011 0 R (2448) 4012 0 R (245) 1981 0 R (2451) 4013 0 R (2452) 4014 0 R (2455) 4015 0 R (2456) 4016 0 R (2457) 4017 0 R (2458) 4018 0 R (2459) 4019 0 R (246) 1982 0 R (2460) 4025 0 R (2463) 4026 0 R (2464) 4027 0 R (2465) 4028 0 R (2468) 4029 0 R (247) 1983 0 R (2471) 4030 0 R (2472) 4031 0 R (2473) 4032 0 R (2476) 4033 0 R (2477) 4034 0 R (2478) 4035 0 R (2479) 4036 0 R (2480) 4037 0 R (2481) 4038 0 R (2482) 4039 0 R (2483) 4040 0 R (2484) 4041 0 R (2485) 4042 0 R (2486) 4043 0 R (2490) 4045 0 R (2491) 4046 0 R (2494) 4052 0 R (2495) 4024 0 R (2497) 4053 0 R (2498) 4054 0 R (2499) 4055 0 R (25) 1837 0 R (25.0) 1050 0 R (25.73.101.2) 1054 0 R (25.73.102.2) 1058 0 R (25.73.103.2) 1062 0 R (250) 1984 0 R (2500) 4056 0 R (2501) 4057 0 R (2502) 4058 0 R (2503) 4059 0 R (2504) 4060 0 R (2505) 4061 0 R (2506) 4062 0 R (2507) 4063 0 R (2508) 4064 0 R (2509) 4065 0 R (251) 1985 0 R (2510) 4066 0 R (2511) 4067 0 R (2512) 4068 0 R (2513) 4069 0 R (2514) 4070 0 R (2515) 4071 0 R (2516) 4072 0 R (2517) 4073 0 R (2518) 4074 0 R (2519) 4075 0 R (2520) 4076 0 R (2521) 4077 0 R (2522) 4078 0 R (2523) 4079 0 R (2524) 4080 0 R (2525) 4081 0 R (2526) 4082 0 R (2527) 4083 0 R (2528) 4084 0 R (2529) 4085 0 R (253) 1987 0 R (2530) 4086 0 R (2531) 4087 0 R (2532) 4088 0 R (2533) 4089 0 R (2534) 4051 0 R (2536) 4095 0 R (2537) 4096 0 R (2538) 4097 0 R (2539) 4098 0 R (254) 1988 0 R (2540) 4099 0 R (2543) 4100 0 R (2546) 4101 0 R (2549) 4102 0 R (255) 1989 0 R (2550) 4103 0 R (2551) 4104 0 R (2552) 4105 0 R (2553) 4106 0 R (2556) 4111 0 R (2557) 4094 0 R (2558) 4112 0 R (2559) 4113 0 R (2560) 4114 0 R (2561) 4115 0 R (2562) 1693 0 R (2564) 4116 0 R (2565) 4117 0 R (2566) 4118 0 R (2567) 4119 0 R (2568) 4120 0 R (2569) 1694 0 R (2571) 4121 0 R (2572) 4122 0 R (2575) 4128 0 R (2576) 4129 0 R (2577) 4130 0 R (2578) 4131 0 R (2579) 4132 0 R (258) 1995 0 R (2580) 4133 0 R (2581) 4134 0 R (2582) 4135 0 R (2585) 4136 0 R (2586) 4137 0 R (2587) 4138 0 R (2588) 4139 0 R (2589) 4140 0 R (259) 1996 0 R (2590) 4141 0 R (2592) 4143 0 R (2593) 4148 0 R (2597) 4150 0 R (2598) 4151 0 R (2599) 4152 0 R (26) 1838 0 R (26.0) 1066 0 R (26.73.104.2) 1070 0 R (260) 1997 0 R (2602) 4153 0 R (2603) 4154 0 R (2604) 4155 0 R (2605) 4156 0 R (2606) 4157 0 R (2607) 4158 0 R (2608) 4159 0 R (2609) 4160 0 R (261) 1998 0 R (2612) 4165 0 R (2613) 4166 0 R (2614) 4167 0 R (2616) 4169 0 R (2617) 4170 0 R (2618) 4171 0 R (2619) 4172 0 R (262) 1999 0 R (2620) 4173 0 R (2621) 4174 0 R (2622) 1700 0 R (2624) 4175 0 R (2625) 4176 0 R (2626) 4177 0 R (2629) 4182 0 R (263) 2000 0 R (2630) 4183 0 R (2632) 4185 0 R (2636) 4187 0 R (2638) 4188 0 R (264) 2001 0 R (2642) 4190 0 R (2644) 4191 0 R (2645) 4192 0 R (2649) 4194 0 R (265) 2002 0 R (2651) 4195 0 R (2652) 4196 0 R (2653) 4197 0 R (2657) 4199 0 R (2659) 4200 0 R (266) 2003 0 R (2663) 4202 0 R (2665) 4203 0 R (2666) 4204 0 R (267) 2004 0 R (2670) 4206 0 R (2672) 4207 0 R (2673) 4208 0 R (2674) 4214 0 R (2675) 4215 0 R (2676) 4216 0 R (2677) 4217 0 R (2681) 4219 0 R (2683) 4220 0 R (2684) 4221 0 R (2685) 4222 0 R (2686) 4223 0 R (2687) 4224 0 R (2688) 4225 0 R (2689) 4226 0 R (2693) 4228 0 R (2694) 4229 0 R (2696) 4230 0 R (2697) 4231 0 R (27.0) 1074 0 R (27.73.105.2) 1078 0 R (27.73.106.2) 1082 0 R (270) 2005 0 R (2701) 4233 0 R (2702) 4234 0 R (2703) 4235 0 R (2705) 4236 0 R (2706) 4237 0 R (2707) 4213 0 R (2709) 4242 0 R (271) 2006 0 R (2710) 4243 0 R (2711) 4244 0 R (2712) 4245 0 R (2713) 4246 0 R (2714) 4247 0 R (2715) 4248 0 R (2716) 4249 0 R (2717) 4250 0 R (2718) 4251 0 R (2719) 4252 0 R (2720) 4253 0 R (2721) 4254 0 R (2722) 4255 0 R (2726) 4257 0 R (273) 2008 0 R (2731) 4259 0 R (2732) 4260 0 R (2734) 4261 0 R (2736) 4263 0 R (274) 2009 0 R (2740) 4265 0 R (2745) 4267 0 R (2747) 4273 0 R (2748) 4274 0 R (275) 2010 0 R (2752) 4276 0 R (2754) 4277 0 R (2756) 4279 0 R (276) 2011 0 R (2760) 4281 0 R (2765) 4283 0 R (2767) 4284 0 R (2768) 4285 0 R (2769) 4286 0 R (277) 2012 0 R (2773) 4288 0 R (2774) 4289 0 R (2776) 4290 0 R (2777) 4291 0 R (2778) 4292 0 R (2779) 4293 0 R (278) 2013 0 R (2780) 4294 0 R (2781) 4295 0 R (2782) 4296 0 R (2786) 4302 0 R (2788) 4303 0 R (2789) 4304 0 R (279) 2014 0 R (2793) 4306 0 R (2798) 4308 0 R (28) 1840 0 R (28.0) 1086 0 R (28.73.107.2) 1090 0 R (28.73.108.2) 1094 0 R (280) 2015 0 R (2800) 4309 0 R (2804) 4311 0 R (2805) 4312 0 R (2807) 4313 0 R (2811) 4315 0 R (2816) 4317 0 R (2821) 4319 0 R (2825) 4322 0 R (2829) 4328 0 R (283) 2018 0 R (2834) 4330 0 R (2839) 4332 0 R (284) 2019 0 R (2841) 4333 0 R (2842) 4334 0 R (2843) 4335 0 R (2844) 4336 0 R (2845) 4337 0 R (2846) 4338 0 R (2847) 4339 0 R (2848) 4340 0 R (2849) 4341 0 R (285) 2020 0 R (2850) 4342 0 R (2851) 4343 0 R (2852) 4344 0 R (2853) 4345 0 R (2854) 4346 0 R (2855) 4347 0 R (2856) 4348 0 R (2857) 4349 0 R (2858) 4350 0 R (286) 2021 0 R (2863) 4353 0 R (2865) 4354 0 R (2866) 4355 0 R (2867) 4356 0 R (2868) 4357 0 R (2869) 4362 0 R (287) 2022 0 R (2870) 4363 0 R (2874) 4365 0 R (2876) 4366 0 R (2877) 4367 0 R (2878) 4368 0 R (2879) 4369 0 R (288) 2023 0 R (2880) 4370 0 R (2881) 4371 0 R (2882) 4372 0 R (2883) 4373 0 R (2885) 4375 0 R (2886) 4376 0 R (2887) 4377 0 R (2888) 4378 0 R (2889) 4379 0 R (289) 2024 0 R (2890) 4380 0 R (2892) 4382 0 R (2896) 4388 0 R (2898) 4389 0 R (2899) 4390 0 R (29.0) 1098 0 R (29.73.109.2) 1102 0 R (29.73.110.2) 1106 0 R (290) 2025 0 R (2900) 4391 0 R (2901) 4392 0 R (2906) 4395 0 R (2909) 4397 0 R (291) 2026 0 R (2913) 4399 0 R (2915) 4400 0 R (2919) 4402 0 R (292) 2027 0 R (2921) 4403 0 R (2922) 4404 0 R (2923) 4405 0 R (2924) 4406 0 R (2925) 4407 0 R (2926) 4408 0 R (2927) 4409 0 R (2928) 4410 0 R (2929) 4411 0 R (293) 2031 0 R (2930) 4412 0 R (2931) 4413 0 R (2932) 4414 0 R (2933) 4415 0 R (2934) 4416 0 R (2935) 4421 0 R (2936) 4422 0 R (2937) 4423 0 R (2938) 4424 0 R (2939) 4425 0 R (294) 2032 0 R (2940) 4426 0 R (2941) 4427 0 R (2942) 4428 0 R (2943) 4429 0 R (2944) 4430 0 R (2948) 4432 0 R (295) 2033 0 R (2950) 4433 0 R (2951) 4434 0 R (2952) 4435 0 R (2953) 4436 0 R (2957) 4438 0 R (296) 2034 0 R (2962) 4440 0 R (2964) 4441 0 R (2965) 4442 0 R (2966) 4443 0 R (2967) 4444 0 R (2968) 4445 0 R (2969) 4446 0 R (297) 2035 0 R (2970) 4447 0 R (2971) 4448 0 R (2973) 4450 0 R (2974) 4451 0 R (2978) 4453 0 R (298) 2036 0 R (2980) 4454 0 R (2981) 4455 0 R (2982) 4456 0 R (2983) 4457 0 R (2984) 4458 0 R (2985) 4459 0 R (2986) 4460 0 R (2988) 4462 0 R (299) 2037 0 R (2992) 4464 0 R (2994) 4465 0 R (2995) 4466 0 R (2996) 4467 0 R (3.0) 10 0 R (30.0) 1110 0 R (30.73.111.2) 1114 0 R (300) 2038 0 R (3000) 4476 0 R (3002) 4477 0 R (3003) 4478 0 R (3004) 4479 0 R (3005) 4480 0 R (3006) 4481 0 R (301) 2039 0 R (3010) 4483 0 R (3012) 4484 0 R (3013) 4485 0 R (3014) 4486 0 R (3015) 4487 0 R (3019) 4489 0 R (302) 2040 0 R (3021) 4490 0 R (3022) 4491 0 R (3023) 4492 0 R (3025) 4494 0 R (3029) 4496 0 R (303) 2041 0 R (3031) 4497 0 R (3033) 4474 0 R (3038) 4504 0 R (304) 2042 0 R (3043) 4506 0 R (3044) 4507 0 R (3046) 4508 0 R (3047) 4509 0 R (3048) 4510 0 R (3049) 4511 0 R (305) 2043 0 R (3050) 4512 0 R (3054) 4514 0 R (3056) 4515 0 R (3057) 4516 0 R (3058) 4517 0 R (3059) 4518 0 R (306) 2044 0 R (3060) 4519 0 R (3061) 4520 0 R (3062) 4521 0 R (3063) 4522 0 R (3064) 4523 0 R (3065) 4524 0 R (3066) 4525 0 R (3067) 4526 0 R (3068) 4527 0 R (3069) 4528 0 R (307) 2045 0 R (3071) 4530 0 R (3075) 4532 0 R (308) 2046 0 R (3080) 4534 0 R (3082) 4540 0 R (3083) 4541 0 R (3084) 4542 0 R (3085) 4543 0 R (3086) 4544 0 R (3087) 4545 0 R (3091) 4547 0 R (3092) 4548 0 R (3094) 4549 0 R (31) 1841 0 R (310) 2048 0 R (3105) 4552 0 R (3106) 4553 0 R (311) 2049 0 R (3111) 4555 0 R (3113) 4556 0 R (3117) 4558 0 R (3118) 4559 0 R (312) 2050 0 R (3120) 4560 0 R (3121) 4561 0 R (3122) 4562 0 R (3123) 4563 0 R (3124) 4564 0 R (3126) 4539 0 R (313) 2051 0 R (3130) 4571 0 R (3132) 4572 0 R (3133) 4573 0 R (3134) 4574 0 R (3138) 4576 0 R (314) 2052 0 R (3140) 4577 0 R (3141) 4578 0 R (3142) 4579 0 R (3143) 4580 0 R (3147) 4582 0 R (3148) 4583 0 R (3149) 4584 0 R (315) 2053 0 R (3151) 4585 0 R (3152) 4586 0 R (3153) 4587 0 R (3157) 4589 0 R (3159) 4590 0 R (316) 2054 0 R (3160) 4591 0 R (3161) 4592 0 R (3162) 4593 0 R (3163) 4594 0 R (3164) 4595 0 R (3165) 4596 0 R (3166) 4597 0 R (3167) 4598 0 R (3168) 4599 0 R (3169) 4604 0 R (317) 2055 0 R (3170) 4605 0 R (3171) 4606 0 R (3172) 4607 0 R (3173) 4608 0 R (3174) 4609 0 R (3175) 4610 0 R (3178) 4615 0 R (3181) 4616 0 R (3182) 4617 0 R (3183) 4618 0 R (3184) 4619 0 R (3187) 4622 0 R (3188) 4623 0 R (3189) 4624 0 R (319) 2057 0 R (3190) 4625 0 R (3191) 4626 0 R (3194) 4627 0 R (3195) 4628 0 R (3196) 4629 0 R (3197) 4630 0 R (3198) 4631 0 R (32) 1842 0 R (320) 2058 0 R (3202) 4632 0 R (3203) 4633 0 R (3204) 4634 0 R (3205) 4635 0 R (3206) 4636 0 R (3207) 4637 0 R (3208) 4643 0 R (321) 2059 0 R (3211) 4644 0 R (3212) 4645 0 R (3213) 4646 0 R (3216) 4647 0 R (3217) 4648 0 R (3218) 4649 0 R (3219) 4650 0 R (322) 2060 0 R (3220) 4651 0 R (3221) 4652 0 R (3222) 4653 0 R (3223) 4654 0 R (3226) 4655 0 R (3227) 4656 0 R (3228) 4657 0 R (3229) 4662 0 R (323) 2061 0 R (3230) 4663 0 R (3231) 4664 0 R (3232) 4665 0 R (3233) 4666 0 R (3234) 4667 0 R (3235) 4668 0 R (3238) 4669 0 R (3239) 4670 0 R (324) 2062 0 R (3240) 4671 0 R (3241) 4672 0 R (3242) 4673 0 R (3243) 4674 0 R (3246) 4675 0 R (3247) 4676 0 R (3248) 4681 0 R (3249) 4682 0 R (325) 2063 0 R (3250) 4683 0 R (3251) 4684 0 R (3254) 4685 0 R (3255) 4686 0 R (3256) 4687 0 R (3257) 4688 0 R (3258) 4689 0 R (326) 2064 0 R (3261) 4690 0 R (3262) 4691 0 R (3263) 4692 0 R (3264) 4693 0 R (3265) 4694 0 R (3266) 4695 0 R (3267) 4696 0 R (3268) 1784 0 R (327) 2065 0 R (3270) 4697 0 R (3271) 4698 0 R (3272) 4703 0 R (3273) 4704 0 R (3274) 4705 0 R (3278) 4706 0 R (3279) 4707 0 R (3280) 4708 0 R (3281) 4709 0 R (3285) 4711 0 R (3286) 4712 0 R (3287) 4713 0 R (3288) 4714 0 R (3289) 4715 0 R (329) 2067 0 R (3292) 4720 0 R (3293) 4721 0 R (3296) 4722 0 R (3297) 4723 0 R (3298) 4724 0 R (3299) 4725 0 R (33) 1843 0 R (330) 2068 0 R (3300) 4726 0 R (3301) 4727 0 R (3302) 4728 0 R (3303) 4729 0 R (3304) 4730 0 R (3305) 4731 0 R (3306) 4732 0 R (3307) 4733 0 R (3308) 4734 0 R (3309) 4735 0 R (3310) 4736 0 R (3311) 4737 0 R (3312) 4738 0 R (3313) 4739 0 R (3314) 4740 0 R (3315) 4741 0 R (3316) 4742 0 R (3317) 4743 0 R (3318) 4744 0 R (3319) 4745 0 R (332) 2070 0 R (3320) 4746 0 R (3321) 4747 0 R (3322) 4748 0 R (3323) 4749 0 R (3324) 4750 0 R (3327) 4751 0 R (3328) 4752 0 R (3329) 4753 0 R (333) 2071 0 R (3330) 4754 0 R (3331) 4755 0 R (3332) 4756 0 R (3333) 4757 0 R (3334) 4758 0 R (3335) 4759 0 R (3340) 4764 0 R (3341) 4765 0 R (3342) 4766 0 R (3343) 4767 0 R (3344) 4768 0 R (3345) 4769 0 R (3346) 4770 0 R (3347) 4771 0 R (3348) 4772 0 R (3349) 4773 0 R (335) 2073 0 R (3350) 4774 0 R (3351) 4775 0 R (3352) 4776 0 R (3353) 4777 0 R (3354) 4778 0 R (3355) 4779 0 R (3358) 4780 0 R (3359) 4781 0 R (336) 2074 0 R (3360) 4782 0 R (3361) 4783 0 R (3362) 4784 0 R (3363) 4785 0 R (3364) 4786 0 R (3365) 4794 0 R (3366) 4787 0 R (3368) 4795 0 R (3369) 4796 0 R (3370) 4797 0 R (3371) 4798 0 R (3372) 4799 0 R (3373) 4800 0 R (3374) 4801 0 R (3375) 4802 0 R (3376) 4803 0 R (3377) 4804 0 R (3378) 4805 0 R (3379) 4806 0 R (338) 2076 0 R (3380) 4807 0 R (3381) 4808 0 R (3382) 4809 0 R (3383) 4810 0 R (3384) 4811 0 R (3385) 4812 0 R (3386) 4813 0 R (3387) 4814 0 R (3388) 4815 0 R (3389) 4816 0 R (339) 2077 0 R (3390) 4817 0 R (3391) 4818 0 R (3392) 4823 0 R (3393) 4793 0 R (3395) 4824 0 R (3396) 4825 0 R (3397) 4826 0 R (3398) 4827 0 R (3399) 4828 0 R (3400) 4829 0 R (3401) 4830 0 R (3402) 4831 0 R (3403) 4832 0 R (3404) 4833 0 R (3405) 4834 0 R (3406) 4835 0 R (3407) 4836 0 R (3408) 4837 0 R (3409) 4838 0 R (341) 2079 0 R (3412) 4839 0 R (3413) 4840 0 R (3414) 4841 0 R (3415) 4842 0 R (3416) 4843 0 R (3417) 4844 0 R (3418) 4845 0 R (3419) 4846 0 R (342) 2080 0 R (3420) 4847 0 R (3421) 4852 0 R (3422) 4853 0 R (3423) 4854 0 R (3424) 4855 0 R (3425) 4856 0 R (3426) 4857 0 R (3427) 4858 0 R (3428) 4859 0 R (3429) 4860 0 R (3430) 4861 0 R (3431) 4862 0 R (3432) 4863 0 R (3433) 4864 0 R (3434) 4865 0 R (3435) 4866 0 R (3436) 4867 0 R (3437) 4868 0 R (3438) 4869 0 R (3439) 4870 0 R (344) 2082 0 R (3440) 4871 0 R (3443) 4876 0 R (3444) 4877 0 R (3445) 4878 0 R (3448) 4879 0 R (3449) 4880 0 R (345) 2083 0 R (3450) 4881 0 R (3453) 4882 0 R (3454) 4883 0 R (3455) 4884 0 R (3456) 4885 0 R (3457) 4886 0 R (3458) 4887 0 R (3459) 4892 0 R (3460) 4893 0 R (3463) 4894 0 R (3464) 4895 0 R (3467) 4896 0 R (3468) 4897 0 R (3469) 4898 0 R (3470) 4904 0 R (3473) 4905 0 R (3474) 4906 0 R (3475) 4907 0 R (3476) 4908 0 R (3477) 4909 0 R (3478) 4910 0 R (3479) 4911 0 R (3480) 4912 0 R (3481) 4913 0 R (3482) 4914 0 R (3483) 4915 0 R (3484) 4916 0 R (3485) 4917 0 R (3486) 4918 0 R (3487) 4919 0 R (3488) 4920 0 R (3489) 4921 0 R (349) 2085 0 R (3490) 4922 0 R (3491) 4923 0 R (3492) 4924 0 R (3493) 4925 0 R (3494) 4926 0 R (3495) 4927 0 R (3496) 4928 0 R (3497) 4929 0 R (3498) 4930 0 R (3499) 4931 0 R (350) 2089 0 R (3500) 4932 0 R (3501) 4933 0 R (3502) 4934 0 R (3503) 4935 0 R (3504) 4903 0 R (3505) 4941 0 R (3506) 4942 0 R (3509) 4943 0 R (3510) 4944 0 R (3511) 4945 0 R (3514) 4946 0 R (3515) 4947 0 R (3518) 4948 0 R (3519) 4953 0 R (3522) 4954 0 R (3525) 4955 0 R (3528) 4956 0 R (3529) 4957 0 R (353) 2090 0 R (3530) 4958 0 R (3533) 4959 0 R (3534) 4960 0 R (3535) 4961 0 R (3536) 4966 0 R (3537) 4967 0 R (3539) 4972 0 R (3543) 4973 0 R (3544) 4974 0 R (3545) 4975 0 R (3546) 4976 0 R (3551) 4979 0 R (3552) 4980 0 R (3553) 4981 0 R (3554) 4982 0 R (3555) 4983 0 R (3556) 4984 0 R (3558) 4985 0 R (3559) 4986 0 R (356) 2091 0 R (3560) 4987 0 R (3561) 4988 0 R (3562) 4989 0 R (3564) 4990 0 R (3565) 4991 0 R (3566) 4992 0 R (3567) 4993 0 R (3568) 4994 0 R (3569) 4995 0 R (357) 2092 0 R (3570) 4996 0 R (3571) 4997 0 R (3572) 4998 0 R (3574) 4999 0 R (3575) 5000 0 R (3576) 5001 0 R (3577) 5002 0 R (3578) 5003 0 R (3579) 5004 0 R (358) 2093 0 R (3580) 5005 0 R (3581) 5006 0 R (3582) 5007 0 R (3583) 5008 0 R (3584) 5009 0 R (3586) 5010 0 R (3587) 5011 0 R (3588) 5012 0 R (3589) 5013 0 R (359) 2094 0 R (3590) 5014 0 R (3591) 5015 0 R (3596) 5022 0 R (3597) 5023 0 R (3598) 5024 0 R (3599) 5025 0 R (36) 1844 0 R (360) 2095 0 R (3600) 5026 0 R (3601) 5027 0 R (3603) 5028 0 R (3604) 5029 0 R (3605) 5030 0 R (3608) 5031 0 R (3609) 5032 0 R (361) 2096 0 R (3615) 5034 0 R (3616) 5035 0 R (3617) 5036 0 R (3618) 5037 0 R (362) 2097 0 R (3621) 5039 0 R (3622) 5040 0 R (3626) 5041 0 R (3627) 5042 0 R (3628) 5043 0 R (3629) 5044 0 R (363) 2098 0 R (3630) 5045 0 R (3633) 5046 0 R (3634) 5047 0 R (3635) 5048 0 R (3636) 5049 0 R (3637) 5055 0 R (3638) 5056 0 R (3639) 5057 0 R (364) 2099 0 R (3644) 5059 0 R (3645) 5060 0 R (3646) 5061 0 R (3647) 5062 0 R (3650) 5063 0 R (3651) 5064 0 R (3652) 5065 0 R (3658) 5069 0 R (3659) 5070 0 R (3660) 5071 0 R (3661) 5072 0 R (3662) 5073 0 R (3667) 5076 0 R (3668) 5077 0 R (367) 2100 0 R (3674) 5083 0 R (3675) 5084 0 R (3676) 5085 0 R (3677) 5086 0 R (3678) 5087 0 R (3679) 5088 0 R (3680) 5089 0 R (3683) 5091 0 R (3684) 5092 0 R (3686) 5094 0 R (3687) 5095 0 R (3689) 5096 0 R (3690) 5097 0 R (3691) 5098 0 R (3692) 5099 0 R (3694) 5100 0 R (3695) 5101 0 R (3696) 5102 0 R (3697) 5103 0 R (3698) 5104 0 R (37) 1845 0 R (370) 2101 0 R (3700) 5105 0 R (3701) 5106 0 R (3702) 5107 0 R (3703) 5108 0 R (3710) 5111 0 R (3711) 5112 0 R (3712) 5113 0 R (3715) 5114 0 R (3716) 5115 0 R (3718) 5121 0 R (3719) 5122 0 R (3720) 5123 0 R (3721) 5124 0 R (3725) 5126 0 R (3726) 5127 0 R (3727) 5128 0 R (3728) 5129 0 R (3729) 5130 0 R (373) 2102 0 R (3730) 5131 0 R (3731) 5132 0 R (3732) 5133 0 R (3738) 5135 0 R (3739) 5136 0 R (3743) 5138 0 R (3744) 5139 0 R (3745) 5140 0 R (3750) 5142 0 R (3751) 5143 0 R (3752) 5144 0 R (3754) 5149 0 R (3755) 5150 0 R (3756) 5151 0 R (3757) 5152 0 R (3758) 5153 0 R (3759) 5154 0 R (376) 2103 0 R (3760) 5155 0 R (3761) 5156 0 R (3762) 5157 0 R (3763) 5158 0 R (3764) 5159 0 R (3765) 5160 0 R (3766) 5161 0 R (3767) 5162 0 R (377) 2104 0 R (3772) 5165 0 R (3773) 5166 0 R (3774) 5167 0 R (3778) 5169 0 R (3779) 5170 0 R (378) 2105 0 R (3784) 5173 0 R (3785) 5174 0 R (3786) 5175 0 R (3787) 5178 0 R (3788) 5176 0 R (3789) 5177 0 R (38) 1846 0 R (381) 2111 0 R (382) 2112 0 R (385) 2113 0 R (388) 2114 0 R (389) 2115 0 R (39) 1847 0 R (390) 2116 0 R (391) 2117 0 R (393) 2119 0 R (394) 2120 0 R (395) 2121 0 R (396) 2122 0 R (399) 2123 0 R (4.0) 14 0 R (40) 1848 0 R (400) 2124 0 R (404) 2131 0 R (405) 2132 0 R (406) 2133 0 R (407) 2110 0 R (409) 2134 0 R (41) 1849 0 R (410) 2135 0 R (411) 2136 0 R (412) 2137 0 R (413) 2138 0 R (414) 2139 0 R (415) 2140 0 R (416) 2141 0 R (417) 2142 0 R (418) 2143 0 R (419) 2144 0 R (42) 1850 0 R (420) 2145 0 R (421) 2146 0 R (424) 2147 0 R (429) 2151 0 R (43) 1851 0 R (430) 2152 0 R (434) 2155 0 R (435) 2156 0 R (436) 2157 0 R (437) 2158 0 R (438) 2159 0 R (439) 2160 0 R (44) 1852 0 R (440) 2130 0 R (442) 2165 0 R (443) 2166 0 R (444) 2167 0 R (446) 2168 0 R (447) 2169 0 R (448) 2170 0 R (449) 2171 0 R (45) 1853 0 R (450) 2172 0 R (451) 2173 0 R (452) 2174 0 R (453) 2175 0 R (454) 2176 0 R (456) 2177 0 R (457) 2178 0 R (458) 2179 0 R (459) 2180 0 R (46) 1854 0 R (460) 2181 0 R (461) 2182 0 R (462) 2183 0 R (463) 2184 0 R (466) 2191 0 R (467) 2192 0 R (468) 2193 0 R (469) 2196 0 R (47) 1855 0 R (471) 2198 0 R (472) 2199 0 R (473) 2200 0 R (474) 2201 0 R (475) 2202 0 R (476) 2203 0 R (477) 2204 0 R (478) 2205 0 R (479) 2206 0 R (48) 1856 0 R (480) 2207 0 R (481) 2208 0 R (482) 2209 0 R (483) 2210 0 R (484) 2211 0 R (485) 2212 0 R (486) 2213 0 R (487) 2214 0 R (488) 2215 0 R (489) 2216 0 R (49) 1857 0 R (490) 2217 0 R (493) 2218 0 R (494) 2219 0 R (495) 2220 0 R (497) 2221 0 R (498) 2222 0 R (499) 2223 0 R (5.0) 18 0 R (5.1.1) 22 0 R (5.2.1) 26 0 R (5.3.1) 30 0 R (5.4.1) 34 0 R (5.5.1) 38 0 R (50) 1858 0 R (500) 2224 0 R (502) 2226 0 R (503) 2227 0 R (504) 2228 0 R (505) 2229 0 R (506) 2230 0 R (507) 2231 0 R (508) 2232 0 R (509) 2233 0 R (51) 1859 0 R (510) 2234 0 R (511) 2239 0 R (513) 2240 0 R (514) 2241 0 R (515) 2242 0 R (516) 2243 0 R (517) 2244 0 R (518) 2245 0 R (519) 2246 0 R (52) 1860 0 R (520) 2247 0 R (521) 2248 0 R (522) 2249 0 R (523) 2250 0 R (524) 2251 0 R (525) 2252 0 R (526) 2253 0 R (527) 2254 0 R (528) 2255 0 R (529) 2256 0 R (53) 1861 0 R (530) 2257 0 R (531) 2258 0 R (532) 2259 0 R (533) 2260 0 R (534) 1261 0 R (536) 2261 0 R (537) 2262 0 R (538) 2263 0 R (539) 2264 0 R (54) 1862 0 R (540) 2265 0 R (541) 2266 0 R (544) 2267 0 R (549) 2269 0 R (55) 1863 0 R (550) 2270 0 R (551) 2271 0 R (553) 2272 0 R (554) 2273 0 R (555) 2274 0 R (557) 2275 0 R (558) 2276 0 R (559) 2281 0 R (56) 1867 0 R (560) 2282 0 R (561) 2283 0 R (562) 2284 0 R (563) 2285 0 R (564) 2286 0 R (565) 2287 0 R (566) 2288 0 R (568) 2289 0 R (569) 2290 0 R (57) 1868 0 R (570) 2291 0 R (571) 2292 0 R (572) 2293 0 R (573) 2294 0 R (574) 2295 0 R (576) 2296 0 R (577) 2297 0 R (578) 2298 0 R (579) 2299 0 R (58) 1869 0 R (583) 2300 0 R (584) 2301 0 R (585) 2302 0 R (586) 2303 0 R (587) 2304 0 R (588) 2305 0 R (589) 2306 0 R (59) 1870 0 R (590) 2307 0 R (591) 2308 0 R (592) 2309 0 R (593) 2310 0 R (594) 2311 0 R (595) 2312 0 R (596) 2313 0 R (597) 2314 0 R (598) 2315 0 R (599) 2321 0 R (6.0) 42 0 R (6.10.1) 258 0 R (6.10.22.2) 262 0 R (6.10.23.2) 266 0 R (6.10.23.23.3) 270 0 R (6.10.23.23.7.4) 274 0 R (6.10.23.23.8.4) 278 0 R (6.10.23.23.9.4) 282 0 R (6.10.24.2) 286 0 R (6.10.25.2) 290 0 R (6.10.25.24.3) 294 0 R (6.10.25.25.3) 298 0 R (6.10.26.2) 302 0 R (6.10.26.26.3) 306 0 R (6.10.27.2) 310 0 R (6.6.1) 46 0 R (6.6.1.2) 50 0 R (6.6.2.1.3) 58 0 R (6.6.2.2) 54 0 R (6.6.2.2.3) 62 0 R (6.6.3.2) 66 0 R (6.6.4.2) 70 0 R (6.6.5.10.3) 106 0 R (6.6.5.11.3) 110 0 R (6.6.5.2) 74 0 R (6.6.5.3.3) 78 0 R (6.6.5.4.3) 82 0 R (6.6.5.5.3) 86 0 R (6.6.5.6.3) 90 0 R (6.6.5.7.3) 94 0 R (6.6.5.8.3) 98 0 R (6.6.5.9.3) 102 0 R (6.6.6.2) 114 0 R (6.7.1) 118 0 R (6.7.10.14.3) 170 0 R (6.7.10.15.3) 174 0 R (6.7.10.2) 166 0 R (6.7.11.2) 178 0 R (6.7.7.2) 122 0 R (6.7.8.12.1.4) 134 0 R (6.7.8.12.2.4) 138 0 R (6.7.8.12.3) 130 0 R (6.7.8.12.3.4) 142 0 R (6.7.8.12.4.4) 146 0 R (6.7.8.13.3) 150 0 R (6.7.8.13.5.4) 154 0 R (6.7.8.13.6.4) 158 0 R (6.7.8.2) 126 0 R (6.7.9.2) 162 0 R (6.8.1) 182 0 R (6.8.12.2) 186 0 R (6.8.13.2) 190 0 R (6.8.14.2) 194 0 R (6.8.15.2) 198 0 R (6.8.16.2) 202 0 R (6.8.17.2) 206 0 R (6.8.18.2) 210 0 R (6.9.1) 214 0 R (6.9.19.16.3) 222 0 R (6.9.19.17.3) 226 0 R (6.9.19.18.3) 230 0 R (6.9.19.19.3) 234 0 R (6.9.19.2) 218 0 R (6.9.19.20.3) 238 0 R (6.9.20.2) 242 0 R (6.9.20.21.3) 246 0 R (6.9.20.22.3) 250 0 R (6.9.21.2) 254 0 R (600) 2322 0 R (601) 2323 0 R (602) 2324 0 R (603) 2325 0 R (604) 2326 0 R (605) 2327 0 R (606) 2328 0 R (607) 2329 0 R (608) 2330 0 R (609) 2331 0 R (613) 2333 0 R (614) 2334 0 R (616) 2336 0 R (617) 2337 0 R (618) 2338 0 R (619) 2339 0 R (62) 1871 0 R (621) 2341 0 R (622) 2342 0 R (623) 2343 0 R (624) 2344 0 R (625) 2345 0 R (626) 2346 0 R (627) 2347 0 R (628) 2348 0 R (63) 1872 0 R (632) 2350 0 R (633) 1267 0 R (635) 2355 0 R (636) 2320 0 R (638) 2356 0 R (639) 2359 0 R (640) 2360 0 R (641) 2361 0 R (642) 2362 0 R (643) 2363 0 R (644) 2364 0 R (645) 2365 0 R (646) 2366 0 R (647) 2367 0 R (648) 2368 0 R (649) 2369 0 R (65) 1873 0 R (650) 2370 0 R (651) 2371 0 R (652) 1268 0 R (654) 2372 0 R (655) 2373 0 R (656) 2374 0 R (657) 2375 0 R (658) 2376 0 R (659) 2377 0 R (66) 1874 0 R (660) 2378 0 R (661) 2379 0 R (662) 2380 0 R (663) 2381 0 R (664) 2382 0 R (665) 2383 0 R (666) 2384 0 R (667) 2385 0 R (67) 1875 0 R (670) 2391 0 R (671) 2392 0 R (672) 2393 0 R (673) 2394 0 R (674) 2395 0 R (675) 2396 0 R (678) 2397 0 R (68) 1876 0 R (680) 2399 0 R (681) 2400 0 R (682) 2401 0 R (683) 2402 0 R (684) 2403 0 R (685) 2404 0 R (686) 2405 0 R (689) 2406 0 R (690) 2407 0 R (691) 2408 0 R (692) 2409 0 R (693) 2410 0 R (694) 2411 0 R (695) 2412 0 R (696) 2413 0 R (697) 2414 0 R (698) 2415 0 R (699) 2416 0 R (7.0) 314 0 R (7.11.1) 318 0 R (7.12.1) 322 0 R (7.12.28.2) 326 0 R (7.12.29.2) 330 0 R (7.12.29.27.3) 334 0 R (7.12.29.28.3) 338 0 R (7.13.1) 342 0 R (7.14.1) 346 0 R (7.15.1) 350 0 R (7.16.1) 354 0 R (7.17.1) 358 0 R (7.18.1) 362 0 R (7.18.30.2) 366 0 R (7.18.31.2) 370 0 R (7.18.31.29.3) 374 0 R (7.18.32.2) 378 0 R (7.18.33.2) 382 0 R (7.18.33.30.3) 386 0 R (7.18.33.31.3) 390 0 R (7.18.34.2) 394 0 R (7.18.34.32.10.4) 402 0 R (7.18.34.32.11.4) 406 0 R (7.18.34.32.12.4) 410 0 R (7.18.34.32.13.4) 414 0 R (7.18.34.32.14.4) 418 0 R (7.18.34.32.15.4) 422 0 R (7.18.34.32.16.4) 426 0 R (7.18.34.32.17.4) 430 0 R (7.18.34.32.18.4) 434 0 R (7.18.34.32.3) 398 0 R (7.18.34.33.3) 438 0 R (7.18.34.34.3) 442 0 R (7.19.1) 446 0 R (7.20.1) 450 0 R (7.21.1) 454 0 R (7.21.35.2) 458 0 R (7.21.36.2) 462 0 R (7.21.37.2) 466 0 R (7.21.38.2) 470 0 R (7.21.38.35.3) 474 0 R (7.21.38.36.3) 478 0 R (7.21.38.37.3) 482 0 R (7.22.1) 486 0 R (7.22.39.2) 490 0 R (7.22.40.2) 494 0 R (7.22.40.38.3) 498 0 R (7.22.40.39.3) 502 0 R (7.22.40.40.3) 506 0 R (7.22.41.2) 510 0 R (70) 1877 0 R (702) 2422 0 R (703) 2390 0 R (704) 2423 0 R (705) 2424 0 R (706) 2425 0 R (709) 2427 0 R (71) 1878 0 R (710) 2428 0 R (711) 2429 0 R (714) 2431 0 R (715) 2432 0 R (716) 2433 0 R (717) 2434 0 R (718) 2435 0 R (719) 2436 0 R (72) 1879 0 R (720) 2437 0 R (723) 2439 0 R (724) 2440 0 R (725) 2441 0 R (726) 2442 0 R (727) 2443 0 R (73) 1880 0 R (730) 2445 0 R (731) 2446 0 R (732) 2447 0 R (733) 2448 0 R (736) 2450 0 R (737) 2451 0 R (738) 2457 0 R (739) 2458 0 R (742) 2460 0 R (743) 2461 0 R (744) 2462 0 R (745) 2463 0 R (748) 2465 0 R (749) 2466 0 R (75) 1881 0 R (750) 2467 0 R (751) 2468 0 R (754) 2469 0 R (755) 2470 0 R (756) 2471 0 R (757) 2472 0 R (758) 2473 0 R (759) 2474 0 R (76) 1882 0 R (760) 2475 0 R (761) 2476 0 R (762) 2477 0 R (763) 2478 0 R (764) 2479 0 R (765) 2480 0 R (768) 2481 0 R (769) 2482 0 R (77) 1883 0 R (770) 2483 0 R (773) 2489 0 R (776) 2490 0 R (777) 2491 0 R (778) 2492 0 R (78) 1884 0 R (781) 2493 0 R (784) 2496 0 R (785) 2497 0 R (786) 2498 0 R (787) 2499 0 R (788) 2500 0 R (789) 2501 0 R (790) 2502 0 R (791) 2503 0 R (792) 2504 0 R (793) 2505 0 R (796) 2506 0 R (799) 2507 0 R (8.0) 514 0 R (8.23.1) 518 0 R (8.23.42.2) 522 0 R (8.23.43.2) 526 0 R (8.23.44.2) 530 0 R (8.24.1) 534 0 R (8.24.45.2) 538 0 R (8.24.46.2) 542 0 R (8.24.47.2) 546 0 R (8.25.1) 550 0 R (8.25.48.2) 554 0 R (8.25.49.2) 558 0 R (8.26.1) 562 0 R (8.26.50.2) 566 0 R (80) 1885 0 R (802) 2510 0 R (803) 2488 0 R (805) 2516 0 R (808) 2517 0 R (81) 1886 0 R (812) 2518 0 R (815) 2519 0 R (816) 2520 0 R (817) 2521 0 R (82) 1887 0 R (821) 2523 0 R (822) 2524 0 R (823) 2525 0 R (824) 2526 0 R (825) 2527 0 R (826) 2528 0 R (828) 2530 0 R (829) 2531 0 R (83) 1888 0 R (830) 2532 0 R (831) 2533 0 R (832) 2534 0 R (833) 2535 0 R (834) 2536 0 R (835) 2537 0 R (836) 2538 0 R (837) 2539 0 R (838) 2540 0 R (839) 2541 0 R (843) 2549 0 R (844) 2550 0 R (846) 2551 0 R (848) 2552 0 R (85) 1889 0 R (851) 2553 0 R (852) 2554 0 R (853) 2555 0 R (854) 2556 0 R (855) 2557 0 R (856) 2558 0 R (857) 2559 0 R (858) 2560 0 R (859) 2561 0 R (86) 1890 0 R (860) 2562 0 R (861) 2563 0 R (862) 2564 0 R (864) 2565 0 R (865) 2566 0 R (866) 2567 0 R (867) 2568 0 R (87) 1891 0 R (871) 1384 0 R (873) 2569 0 R (875) 1385 0 R (877) 2571 0 R (878) 2572 0 R (879) 2577 0 R (88) 1892 0 R (880) 2578 0 R (881) 2579 0 R (882) 2580 0 R (883) 1386 0 R (885) 2581 0 R (887) 2582 0 R (888) 2583 0 R (889) 2584 0 R (891) 2585 0 R (892) 2586 0 R (893) 2587 0 R (894) 2588 0 R (896) 2589 0 R (897) 2590 0 R (898) 2591 0 R (899) 2592 0 R (9.0) 570 0 R (9.27.1) 574 0 R (9.27.51.2) 578 0 R (9.27.52.2) 582 0 R (9.27.53.2) 586 0 R (9.27.54.2) 590 0 R (9.27.55.2) 594 0 R (9.27.56.2) 598 0 R (9.28.1) 602 0 R (9.29.1) 606 0 R (9.30.1) 610 0 R (9.31.1) 614 0 R (9.31.57.2) 618 0 R (9.31.57.41.3) 622 0 R (9.32.1) 626 0 R (9.32.58.2) 630 0 R (9.32.59.2) 634 0 R (9.32.60.2) 638 0 R (9.32.61.2) 642 0 R (9.32.62.2) 646 0 R (90) 1893 0 R (900) 2593 0 R (901) 2599 0 R (902) 2600 0 R (903) 2601 0 R (904) 2602 0 R (905) 2603 0 R (906) 2604 0 R (907) 2605 0 R (908) 2606 0 R (909) 2607 0 R (91) 1894 0 R (910) 1387 0 R (912) 2608 0 R (913) 2609 0 R (914) 2610 0 R (915) 2611 0 R (916) 2612 0 R (917) 2613 0 R (918) 2614 0 R (919) 2615 0 R (92) 1895 0 R (920) 2616 0 R (921) 2617 0 R (922) 2618 0 R (923) 2619 0 R (924) 2620 0 R (925) 2621 0 R (928) 2622 0 R (929) 1389 0 R (93) 1896 0 R (931) 2628 0 R (932) 2629 0 R (933) 2630 0 R (934) 2631 0 R (935) 2632 0 R (936) 2633 0 R (937) 2634 0 R (938) 2635 0 R (939) 2636 0 R (940) 2637 0 R (941) 2638 0 R (942) 1390 0 R (944) 2639 0 R (945) 2640 0 R (946) 2641 0 R (947) 2642 0 R (948) 2643 0 R (949) 2644 0 R (95) 1897 0 R (950) 2645 0 R (951) 2646 0 R (952) 2627 0 R (953) 2651 0 R (954) 2652 0 R (955) 2653 0 R (956) 2654 0 R (957) 2655 0 R (958) 2656 0 R (959) 2657 0 R (96) 1898 0 R (960) 2658 0 R (961) 2659 0 R (962) 2660 0 R (963) 2661 0 R (964) 2662 0 R (965) 2663 0 R (966) 2664 0 R (967) 2665 0 R (968) 2666 0 R (969) 2667 0 R (97) 1899 0 R (970) 2668 0 R (971) 2669 0 R (972) 2670 0 R (973) 2671 0 R (974) 2672 0 R (975) 1391 0 R (977) 2673 0 R (978) 1392 0 R (98) 1900 0 R (980) 2678 0 R (981) 2679 0 R (982) 2680 0 R (983) 2681 0 R (984) 2682 0 R (985) 2683 0 R (986) 2684 0 R (987) 1393 0 R (989) 2685 0 R (99) 1901 0 R (991) 2687 0 R (992) 2688 0 R (993) 2689 0 R (994) 2690 0 R (995) 2691 0 R (996) 2692 0 R (997) 2693 0 R (998) 2694 0 R (999) 2695 0 R (Doc-Start) 1122 0 R (about) 1231 0 R (accountpreferences) 1686 0 R (administration) 1394 0 R (apache-addtype) 1273 0 R (attachments) 1683 0 R (bonsai) 1564 0 R (boolean) 1665 0 R (bug_page) 1662 0 R (bugreports) 1670 0 R (bzldap) 1272 0 R (charts) 1692 0 R (classifications) 1401 0 R (cmdline) 1788 0 R (cmdline-bugmail) 1789 0 R (commenting) 1682 0 R (components) 1403 0 R (configuration) 1256 0 R (conventions) 1236 0 R (copyright) 1232 0 R (createnewusers) 1399 0 R (credits) 1235 0 R (cust-change-permissions) 1558 0 R (cust-hooks) 1557 0 R (cust-templates) 1550 0 R (customization) 1549 0 R (cvs) 1565 0 R (database-engine) 1258 0 R (dbdoc) 1560 0 R (dbmodify) 1559 0 R (defaultuser) 1397 0 R (dependencytree) 1684 0 R (disclaimer) 1233 0 R (emailpreferences) 1688 0 R (extraconfig) 1266 0 R (faq) 1774 0 R (faq-admin) 4321 0 R (faq-admin-cvsupdate) 4331 0 R (faq-admin-enable-unconfirmed) 4352 0 R (faq-admin-livebackup) 4329 0 R (faq-admin-midair) 4323 0 R (faq-admin-moving) 4364 0 R (faq-db) 4461 0 R (faq-db-corrupted) 4463 0 R (faq-db-manualedit) 4475 0 R (faq-db-permissions) 4482 0 R (faq-db-synchronize) 4488 0 R (faq-email) 4396 0 R (faq-email-mailif) 4437 0 R (faq-email-nomail) 4398 0 R (faq-email-nonreceived) 4452 0 R (faq-email-sendmailnow) 4439 0 R (faq-email-testing) 4401 0 R (faq-email-whine) 4431 0 R (faq-general) 4184 0 R (faq-general-bonsaitools) 4227 0 R (faq-general-bzmissing) 4205 0 R (faq-general-companies) 4193 0 R (faq-general-compare) 4201 0 R (faq-general-cookie) 4256 0 R (faq-general-license) 4186 0 R (faq-general-maintainers) 4198 0 R (faq-general-mysql) 4218 0 R (faq-general-perlpath) 4232 0 R (faq-general-support) 4189 0 R (faq-hacking) 4569 0 R (faq-hacking-bugzillabugs) 4575 0 R (faq-hacking-patches) 4588 0 R (faq-hacking-priority) 4581 0 R (faq-hacking-templatestyle) 4570 0 R (faq-mod-perl) 4258 0 R (faq-nt) 4493 0 R (faq-nt-bundle) 4503 0 R (faq-nt-dbi) 4513 0 R (faq-nt-easiest) 4495 0 R (faq-nt-mappings) 4505 0 R (faq-phb) 4262 0 R (faq-phb-backup) 4307 0 R (faq-phb-client) 4264 0 R (faq-phb-cost) 4316 0 R (faq-phb-data) 4287 0 R (faq-phb-email) 4280 0 R (faq-phb-emailapp) 4282 0 R (faq-phb-installtime) 4314 0 R (faq-phb-l10n) 4297 0 R (faq-phb-maintenance) 4310 0 R (faq-phb-priorities) 4266 0 R (faq-phb-renameBugs) 4318 0 R (faq-phb-reporting) 4275 0 R (faq-phb-reports) 4305 0 R (faq-security) 4381 0 R (faq-security-knownproblems) 4394 0 R (faq-security-mysql) 4383 0 R (faq-use) 4529 0 R (faq-use-accept) 4546 0 R (faq-use-attachment) 4551 0 R (faq-use-changeaddress) 4531 0 R (faq-use-close) 4557 0 R (faq-use-keyword) 4554 0 R (faq-use-query) 4533 0 R (flag-askto) 1410 0 R (flag-type-attachment) 1412 0 R (flag-type-bug) 1413 0 R (flag-types) 1411 0 R (flag-values) 1409 0 R (flags) 1695 0 R (flags-about) 1408 0 R (flags-admin) 1414 0 R (flags-create) 1415 0 R (flags-create-field-active) 3052 0 R (flags-create-field-category) 3012 0 R (flags-create-field-cclist) 3062 0 R (flags-create-field-description) 3010 0 R (flags-create-field-multiplicable) 3067 0 R (flags-create-field-name) 3008 0 R (flags-create-field-requestable) 3055 0 R (flags-create-field-sortkey) 3044 0 R (flags-create-field-specific) 3064 0 R (flags-delete) 1416 0 R (flags-edit) 1417 0 R (flags-overview) 1406 0 R (flags-simpleexample) 1407 0 R (general-advice) 1776 0 R (generalpreferences) 1687 0 R (gfdl) 1794 0 R (gfdl-0) 1795 0 R (gfdl-1) 1796 0 R (gfdl-10) 1805 0 R (gfdl-2) 1797 0 R (gfdl-3) 1798 0 R (gfdl-4) 1799 0 R (gfdl-5) 1800 0 R (gfdl-6) 1801 0 R (gfdl-7) 1802 0 R (gfdl-8) 1803 0 R (gfdl-9) 1804 0 R (gfdl-howto) 1806 0 R (gloss-a) 4977 0 R (gloss-apache) 4978 0 R (gloss-b) 5017 0 R (gloss-bugzilla) 1929 0 R (gloss-c) 5033 0 R (gloss-cgi) 1991 0 R (gloss-component) 5038 0 R (gloss-contrib) 2452 0 R (gloss-cpan) 2544 0 R (gloss-d) 5058 0 R (gloss-daemon) 3333 0 R (gloss-dos) 3475 0 R (gloss-g) 5067 0 R (gloss-groups) 5068 0 R (gloss-htaccess) 3445 0 R (gloss-j) 5074 0 R (gloss-javascript) 5075 0 R (gloss-m) 5054 0 R (gloss-mta) 4469 0 R (gloss-mysql) 5090 0 R (gloss-p) 5110 0 R (gloss-ppm) 2511 0 R (gloss-product) 2887 0 R (gloss-q) 5125 0 R (gloss-r) 5134 0 R (gloss-rdbms) 5116 0 R (gloss-regexp) 5137 0 R (gloss-s) 5141 0 R (gloss-service) 3334 0 R (gloss-t) 5163 0 R (gloss-target-milestone) 5164 0 R (gloss-tcl) 5168 0 R (gloss-z) 5171 0 R (gloss-zarro) 5172 0 R (glossary) 1807 0 R (groups) 1420 0 R (hintsandtips) 1679 0 R (http) 1262 0 R (http-apache) 1263 0 R (http-iis) 1264 0 R (index) 1123 0 R (install-MTA) 1255 0 R (install-bzfiles) 1244 0 R (install-config-bugzilla) 1265 0 R (install-database) 1240 0 R (install-modules-chart-base) 1249 0 R (install-modules-dbd-mysql) 1246 0 R (install-modules-gd) 1248 0 R (install-modules-gd-graph) 1250 0 R (install-modules-gd-text-align) 1251 0 R (install-modules-mime-parser) 1253 0 R (install-modules-patchreader) 1254 0 R (install-modules-template) 1247 0 R (install-modules-xml-parser) 1252 0 R (install-mysql) 1241 0 R (install-perl) 1239 0 R (install-perlmodules) 1245 0 R (install-perlmodules-manual) 1790 0 R (install-perlmodules-nonroot) 1388 0 R (install-pg) 1242 0 R (install-setupdatabase) 2154 0 R (install-setupdatabase-adduser) 2185 0 R (install-webserver) 1243 0 R (installation) 1238 0 R (installation-whining) 1270 0 R (installation-whining-cron) 1269 0 R (installing-bugzilla) 1237 0 R (integration) 1563 0 R (lifecycle) 1663 0 R (lifecycle-image) 1826 0 R (list) 1669 0 R (localconfig) 1257 0 R (macosx-libraries) 1381 0 R (macosx-sendmail) 1380 0 R (manageusers) 1398 0 R (milestones) 1405 0 R (modifyusers) 1400 0 R (modules-manual-download) 1792 0 R (modules-manual-instructions) 1791 0 R (modules-manual-optional) 1793 0 R (multiplecharts) 1668 0 R (myaccount) 1661 0 R (mysql) 1259 0 R (negation) 1667 0 R (newversions) 1234 0 R (nonroot) 1383 0 R (os-macosx) 1379 0 R (os-mandrake) 1382 0 R (os-specific) 1274 0 R (os-win32) 1275 0 R (page.1) 1121 0 R (page.10) 2129 0 R (page.100) 4719 0 R (page.101) 4763 0 R (page.102) 4792 0 R (page.103) 4822 0 R (page.104) 4851 0 R (page.105) 4875 0 R (page.106) 4891 0 R (page.107) 4902 0 R (page.108) 4940 0 R (page.109) 4952 0 R (page.11) 2164 0 R (page.110) 4965 0 R (page.111) 4971 0 R (page.112) 5021 0 R (page.113) 5053 0 R (page.114) 5082 0 R (page.115) 5120 0 R (page.116) 5148 0 R (page.12) 2190 0 R (page.13) 2238 0 R (page.14) 2280 0 R (page.15) 2319 0 R (page.16) 2354 0 R (page.17) 2389 0 R (page.18) 2421 0 R (page.19) 2456 0 R (page.2) 1130 0 R (page.20) 2487 0 R (page.21) 2515 0 R (page.22) 2548 0 R (page.23) 2576 0 R (page.24) 2598 0 R (page.25) 2626 0 R (page.26) 2650 0 R (page.27) 2677 0 R (page.28) 2701 0 R (page.29) 2735 0 R (page.3) 1136 0 R (page.30) 2761 0 R (page.31) 2787 0 R (page.32) 2818 0 R (page.33) 2860 0 R (page.34) 2891 0 R (page.35) 2922 0 R (page.36) 2970 0 R (page.37) 3005 0 R (page.38) 3049 0 R (page.39) 3083 0 R (page.4) 1279 0 R (page.40) 3112 0 R (page.41) 3151 0 R (page.42) 3182 0 R (page.43) 3201 0 R (page.44) 3217 0 R (page.45) 3248 0 R (page.46) 3278 0 R (page.47) 3307 0 R (page.48) 3338 0 R (page.49) 3367 0 R (page.5) 1424 0 R (page.50) 3449 0 R (page.51) 3479 0 R (page.52) 3508 0 R (page.53) 3534 0 R (page.54) 3574 0 R (page.55) 3603 0 R (page.56) 3634 0 R (page.57) 3672 0 R (page.58) 3695 0 R (page.59) 3715 0 R (page.6) 1571 0 R (page.60) 3738 0 R (page.61) 3766 0 R (page.62) 3771 0 R (page.63) 3775 0 R (page.64) 3779 0 R (page.65) 3793 0 R (page.66) 3810 0 R (page.67) 3838 0 R (page.68) 3900 0 R (page.69) 3912 0 R (page.7) 1704 0 R (page.70) 3948 0 R (page.71) 3965 0 R (page.72) 3991 0 R (page.73) 4003 0 R (page.74) 4023 0 R (page.75) 4050 0 R (page.76) 4093 0 R (page.77) 4110 0 R (page.78) 4127 0 R (page.79) 4147 0 R (page.8) 1811 0 R (page.80) 4164 0 R (page.81) 4181 0 R (page.82) 4212 0 R (page.83) 4241 0 R (page.84) 4272 0 R (page.85) 4301 0 R (page.86) 4327 0 R (page.87) 4361 0 R (page.88) 4387 0 R (page.89) 4420 0 R (page.9) 2109 0 R (page.90) 4473 0 R (page.91) 4501 0 R (page.92) 4538 0 R (page.93) 4568 0 R (page.94) 4603 0 R (page.95) 4614 0 R (page.96) 4642 0 R (page.97) 4661 0 R (page.98) 4680 0 R (page.99) 4702 0 R (param-LDAPBaseDN) 2449 0 R (param-LDAPbinddn) 2444 0 R (param-LDAPmailattribute) 2464 0 R (param-LDAPserver) 2438 0 R (param-LDAPuidattribute) 2459 0 R (param-loginmethod) 2430 0 R (parameters) 1395 0 R (paranoid-security) 1781 0 R (patch-viewer) 1271 0 R (patches) 1787 0 R (patchviewer) 1671 0 R (patchviewer_bonsai_lxr) 1677 0 R (patchviewer_collapse) 1675 0 R (patchviewer_context) 1674 0 R (patchviewer_diff) 1673 0 R (patchviewer_link) 1676 0 R (patchviewer_unified_diff) 1678 0 R (patchviewer_view) 1672 0 R (permissionsettings) 1689 0 R (postgresql) 1260 0 R (products) 1402 0 R (pronouns) 1666 0 R (query) 1664 0 R (quicksearch) 1681 0 R (quips) 1419 0 R (reporting) 1690 0 R (reports) 1691 0 R (scm) 1566 0 R (security) 1535 0 R (security-bugzilla) 1547 0 R (security-bugzilla-charset) 1548 0 R (security-bugzilla-charset-ex) 1830 0 R (security-mysql) 1540 0 R (security-mysql-account) 1541 0 R (security-mysql-account-anonymous) 1828 0 R (security-mysql-account-root) 1827 0 R (security-mysql-network) 1543 0 R (security-mysql-network-ex) 1829 0 R (security-mysql-root) 1542 0 R (security-os) 1536 0 R (security-os-accounts) 1538 0 R (security-os-chroot) 1539 0 R (security-os-ports) 1537 0 R (security-webserver) 1544 0 R (security-webserver-access) 1545 0 R (security-webserver-mod-throttle) 1546 0 R (svn) 1567 0 R (table.1) 1923 0 R (table.2) 3629 0 R (table.3) 3834 0 R (table.4) 3883 0 R (table.5) 3958 0 R (table.6) 3984 0 R (table.7) 4006 0 R (table.8) 4044 0 R (table.9) 4550 0 R (template-directory) 1551 0 R (template-edit) 1553 0 R (template-formats) 1554 0 R (template-http-accept) 1556 0 R (template-method) 1552 0 R (template-specific) 1555 0 R (tinderbox) 1658 0 R (trbl-bundleBugzilla) 1779 0 R (trbl-dbdSponge) 1780 0 R (trbl-index) 1785 0 R (trbl-passwd-encryption) 1786 0 R (trbl-perlmodule) 1778 0 R (trbl-relogin-everyone) 1783 0 R (trbl-relogin-everyone-restrict) 1832 0 R (trbl-relogin-everyone-share) 1831 0 R (trbl-testserver) 1777 0 R (trouble-filetemp) 1782 0 R (troubleshooting) 1775 0 R (upgrade-cvs) 1531 0 R (upgrade-patches) 1533 0 R (upgrade-tarball) 1532 0 R (upgrading) 1528 0 R (upgrading-completion) 1534 0 R (upgrading-methods) 1530 0 R (upgrading-version-defns) 1529 0 R (useradmin) 1396 0 R (userpreferences) 1685 0 R (using) 1659 0 R (using-intro) 1660 0 R (versions) 1404 0 R (voting) 1418 0 R (whining) 1696 0 R (whining-overview) 1697 0 R (whining-query) 1699 0 R (whining-schedule) 1698 0 R (win32-code-changes) 1376 0 R (win32-email) 1378 0 R (win32-http) 1377 0 R (win32-perl) 1374 0 R (win32-perl-modules) 1375 0 R] +5209 0 obj << +/Names [(1.0) 2 0 R (10.0) 650 0 R (10.33.1) 654 0 R (10.34.1) 658 0 R (10.35.1) 662 0 R (10.36.1) 666 0 R (10.37.1) 670 0 R (10.37.63.2) 674 0 R (10.37.63.42.3) 678 0 R (10.37.63.43.3) 682 0 R (10.37.63.44.3) 686 0 R (10.38.1) 690 0 R (10.39.1) 694 0 R (10.40.1) 698 0 R (10.40.64.2) 702 0 R (10.40.65.2) 706 0 R (10.40.66.2) 710 0 R (10.40.67.2) 714 0 R (10.40.68.2) 718 0 R (10.40.69.2) 722 0 R (10.40.70.2) 726 0 R (10.41.1) 730 0 R (10.41.71.2) 734 0 R (10.41.72.2) 738 0 R (10.41.73.2) 742 0 R (10.41.74.2) 746 0 R (10.41.75.2) 750 0 R (10.42.1) 754 0 R (10.42.76.2) 758 0 R (10.42.77.2) 762 0 R (10.42.78.2) 766 0 R (10.42.79.2) 770 0 R (10.43.1) 774 0 R (10.43.80.2) 778 0 R (10.43.81.2) 782 0 R (10.43.81.45.3) 786 0 R (10.43.81.46.3) 790 0 R (10.44.1) 794 0 R (10.45.1) 798 0 R (10.45.82.2) 802 0 R (10.45.83.2) 806 0 R (10.45.84.2) 810 0 R (10.45.85.2) 814 0 R (1000) 2698 0 R (1005) 2703 0 R (1006) 2704 0 R (1008) 2705 0 R (101) 1899 0 R (1010) 2706 0 R (1011) 2707 0 R (1012) 2708 0 R (1014) 2709 0 R (1015) 2710 0 R (1016) 2711 0 R (1017) 2712 0 R (1018) 2713 0 R (1019) 2714 0 R (102) 1900 0 R (1020) 2715 0 R (1022) 2716 0 R (1023) 2717 0 R (1024) 2718 0 R (1026) 2719 0 R (1027) 2720 0 R (1028) 2721 0 R (1029) 2722 0 R (103) 1901 0 R (1031) 2723 0 R (1032) 2724 0 R (1033) 2725 0 R (1034) 2726 0 R (1036) 2727 0 R (1037) 2728 0 R (1038) 2729 0 R (1039) 2730 0 R (104) 1902 0 R (1040) 2731 0 R (1041) 2732 0 R (1043) 2737 0 R (1045) 2738 0 R (1046) 2739 0 R (1047) 2740 0 R (1048) 2741 0 R (1049) 2742 0 R (105) 1903 0 R (1050) 2743 0 R (1052) 2744 0 R (1053) 2745 0 R (1054) 2746 0 R (1055) 2747 0 R (1057) 2748 0 R (1058) 2749 0 R (1059) 2750 0 R (106) 1904 0 R (1060) 2751 0 R (1062) 2752 0 R (1063) 2753 0 R (1064) 2754 0 R (1066) 2755 0 R (1067) 2756 0 R (1068) 2757 0 R (107) 1905 0 R (1070) 2764 0 R (1071) 2765 0 R (1072) 2766 0 R (1074) 2767 0 R (1075) 2768 0 R (1076) 2769 0 R (1077) 2770 0 R (1078) 2771 0 R (1079) 2772 0 R (108) 1906 0 R (1081) 2773 0 R (1082) 2774 0 R (1083) 2775 0 R (1084) 2776 0 R (1086) 2777 0 R (1087) 2778 0 R (1088) 2779 0 R (109) 1907 0 R (1090) 2780 0 R (1091) 2781 0 R (1092) 2782 0 R (1097) 2783 0 R (1098) 2784 0 R (1099) 2763 0 R (11.0) 818 0 R (110) 1908 0 R (1104) 2790 0 R (1105) 2791 0 R (1106) 2792 0 R (1107) 2793 0 R (1108) 2794 0 R (1109) 2795 0 R (111) 1909 0 R (1110) 2796 0 R (1111) 2797 0 R (1112) 2798 0 R (1113) 2799 0 R (1116) 2800 0 R (1117) 2801 0 R (1118) 2802 0 R (1119) 2803 0 R (112) 1910 0 R (1120) 2804 0 R (1121) 2805 0 R (1122) 2806 0 R (1123) 2807 0 R (1124) 2808 0 R (1125) 2809 0 R (1126) 2810 0 R (1127) 2811 0 R (1128) 2812 0 R (1129) 2813 0 R (113) 1911 0 R (1130) 2814 0 R (1131) 2815 0 R (1132) 2820 0 R (1133) 2821 0 R (1134) 2789 0 R (1136) 2822 0 R (1137) 2823 0 R (1138) 2824 0 R (1139) 2825 0 R (114) 1912 0 R (1140) 2826 0 R (1141) 2827 0 R (1142) 2828 0 R (1143) 2829 0 R (1144) 2830 0 R (1145) 2831 0 R (1146) 2832 0 R (1147) 2833 0 R (1148) 2834 0 R (1149) 2835 0 R (1150) 2836 0 R (1151) 2837 0 R (1152) 2838 0 R (1153) 2839 0 R (1154) 2840 0 R (1155) 2841 0 R (1156) 2842 0 R (1157) 2843 0 R (1158) 2844 0 R (1159) 2845 0 R (1160) 2846 0 R (1161) 2847 0 R (1162) 2848 0 R (1163) 2849 0 R (1164) 2850 0 R (1165) 2851 0 R (1166) 2852 0 R (1167) 2853 0 R (1168) 2854 0 R (117) 1916 0 R (1171) 2855 0 R (1172) 2856 0 R (1173) 2857 0 R (1174) 2858 0 R (1175) 2859 0 R (1176) 2864 0 R (1177) 2865 0 R (1178) 2866 0 R (1179) 2867 0 R (1182) 2868 0 R (1183) 2869 0 R (1184) 2870 0 R (1185) 2871 0 R (1186) 2872 0 R (1187) 2873 0 R (119) 1917 0 R (1190) 2874 0 R (1192) 2876 0 R (1193) 2877 0 R (1194) 2878 0 R (1195) 2879 0 R (1196) 2880 0 R (1197) 2881 0 R (1198) 2882 0 R (1199) 2883 0 R (12.0) 822 0 R (12.46.1) 826 0 R (12.47.1) 830 0 R (12.48.1) 834 0 R (12.49.1) 838 0 R (12.50.1) 842 0 R (12.51.1) 846 0 R (12.52.1) 850 0 R (12.53.1) 854 0 R (12.54.1) 858 0 R (12.55.1) 862 0 R (12.56.1) 866 0 R (120) 1918 0 R (1200) 2884 0 R (1201) 2890 0 R (1204) 2891 0 R (1205) 2892 0 R (1206) 2893 0 R (1207) 2894 0 R (1208) 2895 0 R (1209) 2896 0 R (121) 1919 0 R (1210) 2897 0 R (1211) 2898 0 R (1212) 2899 0 R (1213) 2900 0 R (1214) 2901 0 R (1217) 2902 0 R (1218) 2903 0 R (1219) 2904 0 R (1220) 2905 0 R (1221) 2906 0 R (1222) 2907 0 R (1223) 2908 0 R (1224) 2909 0 R (1225) 2910 0 R (1228) 2911 0 R (1229) 2912 0 R (1230) 2918 0 R (1231) 2919 0 R (1232) 2920 0 R (1233) 2921 0 R (1234) 2922 0 R (1235) 2923 0 R (1236) 2924 0 R (1237) 2925 0 R (1238) 2926 0 R (1239) 2927 0 R (1240) 2928 0 R (1243) 2929 0 R (1244) 2930 0 R (1245) 2931 0 R (1246) 2932 0 R (1249) 2933 0 R (1250) 2934 0 R (1251) 2935 0 R (1252) 2936 0 R (1253) 2937 0 R (1254) 2938 0 R (1255) 2939 0 R (1256) 2940 0 R (1257) 2941 0 R (1258) 2942 0 R (1259) 2943 0 R (1260) 2944 0 R (1261) 2945 0 R (1262) 2946 0 R (1263) 2947 0 R (1264) 2948 0 R (1265) 2949 0 R (1266) 2950 0 R (1267) 2951 0 R (1268) 2952 0 R (1269) 2953 0 R (1270) 2954 0 R (1271) 2955 0 R (1272) 2956 0 R (1273) 2957 0 R (1274) 2958 0 R (1275) 2959 0 R (1280) 2965 0 R (1281) 2966 0 R (1283) 2967 0 R (1284) 2968 0 R (1285) 2969 0 R (1286) 2970 0 R (1288) 2917 0 R (1290) 2971 0 R (1291) 2972 0 R (1292) 2973 0 R (1294) 2974 0 R (1295) 2975 0 R (1296) 2976 0 R (1297) 2977 0 R (1298) 2978 0 R (1299) 2979 0 R (13.0) 870 0 R (13.57.1) 874 0 R (13.58.1) 878 0 R (1300) 2980 0 R (1303) 2981 0 R (1304) 2982 0 R (1305) 2983 0 R (1306) 2984 0 R (1307) 2985 0 R (1308) 2986 0 R (1309) 2987 0 R (1310) 2988 0 R (1311) 2989 0 R (1312) 2990 0 R (1313) 2991 0 R (1316) 2992 0 R (1319) 2993 0 R (1320) 2994 0 R (1321) 2995 0 R (1322) 2996 0 R (1323) 2997 0 R (1324) 2998 0 R (1325) 2999 0 R (1326) 3000 0 R (1327) 3006 0 R (1328) 3007 0 R (1329) 3008 0 R (1330) 3009 0 R (1331) 3010 0 R (1332) 3011 0 R (1335) 3012 0 R (1336) 3013 0 R (1337) 3014 0 R (1338) 3015 0 R (1339) 3016 0 R (1342) 3017 0 R (1343) 3018 0 R (1344) 3019 0 R (1345) 3020 0 R (1346) 3021 0 R (1349) 3022 0 R (1350) 3023 0 R (1353) 3025 0 R (1356) 3027 0 R (1359) 3029 0 R (1360) 3030 0 R (1361) 3031 0 R (1362) 3032 0 R (1363) 3033 0 R (1364) 3034 0 R (1365) 3035 0 R (1366) 3040 0 R (1367) 3041 0 R (1368) 3042 0 R (1369) 3043 0 R (1370) 3005 0 R (1372) 3044 0 R (1373) 3045 0 R (1374) 3046 0 R (1375) 3047 0 R (1376) 3048 0 R (1377) 3049 0 R (1378) 3050 0 R (1379) 3051 0 R (1380) 3052 0 R (1381) 3053 0 R (1382) 3054 0 R (1383) 3055 0 R (1384) 3056 0 R (1385) 3057 0 R (1386) 3058 0 R (1387) 3059 0 R (1388) 3060 0 R (1389) 3061 0 R (1392) 3063 0 R (1393) 3064 0 R (1394) 3065 0 R (1397) 3067 0 R (1398) 3068 0 R (14.0) 882 0 R (14.59.1) 886 0 R (14.60.1) 890 0 R (14.61.1) 894 0 R (1401) 3070 0 R (1402) 3071 0 R (1403) 3072 0 R (1404) 3073 0 R (1405) 3074 0 R (1406) 3075 0 R (1409) 3077 0 R (1412) 3083 0 R (1413) 3084 0 R (1416) 3086 0 R (1417) 3087 0 R (1418) 3088 0 R (1419) 3089 0 R (1422) 3090 0 R (1423) 3091 0 R (1424) 3092 0 R (1425) 3093 0 R (1426) 3094 0 R (1427) 3095 0 R (1428) 3096 0 R (1429) 3097 0 R (1432) 3098 0 R (1433) 3099 0 R (1434) 3100 0 R (1437) 3101 0 R (1438) 3102 0 R (1439) 3103 0 R (1440) 3104 0 R (1441) 3105 0 R (1442) 3106 0 R (1443) 3107 0 R (1444) 3108 0 R (1445) 3109 0 R (1446) 3114 0 R (1447) 3115 0 R (1448) 3116 0 R (1449) 3117 0 R (1450) 3118 0 R (1451) 3119 0 R (1452) 3120 0 R (1455) 3121 0 R (1456) 3122 0 R (1457) 3123 0 R (1458) 3124 0 R (1459) 3125 0 R (1460) 3126 0 R (1463) 3127 0 R (1464) 3128 0 R (1465) 3129 0 R (1466) 3130 0 R (1467) 3131 0 R (1468) 3132 0 R (1469) 3133 0 R (1470) 3134 0 R (1471) 3135 0 R (1472) 3136 0 R (1473) 3137 0 R (1474) 1521 0 R (1476) 3143 0 R (1477) 3144 0 R (1478) 3145 0 R (1479) 3146 0 R (1480) 3147 0 R (1481) 3148 0 R (1482) 3149 0 R (1483) 3150 0 R (1484) 3151 0 R (1485) 3152 0 R (1486) 3153 0 R (1487) 3154 0 R (1488) 3155 0 R (1489) 3156 0 R (1490) 3157 0 R (1491) 3158 0 R (1492) 3159 0 R (1493) 3160 0 R (1494) 3161 0 R (1495) 3162 0 R (1496) 3163 0 R (1497) 3164 0 R (1498) 3165 0 R (1499) 3166 0 R (15.0) 898 0 R (15.62.1) 902 0 R (15.63.1) 906 0 R (15.64.1) 910 0 R (15.65.1) 914 0 R (15.66.1) 918 0 R (15.67.1) 922 0 R (15.68.1) 926 0 R (15.69.1) 930 0 R (15.70.1) 934 0 R (15.71.1) 938 0 R (15.72.1) 942 0 R (15.73.1) 946 0 R (1500) 3167 0 R (1501) 1522 0 R (1503) 3168 0 R (1504) 3169 0 R (1505) 3170 0 R (1506) 3171 0 R (1507) 3172 0 R (1508) 3173 0 R (1509) 3174 0 R (1510) 3175 0 R (1511) 1523 0 R (1513) 3181 0 R (1514) 3182 0 R (1515) 3142 0 R (1516) 3183 0 R (1517) 3184 0 R (1518) 3185 0 R (1519) 3186 0 R (1520) 3187 0 R (1521) 3188 0 R (1522) 3189 0 R (1523) 3190 0 R (1524) 3191 0 R (1525) 3192 0 R (1526) 3193 0 R (1527) 3194 0 R (1528) 3195 0 R (1529) 1524 0 R (1531) 1525 0 R (1533) 3196 0 R (1534) 3197 0 R (1535) 1526 0 R (1537) 3198 0 R (1538) 3203 0 R (1539) 1527 0 R (1541) 3204 0 R (1542) 3205 0 R (1543) 3206 0 R (1544) 3207 0 R (1545) 3208 0 R (1546) 3209 0 R (1547) 3210 0 R (1548) 3211 0 R (1549) 3212 0 R (1550) 3213 0 R (1551) 3214 0 R (1552) 3215 0 R (1555) 3216 0 R (1556) 3217 0 R (1557) 3218 0 R (1558) 3219 0 R (1559) 3220 0 R (1560) 3221 0 R (1563) 3227 0 R (1564) 3228 0 R (1565) 3229 0 R (1566) 3230 0 R (1567) 3231 0 R (1568) 3232 0 R (1571) 3233 0 R (1572) 3234 0 R (1573) 3235 0 R (1574) 3236 0 R (1576) 3238 0 R (1577) 3239 0 R (1579) 3241 0 R (1580) 3242 0 R (1582) 3244 0 R (1584) 3246 0 R (1585) 3247 0 R (1586) 3252 0 R (1587) 3226 0 R (1591) 3253 0 R (1592) 3254 0 R (1593) 3255 0 R (1594) 3256 0 R (1595) 3257 0 R (1596) 3258 0 R (1597) 3259 0 R (1598) 3260 0 R (1599) 3261 0 R (16.0) 950 0 R (1600) 3262 0 R (1601) 3263 0 R (1602) 3264 0 R (1603) 3265 0 R (1604) 3266 0 R (1607) 3267 0 R (1608) 3268 0 R (1609) 3273 0 R (1610) 3274 0 R (1611) 3275 0 R (1612) 3276 0 R (1613) 3277 0 R (1614) 3278 0 R (1615) 3279 0 R (1616) 3280 0 R (1617) 3281 0 R (1618) 3282 0 R (1619) 3283 0 R (1620) 3284 0 R (1621) 3285 0 R (1622) 3286 0 R (1623) 3287 0 R (1624) 3288 0 R (1625) 3289 0 R (1626) 3290 0 R (1627) 3291 0 R (1630) 3292 0 R (1631) 3293 0 R (1632) 3294 0 R (1633) 3295 0 R (1634) 3296 0 R (1635) 3297 0 R (1636) 3298 0 R (1637) 3299 0 R (1638) 3300 0 R (1639) 3301 0 R (1640) 3306 0 R (1641) 3307 0 R (1642) 3308 0 R (1643) 3309 0 R (1647) 3311 0 R (1648) 3312 0 R (1649) 3313 0 R (1650) 3314 0 R (1651) 3315 0 R (1652) 3316 0 R (1653) 3317 0 R (1654) 3318 0 R (1655) 3319 0 R (1656) 3320 0 R (1659) 3326 0 R (1660) 3327 0 R (1661) 3328 0 R (1666) 3329 0 R (1669) 3330 0 R (1671) 3332 0 R (1672) 3333 0 R (1673) 3334 0 R (1674) 3335 0 R (1676) 3337 0 R (1677) 3338 0 R (1678) 3339 0 R (1679) 3340 0 R (1680) 3341 0 R (1681) 3342 0 R (1682) 3343 0 R (1683) 3344 0 R (1684) 3345 0 R (1685) 3346 0 R (1686) 3347 0 R (1690) 3348 0 R (1691) 3349 0 R (1696) 3356 0 R (17.0) 954 0 R (17.73.86.2) 958 0 R (1702) 3358 0 R (1703) 3359 0 R (1704) 3360 0 R (1705) 3361 0 R (1709) 3362 0 R (1710) 3363 0 R (1711) 3364 0 R (1712) 3365 0 R (1713) 3366 0 R (1717) 3367 0 R (1718) 3368 0 R (1720) 3369 0 R (1721) 3370 0 R (1722) 3371 0 R (1723) 3372 0 R (1724) 3373 0 R (1725) 3374 0 R (1730) 3376 0 R (1734) 3378 0 R (1735) 3379 0 R (1736) 3380 0 R (1741) 3385 0 R (1742) 3386 0 R (1743) 3387 0 R (1744) 3388 0 R (1748) 3391 0 R (1749) 3392 0 R (1750) 3393 0 R (1751) 3394 0 R (1752) 3395 0 R (1753) 3396 0 R (1755) 3397 0 R (1756) 3398 0 R (1757) 3399 0 R (1758) 3400 0 R (1759) 3401 0 R (1760) 3402 0 R (1761) 3403 0 R (1762) 3404 0 R (1763) 3405 0 R (1764) 3406 0 R (1765) 3407 0 R (1766) 3408 0 R (1768) 3409 0 R (1769) 3410 0 R (1770) 3411 0 R (1771) 3412 0 R (1772) 3413 0 R (1773) 3414 0 R (1774) 3415 0 R (1775) 3416 0 R (1776) 3417 0 R (1777) 3418 0 R (1778) 3419 0 R (1779) 3420 0 R (1780) 3421 0 R (1782) 3422 0 R (1783) 3423 0 R (1784) 3424 0 R (1785) 3425 0 R (1786) 3426 0 R (1787) 3427 0 R (1788) 3428 0 R (1789) 3429 0 R (1790) 3430 0 R (1792) 3431 0 R (1793) 3432 0 R (1794) 3433 0 R (1795) 3434 0 R (1796) 3435 0 R (1797) 3436 0 R (1798) 3437 0 R (1799) 3438 0 R (18.0) 962 0 R (18.73.87.2) 966 0 R (18.73.87.47.3) 970 0 R (1800) 3439 0 R (1801) 3440 0 R (1802) 3441 0 R (1803) 3442 0 R (1804) 3443 0 R (1805) 3444 0 R (1806) 3445 0 R (1807) 3446 0 R (1808) 3447 0 R (1809) 3448 0 R (1810) 3449 0 R (1811) 3450 0 R (1812) 3451 0 R (1813) 3452 0 R (1814) 3453 0 R (1815) 3454 0 R (1816) 3455 0 R (1817) 3456 0 R (1818) 3462 0 R (1819) 3463 0 R (182) 1924 0 R (1820) 3464 0 R (1821) 3465 0 R (1822) 3466 0 R (1823) 3467 0 R (1824) 3468 0 R (1825) 3469 0 R (183) 1925 0 R (1830) 3471 0 R (1831) 3472 0 R (1832) 3473 0 R (1834) 3475 0 R (1835) 3476 0 R (1836) 3477 0 R (1837) 3478 0 R (1842) 3479 0 R (1843) 3480 0 R (1844) 3481 0 R (1845) 3482 0 R (1846) 3483 0 R (1847) 3484 0 R (1852) 3490 0 R (1853) 3491 0 R (1857) 3493 0 R (1858) 3494 0 R (1859) 3495 0 R (1860) 3496 0 R (1861) 3497 0 R (1862) 3498 0 R (1863) 3499 0 R (1864) 3500 0 R (1865) 3501 0 R (1866) 3502 0 R (1869) 3503 0 R (1870) 3504 0 R (1871) 3505 0 R (1872) 3506 0 R (1873) 3507 0 R (1874) 3508 0 R (1875) 3509 0 R (1876) 3510 0 R (1877) 3511 0 R (1878) 3512 0 R (1879) 3513 0 R (188) 1930 0 R (1880) 3514 0 R (1881) 3519 0 R (1882) 3520 0 R (1883) 3521 0 R (1884) 3522 0 R (1885) 3523 0 R (1886) 3524 0 R (1887) 3525 0 R (1888) 3526 0 R (1889) 3527 0 R (189) 1931 0 R (1890) 3528 0 R (1891) 3529 0 R (1892) 3530 0 R (1895) 3531 0 R (1896) 3532 0 R (1897) 3533 0 R (1898) 3534 0 R (1899) 3535 0 R (19.0) 974 0 R (19.73.88.2) 978 0 R (19.73.89.2) 982 0 R (19.73.90.2) 986 0 R (190) 1932 0 R (1900) 3536 0 R (1901) 3537 0 R (1902) 3538 0 R (1903) 3539 0 R (1904) 3540 0 R (1907) 3546 0 R (1908) 3547 0 R (1909) 3548 0 R (191) 1935 0 R (1910) 3549 0 R (1911) 3550 0 R (1912) 3551 0 R (1913) 3552 0 R (1914) 3553 0 R (1915) 3554 0 R (1916) 3555 0 R (1917) 3556 0 R (1918) 3557 0 R (1919) 3558 0 R (1920) 3559 0 R (1921) 3560 0 R (1922) 3561 0 R (1923) 3562 0 R (1926) 3563 0 R (1927) 3564 0 R (1928) 3565 0 R (1929) 3566 0 R (193) 1938 0 R (1930) 3567 0 R (1931) 3568 0 R (1932) 3569 0 R (1933) 3570 0 R (1934) 3571 0 R (1935) 3572 0 R (1936) 3573 0 R (1937) 3574 0 R (1938) 3575 0 R (1939) 3576 0 R (194) 1939 0 R (1940) 3577 0 R (1941) 3578 0 R (1942) 3579 0 R (1943) 3580 0 R (1944) 3585 0 R (1945) 3586 0 R (1946) 3587 0 R (1947) 3588 0 R (1948) 3589 0 R (1949) 3590 0 R (195) 1940 0 R (1950) 3591 0 R (1951) 3592 0 R (1952) 3593 0 R (1953) 3594 0 R (1954) 3595 0 R (1955) 3596 0 R (1956) 3597 0 R (1957) 3598 0 R (1958) 3599 0 R (1959) 3600 0 R (196) 1941 0 R (1960) 3601 0 R (1961) 3602 0 R (1962) 3603 0 R (1963) 3604 0 R (1964) 3605 0 R (1965) 3606 0 R (1966) 3607 0 R (1967) 3608 0 R (1968) 3609 0 R (197) 1942 0 R (1971) 3614 0 R (1972) 3615 0 R (1973) 3616 0 R (1974) 3617 0 R (1975) 3618 0 R (1976) 3619 0 R (1977) 3620 0 R (198) 1943 0 R (1980) 3621 0 R (1981) 3622 0 R (1982) 3623 0 R (1983) 3624 0 R (1984) 3625 0 R (1985) 3626 0 R (1986) 3627 0 R (1987) 3628 0 R (1988) 3629 0 R (1989) 3630 0 R (199) 1944 0 R (1990) 3631 0 R (1991) 3632 0 R (1992) 3633 0 R (1993) 3634 0 R (1994) 3635 0 R (1995) 3636 0 R (1996) 3637 0 R (1997) 3638 0 R (2.0) 6 0 R (20.0) 990 0 R (20.73.91.2) 994 0 R (20.73.92.2) 998 0 R (20.73.93.2) 1002 0 R (20.73.94.2) 1006 0 R (200) 1945 0 R (2002) 3640 0 R (2003) 3645 0 R (2004) 3646 0 R (2005) 3647 0 R (2006) 3648 0 R (2007) 3649 0 R (2008) 3650 0 R (2009) 3651 0 R (201) 1946 0 R (2010) 3652 0 R (2011) 3653 0 R (2012) 3654 0 R (2013) 3655 0 R (2014) 3656 0 R (2015) 3657 0 R (2016) 3658 0 R (2017) 3659 0 R (2018) 3660 0 R (2019) 3661 0 R (2020) 3662 0 R (2021) 3663 0 R (2022) 3664 0 R (2023) 3665 0 R (2024) 3666 0 R (2025) 3667 0 R (2026) 3668 0 R (2027) 3669 0 R (2028) 3670 0 R (2029) 3671 0 R (2030) 3672 0 R (2031) 3673 0 R (2032) 3674 0 R (2033) 3675 0 R (2034) 3676 0 R (2035) 3677 0 R (2036) 3678 0 R (2037) 3684 0 R (2038) 3685 0 R (2039) 3686 0 R (204) 1948 0 R (2040) 3687 0 R (2041) 3688 0 R (2042) 3689 0 R (2045) 3690 0 R (2046) 3691 0 R (2047) 3692 0 R (2048) 3693 0 R (2049) 3694 0 R (2050) 3695 0 R (2051) 3696 0 R (2052) 3697 0 R (2053) 3698 0 R (2054) 3699 0 R (2055) 3700 0 R (2056) 3701 0 R (2057) 3706 0 R (2058) 3683 0 R (2059) 3707 0 R (2060) 3708 0 R (2061) 3709 0 R (2062) 3710 0 R (2063) 3711 0 R (2064) 3712 0 R (2065) 3713 0 R (2066) 3714 0 R (2069) 3715 0 R (207) 1950 0 R (2070) 3716 0 R (2071) 3717 0 R (2072) 3718 0 R (2073) 3719 0 R (2074) 3720 0 R (2075) 3721 0 R (2076) 3728 0 R (2077) 3729 0 R (2080) 3730 0 R (2081) 3731 0 R (2082) 3732 0 R (2083) 3733 0 R (2084) 3734 0 R (2085) 3735 0 R (2086) 3736 0 R (2087) 3737 0 R (2088) 1561 0 R (2090) 3738 0 R (2091) 3739 0 R (2092) 3740 0 R (2093) 3741 0 R (2094) 3742 0 R (2095) 3743 0 R (2096) 3744 0 R (2097) 3749 0 R (2098) 3727 0 R (21.0) 1010 0 R (21.73.95.2) 1014 0 R (21.73.96.2) 1018 0 R (210) 1952 0 R (2100) 3750 0 R (2101) 3751 0 R (2102) 3752 0 R (2103) 3753 0 R (2104) 3754 0 R (2105) 3755 0 R (2106) 3756 0 R (2107) 3757 0 R (2108) 3758 0 R (2109) 3759 0 R (2110) 3760 0 R (2111) 3761 0 R (2112) 3762 0 R (2113) 3763 0 R (2114) 3764 0 R (2115) 1562 0 R (2117) 3765 0 R (2118) 3766 0 R (2119) 3767 0 R (2120) 3768 0 R (2121) 3769 0 R (2122) 3770 0 R (2123) 3771 0 R (2124) 3772 0 R (2125) 3777 0 R (213) 1954 0 R (2130) 3790 0 R (2135) 3794 0 R (2136) 3795 0 R (2137) 3796 0 R (2138) 3797 0 R (2139) 3798 0 R (2140) 3799 0 R (2141) 3805 0 R (2142) 3806 0 R (2145) 3807 0 R (2146) 3808 0 R (2147) 3809 0 R (2148) 3810 0 R (2149) 3811 0 R (2152) 3812 0 R (2153) 3813 0 R (2156) 3814 0 R (2157) 3815 0 R (2158) 3816 0 R (216) 1956 0 R (2163) 3821 0 R (2164) 3822 0 R (2167) 3823 0 R (2168) 3824 0 R (2169) 3825 0 R (2170) 3826 0 R (2171) 3827 0 R (2172) 3828 0 R (2173) 3829 0 R (2174) 3830 0 R (2175) 3831 0 R (2176) 3832 0 R (2177) 3833 0 R (2178) 3834 0 R (2179) 3835 0 R (2180) 3836 0 R (2183) 3837 0 R (2184) 3838 0 R (2185) 3839 0 R (2186) 3840 0 R (2187) 3841 0 R (2188) 3842 0 R (2189) 3843 0 R (219) 1958 0 R (22.0) 1022 0 R (22.73.97.2) 1026 0 R (2210) 3849 0 R (2211) 3850 0 R (2212) 3851 0 R (2213) 3852 0 R (2214) 3853 0 R (2215) 3854 0 R (2216) 3855 0 R (2217) 3856 0 R (2218) 3857 0 R (2219) 3858 0 R (2220) 3859 0 R (2221) 3860 0 R (2222) 3861 0 R (2223) 3862 0 R (2224) 3863 0 R (2225) 3864 0 R (2226) 3865 0 R (2227) 3866 0 R (2228) 3867 0 R (2229) 3868 0 R (223) 1959 0 R (2230) 3869 0 R (2231) 3870 0 R (2232) 3871 0 R (2233) 3872 0 R (2234) 3873 0 R (2235) 3874 0 R (2236) 3875 0 R (2237) 3876 0 R (2238) 3877 0 R (2239) 3878 0 R (224) 1960 0 R (2240) 3879 0 R (2241) 3880 0 R (2242) 3881 0 R (2243) 3882 0 R (2244) 3883 0 R (2245) 3884 0 R (2246) 3885 0 R (2247) 3886 0 R (2248) 3887 0 R (2249) 3888 0 R (225) 1961 0 R (2250) 3889 0 R (2251) 3890 0 R (2252) 3891 0 R (2253) 3892 0 R (226) 1962 0 R (2274) 3894 0 R (2275) 3895 0 R (2276) 3896 0 R (2277) 3897 0 R (2278) 3898 0 R (2279) 3899 0 R (2280) 3900 0 R (2281) 3901 0 R (2282) 3902 0 R (2283) 3903 0 R (2284) 3904 0 R (2285) 3905 0 R (2288) 3911 0 R (229) 1966 0 R (2290) 3913 0 R (2291) 3914 0 R (2294) 3915 0 R (2299) 3916 0 R (23.0) 1030 0 R (23.73.98.2) 1034 0 R (2300) 3917 0 R (2301) 3918 0 R (2302) 3923 0 R (2305) 3924 0 R (2306) 3925 0 R (2307) 3926 0 R (2308) 3927 0 R (2309) 3928 0 R (2310) 3929 0 R (2311) 3930 0 R (2312) 3931 0 R (2313) 3932 0 R (2314) 3933 0 R (2315) 3934 0 R (2316) 3935 0 R (2317) 3936 0 R (2318) 3937 0 R (2319) 3938 0 R (232) 1967 0 R (2320) 3939 0 R (2321) 3940 0 R (2324) 3941 0 R (2327) 3942 0 R (2328) 3943 0 R (2329) 3944 0 R (233) 1968 0 R (2330) 3945 0 R (2331) 3946 0 R (2332) 3947 0 R (2333) 3948 0 R (2334) 3949 0 R (2335) 3950 0 R (2336) 3951 0 R (2337) 3952 0 R (2338) 3953 0 R (2339) 3954 0 R (234) 1969 0 R (2342) 3959 0 R (2343) 3960 0 R (2344) 3961 0 R (2345) 3962 0 R (2346) 3963 0 R (2347) 3964 0 R (235) 1970 0 R (2350) 3965 0 R (2351) 3966 0 R (2352) 3967 0 R (236) 1971 0 R (237) 1972 0 R (2371) 3969 0 R (2374) 3970 0 R (2375) 3971 0 R (2376) 3977 0 R (2377) 3978 0 R (2378) 3979 0 R (2379) 3980 0 R (238) 1973 0 R (2380) 3981 0 R (2381) 3982 0 R (2382) 3983 0 R (2383) 3984 0 R (2384) 3985 0 R (2385) 3986 0 R (2386) 3987 0 R (2387) 3988 0 R (2388) 3989 0 R (2389) 3990 0 R (239) 1974 0 R (2390) 3991 0 R (2393) 3992 0 R (2394) 3993 0 R (2395) 3994 0 R (24) 1833 0 R (24.0) 1038 0 R (24.73.100.2) 1046 0 R (24.73.99.2) 1042 0 R (240) 1975 0 R (2405) 3996 0 R (2408) 3997 0 R (2411) 4002 0 R (2414) 4003 0 R (2417) 4004 0 R (2420) 4005 0 R (2421) 4006 0 R (2424) 4007 0 R (2427) 4008 0 R (2428) 1680 0 R (243) 1976 0 R (2430) 4009 0 R (2431) 4014 0 R (2432) 4015 0 R (244) 1977 0 R (2441) 4017 0 R (2444) 4018 0 R (2445) 4019 0 R (2446) 4020 0 R (2447) 4021 0 R (2448) 4022 0 R (245) 1978 0 R (2451) 4023 0 R (2452) 4024 0 R (2455) 4025 0 R (2456) 4026 0 R (2457) 4027 0 R (2458) 4028 0 R (2459) 4029 0 R (246) 1979 0 R (2460) 4035 0 R (2463) 4036 0 R (2464) 4037 0 R (2465) 4038 0 R (2468) 4039 0 R (247) 1980 0 R (2471) 4040 0 R (2472) 4041 0 R (2473) 4042 0 R (2476) 4043 0 R (2477) 4044 0 R (2478) 4045 0 R (2479) 4046 0 R (2480) 4047 0 R (2481) 4048 0 R (2482) 4049 0 R (2483) 4050 0 R (2484) 4051 0 R (2485) 4052 0 R (2486) 4053 0 R (2490) 4055 0 R (2491) 4056 0 R (2494) 4062 0 R (2495) 4034 0 R (2497) 4063 0 R (2498) 4064 0 R (2499) 4065 0 R (25) 1834 0 R (25.0) 1050 0 R (25.73.101.2) 1054 0 R (25.73.102.2) 1058 0 R (25.73.103.2) 1062 0 R (250) 1981 0 R (2500) 4066 0 R (2501) 4067 0 R (2502) 4068 0 R (2503) 4069 0 R (2504) 4070 0 R (2505) 4071 0 R (2506) 4072 0 R (2507) 4073 0 R (2508) 4074 0 R (2509) 4075 0 R (251) 1982 0 R (2510) 4076 0 R (2511) 4077 0 R (2512) 4078 0 R (2513) 4079 0 R (2514) 4080 0 R (2515) 4081 0 R (2516) 4082 0 R (2517) 4083 0 R (2518) 4084 0 R (2519) 4085 0 R (2520) 4086 0 R (2521) 4087 0 R (2522) 4088 0 R (2523) 4089 0 R (2524) 4090 0 R (2525) 4091 0 R (2526) 4092 0 R (2527) 4093 0 R (2528) 4094 0 R (2529) 4095 0 R (253) 1984 0 R (2530) 4096 0 R (2531) 4097 0 R (2532) 4098 0 R (2533) 4099 0 R (2534) 4061 0 R (2536) 4105 0 R (2537) 4106 0 R (2538) 4107 0 R (2539) 4108 0 R (254) 1985 0 R (2540) 4109 0 R (2543) 4110 0 R (2546) 4111 0 R (2549) 4112 0 R (255) 1986 0 R (2550) 4113 0 R (2551) 4114 0 R (2552) 4115 0 R (2553) 4116 0 R (2556) 4122 0 R (2557) 4104 0 R (2558) 4123 0 R (2559) 4124 0 R (2560) 4125 0 R (2561) 4126 0 R (2562) 1693 0 R (2564) 4127 0 R (2565) 4128 0 R (2566) 4129 0 R (2567) 4130 0 R (2568) 4131 0 R (2569) 1694 0 R (2571) 4132 0 R (2572) 4133 0 R (2575) 4138 0 R (2576) 4139 0 R (2577) 4140 0 R (2578) 4141 0 R (2579) 4142 0 R (258) 1992 0 R (2580) 4143 0 R (2581) 4144 0 R (2582) 4145 0 R (2585) 4146 0 R (2586) 4147 0 R (2587) 4148 0 R (2588) 4149 0 R (2589) 4150 0 R (259) 1993 0 R (2590) 4151 0 R (2592) 4153 0 R (2593) 4158 0 R (2597) 4160 0 R (2598) 4161 0 R (2599) 4162 0 R (26) 1835 0 R (26.0) 1066 0 R (26.73.104.2) 1070 0 R (260) 1994 0 R (2602) 4163 0 R (2603) 4164 0 R (2604) 4165 0 R (2605) 4166 0 R (2606) 4167 0 R (2607) 4168 0 R (2608) 4169 0 R (2609) 4170 0 R (261) 1995 0 R (2612) 4175 0 R (2613) 4176 0 R (2614) 4177 0 R (2616) 4179 0 R (2617) 4180 0 R (2618) 4181 0 R (2619) 4182 0 R (262) 1996 0 R (2620) 4183 0 R (2621) 4184 0 R (2622) 1700 0 R (2624) 4185 0 R (2625) 4186 0 R (2626) 4187 0 R (2629) 4192 0 R (263) 1997 0 R (2630) 4193 0 R (2632) 4195 0 R (2636) 4197 0 R (2638) 4198 0 R (264) 1998 0 R (2642) 4200 0 R (2644) 4201 0 R (2645) 4202 0 R (2649) 4204 0 R (265) 1999 0 R (2651) 4205 0 R (2652) 4206 0 R (2653) 4207 0 R (2657) 4209 0 R (2659) 4210 0 R (266) 2000 0 R (2663) 4212 0 R (2665) 4213 0 R (2666) 4214 0 R (267) 2001 0 R (2670) 4216 0 R (2672) 4217 0 R (2673) 4218 0 R (2674) 4224 0 R (2675) 4225 0 R (2676) 4226 0 R (2677) 4227 0 R (2681) 4229 0 R (2683) 4230 0 R (2684) 4231 0 R (2685) 4232 0 R (2686) 4233 0 R (2687) 4234 0 R (2688) 4235 0 R (2689) 4236 0 R (2693) 4238 0 R (2694) 4239 0 R (2696) 4240 0 R (2697) 4241 0 R (27.0) 1074 0 R (27.73.105.2) 1078 0 R (27.73.106.2) 1082 0 R (270) 2002 0 R (2701) 4243 0 R (2702) 4244 0 R (2703) 4245 0 R (2705) 4246 0 R (2706) 4247 0 R (2707) 4223 0 R (2709) 4253 0 R (271) 2003 0 R (2710) 4254 0 R (2711) 4255 0 R (2712) 4256 0 R (2713) 4257 0 R (2714) 4258 0 R (2715) 4259 0 R (2716) 4260 0 R (2717) 4261 0 R (2718) 4262 0 R (2719) 4263 0 R (2720) 4264 0 R (2721) 4265 0 R (2722) 4266 0 R (2726) 4268 0 R (273) 2005 0 R (2731) 4270 0 R (2732) 4271 0 R (2734) 4272 0 R (2736) 4274 0 R (274) 2006 0 R (2740) 4276 0 R (2745) 4278 0 R (2747) 4283 0 R (2748) 4284 0 R (275) 2007 0 R (2752) 4286 0 R (2754) 4287 0 R (2756) 4289 0 R (276) 2008 0 R (2760) 4291 0 R (2765) 4293 0 R (2767) 4294 0 R (2768) 4295 0 R (2769) 4296 0 R (277) 2009 0 R (2773) 4298 0 R (2774) 4299 0 R (2776) 4300 0 R (2777) 4301 0 R (2778) 4302 0 R (2779) 4303 0 R (278) 2010 0 R (2780) 4304 0 R (2781) 4305 0 R (2782) 4306 0 R (2786) 4312 0 R (2788) 4313 0 R (2789) 4314 0 R (279) 2011 0 R (2793) 4316 0 R (2798) 4318 0 R (28) 1837 0 R (28.0) 1086 0 R (28.73.107.2) 1090 0 R (28.73.108.2) 1094 0 R (280) 2012 0 R (2800) 4319 0 R (2804) 4321 0 R (2805) 4322 0 R (2807) 4323 0 R (2811) 4325 0 R (2816) 4327 0 R (2821) 4329 0 R (2825) 4332 0 R (2829) 4338 0 R (283) 2015 0 R (2834) 4340 0 R (2839) 4342 0 R (284) 2016 0 R (2841) 4343 0 R (2842) 4344 0 R (2843) 4345 0 R (2844) 4346 0 R (2845) 4347 0 R (2846) 4348 0 R (2847) 4349 0 R (2848) 4350 0 R (2849) 4351 0 R (285) 2017 0 R (2850) 4352 0 R (2851) 4353 0 R (2852) 4354 0 R (2853) 4355 0 R (2854) 4356 0 R (2855) 4357 0 R (2856) 4358 0 R (2857) 4359 0 R (2858) 4360 0 R (286) 2018 0 R (2863) 4363 0 R (2865) 4364 0 R (2866) 4365 0 R (2867) 4366 0 R (2868) 4367 0 R (2869) 4372 0 R (287) 2019 0 R (2870) 4373 0 R (2874) 4375 0 R (2876) 4376 0 R (2877) 4377 0 R (2878) 4378 0 R (2879) 4379 0 R (288) 2020 0 R (2880) 4380 0 R (2881) 4381 0 R (2882) 4382 0 R (2883) 4383 0 R (2885) 4385 0 R (2886) 4386 0 R (2887) 4387 0 R (2888) 4388 0 R (2889) 4389 0 R (289) 2021 0 R (2890) 4390 0 R (2892) 4392 0 R (2896) 4398 0 R (2898) 4399 0 R (2899) 4400 0 R (29.0) 1098 0 R (29.73.109.2) 1102 0 R (29.73.110.2) 1106 0 R (290) 2022 0 R (2900) 4401 0 R (2901) 4402 0 R (2906) 4405 0 R (2909) 4407 0 R (291) 2023 0 R (2913) 4409 0 R (2915) 4410 0 R (2919) 4412 0 R (292) 2024 0 R (2921) 4413 0 R (2922) 4414 0 R (2923) 4415 0 R (2924) 4416 0 R (2925) 4417 0 R (2926) 4418 0 R (2927) 4419 0 R (2928) 4420 0 R (2929) 4421 0 R (293) 2028 0 R (2930) 4422 0 R (2931) 4423 0 R (2932) 4424 0 R (2933) 4425 0 R (2934) 4426 0 R (2935) 4432 0 R (2936) 4433 0 R (2937) 4434 0 R (2938) 4435 0 R (2939) 4436 0 R (294) 2029 0 R (2940) 4437 0 R (2941) 4438 0 R (2942) 4439 0 R (2943) 4440 0 R (2944) 4441 0 R (2948) 4443 0 R (295) 2030 0 R (2950) 4444 0 R (2951) 4445 0 R (2952) 4446 0 R (2953) 4447 0 R (2957) 4449 0 R (296) 2031 0 R (2962) 4451 0 R (2964) 4452 0 R (2965) 4453 0 R (2966) 4454 0 R (2967) 4455 0 R (2968) 4456 0 R (2969) 4457 0 R (297) 2032 0 R (2970) 4458 0 R (2971) 4459 0 R (2973) 4461 0 R (2974) 4462 0 R (2978) 4464 0 R (298) 2033 0 R (2980) 4465 0 R (2981) 4466 0 R (2982) 4467 0 R (2983) 4468 0 R (2984) 4469 0 R (2985) 4470 0 R (2986) 4471 0 R (2988) 4473 0 R (299) 2034 0 R (2992) 4475 0 R (2994) 4476 0 R (2995) 4477 0 R (2996) 4478 0 R (3.0) 10 0 R (30.0) 1110 0 R (30.73.111.2) 1114 0 R (300) 2035 0 R (3000) 4486 0 R (3002) 4487 0 R (3003) 4488 0 R (3004) 4489 0 R (3005) 4490 0 R (3006) 4491 0 R (301) 2036 0 R (3010) 4493 0 R (3012) 4494 0 R (3013) 4495 0 R (3014) 4496 0 R (3015) 4497 0 R (3019) 4499 0 R (302) 2037 0 R (3021) 4500 0 R (3022) 4501 0 R (3023) 4502 0 R (3025) 4504 0 R (3029) 4506 0 R (303) 2038 0 R (3031) 4507 0 R (3033) 4484 0 R (3038) 4514 0 R (304) 2039 0 R (3043) 4516 0 R (3044) 4517 0 R (3046) 4518 0 R (3047) 4519 0 R (3048) 4520 0 R (3049) 4521 0 R (305) 2040 0 R (3050) 4522 0 R (3054) 4524 0 R (3056) 4525 0 R (3057) 4526 0 R (3058) 4527 0 R (3059) 4528 0 R (306) 2041 0 R (3060) 4529 0 R (3061) 4530 0 R (3062) 4531 0 R (3063) 4532 0 R (3064) 4533 0 R (3065) 4534 0 R (3066) 4535 0 R (3067) 4536 0 R (3068) 4537 0 R (3069) 4538 0 R (307) 2042 0 R (3071) 4540 0 R (3075) 4542 0 R (308) 2043 0 R (3080) 4544 0 R (3082) 4550 0 R (3083) 4551 0 R (3084) 4552 0 R (3085) 4553 0 R (3086) 4554 0 R (3087) 4555 0 R (3091) 4557 0 R (3092) 4558 0 R (3094) 4559 0 R (31) 1838 0 R (310) 2045 0 R (3105) 4562 0 R (3106) 4563 0 R (311) 2046 0 R (3111) 4565 0 R (3113) 4566 0 R (3117) 4568 0 R (3118) 4569 0 R (312) 2047 0 R (3120) 4570 0 R (3121) 4571 0 R (3122) 4572 0 R (3123) 4573 0 R (3124) 4574 0 R (3126) 4549 0 R (313) 2048 0 R (3130) 4581 0 R (3132) 4582 0 R (3133) 4583 0 R (3134) 4584 0 R (3138) 4586 0 R (314) 2049 0 R (3140) 4587 0 R (3141) 4588 0 R (3142) 4589 0 R (3143) 4590 0 R (3147) 4592 0 R (3148) 4593 0 R (3149) 4594 0 R (315) 2050 0 R (3151) 4595 0 R (3152) 4596 0 R (3153) 4597 0 R (3157) 4599 0 R (3159) 4600 0 R (316) 2051 0 R (3160) 4601 0 R (3161) 4602 0 R (3162) 4603 0 R (3163) 4604 0 R (3164) 4605 0 R (3165) 4606 0 R (3166) 4607 0 R (3167) 4608 0 R (3168) 4609 0 R (3169) 4614 0 R (317) 2052 0 R (3170) 4615 0 R (3171) 4616 0 R (3172) 4617 0 R (3173) 4618 0 R (3174) 4619 0 R (3175) 4620 0 R (3178) 4626 0 R (3181) 4627 0 R (3182) 4628 0 R (3183) 4629 0 R (3184) 4630 0 R (3187) 4633 0 R (3188) 4634 0 R (3189) 4635 0 R (319) 2054 0 R (3190) 4636 0 R (3191) 4637 0 R (3194) 4638 0 R (3195) 4639 0 R (3196) 4640 0 R (3197) 4641 0 R (3198) 4642 0 R (32) 1839 0 R (320) 2055 0 R (3202) 4643 0 R (3203) 4644 0 R (3204) 4645 0 R (3205) 4646 0 R (3206) 4647 0 R (3207) 4648 0 R (3208) 4653 0 R (321) 2056 0 R (3211) 4654 0 R (3212) 4655 0 R (3213) 4656 0 R (3216) 4657 0 R (3217) 4658 0 R (3218) 4659 0 R (3219) 4660 0 R (322) 2057 0 R (3220) 4661 0 R (3221) 4662 0 R (3222) 4663 0 R (3223) 4664 0 R (3226) 4665 0 R (3227) 4666 0 R (3228) 4667 0 R (3229) 4672 0 R (323) 2058 0 R (3230) 4673 0 R (3231) 4674 0 R (3232) 4675 0 R (3233) 4676 0 R (3234) 4677 0 R (3235) 4678 0 R (3238) 4679 0 R (3239) 4680 0 R (324) 2059 0 R (3240) 4681 0 R (3241) 4682 0 R (3242) 4683 0 R (3243) 4684 0 R (3246) 4685 0 R (3247) 4686 0 R (3248) 4691 0 R (3249) 4692 0 R (325) 2060 0 R (3250) 4693 0 R (3251) 4694 0 R (3254) 4695 0 R (3255) 4696 0 R (3256) 4697 0 R (3257) 4698 0 R (3258) 4699 0 R (326) 2061 0 R (3261) 4700 0 R (3262) 4701 0 R (3263) 4702 0 R (3264) 4703 0 R (3265) 4704 0 R (3266) 4705 0 R (3267) 4706 0 R (3268) 1784 0 R (327) 2062 0 R (3270) 4707 0 R (3271) 4708 0 R (3272) 4713 0 R (3273) 4714 0 R (3274) 4715 0 R (3278) 4716 0 R (3279) 4717 0 R (328) 2063 0 R (3280) 4718 0 R (3281) 4719 0 R (3285) 4721 0 R (3286) 4722 0 R (3287) 4723 0 R (3288) 4724 0 R (3289) 4725 0 R (329) 2064 0 R (3292) 4730 0 R (3293) 4731 0 R (3296) 4732 0 R (3297) 4733 0 R (3298) 4734 0 R (3299) 4735 0 R (33) 1840 0 R (330) 2065 0 R (3300) 4736 0 R (3301) 4737 0 R (3302) 4738 0 R (3303) 4739 0 R (3304) 4740 0 R (3305) 4741 0 R (3306) 4742 0 R (3307) 4743 0 R (3308) 4744 0 R (3309) 4745 0 R (331) 2066 0 R (3310) 4746 0 R (3311) 4747 0 R (3312) 4748 0 R (3313) 4749 0 R (3314) 4750 0 R (3315) 4751 0 R (3316) 4752 0 R (3317) 4753 0 R (3318) 4754 0 R (3319) 4755 0 R (3320) 4756 0 R (3321) 4757 0 R (3322) 4758 0 R (3323) 4759 0 R (3324) 4760 0 R (3327) 4761 0 R (3328) 4762 0 R (3329) 4763 0 R (333) 2068 0 R (3330) 4764 0 R (3331) 4765 0 R (3332) 4766 0 R (3333) 4767 0 R (3334) 4768 0 R (3335) 4769 0 R (334) 2069 0 R (3340) 4775 0 R (3341) 4776 0 R (3342) 4777 0 R (3343) 4778 0 R (3344) 4779 0 R (3345) 4780 0 R (3346) 4781 0 R (3347) 4782 0 R (3348) 4783 0 R (3349) 4784 0 R (3350) 4785 0 R (3351) 4786 0 R (3352) 4787 0 R (3353) 4788 0 R (3354) 4789 0 R (3355) 4790 0 R (3358) 4791 0 R (3359) 4792 0 R (336) 2071 0 R (3360) 4793 0 R (3361) 4794 0 R (3362) 4795 0 R (3363) 4796 0 R (3364) 4797 0 R (3365) 4804 0 R (3366) 4798 0 R (3368) 4805 0 R (3369) 4806 0 R (337) 2072 0 R (3370) 4807 0 R (3371) 4808 0 R (3372) 4809 0 R (3373) 4810 0 R (3374) 4811 0 R (3375) 4812 0 R (3376) 4813 0 R (3377) 4814 0 R (3378) 4815 0 R (3379) 4816 0 R (3380) 4817 0 R (3381) 4818 0 R (3382) 4819 0 R (3383) 4820 0 R (3384) 4821 0 R (3385) 4822 0 R (3386) 4823 0 R (3387) 4824 0 R (3388) 4825 0 R (3389) 4826 0 R (339) 2074 0 R (3390) 4827 0 R (3391) 4828 0 R (3392) 4833 0 R (3393) 4803 0 R (3395) 4834 0 R (3396) 4835 0 R (3397) 4836 0 R (3398) 4837 0 R (3399) 4838 0 R (340) 2075 0 R (3400) 4839 0 R (3401) 4840 0 R (3402) 4841 0 R (3403) 4842 0 R (3404) 4843 0 R (3405) 4844 0 R (3406) 4845 0 R (3407) 4846 0 R (3408) 4847 0 R (3409) 4848 0 R (3410) 4849 0 R (3411) 4850 0 R (3412) 4851 0 R (3413) 4852 0 R (3414) 4853 0 R (3415) 4854 0 R (3416) 4855 0 R (3417) 4856 0 R (3418) 4857 0 R (3419) 4858 0 R (342) 2077 0 R (3422) 4863 0 R (3423) 4864 0 R (3424) 4865 0 R (3425) 4866 0 R (3426) 4867 0 R (3427) 4868 0 R (3428) 4869 0 R (3429) 4870 0 R (343) 2078 0 R (3430) 4871 0 R (3431) 4872 0 R (3432) 4873 0 R (3433) 4874 0 R (3434) 4875 0 R (3435) 4876 0 R (3436) 4877 0 R (3437) 4878 0 R (3438) 4879 0 R (3439) 4880 0 R (3440) 4881 0 R (3441) 4882 0 R (3442) 4883 0 R (3443) 4884 0 R (3444) 4885 0 R (3445) 4886 0 R (3446) 4887 0 R (3447) 4888 0 R (3448) 4889 0 R (3449) 4890 0 R (345) 2080 0 R (3452) 4899 0 R (3453) 4900 0 R (3454) 4901 0 R (3457) 4902 0 R (3458) 4903 0 R (3459) 4904 0 R (346) 2081 0 R (3462) 4905 0 R (3463) 4906 0 R (3464) 4907 0 R (3465) 4908 0 R (3466) 4909 0 R (3467) 4910 0 R (3468) 4916 0 R (3469) 4917 0 R (3472) 4918 0 R (3473) 4919 0 R (3476) 4920 0 R (3477) 4921 0 R (3478) 4922 0 R (3479) 4928 0 R (348) 2083 0 R (3482) 4929 0 R (3483) 4930 0 R (3484) 4931 0 R (3485) 4932 0 R (3486) 4933 0 R (3487) 4934 0 R (3488) 4935 0 R (3489) 4936 0 R (349) 2084 0 R (3490) 4937 0 R (3491) 4938 0 R (3492) 4939 0 R (3493) 4940 0 R (3494) 4941 0 R (3495) 4942 0 R (3496) 4943 0 R (3497) 4944 0 R (3498) 4945 0 R (3499) 4946 0 R (3500) 4947 0 R (3501) 4948 0 R (3502) 4949 0 R (3503) 4950 0 R (3504) 4951 0 R (3505) 4952 0 R (3506) 4953 0 R (3507) 4954 0 R (3508) 4955 0 R (3509) 4956 0 R (3510) 4957 0 R (3511) 4958 0 R (3512) 4959 0 R (3513) 4927 0 R (3514) 4964 0 R (3515) 4965 0 R (3518) 4966 0 R (3519) 4967 0 R (352) 2085 0 R (3520) 4968 0 R (3523) 4969 0 R (3524) 4970 0 R (3527) 4971 0 R (3528) 4976 0 R (353) 2089 0 R (3531) 4977 0 R (3534) 4978 0 R (3537) 4979 0 R (3538) 4980 0 R (3539) 4981 0 R (3542) 4982 0 R (3543) 4983 0 R (3544) 4984 0 R (3545) 4989 0 R (3546) 4990 0 R (3548) 4995 0 R (3552) 4996 0 R (3553) 4997 0 R (3554) 4998 0 R (3555) 4999 0 R (356) 2090 0 R (3560) 5002 0 R (3561) 5003 0 R (3562) 5004 0 R (3563) 5005 0 R (3564) 5006 0 R (3565) 5007 0 R (3567) 5008 0 R (3568) 5009 0 R (3569) 5010 0 R (3570) 5011 0 R (3571) 5012 0 R (3573) 5013 0 R (3574) 5014 0 R (3575) 5015 0 R (3576) 5016 0 R (3577) 5017 0 R (3578) 5018 0 R (3579) 5019 0 R (3580) 5020 0 R (3581) 5021 0 R (3583) 5022 0 R (3584) 5023 0 R (3585) 5024 0 R (3586) 5025 0 R (3587) 5026 0 R (3588) 5027 0 R (3589) 5028 0 R (359) 2091 0 R (3590) 5029 0 R (3591) 5030 0 R (3592) 5031 0 R (3593) 5032 0 R (3595) 5033 0 R (3596) 5034 0 R (3597) 5035 0 R (3598) 5036 0 R (3599) 5037 0 R (36) 1841 0 R (360) 2092 0 R (3600) 5038 0 R (3605) 5046 0 R (3606) 5047 0 R (3607) 5048 0 R (3608) 5049 0 R (3609) 5050 0 R (361) 2093 0 R (3610) 5051 0 R (3612) 5052 0 R (3613) 5053 0 R (3614) 5054 0 R (3617) 5055 0 R (3618) 5056 0 R (362) 2094 0 R (3624) 5058 0 R (3625) 5059 0 R (3626) 5060 0 R (3627) 5061 0 R (363) 2095 0 R (3630) 5063 0 R (3631) 5064 0 R (3635) 5065 0 R (3636) 5066 0 R (3637) 5067 0 R (3638) 5068 0 R (3639) 5069 0 R (364) 2096 0 R (3642) 5070 0 R (3643) 5071 0 R (3644) 5072 0 R (3645) 5073 0 R (3646) 5079 0 R (3647) 5080 0 R (3648) 5081 0 R (365) 2097 0 R (3653) 5083 0 R (3654) 5084 0 R (3655) 5085 0 R (3656) 5086 0 R (3659) 5087 0 R (366) 2098 0 R (3660) 5088 0 R (3661) 5089 0 R (3667) 5093 0 R (3668) 5094 0 R (3669) 5095 0 R (367) 2099 0 R (3670) 5096 0 R (3671) 5097 0 R (3676) 5100 0 R (3677) 5101 0 R (3683) 5106 0 R (3684) 5107 0 R (3685) 5108 0 R (3686) 5109 0 R (3687) 5110 0 R (3688) 5111 0 R (3689) 5112 0 R (3692) 5114 0 R (3693) 5115 0 R (3695) 5117 0 R (3696) 5118 0 R (3698) 5119 0 R (3699) 5120 0 R (37) 1842 0 R (370) 2100 0 R (3700) 5121 0 R (3701) 5122 0 R (3703) 5123 0 R (3704) 5124 0 R (3705) 5125 0 R (3706) 5126 0 R (3707) 5127 0 R (3709) 5128 0 R (3710) 5129 0 R (3711) 5130 0 R (3712) 5131 0 R (3719) 5134 0 R (3720) 5135 0 R (3721) 5136 0 R (3724) 5137 0 R (3725) 5138 0 R (3727) 5144 0 R (3728) 5145 0 R (3729) 5146 0 R (373) 2101 0 R (3730) 5147 0 R (3734) 5149 0 R (3735) 5150 0 R (3736) 5151 0 R (3737) 5152 0 R (3738) 5153 0 R (3739) 5154 0 R (3740) 5155 0 R (3741) 5156 0 R (3747) 5158 0 R (3748) 5159 0 R (3752) 5161 0 R (3753) 5162 0 R (3754) 5163 0 R (3759) 5165 0 R (376) 2102 0 R (3760) 5166 0 R (3761) 5167 0 R (3763) 5172 0 R (3764) 5173 0 R (3765) 5174 0 R (3766) 5175 0 R (3767) 5176 0 R (3768) 5177 0 R (3769) 5178 0 R (3770) 5179 0 R (3771) 5180 0 R (3772) 5181 0 R (3773) 5182 0 R (3774) 5183 0 R (3775) 5184 0 R (3776) 5185 0 R (3781) 5188 0 R (3782) 5189 0 R (3783) 5190 0 R (3787) 5192 0 R (3788) 5193 0 R (379) 2103 0 R (3793) 5196 0 R (3794) 5197 0 R (3795) 5198 0 R (3796) 5201 0 R (3797) 5199 0 R (3798) 5200 0 R (38) 1843 0 R (380) 2104 0 R (381) 2105 0 R (384) 2110 0 R (387) 2111 0 R (388) 2112 0 R (389) 2113 0 R (39) 1844 0 R (390) 2114 0 R (392) 2116 0 R (393) 2117 0 R (394) 2118 0 R (395) 2119 0 R (398) 2120 0 R (399) 2121 0 R (4.0) 14 0 R (40) 1845 0 R (403) 2123 0 R (404) 2124 0 R (405) 2125 0 R (406) 2126 0 R (407) 2127 0 R (408) 2132 0 R (409) 2133 0 R (41) 1846 0 R (410) 2134 0 R (411) 2135 0 R (412) 2136 0 R (413) 2137 0 R (414) 2138 0 R (415) 2139 0 R (416) 2140 0 R (417) 2141 0 R (418) 2142 0 R (419) 2143 0 R (42) 1847 0 R (420) 2144 0 R (423) 2145 0 R (428) 2149 0 R (429) 2150 0 R (43) 1848 0 R (433) 2153 0 R (434) 2154 0 R (435) 2155 0 R (436) 2156 0 R (437) 2157 0 R (438) 2158 0 R (439) 2159 0 R (44) 1849 0 R (440) 2160 0 R (441) 2161 0 R (442) 2167 0 R (443) 2168 0 R (445) 2169 0 R (446) 2170 0 R (447) 2171 0 R (448) 2172 0 R (449) 2173 0 R (45) 1850 0 R (450) 2174 0 R (451) 2175 0 R (452) 2176 0 R (453) 2177 0 R (455) 2178 0 R (456) 2179 0 R (457) 2180 0 R (458) 2181 0 R (459) 2182 0 R (46) 1851 0 R (460) 2183 0 R (461) 2184 0 R (462) 2185 0 R (465) 2187 0 R (466) 2188 0 R (467) 2189 0 R (468) 2192 0 R (47) 1852 0 R (470) 2194 0 R (471) 2195 0 R (472) 2196 0 R (473) 2197 0 R (474) 2198 0 R (475) 2199 0 R (476) 2206 0 R (477) 2207 0 R (478) 2166 0 R (479) 2208 0 R (48) 1853 0 R (480) 2209 0 R (481) 2210 0 R (482) 2211 0 R (483) 2212 0 R (484) 2213 0 R (485) 2214 0 R (486) 2215 0 R (487) 2216 0 R (488) 2217 0 R (489) 2218 0 R (49) 1854 0 R (492) 2219 0 R (493) 2220 0 R (494) 2221 0 R (496) 2222 0 R (497) 2223 0 R (498) 2224 0 R (499) 2225 0 R (5.0) 18 0 R (5.1.1) 22 0 R (5.2.1) 26 0 R (5.3.1) 30 0 R (5.4.1) 34 0 R (5.5.1) 38 0 R (50) 1855 0 R (501) 2227 0 R (502) 2228 0 R (503) 2229 0 R (504) 2230 0 R (505) 2231 0 R (506) 2232 0 R (507) 2233 0 R (508) 2234 0 R (509) 2235 0 R (51) 1856 0 R (510) 2236 0 R (512) 2237 0 R (513) 2238 0 R (514) 2239 0 R (515) 2240 0 R (516) 2241 0 R (517) 2246 0 R (518) 2205 0 R (52) 1857 0 R (520) 2247 0 R (521) 2248 0 R (522) 2249 0 R (523) 2250 0 R (524) 2251 0 R (525) 2252 0 R (526) 2253 0 R (527) 2254 0 R (528) 2255 0 R (529) 2256 0 R (53) 1858 0 R (530) 2257 0 R (531) 2258 0 R (532) 2259 0 R (533) 1260 0 R (535) 2260 0 R (536) 2261 0 R (537) 2262 0 R (538) 2263 0 R (539) 2264 0 R (54) 1859 0 R (540) 2265 0 R (543) 2266 0 R (548) 2268 0 R (549) 2269 0 R (55) 1860 0 R (550) 2270 0 R (552) 2271 0 R (553) 2272 0 R (554) 2273 0 R (556) 2274 0 R (557) 2275 0 R (558) 2276 0 R (559) 2281 0 R (56) 1864 0 R (560) 2282 0 R (561) 2283 0 R (562) 2284 0 R (563) 2285 0 R (564) 2286 0 R (565) 2287 0 R (567) 2288 0 R (568) 2289 0 R (569) 2290 0 R (57) 1865 0 R (570) 2291 0 R (571) 2292 0 R (572) 2293 0 R (573) 2294 0 R (575) 2295 0 R (576) 2296 0 R (577) 2297 0 R (578) 2298 0 R (58) 1866 0 R (582) 2299 0 R (583) 2300 0 R (584) 2301 0 R (585) 2302 0 R (586) 2303 0 R (587) 2304 0 R (588) 2305 0 R (589) 2306 0 R (59) 1867 0 R (590) 2307 0 R (591) 2308 0 R (592) 2309 0 R (593) 2310 0 R (594) 2311 0 R (595) 2312 0 R (596) 2313 0 R (597) 2314 0 R (598) 2315 0 R (599) 2316 0 R (6.0) 42 0 R (6.10.1) 254 0 R (6.10.22.2) 258 0 R (6.10.23.2) 262 0 R (6.10.23.22.3) 266 0 R (6.10.23.22.7.4) 270 0 R (6.10.23.22.8.4) 274 0 R (6.10.23.22.9.4) 278 0 R (6.10.24.2) 282 0 R (6.10.25.2) 286 0 R (6.10.25.23.3) 290 0 R (6.10.25.24.3) 294 0 R (6.10.26.2) 298 0 R (6.10.26.25.3) 302 0 R (6.10.27.2) 306 0 R (6.6.1) 46 0 R (6.6.1.2) 50 0 R (6.6.2.1.3) 58 0 R (6.6.2.2) 54 0 R (6.6.2.2.3) 62 0 R (6.6.3.2) 66 0 R (6.6.4.2) 70 0 R (6.6.5.10.3) 106 0 R (6.6.5.2) 74 0 R (6.6.5.3.3) 78 0 R (6.6.5.4.3) 82 0 R (6.6.5.5.3) 86 0 R (6.6.5.6.3) 90 0 R (6.6.5.7.3) 94 0 R (6.6.5.8.3) 98 0 R (6.6.5.9.3) 102 0 R (6.6.6.2) 110 0 R (6.7.1) 114 0 R (6.7.10.13.3) 166 0 R (6.7.10.14.3) 170 0 R (6.7.10.2) 162 0 R (6.7.11.2) 174 0 R (6.7.7.2) 118 0 R (6.7.8.11.1.4) 130 0 R (6.7.8.11.2.4) 134 0 R (6.7.8.11.3) 126 0 R (6.7.8.11.3.4) 138 0 R (6.7.8.11.4.4) 142 0 R (6.7.8.12.3) 146 0 R (6.7.8.12.5.4) 150 0 R (6.7.8.12.6.4) 154 0 R (6.7.8.2) 122 0 R (6.7.9.2) 158 0 R (6.8.1) 178 0 R (6.8.12.2) 182 0 R (6.8.13.2) 186 0 R (6.8.14.2) 190 0 R (6.8.15.2) 194 0 R (6.8.16.2) 198 0 R (6.8.17.2) 202 0 R (6.8.18.2) 206 0 R (6.9.1) 210 0 R (6.9.19.15.3) 218 0 R (6.9.19.16.3) 222 0 R (6.9.19.17.3) 226 0 R (6.9.19.18.3) 230 0 R (6.9.19.19.3) 234 0 R (6.9.19.2) 214 0 R (6.9.20.2) 238 0 R (6.9.20.20.3) 242 0 R (6.9.20.21.3) 246 0 R (6.9.21.2) 250 0 R (600) 2322 0 R (601) 2323 0 R (602) 2324 0 R (603) 2325 0 R (604) 2326 0 R (605) 2327 0 R (606) 2328 0 R (607) 2329 0 R (608) 2330 0 R (612) 2332 0 R (613) 2333 0 R (615) 2335 0 R (616) 2336 0 R (617) 2337 0 R (618) 2338 0 R (62) 1868 0 R (620) 2340 0 R (621) 2341 0 R (622) 2342 0 R (623) 2343 0 R (624) 2344 0 R (625) 2345 0 R (626) 2346 0 R (627) 2347 0 R (63) 1869 0 R (631) 2349 0 R (632) 1266 0 R (634) 2350 0 R (635) 2351 0 R (636) 2352 0 R (637) 2353 0 R (638) 2360 0 R (639) 2361 0 R (640) 2321 0 R (641) 2362 0 R (642) 2363 0 R (643) 2364 0 R (644) 2365 0 R (645) 2366 0 R (646) 2367 0 R (647) 2368 0 R (648) 2369 0 R (649) 2370 0 R (65) 1870 0 R (650) 2371 0 R (651) 1267 0 R (653) 2372 0 R (654) 2373 0 R (655) 2374 0 R (656) 2375 0 R (657) 2376 0 R (658) 2377 0 R (659) 2378 0 R (66) 1871 0 R (660) 2379 0 R (661) 2380 0 R (662) 2381 0 R (663) 2382 0 R (664) 2383 0 R (665) 2384 0 R (666) 2385 0 R (669) 2386 0 R (67) 1872 0 R (670) 2387 0 R (671) 2392 0 R (672) 2393 0 R (673) 2394 0 R (674) 2395 0 R (677) 2396 0 R (679) 2398 0 R (68) 1873 0 R (680) 2399 0 R (681) 2400 0 R (682) 2401 0 R (683) 2402 0 R (684) 2403 0 R (685) 2404 0 R (688) 2405 0 R (689) 2406 0 R (690) 2407 0 R (691) 2408 0 R (692) 2409 0 R (693) 2410 0 R (694) 2411 0 R (695) 2412 0 R (696) 2413 0 R (697) 2414 0 R (698) 2415 0 R (7.0) 310 0 R (7.11.1) 314 0 R (7.12.1) 318 0 R (7.12.28.2) 322 0 R (7.12.29.2) 326 0 R (7.12.29.26.3) 330 0 R (7.12.29.27.3) 334 0 R (7.12.29.28.3) 338 0 R (7.13.1) 342 0 R (7.14.1) 346 0 R (7.15.1) 350 0 R (7.16.1) 354 0 R (7.17.1) 358 0 R (7.18.1) 362 0 R (7.18.30.2) 366 0 R (7.18.31.2) 370 0 R (7.18.31.29.3) 374 0 R (7.18.32.2) 378 0 R (7.18.33.2) 382 0 R (7.18.33.30.3) 386 0 R (7.18.33.31.3) 390 0 R (7.18.34.2) 394 0 R (7.18.34.32.10.4) 402 0 R (7.18.34.32.11.4) 406 0 R (7.18.34.32.12.4) 410 0 R (7.18.34.32.13.4) 414 0 R (7.18.34.32.14.4) 418 0 R (7.18.34.32.15.4) 422 0 R (7.18.34.32.16.4) 426 0 R (7.18.34.32.17.4) 430 0 R (7.18.34.32.18.4) 434 0 R (7.18.34.32.3) 398 0 R (7.18.34.33.3) 438 0 R (7.18.34.34.3) 442 0 R (7.19.1) 446 0 R (7.20.1) 450 0 R (7.21.1) 454 0 R (7.21.35.2) 458 0 R (7.21.36.2) 462 0 R (7.21.37.2) 466 0 R (7.21.38.2) 470 0 R (7.21.38.35.3) 474 0 R (7.21.38.36.3) 478 0 R (7.21.38.37.3) 482 0 R (7.22.1) 486 0 R (7.22.39.2) 490 0 R (7.22.40.2) 494 0 R (7.22.40.38.3) 498 0 R (7.22.40.39.3) 502 0 R (7.22.40.40.3) 506 0 R (7.22.41.2) 510 0 R (70) 1874 0 R (701) 2416 0 R (702) 2417 0 R (703) 2423 0 R (704) 2424 0 R (705) 2425 0 R (708) 2427 0 R (709) 2428 0 R (71) 1875 0 R (710) 2429 0 R (713) 2431 0 R (714) 2432 0 R (715) 2433 0 R (716) 2434 0 R (717) 2435 0 R (718) 2436 0 R (719) 2437 0 R (72) 1876 0 R (722) 2439 0 R (723) 2440 0 R (724) 2441 0 R (725) 2442 0 R (726) 2443 0 R (729) 2445 0 R (73) 1877 0 R (730) 2446 0 R (731) 2447 0 R (732) 2448 0 R (735) 2450 0 R (736) 2451 0 R (737) 2452 0 R (738) 2453 0 R (741) 2455 0 R (742) 2456 0 R (743) 2462 0 R (744) 2463 0 R (747) 2465 0 R (748) 2466 0 R (749) 2467 0 R (75) 1878 0 R (750) 2468 0 R (753) 2469 0 R (754) 2470 0 R (755) 2471 0 R (756) 2472 0 R (757) 2473 0 R (758) 2474 0 R (759) 2475 0 R (76) 1879 0 R (760) 2476 0 R (761) 2477 0 R (762) 2478 0 R (763) 2479 0 R (764) 2480 0 R (767) 2481 0 R (768) 2482 0 R (769) 2483 0 R (77) 1880 0 R (772) 2484 0 R (775) 2485 0 R (776) 2486 0 R (777) 2487 0 R (78) 1881 0 R (780) 2492 0 R (783) 2495 0 R (784) 2496 0 R (785) 2497 0 R (786) 2498 0 R (787) 2499 0 R (788) 2500 0 R (789) 2501 0 R (790) 2502 0 R (791) 2503 0 R (792) 2504 0 R (795) 2505 0 R (798) 2506 0 R (8.0) 514 0 R (8.23.1) 518 0 R (8.23.42.2) 522 0 R (8.23.43.2) 526 0 R (8.23.44.2) 530 0 R (8.24.1) 534 0 R (8.24.45.2) 538 0 R (8.24.46.2) 542 0 R (8.24.47.2) 546 0 R (8.25.1) 550 0 R (8.25.48.2) 554 0 R (8.25.49.2) 558 0 R (8.26.1) 562 0 R (8.26.50.2) 566 0 R (80) 1882 0 R (801) 2509 0 R (802) 2510 0 R (803) 2511 0 R (804) 2512 0 R (807) 2513 0 R (81) 1883 0 R (811) 2519 0 R (814) 2520 0 R (815) 2521 0 R (816) 2522 0 R (82) 1884 0 R (820) 2524 0 R (821) 2525 0 R (822) 2526 0 R (823) 2527 0 R (824) 2528 0 R (825) 2529 0 R (827) 2531 0 R (828) 2532 0 R (829) 2533 0 R (83) 1885 0 R (830) 2534 0 R (831) 2535 0 R (832) 2536 0 R (833) 2537 0 R (834) 2538 0 R (835) 2539 0 R (836) 2540 0 R (837) 2541 0 R (838) 2542 0 R (842) 2545 0 R (843) 2546 0 R (845) 2547 0 R (847) 2548 0 R (85) 1886 0 R (850) 2554 0 R (851) 2555 0 R (852) 2556 0 R (853) 2557 0 R (854) 2558 0 R (855) 2559 0 R (856) 2560 0 R (857) 2561 0 R (858) 2562 0 R (859) 2563 0 R (86) 1887 0 R (860) 2564 0 R (861) 2565 0 R (863) 2566 0 R (864) 2567 0 R (865) 2568 0 R (866) 2569 0 R (87) 1888 0 R (870) 1383 0 R (872) 2570 0 R (874) 1384 0 R (876) 2572 0 R (877) 2573 0 R (878) 2574 0 R (879) 2575 0 R (88) 1889 0 R (880) 2576 0 R (881) 2577 0 R (882) 1385 0 R (884) 2578 0 R (886) 2579 0 R (887) 2580 0 R (888) 2585 0 R (890) 2586 0 R (891) 2587 0 R (892) 2588 0 R (893) 2589 0 R (895) 2590 0 R (896) 2591 0 R (897) 2592 0 R (898) 2593 0 R (899) 2594 0 R (9.0) 570 0 R (9.27.1) 574 0 R (9.27.51.2) 578 0 R (9.27.52.2) 582 0 R (9.27.53.2) 586 0 R (9.27.54.2) 590 0 R (9.27.55.2) 594 0 R (9.27.56.2) 598 0 R (9.28.1) 602 0 R (9.29.1) 606 0 R (9.30.1) 610 0 R (9.31.1) 614 0 R (9.31.57.2) 618 0 R (9.31.57.41.3) 622 0 R (9.32.1) 626 0 R (9.32.58.2) 630 0 R (9.32.59.2) 634 0 R (9.32.60.2) 638 0 R (9.32.61.2) 642 0 R (9.32.62.2) 646 0 R (90) 1890 0 R (900) 2595 0 R (901) 2596 0 R (902) 2597 0 R (903) 2598 0 R (904) 2599 0 R (905) 2600 0 R (906) 2601 0 R (907) 2602 0 R (908) 2608 0 R (909) 1386 0 R (91) 1891 0 R (911) 2609 0 R (912) 2610 0 R (913) 2611 0 R (914) 2612 0 R (915) 2613 0 R (916) 2614 0 R (917) 2615 0 R (918) 2616 0 R (919) 2617 0 R (92) 1892 0 R (920) 2618 0 R (921) 2619 0 R (922) 2620 0 R (923) 2621 0 R (924) 2622 0 R (927) 2623 0 R (928) 1388 0 R (93) 1893 0 R (930) 2624 0 R (931) 2625 0 R (932) 2626 0 R (933) 2627 0 R (934) 2628 0 R (935) 2629 0 R (936) 2630 0 R (937) 2635 0 R (938) 2636 0 R (939) 2637 0 R (940) 2638 0 R (941) 1389 0 R (943) 2639 0 R (944) 2640 0 R (945) 2641 0 R (946) 2642 0 R (947) 2643 0 R (948) 2644 0 R (949) 2645 0 R (95) 1894 0 R (950) 2646 0 R (951) 2647 0 R (952) 2648 0 R (953) 2649 0 R (954) 2650 0 R (955) 2651 0 R (956) 2652 0 R (957) 2653 0 R (958) 2658 0 R (959) 2659 0 R (96) 1895 0 R (960) 2660 0 R (961) 2661 0 R (962) 2662 0 R (963) 2663 0 R (964) 2664 0 R (965) 2665 0 R (966) 2666 0 R (967) 2667 0 R (968) 2668 0 R (969) 2669 0 R (97) 1896 0 R (970) 2670 0 R (971) 2671 0 R (972) 2672 0 R (973) 2673 0 R (974) 1390 0 R (976) 2674 0 R (977) 1391 0 R (979) 2675 0 R (98) 1897 0 R (980) 2676 0 R (981) 2677 0 R (982) 2678 0 R (983) 2679 0 R (984) 2680 0 R (985) 2685 0 R (986) 1392 0 R (988) 2686 0 R (99) 1898 0 R (990) 2688 0 R (991) 2689 0 R (992) 2690 0 R (993) 2691 0 R (994) 2692 0 R (995) 2693 0 R (996) 2694 0 R (997) 2695 0 R (998) 2696 0 R (999) 2697 0 R (Doc-Start) 1122 0 R (about) 1231 0 R (accountpreferences) 1686 0 R (administration) 1393 0 R (apache-addtype) 1272 0 R (attachments) 1683 0 R (bonsai) 1564 0 R (boolean) 1665 0 R (bug_page) 1662 0 R (bugreports) 1670 0 R (bzldap) 1271 0 R (charts) 1692 0 R (classifications) 1401 0 R (cmdline) 1788 0 R (cmdline-bugmail) 1789 0 R (commenting) 1682 0 R (components) 1403 0 R (configuration) 1255 0 R (conventions) 1236 0 R (copyright) 1232 0 R (createnewusers) 1398 0 R (credits) 1235 0 R (cust-change-permissions) 1558 0 R (cust-hooks) 1557 0 R (cust-templates) 1550 0 R (customization) 1549 0 R (cvs) 1565 0 R (database-engine) 1257 0 R (dbdoc) 1560 0 R (dbmodify) 1559 0 R (defaultuser) 1396 0 R (dependencytree) 1684 0 R (disclaimer) 1233 0 R (emailpreferences) 1688 0 R (extraconfig) 1265 0 R (faq) 1774 0 R (faq-admin) 4331 0 R (faq-admin-cvsupdate) 4341 0 R (faq-admin-enable-unconfirmed) 4362 0 R (faq-admin-livebackup) 4339 0 R (faq-admin-midair) 4333 0 R (faq-admin-moving) 4374 0 R (faq-db) 4472 0 R (faq-db-corrupted) 4474 0 R (faq-db-manualedit) 4485 0 R (faq-db-permissions) 4492 0 R (faq-db-synchronize) 4498 0 R (faq-email) 4406 0 R (faq-email-mailif) 4448 0 R (faq-email-nomail) 4408 0 R (faq-email-nonreceived) 4463 0 R (faq-email-sendmailnow) 4450 0 R (faq-email-testing) 4411 0 R (faq-email-whine) 4442 0 R (faq-general) 4194 0 R (faq-general-bonsaitools) 4237 0 R (faq-general-bzmissing) 4215 0 R (faq-general-companies) 4203 0 R (faq-general-compare) 4211 0 R (faq-general-cookie) 4267 0 R (faq-general-license) 4196 0 R (faq-general-maintainers) 4208 0 R (faq-general-mysql) 4228 0 R (faq-general-perlpath) 4242 0 R (faq-general-support) 4199 0 R (faq-hacking) 4579 0 R (faq-hacking-bugzillabugs) 4585 0 R (faq-hacking-patches) 4598 0 R (faq-hacking-priority) 4591 0 R (faq-hacking-templatestyle) 4580 0 R (faq-mod-perl) 4269 0 R (faq-nt) 4503 0 R (faq-nt-bundle) 4513 0 R (faq-nt-dbi) 4523 0 R (faq-nt-easiest) 4505 0 R (faq-nt-mappings) 4515 0 R (faq-phb) 4273 0 R (faq-phb-backup) 4317 0 R (faq-phb-client) 4275 0 R (faq-phb-cost) 4326 0 R (faq-phb-data) 4297 0 R (faq-phb-email) 4290 0 R (faq-phb-emailapp) 4292 0 R (faq-phb-installtime) 4324 0 R (faq-phb-l10n) 4307 0 R (faq-phb-maintenance) 4320 0 R (faq-phb-priorities) 4277 0 R (faq-phb-renameBugs) 4328 0 R (faq-phb-reporting) 4285 0 R (faq-phb-reports) 4315 0 R (faq-security) 4391 0 R (faq-security-knownproblems) 4404 0 R (faq-security-mysql) 4393 0 R (faq-use) 4539 0 R (faq-use-accept) 4556 0 R (faq-use-attachment) 4561 0 R (faq-use-changeaddress) 4541 0 R (faq-use-close) 4567 0 R (faq-use-keyword) 4564 0 R (faq-use-query) 4543 0 R (flag-askto) 1410 0 R (flag-type-attachment) 1412 0 R (flag-type-bug) 1413 0 R (flag-types) 1411 0 R (flag-values) 1409 0 R (flags) 1695 0 R (flags-about) 1408 0 R (flags-admin) 1414 0 R (flags-create) 1415 0 R (flags-create-field-active) 3066 0 R (flags-create-field-category) 3028 0 R (flags-create-field-cclist) 3076 0 R (flags-create-field-description) 3026 0 R (flags-create-field-multiplicable) 3085 0 R (flags-create-field-name) 3024 0 R (flags-create-field-requestable) 3069 0 R (flags-create-field-sortkey) 3062 0 R (flags-create-field-specific) 3078 0 R (flags-delete) 1416 0 R (flags-edit) 1417 0 R (flags-overview) 1406 0 R (flags-simpleexample) 1407 0 R (general-advice) 1776 0 R (generalpreferences) 1687 0 R (gfdl) 1794 0 R (gfdl-0) 1795 0 R (gfdl-1) 1796 0 R (gfdl-10) 1805 0 R (gfdl-2) 1797 0 R (gfdl-3) 1798 0 R (gfdl-4) 1799 0 R (gfdl-5) 1800 0 R (gfdl-6) 1801 0 R (gfdl-7) 1802 0 R (gfdl-8) 1803 0 R (gfdl-9) 1804 0 R (gfdl-howto) 1806 0 R (gloss-a) 5000 0 R (gloss-apache) 5001 0 R (gloss-b) 5040 0 R (gloss-bugzilla) 1926 0 R (gloss-c) 5057 0 R (gloss-cgi) 1988 0 R (gloss-component) 5062 0 R (gloss-contrib) 2457 0 R (gloss-cpan) 2549 0 R (gloss-d) 5082 0 R (gloss-daemon) 3350 0 R (gloss-dos) 3485 0 R (gloss-g) 5091 0 R (gloss-groups) 5092 0 R (gloss-htaccess) 3457 0 R (gloss-j) 5098 0 R (gloss-javascript) 5099 0 R (gloss-m) 5078 0 R (gloss-mta) 4479 0 R (gloss-mysql) 5113 0 R (gloss-p) 5133 0 R (gloss-ppm) 2514 0 R (gloss-product) 2885 0 R (gloss-q) 5148 0 R (gloss-r) 5157 0 R (gloss-rdbms) 5139 0 R (gloss-regexp) 5160 0 R (gloss-s) 5164 0 R (gloss-service) 3351 0 R (gloss-t) 5186 0 R (gloss-target-milestone) 5187 0 R (gloss-tcl) 5191 0 R (gloss-z) 5194 0 R (gloss-zarro) 5195 0 R (glossary) 1807 0 R (groups) 1420 0 R (hintsandtips) 1679 0 R (http) 1261 0 R (http-apache) 1262 0 R (http-iis) 1263 0 R (impersonatingusers) 1400 0 R (index) 1123 0 R (install-MTA) 1254 0 R (install-bzfiles) 1244 0 R (install-config-bugzilla) 1264 0 R (install-database) 1240 0 R (install-modules-chart-base) 1249 0 R (install-modules-dbd-mysql) 1246 0 R (install-modules-gd) 1248 0 R (install-modules-gd-graph) 1250 0 R (install-modules-gd-text-align) 1251 0 R (install-modules-patchreader) 1253 0 R (install-modules-template) 1247 0 R (install-modules-xml-parser) 1252 0 R (install-mysql) 1241 0 R (install-perl) 1239 0 R (install-perlmodules) 1245 0 R (install-perlmodules-manual) 1790 0 R (install-perlmodules-nonroot) 1387 0 R (install-pg) 1242 0 R (install-setupdatabase) 2152 0 R (install-setupdatabase-adduser) 2186 0 R (install-webserver) 1243 0 R (installation) 1238 0 R (installation-whining) 1269 0 R (installation-whining-cron) 1268 0 R (installing-bugzilla) 1237 0 R (integration) 1563 0 R (lifecycle) 1663 0 R (lifecycle-image) 1824 0 R (list) 1669 0 R (localconfig) 1256 0 R (macosx-libraries) 1380 0 R (macosx-sendmail) 1379 0 R (manageusers) 1397 0 R (milestones) 1405 0 R (modifyusers) 1399 0 R (modules-manual-download) 1792 0 R (modules-manual-instructions) 1791 0 R (modules-manual-optional) 1793 0 R (multiplecharts) 1668 0 R (myaccount) 1661 0 R (mysql) 1258 0 R (negation) 1667 0 R (newversions) 1234 0 R (nonroot) 1382 0 R (os-macosx) 1378 0 R (os-mandrake) 1381 0 R (os-specific) 1273 0 R (os-win32) 1274 0 R (page.1) 1121 0 R (page.10) 2131 0 R (page.100) 4712 0 R (page.101) 4729 0 R (page.102) 4774 0 R (page.103) 4802 0 R (page.104) 4832 0 R (page.105) 4862 0 R (page.106) 4894 0 R (page.107) 4898 0 R (page.108) 4915 0 R (page.109) 4926 0 R (page.11) 2165 0 R (page.110) 4963 0 R (page.111) 4975 0 R (page.112) 4988 0 R (page.113) 4994 0 R (page.114) 5045 0 R (page.115) 5077 0 R (page.116) 5105 0 R (page.117) 5143 0 R (page.118) 5171 0 R (page.12) 2204 0 R (page.13) 2245 0 R (page.14) 2280 0 R (page.15) 2320 0 R (page.16) 2359 0 R (page.17) 2391 0 R (page.18) 2422 0 R (page.19) 2461 0 R (page.2) 1130 0 R (page.20) 2491 0 R (page.21) 2518 0 R (page.22) 2553 0 R (page.23) 2584 0 R (page.24) 2607 0 R (page.25) 2634 0 R (page.26) 2657 0 R (page.27) 2684 0 R (page.28) 2702 0 R (page.29) 2736 0 R (page.3) 1136 0 R (page.30) 2762 0 R (page.31) 2788 0 R (page.32) 2819 0 R (page.33) 2863 0 R (page.34) 2889 0 R (page.35) 2916 0 R (page.36) 2964 0 R (page.37) 3004 0 R (page.38) 3039 0 R (page.39) 3082 0 R (page.4) 1279 0 R (page.40) 3113 0 R (page.41) 3141 0 R (page.42) 3180 0 R (page.43) 3202 0 R (page.44) 3225 0 R (page.45) 3251 0 R (page.46) 3272 0 R (page.47) 3305 0 R (page.48) 3325 0 R (page.49) 3355 0 R (page.5) 1424 0 R (page.50) 3384 0 R (page.51) 3461 0 R (page.52) 3489 0 R (page.53) 3518 0 R (page.54) 3545 0 R (page.55) 3584 0 R (page.56) 3613 0 R (page.57) 3644 0 R (page.58) 3682 0 R (page.59) 3705 0 R (page.6) 1571 0 R (page.60) 3726 0 R (page.61) 3748 0 R (page.62) 3776 0 R (page.63) 3781 0 R (page.64) 3785 0 R (page.65) 3789 0 R (page.66) 3804 0 R (page.67) 3820 0 R (page.68) 3848 0 R (page.69) 3910 0 R (page.7) 1704 0 R (page.70) 3922 0 R (page.71) 3958 0 R (page.72) 3976 0 R (page.73) 4001 0 R (page.74) 4013 0 R (page.75) 4033 0 R (page.76) 4060 0 R (page.77) 4103 0 R (page.78) 4121 0 R (page.79) 4137 0 R (page.8) 1811 0 R (page.80) 4157 0 R (page.81) 4174 0 R (page.82) 4191 0 R (page.83) 4222 0 R (page.84) 4252 0 R (page.85) 4282 0 R (page.86) 4311 0 R (page.87) 4337 0 R (page.88) 4371 0 R (page.89) 4397 0 R (page.9) 2109 0 R (page.90) 4431 0 R (page.91) 4483 0 R (page.92) 4511 0 R (page.93) 4548 0 R (page.94) 4578 0 R (page.95) 4613 0 R (page.96) 4625 0 R (page.97) 4652 0 R (page.98) 4671 0 R (page.99) 4690 0 R (param-LDAPBaseDN) 2449 0 R (param-LDAPbinddn) 2444 0 R (param-LDAPmailattribute) 2464 0 R (param-LDAPserver) 2438 0 R (param-LDAPuidattribute) 2454 0 R (param-loginmethod) 2430 0 R (parameters) 1394 0 R (paranoid-security) 1781 0 R (patch-viewer) 1270 0 R (patches) 1787 0 R (patchviewer) 1671 0 R (patchviewer_bonsai_lxr) 1677 0 R (patchviewer_collapse) 1675 0 R (patchviewer_context) 1674 0 R (patchviewer_diff) 1673 0 R (patchviewer_link) 1676 0 R (patchviewer_unified_diff) 1678 0 R (patchviewer_view) 1672 0 R (permissionsettings) 1689 0 R (postgresql) 1259 0 R (products) 1402 0 R (pronouns) 1666 0 R (query) 1664 0 R (quicksearch) 1681 0 R (quips) 1419 0 R (reporting) 1690 0 R (reports) 1691 0 R (scm) 1566 0 R (security) 1535 0 R (security-bugzilla) 1547 0 R (security-bugzilla-charset) 1548 0 R (security-mysql) 1540 0 R (security-mysql-account) 1541 0 R (security-mysql-account-anonymous) 1826 0 R (security-mysql-account-root) 1825 0 R (security-mysql-network) 1543 0 R (security-mysql-network-ex) 1827 0 R (security-mysql-root) 1542 0 R (security-os) 1536 0 R (security-os-accounts) 1538 0 R (security-os-chroot) 1539 0 R (security-os-ports) 1537 0 R (security-webserver) 1544 0 R (security-webserver-access) 1545 0 R (security-webserver-mod-throttle) 1546 0 R (svn) 1567 0 R (table.1) 1920 0 R (table.2) 3639 0 R (table.3) 3844 0 R (table.4) 3893 0 R (table.5) 3968 0 R (table.6) 3995 0 R (table.7) 4016 0 R (table.8) 4054 0 R (table.9) 4560 0 R (template-directory) 1551 0 R (template-edit) 1553 0 R (template-formats) 1554 0 R (template-http-accept) 1556 0 R (template-method) 1552 0 R (template-specific) 1555 0 R (tinderbox) 1658 0 R (trbl-bundleBugzilla) 1779 0 R (trbl-dbdSponge) 1780 0 R (trbl-index) 1785 0 R (trbl-passwd-encryption) 1786 0 R (trbl-perlmodule) 1778 0 R (trbl-relogin-everyone) 1783 0 R (trbl-relogin-everyone-restrict) 1829 0 R (trbl-relogin-everyone-share) 1828 0 R (trbl-testserver) 1777 0 R (trouble-filetemp) 1782 0 R (troubleshooting) 1775 0 R (upgrade-cvs) 1531 0 R (upgrade-patches) 1533 0 R (upgrade-tarball) 1532 0 R (upgrading) 1528 0 R (upgrading-completion) 1534 0 R (upgrading-methods) 1530 0 R (upgrading-version-defns) 1529 0 R (useradmin) 1395 0 R (userpreferences) 1685 0 R (using) 1659 0 R (using-intro) 1660 0 R (versions) 1404 0 R (voting) 1418 0 R (whining) 1696 0 R (whining-overview) 1697 0 R (whining-query) 1699 0 R (whining-schedule) 1698 0 R (win32-code-changes) 1375 0 R (win32-email) 1377 0 R (win32-http) 1376 0 R (win32-perl) 1275 0 R (win32-perl-modules) 1374 0 R] /Limits [(1.0) (win32-perl-modules)] >> endobj -5187 0 obj << -/Kids [5186 0 R] +5210 0 obj << +/Kids [5209 0 R] >> endobj -5188 0 obj << -/Dests 5187 0 R +5211 0 obj << +/Dests 5210 0 R >> endobj -5189 0 obj << +5212 0 obj << /Type /Catalog -/Pages 5184 0 R -/Outlines 5185 0 R -/Names 5188 0 R +/Pages 5207 0 R +/Outlines 5208 0 R +/Names 5211 0 R /PageMode /UseOutlines /URI<</Base()>> /ViewerPreferences<<>> /OpenAction 1117 0 R /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj -5190 0 obj << +5213 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.10b)/Keywords() -/CreationDate (D:20060422200600) +/CreationDate (D:20060422201300) >> endobj xref -0 5191 +0 5214 0000001124 65535 f 0000000009 00000 n -0000026088 00000 n -0000986850 00000 n +0000026085 00000 n +0000989331 00000 n 0000000048 00000 n -0000000099 00000 n -0000098981 00000 n -0000986765 00000 n -0000000138 00000 n -0000000173 00000 n -0000375623 00000 n -0000986678 00000 n -0000000212 00000 n -0000000246 00000 n -0000375685 00000 n -0000986589 00000 n -0000000286 00000 n -0000000321 00000 n -0000378874 00000 n -0000986463 00000 n -0000000361 00000 n -0000000407 00000 n -0000378999 00000 n -0000986389 00000 n -0000000449 00000 n -0000000494 00000 n -0000379376 00000 n -0000986302 00000 n -0000000536 00000 n -0000000570 00000 n -0000379690 00000 n -0000986215 00000 n -0000000612 00000 n -0000000648 00000 n -0000383701 00000 n -0000986128 00000 n -0000000690 00000 n -0000000721 00000 n -0000388533 00000 n -0000986054 00000 n -0000000763 00000 n -0000000807 00000 n -0000393201 00000 n -0000985926 00000 n -0000000847 00000 n -0000000896 00000 n -0000393326 00000 n -0000985813 00000 n -0000000938 00000 n -0000000974 00000 n -0000394648 00000 n -0000985739 00000 n -0000001018 00000 n -0000001048 00000 n -0000397510 00000 n -0000985615 00000 n -0000001092 00000 n -0000001133 00000 n -0000397698 00000 n -0000985541 00000 n -0000001179 00000 n -0000001212 00000 n -0000398393 00000 n -0000985467 00000 n -0000001258 00000 n -0000001296 00000 n -0000398834 00000 n -0000985380 00000 n -0000001340 00000 n -0000001376 00000 n -0000403168 00000 n -0000985293 00000 n -0000001420 00000 n -0000001454 00000 n -0000403929 00000 n -0000985167 00000 n -0000001498 00000 n -0000001536 00000 n -0000412188 00000 n -0000985093 00000 n -0000001582 00000 n -0000001620 00000 n -0000414613 00000 n -0000985006 00000 n -0000001666 00000 n -0000001719 00000 n -0000414801 00000 n -0000984919 00000 n -0000001765 00000 n -0000001804 00000 n -0000415495 00000 n -0000984832 00000 n -0000001850 00000 n -0000001897 00000 n -0000415683 00000 n -0000984745 00000 n -0000001943 00000 n -0000001988 00000 n -0000415871 00000 n -0000984656 00000 n -0000002034 00000 n -0000002086 00000 n -0000416058 00000 n -0000984565 00000 n -0000002133 00000 n -0000002181 00000 n -0000419565 00000 n -0000984473 00000 n -0000002229 00000 n -0000002278 00000 n -0000419755 00000 n -0000984395 00000 n -0000002326 00000 n +0000000097 00000 n +0000099105 00000 n +0000989246 00000 n +0000000136 00000 n +0000000171 00000 n +0000374002 00000 n +0000989159 00000 n +0000000210 00000 n +0000000244 00000 n +0000374064 00000 n +0000989070 00000 n +0000000284 00000 n +0000000319 00000 n +0000377250 00000 n +0000988944 00000 n +0000000359 00000 n +0000000405 00000 n +0000377375 00000 n +0000988870 00000 n +0000000447 00000 n +0000000492 00000 n +0000377752 00000 n +0000988783 00000 n +0000000534 00000 n +0000000568 00000 n +0000378066 00000 n +0000988696 00000 n +0000000610 00000 n +0000000646 00000 n +0000382077 00000 n +0000988609 00000 n +0000000688 00000 n +0000000719 00000 n +0000386909 00000 n +0000988535 00000 n +0000000761 00000 n +0000000805 00000 n +0000391577 00000 n +0000988407 00000 n +0000000845 00000 n +0000000894 00000 n +0000391702 00000 n +0000988294 00000 n +0000000936 00000 n +0000000972 00000 n +0000393024 00000 n +0000988220 00000 n +0000001016 00000 n +0000001046 00000 n +0000395885 00000 n +0000988096 00000 n +0000001090 00000 n +0000001131 00000 n +0000396073 00000 n +0000988022 00000 n +0000001177 00000 n +0000001210 00000 n +0000396768 00000 n +0000987948 00000 n +0000001256 00000 n +0000001294 00000 n +0000397209 00000 n +0000987861 00000 n +0000001338 00000 n +0000001374 00000 n +0000401543 00000 n +0000987774 00000 n +0000001418 00000 n +0000001452 00000 n +0000402304 00000 n +0000987648 00000 n +0000001496 00000 n +0000001534 00000 n +0000410539 00000 n +0000987574 00000 n +0000001580 00000 n +0000001618 00000 n +0000413079 00000 n +0000987487 00000 n +0000001664 00000 n +0000001717 00000 n +0000413267 00000 n +0000987400 00000 n +0000001763 00000 n +0000001802 00000 n +0000413961 00000 n +0000987313 00000 n +0000001848 00000 n +0000001895 00000 n +0000414148 00000 n +0000987226 00000 n +0000001941 00000 n +0000001986 00000 n +0000414335 00000 n +0000987137 00000 n +0000002032 00000 n +0000002084 00000 n +0000414523 00000 n +0000987046 00000 n +0000002131 00000 n +0000002179 00000 n +0000417990 00000 n +0000986968 00000 n +0000002227 00000 n +0000002277 00000 n +0000418179 00000 n +0000986891 00000 n +0000002322 00000 n 0000002376 00000 n -0000419944 00000 n -0000984318 00000 n -0000002421 00000 n -0000002475 00000 n -0000420572 00000 n -0000984188 00000 n -0000002518 00000 n -0000002556 00000 n -0000424499 00000 n -0000984109 00000 n -0000002601 00000 n -0000002639 00000 n -0000425639 00000 n -0000983977 00000 n -0000002684 00000 n -0000002726 00000 n -0000425828 00000 n -0000983859 00000 n -0000002774 00000 n -0000002808 00000 n -0000426080 00000 n -0000983780 00000 n -0000002858 00000 n -0000002912 00000 n -0000429035 00000 n -0000983687 00000 n -0000002962 00000 n -0000003030 00000 n -0000429663 00000 n -0000983594 00000 n -0000003080 00000 n -0000003154 00000 n -0000433252 00000 n -0000983515 00000 n -0000003204 00000 n -0000003254 00000 n -0000434901 00000 n -0000983397 00000 n -0000003302 00000 n -0000003341 00000 n -0000435153 00000 n -0000983318 00000 n -0000003391 00000 n -0000003446 00000 n -0000439436 00000 n -0000983239 00000 n -0000003496 00000 n -0000003547 00000 n -0000440887 00000 n -0000983146 00000 n -0000003592 00000 n -0000003632 00000 n -0000441391 00000 n -0000983014 00000 n -0000003678 00000 n -0000003715 00000 n -0000441579 00000 n -0000982935 00000 n -0000003764 00000 n -0000003805 00000 n -0000446890 00000 n -0000982856 00000 n -0000003854 00000 n -0000003922 00000 n -0000452264 00000 n -0000982777 00000 n -0000003968 00000 n -0000004003 00000 n -0000453275 00000 n -0000982646 00000 n -0000004046 00000 n -0000004104 00000 n -0000455927 00000 n -0000982567 00000 n -0000004150 00000 n -0000004187 00000 n -0000457000 00000 n -0000982474 00000 n -0000004233 00000 n -0000004277 00000 n -0000460798 00000 n -0000982381 00000 n -0000004323 00000 n -0000004366 00000 n -0000461302 00000 n -0000982288 00000 n -0000004412 00000 n -0000004446 00000 n -0000461933 00000 n -0000982195 00000 n -0000004492 00000 n -0000004531 00000 n -0000465990 00000 n -0000982102 00000 n -0000004577 00000 n -0000004623 00000 n -0000470837 00000 n -0000982023 00000 n -0000004669 00000 n -0000004746 00000 n -0000471723 00000 n -0000981892 00000 n -0000004789 00000 n -0000004843 00000 n -0000475466 00000 n -0000981774 00000 n -0000004889 00000 n -0000004933 00000 n -0000475655 00000 n -0000981695 00000 n -0000004982 00000 n +0000418806 00000 n +0000986761 00000 n +0000002419 00000 n +0000002457 00000 n +0000419059 00000 n +0000986682 00000 n +0000002502 00000 n +0000002540 00000 n +0000424027 00000 n +0000986550 00000 n +0000002585 00000 n +0000002627 00000 n +0000424216 00000 n +0000986432 00000 n +0000002675 00000 n +0000002709 00000 n +0000424469 00000 n +0000986353 00000 n +0000002759 00000 n +0000002813 00000 n +0000428160 00000 n +0000986260 00000 n +0000002863 00000 n +0000002931 00000 n +0000428789 00000 n +0000986167 00000 n +0000002981 00000 n +0000003055 00000 n +0000429418 00000 n +0000986088 00000 n +0000003105 00000 n +0000003155 00000 n +0000433595 00000 n +0000985970 00000 n +0000003203 00000 n +0000003242 00000 n +0000433847 00000 n +0000985891 00000 n +0000003292 00000 n +0000003347 00000 n +0000434797 00000 n +0000985812 00000 n +0000003397 00000 n +0000003448 00000 n +0000439372 00000 n +0000985719 00000 n +0000003493 00000 n +0000003533 00000 n +0000439877 00000 n +0000985587 00000 n +0000003579 00000 n +0000003616 00000 n +0000440065 00000 n +0000985508 00000 n +0000003665 00000 n +0000003706 00000 n +0000445344 00000 n +0000985429 00000 n +0000003755 00000 n +0000003823 00000 n +0000450784 00000 n +0000985350 00000 n +0000003869 00000 n +0000003904 00000 n +0000451794 00000 n +0000985219 00000 n +0000003947 00000 n +0000004005 00000 n +0000451983 00000 n +0000985140 00000 n +0000004051 00000 n +0000004088 00000 n +0000455815 00000 n +0000985047 00000 n +0000004134 00000 n +0000004178 00000 n +0000456823 00000 n +0000984954 00000 n +0000004224 00000 n +0000004267 00000 n +0000460176 00000 n +0000984861 00000 n +0000004313 00000 n +0000004347 00000 n +0000460807 00000 n +0000984768 00000 n +0000004393 00000 n +0000004432 00000 n +0000461631 00000 n +0000984675 00000 n +0000004478 00000 n +0000004524 00000 n +0000469955 00000 n +0000984596 00000 n +0000004570 00000 n +0000004647 00000 n +0000470842 00000 n +0000984465 00000 n +0000004690 00000 n +0000004744 00000 n +0000471157 00000 n +0000984347 00000 n +0000004790 00000 n +0000004834 00000 n +0000471346 00000 n +0000984268 00000 n +0000004883 00000 n +0000004922 00000 n +0000474965 00000 n +0000984175 00000 n +0000004971 00000 n 0000005021 00000 n -0000475972 00000 n -0000981602 00000 n +0000475784 00000 n +0000984082 00000 n 0000005070 00000 n -0000005120 00000 n -0000476791 00000 n -0000981509 00000 n -0000005169 00000 n +0000005136 00000 n +0000475971 00000 n +0000983989 00000 n +0000005185 00000 n 0000005235 00000 n -0000476978 00000 n -0000981416 00000 n +0000476411 00000 n +0000983910 00000 n 0000005284 00000 n -0000005334 00000 n -0000480680 00000 n -0000981337 00000 n -0000005383 00000 n -0000005425 00000 n -0000480869 00000 n -0000981205 00000 n -0000005471 00000 n -0000005506 00000 n -0000481057 00000 n -0000981126 00000 n -0000005555 00000 n -0000005592 00000 n -0000481372 00000 n -0000981047 00000 n -0000005641 00000 n -0000005709 00000 n -0000485301 00000 n -0000980968 00000 n -0000005755 00000 n -0000005799 00000 n -0000486433 00000 n -0000980851 00000 n -0000005843 00000 n -0000005903 00000 n -0000486555 00000 n -0000980772 00000 n -0000005950 00000 n -0000005989 00000 n -0000486744 00000 n -0000980640 00000 n -0000006036 00000 n -0000006068 00000 n -0000489356 00000 n -0000980536 00000 n -0000006118 00000 n -0000006171 00000 n -0000489482 00000 n -0000980457 00000 n -0000006223 00000 n -0000006285 00000 n -0000489733 00000 n -0000980364 00000 n -0000006337 00000 n -0000006391 00000 n -0000490050 00000 n -0000980285 00000 n -0000006443 00000 n -0000006493 00000 n -0000493469 00000 n -0000980192 00000 n -0000006540 00000 n -0000006571 00000 n -0000494474 00000 n -0000980060 00000 n -0000006618 00000 n -0000006657 00000 n -0000496679 00000 n -0000979981 00000 n -0000006707 00000 n -0000006758 00000 n -0000497501 00000 n -0000979902 00000 n -0000006808 00000 n -0000006853 00000 n -0000501365 00000 n -0000979770 00000 n -0000006900 00000 n -0000006938 00000 n -0000504670 00000 n -0000979705 00000 n -0000006988 00000 n -0000007042 00000 n -0000505238 00000 n -0000979626 00000 n -0000007089 00000 n -0000007124 00000 n -0000508922 00000 n -0000979493 00000 n -0000007165 00000 n -0000007218 00000 n -0000509048 00000 n -0000979414 00000 n -0000007262 00000 n -0000007309 00000 n -0000519257 00000 n -0000979282 00000 n -0000007353 00000 n +0000005326 00000 n +0000479980 00000 n +0000983778 00000 n +0000005372 00000 n +0000005407 00000 n +0000480169 00000 n +0000983699 00000 n +0000005456 00000 n +0000005493 00000 n +0000480485 00000 n +0000983620 00000 n +0000005542 00000 n +0000005610 00000 n +0000484756 00000 n +0000983541 00000 n +0000005656 00000 n +0000005700 00000 n +0000485889 00000 n +0000983424 00000 n +0000005744 00000 n +0000005804 00000 n +0000486015 00000 n +0000983345 00000 n +0000005851 00000 n +0000005890 00000 n +0000486202 00000 n +0000983213 00000 n +0000005937 00000 n +0000005969 00000 n +0000486710 00000 n +0000983109 00000 n +0000006019 00000 n +0000006072 00000 n +0000486836 00000 n +0000983030 00000 n +0000006124 00000 n +0000006186 00000 n +0000488898 00000 n +0000982937 00000 n +0000006238 00000 n +0000006292 00000 n +0000489214 00000 n +0000982858 00000 n +0000006344 00000 n +0000006394 00000 n +0000492412 00000 n +0000982765 00000 n +0000006441 00000 n +0000006472 00000 n +0000493418 00000 n +0000982633 00000 n +0000006519 00000 n +0000006558 00000 n +0000493607 00000 n +0000982554 00000 n +0000006608 00000 n +0000006659 00000 n +0000496442 00000 n +0000982475 00000 n +0000006709 00000 n +0000006754 00000 n +0000500829 00000 n +0000982343 00000 n +0000006801 00000 n +0000006839 00000 n +0000501017 00000 n +0000982278 00000 n +0000006889 00000 n +0000006943 00000 n +0000504009 00000 n +0000982199 00000 n +0000006990 00000 n +0000007025 00000 n +0000507695 00000 n +0000982066 00000 n +0000007066 00000 n +0000007119 00000 n +0000507821 00000 n +0000981987 00000 n +0000007163 00000 n +0000007210 00000 n +0000518030 00000 n +0000981855 00000 n +0000007254 00000 n +0000007298 00000 n +0000518155 00000 n +0000981776 00000 n +0000007345 00000 n 0000007397 00000 n -0000519382 00000 n -0000979203 00000 n +0000521366 00000 n +0000981658 00000 n 0000007444 00000 n -0000007496 00000 n -0000522593 00000 n -0000979085 00000 n -0000007543 00000 n -0000007590 00000 n -0000522719 00000 n -0000979006 00000 n -0000007640 00000 n -0000007687 00000 n -0000523476 00000 n -0000978927 00000 n -0000007737 00000 n -0000007781 00000 n -0000530314 00000 n -0000978834 00000 n -0000007825 00000 n -0000007865 00000 n -0000533970 00000 n -0000978741 00000 n -0000007909 00000 n -0000007942 00000 n -0000534787 00000 n -0000978648 00000 n -0000007986 00000 n -0000008021 00000 n -0000538074 00000 n -0000978555 00000 n -0000008065 00000 n -0000008098 00000 n -0000538766 00000 n -0000978462 00000 n -0000008142 00000 n -0000008177 00000 n -0000539708 00000 n -0000978330 00000 n -0000008221 00000 n -0000008251 00000 n -0000542320 00000 n -0000978251 00000 n -0000008298 00000 n -0000008341 00000 n -0000543711 00000 n -0000978119 00000 n -0000008388 00000 n -0000008426 00000 n -0000543837 00000 n -0000978054 00000 n -0000008476 00000 n -0000008511 00000 n -0000545098 00000 n -0000977961 00000 n -0000008558 00000 n -0000008604 00000 n -0000548506 00000 n -0000977829 00000 n -0000008651 00000 n -0000008696 00000 n -0000548694 00000 n -0000977750 00000 n -0000008746 00000 n -0000008791 00000 n -0000549703 00000 n -0000977671 00000 n -0000008841 00000 n -0000008879 00000 n -0000550145 00000 n -0000977553 00000 n -0000008926 00000 n -0000008972 00000 n -0000553681 00000 n -0000977435 00000 n -0000009022 00000 n -0000009066 00000 n -0000553933 00000 n -0000977356 00000 n -0000009119 00000 n -0000009154 00000 n -0000554122 00000 n -0000977263 00000 n -0000009207 00000 n -0000009249 00000 n -0000554311 00000 n -0000977170 00000 n -0000009302 00000 n -0000009341 00000 n -0000556403 00000 n -0000977077 00000 n -0000009394 00000 n -0000009433 00000 n -0000559431 00000 n -0000976984 00000 n -0000009486 00000 n -0000009523 00000 n -0000559683 00000 n -0000976891 00000 n -0000009576 00000 n -0000009618 00000 n -0000560191 00000 n -0000976798 00000 n -0000009671 00000 n -0000009709 00000 n -0000560380 00000 n -0000976705 00000 n -0000009762 00000 n -0000009817 00000 n -0000560631 00000 n -0000976626 00000 n -0000009870 00000 n -0000009914 00000 n -0000561011 00000 n -0000976533 00000 n -0000009964 00000 n -0000010008 00000 n -0000564760 00000 n -0000976454 00000 n -0000010058 00000 n -0000010101 00000 n -0000565074 00000 n -0000976361 00000 n -0000010145 00000 n -0000010176 00000 n -0000566206 00000 n -0000976268 00000 n -0000010220 00000 n -0000010251 00000 n -0000569850 00000 n -0000976136 00000 n -0000010295 00000 n -0000010346 00000 n -0000570673 00000 n -0000976057 00000 n -0000010393 00000 n -0000010436 00000 n -0000574802 00000 n -0000975964 00000 n -0000010483 00000 n -0000010536 00000 n -0000575432 00000 n -0000975871 00000 n -0000010583 00000 n -0000010647 00000 n -0000578235 00000 n -0000975753 00000 n -0000010694 00000 n -0000010759 00000 n -0000578361 00000 n -0000975674 00000 n -0000010809 00000 n -0000010878 00000 n -0000578549 00000 n -0000975581 00000 n -0000010928 00000 n -0000011001 00000 n -0000578801 00000 n -0000975502 00000 n -0000011051 00000 n -0000011116 00000 n -0000582519 00000 n -0000975384 00000 n -0000011160 00000 n -0000011211 00000 n -0000583021 00000 n -0000975305 00000 n -0000011258 00000 n -0000011305 00000 n -0000587601 00000 n -0000975173 00000 n -0000011352 00000 n -0000011411 00000 n -0000588611 00000 n -0000975094 00000 n -0000011461 00000 n -0000011510 00000 n -0000592235 00000 n -0000975001 00000 n -0000011560 00000 n -0000011617 00000 n -0000596592 00000 n -0000974922 00000 n -0000011667 00000 n -0000011720 00000 n -0000597603 00000 n -0000974843 00000 n -0000011767 00000 n -0000011818 00000 n -0000601652 00000 n -0000974710 00000 n -0000011859 00000 n -0000011907 00000 n -0000601968 00000 n -0000974592 00000 n -0000011951 00000 n -0000011992 00000 n -0000602093 00000 n -0000974513 00000 n -0000012039 00000 n -0000012078 00000 n -0000602282 00000 n -0000974420 00000 n -0000012125 00000 n -0000012172 00000 n -0000603426 00000 n -0000974341 00000 n -0000012219 00000 n -0000012261 00000 n -0000606258 00000 n -0000974209 00000 n -0000012305 00000 n -0000012335 00000 n -0000606384 00000 n -0000974130 00000 n -0000012382 00000 n -0000012433 00000 n -0000606572 00000 n -0000974037 00000 n -0000012480 00000 n -0000012541 00000 n -0000607896 00000 n -0000973958 00000 n -0000012588 00000 n -0000012629 00000 n -0000611030 00000 n -0000973826 00000 n -0000012673 00000 n -0000012707 00000 n -0000611156 00000 n -0000973747 00000 n -0000012754 00000 n -0000012836 00000 n -0000619920 00000 n -0000973668 00000 n -0000012883 00000 n -0000012944 00000 n -0000620491 00000 n -0000973550 00000 n -0000012988 00000 n -0000013021 00000 n -0000620617 00000 n -0000973485 00000 n -0000013068 00000 n -0000013139 00000 n -0000624278 00000 n -0000973352 00000 n -0000013180 00000 n -0000013231 00000 n -0000624404 00000 n -0000973234 00000 n -0000013275 00000 n -0000013322 00000 n -0000624656 00000 n -0000973155 00000 n -0000013369 00000 n -0000013424 00000 n -0000625417 00000 n -0000973062 00000 n -0000013471 00000 n -0000013529 00000 n -0000630451 00000 n -0000972969 00000 n -0000013576 00000 n -0000013624 00000 n -0000634781 00000 n -0000972876 00000 n -0000013671 00000 n -0000013724 00000 n -0000635980 00000 n -0000972783 00000 n -0000013771 00000 n -0000013818 00000 n -0000645354 00000 n -0000972704 00000 n -0000013865 00000 n -0000013942 00000 n -0000645924 00000 n -0000972611 00000 n -0000013986 00000 n -0000014025 00000 n -0000656302 00000 n -0000972518 00000 n -0000014069 00000 n -0000014125 00000 n -0000660351 00000 n -0000972425 00000 n -0000014169 00000 n -0000014223 00000 n -0000664743 00000 n -0000972293 00000 n -0000014267 00000 n -0000014328 00000 n -0000665372 00000 n -0000972189 00000 n -0000014375 00000 n -0000014426 00000 n -0000668804 00000 n -0000972124 00000 n -0000014476 00000 n -0000014529 00000 n -0000678368 00000 n -0000972006 00000 n -0000014573 00000 n -0000014640 00000 n -0000678494 00000 n -0000971927 00000 n -0000014687 00000 n -0000014720 00000 n -0000678683 00000 n -0000971834 00000 n -0000014767 00000 n -0000014797 00000 n -0000681100 00000 n -0000971741 00000 n -0000014844 00000 n -0000014883 00000 n -0000681543 00000 n -0000971648 00000 n -0000014930 00000 n -0000014967 00000 n -0000681795 00000 n -0000971569 00000 n -0000015014 00000 n -0000015061 00000 n -0000684881 00000 n -0000971435 00000 n -0000015103 00000 n -0000015148 00000 n -0000685007 00000 n -0000971356 00000 n -0000015193 00000 n -0000015230 00000 n -0000685258 00000 n -0000971263 00000 n -0000015275 00000 n -0000015325 00000 n -0000686268 00000 n -0000971170 00000 n -0000015370 00000 n -0000015411 00000 n -0000747043 00000 n -0000971077 00000 n -0000015456 00000 n -0000015500 00000 n -0000747484 00000 n -0000970945 00000 n -0000015545 00000 n -0000015588 00000 n -0000750451 00000 n -0000970841 00000 n -0000015636 00000 n -0000015677 00000 n -0000751650 00000 n -0000970762 00000 n -0000015728 00000 n -0000015777 00000 n -0000751838 00000 n -0000970669 00000 n -0000015828 00000 n -0000015865 00000 n -0000755905 00000 n -0000970590 00000 n -0000015916 00000 n -0000015960 00000 n -0000756411 00000 n -0000970497 00000 n -0000016005 00000 n -0000016039 00000 n -0000756851 00000 n -0000970404 00000 n -0000016084 00000 n -0000016120 00000 n -0000760737 00000 n -0000970272 00000 n -0000016165 00000 n -0000016202 00000 n -0000761114 00000 n -0000970193 00000 n -0000016250 00000 n -0000016308 00000 n -0000761303 00000 n -0000970100 00000 n -0000016356 00000 n -0000016424 00000 n -0000763838 00000 n -0000970007 00000 n -0000016472 00000 n -0000016530 00000 n -0000764027 00000 n -0000969914 00000 n -0000016578 00000 n -0000016649 00000 n -0000764216 00000 n -0000969821 00000 n -0000016697 00000 n -0000016755 00000 n -0000764405 00000 n -0000969728 00000 n -0000016803 00000 n -0000016853 00000 n -0000764657 00000 n -0000969649 00000 n -0000016901 00000 n -0000016951 00000 n -0000764845 00000 n -0000969517 00000 n -0000016996 00000 n -0000017035 00000 n -0000765034 00000 n -0000969438 00000 n -0000017083 00000 n -0000017127 00000 n -0000768224 00000 n -0000969345 00000 n -0000017175 00000 n -0000017213 00000 n -0000768667 00000 n -0000969252 00000 n -0000017261 00000 n -0000017296 00000 n -0000768919 00000 n -0000969159 00000 n -0000017344 00000 n -0000017382 00000 n -0000772115 00000 n -0000969080 00000 n -0000017430 00000 n -0000017472 00000 n -0000772430 00000 n -0000968948 00000 n -0000017517 00000 n -0000017559 00000 n -0000772619 00000 n -0000968869 00000 n -0000017607 00000 n -0000017654 00000 n -0000772936 00000 n -0000968776 00000 n -0000017702 00000 n -0000017749 00000 n -0000777371 00000 n -0000968683 00000 n -0000017797 00000 n -0000017842 00000 n -0000783068 00000 n -0000968604 00000 n -0000017890 00000 n -0000017929 00000 n -0000783256 00000 n -0000968472 00000 n -0000017974 00000 n -0000018018 00000 n -0000783445 00000 n -0000968393 00000 n -0000018066 00000 n -0000018101 00000 n -0000786934 00000 n -0000968275 00000 n -0000018149 00000 n -0000018183 00000 n -0000787373 00000 n -0000968196 00000 n -0000018234 00000 n -0000018279 00000 n -0000787813 00000 n -0000968117 00000 n -0000018330 00000 n -0000018382 00000 n -0000791366 00000 n -0000968024 00000 n -0000018427 00000 n -0000018458 00000 n -0000791995 00000 n -0000967906 00000 n -0000018503 00000 n -0000018536 00000 n -0000795927 00000 n -0000967827 00000 n -0000018584 00000 n -0000018621 00000 n -0000796241 00000 n -0000967734 00000 n -0000018669 00000 n -0000018713 00000 n -0000799756 00000 n -0000967641 00000 n -0000018761 00000 n -0000018804 00000 n -0000800449 00000 n -0000967562 00000 n -0000018852 00000 n -0000018899 00000 n -0000803581 00000 n -0000967468 00000 n -0000018941 00000 n -0000018989 00000 n -0000869480 00000 n -0000967334 00000 n -0000019031 00000 n -0000019078 00000 n -0000869669 00000 n -0000967255 00000 n -0000019123 00000 n -0000019162 00000 n -0000870366 00000 n -0000967162 00000 n -0000019207 00000 n -0000019282 00000 n -0000870807 00000 n -0000967069 00000 n -0000019327 00000 n -0000019423 00000 n -0000873554 00000 n -0000966976 00000 n -0000019468 00000 n -0000019540 00000 n -0000873870 00000 n -0000966883 00000 n -0000019585 00000 n -0000019640 00000 n -0000874498 00000 n -0000966790 00000 n -0000019685 00000 n -0000019743 00000 n -0000877216 00000 n -0000966697 00000 n -0000019788 00000 n -0000019863 00000 n -0000877721 00000 n -0000966604 00000 n -0000019908 00000 n -0000019980 00000 n -0000881680 00000 n -0000966511 00000 n -0000020025 00000 n -0000020099 00000 n -0000884492 00000 n -0000966418 00000 n -0000020144 00000 n -0000020223 00000 n -0000884872 00000 n -0000966339 00000 n -0000020268 00000 n -0000020388 00000 n -0000888722 00000 n -0000966206 00000 n -0000020430 00000 n -0000020469 00000 n -0000888973 00000 n -0000966127 00000 n -0000020514 00000 n -0000020567 00000 n -0000890935 00000 n -0000966048 00000 n -0000020612 00000 n -0000020675 00000 n -0000893550 00000 n -0000965915 00000 n -0000020717 00000 n -0000020784 00000 n -0000893675 00000 n -0000965836 00000 n -0000020829 00000 n -0000020866 00000 n -0000894810 00000 n -0000965743 00000 n -0000020911 00000 n -0000020954 00000 n -0000900192 00000 n -0000965664 00000 n -0000020999 00000 n -0000021040 00000 n -0000906288 00000 n -0000965530 00000 n -0000021082 00000 n -0000021144 00000 n -0000906602 00000 n -0000965451 00000 n -0000021189 00000 n -0000021220 00000 n -0000906915 00000 n -0000965358 00000 n -0000021265 00000 n -0000021316 00000 n -0000910997 00000 n -0000965265 00000 n -0000021361 00000 n -0000021400 00000 n -0000911248 00000 n -0000965172 00000 n -0000021445 00000 n -0000021487 00000 n -0000915242 00000 n -0000965079 00000 n -0000021532 00000 n -0000021568 00000 n -0000920478 00000 n -0000964986 00000 n -0000021613 00000 n -0000021655 00000 n -0000920792 00000 n -0000964893 00000 n -0000021700 00000 n -0000021747 00000 n -0000921044 00000 n -0000964800 00000 n -0000021792 00000 n -0000021849 00000 n -0000924168 00000 n -0000964707 00000 n -0000021894 00000 n -0000021928 00000 n -0000924356 00000 n -0000964614 00000 n -0000021973 00000 n -0000022007 00000 n -0000924545 00000 n -0000964521 00000 n -0000022052 00000 n -0000022108 00000 n -0000924860 00000 n -0000964442 00000 n -0000022153 00000 n -0000022215 00000 n -0000928867 00000 n -0000964348 00000 n -0000022257 00000 n -0000022285 00000 n -0000928993 00000 n -0000964215 00000 n -0000022327 00000 n -0000022361 00000 n -0000929119 00000 n -0000964150 00000 n -0000022409 00000 n -0000022438 00000 n -0000929497 00000 n -0000964017 00000 n -0000022480 00000 n -0000022501 00000 n -0000929622 00000 n -0000963913 00000 n -0000022549 00000 n -0000022575 00000 n -0000930064 00000 n -0000963848 00000 n -0000022626 00000 n -0000022689 00000 n -0000934023 00000 n -0000963715 00000 n -0000022731 00000 n -0000022752 00000 n -0000934147 00000 n +0000007491 00000 n +0000521492 00000 n +0000981579 00000 n +0000007541 00000 n +0000007588 00000 n +0000522249 00000 n +0000981486 00000 n +0000007638 00000 n +0000007682 00000 n +0000529156 00000 n +0000981407 00000 n +0000007732 00000 n +0000007780 00000 n +0000532887 00000 n +0000981314 00000 n +0000007824 00000 n +0000007864 00000 n +0000533391 00000 n +0000981221 00000 n +0000007908 00000 n +0000007941 00000 n +0000536782 00000 n +0000981128 00000 n +0000007985 00000 n +0000008020 00000 n +0000537601 00000 n +0000981035 00000 n +0000008064 00000 n +0000008097 00000 n +0000538292 00000 n +0000980942 00000 n +0000008141 00000 n +0000008176 00000 n +0000541975 00000 n +0000980810 00000 n +0000008220 00000 n +0000008250 00000 n +0000542356 00000 n +0000980731 00000 n +0000008297 00000 n +0000008340 00000 n +0000546449 00000 n +0000980599 00000 n +0000008387 00000 n +0000008425 00000 n +0000546575 00000 n +0000980534 00000 n +0000008475 00000 n +0000008510 00000 n +0000547711 00000 n +0000980441 00000 n +0000008557 00000 n +0000008603 00000 n +0000548535 00000 n +0000980309 00000 n +0000008650 00000 n +0000008695 00000 n +0000548724 00000 n +0000980230 00000 n +0000008745 00000 n +0000008790 00000 n +0000552415 00000 n +0000980151 00000 n +0000008840 00000 n +0000008878 00000 n +0000552855 00000 n +0000980033 00000 n +0000008925 00000 n +0000008971 00000 n +0000553299 00000 n +0000979915 00000 n +0000009021 00000 n +0000009065 00000 n +0000553551 00000 n +0000979836 00000 n +0000009118 00000 n +0000009153 00000 n +0000553738 00000 n +0000979743 00000 n +0000009206 00000 n +0000009248 00000 n +0000553926 00000 n +0000979650 00000 n +0000009301 00000 n +0000009340 00000 n +0000558877 00000 n +0000979557 00000 n +0000009393 00000 n +0000009432 00000 n +0000559191 00000 n +0000979464 00000 n +0000009485 00000 n +0000009522 00000 n +0000559444 00000 n +0000979371 00000 n +0000009575 00000 n +0000009617 00000 n +0000559952 00000 n +0000979278 00000 n +0000009670 00000 n +0000009708 00000 n +0000562846 00000 n +0000979185 00000 n +0000009761 00000 n +0000009816 00000 n +0000563098 00000 n +0000979106 00000 n +0000009869 00000 n +0000009913 00000 n +0000563478 00000 n +0000979013 00000 n +0000009963 00000 n +0000010007 00000 n +0000564113 00000 n +0000978934 00000 n +0000010057 00000 n +0000010100 00000 n +0000564428 00000 n +0000978841 00000 n +0000010144 00000 n +0000010175 00000 n +0000568988 00000 n +0000978748 00000 n +0000010219 00000 n +0000010250 00000 n +0000569493 00000 n +0000978616 00000 n +0000010294 00000 n +0000010345 00000 n +0000572981 00000 n +0000978537 00000 n +0000010392 00000 n +0000010435 00000 n +0000574690 00000 n +0000978444 00000 n +0000010482 00000 n +0000010535 00000 n +0000577623 00000 n +0000978351 00000 n +0000010582 00000 n +0000010646 00000 n +0000578691 00000 n +0000978233 00000 n +0000010693 00000 n +0000010758 00000 n +0000578817 00000 n +0000978154 00000 n +0000010808 00000 n +0000010877 00000 n +0000579069 00000 n +0000978061 00000 n +0000010927 00000 n +0000011000 00000 n +0000581084 00000 n +0000977982 00000 n +0000011050 00000 n +0000011115 00000 n +0000581965 00000 n +0000977864 00000 n +0000011159 00000 n +0000011210 00000 n +0000586737 00000 n +0000977785 00000 n +0000011257 00000 n +0000011304 00000 n +0000587242 00000 n +0000977653 00000 n +0000011351 00000 n +0000011410 00000 n +0000590995 00000 n +0000977574 00000 n +0000011460 00000 n +0000011509 00000 n +0000592003 00000 n +0000977481 00000 n +0000011559 00000 n +0000011616 00000 n +0000596217 00000 n +0000977402 00000 n +0000011666 00000 n +0000011719 00000 n +0000599275 00000 n +0000977323 00000 n +0000011766 00000 n +0000011817 00000 n +0000603327 00000 n +0000977190 00000 n +0000011858 00000 n +0000011906 00000 n +0000603643 00000 n +0000977072 00000 n +0000011950 00000 n +0000011991 00000 n +0000603768 00000 n +0000976993 00000 n +0000012038 00000 n +0000012077 00000 n +0000603957 00000 n +0000976900 00000 n +0000012124 00000 n +0000012171 00000 n +0000605101 00000 n +0000976821 00000 n +0000012218 00000 n +0000012260 00000 n +0000607933 00000 n +0000976689 00000 n +0000012304 00000 n +0000012334 00000 n +0000608059 00000 n +0000976610 00000 n +0000012381 00000 n +0000012432 00000 n +0000608247 00000 n +0000976517 00000 n +0000012479 00000 n +0000012540 00000 n +0000609571 00000 n +0000976438 00000 n +0000012587 00000 n +0000012628 00000 n +0000612862 00000 n +0000976306 00000 n +0000012672 00000 n +0000012706 00000 n +0000612988 00000 n +0000976227 00000 n +0000012753 00000 n +0000012835 00000 n +0000621128 00000 n +0000976148 00000 n +0000012882 00000 n +0000012943 00000 n +0000621698 00000 n +0000976030 00000 n +0000012987 00000 n +0000013020 00000 n +0000621824 00000 n +0000975965 00000 n +0000013067 00000 n +0000013138 00000 n +0000625424 00000 n +0000975832 00000 n +0000013179 00000 n +0000013230 00000 n +0000625550 00000 n +0000975714 00000 n +0000013274 00000 n +0000013321 00000 n +0000625802 00000 n +0000975635 00000 n +0000013368 00000 n +0000013423 00000 n +0000626563 00000 n +0000975542 00000 n +0000013470 00000 n +0000013528 00000 n +0000631597 00000 n +0000975449 00000 n +0000013575 00000 n +0000013623 00000 n +0000635928 00000 n +0000975356 00000 n +0000013670 00000 n +0000013723 00000 n +0000637127 00000 n +0000975263 00000 n +0000013770 00000 n +0000013817 00000 n +0000646501 00000 n +0000975184 00000 n +0000013864 00000 n +0000013941 00000 n +0000647071 00000 n +0000975091 00000 n +0000013985 00000 n +0000014024 00000 n +0000657449 00000 n +0000974998 00000 n +0000014068 00000 n +0000014124 00000 n +0000661498 00000 n +0000974905 00000 n +0000014168 00000 n +0000014222 00000 n +0000665891 00000 n +0000974773 00000 n +0000014266 00000 n +0000014327 00000 n +0000666520 00000 n +0000974669 00000 n +0000014374 00000 n +0000014425 00000 n +0000669952 00000 n +0000974604 00000 n +0000014475 00000 n +0000014528 00000 n +0000679516 00000 n +0000974486 00000 n +0000014572 00000 n +0000014639 00000 n +0000679642 00000 n +0000974407 00000 n +0000014686 00000 n +0000014719 00000 n +0000679831 00000 n +0000974314 00000 n +0000014766 00000 n +0000014796 00000 n +0000682244 00000 n +0000974221 00000 n +0000014843 00000 n +0000014882 00000 n +0000682687 00000 n +0000974128 00000 n +0000014929 00000 n +0000014966 00000 n +0000682939 00000 n +0000974049 00000 n +0000015013 00000 n +0000015060 00000 n +0000686026 00000 n +0000973915 00000 n +0000015102 00000 n +0000015147 00000 n +0000686152 00000 n +0000973836 00000 n +0000015192 00000 n +0000015229 00000 n +0000686403 00000 n +0000973743 00000 n +0000015274 00000 n +0000015324 00000 n +0000687413 00000 n +0000973650 00000 n +0000015369 00000 n +0000015410 00000 n +0000748189 00000 n +0000973557 00000 n +0000015455 00000 n +0000015499 00000 n +0000748630 00000 n +0000973425 00000 n +0000015544 00000 n +0000015587 00000 n +0000751597 00000 n +0000973321 00000 n +0000015635 00000 n +0000015676 00000 n +0000752796 00000 n +0000973242 00000 n +0000015727 00000 n +0000015776 00000 n +0000752984 00000 n +0000973149 00000 n +0000015827 00000 n +0000015864 00000 n +0000757051 00000 n +0000973070 00000 n +0000015915 00000 n +0000015959 00000 n +0000757557 00000 n +0000972977 00000 n +0000016004 00000 n +0000016038 00000 n +0000757997 00000 n +0000972884 00000 n +0000016083 00000 n +0000016119 00000 n +0000761883 00000 n +0000972752 00000 n +0000016164 00000 n +0000016201 00000 n +0000762260 00000 n +0000972673 00000 n +0000016249 00000 n +0000016307 00000 n +0000762449 00000 n +0000972580 00000 n +0000016355 00000 n +0000016423 00000 n +0000764984 00000 n +0000972487 00000 n +0000016471 00000 n +0000016529 00000 n +0000765173 00000 n +0000972394 00000 n +0000016577 00000 n +0000016648 00000 n +0000765362 00000 n +0000972301 00000 n +0000016696 00000 n +0000016754 00000 n +0000765551 00000 n +0000972208 00000 n +0000016802 00000 n +0000016852 00000 n +0000765803 00000 n +0000972129 00000 n +0000016900 00000 n +0000016950 00000 n +0000765991 00000 n +0000971997 00000 n +0000016995 00000 n +0000017034 00000 n +0000766180 00000 n +0000971918 00000 n +0000017082 00000 n +0000017126 00000 n +0000769466 00000 n +0000971825 00000 n +0000017174 00000 n +0000017212 00000 n +0000769909 00000 n +0000971732 00000 n +0000017260 00000 n +0000017295 00000 n +0000770161 00000 n +0000971639 00000 n +0000017343 00000 n +0000017381 00000 n +0000773357 00000 n +0000971560 00000 n +0000017429 00000 n +0000017471 00000 n +0000773672 00000 n +0000971428 00000 n +0000017516 00000 n +0000017558 00000 n +0000773861 00000 n +0000971349 00000 n +0000017606 00000 n +0000017653 00000 n +0000774178 00000 n +0000971256 00000 n +0000017701 00000 n +0000017748 00000 n +0000778612 00000 n +0000971163 00000 n +0000017796 00000 n +0000017841 00000 n +0000784310 00000 n +0000971084 00000 n +0000017889 00000 n +0000017928 00000 n +0000784498 00000 n +0000970952 00000 n +0000017973 00000 n +0000018017 00000 n +0000784687 00000 n +0000970873 00000 n +0000018065 00000 n +0000018100 00000 n +0000788176 00000 n +0000970755 00000 n +0000018148 00000 n +0000018182 00000 n +0000788615 00000 n +0000970676 00000 n +0000018233 00000 n +0000018278 00000 n +0000789055 00000 n +0000970597 00000 n +0000018329 00000 n +0000018381 00000 n +0000792608 00000 n +0000970504 00000 n +0000018426 00000 n +0000018457 00000 n +0000793237 00000 n +0000970386 00000 n +0000018502 00000 n +0000018535 00000 n +0000797169 00000 n +0000970307 00000 n +0000018583 00000 n +0000018620 00000 n +0000797483 00000 n +0000970214 00000 n +0000018668 00000 n +0000018712 00000 n +0000800998 00000 n +0000970121 00000 n +0000018760 00000 n +0000018803 00000 n +0000801691 00000 n +0000970042 00000 n +0000018851 00000 n +0000018898 00000 n +0000804823 00000 n +0000969948 00000 n +0000018940 00000 n +0000018988 00000 n +0000870721 00000 n +0000969814 00000 n +0000019030 00000 n +0000019077 00000 n +0000870910 00000 n +0000969735 00000 n +0000019122 00000 n +0000019161 00000 n +0000871607 00000 n +0000969642 00000 n +0000019206 00000 n +0000019281 00000 n +0000872048 00000 n +0000969549 00000 n +0000019326 00000 n +0000019422 00000 n +0000874794 00000 n +0000969456 00000 n +0000019467 00000 n +0000019539 00000 n +0000875110 00000 n +0000969363 00000 n +0000019584 00000 n +0000019639 00000 n +0000875738 00000 n +0000969270 00000 n +0000019684 00000 n +0000019742 00000 n +0000878457 00000 n +0000969177 00000 n +0000019787 00000 n +0000019862 00000 n +0000878962 00000 n +0000969084 00000 n +0000019907 00000 n +0000019979 00000 n +0000882921 00000 n +0000968991 00000 n +0000020024 00000 n +0000020098 00000 n +0000885735 00000 n +0000968898 00000 n +0000020143 00000 n +0000020222 00000 n +0000886115 00000 n +0000968819 00000 n +0000020267 00000 n +0000020387 00000 n +0000889966 00000 n +0000968686 00000 n +0000020429 00000 n +0000020468 00000 n +0000890217 00000 n +0000968607 00000 n +0000020513 00000 n +0000020566 00000 n +0000892179 00000 n +0000968528 00000 n +0000020611 00000 n +0000020674 00000 n +0000894794 00000 n +0000968395 00000 n +0000020716 00000 n +0000020783 00000 n +0000894919 00000 n +0000968316 00000 n +0000020828 00000 n +0000020865 00000 n +0000896054 00000 n +0000968223 00000 n +0000020910 00000 n +0000020953 00000 n +0000903245 00000 n +0000968144 00000 n +0000020998 00000 n +0000021039 00000 n +0000908748 00000 n +0000968010 00000 n +0000021081 00000 n +0000021143 00000 n +0000909062 00000 n +0000967931 00000 n +0000021188 00000 n +0000021219 00000 n +0000909375 00000 n +0000967838 00000 n +0000021264 00000 n +0000021315 00000 n +0000913457 00000 n +0000967745 00000 n +0000021360 00000 n +0000021399 00000 n +0000913708 00000 n +0000967652 00000 n +0000021444 00000 n +0000021486 00000 n +0000917704 00000 n +0000967559 00000 n +0000021531 00000 n +0000021567 00000 n +0000922940 00000 n +0000967466 00000 n +0000021612 00000 n +0000021654 00000 n +0000923254 00000 n +0000967373 00000 n +0000021699 00000 n +0000021746 00000 n +0000923506 00000 n +0000967280 00000 n +0000021791 00000 n +0000021848 00000 n +0000926631 00000 n +0000967187 00000 n +0000021893 00000 n +0000021927 00000 n +0000926819 00000 n +0000967094 00000 n +0000021972 00000 n +0000022006 00000 n +0000927008 00000 n +0000967001 00000 n +0000022051 00000 n +0000022107 00000 n +0000927323 00000 n +0000966922 00000 n +0000022152 00000 n +0000022214 00000 n +0000931330 00000 n +0000966828 00000 n +0000022256 00000 n +0000022284 00000 n +0000931456 00000 n +0000966695 00000 n +0000022326 00000 n +0000022360 00000 n +0000931582 00000 n +0000966630 00000 n +0000022408 00000 n +0000022437 00000 n +0000931960 00000 n +0000966497 00000 n +0000022479 00000 n +0000022500 00000 n +0000932085 00000 n +0000966393 00000 n +0000022548 00000 n +0000022574 00000 n +0000932527 00000 n +0000966328 00000 n +0000022625 00000 n +0000022688 00000 n +0000936486 00000 n +0000966195 00000 n +0000022730 00000 n +0000022751 00000 n +0000936610 00000 n +0000966091 00000 n +0000022799 00000 n +0000022822 00000 n +0000937050 00000 n +0000966012 00000 n +0000022870 00000 n +0000022900 00000 n +0000937301 00000 n +0000965933 00000 n +0000022948 00000 n +0000022976 00000 n +0000937553 00000 n +0000965799 00000 n +0000023018 00000 n +0000023039 00000 n +0000937678 00000 n +0000965694 00000 n +0000023087 00000 n +0000023131 00000 n +0000938055 00000 n +0000965613 00000 n +0000023179 00000 n +0000023209 00000 n +0000938307 00000 n +0000965516 00000 n +0000023258 00000 n +0000023313 00000 n +0000938811 00000 n +0000965433 00000 n +0000023362 00000 n +0000023390 00000 n +0000941511 00000 n +0000965294 00000 n +0000023433 00000 n +0000023455 00000 n +0000941637 00000 n +0000965184 00000 n +0000023504 00000 n +0000023531 00000 n +0000942017 00000 n +0000965115 00000 n +0000023580 00000 n +0000023611 00000 n +0000942332 00000 n +0000964975 00000 n +0000023654 00000 n +0000023676 00000 n +0000942458 00000 n +0000964906 00000 n +0000023725 00000 n +0000023752 00000 n +0000942902 00000 n +0000964766 00000 n +0000023795 00000 n +0000023817 00000 n +0000943028 00000 n +0000964697 00000 n +0000023866 00000 n +0000023897 00000 n +0000945514 00000 n +0000964557 00000 n +0000023940 00000 n +0000023962 00000 n +0000945638 00000 n +0000964447 00000 n +0000024011 00000 n +0000024055 00000 n +0000946197 00000 n +0000964378 00000 n +0000024105 00000 n +0000024131 00000 n +0000947398 00000 n +0000964238 00000 n +0000024174 00000 n +0000024196 00000 n +0000947523 00000 n +0000964128 00000 n +0000024246 00000 n +0000024287 00000 n +0000947837 00000 n +0000964044 00000 n +0000024337 00000 n +0000024365 00000 n +0000949766 00000 n +0000963960 00000 n +0000024415 00000 n +0000024440 00000 n +0000950082 00000 n +0000963820 00000 n +0000024483 00000 n +0000024505 00000 n +0000950206 00000 n +0000963751 00000 n +0000024555 00000 n +0000024578 00000 n +0000950776 00000 n 0000963611 00000 n -0000022800 00000 n -0000022823 00000 n -0000934587 00000 n -0000963532 00000 n -0000022871 00000 n -0000022901 00000 n -0000934838 00000 n -0000963453 00000 n -0000022949 00000 n -0000022977 00000 n -0000935090 00000 n -0000963319 00000 n -0000023019 00000 n -0000023040 00000 n -0000935215 00000 n -0000963214 00000 n -0000023088 00000 n -0000023132 00000 n -0000935592 00000 n -0000963133 00000 n -0000023180 00000 n -0000023210 00000 n -0000935844 00000 n -0000963036 00000 n -0000023259 00000 n -0000023314 00000 n -0000936348 00000 n -0000962953 00000 n -0000023363 00000 n -0000023391 00000 n -0000939048 00000 n -0000962814 00000 n -0000023434 00000 n -0000023456 00000 n -0000939174 00000 n -0000962704 00000 n -0000023505 00000 n -0000023532 00000 n -0000939554 00000 n -0000962635 00000 n -0000023581 00000 n -0000023612 00000 n -0000939869 00000 n -0000962495 00000 n -0000023655 00000 n -0000023677 00000 n -0000939995 00000 n -0000962426 00000 n -0000023726 00000 n -0000023753 00000 n -0000940439 00000 n -0000962286 00000 n -0000023796 00000 n -0000023818 00000 n -0000940565 00000 n -0000962217 00000 n -0000023867 00000 n -0000023898 00000 n -0000943051 00000 n -0000962077 00000 n -0000023941 00000 n -0000023963 00000 n -0000943175 00000 n -0000961967 00000 n -0000024012 00000 n -0000024056 00000 n -0000943734 00000 n -0000961898 00000 n -0000024106 00000 n -0000024132 00000 n -0000944935 00000 n -0000961758 00000 n -0000024175 00000 n -0000024197 00000 n -0000945060 00000 n -0000961648 00000 n -0000024247 00000 n -0000024288 00000 n -0000945374 00000 n -0000961564 00000 n -0000024338 00000 n -0000024366 00000 n -0000947304 00000 n -0000961480 00000 n -0000024416 00000 n -0000024441 00000 n -0000947620 00000 n -0000961340 00000 n -0000024484 00000 n -0000024506 00000 n -0000947744 00000 n -0000961271 00000 n -0000024556 00000 n -0000024579 00000 n -0000948314 00000 n -0000961131 00000 n -0000024622 00000 n -0000024644 00000 n -0000948440 00000 n -0000961021 00000 n -0000024694 00000 n -0000024752 00000 n -0000948693 00000 n -0000960952 00000 n -0000024802 00000 n -0000024841 00000 n -0000949010 00000 n -0000960812 00000 n -0000024884 00000 n -0000024906 00000 n -0000949135 00000 n -0000960702 00000 n -0000024956 00000 n -0000024984 00000 n -0000951868 00000 n -0000960633 00000 n -0000025034 00000 n -0000025060 00000 n -0000952757 00000 n -0000960493 00000 n -0000025103 00000 n -0000025125 00000 n -0000952883 00000 n -0000960383 00000 n -0000025175 00000 n -0000025212 00000 n -0000953200 00000 n -0000960314 00000 n -0000025262 00000 n -0000025304 00000 n -0000953453 00000 n -0000960189 00000 n -0000025347 00000 n -0000025369 00000 n -0000953579 00000 n -0000960120 00000 n -0000025419 00000 n -0000025457 00000 n -0000025775 00000 n -0000026148 00000 n -0000025511 00000 n -0000025899 00000 n -0000025962 00000 n -0000026025 00000 n +0000024621 00000 n +0000024643 00000 n +0000950902 00000 n +0000963501 00000 n +0000024693 00000 n +0000024751 00000 n +0000951155 00000 n +0000963432 00000 n +0000024801 00000 n +0000024840 00000 n +0000951472 00000 n +0000963292 00000 n +0000024883 00000 n +0000024905 00000 n +0000951597 00000 n +0000963182 00000 n +0000024955 00000 n +0000024983 00000 n +0000954330 00000 n +0000963113 00000 n +0000025033 00000 n +0000025059 00000 n +0000955219 00000 n +0000962973 00000 n +0000025102 00000 n +0000025124 00000 n +0000955345 00000 n +0000962863 00000 n +0000025174 00000 n +0000025211 00000 n +0000955662 00000 n +0000962794 00000 n +0000025261 00000 n +0000025303 00000 n +0000955915 00000 n +0000962669 00000 n +0000025346 00000 n +0000025368 00000 n +0000956041 00000 n +0000962600 00000 n +0000025418 00000 n +0000025456 00000 n +0000025772 00000 n +0000026146 00000 n +0000025510 00000 n +0000025896 00000 n +0000025959 00000 n +0000026022 00000 n 0000001131 00000 f -0000956769 00000 n -0000956866 00000 n -0000027016 00000 n -0000026829 00000 n -0000026222 00000 n -0000026953 00000 n +0000959231 00000 n +0000959328 00000 n +0000027013 00000 n +0000026826 00000 n +0000026220 00000 n +0000026950 00000 n 0000001138 00000 f -0000956675 00000 n +0000959137 00000 n +0000099166 00000 n +0000083953 00000 n +0000027101 00000 n 0000099042 00000 n -0000083796 00000 n -0000027104 00000 n -0000098918 00000 n -0000084742 00000 n +0000084899 00000 n 0000001229 00000 f -0000956582 00000 n -0000084889 00000 n -0000085037 00000 n -0000085189 00000 n -0000085342 00000 n -0000085495 00000 n -0000085649 00000 n -0000085802 00000 n -0000085956 00000 n -0000086106 00000 n -0000086257 00000 n -0000086411 00000 n -0000086566 00000 n -0000086728 00000 n -0000086891 00000 n -0000087046 00000 n -0000087202 00000 n -0000087358 00000 n -0000087514 00000 n -0000087674 00000 n -0000087834 00000 n +0000959044 00000 n +0000085046 00000 n +0000085194 00000 n +0000085346 00000 n +0000085499 00000 n +0000085652 00000 n +0000085806 00000 n +0000085959 00000 n +0000086113 00000 n +0000086263 00000 n +0000086414 00000 n +0000086568 00000 n +0000086723 00000 n +0000086885 00000 n +0000087048 00000 n +0000087203 00000 n +0000087359 00000 n +0000087515 00000 n +0000087671 00000 n +0000087831 00000 n 0000087991 00000 n 0000088148 00000 n -0000088301 00000 n -0000088454 00000 n -0000088614 00000 n -0000088774 00000 n -0000088933 00000 n -0000089092 00000 n -0000089255 00000 n -0000089418 00000 n -0000089587 00000 n -0000089756 00000 n -0000089924 00000 n -0000090092 00000 n -0000090254 00000 n -0000090416 00000 n -0000090586 00000 n -0000090756 00000 n -0000090923 00000 n -0000091090 00000 n -0000091263 00000 n -0000091436 00000 n -0000091606 00000 n -0000091776 00000 n -0000091947 00000 n -0000092118 00000 n -0000092289 00000 n -0000092460 00000 n -0000092615 00000 n -0000092770 00000 n -0000092925 00000 n -0000093081 00000 n -0000093234 00000 n -0000093387 00000 n -0000093546 00000 n -0000093704 00000 n -0000093853 00000 n -0000094001 00000 n -0000094155 00000 n -0000094308 00000 n -0000094455 00000 n -0000094601 00000 n -0000094748 00000 n -0000094895 00000 n -0000095048 00000 n -0000095201 00000 n -0000095352 00000 n -0000095502 00000 n -0000095669 00000 n -0000095835 00000 n -0000095989 00000 n -0000096143 00000 n -0000096290 00000 n -0000096436 00000 n -0000096583 00000 n -0000096729 00000 n -0000096898 00000 n -0000097066 00000 n -0000097229 00000 n -0000097391 00000 n -0000097546 00000 n -0000097700 00000 n -0000097849 00000 n -0000097998 00000 n -0000098156 00000 n -0000098313 00000 n -0000098466 00000 n -0000098620 00000 n -0000098769 00000 n +0000088305 00000 n +0000088458 00000 n +0000088611 00000 n +0000088771 00000 n +0000088931 00000 n +0000089090 00000 n +0000089249 00000 n +0000089412 00000 n +0000089575 00000 n +0000089744 00000 n +0000089913 00000 n +0000090081 00000 n +0000090249 00000 n +0000090411 00000 n +0000090573 00000 n +0000090743 00000 n +0000090913 00000 n +0000091080 00000 n +0000091247 00000 n +0000091420 00000 n +0000091593 00000 n +0000091763 00000 n +0000091933 00000 n +0000092104 00000 n +0000092275 00000 n +0000092430 00000 n +0000092585 00000 n +0000092741 00000 n +0000092898 00000 n +0000093052 00000 n +0000093206 00000 n +0000093363 00000 n +0000093519 00000 n +0000093668 00000 n +0000093816 00000 n +0000093970 00000 n +0000094123 00000 n +0000094270 00000 n +0000094416 00000 n +0000094562 00000 n +0000094708 00000 n +0000094862 00000 n +0000095016 00000 n +0000095168 00000 n +0000095319 00000 n +0000095485 00000 n +0000095650 00000 n +0000095804 00000 n +0000095958 00000 n +0000096105 00000 n +0000096251 00000 n +0000096398 00000 n +0000096544 00000 n +0000096713 00000 n +0000096881 00000 n +0000097045 00000 n +0000097208 00000 n +0000097364 00000 n +0000097519 00000 n +0000097667 00000 n +0000097815 00000 n +0000097973 00000 n +0000098130 00000 n +0000098283 00000 n +0000098437 00000 n +0000098588 00000 n +0000098739 00000 n +0000098891 00000 n 0000001462 00000 f -0000956487 00000 n -0000378811 00000 n -0000378936 00000 n -0000379313 00000 n -0000379627 00000 n -0000383639 00000 n -0000386610 00000 n -0000393138 00000 n -0000393263 00000 n -0000394585 00000 n -0000397447 00000 n -0000397635 00000 n -0000398330 00000 n -0000398771 00000 n -0000399213 00000 n -0000403866 00000 n -0000412125 00000 n -0000414550 00000 n -0000414738 00000 n -0000415432 00000 n -0000415620 00000 n -0000415808 00000 n -0000415995 00000 n -0000416312 00000 n -0000414425 00000 n -0000419881 00000 n -0000420509 00000 n -0000420762 00000 n -0000425576 00000 n -0000425765 00000 n -0000434838 00000 n -0000440825 00000 n -0000441329 00000 n -0000441517 00000 n -0000446827 00000 n -0000452201 00000 n -0000453212 00000 n -0000453400 00000 n -0000456937 00000 n -0000457945 00000 n -0000461239 00000 n -0000461870 00000 n -0000462693 00000 n -0000470774 00000 n -0000471660 00000 n -0000471976 00000 n -0000172964 00000 n -0000157513 00000 n -0000099158 00000 n -0000172901 00000 n -0000158495 00000 n -0000158649 00000 n -0000158802 00000 n -0000158964 00000 n -0000159125 00000 n -0000159287 00000 n -0000159448 00000 n -0000159602 00000 n -0000159755 00000 n -0000159910 00000 n -0000160064 00000 n -0000160217 00000 n -0000160369 00000 n -0000160527 00000 n -0000160684 00000 n -0000160842 00000 n -0000161001 00000 n -0000161156 00000 n -0000161310 00000 n -0000161460 00000 n -0000161610 00000 n -0000161756 00000 n -0000161901 00000 n -0000162048 00000 n -0000162194 00000 n -0000162339 00000 n -0000162484 00000 n -0000162630 00000 n -0000162775 00000 n -0000162946 00000 n -0000163116 00000 n -0000163263 00000 n -0000163409 00000 n -0000163555 00000 n -0000163701 00000 n -0000163847 00000 n -0000163992 00000 n -0000164139 00000 n -0000164285 00000 n -0000164431 00000 n -0000164576 00000 n -0000164733 00000 n -0000164890 00000 n -0000165043 00000 n -0000165196 00000 n -0000165348 00000 n -0000165500 00000 n -0000165655 00000 n -0000165809 00000 n -0000165963 00000 n -0000166116 00000 n -0000166273 00000 n -0000166429 00000 n -0000166584 00000 n -0000166738 00000 n -0000166896 00000 n -0000167054 00000 n -0000167205 00000 n -0000167356 00000 n -0000167509 00000 n -0000167662 00000 n -0000167813 00000 n -0000167964 00000 n -0000168117 00000 n -0000168270 00000 n -0000168426 00000 n -0000168582 00000 n -0000168745 00000 n -0000168907 00000 n -0000169062 00000 n -0000169216 00000 n -0000169371 00000 n -0000169525 00000 n -0000169679 00000 n -0000169832 00000 n -0000169986 00000 n -0000170139 00000 n -0000170302 00000 n -0000170464 00000 n -0000170620 00000 n -0000170775 00000 n -0000170930 00000 n -0000171084 00000 n -0000171240 00000 n -0000171395 00000 n -0000171551 00000 n -0000171706 00000 n -0000171860 00000 n -0000172013 00000 n -0000172162 00000 n -0000172311 00000 n -0000172458 00000 n -0000172605 00000 n -0000172753 00000 n -0000475592 00000 n +0000958949 00000 n +0000377187 00000 n +0000377312 00000 n +0000377689 00000 n +0000378003 00000 n +0000382015 00000 n +0000384986 00000 n +0000391514 00000 n +0000391639 00000 n +0000392961 00000 n +0000395822 00000 n +0000396010 00000 n +0000396705 00000 n +0000397146 00000 n +0000397588 00000 n +0000402241 00000 n +0000410476 00000 n +0000413016 00000 n +0000413204 00000 n +0000413898 00000 n +0000414086 00000 n +0000414272 00000 n +0000414460 00000 n +0000417927 00000 n +0000418116 00000 n +0000418744 00000 n +0000418996 00000 n +0000423964 00000 n +0000424153 00000 n +0000433532 00000 n +0000439309 00000 n +0000439815 00000 n +0000440003 00000 n +0000445281 00000 n +0000450721 00000 n +0000451731 00000 n +0000451920 00000 n +0000455752 00000 n +0000456760 00000 n +0000460114 00000 n +0000460744 00000 n +0000461568 00000 n +0000469892 00000 n +0000470779 00000 n +0000471094 00000 n +0000471283 00000 n +0000172924 00000 n +0000157451 00000 n +0000099282 00000 n +0000172861 00000 n +0000158433 00000 n +0000158595 00000 n +0000158756 00000 n +0000158918 00000 n +0000159079 00000 n +0000159233 00000 n +0000159386 00000 n +0000159541 00000 n +0000159695 00000 n +0000159848 00000 n +0000160000 00000 n +0000160159 00000 n +0000160317 00000 n +0000160474 00000 n +0000160632 00000 n +0000160787 00000 n +0000160941 00000 n +0000161091 00000 n +0000161241 00000 n +0000161388 00000 n +0000161534 00000 n +0000161681 00000 n +0000161827 00000 n +0000161973 00000 n +0000162119 00000 n +0000162266 00000 n +0000162412 00000 n +0000162582 00000 n +0000162751 00000 n +0000162898 00000 n +0000163044 00000 n +0000163190 00000 n +0000163336 00000 n +0000163483 00000 n +0000163629 00000 n +0000163776 00000 n +0000163922 00000 n +0000164069 00000 n +0000164215 00000 n +0000164371 00000 n +0000164527 00000 n +0000164680 00000 n +0000164833 00000 n +0000164985 00000 n +0000165137 00000 n +0000165292 00000 n +0000165446 00000 n +0000165601 00000 n +0000165755 00000 n +0000165912 00000 n +0000166068 00000 n +0000166222 00000 n +0000166375 00000 n +0000166537 00000 n +0000166698 00000 n +0000166856 00000 n +0000167014 00000 n +0000167165 00000 n +0000167316 00000 n +0000167469 00000 n +0000167622 00000 n +0000167773 00000 n +0000167924 00000 n +0000168077 00000 n +0000168230 00000 n +0000168386 00000 n +0000168542 00000 n +0000168705 00000 n +0000168867 00000 n +0000169022 00000 n +0000169176 00000 n +0000169331 00000 n +0000169485 00000 n +0000169639 00000 n +0000169792 00000 n +0000169946 00000 n +0000170099 00000 n +0000170262 00000 n +0000170424 00000 n +0000170580 00000 n +0000170735 00000 n +0000170890 00000 n +0000171044 00000 n +0000171200 00000 n +0000171355 00000 n +0000171511 00000 n +0000171666 00000 n +0000171820 00000 n +0000171973 00000 n +0000172122 00000 n +0000172271 00000 n +0000172418 00000 n +0000172565 00000 n +0000172713 00000 n +0000474902 00000 n +0000475721 00000 n 0000475909 00000 n -0000476728 00000 n -0000476915 00000 n -0000480617 00000 n -0000480806 00000 n -0000480994 00000 n -0000481309 00000 n -0000485238 00000 n -0000486370 00000 n -0000486492 00000 n -0000486681 00000 n -0000484924 00000 n -0000493406 00000 n -0000494412 00000 n -0000494600 00000 n -0000497438 00000 n -0000501302 00000 n -0000501491 00000 n -0000505175 00000 n -0000508859 00000 n -0000508985 00000 n -0000519194 00000 n -0000519320 00000 n -0000522530 00000 n -0000522656 00000 n -0000523413 00000 n -0000530251 00000 n -0000533908 00000 n -0000534724 00000 n -0000535540 00000 n -0000538703 00000 n -0000539645 00000 n -0000540026 00000 n -0000543648 00000 n -0000543774 00000 n -0000545035 00000 n -0000548443 00000 n -0000548632 00000 n -0000549640 00000 n -0000550082 00000 n -0000550523 00000 n -0000560948 00000 n -0000564697 00000 n -0000565013 00000 n -0000566143 00000 n -0000566645 00000 n -0000243205 00000 n -0000227498 00000 n -0000173066 00000 n -0000243142 00000 n -0000228480 00000 n -0000228628 00000 n -0000228775 00000 n -0000228923 00000 n -0000229070 00000 n -0000229218 00000 n -0000229365 00000 n -0000229513 00000 n -0000229660 00000 n -0000229808 00000 n -0000229955 00000 n -0000230102 00000 n -0000230248 00000 n -0000230395 00000 n -0000230541 00000 n -0000230693 00000 n -0000230845 00000 n -0000231012 00000 n -0000231178 00000 n -0000231339 00000 n -0000231499 00000 n -0000231654 00000 n -0000231808 00000 n -0000231967 00000 n -0000232125 00000 n -0000232282 00000 n -0000232439 00000 n -0000232602 00000 n -0000232764 00000 n -0000232913 00000 n -0000233063 00000 n -0000233217 00000 n -0000233371 00000 n -0000233532 00000 n -0000233692 00000 n -0000233855 00000 n -0000234017 00000 n -0000001924 00000 f -0000956397 00000 n -0000234178 00000 n -0000234338 00000 n -0000234495 00000 n -0000234652 00000 n -0000234818 00000 n -0000234983 00000 n -0000235146 00000 n -0000235308 00000 n -0000235474 00000 n -0000235639 00000 n -0000235799 00000 n -0000235959 00000 n -0000236127 00000 n -0000236294 00000 n -0000236468 00000 n -0000236641 00000 n -0000236801 00000 n -0000236961 00000 n -0000237130 00000 n -0000237298 00000 n -0000237454 00000 n -0000237610 00000 n -0000237767 00000 n -0000237924 00000 n -0000238084 00000 n -0000238244 00000 n -0000238402 00000 n -0000238559 00000 n -0000238716 00000 n -0000238872 00000 n -0000239032 00000 n -0000239191 00000 n -0000239351 00000 n -0000239511 00000 n -0000239675 00000 n -0000239838 00000 n -0000239990 00000 n -0000240143 00000 n -0000240308 00000 n -0000240473 00000 n -0000240623 00000 n -0000240773 00000 n -0000240921 00000 n -0000241069 00000 n -0000241217 00000 n -0000241364 00000 n -0000241511 00000 n -0000241658 00000 n -0000241812 00000 n -0000241966 00000 n -0000242116 00000 n -0000242265 00000 n -0000242412 00000 n -0000242558 00000 n -0000242704 00000 n -0000242849 00000 n -0000242996 00000 n -0000570610 00000 n -0000569788 00000 n -0000575369 00000 n -0000576499 00000 n -0000578298 00000 n -0000578486 00000 n -0000578738 00000 n -0000582456 00000 n -0000582958 00000 n -0000583463 00000 n -0000588548 00000 n -0000592172 00000 n -0000596529 00000 n -0000597540 00000 n -0000601589 00000 n -0000601905 00000 n -0000602030 00000 n -0000602219 00000 n -0000603363 00000 n -0000603616 00000 n -0000606321 00000 n -0000606509 00000 n -0000607833 00000 n -0000610967 00000 n -0000611093 00000 n -0000619857 00000 n -0000620428 00000 n -0000620554 00000 n -0000624215 00000 n -0000624341 00000 n -0000624593 00000 n -0000625354 00000 n -0000630388 00000 n -0000631147 00000 n -0000635917 00000 n -0000641877 00000 n -0000645861 00000 n -0000656239 00000 n -0000660288 00000 n -0000659656 00000 n -0000665309 00000 n -0000668741 00000 n -0000678305 00000 n -0000678431 00000 n -0000678620 00000 n -0000681037 00000 n -0000681480 00000 n -0000311637 00000 n -0000297376 00000 n -0000243321 00000 n -0000311574 00000 n -0000298286 00000 n -0000298438 00000 n -0000298590 00000 n -0000298738 00000 n -0000298886 00000 n -0000299040 00000 n -0000299194 00000 n -0000299346 00000 n -0000299498 00000 n -0000299649 00000 n -0000299800 00000 n -0000299952 00000 n -0000300104 00000 n -0000300252 00000 n -0000300400 00000 n -0000300551 00000 n -0000300701 00000 n -0000300853 00000 n -0000301004 00000 n -0000301156 00000 n -0000301307 00000 n -0000301465 00000 n -0000301622 00000 n -0000301768 00000 n -0000301914 00000 n -0000302066 00000 n -0000302219 00000 n -0000302373 00000 n -0000302527 00000 n -0000302687 00000 n -0000302846 00000 n -0000303006 00000 n -0000303165 00000 n -0000303328 00000 n -0000303490 00000 n -0000303653 00000 n -0000303815 00000 n -0000303974 00000 n -0000304132 00000 n -0000304298 00000 n -0000304463 00000 n -0000304631 00000 n -0000304798 00000 n -0000304953 00000 n -0000305108 00000 n -0000305256 00000 n -0000305403 00000 n -0000305558 00000 n -0000305712 00000 n -0000305866 00000 n -0000306019 00000 n -0000306173 00000 n -0000306326 00000 n -0000306484 00000 n -0000306641 00000 n -0000306799 00000 n -0000306957 00000 n -0000307119 00000 n -0000307280 00000 n -0000307442 00000 n -0000307603 00000 n -0000307763 00000 n -0000307922 00000 n -0000308084 00000 n -0000308245 00000 n -0000308395 00000 n -0000308546 00000 n -0000308697 00000 n -0000308847 00000 n -0000308997 00000 n -0000309146 00000 n -0000309294 00000 n -0000309441 00000 n -0000309589 00000 n -0000309736 00000 n -0000309884 00000 n -0000310032 00000 n -0000310181 00000 n -0000310330 00000 n -0000310489 00000 n -0000310647 00000 n -0000310807 00000 n -0000310966 00000 n -0000311123 00000 n -0000311279 00000 n -0000311427 00000 n -0000681732 00000 n -0000684818 00000 n -0000684944 00000 n -0000685195 00000 n -0000686205 00000 n -0000694416 00000 n -0000747422 00000 n -0000750388 00000 n -0000751587 00000 n -0000751776 00000 n -0000750263 00000 n -0000756348 00000 n -0000756789 00000 n -0000760674 00000 n -0000761051 00000 n -0000761240 00000 n -0000761427 00000 n -0000763964 00000 n -0000764153 00000 n -0000764342 00000 n -0000764594 00000 n -0000764782 00000 n -0000764971 00000 n -0000768161 00000 n -0000768604 00000 n -0000768856 00000 n -0000772052 00000 n -0000772367 00000 n -0000772556 00000 n -0000772873 00000 n -0000773881 00000 n -0000783005 00000 n -0000783193 00000 n -0000783382 00000 n -0000783822 00000 n -0000787310 00000 n -0000787750 00000 n -0000788002 00000 n -0000791932 00000 n -0000795864 00000 n -0000796178 00000 n -0000796809 00000 n -0000800386 00000 n -0000364723 00000 n -0000353382 00000 n -0000311739 00000 n -0000364660 00000 n -0000354130 00000 n -0000354276 00000 n -0000354422 00000 n -0000354580 00000 n -0000354738 00000 n -0000354894 00000 n -0000355050 00000 n -0000355208 00000 n -0000355366 00000 n -0000355524 00000 n -0000355682 00000 n -0000355844 00000 n -0000356006 00000 n -0000356163 00000 n -0000356320 00000 n -0000356479 00000 n -0000356639 00000 n -0000356796 00000 n -0000356954 00000 n -0000357118 00000 n -0000357282 00000 n -0000357429 00000 n -0000357576 00000 n -0000357728 00000 n -0000357880 00000 n -0000358045 00000 n -0000358210 00000 n -0000358360 00000 n -0000358511 00000 n -0000358660 00000 n -0000358810 00000 n -0000358968 00000 n -0000359127 00000 n -0000359295 00000 n -0000359464 00000 n -0000359634 00000 n -0000359805 00000 n -0000359971 00000 n -0000360138 00000 n -0000360304 00000 n -0000360471 00000 n -0000360618 00000 n -0000360766 00000 n -0000360914 00000 n -0000361063 00000 n -0000361212 00000 n -0000361362 00000 n -0000361511 00000 n -0000361661 00000 n -0000361810 00000 n -0000361960 00000 n -0000362108 00000 n -0000362257 00000 n -0000362406 00000 n -0000362556 00000 n -0000362705 00000 n -0000362855 00000 n -0000363003 00000 n -0000363152 00000 n -0000363301 00000 n -0000363451 00000 n -0000363600 00000 n -0000363750 00000 n -0000363900 00000 n -0000364051 00000 n -0000364203 00000 n -0000364357 00000 n -0000364508 00000 n -0000956991 00000 n -0000803518 00000 n -0000869417 00000 n -0000869606 00000 n -0000870303 00000 n -0000870744 00000 n -0000871245 00000 n -0000873807 00000 n -0000874435 00000 n -0000877153 00000 n -0000877658 00000 n -0000881617 00000 n -0000884429 00000 n -0000884809 00000 n -0000888659 00000 n -0000888910 00000 n -0000890873 00000 n -0000893487 00000 n -0000893612 00000 n -0000894747 00000 n -0000900129 00000 n -0000906225 00000 n -0000906539 00000 n -0000906852 00000 n -0000910934 00000 n -0000911185 00000 n -0000915179 00000 n -0000920415 00000 n -0000920730 00000 n -0000920981 00000 n -0000924105 00000 n -0000924293 00000 n -0000924482 00000 n -0000924798 00000 n -0000928804 00000 n -0000375747 00000 n -0000372934 00000 n -0000364839 00000 n -0000375560 00000 n -0000373196 00000 n -0000373353 00000 n -0000373510 00000 n -0000373680 00000 n -0000373850 00000 n -0000374025 00000 n -0000374200 00000 n -0000374368 00000 n -0000374536 00000 n -0000374707 00000 n -0000374878 00000 n -0000375047 00000 n -0000375217 00000 n -0000375388 00000 n -0000747296 00000 n -0000606888 00000 n -0000607266 00000 n -0000608022 00000 n -0000620806 00000 n -0000880732 00000 n -0000881112 00000 n -0000381020 00000 n -0000378518 00000 n -0000375849 00000 n -0000379061 00000 n -0000379124 00000 n -0000379187 00000 n -0000378663 00000 n -0000379250 00000 n -0000379438 00000 n -0000379501 00000 n -0000379564 00000 n -0000379752 00000 n -0000379815 00000 n -0000379878 00000 n -0000379942 00000 n -0000380006 00000 n -0000380069 00000 n -0000380132 00000 n -0000380195 00000 n -0000380257 00000 n -0000380320 00000 n -0000380383 00000 n -0000380447 00000 n -0000380511 00000 n -0000380575 00000 n -0000380638 00000 n -0000380701 00000 n -0000380764 00000 n -0000380828 00000 n -0000380892 00000 n -0000380956 00000 n -0000386673 00000 n -0000383262 00000 n -0000381136 00000 n -0000383386 00000 n -0000383449 00000 n -0000383513 00000 n -0000383576 00000 n -0000383763 00000 n -0000383825 00000 n -0000383888 00000 n -0000383950 00000 n -0000384012 00000 n -0000384075 00000 n -0000384138 00000 n -0000384201 00000 n -0000384265 00000 n -0000384328 00000 n -0000384391 00000 n -0000384454 00000 n -0000384517 00000 n -0000384580 00000 n -0000384643 00000 n -0000384706 00000 n -0000384770 00000 n -0000384833 00000 n -0000384895 00000 n -0000384958 00000 n -0000385022 00000 n -0000385085 00000 n -0000385148 00000 n -0000385211 00000 n -0000385275 00000 n -0000385338 00000 n -0000385401 00000 n -0000385464 00000 n -0000385528 00000 n -0000385591 00000 n -0000385654 00000 n -0000385717 00000 n -0000385781 00000 n -0000385845 00000 n -0000385909 00000 n -0000385973 00000 n -0000386037 00000 n -0000386101 00000 n -0000386165 00000 n -0000386229 00000 n -0000386293 00000 n -0000386356 00000 n -0000386420 00000 n -0000386484 00000 n -0000386547 00000 n -0000389037 00000 n -0000388230 00000 n -0000386789 00000 n -0000388595 00000 n -0000388658 00000 n -0000388721 00000 n -0000388784 00000 n -0000388847 00000 n -0000001936 00000 f -0000956305 00000 n -0000388375 00000 n -0000388910 00000 n -0000388973 00000 n -0000934775 00000 n -0000394964 00000 n -0000391676 00000 n -0000389181 00000 n -0000393388 00000 n -0000393451 00000 n -0000393514 00000 n -0000002194 00000 f -0000956205 00000 n -0000393578 00000 n -0000391884 00000 n -0000392039 00000 n -0000393641 00000 n -0000393703 00000 n -0000393766 00000 n -0000393829 00000 n -0000393892 00000 n -0000393956 00000 n -0000394018 00000 n -0000394081 00000 n -0000394144 00000 n -0000392192 00000 n -0000394207 00000 n -0000392345 00000 n -0000394270 00000 n -0000392504 00000 n -0000394333 00000 n -0000392664 00000 n -0000394396 00000 n -0000392822 00000 n -0000394459 00000 n -0000392984 00000 n -0000394522 00000 n -0000394710 00000 n -0000394773 00000 n -0000394837 00000 n -0000394900 00000 n -0000399276 00000 n -0000397150 00000 n -0000395108 00000 n -0000397572 00000 n -0000397760 00000 n -0000397823 00000 n -0000397887 00000 n -0000397950 00000 n -0000398014 00000 n -0000398077 00000 n -0000398139 00000 n -0000398203 00000 n -0000398267 00000 n -0000398454 00000 n -0000398517 00000 n -0000398581 00000 n -0000398644 00000 n -0000398708 00000 n -0000398896 00000 n -0000398959 00000 n -0000397295 00000 n -0000399022 00000 n -0000399086 00000 n -0000399149 00000 n -0000957116 00000 n -0000935152 00000 n -0000405254 00000 n -0000402518 00000 n -0000399406 00000 n -0000403230 00000 n -0000403293 00000 n -0000403357 00000 n -0000403421 00000 n -0000403485 00000 n -0000403548 00000 n -0000403612 00000 n -0000403676 00000 n -0000403740 00000 n -0000403803 00000 n -0000403991 00000 n -0000404053 00000 n -0000402681 00000 n -0000404117 00000 n -0000404180 00000 n -0000404244 00000 n -0000404307 00000 n -0000404370 00000 n -0000404433 00000 n -0000404496 00000 n -0000404559 00000 n -0000402837 00000 n -0000402999 00000 n -0000404622 00000 n -0000404685 00000 n -0000404748 00000 n -0000404811 00000 n -0000404874 00000 n -0000404937 00000 n -0000405000 00000 n -0000405064 00000 n -0000405128 00000 n -0000405191 00000 n -0000412312 00000 n -0000407565 00000 n -0000405398 00000 n -0000409292 00000 n -0000409356 00000 n -0000409419 00000 n -0000409482 00000 n -0000409546 00000 n -0000409609 00000 n -0000409672 00000 n -0000409735 00000 n -0000409798 00000 n -0000409861 00000 n -0000409924 00000 n -0000409987 00000 n -0000410050 00000 n -0000410112 00000 n -0000410174 00000 n -0000410237 00000 n -0000407782 00000 n -0000410300 00000 n -0000410362 00000 n -0000410425 00000 n -0000410488 00000 n -0000410551 00000 n -0000410614 00000 n -0000410677 00000 n -0000410740 00000 n -0000407949 00000 n -0000410803 00000 n -0000410866 00000 n -0000410929 00000 n -0000410992 00000 n -0000411055 00000 n -0000411118 00000 n -0000411181 00000 n -0000411245 00000 n -0000411308 00000 n -0000408116 00000 n -0000411370 00000 n -0000411433 00000 n -0000408276 00000 n -0000411496 00000 n -0000411558 00000 n -0000408444 00000 n -0000411621 00000 n -0000411684 00000 n -0000408611 00000 n -0000411747 00000 n -0000411810 00000 n -0000408783 00000 n -0000411873 00000 n -0000411936 00000 n -0000408952 00000 n -0000411999 00000 n -0000412062 00000 n -0000409122 00000 n -0000412249 00000 n -0000416375 00000 n -0000414301 00000 n -0000412442 00000 n -0000414487 00000 n -0000414675 00000 n -0000414863 00000 n -0000414926 00000 n -0000414989 00000 n -0000415052 00000 n -0000415115 00000 n -0000415179 00000 n -0000415242 00000 n -0000415305 00000 n -0000415369 00000 n -0000415557 00000 n -0000415745 00000 n -0000415933 00000 n -0000416121 00000 n -0000416184 00000 n -0000416248 00000 n -0000420825 00000 n -0000418981 00000 n -0000416505 00000 n -0000419440 00000 n -0000419503 00000 n -0000419628 00000 n -0000419691 00000 n -0000419818 00000 n -0000420005 00000 n -0000420068 00000 n -0000420131 00000 n -0000420194 00000 n -0000419135 00000 n -0000420257 00000 n -0000420320 00000 n -0000420383 00000 n -0000420446 00000 n -0000420635 00000 n -0000420698 00000 n -0000419289 00000 n -0000426522 00000 n -0000423589 00000 n -0000420955 00000 n -0000424374 00000 n -0000424437 00000 n -0000424562 00000 n -0000424625 00000 n -0000424688 00000 n -0000424751 00000 n -0000424814 00000 n -0000424878 00000 n -0000424942 00000 n -0000425005 00000 n -0000425069 00000 n -0000425131 00000 n -0000425195 00000 n -0000425259 00000 n -0000425323 00000 n -0000425386 00000 n -0000425449 00000 n -0000425512 00000 n -0000425702 00000 n -0000423761 00000 n -0000423910 00000 n -0000424064 00000 n -0000425890 00000 n -0000425953 00000 n -0000424216 00000 n -0000426017 00000 n -0000426143 00000 n -0000426206 00000 n -0000426270 00000 n -0000426333 00000 n -0000426396 00000 n -0000426459 00000 n -0000430292 00000 n -0000428660 00000 n -0000426666 00000 n -0000428784 00000 n -0000428847 00000 n -0000428909 00000 n -0000428972 00000 n -0000429097 00000 n -0000429160 00000 n -0000429223 00000 n -0000429285 00000 n -0000429347 00000 n -0000429410 00000 n -0000429474 00000 n -0000429537 00000 n -0000429600 00000 n -0000429725 00000 n -0000429788 00000 n -0000429851 00000 n -0000429915 00000 n -0000429978 00000 n -0000430041 00000 n -0000430104 00000 n -0000430166 00000 n -0000430229 00000 n -0000957241 00000 n -0000436040 00000 n -0000432725 00000 n -0000430436 00000 n -0000433189 00000 n -0000433315 00000 n -0000433378 00000 n -0000433441 00000 n -0000002357 00000 f -0000956107 00000 n -0000433505 00000 n -0000432879 00000 n -0000433569 00000 n -0000433631 00000 n -0000433695 00000 n -0000433759 00000 n -0000433823 00000 n -0000433887 00000 n -0000433951 00000 n -0000434014 00000 n -0000434077 00000 n -0000434140 00000 n -0000434203 00000 n -0000434266 00000 n -0000434330 00000 n -0000434394 00000 n -0000434457 00000 n -0000434521 00000 n -0000434585 00000 n -0000434648 00000 n -0000434711 00000 n -0000434774 00000 n -0000434964 00000 n -0000435027 00000 n -0000435090 00000 n -0000435216 00000 n -0000435279 00000 n -0000435343 00000 n -0000435407 00000 n -0000433034 00000 n -0000435471 00000 n -0000435534 00000 n -0000435597 00000 n -0000435660 00000 n -0000435723 00000 n -0000435786 00000 n -0000435849 00000 n -0000435912 00000 n -0000435976 00000 n -0000442149 00000 n -0000438997 00000 n -0000436212 00000 n -0000439310 00000 n -0000439373 00000 n -0000439499 00000 n +0000476349 00000 n +0000476537 00000 n +0000480106 00000 n +0000480422 00000 n +0000481944 00000 n +0000485826 00000 n +0000485952 00000 n +0000486141 00000 n +0000486647 00000 n +0000492349 00000 n +0000493355 00000 n +0000493544 00000 n +0000496379 00000 n +0000500766 00000 n +0000500955 00000 n +0000503946 00000 n +0000507632 00000 n +0000507758 00000 n +0000517967 00000 n +0000518093 00000 n +0000521303 00000 n +0000521429 00000 n +0000522186 00000 n +0000529094 00000 n +0000532825 00000 n +0000533328 00000 n +0000532512 00000 n +0000537538 00000 n +0000538229 00000 n +0000541912 00000 n +0000542293 00000 n +0000544128 00000 n +0000546512 00000 n +0000547648 00000 n +0000548472 00000 n +0000548661 00000 n +0000552352 00000 n +0000552792 00000 n +0000553236 00000 n +0000563415 00000 n +0000564050 00000 n +0000564366 00000 n +0000568925 00000 n +0000569430 00000 n +0000243170 00000 n +0000227461 00000 n +0000173026 00000 n +0000243107 00000 n +0000228443 00000 n +0000228591 00000 n +0000228738 00000 n +0000228886 00000 n +0000229033 00000 n +0000229181 00000 n +0000229328 00000 n +0000229476 00000 n +0000229623 00000 n +0000229771 00000 n +0000229918 00000 n +0000230065 00000 n +0000230211 00000 n +0000230358 00000 n +0000230504 00000 n +0000230656 00000 n +0000230808 00000 n +0000230975 00000 n +0000231141 00000 n +0000231302 00000 n +0000231462 00000 n +0000231617 00000 n +0000231771 00000 n +0000231930 00000 n +0000232088 00000 n +0000232245 00000 n +0000232402 00000 n +0000232565 00000 n +0000232727 00000 n +0000232876 00000 n +0000233026 00000 n +0000233180 00000 n +0000233334 00000 n +0000233495 00000 n +0000233655 00000 n +0000233818 00000 n +0000233980 00000 n +0000001921 00000 f +0000958859 00000 n +0000234141 00000 n +0000234301 00000 n +0000234458 00000 n +0000234615 00000 n +0000234781 00000 n +0000234946 00000 n +0000235109 00000 n +0000235271 00000 n +0000235437 00000 n +0000235602 00000 n +0000235763 00000 n +0000235924 00000 n +0000236092 00000 n +0000236259 00000 n +0000236433 00000 n +0000236606 00000 n +0000236766 00000 n +0000236926 00000 n +0000237095 00000 n +0000237263 00000 n +0000237419 00000 n +0000237575 00000 n +0000237732 00000 n +0000237889 00000 n +0000238049 00000 n +0000238209 00000 n +0000238367 00000 n +0000238524 00000 n +0000238681 00000 n +0000238837 00000 n +0000238997 00000 n +0000239156 00000 n +0000239316 00000 n +0000239476 00000 n +0000239640 00000 n +0000239803 00000 n +0000239955 00000 n +0000240108 00000 n +0000240273 00000 n +0000240438 00000 n +0000240588 00000 n +0000240738 00000 n +0000240886 00000 n +0000241034 00000 n +0000241182 00000 n +0000241329 00000 n +0000241476 00000 n +0000241623 00000 n +0000241777 00000 n +0000241931 00000 n +0000242081 00000 n +0000242230 00000 n +0000242377 00000 n +0000242523 00000 n +0000242669 00000 n +0000242814 00000 n +0000242961 00000 n +0000570254 00000 n +0000574627 00000 n +0000575256 00000 n +0000578630 00000 n +0000578754 00000 n +0000579006 00000 n +0000581021 00000 n +0000581902 00000 n +0000582403 00000 n +0000587179 00000 n +0000590933 00000 n +0000591940 00000 n +0000596154 00000 n +0000599212 00000 n +0000603264 00000 n +0000603580 00000 n +0000603705 00000 n +0000603894 00000 n +0000605038 00000 n +0000605291 00000 n +0000607996 00000 n +0000608184 00000 n +0000609508 00000 n +0000612799 00000 n +0000612925 00000 n +0000621065 00000 n +0000621635 00000 n +0000621761 00000 n +0000625361 00000 n +0000625487 00000 n +0000625739 00000 n +0000626500 00000 n +0000631534 00000 n +0000632293 00000 n +0000637064 00000 n +0000643024 00000 n +0000647008 00000 n +0000657386 00000 n +0000661435 00000 n +0000660803 00000 n +0000666457 00000 n +0000669889 00000 n +0000679453 00000 n +0000679579 00000 n +0000679768 00000 n +0000682181 00000 n +0000682624 00000 n +0000311602 00000 n +0000297341 00000 n +0000243286 00000 n +0000311539 00000 n +0000298251 00000 n +0000298403 00000 n +0000298555 00000 n +0000298703 00000 n +0000298851 00000 n +0000299005 00000 n +0000299159 00000 n +0000299311 00000 n +0000299463 00000 n +0000299614 00000 n +0000299765 00000 n +0000299917 00000 n +0000300069 00000 n +0000300217 00000 n +0000300365 00000 n +0000300516 00000 n +0000300666 00000 n +0000300818 00000 n +0000300969 00000 n +0000301121 00000 n +0000301272 00000 n +0000301430 00000 n +0000301587 00000 n +0000301733 00000 n +0000301879 00000 n +0000302031 00000 n +0000302184 00000 n +0000302338 00000 n +0000302492 00000 n +0000302652 00000 n +0000302811 00000 n +0000302971 00000 n +0000303130 00000 n +0000303293 00000 n +0000303455 00000 n +0000303618 00000 n +0000303780 00000 n +0000303939 00000 n +0000304097 00000 n +0000304263 00000 n +0000304428 00000 n +0000304596 00000 n +0000304763 00000 n +0000304918 00000 n +0000305073 00000 n +0000305221 00000 n +0000305368 00000 n +0000305523 00000 n +0000305677 00000 n +0000305831 00000 n +0000305984 00000 n +0000306138 00000 n +0000306291 00000 n +0000306449 00000 n +0000306606 00000 n +0000306764 00000 n +0000306922 00000 n +0000307084 00000 n +0000307245 00000 n +0000307407 00000 n +0000307568 00000 n +0000307728 00000 n +0000307887 00000 n +0000308049 00000 n +0000308210 00000 n +0000308360 00000 n +0000308511 00000 n +0000308662 00000 n +0000308812 00000 n +0000308962 00000 n +0000309111 00000 n +0000309259 00000 n +0000309406 00000 n +0000309554 00000 n +0000309701 00000 n +0000309849 00000 n +0000309997 00000 n +0000310146 00000 n +0000310295 00000 n +0000310454 00000 n +0000310612 00000 n +0000310772 00000 n +0000310931 00000 n +0000311088 00000 n +0000311244 00000 n +0000311392 00000 n +0000682876 00000 n +0000685963 00000 n +0000686089 00000 n +0000686340 00000 n +0000687350 00000 n +0000695562 00000 n +0000748568 00000 n +0000751534 00000 n +0000752733 00000 n +0000752922 00000 n +0000751409 00000 n +0000757494 00000 n +0000757935 00000 n +0000761820 00000 n +0000762197 00000 n +0000762386 00000 n +0000762573 00000 n +0000765110 00000 n +0000765299 00000 n +0000765488 00000 n +0000765740 00000 n +0000765928 00000 n +0000766117 00000 n +0000769403 00000 n +0000769846 00000 n +0000770098 00000 n +0000773294 00000 n +0000773609 00000 n +0000773798 00000 n +0000774115 00000 n +0000775123 00000 n +0000784247 00000 n +0000784435 00000 n +0000784624 00000 n +0000785064 00000 n +0000788552 00000 n +0000788992 00000 n +0000789244 00000 n +0000793174 00000 n +0000797106 00000 n +0000797420 00000 n +0000798051 00000 n +0000801628 00000 n +0000364640 00000 n +0000353295 00000 n +0000311704 00000 n +0000364577 00000 n +0000354043 00000 n +0000354189 00000 n +0000354335 00000 n +0000354493 00000 n +0000354651 00000 n +0000354807 00000 n +0000354963 00000 n +0000355121 00000 n +0000355279 00000 n +0000355437 00000 n +0000355595 00000 n +0000355757 00000 n +0000355919 00000 n +0000356076 00000 n +0000356233 00000 n +0000356392 00000 n +0000356552 00000 n +0000356709 00000 n +0000356867 00000 n +0000357031 00000 n +0000357195 00000 n +0000357342 00000 n +0000357489 00000 n +0000357641 00000 n +0000357794 00000 n +0000357959 00000 n +0000358125 00000 n +0000358275 00000 n +0000358426 00000 n +0000358575 00000 n +0000358725 00000 n +0000358883 00000 n +0000359042 00000 n +0000359210 00000 n +0000359379 00000 n +0000359549 00000 n +0000359720 00000 n +0000359886 00000 n +0000360053 00000 n +0000360219 00000 n +0000360386 00000 n +0000360533 00000 n +0000360681 00000 n +0000360829 00000 n +0000360978 00000 n +0000361127 00000 n +0000361277 00000 n +0000361426 00000 n +0000361576 00000 n +0000361725 00000 n +0000361875 00000 n +0000362024 00000 n +0000362174 00000 n +0000362323 00000 n +0000362473 00000 n +0000362622 00000 n +0000362772 00000 n +0000362920 00000 n +0000363069 00000 n +0000363218 00000 n +0000363368 00000 n +0000363517 00000 n +0000363667 00000 n +0000363817 00000 n +0000363968 00000 n +0000364120 00000 n +0000364274 00000 n +0000364425 00000 n +0000959453 00000 n +0000804760 00000 n +0000870658 00000 n +0000870847 00000 n +0000871544 00000 n +0000871985 00000 n +0000872486 00000 n +0000875047 00000 n +0000875675 00000 n +0000878394 00000 n +0000878899 00000 n +0000882858 00000 n +0000885672 00000 n +0000886052 00000 n +0000889903 00000 n +0000890154 00000 n +0000892117 00000 n +0000894731 00000 n +0000894856 00000 n +0000895991 00000 n +0000902054 00000 n +0000908685 00000 n +0000908999 00000 n +0000909312 00000 n +0000913394 00000 n +0000913645 00000 n +0000917641 00000 n +0000922877 00000 n +0000923192 00000 n +0000923443 00000 n +0000926568 00000 n +0000926756 00000 n +0000926945 00000 n +0000927261 00000 n +0000931267 00000 n +0000374126 00000 n +0000371671 00000 n +0000364756 00000 n +0000373939 00000 n +0000371915 00000 n +0000372072 00000 n +0000372229 00000 n +0000372399 00000 n +0000372569 00000 n +0000372744 00000 n +0000372919 00000 n +0000373087 00000 n +0000373255 00000 n +0000373424 00000 n +0000373594 00000 n +0000373766 00000 n +0000748442 00000 n +0000608563 00000 n +0000608941 00000 n +0000609697 00000 n +0000881973 00000 n +0000882353 00000 n +0000379396 00000 n +0000376894 00000 n +0000374228 00000 n +0000377437 00000 n +0000377500 00000 n +0000377563 00000 n +0000377039 00000 n +0000377626 00000 n +0000377814 00000 n +0000377877 00000 n +0000377940 00000 n +0000378128 00000 n +0000378191 00000 n +0000378254 00000 n +0000378318 00000 n +0000378382 00000 n +0000378445 00000 n +0000378508 00000 n +0000378571 00000 n +0000378633 00000 n +0000378696 00000 n +0000378759 00000 n +0000378823 00000 n +0000378887 00000 n +0000378951 00000 n +0000379014 00000 n +0000379077 00000 n +0000379140 00000 n +0000379204 00000 n +0000379268 00000 n +0000379332 00000 n +0000385049 00000 n +0000381638 00000 n +0000379512 00000 n +0000381762 00000 n +0000381825 00000 n +0000381889 00000 n +0000381952 00000 n +0000382139 00000 n +0000382201 00000 n +0000382264 00000 n +0000382326 00000 n +0000382388 00000 n +0000382451 00000 n +0000382514 00000 n +0000382577 00000 n +0000382641 00000 n +0000382704 00000 n +0000382767 00000 n +0000382830 00000 n +0000382893 00000 n +0000382956 00000 n +0000383019 00000 n +0000383082 00000 n +0000383146 00000 n +0000383209 00000 n +0000383271 00000 n +0000383334 00000 n +0000383398 00000 n +0000383461 00000 n +0000383524 00000 n +0000383587 00000 n +0000383651 00000 n +0000383714 00000 n +0000383777 00000 n +0000383840 00000 n +0000383904 00000 n +0000383967 00000 n +0000384030 00000 n +0000384093 00000 n +0000384157 00000 n +0000384221 00000 n +0000384285 00000 n +0000384349 00000 n +0000384413 00000 n +0000384477 00000 n +0000384541 00000 n +0000384605 00000 n +0000384669 00000 n +0000384732 00000 n +0000384796 00000 n +0000384860 00000 n +0000384923 00000 n +0000387413 00000 n +0000386606 00000 n +0000385165 00000 n +0000386971 00000 n +0000387034 00000 n +0000387097 00000 n +0000387160 00000 n +0000387223 00000 n +0000001933 00000 f +0000958767 00000 n +0000386751 00000 n +0000387286 00000 n +0000387349 00000 n +0000937238 00000 n +0000393340 00000 n +0000390052 00000 n +0000387557 00000 n +0000391764 00000 n +0000391827 00000 n +0000391890 00000 n +0000002190 00000 f +0000958667 00000 n +0000391954 00000 n +0000390260 00000 n +0000390415 00000 n +0000392017 00000 n +0000392079 00000 n +0000392142 00000 n +0000392205 00000 n +0000392268 00000 n +0000392332 00000 n +0000392394 00000 n +0000392457 00000 n +0000392520 00000 n +0000390568 00000 n +0000392583 00000 n +0000390721 00000 n +0000392646 00000 n +0000390880 00000 n +0000392709 00000 n +0000391040 00000 n +0000392772 00000 n +0000391198 00000 n +0000392835 00000 n +0000391360 00000 n +0000392898 00000 n +0000393086 00000 n +0000393149 00000 n +0000393213 00000 n +0000393276 00000 n +0000397651 00000 n +0000395525 00000 n +0000393484 00000 n +0000395947 00000 n +0000396135 00000 n +0000396198 00000 n +0000396262 00000 n +0000396325 00000 n +0000396389 00000 n +0000396452 00000 n +0000396514 00000 n +0000396578 00000 n +0000396642 00000 n +0000396829 00000 n +0000396892 00000 n +0000396956 00000 n +0000397019 00000 n +0000397083 00000 n +0000397271 00000 n +0000397334 00000 n +0000395670 00000 n +0000397397 00000 n +0000397461 00000 n +0000397524 00000 n +0000959578 00000 n +0000937615 00000 n +0000403629 00000 n +0000400893 00000 n +0000397781 00000 n +0000401605 00000 n +0000401668 00000 n +0000401732 00000 n +0000401796 00000 n +0000401860 00000 n +0000401923 00000 n +0000401987 00000 n +0000402051 00000 n +0000402115 00000 n +0000402178 00000 n +0000402366 00000 n +0000402428 00000 n +0000401056 00000 n +0000402492 00000 n +0000402555 00000 n +0000402619 00000 n +0000402682 00000 n +0000402745 00000 n +0000402808 00000 n +0000402871 00000 n +0000402934 00000 n +0000401212 00000 n +0000401374 00000 n +0000402997 00000 n +0000403060 00000 n +0000403123 00000 n +0000403186 00000 n +0000403249 00000 n +0000403312 00000 n +0000403375 00000 n +0000403439 00000 n +0000403503 00000 n +0000403566 00000 n +0000410664 00000 n +0000405841 00000 n +0000403773 00000 n +0000407390 00000 n +0000407454 00000 n +0000407517 00000 n +0000407580 00000 n +0000407644 00000 n +0000407707 00000 n +0000407770 00000 n +0000407833 00000 n +0000407896 00000 n +0000407959 00000 n +0000408022 00000 n +0000408085 00000 n +0000408148 00000 n +0000408210 00000 n +0000408272 00000 n +0000408335 00000 n +0000406049 00000 n +0000408398 00000 n +0000408460 00000 n +0000408523 00000 n +0000408586 00000 n +0000408649 00000 n +0000408712 00000 n +0000408775 00000 n +0000408838 00000 n +0000406216 00000 n +0000408901 00000 n +0000408964 00000 n +0000409027 00000 n +0000409090 00000 n +0000409153 00000 n +0000409216 00000 n +0000409279 00000 n +0000409342 00000 n +0000409405 00000 n +0000409468 00000 n +0000409531 00000 n +0000409594 00000 n +0000409657 00000 n +0000406383 00000 n +0000409720 00000 n +0000409783 00000 n +0000406543 00000 n +0000409846 00000 n +0000409909 00000 n +0000406712 00000 n +0000409972 00000 n +0000410035 00000 n +0000406879 00000 n +0000410098 00000 n +0000410161 00000 n +0000407051 00000 n +0000410224 00000 n +0000410287 00000 n +0000407220 00000 n +0000410350 00000 n +0000410413 00000 n +0000410601 00000 n +0000414776 00000 n +0000412830 00000 n +0000410794 00000 n +0000412954 00000 n +0000413141 00000 n +0000413329 00000 n +0000413392 00000 n +0000413455 00000 n +0000413518 00000 n +0000413581 00000 n +0000413645 00000 n +0000413708 00000 n +0000413771 00000 n +0000413835 00000 n +0000414023 00000 n +0000414209 00000 n +0000414397 00000 n +0000414586 00000 n +0000414649 00000 n +0000414713 00000 n +0000419437 00000 n +0000417405 00000 n +0000414906 00000 n +0000417864 00000 n +0000418053 00000 n +0000418241 00000 n +0000418304 00000 n +0000418367 00000 n +0000418430 00000 n +0000417559 00000 n +0000418493 00000 n +0000418555 00000 n +0000418618 00000 n +0000418681 00000 n +0000418869 00000 n +0000418932 00000 n +0000417712 00000 n +0000419122 00000 n +0000419185 00000 n +0000419248 00000 n +0000419311 00000 n +0000419374 00000 n +0000425100 00000 n +0000422292 00000 n +0000419567 00000 n +0000423077 00000 n +0000423140 00000 n +0000423203 00000 n +0000423267 00000 n +0000423331 00000 n +0000423394 00000 n +0000423457 00000 n +0000423519 00000 n +0000423583 00000 n +0000423647 00000 n +0000423711 00000 n +0000423774 00000 n +0000423837 00000 n +0000423900 00000 n +0000424090 00000 n +0000422464 00000 n +0000422613 00000 n +0000422767 00000 n +0000424279 00000 n +0000424342 00000 n +0000422919 00000 n +0000424406 00000 n +0000424532 00000 n +0000424595 00000 n +0000424659 00000 n +0000424722 00000 n +0000424785 00000 n +0000424848 00000 n +0000424910 00000 n +0000424973 00000 n +0000425037 00000 n +0000430119 00000 n +0000427610 00000 n +0000425244 00000 n +0000427909 00000 n +0000427972 00000 n +0000428034 00000 n +0000428097 00000 n +0000428222 00000 n +0000428284 00000 n +0000428347 00000 n +0000428410 00000 n +0000428473 00000 n +0000428536 00000 n +0000428600 00000 n +0000428663 00000 n +0000428726 00000 n +0000428852 00000 n +0000428914 00000 n +0000428977 00000 n +0000429041 00000 n +0000429103 00000 n +0000429166 00000 n +0000429229 00000 n +0000429292 00000 n +0000429355 00000 n +0000429481 00000 n +0000429544 00000 n +0000429608 00000 n +0000002354 00000 f +0000958569 00000 n +0000429672 00000 n +0000427755 00000 n +0000429736 00000 n +0000429799 00000 n +0000429863 00000 n +0000429927 00000 n +0000429991 00000 n +0000430055 00000 n +0000959703 00000 n +0000435176 00000 n +0000432282 00000 n +0000430291 00000 n +0000432581 00000 n +0000432644 00000 n +0000432706 00000 n +0000432769 00000 n +0000432833 00000 n +0000432896 00000 n +0000432959 00000 n +0000433023 00000 n +0000433087 00000 n +0000433150 00000 n +0000433214 00000 n +0000433278 00000 n +0000433341 00000 n +0000433404 00000 n +0000433468 00000 n +0000433658 00000 n +0000433721 00000 n +0000433784 00000 n +0000433910 00000 n +0000433973 00000 n +0000434037 00000 n +0000434101 00000 n +0000432427 00000 n +0000434165 00000 n +0000434228 00000 n +0000434291 00000 n +0000434354 00000 n +0000434417 00000 n +0000434480 00000 n +0000434543 00000 n +0000434606 00000 n +0000434670 00000 n +0000434734 00000 n +0000434860 00000 n +0000434923 00000 n +0000434987 00000 n +0000435050 00000 n +0000435113 00000 n +0000440698 00000 n +0000438049 00000 n +0000435334 00000 n +0000438362 00000 n +0000438425 00000 n +0000438488 00000 n +0000438551 00000 n +0000438615 00000 n +0000438677 00000 n +0000438739 00000 n +0000438802 00000 n +0000438865 00000 n +0000438928 00000 n +0000438991 00000 n +0000439054 00000 n +0000439117 00000 n +0000439181 00000 n +0000439245 00000 n +0000439435 00000 n +0000439498 00000 n 0000439562 00000 n -0000439626 00000 n -0000439689 00000 n -0000439752 00000 n -0000439815 00000 n -0000439878 00000 n -0000439941 00000 n -0000440004 00000 n -0000440067 00000 n -0000440131 00000 n -0000440193 00000 n -0000440255 00000 n -0000440318 00000 n -0000440381 00000 n +0000439625 00000 n +0000439688 00000 n +0000439751 00000 n +0000439940 00000 n +0000438194 00000 n +0000440128 00000 n +0000440191 00000 n +0000440253 00000 n +0000440316 00000 n +0000440380 00000 n 0000440444 00000 n 0000440507 00000 n -0000440570 00000 n -0000440633 00000 n -0000440697 00000 n -0000440761 00000 n -0000440950 00000 n -0000441013 00000 n -0000441076 00000 n -0000441139 00000 n -0000441202 00000 n -0000441265 00000 n -0000441454 00000 n -0000439142 00000 n -0000441642 00000 n -0000441705 00000 n -0000441768 00000 n -0000441831 00000 n -0000441895 00000 n -0000441959 00000 n -0000442022 00000 n -0000442086 00000 n -0000447969 00000 n -0000445437 00000 n -0000442293 00000 n -0000445561 00000 n -0000445624 00000 n -0000445687 00000 n -0000445750 00000 n -0000445814 00000 n -0000445876 00000 n -0000445939 00000 n -0000446001 00000 n -0000446065 00000 n -0000446128 00000 n -0000446191 00000 n -0000446255 00000 n -0000446318 00000 n -0000446382 00000 n -0000446446 00000 n -0000446510 00000 n -0000446573 00000 n -0000446637 00000 n -0000446701 00000 n -0000446764 00000 n -0000446952 00000 n -0000447013 00000 n -0000447077 00000 n -0000447141 00000 n -0000447205 00000 n -0000447269 00000 n -0000447333 00000 n -0000447397 00000 n -0000447461 00000 n -0000447525 00000 n -0000447588 00000 n -0000447651 00000 n -0000447715 00000 n -0000447779 00000 n -0000447842 00000 n -0000447906 00000 n -0000453463 00000 n -0000450572 00000 n -0000448113 00000 n -0000451380 00000 n -0000451443 00000 n -0000451505 00000 n -0000451568 00000 n -0000451631 00000 n -0000451694 00000 n -0000451757 00000 n -0000451820 00000 n -0000451884 00000 n -0000451947 00000 n -0000452010 00000 n -0000452073 00000 n -0000452137 00000 n -0000450744 00000 n -0000452326 00000 n -0000452389 00000 n -0000450913 00000 n -0000452453 00000 n -0000452516 00000 n -0000452579 00000 n -0000452642 00000 n -0000451072 00000 n -0000452706 00000 n -0000452770 00000 n -0000452834 00000 n -0000452897 00000 n -0000452959 00000 n -0000453022 00000 n -0000453086 00000 n -0000453149 00000 n +0000440571 00000 n +0000440635 00000 n +0000446551 00000 n +0000443953 00000 n +0000440828 00000 n +0000444077 00000 n +0000444140 00000 n +0000444203 00000 n +0000444267 00000 n +0000444330 00000 n +0000444393 00000 n +0000444456 00000 n +0000444520 00000 n +0000444582 00000 n +0000444645 00000 n +0000444709 00000 n +0000444772 00000 n +0000444836 00000 n +0000444900 00000 n +0000444964 00000 n +0000445027 00000 n +0000445091 00000 n +0000445155 00000 n +0000445218 00000 n +0000445406 00000 n +0000445469 00000 n +0000445533 00000 n +0000445597 00000 n +0000445661 00000 n +0000445725 00000 n +0000445789 00000 n +0000445853 00000 n +0000445917 00000 n +0000445981 00000 n +0000446044 00000 n +0000446107 00000 n +0000446171 00000 n +0000446235 00000 n +0000446298 00000 n +0000446362 00000 n +0000446425 00000 n +0000446488 00000 n +0000452298 00000 n +0000449220 00000 n +0000446695 00000 n +0000450026 00000 n +0000450089 00000 n +0000450151 00000 n +0000450214 00000 n +0000450277 00000 n +0000450340 00000 n +0000450404 00000 n +0000450467 00000 n +0000450530 00000 n +0000450593 00000 n +0000450657 00000 n +0000449392 00000 n +0000450847 00000 n +0000450910 00000 n +0000449560 00000 n +0000450974 00000 n +0000451037 00000 n +0000451100 00000 n +0000451163 00000 n +0000449719 00000 n 0000451226 00000 n -0000453337 00000 n -0000458008 00000 n -0000455740 00000 n -0000453621 00000 n -0000455864 00000 n -0000455990 00000 n -0000456053 00000 n -0000002542 00000 f -0000956012 00000 n -0000456116 00000 n -0000456179 00000 n -0000456243 00000 n -0000456306 00000 n -0000456369 00000 n -0000456432 00000 n -0000456495 00000 n -0000456558 00000 n -0000456621 00000 n -0000456684 00000 n -0000456747 00000 n -0000456810 00000 n -0000456873 00000 n -0000457062 00000 n -0000457125 00000 n -0000457188 00000 n -0000457251 00000 n -0000457314 00000 n -0000457377 00000 n -0000457441 00000 n -0000457504 00000 n -0000457567 00000 n -0000457629 00000 n -0000457692 00000 n -0000457754 00000 n -0000457818 00000 n -0000457881 00000 n -0000462756 00000 n -0000460377 00000 n -0000458152 00000 n -0000460673 00000 n -0000460736 00000 n -0000460860 00000 n -0000460923 00000 n -0000460986 00000 n -0000461049 00000 n -0000461112 00000 n -0000461175 00000 n -0000461365 00000 n -0000460522 00000 n -0000461428 00000 n -0000461491 00000 n -0000461554 00000 n -0000461617 00000 n -0000461680 00000 n -0000461743 00000 n -0000461806 00000 n -0000461996 00000 n -0000462059 00000 n -0000462122 00000 n -0000462186 00000 n -0000462250 00000 n -0000462313 00000 n -0000462375 00000 n -0000462439 00000 n -0000462503 00000 n -0000462566 00000 n -0000462629 00000 n -0000957366 00000 n -0000467889 00000 n -0000465625 00000 n -0000462886 00000 n -0000465927 00000 n -0000466053 00000 n -0000466116 00000 n -0000466179 00000 n -0000466243 00000 n -0000465770 00000 n -0000466307 00000 n -0000466371 00000 n -0000466434 00000 n -0000466496 00000 n -0000466559 00000 n -0000466622 00000 n -0000466685 00000 n -0000466749 00000 n -0000466813 00000 n -0000466877 00000 n -0000466941 00000 n -0000467005 00000 n -0000467068 00000 n -0000467131 00000 n -0000467194 00000 n -0000467257 00000 n -0000467321 00000 n -0000467385 00000 n -0000467448 00000 n -0000467510 00000 n -0000467573 00000 n -0000467636 00000 n -0000467700 00000 n -0000467763 00000 n -0000467826 00000 n -0000936224 00000 n -0000472039 00000 n -0000469831 00000 n -0000468033 00000 n -0000469955 00000 n +0000451290 00000 n +0000451354 00000 n +0000451417 00000 n +0000451479 00000 n +0000451542 00000 n +0000451606 00000 n +0000451668 00000 n +0000449872 00000 n +0000451857 00000 n +0000452046 00000 n +0000452109 00000 n +0000452172 00000 n +0000452235 00000 n +0000002543 00000 f +0000958474 00000 n +0000457011 00000 n +0000454809 00000 n +0000452470 00000 n +0000454933 00000 n +0000454996 00000 n +0000455059 00000 n +0000455123 00000 n +0000455186 00000 n +0000455249 00000 n +0000455312 00000 n +0000455375 00000 n +0000455436 00000 n +0000455499 00000 n +0000455562 00000 n +0000455625 00000 n +0000455688 00000 n +0000455877 00000 n +0000455940 00000 n +0000456003 00000 n +0000456066 00000 n +0000456129 00000 n +0000456192 00000 n +0000456256 00000 n +0000456319 00000 n +0000456382 00000 n +0000456444 00000 n +0000456507 00000 n +0000456569 00000 n +0000456633 00000 n +0000456696 00000 n +0000456885 00000 n +0000456948 00000 n +0000461819 00000 n +0000459502 00000 n +0000457155 00000 n +0000459798 00000 n +0000459861 00000 n +0000459924 00000 n +0000459987 00000 n +0000460050 00000 n +0000460239 00000 n +0000459647 00000 n +0000460302 00000 n +0000460365 00000 n +0000460428 00000 n +0000460491 00000 n +0000460554 00000 n +0000460617 00000 n +0000460680 00000 n +0000460870 00000 n +0000460933 00000 n +0000460996 00000 n +0000461060 00000 n +0000461124 00000 n +0000461187 00000 n +0000461250 00000 n +0000461314 00000 n +0000461378 00000 n +0000461441 00000 n +0000461504 00000 n +0000461694 00000 n +0000461756 00000 n +0000959828 00000 n +0000467020 00000 n +0000464566 00000 n +0000461949 00000 n +0000464868 00000 n +0000464931 00000 n +0000464993 00000 n +0000465057 00000 n +0000464711 00000 n +0000465121 00000 n +0000465185 00000 n +0000465248 00000 n +0000465311 00000 n +0000465374 00000 n +0000465437 00000 n +0000465500 00000 n +0000465564 00000 n +0000465628 00000 n +0000465692 00000 n +0000465755 00000 n +0000465819 00000 n +0000465882 00000 n +0000465945 00000 n +0000466008 00000 n +0000466071 00000 n +0000466135 00000 n +0000466199 00000 n +0000466262 00000 n +0000466325 00000 n +0000466388 00000 n +0000466451 00000 n +0000466515 00000 n +0000466578 00000 n +0000466641 00000 n +0000466704 00000 n +0000466767 00000 n +0000466831 00000 n +0000466894 00000 n +0000466957 00000 n +0000938687 00000 n +0000471600 00000 n +0000469263 00000 n +0000467164 00000 n +0000469387 00000 n +0000469450 00000 n +0000469513 00000 n +0000469577 00000 n +0000469640 00000 n +0000469703 00000 n +0000469766 00000 n +0000469829 00000 n 0000470018 00000 n 0000470081 00000 n 0000470145 00000 n -0000470208 00000 n -0000470271 00000 n -0000470334 00000 n -0000470397 00000 n -0000470460 00000 n -0000470523 00000 n -0000470586 00000 n -0000470647 00000 n -0000470710 00000 n -0000470899 00000 n -0000470962 00000 n -0000471026 00000 n -0000471090 00000 n -0000471153 00000 n -0000471217 00000 n -0000471281 00000 n -0000471344 00000 n -0000471407 00000 n -0000471471 00000 n -0000471534 00000 n -0000471597 00000 n -0000471786 00000 n -0000471849 00000 n -0000471912 00000 n -0000477165 00000 n -0000474541 00000 n -0000472155 00000 n -0000475341 00000 n -0000475404 00000 n -0000475529 00000 n -0000475718 00000 n -0000475781 00000 n -0000475845 00000 n -0000476035 00000 n -0000474713 00000 n -0000474876 00000 n -0000476098 00000 n -0000476160 00000 n -0000476224 00000 n -0000476287 00000 n -0000476350 00000 n -0000476413 00000 n -0000476476 00000 n -0000476539 00000 n -0000476602 00000 n -0000476665 00000 n -0000476853 00000 n -0000477041 00000 n +0000470209 00000 n +0000470272 00000 n +0000470336 00000 n +0000470400 00000 n +0000470463 00000 n +0000470527 00000 n +0000470591 00000 n +0000470654 00000 n +0000470717 00000 n +0000470905 00000 n +0000470967 00000 n +0000471030 00000 n +0000471220 00000 n +0000471409 00000 n +0000471472 00000 n +0000471536 00000 n +0000476600 00000 n +0000474035 00000 n +0000471716 00000 n +0000474839 00000 n 0000475028 00000 n -0000475195 00000 n -0000477104 00000 n -0000944997 00000 n -0000482579 00000 n -0000480029 00000 n -0000477309 00000 n -0000480490 00000 n -0000480553 00000 n -0000480743 00000 n -0000480932 00000 n -0000481120 00000 n -0000481182 00000 n -0000481246 00000 n -0000480183 00000 n -0000481435 00000 n -0000481498 00000 n -0000481561 00000 n -0000481625 00000 n -0000481688 00000 n -0000481752 00000 n -0000480336 00000 n -0000481815 00000 n -0000481878 00000 n -0000481941 00000 n -0000482005 00000 n -0000482069 00000 n -0000482133 00000 n -0000482197 00000 n -0000482261 00000 n -0000482325 00000 n -0000482389 00000 n -0000482452 00000 n -0000482516 00000 n +0000474207 00000 n +0000474370 00000 n +0000475091 00000 n +0000475154 00000 n +0000475218 00000 n +0000475281 00000 n +0000475344 00000 n +0000475407 00000 n +0000475470 00000 n +0000475533 00000 n +0000475596 00000 n +0000475659 00000 n +0000475846 00000 n +0000476033 00000 n +0000474522 00000 n +0000474691 00000 n +0000476096 00000 n +0000476159 00000 n +0000476222 00000 n +0000476285 00000 n +0000476474 00000 n +0000947460 00000 n +0000482007 00000 n +0000479456 00000 n +0000476744 00000 n +0000479917 00000 n +0000480043 00000 n +0000480232 00000 n +0000480295 00000 n +0000480359 00000 n +0000479610 00000 n +0000480548 00000 n +0000480611 00000 n +0000480674 00000 n +0000480738 00000 n +0000480800 00000 n +0000480864 00000 n +0000479763 00000 n +0000480927 00000 n +0000480990 00000 n +0000481053 00000 n +0000481117 00000 n +0000481181 00000 n +0000481245 00000 n +0000481309 00000 n +0000481373 00000 n +0000481437 00000 n +0000481501 00000 n +0000481564 00000 n +0000481628 00000 n 0000000000 00000 f -0000954124 00000 n -0000935781 00000 n -0000486933 00000 n -0000484560 00000 n -0000482723 00000 n -0000484861 00000 n -0000484986 00000 n -0000485049 00000 n -0000485112 00000 n -0000485175 00000 n -0000485364 00000 n -0000485426 00000 n -0000485490 00000 n -0000485553 00000 n -0000485616 00000 n -0000485679 00000 n -0000485742 00000 n -0000485805 00000 n -0000485866 00000 n -0000485929 00000 n -0000485992 00000 n -0000486055 00000 n -0000486118 00000 n -0000486181 00000 n -0000486244 00000 n -0000486307 00000 n -0000486618 00000 n -0000484705 00000 n -0000486807 00000 n -0000486870 00000 n -0000490430 00000 n -0000488913 00000 n -0000487091 00000 n -0000489037 00000 n -0000489100 00000 n -0000489164 00000 n -0000489228 00000 n -0000489292 00000 n -0000489419 00000 n -0000489545 00000 n -0000489608 00000 n -0000489671 00000 n -0000489796 00000 n -0000489859 00000 n -0000489923 00000 n -0000489987 00000 n -0000490113 00000 n -0000490176 00000 n -0000490239 00000 n -0000490303 00000 n -0000490367 00000 n -0000957491 00000 n -0000494663 00000 n -0000492649 00000 n -0000490588 00000 n -0000492773 00000 n -0000492836 00000 n -0000492899 00000 n -0000492963 00000 n -0000493027 00000 n -0000493090 00000 n -0000493154 00000 n -0000493217 00000 n -0000493280 00000 n -0000493343 00000 n -0000493532 00000 n -0000493595 00000 n -0000493658 00000 n -0000493721 00000 n -0000493782 00000 n -0000493845 00000 n -0000493908 00000 n -0000493971 00000 n -0000494034 00000 n -0000494097 00000 n -0000494160 00000 n -0000494223 00000 n -0000494285 00000 n -0000494348 00000 n -0000494537 00000 n -0000498071 00000 n -0000496430 00000 n -0000494821 00000 n -0000496554 00000 n -0000496617 00000 n -0000496742 00000 n -0000496805 00000 n -0000496868 00000 n -0000496931 00000 n -0000496995 00000 n -0000497059 00000 n -0000497122 00000 n -0000497185 00000 n -0000497247 00000 n -0000497311 00000 n -0000497375 00000 n -0000497564 00000 n -0000497627 00000 n -0000497690 00000 n -0000497752 00000 n -0000497815 00000 n -0000497879 00000 n -0000497943 00000 n -0000498007 00000 n -0000501554 00000 n -0000499718 00000 n -0000498201 00000 n -0000499842 00000 n -0000499905 00000 n -0000499968 00000 n -0000500031 00000 n -0000500095 00000 n -0000500159 00000 n -0000500222 00000 n -0000500285 00000 n -0000500348 00000 n -0000500412 00000 n -0000500476 00000 n -0000500538 00000 n -0000500601 00000 n -0000500664 00000 n -0000500728 00000 n -0000500792 00000 n -0000500855 00000 n -0000500918 00000 n -0000500982 00000 n -0000501046 00000 n -0000501110 00000 n -0000501174 00000 n -0000501238 00000 n -0000501428 00000 n -0000506062 00000 n -0000504291 00000 n -0000501684 00000 n -0000504607 00000 n -0000504733 00000 n -0000504796 00000 n -0000504860 00000 n -0000504923 00000 n -0000504986 00000 n -0000505049 00000 n -0000505112 00000 n -0000505301 00000 n -0000504436 00000 n -0000505363 00000 n -0000505425 00000 n -0000505488 00000 n -0000505552 00000 n -0000505615 00000 n -0000505679 00000 n -0000505743 00000 n -0000505807 00000 n -0000505870 00000 n -0000505934 00000 n -0000505998 00000 n -0000511003 00000 n -0000508672 00000 n -0000506206 00000 n -0000508796 00000 n -0000509111 00000 n -0000509174 00000 n -0000509236 00000 n -0000509298 00000 n -0000509361 00000 n -0000509424 00000 n -0000509487 00000 n -0000509550 00000 n -0000509613 00000 n -0000509676 00000 n -0000509739 00000 n -0000509803 00000 n -0000509867 00000 n -0000509931 00000 n -0000509994 00000 n -0000510057 00000 n -0000510120 00000 n -0000510183 00000 n -0000510246 00000 n -0000510308 00000 n -0000510372 00000 n -0000510435 00000 n -0000510498 00000 n -0000510561 00000 n -0000510625 00000 n -0000510688 00000 n -0000510751 00000 n -0000510814 00000 n -0000510877 00000 n -0000510941 00000 n -0000515107 00000 n -0000513596 00000 n -0000511119 00000 n -0000513720 00000 n -0000513783 00000 n -0000513845 00000 n -0000513908 00000 n -0000513971 00000 n -0000514034 00000 n -0000514097 00000 n -0000514160 00000 n -0000514224 00000 n -0000514287 00000 n -0000514350 00000 n -0000514413 00000 n -0000514476 00000 n -0000514539 00000 n -0000514602 00000 n -0000514665 00000 n -0000514729 00000 n -0000514792 00000 n -0000514855 00000 n -0000514918 00000 n -0000514981 00000 n -0000515044 00000 n -0000957616 00000 n -0000519570 00000 n -0000517749 00000 n -0000515237 00000 n -0000517873 00000 n -0000517936 00000 n -0000517998 00000 n -0000518061 00000 n -0000518124 00000 n -0000518187 00000 n -0000518250 00000 n -0000518313 00000 n -0000518376 00000 n -0000518439 00000 n -0000518502 00000 n -0000518565 00000 n -0000518628 00000 n -0000518691 00000 n -0000518754 00000 n -0000518818 00000 n -0000518879 00000 n -0000518942 00000 n -0000519005 00000 n -0000519068 00000 n -0000519131 00000 n -0000519445 00000 n -0000519508 00000 n -0000524547 00000 n -0000522281 00000 n -0000519686 00000 n -0000522405 00000 n -0000522468 00000 n -0000522782 00000 n -0000522845 00000 n -0000522908 00000 n -0000522971 00000 n -0000523034 00000 n -0000523097 00000 n -0000523160 00000 n -0000523223 00000 n -0000523286 00000 n -0000523350 00000 n -0000523539 00000 n -0000523602 00000 n -0000523665 00000 n -0000523729 00000 n -0000523793 00000 n -0000523856 00000 n -0000523919 00000 n -0000523982 00000 n -0000524045 00000 n -0000524108 00000 n -0000524170 00000 n -0000524233 00000 n -0000524296 00000 n -0000524359 00000 n -0000524422 00000 n -0000524485 00000 n -0000530565 00000 n -0000527860 00000 n -0000524691 00000 n -0000527984 00000 n -0000528047 00000 n -0000528110 00000 n -0000528173 00000 n -0000528236 00000 n -0000528299 00000 n -0000528363 00000 n -0000528426 00000 n -0000528490 00000 n -0000528553 00000 n -0000528616 00000 n -0000528679 00000 n -0000528742 00000 n -0000528805 00000 n -0000528868 00000 n -0000528931 00000 n -0000528994 00000 n -0000529057 00000 n -0000529120 00000 n -0000529183 00000 n -0000529246 00000 n -0000529309 00000 n -0000529372 00000 n -0000529435 00000 n -0000529498 00000 n -0000529561 00000 n -0000529624 00000 n -0000529687 00000 n -0000529750 00000 n -0000529813 00000 n -0000529876 00000 n -0000529939 00000 n -0000530002 00000 n -0000530066 00000 n -0000530129 00000 n -0000530190 00000 n -0000530377 00000 n -0000530440 00000 n -0000530502 00000 n -0000535603 00000 n -0000533354 00000 n -0000530709 00000 n -0000533655 00000 n -0000533718 00000 n -0000533781 00000 n -0000533845 00000 n -0000534033 00000 n -0000533499 00000 n -0000534095 00000 n -0000534158 00000 n -0000534221 00000 n -0000534284 00000 n -0000534347 00000 n -0000534410 00000 n -0000534472 00000 n -0000534535 00000 n -0000534598 00000 n -0000534661 00000 n -0000534849 00000 n -0000534912 00000 n -0000534975 00000 n -0000535039 00000 n -0000535101 00000 n -0000535164 00000 n -0000535227 00000 n -0000535289 00000 n -0000535352 00000 n -0000535415 00000 n -0000535477 00000 n -0000945311 00000 n -0000540089 00000 n -0000537825 00000 n -0000535705 00000 n -0000537949 00000 n -0000538012 00000 n -0000538136 00000 n -0000538199 00000 n -0000538262 00000 n -0000538325 00000 n -0000538388 00000 n -0000538451 00000 n -0000538514 00000 n -0000538577 00000 n -0000538640 00000 n -0000538827 00000 n -0000538890 00000 n -0000538953 00000 n -0000539016 00000 n -0000539079 00000 n -0000539142 00000 n -0000539205 00000 n -0000539268 00000 n -0000539330 00000 n -0000539393 00000 n -0000539456 00000 n -0000539519 00000 n -0000539582 00000 n -0000539771 00000 n -0000539834 00000 n -0000539898 00000 n -0000539962 00000 n -0000545478 00000 n -0000542133 00000 n -0000540205 00000 n -0000542257 00000 n -0000542383 00000 n -0000542446 00000 n -0000542510 00000 n -0000542574 00000 n -0000542637 00000 n -0000542701 00000 n -0000542765 00000 n -0000542829 00000 n -0000542891 00000 n -0000542954 00000 n -0000543018 00000 n -0000543080 00000 n -0000543143 00000 n -0000543207 00000 n -0000543271 00000 n -0000543334 00000 n -0000543397 00000 n -0000543459 00000 n -0000543522 00000 n -0000543585 00000 n -0000543900 00000 n -0000543963 00000 n -0000544025 00000 n -0000544088 00000 n -0000544151 00000 n -0000544213 00000 n -0000544276 00000 n -0000544339 00000 n -0000544402 00000 n -0000544465 00000 n -0000544528 00000 n -0000544592 00000 n -0000544655 00000 n -0000544718 00000 n -0000544781 00000 n -0000544844 00000 n -0000544908 00000 n -0000544971 00000 n -0000545159 00000 n -0000545222 00000 n -0000545286 00000 n -0000545350 00000 n -0000545414 00000 n -0000957741 00000 n -0000550586 00000 n -0000547875 00000 n -0000545594 00000 n -0000547999 00000 n -0000548062 00000 n -0000548125 00000 n -0000548189 00000 n -0000548252 00000 n -0000548316 00000 n -0000548379 00000 n -0000548569 00000 n -0000548753 00000 n -0000548816 00000 n -0000548879 00000 n -0000548943 00000 n -0000549007 00000 n -0000549070 00000 n -0000549133 00000 n -0000549197 00000 n -0000549260 00000 n -0000549323 00000 n -0000549387 00000 n -0000549450 00000 n -0000549513 00000 n -0000549576 00000 n -0000549766 00000 n -0000549829 00000 n -0000549893 00000 n -0000549957 00000 n -0000550020 00000 n -0000550208 00000 n -0000550271 00000 n -0000550335 00000 n -0000550399 00000 n -0000550462 00000 n -0000556529 00000 n -0000553494 00000 n -0000550702 00000 n -0000553618 00000 n -0000553743 00000 n -0000553806 00000 n -0000553870 00000 n -0000553996 00000 n -0000554059 00000 n -0000554185 00000 n -0000554248 00000 n -0000554374 00000 n -0000554437 00000 n -0000554500 00000 n -0000554564 00000 n -0000554627 00000 n -0000554690 00000 n -0000554754 00000 n -0000554818 00000 n -0000554881 00000 n -0000554943 00000 n -0000555006 00000 n -0000555070 00000 n -0000555133 00000 n -0000555197 00000 n -0000555260 00000 n -0000555323 00000 n -0000555386 00000 n -0000555449 00000 n -0000555512 00000 n -0000555576 00000 n -0000555640 00000 n -0000555703 00000 n -0000555767 00000 n -0000555830 00000 n -0000555893 00000 n -0000555956 00000 n -0000556020 00000 n -0000556084 00000 n -0000556148 00000 n -0000556212 00000 n -0000556276 00000 n -0000556340 00000 n -0000556466 00000 n -0000561581 00000 n -0000559055 00000 n -0000556645 00000 n -0000559179 00000 n -0000559242 00000 n -0000559305 00000 n -0000559368 00000 n -0000559494 00000 n -0000559557 00000 n -0000559620 00000 n -0000559746 00000 n -0000559809 00000 n -0000559873 00000 n -0000559937 00000 n -0000560001 00000 n -0000560064 00000 n -0000560128 00000 n -0000560254 00000 n -0000560317 00000 n -0000560443 00000 n -0000560506 00000 n -0000560569 00000 n -0000560693 00000 n -0000560756 00000 n -0000560820 00000 n -0000560884 00000 n -0000561074 00000 n -0000561137 00000 n -0000561201 00000 n -0000561264 00000 n -0000561326 00000 n -0000561389 00000 n -0000561453 00000 n -0000561517 00000 n -0000566708 00000 n -0000564510 00000 n -0000561711 00000 n -0000564634 00000 n -0000564823 00000 n -0000564886 00000 n -0000564949 00000 n -0000565137 00000 n -0000565200 00000 n -0000565263 00000 n -0000565326 00000 n -0000565389 00000 n -0000565452 00000 n -0000565515 00000 n -0000565578 00000 n -0000565641 00000 n -0000565704 00000 n -0000565767 00000 n -0000565830 00000 n -0000565893 00000 n -0000565955 00000 n -0000566017 00000 n -0000566080 00000 n -0000566268 00000 n -0000566331 00000 n -0000566393 00000 n -0000566457 00000 n -0000566520 00000 n -0000566583 00000 n -0000572250 00000 n -0000569601 00000 n -0000566810 00000 n -0000569725 00000 n -0000569913 00000 n -0000569976 00000 n -0000570040 00000 n -0000570103 00000 n -0000570166 00000 n -0000570229 00000 n -0000570293 00000 n -0000570356 00000 n -0000570420 00000 n -0000570483 00000 n -0000570546 00000 n -0000570736 00000 n -0000570799 00000 n -0000570862 00000 n -0000570924 00000 n -0000570987 00000 n -0000571051 00000 n -0000571114 00000 n -0000571176 00000 n -0000571239 00000 n -0000571302 00000 n -0000571365 00000 n -0000571428 00000 n -0000571491 00000 n -0000571555 00000 n -0000571619 00000 n -0000571683 00000 n -0000571747 00000 n -0000571810 00000 n -0000571873 00000 n -0000571936 00000 n -0000571999 00000 n -0000572063 00000 n -0000572126 00000 n -0000572189 00000 n -0000576562 00000 n -0000574490 00000 n -0000572366 00000 n -0000574614 00000 n -0000574677 00000 n -0000574739 00000 n -0000574865 00000 n -0000574928 00000 n -0000574991 00000 n -0000575054 00000 n -0000575117 00000 n -0000575180 00000 n -0000575243 00000 n -0000575306 00000 n -0000575495 00000 n -0000575558 00000 n -0000575621 00000 n -0000575684 00000 n -0000575747 00000 n -0000575809 00000 n -0000575872 00000 n -0000575935 00000 n -0000575997 00000 n -0000576056 00000 n -0000576119 00000 n -0000576182 00000 n -0000576245 00000 n -0000576309 00000 n -0000576373 00000 n -0000576436 00000 n -0000957866 00000 n -0000579619 00000 n -0000578048 00000 n -0000576678 00000 n -0000578172 00000 n -0000578423 00000 n -0000578612 00000 n -0000578675 00000 n -0000578864 00000 n -0000578927 00000 n -0000578990 00000 n -0000579053 00000 n -0000579116 00000 n -0000579179 00000 n -0000579242 00000 n -0000579305 00000 n -0000579368 00000 n -0000579430 00000 n -0000579493 00000 n -0000579556 00000 n -0000583526 00000 n -0000582269 00000 n -0000579735 00000 n -0000582393 00000 n -0000582581 00000 n -0000582644 00000 n -0000582706 00000 n -0000582769 00000 n -0000582832 00000 n -0000582895 00000 n -0000583084 00000 n -0000583147 00000 n -0000583210 00000 n -0000583273 00000 n -0000583336 00000 n -0000583399 00000 n -0000589238 00000 n -0000586737 00000 n -0000583670 00000 n -0000587538 00000 n -0000587664 00000 n -0000587727 00000 n -0000587790 00000 n -0000587853 00000 n -0000586909 00000 n -0000587916 00000 n -0000587979 00000 n -0000587063 00000 n -0000588042 00000 n -0000588105 00000 n -0000587222 00000 n -0000588168 00000 n -0000587380 00000 n -0000588231 00000 n -0000588294 00000 n -0000588357 00000 n -0000588421 00000 n -0000588484 00000 n -0000588673 00000 n -0000588736 00000 n -0000588797 00000 n -0000588860 00000 n -0000588923 00000 n -0000588985 00000 n -0000589048 00000 n -0000589111 00000 n -0000589175 00000 n -0000593623 00000 n -0000591667 00000 n -0000589396 00000 n -0000591791 00000 n -0000591854 00000 n -0000591917 00000 n -0000591980 00000 n -0000592044 00000 n -0000592108 00000 n -0000592298 00000 n -0000592361 00000 n -0000592424 00000 n -0000592487 00000 n -0000592551 00000 n -0000592614 00000 n -0000592677 00000 n -0000592740 00000 n -0000592803 00000 n -0000592866 00000 n -0000592929 00000 n -0000592992 00000 n -0000593055 00000 n -0000593118 00000 n -0000593181 00000 n -0000593244 00000 n -0000593306 00000 n -0000593369 00000 n -0000593433 00000 n -0000593497 00000 n -0000593560 00000 n -0000598296 00000 n -0000596167 00000 n -0000593781 00000 n -0000596466 00000 n -0000596655 00000 n -0000596718 00000 n -0000596782 00000 n -0000596846 00000 n -0000596909 00000 n -0000596971 00000 n -0000597034 00000 n -0000597097 00000 n -0000597160 00000 n -0000597223 00000 n -0000597286 00000 n -0000597349 00000 n -0000597412 00000 n -0000597476 00000 n -0000596312 00000 n -0000597666 00000 n -0000597729 00000 n -0000597793 00000 n -0000597856 00000 n -0000597919 00000 n -0000597978 00000 n -0000598041 00000 n -0000598105 00000 n -0000598169 00000 n -0000598232 00000 n -0000603679 00000 n -0000601060 00000 n -0000598468 00000 n -0000601526 00000 n -0000601715 00000 n -0000601778 00000 n -0000601842 00000 n -0000602156 00000 n -0000602344 00000 n -0000601214 00000 n -0000602407 00000 n -0000602470 00000 n -0000602534 00000 n -0000602598 00000 n -0000601369 00000 n -0000602662 00000 n -0000602726 00000 n -0000602790 00000 n -0000602854 00000 n -0000602918 00000 n -0000602981 00000 n -0000603045 00000 n -0000603108 00000 n -0000603171 00000 n -0000603235 00000 n -0000603299 00000 n -0000603489 00000 n -0000603552 00000 n -0000957991 00000 n -0000939111 00000 n -0000949072 00000 n -0000608274 00000 n -0000605536 00000 n -0000603823 00000 n -0000606195 00000 n -0000606446 00000 n -0000605699 00000 n -0000606634 00000 n -0000606697 00000 n -0000606761 00000 n -0000606825 00000 n -0000606951 00000 n -0000607014 00000 n -0000607077 00000 n -0000607140 00000 n -0000607204 00000 n -0000607329 00000 n -0000607392 00000 n -0000607455 00000 n -0000607518 00000 n -0000607582 00000 n -0000607645 00000 n -0000607707 00000 n -0000607770 00000 n -0000605863 00000 n -0000607959 00000 n -0000606034 00000 n -0000608084 00000 n -0000608147 00000 n -0000608211 00000 n -0000615956 00000 n -0000610439 00000 n -0000608432 00000 n -0000610904 00000 n -0000611219 00000 n -0000611282 00000 n -0000611346 00000 n -0000611409 00000 n -0000610593 00000 n -0000610749 00000 n -0000611472 00000 n -0000611535 00000 n -0000611598 00000 n -0000611661 00000 n -0000611723 00000 n -0000611785 00000 n -0000611848 00000 n -0000611912 00000 n -0000611976 00000 n -0000612040 00000 n -0000612104 00000 n -0000612167 00000 n -0000612230 00000 n -0000612294 00000 n -0000612358 00000 n -0000612422 00000 n -0000612486 00000 n -0000612549 00000 n -0000612608 00000 n -0000612667 00000 n -0000612730 00000 n -0000612793 00000 n -0000612856 00000 n -0000612919 00000 n -0000612982 00000 n -0000613046 00000 n -0000613110 00000 n -0000613173 00000 n -0000613236 00000 n -0000613299 00000 n -0000613362 00000 n -0000613425 00000 n -0000613488 00000 n -0000613551 00000 n -0000613614 00000 n -0000613677 00000 n -0000613740 00000 n -0000613804 00000 n -0000613868 00000 n -0000613932 00000 n -0000613995 00000 n -0000614058 00000 n -0000614121 00000 n -0000614184 00000 n -0000614248 00000 n -0000614311 00000 n -0000614375 00000 n -0000614439 00000 n -0000614503 00000 n -0000614567 00000 n -0000614631 00000 n -0000614695 00000 n -0000614759 00000 n -0000614823 00000 n -0000614887 00000 n -0000614950 00000 n -0000615013 00000 n -0000615075 00000 n -0000615137 00000 n -0000615201 00000 n -0000615263 00000 n -0000615326 00000 n -0000615389 00000 n -0000615452 00000 n -0000615515 00000 n -0000615578 00000 n -0000615641 00000 n -0000615704 00000 n -0000615767 00000 n -0000615830 00000 n -0000615893 00000 n -0000929056 00000 n -0000621122 00000 n -0000618589 00000 n -0000616100 00000 n -0000619222 00000 n -0000619285 00000 n -0000619348 00000 n -0000619412 00000 n -0000619476 00000 n -0000619540 00000 n -0000619604 00000 n -0000619668 00000 n -0000619731 00000 n -0000619794 00000 n -0000618752 00000 n -0000619983 00000 n -0000620046 00000 n -0000620109 00000 n -0000618899 00000 n -0000620172 00000 n -0000620236 00000 n -0000620300 00000 n -0000620364 00000 n -0000620680 00000 n -0000620743 00000 n -0000619051 00000 n -0000620869 00000 n -0000620932 00000 n -0000620996 00000 n -0000621059 00000 n -0000939491 00000 n -0000626238 00000 n -0000623843 00000 n -0000621280 00000 n -0000624152 00000 n -0000624467 00000 n -0000624530 00000 n -0000623988 00000 n -0000624719 00000 n -0000624782 00000 n -0000624846 00000 n -0000624910 00000 n -0000624974 00000 n -0000625037 00000 n -0000625099 00000 n -0000625162 00000 n -0000625226 00000 n -0000625290 00000 n -0000625480 00000 n -0000625543 00000 n -0000625606 00000 n -0000625670 00000 n -0000625734 00000 n -0000625797 00000 n -0000625860 00000 n -0000625923 00000 n -0000625986 00000 n -0000626049 00000 n -0000626112 00000 n -0000626175 00000 n -0000631210 00000 n -0000629441 00000 n -0000626396 00000 n -0000629565 00000 n -0000629628 00000 n -0000629691 00000 n -0000629752 00000 n -0000629815 00000 n -0000629877 00000 n -0000629941 00000 n -0000630005 00000 n -0000630069 00000 n -0000630132 00000 n -0000630196 00000 n -0000630260 00000 n -0000630324 00000 n -0000630514 00000 n -0000630577 00000 n -0000630640 00000 n -0000630703 00000 n -0000630766 00000 n -0000630830 00000 n -0000630893 00000 n -0000630956 00000 n -0000631019 00000 n -0000631083 00000 n -0000637180 00000 n -0000634594 00000 n -0000631354 00000 n -0000634718 00000 n -0000634844 00000 n -0000634907 00000 n -0000634971 00000 n -0000635034 00000 n -0000635098 00000 n -0000635159 00000 n -0000635223 00000 n -0000635286 00000 n -0000635348 00000 n -0000635411 00000 n -0000635474 00000 n -0000635538 00000 n -0000635601 00000 n -0000635664 00000 n -0000635727 00000 n -0000635790 00000 n -0000635853 00000 n -0000636042 00000 n -0000636105 00000 n -0000636168 00000 n -0000636231 00000 n -0000636294 00000 n -0000636357 00000 n -0000636420 00000 n -0000636483 00000 n -0000636547 00000 n -0000636610 00000 n -0000636673 00000 n -0000636736 00000 n -0000636799 00000 n -0000636863 00000 n -0000636927 00000 n -0000636991 00000 n -0000637054 00000 n -0000637117 00000 n -0000958116 00000 n -0000641940 00000 n -0000640112 00000 n -0000637324 00000 n -0000640236 00000 n -0000640299 00000 n -0000640362 00000 n -0000640425 00000 n -0000640487 00000 n -0000640549 00000 n -0000640612 00000 n -0000640675 00000 n -0000640739 00000 n -0000640803 00000 n -0000640866 00000 n -0000640929 00000 n -0000640993 00000 n -0000641056 00000 n -0000641119 00000 n -0000641182 00000 n -0000641246 00000 n -0000641310 00000 n -0000641374 00000 n -0000641437 00000 n -0000641500 00000 n -0000641563 00000 n -0000641627 00000 n -0000641690 00000 n -0000641753 00000 n -0000641814 00000 n -0000647253 00000 n -0000645167 00000 n -0000642056 00000 n -0000645291 00000 n -0000645417 00000 n -0000645480 00000 n -0000645543 00000 n -0000645606 00000 n -0000645670 00000 n -0000645734 00000 n -0000645797 00000 n -0000645987 00000 n -0000646050 00000 n -0000646114 00000 n -0000646177 00000 n -0000646240 00000 n -0000646303 00000 n -0000646366 00000 n -0000646429 00000 n -0000646493 00000 n -0000646557 00000 n -0000646620 00000 n -0000646684 00000 n -0000646748 00000 n -0000646812 00000 n -0000646875 00000 n -0000646938 00000 n -0000647000 00000 n -0000647064 00000 n -0000647127 00000 n -0000647190 00000 n -0000652596 00000 n -0000650254 00000 n -0000647397 00000 n -0000650378 00000 n -0000650441 00000 n -0000650504 00000 n -0000650567 00000 n -0000650630 00000 n -0000650693 00000 n -0000650756 00000 n -0000650820 00000 n -0000650883 00000 n -0000650947 00000 n -0000651011 00000 n -0000651075 00000 n -0000651138 00000 n -0000651201 00000 n -0000651264 00000 n -0000651328 00000 n -0000651391 00000 n -0000651454 00000 n -0000651517 00000 n -0000651580 00000 n -0000651644 00000 n -0000651707 00000 n -0000651770 00000 n -0000651833 00000 n -0000651896 00000 n -0000651959 00000 n -0000652022 00000 n -0000652085 00000 n -0000652149 00000 n -0000652213 00000 n -0000652277 00000 n -0000652341 00000 n -0000652404 00000 n -0000652468 00000 n -0000652532 00000 n -0000657125 00000 n -0000655611 00000 n -0000652698 00000 n -0000655735 00000 n -0000655798 00000 n -0000655860 00000 n -0000655923 00000 n -0000655986 00000 n -0000656049 00000 n -0000656113 00000 n -0000656176 00000 n -0000656364 00000 n -0000656427 00000 n -0000656491 00000 n -0000656554 00000 n -0000656617 00000 n -0000656680 00000 n -0000656744 00000 n -0000656808 00000 n -0000656871 00000 n -0000656935 00000 n -0000656998 00000 n -0000657061 00000 n -0000660858 00000 n -0000659469 00000 n -0000657255 00000 n -0000659593 00000 n -0000659718 00000 n -0000659781 00000 n -0000659844 00000 n -0000659906 00000 n -0000659969 00000 n -0000660033 00000 n -0000660097 00000 n -0000660160 00000 n -0000660224 00000 n -0000660414 00000 n -0000660477 00000 n -0000660541 00000 n -0000660604 00000 n -0000660667 00000 n -0000660731 00000 n -0000660795 00000 n -0000665877 00000 n -0000664368 00000 n -0000661002 00000 n -0000664492 00000 n -0000664555 00000 n -0000664617 00000 n -0000664680 00000 n -0000664805 00000 n -0000664868 00000 n -0000664931 00000 n -0000664994 00000 n -0000665057 00000 n -0000665120 00000 n -0000665183 00000 n -0000665246 00000 n -0000665435 00000 n -0000665498 00000 n -0000665561 00000 n -0000665624 00000 n -0000665688 00000 n -0000665751 00000 n -0000665814 00000 n -0000958241 00000 n -0000669373 00000 n -0000667542 00000 n -0000665993 00000 n -0000667666 00000 n -0000667729 00000 n -0000667792 00000 n -0000667856 00000 n -0000667920 00000 n -0000667983 00000 n -0000668047 00000 n -0000668111 00000 n -0000668174 00000 n -0000668237 00000 n -0000668299 00000 n -0000668361 00000 n -0000668424 00000 n -0000668488 00000 n -0000668552 00000 n -0000668615 00000 n -0000668678 00000 n -0000668867 00000 n -0000668930 00000 n -0000668993 00000 n -0000669056 00000 n -0000669120 00000 n -0000669183 00000 n -0000669247 00000 n -0000669310 00000 n -0000671519 00000 n -0000671269 00000 n -0000669517 00000 n -0000671393 00000 n -0000671456 00000 n -0000673557 00000 n -0000673370 00000 n -0000671621 00000 n -0000673494 00000 n -0000675345 00000 n -0000675158 00000 n -0000673645 00000 n -0000675282 00000 n -0000679125 00000 n -0000677627 00000 n -0000675433 00000 n -0000678242 00000 n -0000678557 00000 n -0000677790 00000 n -0000677937 00000 n -0000678090 00000 n -0000678746 00000 n -0000678809 00000 n -0000678872 00000 n -0000678935 00000 n -0000678998 00000 n -0000679061 00000 n -0000682048 00000 n -0000680723 00000 n -0000679241 00000 n -0000680847 00000 n -0000680910 00000 n -0000680973 00000 n -0000681163 00000 n -0000681226 00000 n -0000681289 00000 n -0000681353 00000 n -0000681417 00000 n -0000681605 00000 n -0000681668 00000 n -0000681858 00000 n -0000681921 00000 n -0000681984 00000 n -0000958366 00000 n -0000686834 00000 n -0000684631 00000 n -0000682150 00000 n -0000684755 00000 n -0000685070 00000 n -0000685133 00000 n -0000685320 00000 n -0000685383 00000 n -0000685446 00000 n -0000685509 00000 n -0000685571 00000 n -0000685634 00000 n -0000685698 00000 n -0000685762 00000 n -0000685825 00000 n -0000685888 00000 n -0000685951 00000 n -0000686014 00000 n -0000686078 00000 n -0000686142 00000 n -0000686331 00000 n -0000686394 00000 n -0000686457 00000 n -0000686520 00000 n -0000686582 00000 n -0000686645 00000 n -0000686708 00000 n -0000686771 00000 n -0000694478 00000 n -0000690642 00000 n -0000686936 00000 n -0000690766 00000 n -0000690829 00000 n -0000690892 00000 n -0000690955 00000 n -0000691018 00000 n -0000691081 00000 n -0000691144 00000 n -0000691207 00000 n -0000691270 00000 n -0000691333 00000 n -0000691396 00000 n -0000691459 00000 n -0000691522 00000 n -0000691585 00000 n -0000691647 00000 n -0000691710 00000 n -0000691773 00000 n -0000691836 00000 n -0000691899 00000 n -0000691962 00000 n -0000692025 00000 n -0000692088 00000 n -0000692151 00000 n -0000692212 00000 n -0000692275 00000 n -0000692338 00000 n -0000692401 00000 n -0000692463 00000 n -0000692525 00000 n -0000692588 00000 n -0000692651 00000 n -0000692714 00000 n -0000692777 00000 n -0000692840 00000 n -0000692903 00000 n -0000692966 00000 n -0000693029 00000 n -0000693092 00000 n -0000693155 00000 n -0000693218 00000 n -0000693281 00000 n -0000693344 00000 n -0000693407 00000 n -0000693470 00000 n -0000693534 00000 n -0000693598 00000 n -0000693661 00000 n -0000693724 00000 n -0000693787 00000 n -0000693850 00000 n -0000693913 00000 n -0000693976 00000 n -0000694039 00000 n -0000694102 00000 n -0000694165 00000 n -0000694228 00000 n -0000694290 00000 n -0000694353 00000 n -0000695976 00000 n -0000747737 00000 n -0000695831 00000 n -0000694566 00000 n -0000746980 00000 n -0000747106 00000 n -0000746822 00000 n -0000747168 00000 n -0000747232 00000 n -0000747359 00000 n -0000747547 00000 n -0000747610 00000 n -0000747674 00000 n -0000752724 00000 n -0000750076 00000 n -0000747890 00000 n -0000750200 00000 n -0000750325 00000 n -0000750514 00000 n -0000750577 00000 n -0000750640 00000 n -0000750703 00000 n -0000750766 00000 n -0000750830 00000 n -0000750894 00000 n -0000750957 00000 n -0000751020 00000 n -0000751083 00000 n -0000751146 00000 n -0000751209 00000 n -0000751272 00000 n -0000751335 00000 n -0000751398 00000 n -0000751461 00000 n -0000751524 00000 n -0000751713 00000 n -0000751899 00000 n -0000751962 00000 n -0000752026 00000 n -0000752089 00000 n -0000752153 00000 n -0000752216 00000 n -0000752280 00000 n -0000752343 00000 n -0000752407 00000 n -0000752470 00000 n -0000752534 00000 n -0000752597 00000 n -0000752661 00000 n -0000757041 00000 n -0000755718 00000 n -0000752826 00000 n -0000755842 00000 n -0000755968 00000 n -0000756031 00000 n -0000756095 00000 n -0000756158 00000 n -0000756222 00000 n -0000756285 00000 n -0000756474 00000 n -0000756537 00000 n -0000756600 00000 n -0000756663 00000 n -0000756726 00000 n -0000756914 00000 n -0000756977 00000 n -0000761489 00000 n -0000759541 00000 n -0000757143 00000 n -0000759665 00000 n -0000759728 00000 n -0000759791 00000 n -0000759854 00000 n -0000759917 00000 n -0000759980 00000 n -0000760044 00000 n -0000760108 00000 n -0000760170 00000 n -0000760233 00000 n -0000760296 00000 n -0000760359 00000 n -0000760422 00000 n -0000760485 00000 n -0000760548 00000 n -0000760611 00000 n -0000760799 00000 n -0000760862 00000 n -0000760925 00000 n -0000760988 00000 n -0000761177 00000 n -0000761364 00000 n -0000958491 00000 n -0000765160 00000 n -0000763651 00000 n -0000761591 00000 n -0000763775 00000 n -0000763901 00000 n -0000764090 00000 n -0000764279 00000 n -0000764468 00000 n -0000764531 00000 n -0000764719 00000 n -0000764908 00000 n -0000765097 00000 n -0000769296 00000 n -0000767721 00000 n -0000765262 00000 n -0000767845 00000 n -0000767908 00000 n -0000767972 00000 n -0000768035 00000 n -0000768098 00000 n -0000768287 00000 n -0000768350 00000 n -0000768413 00000 n -0000768477 00000 n -0000768540 00000 n -0000768730 00000 n -0000768793 00000 n -0000768982 00000 n -0000769045 00000 n -0000769108 00000 n -0000769171 00000 n -0000769234 00000 n -0000773944 00000 n -0000771740 00000 n -0000769412 00000 n -0000771864 00000 n -0000771927 00000 n -0000771989 00000 n -0000772177 00000 n -0000772240 00000 n -0000772304 00000 n -0000772493 00000 n -0000772682 00000 n -0000772745 00000 n -0000772809 00000 n -0000772998 00000 n -0000773061 00000 n -0000773124 00000 n -0000773187 00000 n -0000773250 00000 n -0000773313 00000 n -0000773376 00000 n -0000773439 00000 n -0000773502 00000 n -0000773565 00000 n -0000773628 00000 n -0000773692 00000 n -0000773755 00000 n -0000773818 00000 n -0000779835 00000 n -0000777122 00000 n -0000774046 00000 n -0000777246 00000 n -0000777309 00000 n -0000777433 00000 n -0000777496 00000 n -0000777559 00000 n -0000777622 00000 n -0000777685 00000 n -0000777749 00000 n -0000777813 00000 n -0000777877 00000 n -0000777940 00000 n -0000778003 00000 n -0000778067 00000 n -0000778130 00000 n -0000778193 00000 n -0000778256 00000 n -0000778319 00000 n -0000778383 00000 n -0000778446 00000 n -0000778509 00000 n -0000778571 00000 n -0000778634 00000 n -0000778697 00000 n -0000778760 00000 n -0000778824 00000 n -0000778887 00000 n -0000778950 00000 n -0000779014 00000 n -0000779077 00000 n -0000779140 00000 n -0000779204 00000 n -0000779267 00000 n -0000779330 00000 n -0000779394 00000 n -0000779457 00000 n -0000779520 00000 n -0000779583 00000 n -0000779646 00000 n -0000779709 00000 n -0000779773 00000 n -0000783885 00000 n -0000782443 00000 n -0000779965 00000 n -0000782567 00000 n -0000782630 00000 n -0000782692 00000 n -0000782755 00000 n -0000782819 00000 n -0000782882 00000 n -0000782945 00000 n -0000783131 00000 n -0000783319 00000 n -0000783508 00000 n -0000783571 00000 n -0000783634 00000 n -0000783697 00000 n -0000783759 00000 n -0000788065 00000 n -0000786747 00000 n -0000784001 00000 n -0000786871 00000 n -0000786996 00000 n -0000787059 00000 n -0000787121 00000 n -0000787184 00000 n -0000787247 00000 n -0000787436 00000 n -0000787499 00000 n -0000787562 00000 n -0000787625 00000 n -0000787688 00000 n -0000787876 00000 n -0000787939 00000 n -0000958616 00000 n -0000792498 00000 n -0000790994 00000 n -0000788181 00000 n -0000791303 00000 n -0000791429 00000 n -0000791491 00000 n -0000791554 00000 n -0000791617 00000 n -0000791680 00000 n -0000791743 00000 n -0000791806 00000 n -0000791869 00000 n -0000792056 00000 n -0000792118 00000 n -0000792181 00000 n -0000792245 00000 n -0000792309 00000 n -0000792372 00000 n -0000791139 00000 n -0000792435 00000 n -0000796872 00000 n -0000795424 00000 n -0000792614 00000 n -0000795738 00000 n -0000795801 00000 n -0000795569 00000 n -0000795990 00000 n -0000796052 00000 n -0000796115 00000 n -0000796304 00000 n -0000796367 00000 n -0000796430 00000 n -0000796493 00000 n -0000796557 00000 n -0000796620 00000 n -0000796683 00000 n -0000796746 00000 n -0000800699 00000 n -0000799400 00000 n -0000796988 00000 n -0000799693 00000 n -0000799819 00000 n -0000799882 00000 n -0000799945 00000 n -0000799545 00000 n -0000800008 00000 n -0000800071 00000 n -0000800133 00000 n -0000800196 00000 n -0000800259 00000 n -0000800322 00000 n -0000800510 00000 n -0000800573 00000 n -0000800636 00000 n -0000805346 00000 n -0000803331 00000 n -0000800815 00000 n -0000803455 00000 n -0000803644 00000 n -0000803707 00000 n -0000803770 00000 n -0000803833 00000 n -0000803895 00000 n -0000803958 00000 n -0000804021 00000 n -0000804085 00000 n -0000804148 00000 n -0000804211 00000 n -0000804274 00000 n -0000804336 00000 n -0000804399 00000 n -0000804461 00000 n -0000804525 00000 n -0000804588 00000 n -0000804650 00000 n -0000804713 00000 n -0000804776 00000 n -0000804840 00000 n -0000804903 00000 n -0000804966 00000 n -0000805029 00000 n -0000805093 00000 n -0000805156 00000 n -0000805219 00000 n -0000805282 00000 n -0000810554 00000 n -0000808786 00000 n -0000805476 00000 n -0000808910 00000 n -0000808973 00000 n -0000809035 00000 n -0000809098 00000 n -0000809162 00000 n -0000809226 00000 n -0000809290 00000 n -0000809353 00000 n -0000809416 00000 n -0000809479 00000 n -0000809543 00000 n -0000809606 00000 n -0000809670 00000 n -0000809733 00000 n -0000809796 00000 n -0000809859 00000 n -0000809922 00000 n -0000809986 00000 n -0000810048 00000 n -0000810112 00000 n -0000810175 00000 n -0000810238 00000 n -0000810302 00000 n -0000810365 00000 n -0000810428 00000 n -0000810491 00000 n -0000814904 00000 n -0000813072 00000 n -0000810670 00000 n -0000813196 00000 n -0000813259 00000 n -0000813322 00000 n -0000813385 00000 n -0000813448 00000 n -0000813512 00000 n -0000813574 00000 n -0000813637 00000 n -0000813701 00000 n -0000813765 00000 n -0000813828 00000 n -0000813891 00000 n -0000813955 00000 n -0000814018 00000 n -0000814082 00000 n -0000814146 00000 n -0000814209 00000 n -0000814272 00000 n -0000814335 00000 n -0000814399 00000 n -0000814462 00000 n -0000814526 00000 n -0000814589 00000 n -0000814652 00000 n -0000814715 00000 n -0000814778 00000 n -0000814841 00000 n -0000958741 00000 n -0000819717 00000 n -0000817842 00000 n -0000815048 00000 n -0000818140 00000 n -0000818203 00000 n -0000818266 00000 n -0000818330 00000 n -0000818392 00000 n -0000818455 00000 n -0000817987 00000 n -0000818519 00000 n -0000818582 00000 n -0000818644 00000 n -0000818707 00000 n -0000818770 00000 n -0000818833 00000 n -0000818895 00000 n -0000818958 00000 n -0000819021 00000 n -0000819084 00000 n -0000819147 00000 n -0000819210 00000 n -0000819273 00000 n -0000819336 00000 n -0000819399 00000 n -0000819463 00000 n -0000819527 00000 n -0000819590 00000 n -0000819654 00000 n -0000824387 00000 n -0000822698 00000 n -0000819861 00000 n -0000823001 00000 n -0000823064 00000 n -0000823127 00000 n -0000823189 00000 n -0000823253 00000 n -0000823316 00000 n -0000823379 00000 n -0000823442 00000 n -0000823505 00000 n -0000823568 00000 n -0000823631 00000 n -0000823695 00000 n -0000823758 00000 n -0000823821 00000 n -0000823884 00000 n -0000823947 00000 n -0000824010 00000 n -0000824072 00000 n -0000824135 00000 n -0000822843 00000 n -0000824198 00000 n -0000824261 00000 n -0000824324 00000 n -0000829797 00000 n -0000827601 00000 n -0000824489 00000 n -0000827899 00000 n -0000827962 00000 n -0000828025 00000 n -0000828086 00000 n -0000828149 00000 n -0000828212 00000 n -0000828275 00000 n -0000828338 00000 n -0000828401 00000 n -0000828465 00000 n -0000828528 00000 n -0000828591 00000 n -0000828655 00000 n -0000828718 00000 n -0000828782 00000 n -0000828846 00000 n -0000828909 00000 n -0000828972 00000 n -0000829036 00000 n -0000829100 00000 n -0000829164 00000 n -0000829227 00000 n -0000829290 00000 n -0000829354 00000 n -0000827746 00000 n -0000829417 00000 n -0000829480 00000 n -0000829543 00000 n -0000829606 00000 n -0000829669 00000 n -0000829733 00000 n -0000834111 00000 n -0000832411 00000 n -0000829941 00000 n -0000832719 00000 n -0000832782 00000 n -0000832845 00000 n -0000832909 00000 n -0000832972 00000 n -0000833035 00000 n -0000833098 00000 n -0000833162 00000 n -0000833225 00000 n -0000833289 00000 n -0000833353 00000 n -0000833417 00000 n -0000833481 00000 n -0000832556 00000 n -0000833544 00000 n -0000833607 00000 n -0000833671 00000 n -0000833733 00000 n -0000833796 00000 n -0000833859 00000 n -0000833923 00000 n -0000833986 00000 n -0000834049 00000 n -0000838862 00000 n -0000836726 00000 n -0000834255 00000 n -0000837029 00000 n -0000837092 00000 n -0000837155 00000 n -0000837218 00000 n -0000837281 00000 n -0000837344 00000 n -0000836871 00000 n -0000837408 00000 n -0000837471 00000 n -0000837533 00000 n -0000837596 00000 n -0000837659 00000 n -0000837722 00000 n -0000837785 00000 n -0000837849 00000 n -0000837912 00000 n -0000837975 00000 n -0000838039 00000 n -0000838103 00000 n -0000838166 00000 n -0000838230 00000 n -0000838294 00000 n -0000838357 00000 n -0000838420 00000 n -0000838483 00000 n -0000838547 00000 n -0000838610 00000 n -0000838673 00000 n -0000838737 00000 n -0000838799 00000 n -0000845072 00000 n -0000841791 00000 n -0000839020 00000 n -0000842089 00000 n -0000842152 00000 n -0000842216 00000 n -0000842280 00000 n -0000842344 00000 n -0000842407 00000 n -0000842471 00000 n -0000842535 00000 n -0000842599 00000 n -0000842662 00000 n -0000842726 00000 n -0000842790 00000 n -0000842853 00000 n -0000842916 00000 n -0000842980 00000 n -0000843043 00000 n -0000843106 00000 n -0000843168 00000 n -0000843231 00000 n -0000843294 00000 n -0000843357 00000 n -0000843420 00000 n -0000843484 00000 n -0000843548 00000 n -0000843612 00000 n -0000843676 00000 n -0000843740 00000 n -0000843804 00000 n -0000843867 00000 n -0000841936 00000 n -0000843930 00000 n -0000843994 00000 n -0000844058 00000 n -0000844120 00000 n -0000844183 00000 n -0000844247 00000 n -0000844311 00000 n -0000844374 00000 n -0000844437 00000 n -0000844501 00000 n -0000844564 00000 n -0000844628 00000 n -0000844691 00000 n -0000844754 00000 n -0000844817 00000 n -0000844880 00000 n -0000844944 00000 n -0000845008 00000 n -0000958866 00000 n -0000943113 00000 n -0000849684 00000 n -0000847984 00000 n -0000845188 00000 n -0000848108 00000 n -0000848171 00000 n -0000848233 00000 n -0000848296 00000 n -0000848359 00000 n -0000848423 00000 n -0000848485 00000 n -0000848549 00000 n -0000848612 00000 n -0000848676 00000 n -0000848738 00000 n -0000848801 00000 n -0000848865 00000 n -0000848928 00000 n -0000848991 00000 n -0000849055 00000 n -0000849118 00000 n -0000849181 00000 n -0000849244 00000 n -0000849307 00000 n -0000849371 00000 n -0000849433 00000 n -0000849495 00000 n -0000849558 00000 n -0000849621 00000 n -0000854804 00000 n -0000852421 00000 n -0000849828 00000 n -0000852718 00000 n -0000852566 00000 n -0000852781 00000 n -0000852844 00000 n -0000852907 00000 n -0000852969 00000 n -0000853033 00000 n -0000853096 00000 n -0000853159 00000 n -0000853223 00000 n -0000853286 00000 n -0000853349 00000 n -0000853413 00000 n -0000853476 00000 n -0000853539 00000 n -0000853603 00000 n -0000853666 00000 n -0000853730 00000 n -0000853789 00000 n -0000853853 00000 n -0000853916 00000 n -0000853980 00000 n -0000854043 00000 n -0000854107 00000 n -0000854170 00000 n -0000854234 00000 n -0000854298 00000 n -0000854362 00000 n -0000854426 00000 n -0000854489 00000 n -0000854552 00000 n -0000854615 00000 n -0000854678 00000 n -0000854741 00000 n -0000859918 00000 n -0000858091 00000 n -0000854920 00000 n -0000858215 00000 n -0000858278 00000 n -0000858340 00000 n -0000858403 00000 n -0000858466 00000 n -0000858530 00000 n -0000858593 00000 n -0000858656 00000 n -0000858719 00000 n -0000858781 00000 n -0000858844 00000 n -0000858907 00000 n -0000858970 00000 n -0000859033 00000 n -0000859096 00000 n -0000859160 00000 n -0000859223 00000 n -0000859286 00000 n -0000859348 00000 n -0000859412 00000 n -0000859475 00000 n -0000859539 00000 n -0000859602 00000 n -0000859665 00000 n -0000859729 00000 n -0000859792 00000 n -0000859855 00000 n -0000864396 00000 n -0000862245 00000 n -0000860048 00000 n -0000862369 00000 n -0000862432 00000 n -0000862495 00000 n -0000862558 00000 n -0000862620 00000 n -0000862683 00000 n -0000862746 00000 n -0000862809 00000 n -0000862872 00000 n -0000862935 00000 n -0000862999 00000 n -0000863062 00000 n -0000863126 00000 n -0000863190 00000 n -0000863253 00000 n -0000863316 00000 n -0000863380 00000 n -0000863443 00000 n -0000863507 00000 n -0000863571 00000 n -0000863635 00000 n -0000863698 00000 n -0000863761 00000 n -0000863824 00000 n -0000863885 00000 n -0000863949 00000 n -0000864013 00000 n -0000864077 00000 n -0000864140 00000 n -0000864204 00000 n -0000864268 00000 n -0000864332 00000 n -0000866248 00000 n -0000865617 00000 n -0000864512 00000 n -0000865741 00000 n -0000865804 00000 n -0000865868 00000 n -0000865931 00000 n -0000865994 00000 n -0000866057 00000 n -0000866121 00000 n -0000866184 00000 n -0000871307 00000 n -0000868887 00000 n -0000866336 00000 n -0000869354 00000 n -0000869543 00000 n -0000869732 00000 n -0000869795 00000 n -0000869859 00000 n -0000869923 00000 n -0000869041 00000 n -0000869197 00000 n -0000869986 00000 n -0000870049 00000 n -0000870112 00000 n -0000870176 00000 n -0000870239 00000 n -0000870429 00000 n -0000870492 00000 n -0000870555 00000 n -0000870618 00000 n -0000870681 00000 n -0000870869 00000 n -0000870932 00000 n -0000870995 00000 n -0000871057 00000 n -0000871120 00000 n -0000871182 00000 n -0000958991 00000 n -0000874751 00000 n -0000873304 00000 n -0000871451 00000 n -0000873428 00000 n -0000873491 00000 n -0000873617 00000 n -0000873680 00000 n -0000873744 00000 n -0000873932 00000 n -0000873995 00000 n -0000874058 00000 n -0000874121 00000 n -0000874185 00000 n -0000874248 00000 n -0000874311 00000 n -0000874374 00000 n -0000874561 00000 n -0000874624 00000 n -0000874688 00000 n -0000877911 00000 n -0000876521 00000 n -0000874881 00000 n -0000876645 00000 n -0000876708 00000 n -0000876771 00000 n -0000876835 00000 n -0000876899 00000 n -0000876963 00000 n -0000877026 00000 n -0000877089 00000 n -0000877278 00000 n -0000877341 00000 n -0000877405 00000 n -0000877468 00000 n -0000877531 00000 n -0000877595 00000 n -0000877784 00000 n -0000877847 00000 n -0000881869 00000 n -0000880294 00000 n -0000878055 00000 n -0000880418 00000 n -0000880481 00000 n -0000880544 00000 n -0000880608 00000 n -0000880669 00000 n -0000880795 00000 n -0000880858 00000 n -0000880921 00000 n -0000880985 00000 n -0000881049 00000 n -0000881175 00000 n -0000881238 00000 n -0000881300 00000 n -0000881364 00000 n -0000881428 00000 n -0000881491 00000 n -0000881554 00000 n -0000881743 00000 n -0000881806 00000 n -0000885251 00000 n -0000883876 00000 n -0000881985 00000 n -0000884175 00000 n -0000884238 00000 n -0000884301 00000 n -0000884365 00000 n -0000884555 00000 n -0000884618 00000 n -0000884681 00000 n -0000884745 00000 n -0000884021 00000 n -0000884935 00000 n -0000884998 00000 n -0000885061 00000 n -0000885124 00000 n -0000885187 00000 n -0000891561 00000 n -0000888472 00000 n -0000885381 00000 n -0000888596 00000 n -0000888785 00000 n -0000888848 00000 n -0000889035 00000 n -0000889098 00000 n -0000889162 00000 n -0000889225 00000 n -0000889289 00000 n -0000889353 00000 n -0000889416 00000 n -0000889480 00000 n -0000889543 00000 n -0000889606 00000 n -0000889669 00000 n -0000889732 00000 n -0000889794 00000 n -0000889856 00000 n -0000889920 00000 n -0000889984 00000 n -0000890048 00000 n -0000890112 00000 n -0000890176 00000 n -0000890240 00000 n -0000890303 00000 n -0000890366 00000 n -0000890429 00000 n -0000890492 00000 n -0000890556 00000 n -0000890619 00000 n -0000890682 00000 n -0000890745 00000 n -0000890809 00000 n -0000890994 00000 n -0000891057 00000 n -0000891120 00000 n -0000891184 00000 n -0000891246 00000 n -0000891310 00000 n -0000891374 00000 n -0000891437 00000 n -0000891499 00000 n -0000895379 00000 n -0000893300 00000 n -0000891705 00000 n -0000893424 00000 n -0000893738 00000 n -0000893800 00000 n -0000893863 00000 n -0000893926 00000 n -0000893989 00000 n -0000894052 00000 n -0000894115 00000 n -0000894178 00000 n -0000894241 00000 n -0000894304 00000 n -0000894367 00000 n -0000894430 00000 n -0000894494 00000 n -0000894558 00000 n -0000894620 00000 n -0000894683 00000 n -0000894873 00000 n -0000894936 00000 n -0000894999 00000 n -0000895062 00000 n -0000895125 00000 n -0000895189 00000 n -0000895253 00000 n -0000895317 00000 n -0000959116 00000 n -0000898073 00000 n -0000896237 00000 n -0000895509 00000 n -0000896361 00000 n -0000896424 00000 n -0000896486 00000 n -0000896549 00000 n -0000896613 00000 n -0000896675 00000 n -0000896738 00000 n -0000896802 00000 n -0000896866 00000 n -0000896929 00000 n -0000896992 00000 n -0000897056 00000 n -0000897120 00000 n -0000897184 00000 n -0000897246 00000 n -0000897309 00000 n -0000897373 00000 n -0000897437 00000 n -0000897501 00000 n -0000897564 00000 n -0000897627 00000 n -0000897691 00000 n -0000897755 00000 n -0000897819 00000 n -0000897882 00000 n -0000897945 00000 n -0000898009 00000 n -0000900825 00000 n -0000898927 00000 n -0000898161 00000 n -0000899051 00000 n -0000899114 00000 n -0000899177 00000 n -0000899241 00000 n -0000899303 00000 n -0000899366 00000 n -0000899430 00000 n -0000899494 00000 n -0000899558 00000 n -0000899621 00000 n -0000899684 00000 n -0000899748 00000 n -0000899812 00000 n -0000899874 00000 n -0000899937 00000 n -0000900001 00000 n -0000900065 00000 n -0000900254 00000 n -0000900317 00000 n -0000900380 00000 n -0000900444 00000 n -0000900508 00000 n -0000900572 00000 n -0000900635 00000 n -0000900698 00000 n -0000900762 00000 n -0000903181 00000 n -0000901723 00000 n -0000900927 00000 n -0000901847 00000 n -0000901910 00000 n -0000901974 00000 n -0000902037 00000 n -0000902100 00000 n -0000902164 00000 n -0000902227 00000 n -0000902291 00000 n -0000902354 00000 n -0000902417 00000 n -0000902481 00000 n -0000902545 00000 n -0000902609 00000 n -0000902672 00000 n -0000902735 00000 n -0000902799 00000 n -0000902863 00000 n -0000902926 00000 n -0000902989 00000 n -0000903053 00000 n -0000903117 00000 n -0000907356 00000 n -0000906038 00000 n -0000903269 00000 n -0000906162 00000 n -0000906351 00000 n -0000906414 00000 n -0000906476 00000 n -0000906664 00000 n -0000906727 00000 n -0000906790 00000 n -0000906978 00000 n -0000907041 00000 n -0000907104 00000 n -0000907167 00000 n -0000907230 00000 n -0000907293 00000 n -0000911500 00000 n -0000910621 00000 n -0000907458 00000 n -0000910745 00000 n -0000910808 00000 n -0000910871 00000 n -0000911060 00000 n -0000911122 00000 n -0000911311 00000 n -0000911374 00000 n -0000911437 00000 n -0000917255 00000 n -0000914867 00000 n -0000911602 00000 n -0000914991 00000 n -0000915054 00000 n -0000915116 00000 n -0000915305 00000 n -0000915368 00000 n -0000915431 00000 n -0000915494 00000 n -0000915557 00000 n -0000915620 00000 n -0000915683 00000 n -0000915746 00000 n -0000915809 00000 n -0000915871 00000 n -0000915934 00000 n -0000915997 00000 n -0000916060 00000 n -0000916123 00000 n -0000916186 00000 n -0000916249 00000 n -0000916312 00000 n -0000916375 00000 n -0000916437 00000 n -0000916500 00000 n -0000916563 00000 n -0000916626 00000 n -0000916688 00000 n -0000916751 00000 n -0000916814 00000 n -0000916877 00000 n -0000916940 00000 n -0000917003 00000 n -0000917066 00000 n -0000917129 00000 n -0000917192 00000 n -0000959241 00000 n -0000921170 00000 n -0000920102 00000 n -0000917357 00000 n -0000920226 00000 n -0000920289 00000 n -0000920352 00000 n -0000920541 00000 n -0000920604 00000 n -0000920667 00000 n -0000920855 00000 n -0000920918 00000 n -0000921107 00000 n -0000925112 00000 n -0000923855 00000 n -0000921272 00000 n -0000923979 00000 n -0000924042 00000 n -0000924230 00000 n -0000924419 00000 n -0000924608 00000 n -0000924671 00000 n -0000924735 00000 n -0000924923 00000 n -0000924986 00000 n -0000925049 00000 n -0000926397 00000 n -0000926084 00000 n -0000925214 00000 n -0000926208 00000 n -0000926271 00000 n -0000926334 00000 n -0000932152 00000 n -0000928441 00000 n -0000926485 00000 n -0000928741 00000 n -0000928930 00000 n -0000929180 00000 n -0000929243 00000 n -0000929306 00000 n -0000929370 00000 n -0000929434 00000 n -0000929559 00000 n -0000929685 00000 n -0000929748 00000 n -0000929811 00000 n -0000929875 00000 n -0000929939 00000 n -0000930001 00000 n -0000930126 00000 n -0000930189 00000 n -0000930252 00000 n -0000930315 00000 n -0000930378 00000 n -0000930442 00000 n -0000930505 00000 n -0000930568 00000 n -0000930631 00000 n -0000930694 00000 n -0000930757 00000 n -0000930820 00000 n -0000930883 00000 n -0000930947 00000 n -0000931011 00000 n -0000931074 00000 n -0000931137 00000 n -0000931200 00000 n -0000931263 00000 n -0000931327 00000 n -0000931391 00000 n -0000931455 00000 n +0000956586 00000 n +0000481691 00000 n +0000481754 00000 n +0000481817 00000 n +0000481880 00000 n +0000938244 00000 n +0000487024 00000 n +0000484392 00000 n +0000482151 00000 n +0000484693 00000 n +0000484819 00000 n +0000484882 00000 n +0000484946 00000 n +0000485009 00000 n +0000485072 00000 n +0000485135 00000 n +0000485198 00000 n +0000485260 00000 n +0000485323 00000 n +0000485386 00000 n +0000485449 00000 n +0000485512 00000 n +0000485575 00000 n +0000485638 00000 n +0000485701 00000 n +0000485764 00000 n +0000486078 00000 n +0000484537 00000 n +0000486265 00000 n +0000486328 00000 n +0000486391 00000 n +0000486455 00000 n +0000486519 00000 n +0000486583 00000 n +0000486773 00000 n +0000486899 00000 n +0000486961 00000 n +0000490101 00000 n +0000488648 00000 n +0000487210 00000 n +0000488772 00000 n +0000488835 00000 n +0000488960 00000 n +0000489023 00000 n +0000489087 00000 n +0000489151 00000 n +0000489277 00000 n +0000489340 00000 n +0000489403 00000 n +0000489467 00000 n +0000489531 00000 n +0000489594 00000 n +0000489657 00000 n +0000489721 00000 n +0000489785 00000 n +0000489848 00000 n +0000489912 00000 n +0000489975 00000 n +0000490038 00000 n +0000959953 00000 n +0000494111 00000 n +0000492098 00000 n +0000490273 00000 n +0000492222 00000 n +0000492285 00000 n +0000492475 00000 n +0000492538 00000 n +0000492600 00000 n +0000492662 00000 n +0000492725 00000 n +0000492788 00000 n +0000492851 00000 n +0000492914 00000 n +0000492977 00000 n +0000493040 00000 n +0000493103 00000 n +0000493165 00000 n +0000493228 00000 n +0000493291 00000 n +0000493481 00000 n +0000493670 00000 n +0000493733 00000 n +0000493795 00000 n +0000493858 00000 n +0000493922 00000 n +0000493986 00000 n +0000494048 00000 n +0000497454 00000 n +0000495938 00000 n +0000494255 00000 n +0000496062 00000 n +0000496125 00000 n +0000496188 00000 n +0000496252 00000 n +0000496316 00000 n +0000496505 00000 n +0000496568 00000 n +0000496631 00000 n +0000496694 00000 n +0000496757 00000 n +0000496821 00000 n +0000496885 00000 n +0000496949 00000 n +0000497013 00000 n +0000497076 00000 n +0000497139 00000 n +0000497202 00000 n +0000497266 00000 n +0000497328 00000 n +0000497391 00000 n +0000501459 00000 n +0000499567 00000 n +0000497584 00000 n +0000499691 00000 n +0000499754 00000 n +0000499817 00000 n +0000499881 00000 n +0000499945 00000 n +0000500008 00000 n +0000500070 00000 n +0000500133 00000 n +0000500197 00000 n +0000500261 00000 n +0000500323 00000 n +0000500386 00000 n +0000500446 00000 n +0000500510 00000 n +0000500574 00000 n +0000500638 00000 n +0000500702 00000 n +0000500892 00000 n +0000501080 00000 n +0000501143 00000 n +0000501207 00000 n +0000501270 00000 n +0000501333 00000 n +0000501396 00000 n +0000504835 00000 n +0000503503 00000 n +0000501617 00000 n +0000503819 00000 n +0000503882 00000 n +0000504072 00000 n +0000503648 00000 n +0000504135 00000 n +0000504198 00000 n +0000504261 00000 n +0000504325 00000 n +0000504388 00000 n +0000504452 00000 n +0000504516 00000 n +0000504580 00000 n +0000504643 00000 n +0000504707 00000 n +0000504771 00000 n +0000509776 00000 n +0000507445 00000 n +0000504979 00000 n +0000507569 00000 n +0000507884 00000 n +0000507947 00000 n +0000508009 00000 n +0000508071 00000 n +0000508134 00000 n +0000508197 00000 n +0000508260 00000 n +0000508323 00000 n +0000508386 00000 n +0000508449 00000 n +0000508512 00000 n +0000508576 00000 n +0000508640 00000 n +0000508704 00000 n +0000508767 00000 n +0000508830 00000 n +0000508893 00000 n +0000508956 00000 n +0000509019 00000 n +0000509081 00000 n +0000509145 00000 n +0000509208 00000 n +0000509271 00000 n +0000509334 00000 n +0000509398 00000 n +0000509461 00000 n +0000509524 00000 n +0000509587 00000 n +0000509650 00000 n +0000509714 00000 n +0000513880 00000 n +0000512369 00000 n +0000509892 00000 n +0000512493 00000 n +0000512556 00000 n +0000512618 00000 n +0000512681 00000 n +0000512744 00000 n +0000512807 00000 n +0000512870 00000 n +0000512933 00000 n +0000512997 00000 n +0000513060 00000 n +0000513123 00000 n +0000513186 00000 n +0000513249 00000 n +0000513312 00000 n +0000513375 00000 n +0000513438 00000 n +0000513502 00000 n +0000513565 00000 n +0000513628 00000 n +0000513691 00000 n +0000513754 00000 n +0000513817 00000 n +0000960078 00000 n +0000518343 00000 n +0000516522 00000 n +0000514010 00000 n +0000516646 00000 n +0000516709 00000 n +0000516771 00000 n +0000516834 00000 n +0000516897 00000 n +0000516960 00000 n +0000517023 00000 n +0000517086 00000 n +0000517149 00000 n +0000517212 00000 n +0000517275 00000 n +0000517338 00000 n +0000517401 00000 n +0000517464 00000 n +0000517527 00000 n +0000517591 00000 n +0000517652 00000 n +0000517715 00000 n +0000517778 00000 n +0000517841 00000 n +0000517904 00000 n +0000518218 00000 n +0000518281 00000 n +0000523320 00000 n +0000521054 00000 n +0000518459 00000 n +0000521178 00000 n +0000521241 00000 n +0000521555 00000 n +0000521618 00000 n +0000521681 00000 n +0000521744 00000 n +0000521807 00000 n +0000521870 00000 n +0000521933 00000 n +0000521996 00000 n +0000522059 00000 n +0000522123 00000 n +0000522312 00000 n +0000522375 00000 n +0000522438 00000 n +0000522502 00000 n +0000522566 00000 n +0000522629 00000 n +0000522692 00000 n +0000522755 00000 n +0000522818 00000 n +0000522881 00000 n +0000522943 00000 n +0000523006 00000 n +0000523069 00000 n +0000523132 00000 n +0000523195 00000 n +0000523258 00000 n +0000529533 00000 n +0000526703 00000 n +0000523464 00000 n +0000526827 00000 n +0000526890 00000 n +0000526953 00000 n +0000527016 00000 n +0000527079 00000 n +0000527142 00000 n +0000527206 00000 n +0000527269 00000 n +0000527333 00000 n +0000527396 00000 n +0000527459 00000 n +0000527522 00000 n +0000527585 00000 n +0000527648 00000 n +0000527711 00000 n +0000527774 00000 n +0000527837 00000 n +0000527900 00000 n +0000527963 00000 n +0000528026 00000 n +0000528089 00000 n +0000528152 00000 n +0000528215 00000 n +0000528278 00000 n +0000528341 00000 n +0000528404 00000 n +0000528467 00000 n +0000528530 00000 n +0000528593 00000 n +0000528656 00000 n +0000528719 00000 n +0000528782 00000 n +0000528845 00000 n +0000528909 00000 n +0000528972 00000 n +0000529033 00000 n +0000529217 00000 n +0000529280 00000 n +0000529344 00000 n +0000529406 00000 n +0000529469 00000 n +0000534083 00000 n +0000532148 00000 n +0000529691 00000 n +0000532449 00000 n +0000532574 00000 n +0000532637 00000 n +0000532698 00000 n +0000532761 00000 n +0000532950 00000 n +0000533012 00000 n +0000533075 00000 n +0000533138 00000 n +0000533201 00000 n +0000533265 00000 n +0000533454 00000 n +0000532293 00000 n +0000533517 00000 n +0000533580 00000 n +0000533643 00000 n +0000533706 00000 n +0000533769 00000 n +0000533832 00000 n +0000533895 00000 n +0000533958 00000 n +0000534020 00000 n +0000947774 00000 n +0000538478 00000 n +0000536532 00000 n +0000534199 00000 n +0000536656 00000 n +0000536719 00000 n +0000536845 00000 n +0000536908 00000 n +0000536971 00000 n +0000537035 00000 n +0000537098 00000 n +0000537161 00000 n +0000537224 00000 n +0000537287 00000 n +0000537350 00000 n +0000537413 00000 n +0000537476 00000 n +0000537663 00000 n +0000537726 00000 n +0000537789 00000 n +0000537852 00000 n +0000537915 00000 n +0000537978 00000 n +0000538041 00000 n +0000538103 00000 n +0000538166 00000 n +0000538352 00000 n +0000538415 00000 n +0000544191 00000 n +0000540972 00000 n +0000538580 00000 n +0000541096 00000 n +0000541159 00000 n +0000541221 00000 n +0000541284 00000 n +0000541347 00000 n +0000541410 00000 n +0000541472 00000 n +0000541535 00000 n +0000541598 00000 n +0000541661 00000 n +0000541724 00000 n +0000541786 00000 n +0000541849 00000 n +0000542038 00000 n +0000542101 00000 n +0000542165 00000 n +0000542229 00000 n +0000542418 00000 n +0000542481 00000 n +0000542545 00000 n +0000542609 00000 n +0000542672 00000 n +0000542736 00000 n +0000542799 00000 n +0000542862 00000 n +0000542926 00000 n +0000542989 00000 n +0000543053 00000 n +0000543116 00000 n +0000543180 00000 n +0000543244 00000 n +0000543308 00000 n +0000543371 00000 n +0000543434 00000 n +0000543498 00000 n +0000543561 00000 n +0000543624 00000 n +0000543688 00000 n +0000543752 00000 n +0000543815 00000 n +0000543876 00000 n +0000543939 00000 n +0000544003 00000 n +0000544065 00000 n +0000960203 00000 n +0000549289 00000 n +0000546262 00000 n +0000544321 00000 n +0000546386 00000 n +0000546638 00000 n +0000546701 00000 n +0000546764 00000 n +0000546827 00000 n +0000546890 00000 n +0000546952 00000 n +0000547015 00000 n +0000547078 00000 n +0000547141 00000 n +0000547205 00000 n +0000547268 00000 n +0000547331 00000 n +0000547394 00000 n +0000547457 00000 n +0000547521 00000 n +0000547584 00000 n +0000547772 00000 n +0000547835 00000 n +0000547899 00000 n +0000547963 00000 n +0000548027 00000 n +0000548091 00000 n +0000548154 00000 n +0000548218 00000 n +0000548281 00000 n +0000548345 00000 n +0000548408 00000 n +0000548598 00000 n +0000548783 00000 n +0000548846 00000 n +0000548909 00000 n +0000548972 00000 n +0000549036 00000 n +0000549099 00000 n +0000549162 00000 n +0000549226 00000 n +0000554432 00000 n +0000551725 00000 n +0000549405 00000 n +0000551849 00000 n +0000551912 00000 n +0000551974 00000 n +0000552037 00000 n +0000552101 00000 n +0000552164 00000 n +0000552226 00000 n +0000552288 00000 n +0000552478 00000 n +0000552540 00000 n +0000552604 00000 n +0000552668 00000 n +0000552730 00000 n +0000552918 00000 n +0000552981 00000 n +0000553045 00000 n +0000553109 00000 n +0000553173 00000 n +0000553361 00000 n +0000553424 00000 n +0000553488 00000 n +0000553612 00000 n +0000553675 00000 n +0000553801 00000 n +0000553863 00000 n +0000553989 00000 n +0000554052 00000 n +0000554115 00000 n +0000554179 00000 n +0000554242 00000 n +0000554304 00000 n +0000554368 00000 n +0000560141 00000 n +0000557231 00000 n +0000554562 00000 n +0000557355 00000 n +0000557418 00000 n +0000557482 00000 n +0000557545 00000 n +0000557608 00000 n +0000557672 00000 n +0000557735 00000 n +0000557798 00000 n +0000557862 00000 n +0000557926 00000 n +0000557990 00000 n +0000558054 00000 n +0000558118 00000 n +0000558181 00000 n +0000558245 00000 n +0000558307 00000 n +0000558370 00000 n +0000558433 00000 n +0000558497 00000 n +0000558561 00000 n +0000558624 00000 n +0000558687 00000 n +0000558751 00000 n +0000558815 00000 n +0000558939 00000 n +0000559002 00000 n +0000559065 00000 n +0000559128 00000 n +0000559254 00000 n +0000559317 00000 n +0000559381 00000 n +0000559507 00000 n +0000559570 00000 n +0000559634 00000 n +0000559698 00000 n +0000559762 00000 n +0000559825 00000 n +0000559889 00000 n +0000560015 00000 n +0000560078 00000 n +0000565057 00000 n +0000562659 00000 n +0000560243 00000 n +0000562783 00000 n +0000562909 00000 n +0000562972 00000 n +0000563035 00000 n +0000563161 00000 n +0000563223 00000 n +0000563287 00000 n +0000563351 00000 n +0000563541 00000 n +0000563604 00000 n +0000563668 00000 n +0000563731 00000 n +0000563795 00000 n +0000563858 00000 n +0000563922 00000 n +0000563986 00000 n +0000564176 00000 n +0000564239 00000 n +0000564302 00000 n +0000564491 00000 n +0000564554 00000 n +0000564617 00000 n +0000564679 00000 n +0000564742 00000 n +0000564805 00000 n +0000564868 00000 n +0000564931 00000 n +0000564994 00000 n +0000570317 00000 n +0000568299 00000 n +0000565187 00000 n +0000568423 00000 n +0000568486 00000 n +0000568549 00000 n +0000568612 00000 n +0000568675 00000 n +0000568738 00000 n +0000568801 00000 n +0000568862 00000 n +0000569051 00000 n +0000569114 00000 n +0000569177 00000 n +0000569241 00000 n +0000569304 00000 n +0000569367 00000 n +0000569556 00000 n +0000569619 00000 n +0000569683 00000 n +0000569746 00000 n +0000569809 00000 n +0000569873 00000 n +0000569937 00000 n +0000570000 00000 n +0000570064 00000 n +0000570127 00000 n +0000570190 00000 n +0000575319 00000 n +0000572732 00000 n +0000570433 00000 n +0000572856 00000 n +0000572919 00000 n +0000573044 00000 n +0000573107 00000 n +0000573170 00000 n +0000573233 00000 n +0000573296 00000 n +0000573360 00000 n +0000573423 00000 n +0000573486 00000 n +0000573550 00000 n +0000573614 00000 n +0000573677 00000 n +0000573740 00000 n +0000573803 00000 n +0000573867 00000 n +0000573931 00000 n +0000573995 00000 n +0000574059 00000 n +0000574122 00000 n +0000574185 00000 n +0000574248 00000 n +0000574311 00000 n +0000574375 00000 n +0000574438 00000 n +0000574501 00000 n +0000574564 00000 n +0000574753 00000 n +0000574816 00000 n +0000574879 00000 n +0000574942 00000 n +0000575005 00000 n +0000575067 00000 n +0000575130 00000 n +0000575193 00000 n +0000960328 00000 n +0000579195 00000 n +0000577436 00000 n +0000575435 00000 n +0000577560 00000 n +0000577686 00000 n +0000577749 00000 n +0000577812 00000 n +0000577875 00000 n +0000577938 00000 n +0000578001 00000 n +0000578064 00000 n +0000578127 00000 n +0000578190 00000 n +0000578253 00000 n +0000578316 00000 n +0000578378 00000 n +0000578441 00000 n +0000578504 00000 n +0000578567 00000 n +0000578880 00000 n +0000578943 00000 n +0000579132 00000 n +0000582466 00000 n +0000580771 00000 n +0000579311 00000 n +0000580895 00000 n +0000580958 00000 n +0000581147 00000 n +0000581210 00000 n +0000581273 00000 n +0000581336 00000 n +0000581399 00000 n +0000581462 00000 n +0000581525 00000 n +0000581587 00000 n +0000581650 00000 n +0000581713 00000 n +0000581776 00000 n +0000581839 00000 n +0000582027 00000 n +0000582090 00000 n +0000582153 00000 n +0000582215 00000 n +0000582278 00000 n +0000582341 00000 n +0000587996 00000 n +0000585812 00000 n +0000582582 00000 n +0000586612 00000 n +0000586675 00000 n +0000586800 00000 n +0000586863 00000 n +0000586926 00000 n +0000586989 00000 n +0000587052 00000 n +0000587115 00000 n +0000587305 00000 n +0000587367 00000 n +0000587430 00000 n +0000587493 00000 n +0000585984 00000 n +0000587556 00000 n +0000587619 00000 n +0000586137 00000 n +0000587682 00000 n +0000587745 00000 n +0000586296 00000 n +0000587807 00000 n +0000586455 00000 n +0000587870 00000 n +0000587933 00000 n +0000592189 00000 n +0000590682 00000 n +0000588126 00000 n +0000590806 00000 n +0000590869 00000 n +0000591058 00000 n +0000591121 00000 n +0000591184 00000 n +0000591247 00000 n +0000591310 00000 n +0000591373 00000 n +0000591436 00000 n +0000591499 00000 n +0000591562 00000 n +0000591625 00000 n +0000591688 00000 n +0000591750 00000 n +0000591814 00000 n +0000591877 00000 n +0000592065 00000 n +0000592128 00000 n +0000596911 00000 n +0000594768 00000 n +0000592347 00000 n +0000594892 00000 n +0000594955 00000 n +0000595018 00000 n +0000595082 00000 n +0000595145 00000 n +0000595208 00000 n +0000595271 00000 n +0000595334 00000 n +0000595397 00000 n +0000595460 00000 n +0000595523 00000 n +0000595586 00000 n +0000595649 00000 n +0000595712 00000 n +0000595775 00000 n +0000595837 00000 n +0000595900 00000 n +0000595964 00000 n +0000596028 00000 n +0000596091 00000 n +0000596280 00000 n +0000596342 00000 n +0000596406 00000 n +0000596470 00000 n +0000596533 00000 n +0000596596 00000 n +0000596659 00000 n +0000596722 00000 n +0000596785 00000 n +0000596848 00000 n +0000599971 00000 n +0000598597 00000 n +0000597069 00000 n +0000598896 00000 n +0000598959 00000 n +0000599021 00000 n +0000599084 00000 n +0000599148 00000 n +0000598742 00000 n +0000599337 00000 n +0000599400 00000 n +0000599464 00000 n +0000599527 00000 n +0000599590 00000 n +0000599653 00000 n +0000599716 00000 n +0000599780 00000 n +0000599844 00000 n +0000599907 00000 n +0000960453 00000 n +0000605354 00000 n +0000602735 00000 n +0000600143 00000 n +0000603201 00000 n +0000603390 00000 n +0000603453 00000 n +0000603517 00000 n +0000603831 00000 n +0000604019 00000 n +0000602889 00000 n +0000604082 00000 n +0000604145 00000 n +0000604209 00000 n +0000604273 00000 n +0000603044 00000 n +0000604337 00000 n +0000604401 00000 n +0000604465 00000 n +0000604529 00000 n +0000604593 00000 n +0000604656 00000 n +0000604720 00000 n +0000604783 00000 n +0000604846 00000 n +0000604910 00000 n +0000604974 00000 n +0000605164 00000 n +0000605227 00000 n +0000941574 00000 n +0000951534 00000 n +0000609949 00000 n +0000607211 00000 n +0000605498 00000 n +0000607870 00000 n +0000608121 00000 n +0000607374 00000 n +0000608309 00000 n +0000608372 00000 n +0000608436 00000 n +0000608500 00000 n +0000608626 00000 n +0000608689 00000 n +0000608752 00000 n +0000608815 00000 n +0000608879 00000 n +0000609004 00000 n +0000609067 00000 n +0000609130 00000 n +0000609193 00000 n +0000609257 00000 n +0000609320 00000 n +0000609382 00000 n +0000609445 00000 n +0000607538 00000 n +0000609634 00000 n +0000607709 00000 n +0000609759 00000 n +0000609822 00000 n +0000609886 00000 n +0000617471 00000 n +0000612271 00000 n +0000610107 00000 n +0000612736 00000 n +0000613051 00000 n +0000613114 00000 n +0000613178 00000 n +0000613241 00000 n +0000612425 00000 n +0000612581 00000 n +0000613304 00000 n +0000613367 00000 n +0000613430 00000 n +0000613493 00000 n +0000613555 00000 n +0000613617 00000 n +0000613680 00000 n +0000613744 00000 n +0000613808 00000 n +0000613872 00000 n +0000613936 00000 n +0000613999 00000 n +0000614062 00000 n +0000614125 00000 n +0000614188 00000 n +0000614251 00000 n +0000614310 00000 n +0000614373 00000 n +0000614436 00000 n +0000614500 00000 n +0000614564 00000 n +0000614627 00000 n +0000614690 00000 n +0000614753 00000 n +0000614816 00000 n +0000614879 00000 n +0000614942 00000 n +0000615005 00000 n +0000615068 00000 n +0000615132 00000 n +0000615195 00000 n +0000615258 00000 n +0000615321 00000 n +0000615384 00000 n +0000615447 00000 n +0000615510 00000 n +0000615573 00000 n +0000615636 00000 n +0000615700 00000 n +0000615763 00000 n +0000615827 00000 n +0000615891 00000 n +0000615955 00000 n +0000616019 00000 n +0000616083 00000 n +0000616147 00000 n +0000616211 00000 n +0000616275 00000 n +0000616339 00000 n +0000616401 00000 n +0000616464 00000 n +0000616527 00000 n +0000616590 00000 n +0000616654 00000 n +0000616717 00000 n +0000616779 00000 n +0000616841 00000 n +0000616904 00000 n +0000616967 00000 n +0000617030 00000 n +0000617093 00000 n +0000617156 00000 n +0000617219 00000 n +0000617282 00000 n +0000617345 00000 n +0000617408 00000 n 0000931519 00000 n -0000931583 00000 n -0000931647 00000 n -0000931711 00000 n -0000931774 00000 n -0000931837 00000 n -0000931900 00000 n -0000931962 00000 n -0000932026 00000 n -0000928586 00000 n -0000932089 00000 n -0000936601 00000 n -0000933836 00000 n -0000932282 00000 n -0000933960 00000 n -0000934084 00000 n -0000934207 00000 n -0000934270 00000 n -0000934332 00000 n -0000934396 00000 n -0000934460 00000 n -0000934524 00000 n -0000934650 00000 n -0000934712 00000 n -0000934901 00000 n -0000934964 00000 n -0000935027 00000 n -0000935278 00000 n -0000935341 00000 n -0000935403 00000 n -0000935465 00000 n -0000935529 00000 n -0000935655 00000 n -0000935718 00000 n -0000935907 00000 n -0000935970 00000 n -0000936033 00000 n -0000936096 00000 n -0000936160 00000 n -0000936286 00000 n -0000936411 00000 n -0000936474 00000 n -0000936537 00000 n -0000940755 00000 n -0000938349 00000 n -0000936731 00000 n -0000938669 00000 n -0000938732 00000 n -0000938794 00000 n -0000938858 00000 n -0000938921 00000 n -0000938985 00000 n -0000939238 00000 n -0000939301 00000 n -0000939364 00000 n -0000939428 00000 n -0000939617 00000 n -0000939680 00000 n -0000939743 00000 n -0000938494 00000 n -0000939806 00000 n -0000939932 00000 n -0000940059 00000 n -0000940122 00000 n -0000940185 00000 n -0000940249 00000 n -0000940313 00000 n -0000940376 00000 n -0000940502 00000 n -0000940629 00000 n -0000940692 00000 n -0000959366 00000 n -0000945563 00000 n +0000622268 00000 n +0000620040 00000 n +0000617615 00000 n +0000620493 00000 n +0000620556 00000 n +0000620620 00000 n +0000620684 00000 n +0000620748 00000 n +0000620812 00000 n +0000620876 00000 n +0000620939 00000 n +0000621002 00000 n +0000620194 00000 n +0000621190 00000 n +0000621253 00000 n +0000621316 00000 n +0000620341 00000 n +0000621379 00000 n +0000621443 00000 n +0000621507 00000 n +0000621571 00000 n +0000621887 00000 n +0000621950 00000 n +0000622014 00000 n +0000622078 00000 n +0000622142 00000 n +0000622204 00000 n +0000941954 00000 n +0000627384 00000 n +0000624989 00000 n +0000622426 00000 n +0000625298 00000 n +0000625613 00000 n +0000625676 00000 n +0000625134 00000 n +0000625865 00000 n +0000625928 00000 n +0000625992 00000 n +0000626056 00000 n +0000626120 00000 n +0000626183 00000 n +0000626245 00000 n +0000626308 00000 n +0000626372 00000 n +0000626436 00000 n +0000626626 00000 n +0000626689 00000 n +0000626752 00000 n +0000626816 00000 n +0000626880 00000 n +0000626943 00000 n +0000627006 00000 n +0000627069 00000 n +0000627132 00000 n +0000627195 00000 n +0000627258 00000 n +0000627321 00000 n +0000632356 00000 n +0000630587 00000 n +0000627542 00000 n +0000630711 00000 n +0000630774 00000 n +0000630837 00000 n +0000630898 00000 n +0000630961 00000 n +0000631023 00000 n +0000631087 00000 n +0000631151 00000 n +0000631215 00000 n +0000631278 00000 n +0000631342 00000 n +0000631406 00000 n +0000631470 00000 n +0000631660 00000 n +0000631723 00000 n +0000631786 00000 n +0000631849 00000 n +0000631912 00000 n +0000631976 00000 n +0000632039 00000 n +0000632102 00000 n +0000632165 00000 n +0000632229 00000 n +0000960578 00000 n +0000638327 00000 n +0000635741 00000 n +0000632500 00000 n +0000635865 00000 n +0000635991 00000 n +0000636054 00000 n +0000636118 00000 n +0000636181 00000 n +0000636245 00000 n +0000636306 00000 n +0000636370 00000 n +0000636433 00000 n +0000636495 00000 n +0000636558 00000 n +0000636621 00000 n +0000636685 00000 n +0000636748 00000 n +0000636811 00000 n +0000636874 00000 n +0000636937 00000 n +0000637000 00000 n +0000637189 00000 n +0000637252 00000 n +0000637315 00000 n +0000637378 00000 n +0000637441 00000 n +0000637504 00000 n +0000637567 00000 n +0000637630 00000 n +0000637694 00000 n +0000637757 00000 n +0000637820 00000 n +0000637883 00000 n +0000637946 00000 n +0000638010 00000 n +0000638074 00000 n +0000638138 00000 n +0000638201 00000 n +0000638264 00000 n +0000643087 00000 n +0000641259 00000 n +0000638471 00000 n +0000641383 00000 n +0000641446 00000 n +0000641509 00000 n +0000641572 00000 n +0000641634 00000 n +0000641696 00000 n +0000641759 00000 n +0000641822 00000 n +0000641886 00000 n +0000641950 00000 n +0000642013 00000 n +0000642076 00000 n +0000642140 00000 n +0000642203 00000 n +0000642266 00000 n +0000642329 00000 n +0000642393 00000 n +0000642457 00000 n +0000642521 00000 n +0000642584 00000 n +0000642647 00000 n +0000642710 00000 n +0000642774 00000 n +0000642837 00000 n +0000642900 00000 n +0000642961 00000 n +0000648400 00000 n +0000646314 00000 n +0000643203 00000 n +0000646438 00000 n +0000646564 00000 n +0000646627 00000 n +0000646690 00000 n +0000646753 00000 n +0000646817 00000 n +0000646881 00000 n +0000646944 00000 n +0000647134 00000 n +0000647197 00000 n +0000647261 00000 n +0000647324 00000 n +0000647387 00000 n +0000647450 00000 n +0000647513 00000 n +0000647576 00000 n +0000647640 00000 n +0000647704 00000 n +0000647767 00000 n +0000647831 00000 n +0000647895 00000 n +0000647959 00000 n +0000648022 00000 n +0000648085 00000 n +0000648147 00000 n +0000648211 00000 n +0000648274 00000 n +0000648337 00000 n +0000653743 00000 n +0000651401 00000 n +0000648544 00000 n +0000651525 00000 n +0000651588 00000 n +0000651651 00000 n +0000651714 00000 n +0000651777 00000 n +0000651840 00000 n +0000651903 00000 n +0000651967 00000 n +0000652030 00000 n +0000652094 00000 n +0000652158 00000 n +0000652222 00000 n +0000652285 00000 n +0000652348 00000 n +0000652411 00000 n +0000652475 00000 n +0000652538 00000 n +0000652601 00000 n +0000652664 00000 n +0000652727 00000 n +0000652791 00000 n +0000652854 00000 n +0000652917 00000 n +0000652980 00000 n +0000653043 00000 n +0000653106 00000 n +0000653169 00000 n +0000653232 00000 n +0000653296 00000 n +0000653360 00000 n +0000653424 00000 n +0000653488 00000 n +0000653551 00000 n +0000653615 00000 n +0000653679 00000 n +0000658272 00000 n +0000656758 00000 n +0000653845 00000 n +0000656882 00000 n +0000656945 00000 n +0000657007 00000 n +0000657070 00000 n +0000657133 00000 n +0000657196 00000 n +0000657260 00000 n +0000657323 00000 n +0000657511 00000 n +0000657574 00000 n +0000657638 00000 n +0000657701 00000 n +0000657764 00000 n +0000657827 00000 n +0000657891 00000 n +0000657955 00000 n +0000658018 00000 n +0000658082 00000 n +0000658145 00000 n +0000658208 00000 n +0000662005 00000 n +0000660616 00000 n +0000658402 00000 n +0000660740 00000 n +0000660865 00000 n +0000660928 00000 n +0000660991 00000 n +0000661053 00000 n +0000661116 00000 n +0000661180 00000 n +0000661244 00000 n +0000661307 00000 n +0000661371 00000 n +0000661561 00000 n +0000661624 00000 n +0000661688 00000 n +0000661751 00000 n +0000661814 00000 n +0000661878 00000 n +0000661942 00000 n +0000960703 00000 n +0000667025 00000 n +0000665516 00000 n +0000662149 00000 n +0000665640 00000 n +0000665703 00000 n +0000665765 00000 n +0000665828 00000 n +0000665953 00000 n +0000666016 00000 n +0000666079 00000 n +0000666142 00000 n +0000666205 00000 n +0000666268 00000 n +0000666331 00000 n +0000666394 00000 n +0000666583 00000 n +0000666646 00000 n +0000666709 00000 n +0000666772 00000 n +0000666836 00000 n +0000666899 00000 n +0000666962 00000 n +0000670521 00000 n +0000668690 00000 n +0000667141 00000 n +0000668814 00000 n +0000668877 00000 n +0000668940 00000 n +0000669004 00000 n +0000669068 00000 n +0000669131 00000 n +0000669195 00000 n +0000669259 00000 n +0000669322 00000 n +0000669385 00000 n +0000669447 00000 n +0000669509 00000 n +0000669572 00000 n +0000669636 00000 n +0000669700 00000 n +0000669763 00000 n +0000669826 00000 n +0000670015 00000 n +0000670078 00000 n +0000670141 00000 n +0000670204 00000 n +0000670268 00000 n +0000670331 00000 n +0000670395 00000 n +0000670458 00000 n +0000672667 00000 n +0000672417 00000 n +0000670665 00000 n +0000672541 00000 n +0000672604 00000 n +0000674705 00000 n +0000674518 00000 n +0000672769 00000 n +0000674642 00000 n +0000676493 00000 n +0000676306 00000 n +0000674793 00000 n +0000676430 00000 n +0000680273 00000 n +0000678775 00000 n +0000676581 00000 n +0000679390 00000 n +0000679705 00000 n +0000678938 00000 n +0000679085 00000 n +0000679238 00000 n +0000679894 00000 n +0000679957 00000 n +0000680020 00000 n +0000680083 00000 n +0000680146 00000 n +0000680209 00000 n +0000960828 00000 n +0000683192 00000 n +0000681867 00000 n +0000680389 00000 n +0000681991 00000 n +0000682054 00000 n +0000682117 00000 n +0000682307 00000 n +0000682370 00000 n +0000682433 00000 n +0000682497 00000 n +0000682561 00000 n +0000682749 00000 n +0000682812 00000 n +0000683002 00000 n +0000683065 00000 n +0000683128 00000 n +0000687979 00000 n +0000685776 00000 n +0000683294 00000 n +0000685900 00000 n +0000686215 00000 n +0000686278 00000 n +0000686465 00000 n +0000686528 00000 n +0000686591 00000 n +0000686654 00000 n +0000686716 00000 n +0000686779 00000 n +0000686843 00000 n +0000686907 00000 n +0000686970 00000 n +0000687033 00000 n +0000687096 00000 n +0000687159 00000 n +0000687223 00000 n +0000687287 00000 n +0000687476 00000 n +0000687539 00000 n +0000687602 00000 n +0000687665 00000 n +0000687727 00000 n +0000687790 00000 n +0000687853 00000 n +0000687916 00000 n +0000695624 00000 n +0000691788 00000 n +0000688081 00000 n +0000691912 00000 n +0000691975 00000 n +0000692038 00000 n +0000692101 00000 n +0000692164 00000 n +0000692227 00000 n +0000692290 00000 n +0000692353 00000 n +0000692416 00000 n +0000692479 00000 n +0000692542 00000 n +0000692605 00000 n +0000692668 00000 n +0000692731 00000 n +0000692793 00000 n +0000692856 00000 n +0000692919 00000 n +0000692982 00000 n +0000693045 00000 n +0000693108 00000 n +0000693171 00000 n +0000693234 00000 n +0000693297 00000 n +0000693358 00000 n +0000693421 00000 n +0000693484 00000 n +0000693547 00000 n +0000693609 00000 n +0000693671 00000 n +0000693734 00000 n +0000693797 00000 n +0000693860 00000 n +0000693923 00000 n +0000693986 00000 n +0000694049 00000 n +0000694112 00000 n +0000694175 00000 n +0000694238 00000 n +0000694301 00000 n +0000694364 00000 n +0000694427 00000 n +0000694490 00000 n +0000694553 00000 n +0000694616 00000 n +0000694680 00000 n +0000694744 00000 n +0000694807 00000 n +0000694870 00000 n +0000694933 00000 n +0000694996 00000 n +0000695059 00000 n +0000695122 00000 n +0000695185 00000 n +0000695248 00000 n +0000695311 00000 n +0000695374 00000 n +0000695436 00000 n +0000695499 00000 n +0000697122 00000 n +0000748883 00000 n +0000696977 00000 n +0000695712 00000 n +0000748126 00000 n +0000748252 00000 n +0000747968 00000 n +0000748314 00000 n +0000748378 00000 n +0000748505 00000 n +0000748693 00000 n +0000748756 00000 n +0000748820 00000 n +0000753870 00000 n +0000751222 00000 n +0000749036 00000 n +0000751346 00000 n +0000751471 00000 n +0000751660 00000 n +0000751723 00000 n +0000751786 00000 n +0000751849 00000 n +0000751912 00000 n +0000751976 00000 n +0000752040 00000 n +0000752103 00000 n +0000752166 00000 n +0000752229 00000 n +0000752292 00000 n +0000752355 00000 n +0000752418 00000 n +0000752481 00000 n +0000752544 00000 n +0000752607 00000 n +0000752670 00000 n +0000752859 00000 n +0000753045 00000 n +0000753108 00000 n +0000753172 00000 n +0000753235 00000 n +0000753299 00000 n +0000753362 00000 n +0000753426 00000 n +0000753489 00000 n +0000753553 00000 n +0000753616 00000 n +0000753680 00000 n +0000753743 00000 n +0000753807 00000 n +0000758187 00000 n +0000756864 00000 n +0000753972 00000 n +0000756988 00000 n +0000757114 00000 n +0000757177 00000 n +0000757241 00000 n +0000757304 00000 n +0000757368 00000 n +0000757431 00000 n +0000757620 00000 n +0000757683 00000 n +0000757746 00000 n +0000757809 00000 n +0000757872 00000 n +0000758060 00000 n +0000758123 00000 n +0000960953 00000 n +0000762635 00000 n +0000760687 00000 n +0000758289 00000 n +0000760811 00000 n +0000760874 00000 n +0000760937 00000 n +0000761000 00000 n +0000761063 00000 n +0000761126 00000 n +0000761190 00000 n +0000761254 00000 n +0000761316 00000 n +0000761379 00000 n +0000761442 00000 n +0000761505 00000 n +0000761568 00000 n +0000761631 00000 n +0000761694 00000 n +0000761757 00000 n +0000761945 00000 n +0000762008 00000 n +0000762071 00000 n +0000762134 00000 n +0000762323 00000 n +0000762510 00000 n +0000766306 00000 n +0000764797 00000 n +0000762737 00000 n +0000764921 00000 n +0000765047 00000 n +0000765236 00000 n +0000765425 00000 n +0000765614 00000 n +0000765677 00000 n +0000765865 00000 n +0000766054 00000 n +0000766243 00000 n +0000770538 00000 n +0000768963 00000 n +0000766408 00000 n +0000769087 00000 n +0000769150 00000 n +0000769214 00000 n +0000769277 00000 n +0000769340 00000 n +0000769529 00000 n +0000769592 00000 n +0000769655 00000 n +0000769719 00000 n +0000769782 00000 n +0000769972 00000 n +0000770035 00000 n +0000770224 00000 n +0000770287 00000 n +0000770350 00000 n +0000770413 00000 n +0000770476 00000 n +0000775186 00000 n +0000772982 00000 n +0000770654 00000 n +0000773106 00000 n +0000773169 00000 n +0000773231 00000 n +0000773419 00000 n +0000773482 00000 n +0000773546 00000 n +0000773735 00000 n +0000773924 00000 n +0000773987 00000 n +0000774051 00000 n +0000774240 00000 n +0000774303 00000 n +0000774366 00000 n +0000774429 00000 n +0000774492 00000 n +0000774555 00000 n +0000774618 00000 n +0000774681 00000 n +0000774744 00000 n +0000774807 00000 n +0000774870 00000 n +0000774934 00000 n +0000774997 00000 n +0000775060 00000 n +0000781076 00000 n +0000778363 00000 n +0000775288 00000 n +0000778487 00000 n +0000778550 00000 n +0000778674 00000 n +0000778737 00000 n +0000778800 00000 n +0000778863 00000 n +0000778926 00000 n +0000778990 00000 n +0000779054 00000 n +0000779118 00000 n +0000779181 00000 n +0000779244 00000 n +0000779308 00000 n +0000779371 00000 n +0000779434 00000 n +0000779497 00000 n +0000779560 00000 n +0000779624 00000 n +0000779687 00000 n +0000779750 00000 n +0000779812 00000 n +0000779875 00000 n +0000779938 00000 n +0000780001 00000 n +0000780065 00000 n +0000780128 00000 n +0000780191 00000 n +0000780255 00000 n +0000780318 00000 n +0000780381 00000 n +0000780445 00000 n +0000780508 00000 n +0000780571 00000 n +0000780635 00000 n +0000780698 00000 n +0000780761 00000 n +0000780824 00000 n +0000780887 00000 n +0000780950 00000 n +0000781014 00000 n +0000785127 00000 n +0000783685 00000 n +0000781206 00000 n +0000783809 00000 n +0000783872 00000 n +0000783934 00000 n +0000783997 00000 n +0000784061 00000 n +0000784124 00000 n +0000784187 00000 n +0000784373 00000 n +0000784561 00000 n +0000784750 00000 n +0000784813 00000 n +0000784876 00000 n +0000784939 00000 n +0000785001 00000 n +0000961078 00000 n +0000789307 00000 n +0000787989 00000 n +0000785243 00000 n +0000788113 00000 n +0000788238 00000 n +0000788301 00000 n +0000788363 00000 n +0000788426 00000 n +0000788489 00000 n +0000788678 00000 n +0000788741 00000 n +0000788804 00000 n +0000788867 00000 n +0000788930 00000 n +0000789118 00000 n +0000789181 00000 n +0000793740 00000 n +0000792236 00000 n +0000789423 00000 n +0000792545 00000 n +0000792671 00000 n +0000792733 00000 n +0000792796 00000 n +0000792859 00000 n +0000792922 00000 n +0000792985 00000 n +0000793048 00000 n +0000793111 00000 n +0000793298 00000 n +0000793360 00000 n +0000793423 00000 n +0000793487 00000 n +0000793551 00000 n +0000793614 00000 n +0000792381 00000 n +0000793677 00000 n +0000798114 00000 n +0000796666 00000 n +0000793856 00000 n +0000796980 00000 n +0000797043 00000 n +0000796811 00000 n +0000797232 00000 n +0000797294 00000 n +0000797357 00000 n +0000797546 00000 n +0000797609 00000 n +0000797672 00000 n +0000797735 00000 n +0000797799 00000 n +0000797862 00000 n +0000797925 00000 n +0000797988 00000 n +0000801941 00000 n +0000800642 00000 n +0000798230 00000 n +0000800935 00000 n +0000801061 00000 n +0000801124 00000 n +0000801187 00000 n +0000800787 00000 n +0000801250 00000 n +0000801313 00000 n +0000801375 00000 n +0000801438 00000 n +0000801501 00000 n +0000801564 00000 n +0000801752 00000 n +0000801815 00000 n +0000801878 00000 n +0000806588 00000 n +0000804573 00000 n +0000802057 00000 n +0000804697 00000 n +0000804886 00000 n +0000804949 00000 n +0000805012 00000 n +0000805075 00000 n +0000805137 00000 n +0000805200 00000 n +0000805263 00000 n +0000805327 00000 n +0000805390 00000 n +0000805453 00000 n +0000805516 00000 n +0000805578 00000 n +0000805641 00000 n +0000805703 00000 n +0000805767 00000 n +0000805830 00000 n +0000805892 00000 n +0000805955 00000 n +0000806018 00000 n +0000806082 00000 n +0000806145 00000 n +0000806208 00000 n +0000806271 00000 n +0000806335 00000 n +0000806398 00000 n +0000806461 00000 n +0000806524 00000 n +0000811796 00000 n +0000810028 00000 n +0000806718 00000 n +0000810152 00000 n +0000810215 00000 n +0000810277 00000 n +0000810340 00000 n +0000810404 00000 n +0000810468 00000 n +0000810532 00000 n +0000810595 00000 n +0000810658 00000 n +0000810721 00000 n +0000810785 00000 n +0000810848 00000 n +0000810912 00000 n +0000810975 00000 n +0000811038 00000 n +0000811101 00000 n +0000811164 00000 n +0000811228 00000 n +0000811290 00000 n +0000811354 00000 n +0000811417 00000 n +0000811480 00000 n +0000811544 00000 n +0000811607 00000 n +0000811670 00000 n +0000811733 00000 n +0000961203 00000 n +0000816146 00000 n +0000814314 00000 n +0000811912 00000 n +0000814438 00000 n +0000814501 00000 n +0000814564 00000 n +0000814627 00000 n +0000814690 00000 n +0000814754 00000 n +0000814816 00000 n +0000814879 00000 n +0000814943 00000 n +0000815007 00000 n +0000815070 00000 n +0000815133 00000 n +0000815197 00000 n +0000815260 00000 n +0000815324 00000 n +0000815388 00000 n +0000815451 00000 n +0000815514 00000 n +0000815577 00000 n +0000815641 00000 n +0000815704 00000 n +0000815768 00000 n +0000815831 00000 n +0000815894 00000 n +0000815957 00000 n +0000816020 00000 n +0000816083 00000 n +0000820959 00000 n +0000819084 00000 n +0000816290 00000 n +0000819382 00000 n +0000819445 00000 n +0000819508 00000 n +0000819572 00000 n +0000819634 00000 n +0000819697 00000 n +0000819229 00000 n +0000819761 00000 n +0000819824 00000 n +0000819886 00000 n +0000819949 00000 n +0000820012 00000 n +0000820075 00000 n +0000820137 00000 n +0000820200 00000 n +0000820263 00000 n +0000820326 00000 n +0000820389 00000 n +0000820452 00000 n +0000820515 00000 n +0000820578 00000 n +0000820641 00000 n +0000820705 00000 n +0000820769 00000 n +0000820832 00000 n +0000820896 00000 n +0000825628 00000 n +0000823939 00000 n +0000821103 00000 n +0000824242 00000 n +0000824305 00000 n +0000824368 00000 n +0000824430 00000 n +0000824494 00000 n +0000824557 00000 n +0000824620 00000 n +0000824683 00000 n +0000824746 00000 n +0000824809 00000 n +0000824872 00000 n +0000824936 00000 n +0000824999 00000 n +0000825062 00000 n +0000825125 00000 n +0000825188 00000 n +0000825251 00000 n +0000825313 00000 n +0000825376 00000 n +0000824084 00000 n +0000825439 00000 n +0000825502 00000 n +0000825565 00000 n +0000831038 00000 n +0000828842 00000 n +0000825730 00000 n +0000829140 00000 n +0000829203 00000 n +0000829266 00000 n +0000829327 00000 n +0000829390 00000 n +0000829453 00000 n +0000829516 00000 n +0000829579 00000 n +0000829642 00000 n +0000829706 00000 n +0000829769 00000 n +0000829832 00000 n +0000829896 00000 n +0000829959 00000 n +0000830023 00000 n +0000830087 00000 n +0000830150 00000 n +0000830213 00000 n +0000830277 00000 n +0000830341 00000 n +0000830405 00000 n +0000830468 00000 n +0000830531 00000 n +0000830595 00000 n +0000828987 00000 n +0000830658 00000 n +0000830721 00000 n +0000830784 00000 n +0000830847 00000 n +0000830910 00000 n +0000830974 00000 n +0000835352 00000 n +0000833652 00000 n +0000831182 00000 n +0000833960 00000 n +0000834023 00000 n +0000834086 00000 n +0000834150 00000 n +0000834213 00000 n +0000834276 00000 n +0000834339 00000 n +0000834403 00000 n +0000834466 00000 n +0000834530 00000 n +0000834594 00000 n +0000834658 00000 n +0000834722 00000 n +0000833797 00000 n +0000834785 00000 n +0000834848 00000 n +0000834912 00000 n +0000834974 00000 n +0000835037 00000 n +0000835100 00000 n +0000835164 00000 n +0000835227 00000 n +0000835290 00000 n +0000840103 00000 n +0000837967 00000 n +0000835496 00000 n +0000838270 00000 n +0000838333 00000 n +0000838396 00000 n +0000838459 00000 n +0000838522 00000 n +0000838585 00000 n +0000838112 00000 n +0000838649 00000 n +0000838712 00000 n +0000838774 00000 n +0000838837 00000 n +0000838900 00000 n +0000838963 00000 n +0000839026 00000 n +0000839090 00000 n +0000839153 00000 n +0000839216 00000 n +0000839280 00000 n +0000839344 00000 n +0000839407 00000 n +0000839471 00000 n +0000839535 00000 n +0000839598 00000 n +0000839661 00000 n +0000839724 00000 n +0000839788 00000 n +0000839851 00000 n +0000839914 00000 n +0000839978 00000 n +0000840040 00000 n +0000961328 00000 n +0000846313 00000 n +0000843032 00000 n +0000840261 00000 n +0000843330 00000 n +0000843393 00000 n +0000843457 00000 n +0000843521 00000 n +0000843585 00000 n +0000843648 00000 n +0000843712 00000 n +0000843776 00000 n +0000843840 00000 n +0000843903 00000 n +0000843967 00000 n +0000844031 00000 n +0000844094 00000 n +0000844157 00000 n +0000844221 00000 n +0000844284 00000 n +0000844347 00000 n +0000844409 00000 n +0000844472 00000 n +0000844535 00000 n +0000844598 00000 n +0000844661 00000 n +0000844725 00000 n +0000844789 00000 n +0000844853 00000 n +0000844917 00000 n +0000844981 00000 n +0000845045 00000 n +0000845108 00000 n +0000843177 00000 n +0000845171 00000 n +0000845235 00000 n +0000845299 00000 n +0000845361 00000 n +0000845424 00000 n +0000845488 00000 n +0000845552 00000 n +0000845615 00000 n +0000845678 00000 n +0000845742 00000 n +0000845805 00000 n +0000845869 00000 n +0000845932 00000 n +0000845995 00000 n +0000846058 00000 n +0000846121 00000 n +0000846185 00000 n +0000846249 00000 n +0000945576 00000 n +0000850925 00000 n +0000849225 00000 n +0000846429 00000 n +0000849349 00000 n +0000849412 00000 n +0000849474 00000 n +0000849537 00000 n +0000849600 00000 n +0000849664 00000 n +0000849726 00000 n +0000849790 00000 n +0000849853 00000 n +0000849917 00000 n +0000849979 00000 n +0000850042 00000 n +0000850106 00000 n +0000850169 00000 n +0000850232 00000 n +0000850296 00000 n +0000850359 00000 n +0000850422 00000 n +0000850485 00000 n +0000850548 00000 n +0000850612 00000 n +0000850674 00000 n +0000850736 00000 n +0000850799 00000 n +0000850862 00000 n +0000856045 00000 n +0000853662 00000 n +0000851069 00000 n +0000853959 00000 n +0000853807 00000 n +0000854022 00000 n +0000854085 00000 n +0000854148 00000 n +0000854210 00000 n +0000854274 00000 n +0000854337 00000 n +0000854400 00000 n +0000854464 00000 n +0000854527 00000 n +0000854590 00000 n +0000854654 00000 n +0000854717 00000 n +0000854780 00000 n +0000854844 00000 n +0000854907 00000 n +0000854971 00000 n +0000855030 00000 n +0000855094 00000 n +0000855157 00000 n +0000855221 00000 n +0000855284 00000 n +0000855348 00000 n +0000855411 00000 n +0000855475 00000 n +0000855539 00000 n +0000855603 00000 n +0000855667 00000 n +0000855730 00000 n +0000855793 00000 n +0000855856 00000 n +0000855919 00000 n +0000855982 00000 n +0000861159 00000 n +0000859332 00000 n +0000856161 00000 n +0000859456 00000 n +0000859519 00000 n +0000859581 00000 n +0000859644 00000 n +0000859707 00000 n +0000859771 00000 n +0000859834 00000 n +0000859897 00000 n +0000859960 00000 n +0000860022 00000 n +0000860085 00000 n +0000860148 00000 n +0000860211 00000 n +0000860274 00000 n +0000860337 00000 n +0000860401 00000 n +0000860464 00000 n +0000860527 00000 n +0000860589 00000 n +0000860653 00000 n +0000860716 00000 n +0000860780 00000 n +0000860843 00000 n +0000860906 00000 n +0000860970 00000 n +0000861033 00000 n +0000861096 00000 n +0000865637 00000 n +0000863486 00000 n +0000861289 00000 n +0000863610 00000 n +0000863673 00000 n +0000863736 00000 n +0000863799 00000 n +0000863861 00000 n +0000863924 00000 n +0000863987 00000 n +0000864050 00000 n +0000864113 00000 n +0000864176 00000 n +0000864240 00000 n +0000864303 00000 n +0000864367 00000 n +0000864431 00000 n +0000864494 00000 n +0000864557 00000 n +0000864621 00000 n +0000864684 00000 n +0000864748 00000 n +0000864812 00000 n +0000864876 00000 n +0000864939 00000 n +0000865002 00000 n +0000865065 00000 n +0000865126 00000 n +0000865190 00000 n +0000865254 00000 n +0000865318 00000 n +0000865381 00000 n +0000865445 00000 n +0000865509 00000 n +0000865573 00000 n +0000867489 00000 n +0000866858 00000 n +0000865753 00000 n +0000866982 00000 n +0000867045 00000 n +0000867109 00000 n +0000867172 00000 n +0000867235 00000 n +0000867298 00000 n +0000867362 00000 n +0000867425 00000 n +0000961453 00000 n +0000872548 00000 n +0000870128 00000 n +0000867577 00000 n +0000870595 00000 n +0000870784 00000 n +0000870973 00000 n +0000871036 00000 n +0000871100 00000 n +0000871164 00000 n +0000870282 00000 n +0000870438 00000 n +0000871227 00000 n +0000871290 00000 n +0000871353 00000 n +0000871417 00000 n +0000871480 00000 n +0000871670 00000 n +0000871733 00000 n +0000871796 00000 n +0000871859 00000 n +0000871922 00000 n +0000872110 00000 n +0000872173 00000 n +0000872236 00000 n +0000872298 00000 n +0000872361 00000 n +0000872423 00000 n +0000875991 00000 n +0000874544 00000 n +0000872692 00000 n +0000874668 00000 n +0000874731 00000 n +0000874857 00000 n +0000874920 00000 n +0000874984 00000 n +0000875172 00000 n +0000875235 00000 n +0000875298 00000 n +0000875361 00000 n +0000875425 00000 n +0000875488 00000 n +0000875551 00000 n +0000875614 00000 n +0000875801 00000 n +0000875864 00000 n +0000875928 00000 n +0000879152 00000 n +0000877762 00000 n +0000876121 00000 n +0000877886 00000 n +0000877949 00000 n +0000878012 00000 n +0000878076 00000 n +0000878140 00000 n +0000878204 00000 n +0000878267 00000 n +0000878330 00000 n +0000878519 00000 n +0000878582 00000 n +0000878646 00000 n +0000878709 00000 n +0000878772 00000 n +0000878836 00000 n +0000879025 00000 n +0000879088 00000 n +0000883110 00000 n +0000881535 00000 n +0000879296 00000 n +0000881659 00000 n +0000881722 00000 n +0000881785 00000 n +0000881849 00000 n +0000881910 00000 n +0000882036 00000 n +0000882099 00000 n +0000882162 00000 n +0000882226 00000 n +0000882290 00000 n +0000882416 00000 n +0000882479 00000 n +0000882541 00000 n +0000882605 00000 n +0000882669 00000 n +0000882732 00000 n +0000882795 00000 n +0000882984 00000 n +0000883047 00000 n +0000886494 00000 n +0000885119 00000 n +0000883226 00000 n +0000885418 00000 n +0000885481 00000 n +0000885544 00000 n +0000885608 00000 n +0000885798 00000 n +0000885861 00000 n +0000885924 00000 n +0000885988 00000 n +0000885264 00000 n +0000886178 00000 n +0000886241 00000 n +0000886304 00000 n +0000886367 00000 n +0000886430 00000 n +0000892805 00000 n +0000889716 00000 n +0000886624 00000 n +0000889840 00000 n +0000890029 00000 n +0000890092 00000 n +0000890279 00000 n +0000890342 00000 n +0000890406 00000 n +0000890469 00000 n +0000890533 00000 n +0000890597 00000 n +0000890660 00000 n +0000890724 00000 n +0000890787 00000 n +0000890850 00000 n +0000890913 00000 n +0000890976 00000 n +0000891038 00000 n +0000891100 00000 n +0000891164 00000 n +0000891228 00000 n +0000891292 00000 n +0000891356 00000 n +0000891420 00000 n +0000891484 00000 n +0000891547 00000 n +0000891610 00000 n +0000891673 00000 n +0000891736 00000 n +0000891800 00000 n +0000891863 00000 n +0000891926 00000 n +0000891989 00000 n +0000892053 00000 n +0000892238 00000 n +0000892301 00000 n +0000892364 00000 n +0000892428 00000 n +0000892490 00000 n +0000892554 00000 n +0000892618 00000 n +0000892681 00000 n +0000892743 00000 n +0000961578 00000 n +0000896623 00000 n +0000894544 00000 n +0000892949 00000 n +0000894668 00000 n +0000894982 00000 n +0000895044 00000 n +0000895107 00000 n +0000895170 00000 n +0000895233 00000 n +0000895296 00000 n +0000895359 00000 n +0000895422 00000 n +0000895485 00000 n +0000895548 00000 n +0000895611 00000 n +0000895674 00000 n +0000895738 00000 n +0000895802 00000 n +0000895864 00000 n +0000895927 00000 n +0000896117 00000 n +0000896180 00000 n +0000896243 00000 n +0000896306 00000 n +0000896369 00000 n +0000896433 00000 n +0000896497 00000 n +0000896561 00000 n +0000899317 00000 n +0000897481 00000 n +0000896753 00000 n +0000897605 00000 n +0000897668 00000 n +0000897730 00000 n +0000897793 00000 n +0000897857 00000 n +0000897919 00000 n +0000897982 00000 n +0000898046 00000 n +0000898110 00000 n +0000898173 00000 n +0000898236 00000 n +0000898300 00000 n +0000898364 00000 n +0000898428 00000 n +0000898490 00000 n +0000898553 00000 n +0000898617 00000 n +0000898681 00000 n +0000898745 00000 n +0000898808 00000 n +0000898871 00000 n +0000898935 00000 n +0000898999 00000 n +0000899063 00000 n +0000899126 00000 n +0000899189 00000 n +0000899253 00000 n +0000902117 00000 n +0000900216 00000 n +0000899405 00000 n +0000900340 00000 n +0000900403 00000 n +0000900466 00000 n +0000900530 00000 n +0000900592 00000 n +0000900655 00000 n +0000900719 00000 n +0000900783 00000 n +0000900847 00000 n +0000900910 00000 n +0000900973 00000 n +0000901037 00000 n +0000901101 00000 n +0000901163 00000 n +0000901226 00000 n +0000901290 00000 n +0000901354 00000 n +0000901418 00000 n +0000901481 00000 n +0000901544 00000 n +0000901608 00000 n +0000901672 00000 n +0000901736 00000 n +0000901799 00000 n +0000901862 00000 n +0000901926 00000 n +0000901990 00000 n +0000905087 00000 n +0000903058 00000 n +0000902205 00000 n +0000903182 00000 n +0000903308 00000 n +0000903371 00000 n +0000903434 00000 n +0000903498 00000 n +0000903562 00000 n +0000903626 00000 n +0000903689 00000 n +0000903752 00000 n +0000903816 00000 n +0000903880 00000 n +0000903944 00000 n +0000904006 00000 n +0000904069 00000 n +0000904133 00000 n +0000904197 00000 n +0000904261 00000 n +0000904324 00000 n +0000904387 00000 n +0000904451 00000 n +0000904515 00000 n +0000904578 00000 n +0000904641 00000 n +0000904705 00000 n +0000904769 00000 n +0000904833 00000 n +0000904896 00000 n +0000904959 00000 n +0000905023 00000 n +0000905656 00000 n +0000905469 00000 n +0000905189 00000 n +0000905593 00000 n +0000909816 00000 n +0000908498 00000 n +0000905730 00000 n +0000908622 00000 n +0000908811 00000 n +0000908874 00000 n +0000908936 00000 n +0000909124 00000 n +0000909187 00000 n +0000909250 00000 n +0000909438 00000 n +0000909501 00000 n +0000909564 00000 n +0000909627 00000 n +0000909690 00000 n +0000909753 00000 n +0000961703 00000 n +0000913960 00000 n +0000913081 00000 n +0000909918 00000 n +0000913205 00000 n +0000913268 00000 n +0000913331 00000 n +0000913520 00000 n +0000913582 00000 n +0000913771 00000 n +0000913834 00000 n +0000913897 00000 n +0000919717 00000 n +0000917329 00000 n +0000914062 00000 n +0000917453 00000 n +0000917516 00000 n +0000917578 00000 n +0000917767 00000 n +0000917830 00000 n +0000917893 00000 n +0000917956 00000 n +0000918019 00000 n +0000918082 00000 n +0000918145 00000 n +0000918208 00000 n +0000918271 00000 n +0000918333 00000 n +0000918396 00000 n +0000918459 00000 n +0000918522 00000 n +0000918585 00000 n +0000918648 00000 n +0000918711 00000 n +0000918774 00000 n +0000918837 00000 n +0000918899 00000 n +0000918962 00000 n +0000919025 00000 n +0000919088 00000 n +0000919150 00000 n +0000919213 00000 n +0000919276 00000 n +0000919339 00000 n +0000919402 00000 n +0000919465 00000 n +0000919528 00000 n +0000919591 00000 n +0000919654 00000 n +0000923632 00000 n +0000922564 00000 n +0000919819 00000 n +0000922688 00000 n +0000922751 00000 n +0000922814 00000 n +0000923003 00000 n +0000923066 00000 n +0000923129 00000 n +0000923317 00000 n +0000923380 00000 n +0000923569 00000 n +0000927575 00000 n +0000926318 00000 n +0000923734 00000 n +0000926442 00000 n +0000926505 00000 n +0000926693 00000 n +0000926882 00000 n +0000927071 00000 n +0000927134 00000 n +0000927198 00000 n +0000927386 00000 n +0000927449 00000 n +0000927512 00000 n +0000928860 00000 n +0000928547 00000 n +0000927677 00000 n +0000928671 00000 n +0000928734 00000 n +0000928797 00000 n +0000934615 00000 n +0000930904 00000 n +0000928948 00000 n +0000931204 00000 n +0000931393 00000 n +0000931643 00000 n +0000931706 00000 n +0000931769 00000 n +0000931833 00000 n +0000931897 00000 n +0000932022 00000 n +0000932148 00000 n +0000932211 00000 n +0000932274 00000 n +0000932338 00000 n +0000932402 00000 n +0000932464 00000 n +0000932589 00000 n +0000932652 00000 n +0000932715 00000 n +0000932778 00000 n +0000932841 00000 n +0000932905 00000 n +0000932968 00000 n +0000933031 00000 n +0000933094 00000 n +0000933157 00000 n +0000933220 00000 n +0000933283 00000 n +0000933346 00000 n +0000933410 00000 n +0000933474 00000 n +0000933537 00000 n +0000933600 00000 n +0000933663 00000 n +0000933726 00000 n +0000933790 00000 n +0000933854 00000 n +0000933918 00000 n +0000933982 00000 n +0000934046 00000 n +0000934110 00000 n +0000934174 00000 n +0000934237 00000 n +0000934300 00000 n +0000934363 00000 n +0000934425 00000 n +0000934489 00000 n +0000931049 00000 n +0000934552 00000 n +0000961828 00000 n +0000939064 00000 n +0000936299 00000 n +0000934745 00000 n +0000936423 00000 n +0000936547 00000 n +0000936670 00000 n +0000936733 00000 n +0000936795 00000 n +0000936859 00000 n +0000936923 00000 n +0000936987 00000 n +0000937113 00000 n +0000937175 00000 n +0000937364 00000 n +0000937427 00000 n +0000937490 00000 n +0000937741 00000 n +0000937804 00000 n +0000937866 00000 n +0000937928 00000 n +0000937992 00000 n +0000938118 00000 n +0000938181 00000 n +0000938370 00000 n +0000938433 00000 n +0000938496 00000 n +0000938559 00000 n +0000938623 00000 n +0000938749 00000 n +0000938874 00000 n +0000938937 00000 n +0000939000 00000 n +0000943218 00000 n +0000940812 00000 n +0000939194 00000 n +0000941132 00000 n +0000941195 00000 n +0000941257 00000 n +0000941321 00000 n +0000941384 00000 n +0000941448 00000 n +0000941701 00000 n +0000941764 00000 n +0000941827 00000 n +0000941891 00000 n +0000942080 00000 n +0000942143 00000 n +0000942206 00000 n +0000940957 00000 n +0000942269 00000 n +0000942395 00000 n 0000942522 00000 n -0000940885 00000 n -0000942988 00000 n -0000943239 00000 n -0000943302 00000 n -0000943364 00000 n -0000943428 00000 n -0000943487 00000 n -0000943547 00000 n -0000943607 00000 n -0000943671 00000 n -0000943798 00000 n -0000943861 00000 n -0000942676 00000 n -0000943924 00000 n -0000943988 00000 n -0000944051 00000 n -0000944114 00000 n -0000944177 00000 n -0000944240 00000 n -0000944304 00000 n -0000944366 00000 n -0000944428 00000 n -0000944491 00000 n -0000944555 00000 n -0000944619 00000 n -0000944682 00000 n -0000944745 00000 n -0000944808 00000 n -0000942831 00000 n -0000944872 00000 n -0000945124 00000 n -0000945185 00000 n -0000945248 00000 n -0000945437 00000 n -0000945500 00000 n -0000948377 00000 n -0000949389 00000 n -0000947054 00000 n -0000945679 00000 n -0000947178 00000 n -0000947241 00000 n -0000947367 00000 n -0000947430 00000 n -0000947493 00000 n -0000947557 00000 n -0000947681 00000 n -0000947807 00000 n -0000947869 00000 n -0000947932 00000 n -0000947995 00000 n -0000948059 00000 n -0000948123 00000 n -0000948187 00000 n -0000948251 00000 n -0000948504 00000 n -0000948567 00000 n -0000948630 00000 n -0000948757 00000 n -0000948820 00000 n -0000948883 00000 n -0000948947 00000 n -0000949199 00000 n -0000949262 00000 n -0000949325 00000 n -0000954022 00000 n -0000951555 00000 n -0000949491 00000 n -0000951679 00000 n -0000951742 00000 n -0000951805 00000 n -0000951932 00000 n -0000951995 00000 n -0000952058 00000 n -0000952121 00000 n -0000952184 00000 n -0000952248 00000 n -0000952312 00000 n -0000952376 00000 n -0000952439 00000 n -0000952503 00000 n -0000952567 00000 n -0000952631 00000 n -0000952695 00000 n -0000952820 00000 n -0000952947 00000 n -0000953010 00000 n -0000953073 00000 n -0000953137 00000 n -0000953264 00000 n -0000953327 00000 n -0000953390 00000 n -0000953516 00000 n -0000953643 00000 n -0000953706 00000 n -0000953769 00000 n -0000953832 00000 n -0000953895 00000 n -0000953958 00000 n -0000954200 00000 n -0000959473 00000 n -0000959599 00000 n -0000959725 00000 n -0000959851 00000 n -0000959950 00000 n -0000960042 00000 n -0000986922 00000 n -0001045205 00000 n -0001045246 00000 n -0001045286 00000 n -0001045518 00000 n +0000942585 00000 n +0000942648 00000 n +0000942712 00000 n +0000942776 00000 n +0000942839 00000 n +0000942965 00000 n +0000943092 00000 n +0000943155 00000 n +0000948026 00000 n +0000944985 00000 n +0000943348 00000 n +0000945451 00000 n +0000945702 00000 n +0000945765 00000 n +0000945827 00000 n +0000945891 00000 n +0000945950 00000 n +0000946010 00000 n +0000946070 00000 n +0000946134 00000 n +0000946261 00000 n +0000946324 00000 n +0000945139 00000 n +0000946387 00000 n +0000946451 00000 n +0000946514 00000 n +0000946577 00000 n +0000946640 00000 n +0000946703 00000 n +0000946767 00000 n +0000946829 00000 n +0000946891 00000 n +0000946954 00000 n +0000947018 00000 n +0000947082 00000 n +0000947145 00000 n +0000947208 00000 n +0000947271 00000 n +0000945294 00000 n +0000947335 00000 n +0000947587 00000 n +0000947648 00000 n +0000947711 00000 n +0000947900 00000 n +0000947963 00000 n +0000950839 00000 n +0000951851 00000 n +0000949516 00000 n +0000948142 00000 n +0000949640 00000 n +0000949703 00000 n +0000949829 00000 n +0000949892 00000 n +0000949955 00000 n +0000950019 00000 n +0000950143 00000 n +0000950269 00000 n +0000950331 00000 n +0000950394 00000 n +0000950457 00000 n +0000950521 00000 n +0000950585 00000 n +0000950649 00000 n +0000950713 00000 n +0000950966 00000 n +0000951029 00000 n +0000951092 00000 n +0000951219 00000 n +0000951282 00000 n +0000951345 00000 n +0000951409 00000 n +0000951661 00000 n +0000951724 00000 n +0000951787 00000 n +0000956484 00000 n +0000954017 00000 n +0000951953 00000 n +0000954141 00000 n +0000954204 00000 n +0000954267 00000 n +0000954394 00000 n +0000954457 00000 n +0000954520 00000 n +0000954583 00000 n +0000954646 00000 n +0000954710 00000 n +0000954774 00000 n +0000954838 00000 n +0000954901 00000 n +0000954965 00000 n +0000955029 00000 n +0000955093 00000 n +0000955157 00000 n +0000955282 00000 n +0000955409 00000 n +0000955472 00000 n +0000955535 00000 n +0000955599 00000 n +0000955726 00000 n +0000955789 00000 n +0000955852 00000 n +0000955978 00000 n +0000956105 00000 n +0000956168 00000 n +0000956231 00000 n +0000956294 00000 n +0000956357 00000 n +0000956420 00000 n +0000956662 00000 n +0000961953 00000 n +0000962079 00000 n +0000962205 00000 n +0000962331 00000 n +0000962430 00000 n +0000962522 00000 n +0000989403 00000 n +0001047993 00000 n +0001048034 00000 n +0001048074 00000 n +0001048306 00000 n trailer << -/Size 5191 -/Root 5189 0 R -/Info 5190 0 R +/Size 5214 +/Root 5212 0 R +/Info 5213 0 R >> startxref -1045674 +1048462 %%EOF diff --git a/docs/rel_notes.txt b/docs/rel_notes.txt index d8fd4dec5..6dc1eecdd 100644 --- a/docs/rel_notes.txt +++ b/docs/rel_notes.txt @@ -1,3 +1,542 @@ +*************************************** +*** The Bugzilla 2.22 Release Notes *** +*************************************** + +Table of Contents +***************** + +- Introduction +- Minimum Requirements + * Perl + * For MySQL Users + * For PostgreSQL Users + * Required Perl Modules + * Optional Perl Modules +- What's New? + * Complete PostgreSQL Support + * Parameters In Sections + * One Codebase, Multiple Databases + * UTF-8 for New Installations + * Admins Can Impersonate Users + * Bug Import and Moving Improvements + * Adding Individual Bugs to Saved Searches + * Attach URLs + * Optional "Strict Isolation" for Groups + * "editcomponents" Change + * "shutdownhtml" Change + * Miscellaneous Improvements + * All Changes +- Deprecated Features +- Outstanding Issues (<======================== IMPORTANT, PLEASE READ) +- How to Upgrade From An Older Bugzilla + * Steps for Upgrading +- Code Changes Which May Affect Customizations + * CGI.pl is Gone + * Other Changes +- Security Fixes In 2.22 Releases +- Release Notes for Previous Versions + +Introduction +************ +Bugzilla 2.22 is one of our most polished releases. We did a lot of +small cleanups to make Bugzilla easier to use and more useful in +many, many small ways, in addition to adding some major new features. + +This document contains the release notes for Bugzilla 2.22. +In this document, recently added, changed, and removed features +of Bugzilla are described. If you are upgrading from an older version, +you will definitely want to read these release notes in detail, so that +you have an idea of what has changed. + +If you are upgrading from a version before 2.20, also read the 2.20 +release notes (lower in this file) and any previous release notes. + +If you are installing a new Bugzilla, you will still want to look over +the release notes to see if there is any particularly important +information that affects your installation. + +If you would like to contribute code to Bugzilla, read our +Contributor's Guide at: + +http://www.bugzilla.org/docs/contributor.html + + +Minimum Requirements +******************** + +Perl +---- + + Perl v5.6.1 (Non-Windows platforms) + ActiveState Perl v5.8.1 (Windows only) + + Note that this is the last release of Bugzilla to support perl 5.6.x-- + future versions will require perl 5.8. + +For MySQL Users +--------------- + + MySQL v4.0.14 (changed from 2.20) + perl module: DBD::mysql v2.9003 (changed from 2.18) + +For PostgreSQL Users +-------------------- + + PostgreSQL 7.3.x + perl module: DBD::Pg 1.31 (1.41 required for PostgreSQL 8+) + + WARNING: DBD::Pg 1.43 has a bug which causes checksetup.pl to fail + and corrupt the database. If you are using DBD::Pg 1.43, either downgrade + to 1.41 or upgrade to 1.45 (1.42 and 1.44 seem broken somehow too). + + Note that this is the last release of Bugzilla to support PostgreSQL 7.x. + Future versions will require PostgreSQL 8.0 and DBD::Pg 1.45. + +Required Perl Modules +--------------------- + + AppConfig v1.52 + CGI v2.93 + Data::Dumper (any) + Date::Format v2.21 + DBI v1.38 + File::Spec v0.84 + File::Temp (any) + Template Toolkit v2.08 + Text::Wrap v2001.0131 + Mail::Mailer v1.67 (changed from 2.20) + MIME::Base64 v3.01 (new in 2.22) + MIME::Parser v5.406 (new in 2.22) + Storable (any) + + Note: The SMTP support in Mail::Mailer 1.73 (the most recent version) + is broken. The last known working version is 1.67. + +Optional Perl Modules +--------------------- + + Chart::Base v1.0 + GD v1.20 + GD::Graph (any) + GD::Text::Align (any) + Net::LDAP (any) + PatchReader v0.9.4 + XML::Twig (any) (new in 2.22) + Image::Magick (new in 2.22) + + +What's New? +*********** + +Complete PostgreSQL Support +--------------------------- +Bugzilla 2.20 contained experimental support for PostgreSQL. +In Bugzilla 2.22, PostgreSQL support is fully complete and stable. Using +PostgreSQL with Bugzilla should be as stable as using MySQL, and if +you experience any problems they will be taken as seriously as if you +were running MySQL. + +There are no known remaining major problems with Bugzilla on PostgreSQL. +All features of Bugzilla have been tested and work. + + +Parameters In Sections +---------------------- +Long-time users of Bugzilla know that over time the parameter list has +grown quite large. It has now been split into sections to make it easier +to use. + + +One Codebase, Multiple Databases +-------------------------------- +There is now limited support for having multiple projects use the +same Bugzilla codebase, but all have separate databases. + +The different projects can have their own templates and their own +bug database, but all use the same set of Bugzilla code in the same +directory. + +To enable this, set an environment variable called PROJECT when +calling the Bugzilla CGIs. Then for each project, you can have +a localconfig.PROJECT (where "PROJECT" is the value of the PROJECT +environment variable) file for the database parameters, and a +template/en/PROJECT directory (where "PROJECT" is the value of the +PROJECT environment variable) + +This feature isn't documented yet, but we hope to have documentation for +it soon. + + +UTF-8 For New Installations +--------------------------- +If this is the first time you're installing Bugzilla, it will now use +UTF-8 encoding for all pages, automatically. It will also send emails +in UTF-8. This eliminates most of the internationalization problems +users have experienced, as one Bugzilla page may now contain any number +of languages simultaneously. + +If you are upgrading and you want to use UTF-8, just turn on the "utf8" +Parameter. However, realize that if you have non-UTF-8 data in your +Bugzilla, it will appear unreadable. (If you just have ASCII in your +database, you're safe to turn on the "utf8" parameter, definitely.) + + +Admins Can Impersonate Users +---------------------------- +User impersonation (think of the su/sudo command on Unix) allows you +to view pages and perform actions as if you are logged in as someone else, +without having to know their password. + +A user in the new "bz_sudoers" group has the option of "becoming" +any user in Bugzilla. Once they "become" that user, they *are* that user +for the rest of the session, until they decide to switch back to being +themselves. + +However, they cannot "become" any user in the "bz_sudo_protect" group. +This group includes everybody in the "admin" and "bz_sudoers" groups by +default. + +Any time a user is impersonated, they will get an email notifying them +who has impersonated them. + + +Bug Import and Moving Improvements +---------------------------------- +The XML Import script, importxml.pl, has been completely re-written. + +It now: + + * Correctly imports the "priority" field + * Understands when the "Reporter" or "CC List" security boxes + are unchecked on the bug. + * Places bugs in the appropriate groups + * Allows attachments to be imported + * Is much more forgiving about small problems in the XML + + +Adding Individual Bugs to Saved Searches +---------------------------------------- +Users now have the option of adding an individual bug to any +particular Saved Search. If you don't like having the entry box in +your footer for this feature, you can disable it in your Preferences. + + +Attach URLs +----------- +Instead of attaching a file, you can now also attach a URL to a bug. +This will show up just like an attachment on show_bug.cgi, but when +you click on it, it will take you to the URL. + +To enable this, turn on the "allow_attach_url" parameter. + + +Optional "Strict Isolation" for Groups +-------------------------------------- +If you turn on the "strict_isolation" parameter in Bugzilla, you +will *not* be able to add any user to the CC field (or set them +as an Asignee or QA Contact) unless that user could normally see +the bug. That is, you will no longer be able to "accidentally" +(or intentionally) give somebody access to a bug that they +otherwise couldn't see. + + +"editcomponents" Change +----------------------- +Previously, all users who had "editcomponents" could see every Product, +using the editcomponents.cgi script. Now, users with "editcomponents" +can only see Products that they normally have access to. + +This restriction also affects editversions.cgi, editmilestones.cgi and +editproducts.cgi. + + +"shutdownhtml" Change +--------------------- +All of Bugzilla is now affected by the "shutdownhtml" parameter, +including command-line scripts. checksetup.pl is exempt. Many scripts +(such as collectstats.pl and whine.pl) will just exit silently when +"shutdownhtml" is turned on. + + +Miscellaneous Improvements +-------------------------- + +- Added a frequently-requested user preference for whether or not to go + to the next bug in your list after submitting changes to a bug. + +- The ability to do relative date searches (like "1d" for "1 day" or "1w" + for "1 week") by hour now, in addition to days and other units of time. + +- "Alias" added to the New Bug form, for users with editbugs. + +- Users can now actually see the descriptions of flags that you enter + in editflagtypes.cgi. The description will appear as a tooltip + when a user places their mouse over the flag name on show_bug.cgi. + +- Bugzilla will optionally convert BMP attachments into PNGs for you. + See the "convert_uncompressed_images" in the "Attachments" section + of the Parameters. + +- You can now edit the Status Whiteboard when you are changing multiple + bugs at once. + +- The way that groups work in the database has changed, and large-scale + Bugzilla use with many concurrent users should be much faster, as a + result. (Technical Details: The need for Bugzilla to "derive groups" + has gone away pretty much entirely.) + +- Performance improvements on searching attachment information that's not + the actual content of the attachment (such as searching the Attachment + Description or the Attachment MIME Type) + +- You can now specify multiple email addresses, comma-separated, when + setting the requestee of a flag, and it will set the flag once for each + of those email addresses + +- "Bug Creation Time" is now searchable in the Boolean Charts. + +- When you mark a comment on a bug as private, the background color + of the comment will change immediately. However, in order for + Bugzilla to register that the comment is now private, you still + have to "submit" the changes. + +- Emails sent from Bugzilla now have "X-Bugzilla-Keywords" and + "X-Bugzilla-Severity" by default, containing the information + from the related Bugzilla fields. + +- You can now change the assignee and QA contact on multiple bugs at + once even when those bugs are in different products. + +- contrib/merge-users.pl allows you to merge two user accounts. This is + particulary useful when a user opened several accounts and only one should + be kept. It also lets you merge a deleted account with an existing one. + +All Changes +----------- + +If you'd like to see all the changes between Bugzilla 2.20 and Bugzilla +2.22, see: + +http://tinyurl.com/9p2tm + + +Deprecated Features +******************* + +- This is the last release of Bugzilla to support perl 5.6.x. All future + versions of Bugzilla will require at least perl 5.8. + + This is the last release of Bugzilla to support PostgreSQL 7.x. Future + releases using PostgreSQL will require PostgreSQL 8.0 and DBD::Pg 1.45. + +Outstanding Issues +****************** + +- bug 305836: PostgreSQL users: do not use DBD::Pg version 1.43 with + Bugzilla. It has a bug which can corrupt the database. Version 1.41 + is fine. Version 1.45 or higher is fine too. + +- (No Bug Number) VERY IMPORTANT: If you have customized the values in + your Status/Resolution field, you must edit checksetup.pl BEFORE YOU + RUN IT. Find the line that starts like this: + + bug_status => ["UNCONFIRMED", + + That's where you set the values for the Status field. + + resolution => ["","FIXED", + + And that's where you set values for the Resolution field. + + Those are both near line 1826 in checksetup.pl. + + If you forget to do this, you will have to manually edit the "bug_status" + and "resolution" tables in the database to contain the correct values. + +- bug 276230: The support for restricting access to particular Categories of + New Charts is not complete. You should treat the 'chartgroup' Param as the + only access mechanism available. However, additionally, charts migrated from + Old Charts will be restricted to the groups that are marked MANDATORY for + the corresponding Product. There is currently no way to change this + restriction, and the groupings will not be updated if the group configuration + for the Product changes. + +- bug 37765: If you use the "sendmail" support of Bugzilla, + and you use an MTA which is *not* Sendmail (such as Postfix, Exim, etc.) + make sure the "sendmailnow" parameter is ON or Bugzilla will not send + e-mail correctly. + +- bug 69621: If you rename or remove a keyword that is in use on bugs, you will + need to rebuild the "keyword cache" by running sanitycheck.cgi and choosing + the option to rebuild the cache when it asks. Otherwise keywords may not show + up properly in search results. + +- (No Bug Number) If you have a lot of non-ASCII data in your Bugzilla (for + example, if you use a translation of Bugzilla), don't enable the XS::Stash + option when you install the Template Toolkit, or your Bugzilla installation + may become slow. This problem is fixed in a not-yet-released version of the + Template Toolkit (after 2.14). + +- Bug 99215: Flags are not protected by "mid-air collision" detection. + Nor are any attachment changes. + +- Bug 89822: When changing multiple bugs at the same time, there is no + "mid-air collision" protection. + +- bug 322955: The email interface (bug_mail.pl) in the contrib/ directory + has not been maintained (as it has no maintainer), and does not work + properly. We hope to have this fixed in our next major release of + Bugzilla; however, any help or contributions in this area are very + welcome. + + +How to Upgrade From An Older Bugzilla +************************************* + +NOTE: Upgrading from a large installation (over 10,000 bugs) running 2.18 + or before may take a significant amount of time. checksetup will + try to let you know how long it will take, but expect downtime + of an hour or more if you have many bugs, many attachments, + or many users. + +Steps for Upgrading +------------------- + +1) Read these entire Release Notes, particularly the "Outstanding Issues" + and "Security Fixes" sections. + +2) View the Sanity Check (sanitycheck.cgi) page on your installation before + upgrading. Attempt to fix all warnings that the page produces before + you go any further, or you may experience problems during your upgrade. + +3) Make a backup of the Bugzilla database before you upgrade, perhaps + by using mysqldump. THIS IS VERY IMPORTANT. If anything goes wrong + during the upgrade, your installation can be corrupted beyond + recovery. Having a backup keeps you safe. + + Example: + + mysqldump -u root -p bugs > bugs-db.sql + +4) Replace the files in your installation with the new version of Bugzilla, + or you can try to use CVS to upgrade. The bugzilla.org website has + instructions on how to do the actual installation. + + You can also use a brand-new Bugzilla directory, as long as you + copy over the old data/ directory and the "localconfig" file to the + new installation. + +5) Run checksetup.pl after you install the new version. + +7) View the Sanity Check page again after you run checksetup.pl. + +8) It is recommended that, if possible, you fix any problems you find + immediately. Failure to do this may mean that Bugzilla will not work + correctly. Be aware that if the sanity check page contains more errors after + an upgrade, it doesn't necessarily mean there are more errors in your + database, as additional tests are added to the sanity check over time, and + it is possible that those errors weren't being checked for in the old + version. + +9) This version of Bugzilla contains improvements to the email that + Bugzilla sends when a bug is changed. The template for that email + is contained in the "newchangedmail" parameter. If you would like + to take advantage of the email enhancements in this version of + Bugzilla, reset that parameter to its default. (You can customize + it after that again, if you want.) + + +Code Changes Which May Affect Customizations +******************************************** + +CGI.pl is Gone +-------------- +The CGI.pl file, which used to contain many global functions, and which +also contained initialization code for every CGI, is gone. The functions +have been moved to various places and sometimes renamed. + +The initialization code that used to happen inside CGI.pl is now inside +of Bugzilla.pm. All CGIs must "use Bugzilla" in one way or another. (Some +CGIs "use Bugzilla" by doing "require globals.pl".) + + +Deriving Groups No Longer Happens +--------------------------------- +Bugzilla no longer needs to "derive groups" in advance. That is, previously +Bugzilla used to flatten the group heirarchy into the user_group_map +table. (That is, show that a user was in every group they were in, +even if they were only in that group because they belonged to *another* +group.) Now the table only contains groups that the user is in directly, +and groups that they are in because of a regexp. + +Instead, The Bugzilla::User->group function determines the groups a user +is in when called. + +We did this because the group derivation was causing a lot of complexity +in the code, and also deriving the groups was a slow process that +frequently had to happen inside of a database lock while sending mail +or viewing a bug list. + +See https://bugzilla.mozilla.org/show_bug.cgi?id=304583 for details. + + +Other Changes +------------- + +- The move.pl script's functionality has been merged into process_bug.cgi. + +- $::template and $::vars are gone from globals.pl. Instead of $::template, + use Bugzilla->template. Every script creates the $vars variable by itself + instead of using a global $::vars variable. + +- $::userid is gone. Instead use Bugzilla->user->id. + +- QuickSearch is now in perl instead of in JavaScript. The code is in + Bugzilla/Search/QuickSearch.pm. This makes it much easier to customize, + and it also fixes some long-standing issues that QuickSearch had. + +- Attachment data is now in the attach_data table. Other information + about attachments is still in the "attachments" table. + +- Much like the 2.20 release, many functions have been removed from + globals.pl and CGI.pl. They were moved elsewhere and renamed. + Search RESOLVED bugs in bugzilla.mozilla.org for the old + version of the function name, and that will usually show you + the bug where we moved the function, allowing you to find out + what the new name and location is. + +- This is the last release that contains the deprecated + SendSQL, SqlQuote, FetchSqlData, MoreSqlData, and FetchOneColumn + functions. Instead, you should use DBI functions. For a very brief + example, see: + + http://www.bugzilla.org/docs/developer.html#sql-sendreceive + + +Security Fixes in 2.22 Releases +******************************* + +A long-standing, well-known security issue is finally resolved in Bugzilla +2.22: Previously, the "Session ID" of each user could be easily guessed, +given enough time. This could have allowed an attacker to take over a +user's account, in certain circumstances. Now, the "Session ID" is totally +random, resolving this issue. See bug 119524 in bugzilla.mozilla.org for +details. + +If you are very concerned about the security of your Bugzilla installation, +it would be a very good idea to run the following command on your +database immediately after upgrading: + +TRUNCATE TABLE logincookies; + +This is actually safe to do at any time--it just forces a logout of +every single user, even those with saved sessions. (It invalidates +every login cookie Bugzilla has ever given out.) + + +Release Notes For Previous Versions +************************************ + *************************************** *** The Bugzilla 2.20 Release Notes *** *************************************** @@ -689,7 +1228,7 @@ extremely specific information leak. To see details on the vulnerabilities that were fixed, see the Security Advisory at: -http://www.bugzilla.org/security/2.18.4/ +http://www.bugzilla.org/security/2.16.10/ Release Notes for Previous Versions diff --git a/docs/txt/Bugzilla-Guide.txt b/docs/txt/Bugzilla-Guide.txt index 59df62005..3837995ef 100644 --- a/docs/txt/Bugzilla-Guide.txt +++ b/docs/txt/Bugzilla-Guide.txt @@ -1,5 +1,5 @@ -The Bugzilla Guide - 2.20.2 Release +The Bugzilla Guide - 2.22 Release The Bugzilla Team @@ -130,7 +130,6 @@ The Bugzilla Team 4-1. Assigning the MySQL "root" User a Password 4-2. Disabling the MySQL "anonymous" User 4-3. Disabling Networking in MySQL - 4-4. Forcing Bugzilla to output a charset B-1. Examples of urlbase/cookiepath pairs for sharing login cookies B-2. Examples of urlbase/cookiepath pairs to restrict the login cookie _________________________________________________________________ @@ -176,8 +175,8 @@ Chapter 1. About This Guide 1.3. New Versions - This is the 2.20.2 version of The Bugzilla Guide. It is so named to match - the current version of Bugzilla. + This is the 2.22 version of The Bugzilla Guide. It is so named to match the + current version of Bugzilla. The latest version of this guide can always be found at http://www.bugzilla.org, or checked out via CVS by following the Mozilla CVS @@ -336,7 +335,7 @@ Chapter 2. Installing Bugzilla Installed Version Test: mysql -V If you don't have it and your OS doesn't provide official packages, visit - http://www.mysql.com. You need MySQL version 3.23.41 or higher. + http://www.mysql.com. You need MySQL version 4.0.14 or higher. Note Many of the binary versions of MySQL store their data files in /var. On some Unix systems, this is part of a smaller root partition, and may not @@ -456,8 +455,10 @@ Chapter 2. Installing Bugzilla 9. File::Temp (any) 10. Template (2.08) 11. Text::Wrap (2001.0131) - 12. Mail::Mailer (1.65) - 13. Storable (any) + 12. Mail::Mailer (1.67) + 13. MIME::Base64 (3.01) + 14. MIME::Parser (5.406) + 15. Storable (any) Optional Perl modules: @@ -467,7 +468,7 @@ Chapter 2. Installing Bugzilla 4. GD::Text::Align (any) for bug charting 5. XML::Parser (any) for the XML interface 6. PatchReader (0.9.4) for pretty HTML view of patches - 7. MIME::Parser (any) for the optional email interface + 7. Image::Magick (any) for converting BMP image attachments to PNG _________________________________________________________________ 2.1.5.1. DBD::mysql @@ -533,13 +534,7 @@ Chapter 2. Installing Bugzilla on your machine. _________________________________________________________________ -2.1.5.8. MIME::Parser (any) - - The MIME::Parser module is only required if you want to use the email - interface located in the contrib directory. - _________________________________________________________________ - -2.1.5.9. PatchReader (0.9.4) +2.1.5.8. PatchReader (0.9.4) The PatchReader module is only required if you want to use Patch Viewer, a Bugzilla feature to show code patches in your web browser in a more readable @@ -1804,6 +1799,32 @@ Chapter 3. Administering Bugzilla privilege to edit bugs in these products. _________________________________________________________________ +3.2.2.3. Impersonating Users + + There may be times when an administrator would like to do something as + another user. The sudo feature may be used to do this. + + Note To use the sudo feature, you must be in the bz_sudoers group. By + default, all administrators are in this group. + + If you have access to this feature, you may start a session by going to the + Edit Users page, Searching for a user and clicking on their login. You + should see a link below their login name titled "Impersonate this user". + Click on the link. This will take you to a page where you will see a + description of the feature and instructions for using it. After reading the + text, simply enter the login of the user you would like to impersonate, + provide a short message explaining why you are doing this, and press the + button. + + As long as you are using this feature, everything you do will be done as if + you were logged in as the user you are impersonating. + + Warning The user you are impersonating will not be told about what you are + doing. If you do anything that results in mail being sent, that mail will + appear to be from the user you are impersonating. You should be extremely + careful while using this feature. + _________________________________________________________________ + 3.3. Classifications Classifications tend to be used in order to group several related products @@ -2708,7 +2729,6 @@ skip-networking * In the main Bugzilla directory, you should: + Block: *.pl, *localconfig* - + But allow: localconfig.js, localconfig.rdf * In data: + Block everything + But allow: duplicates.rdf @@ -2760,20 +2780,17 @@ skip-networking 4.4.1. Prevent users injecting malicious Javascript - It is possible for a Bugzilla user to take advantage of character set - encoding ambiguities to inject HTML into Bugzilla comments. This could - include malicious scripts. Due to internationalization concerns, we are - unable to incorporate by default the code changes suggested by the CERT - advisory on this issue. Making the change in Example 4-4 will prevent this - problem. - - Example 4-4. Forcing Bugzilla to output a charset + If you installed Bugzilla version 2.22 or later from scratch, then the utf8 + parameter is switched on by default. This makes Bugzilla explicitly set the + character encoding, following a CERT advisory recommending exactly this. The + following therefore does not apply to you; just keep utf8 turned on. - Locate the following line in Bugzilla/CGI.pm: - $self->charset(''); - - and change it to: -$self->charset('UTF-8'); + If you've upgraded from an older version, then it may be possible for a + Bugzilla user to take advantage of character set encoding ambiguities to + inject HTML into Bugzilla comments. This could include malicious scripts. + This is because due to internationalization concerns, we are unable to turn + the utf8 parameter on by default for upgraded installations. Turning it on + manually will prevent this problem. _________________________________________________________________ Chapter 5. Customising Bugzilla @@ -2899,7 +2916,7 @@ Chapter 5. Customising Bugzilla (such as simple or complex) in the URL. To see if a CGI supports multiple output formats and types, grep the CGI for - "GetFormat". If it's not present, adding multiple format/type support isn't + "get_format". If it's not present, adding multiple format/type support isn't too hard - see how it's done in other CGIs, e.g. config.cgi. To make a new format template for a CGI which supports this, open a current @@ -3613,7 +3630,7 @@ Chapter 6. Using Bugzilla If you want to use Bugzilla, first you need to create an account. Consult with the administrator responsible for your installation of Bugzilla for the URL you should use to access it. If you're test-driving Bugzilla, use this - URL: http://landfill.bugzilla.org/bugzilla-2.20-branch/. + URL: http://landfill.bugzilla.org/bugzilla-2.22-branch/. 1. Click the "Open a new Bugzilla account" link, enter your email address and, optionally, your name in the spaces provided, then click "Create @@ -3732,7 +3749,7 @@ Chapter 6. Using Bugzilla The Bugzilla Search page is the interface where you can find any bug report, comment, or patch currently in the Bugzilla system. You can play with it - here: http://landfill.bugzilla.org/bugzilla-2.20-branch/query.cgi. + here: http://landfill.bugzilla.org/bugzilla-2.22-branch/query.cgi. The Search page has controls for selecting different possible values for all of the fields in a bug, as described above. For some fields, multiple values @@ -4025,9 +4042,10 @@ Chapter 6. Using Bugzilla indicate what is to be searched. For example, typing "foo|bar" into Quicksearch would search for "foo" or "bar" in the summary and status whiteboard of a bug; adding ":BazProduct" would search only in that product. + You can use it to find a bug by its number or its alias, too. - You'll find the Quicksearch box on Bugzilla's front page, along with a Help - link which details how to use it. + You'll find the Quicksearch box in Bugzilla's footer area. On Bugzilla's + front page, there is an additional Help link which details how to use it. _________________________________________________________________ 6.9.3. Comments @@ -5375,8 +5393,8 @@ password=mypassword Try this link to view current bugs or requests for enhancement for Bugzilla. - You can view bugs marked for 2.20.3 release here. This list includes bugs - for the 2.20.3 release that have already been fixed and checked into CVS. + You can view bugs marked for 2.22.1 release here. This list includes bugs + for the 2.22.1 release that have already been fixed and checked into CVS. Please consult the Bugzilla Project Page for details on how to check current sources out of CVS so you can have these bug fixes early! @@ -5829,6 +5847,21 @@ D.2. Download Locations CPAN Download Page: http://search.cpan.org/dist/GD/ PPM Download Link: http://landfill.bugzilla.org/ppm/GD.ppd Documentation: http://stein.cshl.org/WWW/software/GD/ + + MIME::Base64: + + CPAN Download Page: http://search.cpan.org/dist/MIME-Base64/ + PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/8xx-b + uilds-only/Windows/MIME-Base64-2.20.zip + Documentation: http://search.cpan.org/dist/MIME-Base64/Base64.pm + + MIME::Parser (part of MIME-tools): + + CPAN Download Page: http://search.cpan.org/dist/MIME-tools/ + PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/8xx-b + uilds-only/Windows/MIME-tools-5.411a.zip + Documentation: http://search.cpan.org/dist/MIME-tools/lib/MIME/Parse + r.pm _________________________________________________________________ D.3. Optional Modules @@ -5852,14 +5885,6 @@ D.3. Optional Modules PPM Download Page: http://landfill.bugzilla.org/ppm/GDTextUtil.ppd Documentation: http://search.cpan.org/dist/GDTextUtil/Text/Align.pm - MIME::Parser (part of MIME-tools): - - CPAN Download Page: http://search.cpan.org/dist/MIME-tools/ - PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/8xx-b - uilds-only/Windows/MIME-tools-5.411a.zip - Documentation: http://search.cpan.org/dist/MIME-tools/lib/MIME/Parse - r.pm - XML::Parser: CPAN Download Page: http://search.cpan.org/dist/XML-Parser/ @@ -5872,6 +5897,12 @@ D.3. Optional Modules r/ PPM Download Link: http://landfill.bugzilla.org/ppm/PatchReader.ppd Documentation: http://www.johnkeiser.com/mozilla/Patch_Viewer.html + + Image::Magick: + + CPAN Download Page: http://search.cpan.org/dist/PerlMagick/ + PPM Download Link: Included in Windows binary package. + Documentation: http://www.imagemagick.org/script/resources.php _________________________________________________________________ Appendix E. GNU Free Documentation License diff --git a/docs/xml/Bugzilla-Guide.xml b/docs/xml/Bugzilla-Guide.xml index 2fddf9834..b88470a24 100644 --- a/docs/xml/Bugzilla-Guide.xml +++ b/docs/xml/Bugzilla-Guide.xml @@ -31,18 +31,18 @@ For a devel release, simple bump bz-ver and bz-date --> -<!ENTITY bz-ver "2.20.2"> -<!ENTITY bz-nextver "2.20.3"> +<!ENTITY bz-ver "2.22"> +<!ENTITY bz-nextver "2.22.1"> <!ENTITY bz-date "2006-04-22"> <!ENTITY current-year "2006"> -<!ENTITY landfillbase "http://landfill.bugzilla.org/bugzilla-2.20-branch/"> +<!ENTITY landfillbase "http://landfill.bugzilla.org/bugzilla-2.22-branch/"> <!ENTITY bz "http://www.bugzilla.org/"> <!ENTITY bzg-bugs "<ulink url='http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=Documentation'>Bugzilla Documentation</ulink>"> <!ENTITY mysql "http://www.mysql.com/"> <!-- For minimum versions --> -<!ENTITY min-mysql-ver "3.23.41"> +<!ENTITY min-mysql-ver "4.0.14"> <!ENTITY min-pg-ver "7.3.x"> <!ENTITY min-perl-ver "5.6.1"> <!ENTITY min-perl-ver-win "5.8.1"> @@ -57,7 +57,9 @@ <!ENTITY min-dbi-ver "1.38"> <!ENTITY min-date-format-ver "2.21"> <!ENTITY min-cgi-ver "2.93"> -<!ENTITY min-mail-mailer-ver "1.65"> +<!ENTITY min-mail-mailer-ver "1.67"> +<!ENTITY min-mime-base64-ver "3.01"> +<!ENTITY min-mime-parser-ver "5.406"> <!ENTITY min-storable-ver "any"> <!-- Optional modules --> <!ENTITY min-gd-ver "1.20"> @@ -65,8 +67,8 @@ <!ENTITY min-gd-text-align-ver "any"> <!ENTITY min-chart-base-ver "1.0"> <!ENTITY min-xml-parser-ver "any"> -<!ENTITY min-mime-parser-ver "any"> <!ENTITY min-patchreader-ver "0.9.4"> +<!ENTITY min-image-magick-ver "any"> ]> diff --git a/docs/xml/CVS/Entries b/docs/xml/CVS/Entries index 6275214a8..ffd56a8d4 100644 --- a/docs/xml/CVS/Entries +++ b/docs/xml/CVS/Entries @@ -1,21 +1,21 @@ -/Bugzilla-Guide.xml/1.50.2.6/Sun Apr 23 02:47:05 2006//TBUGZILLA-2_20_2 -/about.xml/1.19.6.3/Fri Mar 3 22:05:03 2006//TBUGZILLA-2_20_2 -/administration.xml/1.50.2.6/Thu Mar 2 12:02:53 2006//TBUGZILLA-2_20_2 -/conventions.xml/1.9/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_20_2 -/customization.xml/1.20.2.4/Sun Mar 5 17:14:51 2006//TBUGZILLA-2_20_2 -/dbschema.mysql/1.2/Wed May 8 23:19:09 2002//TBUGZILLA-2_20_2 -/faq.xml/1.35.2.6/Fri Mar 3 22:50:18 2006//TBUGZILLA-2_20_2 -/filetemp.patch/1.1/Wed Apr 2 00:40:56 2003//TBUGZILLA-2_20_2 -/gfdl.xml/1.9/Sat Jan 24 18:31:00 2004//TBUGZILLA-2_20_2 -/glossary.xml/1.16.6.4/Wed Mar 1 12:22:40 2006//TBUGZILLA-2_20_2 -/index.xml/1.4/Wed Apr 23 02:04:25 2003//TBUGZILLA-2_20_2 -/installation.xml/1.98.2.16/Fri Mar 3 22:23:49 2006//TBUGZILLA-2_20_2 -/integration.xml/1.13/Sat Sep 4 09:27:15 2004//TBUGZILLA-2_20_2 -/introduction.xml/1.5/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_20_2 -/modules.xml/1.3/Mon Jan 10 07:21:26 2005//TBUGZILLA-2_20_2 -/patches.xml/1.21.6.1/Fri Mar 3 22:58:35 2006//TBUGZILLA-2_20_2 -/requiredsoftware.xml/1.6/Mon May 12 19:31:48 2003//TBUGZILLA-2_20_2 -/security.xml/1.6.2.4/Wed Mar 1 13:04:51 2006//TBUGZILLA-2_20_2 -/troubleshooting.xml/1.5.4.1/Thu Sep 8 20:57:06 2005//TBUGZILLA-2_20_2 -/using.xml/1.33.2.12/Fri Mar 17 12:44:20 2006//TBUGZILLA-2_20_2 +/Bugzilla-Guide.xml/1.57.2.1/Sun Apr 23 02:45:10 2006//TBUGZILLA-2_22 +/about.xml/1.19.8.3/Sun Apr 23 02:45:10 2006//TBUGZILLA-2_22 +/administration.xml/1.55.2.3/Thu Mar 2 12:03:12 2006//TBUGZILLA-2_22 +/conventions.xml/1.9/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_22 +/customization.xml/1.21.2.4/Sun Mar 5 17:15:13 2006//TBUGZILLA-2_22 +/dbschema.mysql/1.2/Wed May 8 23:19:09 2002//TBUGZILLA-2_22 +/faq.xml/1.39.2.2/Fri Mar 3 22:50:57 2006//TBUGZILLA-2_22 +/filetemp.patch/1.1/Wed Apr 2 00:40:56 2003//TBUGZILLA-2_22 +/gfdl.xml/1.9/Sat Jan 24 18:31:00 2004//TBUGZILLA-2_22 +/glossary.xml/1.17.2.3/Wed Mar 1 12:22:14 2006//TBUGZILLA-2_22 +/index.xml/1.4/Wed Apr 23 02:04:25 2003//TBUGZILLA-2_22 +/installation.xml/1.107.2.7/Fri Mar 3 22:23:18 2006//TBUGZILLA-2_22 +/integration.xml/1.13/Sat Sep 4 09:27:15 2004//TBUGZILLA-2_22 +/introduction.xml/1.5/Thu Jan 15 23:54:39 2004//TBUGZILLA-2_22 +/modules.xml/1.4/Fri Dec 30 15:39:01 2005//TBUGZILLA-2_22 +/patches.xml/1.21.8.1/Fri Mar 3 22:58:24 2006//TBUGZILLA-2_22 +/requiredsoftware.xml/1.6/Mon May 12 19:31:48 2003//TBUGZILLA-2_22 +/security.xml/1.8.2.4/Wed Mar 1 13:04:36 2006//TBUGZILLA-2_22 +/troubleshooting.xml/1.6/Thu Sep 8 20:57:44 2005//TBUGZILLA-2_22 +/using.xml/1.37.2.9/Fri Mar 17 12:42:20 2006//TBUGZILLA-2_22 D diff --git a/docs/xml/CVS/Tag b/docs/xml/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/docs/xml/CVS/Tag +++ b/docs/xml/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/docs/xml/about.xml b/docs/xml/about.xml index dc7fecc20..01c8158e3 100644 --- a/docs/xml/about.xml +++ b/docs/xml/about.xml @@ -1,6 +1,6 @@ <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ <!ENTITY conventions SYSTEM "conventions.xml"> ] > --> -<!-- $Id: about.xml,v 1.19.6.3 2006/03/03 22:05:03 jocuri%softhome.net Exp $ --> +<!-- $Id: about.xml,v 1.19.8.3 2006/04/23 02:45:10 mkanat%bugzilla.org Exp $ --> <chapter id="about"> <title>About This Guide</title> diff --git a/docs/xml/administration.xml b/docs/xml/administration.xml index 1fa3359aa..b6b021058 100644 --- a/docs/xml/administration.xml +++ b/docs/xml/administration.xml @@ -552,6 +552,46 @@ </listitem> </itemizedlist> </section> + + <section id="impersonatingusers"> + <title>Impersonating Users</title> + + <para> + There may be times when an administrator would like to do something as + another user. The <command>sudo</command> feature may be used to do + this. + </para> + + <note> + <para> + To use the sudo feature, you must be in the + <emphasis>bz_sudoers</emphasis> group. By default, all + administrators are in this group.</para> + </note> + + <para> + If you have access to this feature, you may start a session by + going to the Edit Users page, Searching for a user and clicking on + their login. You should see a link below their login name titled + "Impersonate this user". Click on the link. This will take you + to a page where you will see a description of the feature and + instructions for using it. After reading the text, simply + enter the login of the user you would like to impersonate, provide + a short message explaining why you are doing this, and press the + button.</para> + + <para> + As long as you are using this feature, everything you do will be done + as if you were logged in as the user you are impersonating.</para> + + <warning> + <para> + The user you are impersonating will not be told about what you are + doing. If you do anything that results in mail being sent, that + mail will appear to be from the user you are impersonating. You + should be extremely careful while using this feature.</para> + </warning> + </section> </section> </section> diff --git a/docs/xml/customization.xml b/docs/xml/customization.xml index e73db4794..3ddcd120c 100644 --- a/docs/xml/customization.xml +++ b/docs/xml/customization.xml @@ -202,7 +202,7 @@ <para> To see if a CGI supports multiple output formats and types, grep the - CGI for <quote>GetFormat</quote>. If it's not present, adding + CGI for <quote>get_format</quote>. If it's not present, adding multiple format/type support isn't too hard - see how it's done in other CGIs, e.g. config.cgi. </para> diff --git a/docs/xml/installation.xml b/docs/xml/installation.xml index fd3f2a070..7cd8a0d7f 100644 --- a/docs/xml/installation.xml +++ b/docs/xml/installation.xml @@ -1,5 +1,5 @@ <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> --> -<!-- $Id: installation.xml,v 1.98.2.16 2006/03/03 22:23:49 jocuri%softhome.net Exp $ --> +<!-- $Id: installation.xml,v 1.107.2.7 2006/03/03 22:23:18 jocuri%softhome.net Exp $ --> <chapter id="installing-bugzilla"> <title>Installing Bugzilla</title> @@ -352,13 +352,25 @@ Text::Wrap (&min-text-wrap-ver;) </para> </listitem> - + <listitem> <para> Mail::Mailer (&min-mail-mailer-ver;) </para> </listitem> - + + <listitem> + <para> + MIME::Base64 (&min-mime-base64-ver;) + </para> + </listitem> + + <listitem> + <para> + MIME::Parser (&min-mime-parser-ver;) + </para> + </listitem> + <listitem> <para> Storable (&min-storable-ver;) @@ -409,11 +421,10 @@ (&min-patchreader-ver;) for pretty HTML view of patches </para> </listitem> - + <listitem> <para> - <link linkend="install-modules-mime-parser">MIME::Parser</link> - (&min-mime-parser-ver;) for the optional email interface + Image::Magick (&min-image-magick-ver;) for converting BMP image attachments to PNG </para> </listitem> </orderedlist> @@ -509,25 +520,16 @@ </para> </section> - <section id="install-modules-mime-parser"> - <title>MIME::Parser (&min-mime-parser-ver;)</title> - - <para>The MIME::Parser module is only required if you want to use the - email interface - located in the <filename class="directory">contrib</filename> directory. - </para> - </section> - <section id="install-modules-patchreader"> <title>PatchReader (&min-patchreader-ver;)</title> - <para>The PatchReader module is only required if you want to use + <para>The PatchReader module is only required if you want to use Patch Viewer, a Bugzilla feature to show code patches in your web browser in a more - readable form. + readable form. </para> </section> - </section> + </section> <section id="install-MTA"> <title>Mail Transfer Agent (MTA)</title> @@ -866,9 +868,9 @@ you will need to add a new line to it as follows:</para> <para> - <computeroutput>host all bugs 127.0.0.1 255.255.255.255 md5</computeroutput> + <computeroutput>host all bugs 127.0.0.1 255.255.255.255 md5</computeroutput> </para> - + <para>This means that for TCP/IP (host) connections, allow connections from '127.0.0.1' to 'all' databases on this server from the 'bugs' user, and use password authentication (md5) for that user.</para> @@ -879,15 +881,15 @@ You will need to make a single line change, changing</para> <para> - <computeroutput># tcpip_socket = false</computeroutput> + <computeroutput># tcpip_socket = false</computeroutput> </para> - + <para>to</para> <para> - <computeroutput>tcpip_socket = true</computeroutput> - </para> - + <computeroutput>tcpip_socket = true</computeroutput> + </para> + <para>Now, you will need to restart PostgreSQL, but you will need to fully stop and start the server rather than just restarting due to the possibility of a change to <filename>postgresql.conf</filename>. After the server has @@ -1200,7 +1202,7 @@ c:\perl\bin\perl.exe -xc:\bugzilla -wT "%s" %s <para> When upgrading Bugzilla, this format may change. - To create new status data, (re)move old data and run the following + To create new status data, (re)move old data and run the following commands: </para> diff --git a/docs/xml/modules.xml b/docs/xml/modules.xml index d031b19c0..59c58530e 100644 --- a/docs/xml/modules.xml +++ b/docs/xml/modules.xml @@ -147,6 +147,25 @@ Documentation: <ulink url="http://stein.cshl.org/WWW/software/GD/"/> </literallayout> </para> + + <para> + MIME::Base64: + <literallayout> + CPAN Download Page: <ulink url="http://search.cpan.org/dist/MIME-Base64/"/> + PPM Download Link: <ulink url="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-Base64-2.20.zip"/> + Documentation: <ulink url="http://search.cpan.org/dist/MIME-Base64/Base64.pm"/> + </literallayout> + </para> + + <para> + MIME::Parser (part of MIME-tools): + <literallayout> + CPAN Download Page: <ulink url="http://search.cpan.org/dist/MIME-tools/"/> + PPM Download Link: <ulink url="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip"/> + Documentation: <ulink url="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm"/> + </literallayout> + </para> + </section> <section id="modules-manual-optional"> @@ -179,15 +198,6 @@ </literallayout> </para> - <para> - MIME::Parser (part of MIME-tools): - <literallayout> - CPAN Download Page: <ulink url="http://search.cpan.org/dist/MIME-tools/"/> - PPM Download Link: <ulink url="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip"/> - Documentation: <ulink url="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm"/> - </literallayout> - </para> - <para> XML::Parser: <literallayout> @@ -205,5 +215,14 @@ Documentation: <ulink url="http://www.johnkeiser.com/mozilla/Patch_Viewer.html"/> </literallayout> </para> + + <para> + Image::Magick: + <literallayout> + CPAN Download Page: <ulink url="http://search.cpan.org/dist/PerlMagick/"/> + PPM Download Link: Included in Windows binary package. + Documentation: <ulink url="http://www.imagemagick.org/script/resources.php"/> + </literallayout> + </para> </section> </appendix> diff --git a/docs/xml/security.xml b/docs/xml/security.xml index a8eda5338..9705edf03 100644 --- a/docs/xml/security.xml +++ b/docs/xml/security.xml @@ -1,5 +1,5 @@ <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> --> -<!-- $Id: security.xml,v 1.6.2.4 2006/03/01 13:04:51 jocuri%softhome.net Exp $ --> +<!-- $Id: security.xml,v 1.8.2.4 2006/03/01 13:04:36 jocuri%softhome.net Exp $ --> <chapter id="security"> <title>Bugzilla Security</title> @@ -207,14 +207,6 @@ skip-networking </simplelist> </para> </listitem> - <listitem> - <para>But allow: - <simplelist type="inline"> - <member><filename>localconfig.js</filename></member> - <member><filename>localconfig.rdf</filename></member> - </simplelist> - </para> - </listitem> </itemizedlist> </listitem> @@ -360,28 +352,25 @@ skip-networking <section id="security-bugzilla-charset"> <title>Prevent users injecting malicious Javascript</title> - <para>It is possible for a Bugzilla user to take advantage of character - set encoding ambiguities to inject HTML into Bugzilla comments. This - could include malicious scripts. - Due to internationalization concerns, we are unable to - incorporate by default the code changes suggested by + <para>If you installed Bugzilla version 2.22 or later from scratch, + then the <emphasis>utf8</emphasis> parameter is switched on by default. + This makes Bugzilla explicitly set the character encoding, following <ulink - url="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3">the - CERT advisory</ulink> on this issue. - Making the change in <xref linkend="security-bugzilla-charset-ex"/> will - prevent this problem. + url="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3">a + CERT advisory</ulink> recommending exactly this. + The following therefore does not apply to you; just keep + <emphasis>utf8</emphasis> turned on. </para> - <example id="security-bugzilla-charset-ex"> - <title>Forcing Bugzilla to output a charset</title> - - <para>Locate the following line in - <filename>Bugzilla/CGI.pm</filename>: - <programlisting>$self->charset('');</programlisting> - and change it to: - <programlisting>$self->charset('UTF-8');</programlisting> - </para> - </example> + <para>If you've upgraded from an older version, then it may be possible + for a Bugzilla user to take advantage of character set encoding + ambiguities to inject HTML into Bugzilla comments. + This could include malicious scripts. + This is because due to internationalization concerns, we are unable to + turn the <emphasis>utf8</emphasis> parameter on by default for upgraded + installations. + Turning it on manually will prevent this problem. + </para> </section> </section> diff --git a/docs/xml/troubleshooting.xml b/docs/xml/troubleshooting.xml index 46308bdc6..fa21d579b 100644 --- a/docs/xml/troubleshooting.xml +++ b/docs/xml/troubleshooting.xml @@ -1,5 +1,5 @@ <!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> --> -<!-- $Id: troubleshooting.xml,v 1.5.4.1 2005/09/08 20:57:06 mozilla%colinogilvie.co.uk Exp $ --> +<!-- $Id: troubleshooting.xml,v 1.6 2005/09/08 20:57:44 mozilla%colinogilvie.co.uk Exp $ --> <appendix id="troubleshooting"> <title>Troubleshooting</title> diff --git a/docs/xml/using.xml b/docs/xml/using.xml index 7a398e716..84221bcff 100644 --- a/docs/xml/using.xml +++ b/docs/xml/using.xml @@ -769,11 +769,12 @@ summary and status whiteboard of a bug; adding "<filename>:BazProduct</filename>" would search only in that product. + You can use it to find a bug by its number or its alias, too. </para> - <para>You'll find the Quicksearch box on Bugzilla's - front page, along with a - <ulink url="../../quicksearch.html">Help</ulink> + <para>You'll find the Quicksearch box in Bugzilla's footer area. + On Bugzilla's front page, there is an additional + <ulink url="../../page.cgi?id=quicksearch.html">Help</ulink> link which details how to use it.</para> </section> diff --git a/doeditparams.cgi b/doeditparams.cgi deleted file mode 100755 index 028f28a60..000000000 --- a/doeditparams.cgi +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/perl -wT -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Terry Weissman <terry@mozilla.org> -# J. Paul Reed <preed@sigkill.com> - -use strict; - -use lib qw(.); - -use Bugzilla; -use Bugzilla::Constants; -use Bugzilla::Config qw(:DEFAULT :admin $datadir); -use Bugzilla::User; - -require "CGI.pl"; - -Bugzilla->login(LOGIN_REQUIRED); - -my $cgi = Bugzilla->cgi; - -print $cgi->header(); - -UserInGroup("tweakparams") - || ThrowUserError("auth_failure", {group => "tweakparams", - action => "modify", - object => "parameters"}); - -PutHeader("Saving new parameters"); - -my $howto = ""; - -foreach my $i (GetParamList()) { - my $name = $i->{'name'}; - my $value = $cgi->param($name); - if (defined $cgi->param("reset-$name")) { - $value = $i->{'default'}; - } else { - if ($i->{'type'} eq 'm') { - # This simplifies the code below - $value = [ $cgi->param($name) ]; - } else { - # Get rid of windows/mac-style line endings. - $value =~ s/\r\n?/\n/g; - - # assume single linefeed is an empty string - $value =~ s/^\n$//; - } - } - my $changed; - if ($i->{'type'} eq 'm') { - my @old = sort @{Param($name)}; - my @new = sort @$value; - if (scalar(@old) != scalar(@new)) { - $changed = 1; - } else { - $changed = 0; # Assume not changed... - for (my $cnt = 0; $cnt < scalar(@old); ++$cnt) { - if ($old[$cnt] ne $new[$cnt]) { - # entry is different, therefore changed - $changed = 1; - last; - } - } - } - } else { - $changed = ($value eq Param($name) ? 0 : 1); - } - if ($changed) { - if (exists $i->{'checker'}) { - my $ok = $i->{'checker'}->($value, $i); - if ($ok ne "") { - print "New value for " . html_quote($name) . - " is invalid: $ok<p>\n"; - print "Please hit <b>Back</b> and try again.\n"; - PutFooter(); - exit; - } - } - print "Changed " . html_quote($name) . ".<br>\n"; - SetParam($name, $value); - if (($name eq "shutdownhtml") && ($value ne "")) { - # The system is down, inform the user how to restore it - $howto = "<p>Bugzilla has now been shut down, to re-enable ". - "the system, please return to ". - "<a href=\"editparams.cgi\">editparams.cgi</a>.</p>"; - } - } -} - - -WriteParams(); - -unlink "$datadir/versioncache"; - -print "<p>OK, done.</p>\n"; -print $howto; -print "<a href=\"editparams.cgi\">Edit the params some more.</a><p>\n"; -print "<a href=\"query.cgi\">Go back to the query page.</a>\n"; - -PutFooter(); diff --git a/duplicates.cgi b/duplicates.cgi index 744ad8147..10ba5bf2b 100755 --- a/duplicates.cgi +++ b/duplicates.cgi @@ -30,7 +30,6 @@ use AnyDBM_File; use lib qw(.); require "globals.pl"; -require "CGI.pl"; use Bugzilla; use Bugzilla::Search; @@ -51,8 +50,8 @@ if (defined $cgi->param('ctype') && $cgi->param('ctype') eq "xul") { exit; } -# Use global templatisation variables. -use vars qw($template $vars); +my $template = Bugzilla->template; +my $vars = {}; GetVersionTable(); @@ -66,9 +65,9 @@ else { Bugzilla->login(); } -Bugzilla->switch_to_shadow_db(); +my $dbh = Bugzilla->switch_to_shadow_db(); -use vars qw ($userid @legal_product); +use vars qw (@legal_product); my %dbmcount; my %count; @@ -232,13 +231,13 @@ if (scalar(%count)) { 'params' => $params, ); - SendSQL($query->getSQL()); + my $results = $dbh->selectall_arrayref($query->getSQL()); - while (MoreSQLData()) { + foreach my $result (@$results) { # Note: maximum row count is dealt with in the template. my ($id, $component, $bug_severity, $op_sys, $target_milestone, - $short_desc, $bug_status, $resolution) = FetchSQLData(); + $short_desc, $bug_status, $resolution) = @$result; push (@bugs, { id => $id, count => $count{$id}, @@ -266,12 +265,12 @@ $vars->{'openonly'} = $openonly; $vars->{'reverse'} = $reverse; $vars->{'format'} = $cgi->param('format'); $vars->{'query_products'} = \@query_products; -my @selectable_products = GetSelectableProducts(); -$vars->{'products'} = \@selectable_products; +$vars->{'products'} = Bugzilla->user->get_selectable_products; -my $format = GetFormat("reports/duplicates", scalar($cgi->param('format')), - scalar($cgi->param('ctype'))); +my $format = $template->get_format("reports/duplicates", + scalar($cgi->param('format')), + scalar($cgi->param('ctype'))); print $cgi->header($format->{'ctype'}); diff --git a/editclassifications.cgi b/editclassifications.cgi index 4fdd948ea..352d7816b 100755 --- a/editclassifications.cgi +++ b/editclassifications.cgi @@ -28,43 +28,16 @@ use Bugzilla::Constants; use Bugzilla::Util; use Bugzilla::Error; use Bugzilla::Config qw($datadir); +use Bugzilla::Classification; -require "CGI.pl"; +require "globals.pl"; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; my $template = Bugzilla->template; my $vars = {}; -# TestClassification: just returns if the specified classification does exist -# CheckClassification: same check, optionally emit an error text - -sub TestClassification ($) { - my $cl = shift; - my $dbh = Bugzilla->dbh; - - trick_taint($cl); - # does the classification exist? - my $sth = $dbh->prepare("SELECT name - FROM classifications - WHERE name=?"); - $sth->execute($cl); - my @row = $sth->fetchrow_array(); - return $row[0]; -} - -sub CheckClassification ($) { - my $cl = shift; - - unless ($cl) { - ThrowUserError("classification_not_specified"); - } - if (! TestClassification($cl)) { - ThrowUserError("classification_doesnt_exist", { name => $cl }); - } -} - -sub LoadTemplate ($) { +sub LoadTemplate { my $action = shift; $action =~ /(\w+)/; @@ -93,44 +66,16 @@ ThrowUserError("auth_classification_not_enabled") unless Param("useclassificatio # # often used variables # -my $action = trim($cgi->param('action') || ''); -my $classification = trim($cgi->param('classification') || ''); -trick_taint($classification); -$vars->{'classification'} = $classification; - +my $action = trim($cgi->param('action') || ''); +my $class_name = trim($cgi->param('classification') || ''); + # # action='' -> Show nice list of classifications # unless ($action) { - my @classifications; - # left join is tricky - # - must select "classifications" fields if you want a REAL value - # - must use "count(products.classification_id)" if you want a true - # count. If you use count(classifications.id), it will return 1 for NULL - # - must use "group by classifications.id" instead of - # products.classification_id. Otherwise it won't look for all - # classification ids, just the ones used by the products. - my $sth = $dbh->prepare("SELECT classifications.id, classifications.name, - classifications.description, - COUNT(classification_id) AS total - FROM classifications - LEFT JOIN products - ON classifications.id = products.classification_id - " . $dbh->sql_group_by('classifications.id', - 'classifications.name, - classifications.description') . " - ORDER BY name"); - $sth->execute(); - while (my ($id,$classification,$description,$total) = $sth->fetchrow_array()) { - my $cl = {}; - $cl->{'id'} = $id; - $cl->{'classification'} = $classification; - $cl->{'description'} = $description if (defined $description); - $cl->{'total'} = $total; - - push(@classifications, $cl); - } + my @classifications = + Bugzilla::Classification::get_all_classifications(); $vars->{'classifications'} = \@classifications; LoadTemplate("select"); @@ -151,23 +96,30 @@ if ($action eq 'add') { # if ($action eq 'new') { - unless ($classification) { - ThrowUserError("classification_not_specified"); - } - if (TestClassification($classification)) { - ThrowUserError("classification_already_exists", { name => $classification }); + + $class_name || ThrowUserError("classification_not_specified"); + + my $classification = + new Bugzilla::Classification({name => $class_name}); + + if ($classification) { + ThrowUserError("classification_already_exists", + { name => $classification->name }); } + my $description = trim($cgi->param('description') || ''); trick_taint($description); + trick_taint($class_name); # Add the new classification. - my $sth = $dbh->prepare("INSERT INTO classifications (name,description) - VALUES (?,?)"); - $sth->execute($classification,$description); + $dbh->do("INSERT INTO classifications (name, description) + VALUES (?, ?)", undef, ($class_name, $description)); # Make versioncache flush unlink "$datadir/versioncache"; + $vars->{'classification'} = $class_name; + LoadTemplate($action); } @@ -178,25 +130,19 @@ if ($action eq 'new') { # if ($action eq 'del') { - CheckClassification($classification); - my $sth; - # display some data about the classification - $sth = $dbh->prepare("SELECT id, description - FROM classifications - WHERE name=?"); - $sth->execute($classification); - my ($classification_id, $description) = $sth->fetchrow_array(); + my $classification = + Bugzilla::Classification::check_classification($class_name); - ThrowUserError("classification_not_deletable") if ($classification_id eq "1"); + if ($classification->id == 1) { + ThrowUserError("classification_not_deletable"); + } - $sth = $dbh->prepare("SELECT name - FROM products - WHERE classification_id=$classification_id"); - $sth->execute(); - ThrowUserError("classification_has_products") if ($sth->fetchrow_array()); + if ($classification->product_count()) { + ThrowUserError("classification_has_products"); + } - $vars->{'description'} = $description if (defined $description); + $vars->{'classification'} = $classification; LoadTemplate($action); } @@ -206,32 +152,31 @@ if ($action eq 'del') { # if ($action eq 'delete') { - CheckClassification($classification); - my $sth; - my $classification_id = get_classification_id($classification); + my $classification = + Bugzilla::Classification::check_classification($class_name); - if ($classification_id == 1) { - ThrowUserError("cant_delete_default_classification", { name => $classification }); + if ($classification->id == 1) { + ThrowUserError("classification_not_deletable"); } # lock the tables before we start to change everything: $dbh->bz_lock_tables('classifications WRITE', 'products WRITE'); # delete - $sth = $dbh->prepare("DELETE FROM classifications WHERE id=?"); - $sth->execute($classification_id); + $dbh->do("DELETE FROM classifications WHERE id = ?", undef, + $classification->id); # update products just in case - $sth = $dbh->prepare("UPDATE products - SET classification_id=1 - WHERE classification_id=?"); - $sth->execute($classification_id); + $dbh->do("UPDATE products SET classification_id = 1 + WHERE classification_id = ?", undef, $classification->id); $dbh->bz_unlock_tables(); unlink "$datadir/versioncache"; + $vars->{'classification'} = $classification; + LoadTemplate($action); } @@ -242,34 +187,11 @@ if ($action eq 'delete') { # if ($action eq 'edit') { - CheckClassification($classification); - my @products = (); - my $has_products = 0; - my $sth; - + my $classification = + Bugzilla::Classification::check_classification($class_name); - # get data of classification - $sth = $dbh->prepare("SELECT id,description - FROM classifications - WHERE name=?"); - $sth->execute($classification); - my ($classification_id,$description) = $sth->fetchrow_array(); - $vars->{'description'} = $description if (defined $description); - - $sth = $dbh->prepare("SELECT name,description - FROM products - WHERE classification_id=? - ORDER BY name"); - $sth->execute($classification_id); - while ( my ($product, $prod_description) = $sth->fetchrow_array()) { - my $prod = {}; - $has_products = 1; - $prod->{'name'} = $product; - $prod->{'description'} = $prod_description if (defined $prod_description); - push(@products, $prod); - } - $vars->{'products'} = \@products if ($has_products); + $vars->{'classification'} = $classification; LoadTemplate($action); } @@ -279,48 +201,46 @@ if ($action eq 'edit') { # if ($action eq 'update') { - my $classificationold = trim($cgi->param('classificationold') || ''); - my $description = trim($cgi->param('description') || ''); - my $descriptionold = trim($cgi->param('descriptionold') || ''); - my $checkvotes = 0; - my $sth; - CheckClassification($classificationold); + $class_name || ThrowUserError("classification_not_specified"); - my $classification_id = get_classification_id($classificationold); - trick_taint($description); + my $class_old_name = trim($cgi->param('classificationold') || ''); + my $description = trim($cgi->param('description') || ''); - # Note that we got the $classification_id using $classificationold - # above so it will remain static even after we rename the - # classification in the database. + my $class_old = + Bugzilla::Classification::check_classification($class_old_name); $dbh->bz_lock_tables('classifications WRITE'); - if ($classification ne $classificationold) { - unless ($classification) { - ThrowUserError("classification_not_specified"); + if ($class_name ne $class_old->name) { + + my $class = new Bugzilla::Classification({name => $class_name}); + if ($class) { + ThrowUserError("classification_already_exists", + { name => $class->name }); } + trick_taint($class_name); + $dbh->do("UPDATE classifications SET name = ? WHERE id = ?", + undef, ($class_name, $class_old->id)); - if (TestClassification($classification)) { - ThrowUserError("classification_already_exists", { name => $classification }); - } - $sth = $dbh->prepare("UPDATE classifications - SET name=? WHERE id=?"); - $sth->execute($classification,$classification_id); $vars->{'updated_classification'} = 1; + + unlink "$datadir/versioncache"; } - if ($description ne $descriptionold) { - $sth = $dbh->prepare("UPDATE classifications - SET description=? - WHERE id=?"); - $sth->execute($description,$classification_id); + if ($description ne $class_old->description) { + trick_taint($description); + $dbh->do("UPDATE classifications SET description = ? + WHERE id = ?", undef, + ($description, $class_old->id)); + $vars->{'updated_description'} = 1; + + unlink "$datadir/versioncache"; } $dbh->bz_unlock_tables(); - unlink "$datadir/versioncache"; LoadTemplate($action); } @@ -329,26 +249,18 @@ if ($action eq 'update') { # if ($action eq 'reclassify') { - CheckClassification($classification); - my $sth; - - # display some data about the classification - $sth = $dbh->prepare("SELECT id, description - FROM classifications - WHERE name=?"); - $sth->execute($classification); - my ($classification_id, $description) = $sth->fetchrow_array(); - $vars->{'description'} = $description if (defined $description); + my $classification = + Bugzilla::Classification::check_classification($class_name); + + my $sth = $dbh->prepare("UPDATE products SET classification_id = ? + WHERE name = ?"); - $sth = $dbh->prepare("UPDATE products - SET classification_id=? - WHERE name=?"); if (defined $cgi->param('add_products')) { if (defined $cgi->param('prodlist')) { foreach my $prod ($cgi->param("prodlist")) { trick_taint($prod); - $sth->execute($classification_id,$prod); + $sth->execute($classification->id, $prod); } } } elsif (defined $cgi->param('remove_products')) { @@ -358,44 +270,12 @@ if ($action eq 'reclassify') { $sth->execute(1,$prod); } } - } elsif (defined $cgi->param('migrate_products')) { - if (defined $cgi->param('clprodlist')) { - foreach my $prod ($cgi->param("clprodlist")) { - trick_taint($prod); - $sth->execute($classification_id,$prod); - } - } } - my @selected_products = (); - my @class_products = (); - - $sth = $dbh->prepare("SELECT classifications.id, - products.name, - classifications.name, - classifications.id > 1 as unknown - FROM products - INNER JOIN classifications - ON classifications.id = products.classification_id - ORDER BY unknown, products.name, - classifications.name"); - $sth->execute(); - while ( my ($clid, $name, $clname) = $sth->fetchrow_array() ) { - if ($clid == $classification_id) { - push(@selected_products,$name); - } else { - my $cl = {}; - if ($clid == 1) { - $cl->{'name'} = "[$clname] $name"; - } else { - $cl->{'name'} = "$name [$clname]"; - } - $cl->{'value'} = $name; - push(@class_products,$cl); - } - } - $vars->{'selected_products'} = \@selected_products; - $vars->{'class_products'} = \@class_products; + my @classifications = + Bugzilla::Classification::get_all_classifications; + $vars->{'classifications'} = \@classifications; + $vars->{'classification'} = $classification; LoadTemplate($action); } @@ -404,4 +284,4 @@ if ($action eq 'reclassify') { # No valid action found # -ThrowCodeError("action_unrecognized", $vars); +ThrowCodeError("action_unrecognized", {action => $action}); diff --git a/editcomponents.cgi b/editcomponents.cgi index 1f42b04a7..c65fd3167 100755 --- a/editcomponents.cgi +++ b/editcomponents.cgi @@ -20,6 +20,7 @@ # # Contributor(s): Holger Schurig <holgerschurig@nikocity.de> # Terry Weissman <terry@mozilla.org> +# Frédéric Buclin <LpSolit@gmail.com> # # Direct any questions on this source code to # @@ -28,7 +29,6 @@ use strict; use lib "."; -require "CGI.pl"; require "globals.pl"; use Bugzilla::Constants; @@ -36,77 +36,14 @@ use Bugzilla::Config qw(:DEFAULT $datadir); use Bugzilla::Series; use Bugzilla::Util; use Bugzilla::User; - -use vars qw($template $vars); +use Bugzilla::Product; +use Bugzilla::Component; +use Bugzilla::Bug; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; - -my $showbugcounts = (defined $cgi->param('showbugcounts')); - -# TestProduct: just returns if the specified product does exists -# CheckProduct: same check, optionally emit an error text -# TestComponent: just returns if the specified product/component combination exists -# CheckComponent: same check, optionally emit an error text - -sub TestProduct ($) -{ - my $prod = shift; - - # does the product exist? - SendSQL("SELECT name - FROM products - WHERE name = " . SqlQuote($prod)); - return FetchOneColumn(); -} - -sub CheckProduct ($) -{ - my $prod = shift; - - # do we have a product? - unless ($prod) { - ThrowUserError('product_not_specified'); - } - - unless (TestProduct $prod) { - ThrowUserError('product_doesnt_exist', - {'product' => $prod}); - } -} - -sub TestComponent ($$) -{ - my ($prod, $comp) = @_; - - # does the product/component combination exist? - SendSQL("SELECT components.name - FROM components - INNER JOIN products - ON products.id = components.product_id - WHERE products.name = " . SqlQuote($prod) . " - AND components.name = " . SqlQuote($comp)); - return FetchOneColumn(); -} - -sub CheckComponent ($$) -{ - my ($prod, $comp) = @_; - - # do we have the component? - unless ($comp) { - ThrowUserError('component_not_specified'); - } - - CheckProduct($prod); - - unless (TestComponent $prod, $comp) { - ThrowUserError('component_not_valid', - {'product' => $prod, - 'name' => $comp}); - } -} - +my $template = Bugzilla->template; +my $vars = {}; # # Preliminary checks: @@ -115,9 +52,9 @@ sub CheckComponent ($$) my $user = Bugzilla->login(LOGIN_REQUIRED); my $whoid = $user->id; -print Bugzilla->cgi->header(); +print $cgi->header(); -UserInGroup("editcomponents") +$user->in_group('editcomponents') || ThrowUserError("auth_failure", {group => "editcomponents", action => "edit", object => "components"}); @@ -125,55 +62,30 @@ UserInGroup("editcomponents") # # often used variables # -my $product = trim($cgi->param('product') || ''); -my $component = trim($cgi->param('component') || ''); -my $action = trim($cgi->param('action') || ''); - - +my $product_name = trim($cgi->param('product') || ''); +my $comp_name = trim($cgi->param('component') || ''); +my $action = trim($cgi->param('action') || ''); +my $showbugcounts = (defined $cgi->param('showbugcounts')); # # product = '' -> Show nice list of products # -unless ($product) { - - my @products = (); - - if ($showbugcounts){ - SendSQL("SELECT products.name, products.description, COUNT(bug_id) - FROM products LEFT JOIN bugs - ON products.id = bugs.product_id " . - $dbh->sql_group_by('products.name', 'products.description') . " - ORDER BY products.name"); - } else { - SendSQL("SELECT products.name, products.description - FROM products - ORDER BY products.name"); - } - - while ( MoreSQLData() ) { - - my $prod = {}; - - my ($name, $description, $bug_count) = FetchSQLData(); - - $prod->{'name'} = $name; - $prod->{'description'} = $description; - $prod->{'bug_count'} = $bug_count; - - push(@products, $prod); - } - +unless ($product_name) { + $vars->{'products'} = $user->get_selectable_products; $vars->{'showbugcounts'} = $showbugcounts; - $vars->{'products'} = \@products; - $template->process("admin/components/select-product.html.tmpl", - $vars) - || ThrowTemplateError($template->error()); - + $template->process("admin/components/select-product.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } +# First make sure the product name is valid. +my $product = Bugzilla::Product::check_product($product_name); + +# Then make sure the user is allowed to edit properties of this product. +$user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); # @@ -182,51 +94,11 @@ unless ($product) { unless ($action) { - CheckProduct($product); - my $product_id = get_product_id($product); - my @components = (); - - if ($showbugcounts) { - SendSQL("SELECT name, description, initialowner, - initialqacontact, COUNT(bug_id) - FROM components LEFT JOIN bugs - ON components.id = bugs.component_id - WHERE components.product_id = $product_id " . - $dbh->sql_group_by('name', - 'description, initialowner, initialqacontact')); - } else { - SendSQL("SELECT name, description, initialowner, initialqacontact - FROM components - WHERE product_id = $product_id " . - $dbh->sql_group_by('name', - 'description, initialowner, initialqacontact')); - } - - while (MoreSQLData()) { - - my $component = {}; - my ($name, $desc, $initialownerid, $initialqacontactid, $bug_count) - = FetchSQLData(); - - $component->{'name'} = $name; - $component->{'description'} = $desc; - $component->{'initialowner'} = DBID_to_name($initialownerid) - if ($initialownerid); - $component->{'initialqacontact'} = DBID_to_name($initialqacontactid) - if ($initialqacontactid); - $component->{'bug_count'} = $bug_count; - - push(@components, $component); - - } - - $vars->{'showbugcounts'} = $showbugcounts; - $vars->{'product'} = $product; - $vars->{'components'} = \@components; - $template->process("admin/components/list.html.tmpl", - $vars) - || ThrowTemplateError($template->error()); + $vars->{'product'} = $product->name; + $vars->{'components'} = $product->components; + $template->process("admin/components/list.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } @@ -240,13 +112,9 @@ unless ($action) { if ($action eq 'add') { - CheckProduct($product); - - $vars->{'product'} = $product; - $template->process("admin/components/create.html.tmpl", - $vars) - || ThrowTemplateError($template->error()); - + $vars->{'product'} = $product->name; + $template->process("admin/components/create.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } @@ -258,67 +126,52 @@ if ($action eq 'add') { # if ($action eq 'new') { + + # Do the user matching + Bugzilla::User::match_field ($cgi, { + 'initialowner' => { 'type' => 'single' }, + 'initialqacontact' => { 'type' => 'single' }, + }); - CheckProduct($product); - my $product_id = get_product_id($product); - - - # Cleanups and valididy checks + my $default_assignee = trim($cgi->param('initialowner') || ''); + my $default_qa_contact = trim($cgi->param('initialqacontact') || ''); + my $description = trim($cgi->param('description') || ''); - unless ($component) { - ThrowUserError('component_blank_name', - {'name' => $component}); - } - if (TestComponent($product, $component)) { - ThrowUserError('component_already_exists', - {'name' => $component}); - } + $comp_name || ThrowUserError('component_blank_name'); - if (length($component) > 64) { + if (length($comp_name) > 64) { ThrowUserError('component_name_too_long', - {'name' => $component}); + {'name' => $comp_name}); } - my $description = trim($cgi->param('description') || ''); + my $component = + new Bugzilla::Component({product_id => $product->id, + name => $comp_name}); - if ($description eq '') { - ThrowUserError('component_blank_description', - {'name' => $component}); + if ($component) { + ThrowUserError('component_already_exists', + {'name' => $component->name}); } - my $initialowner = trim($cgi->param('initialowner') || ''); + $description || ThrowUserError('component_blank_description', + {name => $comp_name}); - if ($initialowner eq '') { - ThrowUserError('component_need_initialowner', - {'name' => $component}); - } + $default_assignee || ThrowUserError('component_need_initialowner', + {name => $comp_name}); - my $initialownerid = login_to_id ($initialowner); - if (!$initialownerid) { - ThrowUserError('component_need_valid_initialowner', - {'name' => $component}); - } + my $default_assignee_id = login_to_id($default_assignee); + my $default_qa_contact_id = Param('useqacontact') ? + (login_to_id($default_qa_contact) || undef) : undef; - my $initialqacontact = trim($cgi->param('initialqacontact') || ''); - my $initialqacontactid = login_to_id ($initialqacontact); - if (Param('useqacontact')) { - if (!$initialqacontactid && $initialqacontact ne '') { - ThrowUserError('component_need_valid_initialqacontact', - {'name' => $component}); - } - } - my $initialqacontactsql = - $initialqacontact ne '' ? SqlQuote($initialqacontactid) : 'NULL'; - - # Add the new component - SendSQL("INSERT INTO components ( " . - "product_id, name, description, initialowner, initialqacontact " . - " ) VALUES ( " . - $product_id . "," . - SqlQuote($component) . "," . - SqlQuote($description) . "," . - SqlQuote($initialownerid) . "," . - $initialqacontactsql . ")"); + trick_taint($comp_name); + trick_taint($description); + + $dbh->do("INSERT INTO components + (product_id, name, description, initialowner, + initialqacontact) + VALUES (?, ?, ?, ?, ?)", undef, + ($product->id, $comp_name, $description, + $default_assignee_id, $default_qa_contact_id)); # Insert default charting queries for this product. # If they aren't using charting, this won't do any harm. @@ -326,8 +179,8 @@ if ($action eq 'new') { my @series; - my $prodcomp = "&product=" . url_quote($product) . - "&component=" . url_quote($component); + my $prodcomp = "&product=" . url_quote($product->name) . + "&component=" . url_quote($comp_name); # For localisation reasons, we get the title of the queries from the # submitted form. @@ -349,17 +202,17 @@ if ($action eq 'new') { push(@series, [$nonopen_name, $nonopen_query]); foreach my $sdata (@series) { - my $series = new Bugzilla::Series(undef, $product, $component, - $sdata->[0], $::userid, 1, - $sdata->[1], 1); + my $series = new Bugzilla::Series(undef, $product->name, + $comp_name, $sdata->[0], + $whoid, 1, $sdata->[1], 1); $series->writeToDatabase(); } # Make versioncache flush unlink "$datadir/versioncache"; - $vars->{'name'} = $component; - $vars->{'product'} = $product; + $vars->{'name'} = $comp_name; + $vars->{'product'} = $product->name; $template->process("admin/components/created.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -376,54 +229,14 @@ if ($action eq 'new') { # if ($action eq 'del') { - - CheckComponent($product, $component); - my $component_id = get_component_id(get_product_id($product), $component); - - # display some data about the component - SendSQL("SELECT products.name, products.description, - products.milestoneurl, products.disallownew, - components.name, components.initialowner, - components.initialqacontact, components.description - FROM products - LEFT JOIN components ON products.id = components.product_id - WHERE components.id = $component_id"); - - - my ($product, $product_description, $milestoneurl, $disallownew, - $component, $initialownerid, $initialqacontactid, $description) = - FetchSQLData(); - - - my $initialowner = $initialownerid ? DBID_to_name ($initialownerid) : ''; - my $initialqacontact = $initialqacontactid ? DBID_to_name ($initialqacontactid) : ''; - $milestoneurl ||= ''; - $product_description ||= ''; - $disallownew ||= 0; - $description ||= ''; - if (Param('useqacontact')) { - $vars->{'initialqacontact'} = $initialqacontact; - } + $vars->{'comp'} = + Bugzilla::Component::check_component($product, $comp_name); - if (Param('usetargetmilestone')) { - $vars->{'milestoneurl'} = $milestoneurl; - } + $vars->{'prod'} = $product; - SendSQL("SELECT count(bug_id) - FROM bugs - WHERE component_id = $component_id"); - $vars->{'bug_count'} = FetchOneColumn() || 0; - - $vars->{'name'} = $component; - $vars->{'description'} = $description; - $vars->{'initialowner'} = $initialowner; - $vars->{'product'} = $product; - $vars->{'product_description'} = $product_description; - $vars->{'disallownew'} = $disallownew; - $template->process("admin/components/confirm-delete.html.tmpl", - $vars) - || ThrowTemplateError($template->error()); + $template->process("admin/components/confirm-delete.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } @@ -435,43 +248,40 @@ if ($action eq 'del') { # if ($action eq 'delete') { - CheckComponent($product, $component); - my $component_id = get_component_id(get_product_id($product), $component); - my $bug_ids = - $dbh->selectcol_arrayref("SELECT bug_id FROM bugs WHERE component_id = ?", - undef, $component_id); + my $component = + Bugzilla::Component::check_component($product, $comp_name); - my $nb_bugs = scalar(@$bug_ids); - if ($nb_bugs) { + if ($component->bug_count) { if (Param("allowbugdeletion")) { - foreach my $bug_id (@$bug_ids) { + foreach my $bug_id (@{$component->bug_ids}) { my $bug = new Bugzilla::Bug($bug_id, $whoid); $bug->remove_from_db(); } - } - else { - ThrowUserError("component_has_bugs", { nb => $nb_bugs }); + } else { + ThrowUserError("component_has_bugs", + {nb => $component->bug_count }); } } - $vars->{'deleted_bug_count'} = $nb_bugs; + $vars->{'deleted_bug_count'} = $component->bug_count; $dbh->bz_lock_tables('components WRITE', 'flaginclusions WRITE', 'flagexclusions WRITE'); $dbh->do("DELETE FROM flaginclusions WHERE component_id = ?", - undef, $component_id); + undef, $component->id); $dbh->do("DELETE FROM flagexclusions WHERE component_id = ?", - undef, $component_id); - $dbh->do("DELETE FROM components WHERE id = ?", undef, $component_id); + undef, $component->id); + $dbh->do("DELETE FROM components WHERE id = ?", + undef, $component->id); $dbh->bz_unlock_tables(); unlink "$datadir/versioncache"; - $vars->{'name'} = $component; - $vars->{'product'} = $product; + $vars->{'name'} = $component->name; + $vars->{'product'} = $product->name; $template->process("admin/components/deleted.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -487,34 +297,10 @@ if ($action eq 'delete') { if ($action eq 'edit') { - CheckComponent($product, $component); - my $component_id = get_component_id(get_product_id($product), $component); - - # get data of component - SendSQL("SELECT products.name, - components.name, components.initialowner, - components.initialqacontact, components.description - FROM products LEFT JOIN components ON - products.id = components.product_id - WHERE components.id = $component_id"); - - my ($product, $component, $initialownerid, $initialqacontactid, - $description) = FetchSQLData(); - - my $initialowner = $initialownerid ? DBID_to_name ($initialownerid) : ''; - my $initialqacontact = $initialqacontactid ? DBID_to_name ($initialqacontactid) : ''; - - SendSQL("SELECT count(*) - FROM bugs - WHERE component_id = $component_id"); - - $vars->{'bug_count'} = FetchOneColumn() || 0; + $vars->{'comp'} = + Bugzilla::Component::check_component($product, $comp_name); - $vars->{'name'} = $component; - $vars->{'description'} = $description; - $vars->{'initialowner'} = $initialowner; - $vars->{'initialqacontact'} = $initialqacontact; - $vars->{'product'} = $product; + $vars->{'prod'} = $product; $template->process("admin/components/edit.html.tmpl", $vars) @@ -531,99 +317,94 @@ if ($action eq 'edit') { if ($action eq 'update') { - my $componentold = trim($cgi->param('componentold') || ''); - my $description = trim($cgi->param('description') || ''); - my $descriptionold = trim($cgi->param('descriptionold') || ''); - my $initialowner = trim($cgi->param('initialowner') || ''); - my $initialownerold = trim($cgi->param('initialownerold') || ''); - my $initialqacontact = trim($cgi->param('initialqacontact') || ''); - my $initialqacontactold = trim($cgi->param('initialqacontactold') || ''); + # Do the user matching + Bugzilla::User::match_field ($cgi, { + 'initialowner' => { 'type' => 'single' }, + 'initialqacontact' => { 'type' => 'single' }, + }); - if (length($component) > 64) { + my $comp_old_name = trim($cgi->param('componentold') || ''); + my $default_assignee = trim($cgi->param('initialowner') || ''); + my $default_qa_contact = trim($cgi->param('initialqacontact') || ''); + my $description = trim($cgi->param('description') || ''); + + my $component_old = + Bugzilla::Component::check_component($product, $comp_old_name); + + $comp_name || ThrowUserError('component_blank_name'); + + if (length($comp_name) > 64) { ThrowUserError('component_name_too_long', - {'name' => $component}); + {'name' => $comp_name}); } - # Note that the order of this tests is important. If you change - # them, be sure to test for WHERE='$component' or WHERE='$componentold' - - $dbh->bz_lock_tables('components WRITE', 'products READ', - 'profiles READ'); - CheckComponent($product, $componentold); - my $component_id = get_component_id(get_product_id($product), - $componentold); - - if ($description ne $descriptionold) { - unless ($description) { - ThrowUserError('component_blank_description', - {'name' => $componentold}); + if ($comp_name ne $component_old->name) { + my $component = + new Bugzilla::Component({product_id => $product->id, + name => $comp_name}); + if ($component) { + ThrowUserError('component_already_exists', + {'name' => $component->name}); } - SendSQL("UPDATE components - SET description=" . SqlQuote($description) . " - WHERE id=$component_id"); - - $vars->{'updated_description'} = 1; - $vars->{'description'} = $description; } + $description || ThrowUserError('component_blank_description', + {'name' => $component_old->name}); - if ($initialowner ne $initialownerold) { + $default_assignee || ThrowUserError('component_need_initialowner', + {name => $comp_name}); - my $initialownerid = login_to_id($initialowner); - unless ($initialownerid) { - ThrowUserError('component_need_valid_initialowner', - {'name' => $componentold}); - } + my $default_assignee_id = login_to_id($default_assignee); + my $default_qa_contact_id = login_to_id($default_qa_contact) || undef; - SendSQL("UPDATE components - SET initialowner=" . SqlQuote($initialownerid) . " - WHERE id = $component_id"); + $dbh->bz_lock_tables('components WRITE', 'products READ', + 'profiles READ'); - $vars->{'updated_initialowner'} = 1; - $vars->{'initialowner'} = $initialowner; + if ($comp_name ne $component_old->name) { - } + trick_taint($comp_name); + $dbh->do("UPDATE components SET name = ? WHERE id = ?", + undef, ($comp_name, $component_old->id)); - if (Param('useqacontact') && $initialqacontact ne $initialqacontactold) { - my $initialqacontactid = login_to_id($initialqacontact); - if (!$initialqacontactid && $initialqacontact ne '') { - ThrowUserError('component_need_valid_initialqacontact', - {'name' => $componentold}); - } - my $initialqacontactsql = - $initialqacontact ne '' ? SqlQuote($initialqacontactid) : 'NULL'; + unlink "$datadir/versioncache"; + $vars->{'updated_name'} = 1; - SendSQL("UPDATE components - SET initialqacontact = $initialqacontactsql - WHERE id = $component_id"); + } - $vars->{'updated_initialqacontact'} = 1; - $vars->{'initialqacontact'} = $initialqacontact; + if ($description ne $component_old->description) { + + trick_taint($description); + $dbh->do("UPDATE components SET description = ? WHERE id = ?", + undef, ($description, $component_old->id)); + + $vars->{'updated_description'} = 1; + $vars->{'description'} = $description; } + if ($default_assignee ne $component_old->default_assignee->login) { - if ($component ne $componentold) { - unless ($component) { - ThrowUserError('component_must_have_a_name', - {'name' => $componentold}); - } - if (TestComponent($product, $component)) { - ThrowUserError('component_already_exists', - {'name' => $component}); - } + $dbh->do("UPDATE components SET initialowner = ? WHERE id = ?", + undef, ($default_assignee_id, $component_old->id)); + + $vars->{'updated_initialowner'} = 1; + $vars->{'initialowner'} = $default_assignee; - SendSQL("UPDATE components SET name=" . SqlQuote($component) . - "WHERE id=$component_id"); + } - unlink "$datadir/versioncache"; - $vars->{'updated_name'} = 1; + if (Param('useqacontact') + && $default_qa_contact ne $component_old->default_qa_contact->login) { + $dbh->do("UPDATE components SET initialqacontact = ? + WHERE id = ?", undef, + ($default_qa_contact_id, $component_old->id)); + $vars->{'updated_initialqacontact'} = 1; + $vars->{'initialqacontact'} = $default_qa_contact; } $dbh->bz_unlock_tables(); - $vars->{'name'} = $component; - $vars->{'product'} = $product; + $vars->{'name'} = $comp_name; + $vars->{'product'} = $product->name; $template->process("admin/components/updated.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -631,8 +412,6 @@ if ($action eq 'update') { exit; } - - # # No valid action found # diff --git a/editflagtypes.cgi b/editflagtypes.cgi index 233f33bdc..dfef55647 100755 --- a/editflagtypes.cgi +++ b/editflagtypes.cgi @@ -29,20 +29,22 @@ use strict; use lib "."; # Include the Bugzilla CGI and general utility library. -require "CGI.pl"; +require "globals.pl"; # Use Bugzilla's flag modules for handling flag types. use Bugzilla; use Bugzilla::Constants; use Bugzilla::Flag; use Bugzilla::FlagType; -use Bugzilla::User; +use Bugzilla::Group; +use Bugzilla::Util; -use vars qw( $template $vars ); +my $template = Bugzilla->template; +my $vars = {}; # Make sure the user is logged in and is an administrator. -Bugzilla->login(LOGIN_REQUIRED); -UserInGroup("editcomponents") +my $user = Bugzilla->login(LOGIN_REQUIRED); +$user->in_group('editcomponents') || ThrowUserError("auth_failure", {group => "editcomponents", action => "edit", object => "flagtypes"}); @@ -111,6 +113,7 @@ sub list { sub edit { $action eq 'enter' ? validateTargetType() : (my $id = validateID()); + my $dbh = Bugzilla->dbh; # Get this installation's products and components. GetVersionTable(); @@ -139,8 +142,9 @@ sub edit { foreach my $group ("grant_gid", "request_gid") { my $gid = $vars->{'type'}->{$group}; next if (!$gid); - SendSQL("SELECT name FROM groups WHERE id = $gid"); - $vars->{'type'}->{$group} = FetchOneColumn(); + ($vars->{'type'}->{$group}) = + $dbh->selectrow_array('SELECT name FROM groups WHERE id = ?', + undef, $gid); } } # Otherwise set the target type (the minimal information about the type @@ -152,7 +156,9 @@ sub edit { $vars->{'type'} = { 'target_type' => scalar $cgi->param('target_type'), 'inclusions' => \%inclusions }; } - + # Get a list of groups available to restrict this flag type against. + my @groups = Bugzilla::Group::get_all_groups(); + $vars->{'groups'} = \@groups; # Return the appropriate HTTP response headers. print $cgi->header(); @@ -204,7 +210,8 @@ sub processCategoryChange { $vars->{'products'} = \@::legal_product; $vars->{'components'} = \@::legal_components; $vars->{'components_by_product'} = \%::components; - + my @groups = Bugzilla::Group::get_all_groups(); + $vars->{'groups'} = \@groups; $vars->{'action'} = $cgi->param('action'); my $type = {}; foreach my $key ($cgi->param()) { $type->{$key} = $cgi->param($key) } @@ -236,9 +243,9 @@ sub clusion_array_to_hash { } sub insert { - validateName(); - validateDescription(); - validateCCList(); + my $name = validateName(); + my $description = validateDescription(); + my $cc_list = validateCCList(); validateTargetType(); validateSortKey(); validateIsActive(); @@ -249,9 +256,6 @@ sub insert { my $dbh = Bugzilla->dbh; - my $name = SqlQuote($cgi->param('name')); - my $description = SqlQuote($cgi->param('description')); - my $cc_list = SqlQuote($cgi->param('cc_list')); my $target_type = $cgi->param('target_type') eq "bug" ? "b" : "a"; $dbh->bz_lock_tables('flagtypes WRITE', 'products READ', @@ -259,23 +263,21 @@ sub insert { 'flagexclusions WRITE'); # Determine the new flag type's unique identifier. - SendSQL("SELECT MAX(id) FROM flagtypes"); - my $id = FetchSQLData() + 1; - + my $id = $dbh->selectrow_array('SELECT MAX(id) FROM flagtypes') + 1; + # Insert a record for the new flag type into the database. - SendSQL("INSERT INTO flagtypes (id, name, description, cc_list, - target_type, sortkey, is_active, is_requestable, - is_requesteeble, is_multiplicable, - grant_group_id, request_group_id) - VALUES ($id, $name, $description, $cc_list, '$target_type', " . - $cgi->param('sortkey') . ", " . - $cgi->param('is_active') . ", " . - $cgi->param('is_requestable') . ", " . - $cgi->param('is_requesteeble') . ", " . - $cgi->param('is_multiplicable') . ", " . - $cgi->param('grant_gid') . ", " . - $cgi->param('request_gid') . ")"); - + $dbh->do('INSERT INTO flagtypes + (id, name, description, cc_list, target_type, + sortkey, is_active, is_requestable, + is_requesteeble, is_multiplicable, + grant_group_id, request_group_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', + undef, ($id, $name, $description, $cc_list, $target_type, + $cgi->param('sortkey'), $cgi->param('is_active'), + $cgi->param('is_requestable'), $cgi->param('is_requesteeble'), + $cgi->param('is_multiplicable'), scalar($cgi->param('grant_gid')), + scalar($cgi->param('request_gid')))); + # Populate the list of inclusions/exclusions for this flag type. validateAndSubmit($id); @@ -295,9 +297,9 @@ sub insert { sub update { my $id = validateID(); - validateName(); - validateDescription(); - validateCCList(); + my $name = validateName(); + my $description = validateDescription(); + my $cc_list = validateCCList(); validateTargetType(); validateSortKey(); validateIsActive(); @@ -307,26 +309,20 @@ sub update { validateGroups(); my $dbh = Bugzilla->dbh; - - my $name = SqlQuote($cgi->param('name')); - my $description = SqlQuote($cgi->param('description')); - my $cc_list = SqlQuote($cgi->param('cc_list')); - $dbh->bz_lock_tables('flagtypes WRITE', 'products READ', 'components READ', 'flaginclusions WRITE', 'flagexclusions WRITE'); - SendSQL("UPDATE flagtypes - SET name = $name , - description = $description , - cc_list = $cc_list , - sortkey = " . $cgi->param('sortkey') . ", - is_active = " . $cgi->param('is_active') . ", - is_requestable = " . $cgi->param('is_requestable') . ", - is_requesteeble = " . $cgi->param('is_requesteeble') . ", - is_multiplicable = " . $cgi->param('is_multiplicable') . ", - grant_group_id = " . $cgi->param('grant_gid') . ", - request_group_id = " . $cgi->param('request_gid') . " - WHERE id = $id"); + $dbh->do('UPDATE flagtypes + SET name = ?, description = ?, cc_list = ?, + sortkey = ?, is_active = ?, is_requestable = ?, + is_requesteeble = ?, is_multiplicable = ?, + grant_group_id = ?, request_group_id = ? + WHERE id = ?', + undef, ($name, $description, $cc_list, $cgi->param('sortkey'), + $cgi->param('is_active'), $cgi->param('is_requestable'), + $cgi->param('is_requesteeble'), $cgi->param('is_multiplicable'), + scalar($cgi->param('grant_gid')), scalar($cgi->param('request_gid')), + $id)); # Update the list of inclusions/exclusions for this flag type. validateAndSubmit($id); @@ -335,34 +331,40 @@ sub update { # Clear existing flags for bugs/attachments in categories no longer on # the list of inclusions or that have been added to the list of exclusions. - SendSQL(" - SELECT flags.id - FROM flags - INNER JOIN bugs - ON flags.bug_id = bugs.bug_id - LEFT OUTER JOIN flaginclusions AS i - ON (flags.type_id = i.type_id - AND (bugs.product_id = i.product_id OR i.product_id IS NULL) - AND (bugs.component_id = i.component_id OR i.component_id IS NULL)) - WHERE flags.type_id = $id - AND flags.is_active = 1 - AND i.type_id IS NULL - "); - Bugzilla::Flag::clear(FetchOneColumn()) while MoreSQLData(); + my $flag_ids = $dbh->selectcol_arrayref('SELECT flags.id + FROM flags + INNER JOIN bugs + ON flags.bug_id = bugs.bug_id + LEFT OUTER JOIN flaginclusions AS i + ON (flags.type_id = i.type_id + AND (bugs.product_id = i.product_id + OR i.product_id IS NULL) + AND (bugs.component_id = i.component_id + OR i.component_id IS NULL)) + WHERE flags.type_id = ? + AND flags.is_active = 1 + AND i.type_id IS NULL', + undef, $id); + foreach my $flag_id (@$flag_ids) { + Bugzilla::Flag::clear($flag_id); + } - SendSQL(" - SELECT flags.id - FROM flags - INNER JOIN bugs - ON flags.bug_id = bugs.bug_id - INNER JOIN flagexclusions AS e - ON flags.type_id = e.type_id - WHERE flags.type_id = $id - AND flags.is_active = 1 - AND (bugs.product_id = e.product_id OR e.product_id IS NULL) - AND (bugs.component_id = e.component_id OR e.component_id IS NULL) - "); - Bugzilla::Flag::clear(FetchOneColumn()) while MoreSQLData(); + $flag_ids = $dbh->selectcol_arrayref('SELECT flags.id + FROM flags + INNER JOIN bugs + ON flags.bug_id = bugs.bug_id + INNER JOIN flagexclusions AS e + ON flags.type_id = e.type_id + WHERE flags.type_id = ? + AND flags.is_active = 1 + AND (bugs.product_id = e.product_id + OR e.product_id IS NULL) + AND (bugs.component_id = e.component_id + OR e.component_id IS NULL)', + undef, $id); + foreach my $flag_id (@$flag_ids) { + Bugzilla::Flag::clear($flag_id); + } $vars->{'name'} = $cgi->param('name'); $vars->{'message'} = "flag_type_changes_saved"; @@ -411,13 +413,13 @@ sub deleteType { # Get the name of the flag type so we can tell users # what was deleted. - SendSQL("SELECT name FROM flagtypes WHERE id = $id"); - $vars->{'name'} = FetchOneColumn(); - - SendSQL("DELETE FROM flags WHERE type_id = $id"); - SendSQL("DELETE FROM flaginclusions WHERE type_id = $id"); - SendSQL("DELETE FROM flagexclusions WHERE type_id = $id"); - SendSQL("DELETE FROM flagtypes WHERE id = $id"); + ($vars->{'name'}) = $dbh->selectrow_array('SELECT name FROM flagtypes + WHERE id = ?', undef, $id); + + $dbh->do('DELETE FROM flags WHERE type_id = ?', undef, $id); + $dbh->do('DELETE FROM flaginclusions WHERE type_id = ?', undef, $id); + $dbh->do('DELETE FROM flagexclusions WHERE type_id = ?', undef, $id); + $dbh->do('DELETE FROM flagtypes WHERE id = ?', undef, $id); $dbh->bz_unlock_tables(); $vars->{'message'} = "flag_type_deleted"; @@ -438,7 +440,7 @@ sub deactivate { my $dbh = Bugzilla->dbh; $dbh->bz_lock_tables('flagtypes WRITE'); - SendSQL("UPDATE flagtypes SET is_active = 0 WHERE id = $id"); + $dbh->do('UPDATE flagtypes SET is_active = 0 WHERE id = ?', undef, $id); $dbh->bz_unlock_tables(); $vars->{'message'} = "flag_type_deactivated"; @@ -458,38 +460,46 @@ sub deactivate { ################################################################################ sub validateID { + my $dbh = Bugzilla->dbh; # $flagtype_id is destroyed if detaint_natural fails. my $flagtype_id = $cgi->param('id'); detaint_natural($flagtype_id) || ThrowCodeError("flag_type_id_invalid", { id => scalar $cgi->param('id') }); - SendSQL("SELECT 1 FROM flagtypes WHERE id = $flagtype_id"); - FetchOneColumn() + my $flagtype_exists = + $dbh->selectrow_array('SELECT 1 FROM flagtypes WHERE id = ?', + undef, $flagtype_id); + $flagtype_exists || ThrowCodeError("flag_type_nonexistent", { id => $flagtype_id }); return $flagtype_id; } sub validateName { - $cgi->param('name') - && $cgi->param('name') !~ /[ ,]/ - && length($cgi->param('name')) <= 50 + my $name = $cgi->param('name'); + ($name && $name !~ /[ ,]/ && length($name) <= 50) || ThrowUserError("flag_type_name_invalid", - { name => scalar $cgi->param('name') }); + { name => $name }); + trick_taint($name); + return $name; } sub validateDescription { - length($cgi->param('description')) < 2**16-1 + my $description = $cgi->param('description'); + length($description) < 2**16-1 || ThrowUserError("flag_type_description_invalid"); + trick_taint($description); + return $description; } sub validateCCList { - length($cgi->param('cc_list')) <= 200 + my $cc_list = $cgi->param('cc_list'); + length($cc_list) <= 200 || ThrowUserError("flag_type_cc_list_invalid", - { cc_list => $cgi->param('cc_list') }); - - my @addresses = split(/[, ]+/, $cgi->param('cc_list')); + { cc_list => $cc_list }); + + my @addresses = split(/[, ]+/, $cc_list); # We do not call Util::validate_email_syntax because these # addresses do not require to match 'emailregexp' and do not # depend on 'emailsuffix'. So we limit ourselves to a simple @@ -502,6 +512,8 @@ sub validateCCList { || ThrowUserError('illegal_email_address', {addr => $address, default => 1}); } + trick_taint($cc_list); + return $cc_list; } sub validateProduct { @@ -561,17 +573,20 @@ sub validateAllowMultiple { } sub validateGroups { + my $dbh = Bugzilla->dbh; # Convert group names to group IDs foreach my $col ("grant_gid", "request_gid") { my $name = $cgi->param($col); - $cgi->param($col, "NULL") unless $name; - next if (!$name); - SendSQL("SELECT id FROM groups WHERE name = " . SqlQuote($name)); - my $gid = FetchOneColumn(); - if (!$gid) { - ThrowUserError("group_unknown", { name => $name }); + if ($name) { + trick_taint($name); + my $gid = $dbh->selectrow_array('SELECT id FROM groups + WHERE name = ?', undef, $name); + $gid || ThrowUserError("group_unknown", { name => $name }); + $cgi->param($col, $gid); + } + else { + $cgi->delete($col); } - $cgi->param($col, $gid); } } @@ -579,7 +594,7 @@ sub validateGroups { # added by the user and have passed all validation tests. # The only way to have invalid product/component combinations is to # hack the URL. So we silently ignore them, if any. -sub validateAndSubmit ($) { +sub validateAndSubmit { my ($id) = @_; my $dbh = Bugzilla->dbh; diff --git a/editgroups.cgi b/editgroups.cgi index bc7806df4..c366c6d79 100755 --- a/editgroups.cgi +++ b/editgroups.cgi @@ -31,19 +31,20 @@ use lib "."; use Bugzilla; use Bugzilla::Constants; +use Bugzilla::Group; use Bugzilla::User; -require "CGI.pl"; +require "globals.pl"; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; -use vars qw($template $vars); +my $user = Bugzilla->login(LOGIN_REQUIRED); -Bugzilla->login(LOGIN_REQUIRED); +print $cgi->header(); -print Bugzilla->cgi->header(); - -UserInGroup("creategroups") +$user->in_group('creategroups') || ThrowUserError("auth_failure", {group => "creategroups", action => "edit", object => "groups"}); @@ -51,25 +52,26 @@ UserInGroup("creategroups") my $action = trim($cgi->param('action') || ''); # RederiveRegexp: update user_group_map with regexp-based grants -sub RederiveRegexp ($$) +sub RederiveRegexp { my $regexp = shift; my $gid = shift; my $dbh = Bugzilla->dbh; - my $sth = $dbh->prepare("SELECT userid, login_name FROM profiles"); - my $sthqry = $dbh->prepare("SELECT 1 FROM user_group_map - WHERE user_id = ? AND group_id = ? - AND grant_type = ? and isbless = 0"); + my $sth = $dbh->prepare("SELECT userid, login_name, group_id + FROM profiles + LEFT JOIN user_group_map + ON user_group_map.user_id = profiles.userid + AND group_id = ? + AND grant_type = ? + AND isbless = 0"); my $sthadd = $dbh->prepare("INSERT INTO user_group_map (user_id, group_id, grant_type, isbless) VALUES (?, ?, ?, 0)"); my $sthdel = $dbh->prepare("DELETE FROM user_group_map WHERE user_id = ? AND group_id = ? AND grant_type = ? and isbless = 0"); - $sth->execute(); - while (my ($uid, $login) = $sth->fetchrow_array()) { - my $present = $dbh->selectrow_array($sthqry, undef, - $uid, $gid, GRANT_REGEXP); + $sth->execute($gid, GRANT_REGEXP); + while (my ($uid, $login, $present) = $sth->fetchrow_array()) { if (($regexp =~ /\S+/) && ($login =~ m/$regexp/i)) { $sthadd->execute($uid, $gid, GRANT_REGEXP) unless $present; @@ -173,32 +175,12 @@ sub CheckGroupRegexp { # If no action is specified, get a list of all groups available. unless ($action) { - my @groups; - - SendSQL("SELECT id,name,description,userregexp,isactive,isbuggroup " . - "FROM groups " . - "ORDER BY isbuggroup, name"); - - while (MoreSQLData()) { - my ($id, $name, $description, $regexp, $isactive, $isbuggroup) - = FetchSQLData(); - my $group = {}; - $group->{'id'} = $id; - $group->{'name'} = $name; - $group->{'description'} = $description; - $group->{'regexp'} = $regexp; - $group->{'isactive'} = $isactive; - $group->{'isbuggroup'} = $isbuggroup; - - push(@groups, $group); - } - + my @groups = Bugzilla::Group::get_all_groups(); $vars->{'groups'} = \@groups; - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/list.html.tmpl", $vars) || ThrowTemplateError($template->error()); - exit; } @@ -222,29 +204,34 @@ if ($action eq 'changeform') { # this one my @groups; - SendSQL("SELECT groups.id, groups.name, groups.description," . - " CASE WHEN group_group_map.member_id IS NOT NULL THEN 1 ELSE 0 END," . - " CASE WHEN B.member_id IS NOT NULL THEN 1 ELSE 0 END," . - " CASE WHEN C.member_id IS NOT NULL THEN 1 ELSE 0 END" . - " FROM groups" . - " LEFT JOIN group_group_map" . - " ON group_group_map.member_id = groups.id" . - " AND group_group_map.grantor_id = $group_id" . - " AND group_group_map.grant_type = " . GROUP_MEMBERSHIP . - " LEFT JOIN group_group_map as B" . - " ON B.member_id = groups.id" . - " AND B.grantor_id = $group_id" . - " AND B.grant_type = " . GROUP_BLESS . - " LEFT JOIN group_group_map as C" . - " ON C.member_id = groups.id" . - " AND C.grantor_id = $group_id" . - " AND C.grant_type = " . GROUP_VISIBLE . - " ORDER by name"); - - while (MoreSQLData()) { - my ($grpid, $grpnam, $grpdesc, $grpmember, $blessmember, $membercansee) - = FetchSQLData(); - + my $group_list = + $dbh->selectall_arrayref('SELECT groups.id, groups.name, groups.description, + CASE WHEN group_group_map.member_id IS NOT NULL + THEN 1 ELSE 0 END, + CASE WHEN B.member_id IS NOT NULL + THEN 1 ELSE 0 END, + CASE WHEN C.member_id IS NOT NULL + THEN 1 ELSE 0 END + FROM groups + LEFT JOIN group_group_map + ON group_group_map.member_id = groups.id + AND group_group_map.grantor_id = ? + AND group_group_map.grant_type = ? + LEFT JOIN group_group_map as B + ON B.member_id = groups.id + AND B.grantor_id = ? + AND B.grant_type = ? + LEFT JOIN group_group_map as C + ON C.member_id = groups.id + AND C.grantor_id = ? + AND C.grant_type = ? + ORDER by name', + undef, ($group_id, GROUP_MEMBERSHIP, + $group_id, GROUP_BLESS, + $group_id, GROUP_VISIBLE)); + + foreach (@$group_list) { + my ($grpid, $grpnam, $grpdesc, $grpmember, $blessmember, $membercansee) = @$_; my $group = {}; $group->{'grpid'} = $grpid; $group->{'grpnam'} = $grpnam; @@ -263,7 +250,7 @@ if ($action eq 'changeform') { $vars->{'isbuggroup'} = $isbuggroup; $vars->{'groups'} = \@groups; - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/edit.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -277,7 +264,7 @@ if ($action eq 'changeform') { # if ($action eq 'add') { - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/create.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -300,37 +287,35 @@ if ($action eq 'new') { my $isactive = $cgi->param('isactive') ? 1 : 0; # Add the new group - SendSQL("INSERT INTO groups ( " . - "name, description, isbuggroup, userregexp, isactive, last_changed " . - " ) VALUES ( " . - SqlQuote($name) . ", " . - SqlQuote($desc) . ", " . - "1," . - SqlQuote($regexp) . ", " . - $isactive . ", NOW())" ); + $dbh->do('INSERT INTO groups + (name, description, isbuggroup, + userregexp, isactive, last_changed) + VALUES (?, ?, 1, ?, ?, NOW())', + undef, ($name, $desc, $regexp, $isactive)); + my $gid = $dbh->bz_last_key('groups', 'id'); my $admin = GroupNameToId('admin'); # Since we created a new group, give the "admin" group all privileges # initially. - SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type) - VALUES ($admin, $gid, " . GROUP_MEMBERSHIP . ")"); - SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type) - VALUES ($admin, $gid, " . GROUP_BLESS . ")"); - SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type) - VALUES ($admin, $gid, " . GROUP_VISIBLE . ")"); + my $sth = $dbh->prepare('INSERT INTO group_group_map + (member_id, grantor_id, grant_type) + VALUES (?, ?, ?)'); + + $sth->execute($admin, $gid, GROUP_MEMBERSHIP); + $sth->execute($admin, $gid, GROUP_BLESS); + $sth->execute($admin, $gid, GROUP_VISIBLE); + # Permit all existing products to use the new group if makeproductgroups. if ($cgi->param('insertnew')) { - SendSQL("INSERT INTO group_control_map " . - "(group_id, product_id, entry, membercontrol, " . - "othercontrol, canedit) " . - "SELECT $gid, products.id, 0, " . - CONTROLMAPSHOWN . ", " . - CONTROLMAPNA . ", 0 " . - "FROM products"); + $dbh->do('INSERT INTO group_control_map + (group_id, product_id, entry, membercontrol, + othercontrol, canedit) + SELECT ?, products.id, 0, ?, ?, 0 FROM products', + undef, ($gid, CONTROLMAPSHOWN, CONTROLMAPNA)); } RederiveRegexp($regexp, $gid); - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/created.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -354,38 +339,26 @@ if ($action eq 'del') { ThrowUserError("system_group_not_deletable", { name => $name }); } - my $hasusers = 0; - SendSQL("SELECT user_id FROM user_group_map - WHERE group_id = $gid AND isbless = 0"); - if (FetchOneColumn()) { - $hasusers = 1; - } + # Group inheritance no longer appears in user_group_map. + my $grouplist = join(',', @{Bugzilla::User->flatten_group_membership($gid)}); + my $hasusers = + $dbh->selectrow_array("SELECT 1 FROM user_group_map + WHERE group_id IN ($grouplist) AND isbless = 0 " . + $dbh->sql_limit(1)) || 0; - my $hasbugs = 0; - my $buglist = "0"; - SendSQL("SELECT bug_id FROM bug_group_map WHERE group_id = $gid"); + my $bug_ids = $dbh->selectcol_arrayref('SELECT bug_id FROM bug_group_map + WHERE group_id = ?', undef, $gid); - if (MoreSQLData()) { - $hasbugs = 1; + my $hasbugs = scalar(@$bug_ids) ? 1 : 0; + my $buglist = join(',', @$bug_ids); - while (MoreSQLData()) { - my ($bug) = FetchSQLData(); - $buglist .= "," . $bug; - } - } + my $hasproduct = get_product_id($name) ? 1 : 0; - my $hasproduct = 0; - SendSQL("SELECT name FROM products WHERE name=" . SqlQuote($name)); - if (MoreSQLData()) { - $hasproduct = 1; - } - - my $hasflags = 0; - SendSQL("SELECT id FROM flagtypes - WHERE grant_group_id = $gid OR request_group_id = $gid"); - if (FetchOneColumn()) { - $hasflags = 1; - } + my $hasflags = $dbh->selectrow_array('SELECT 1 FROM flagtypes + WHERE grant_group_id = ? + OR request_group_id = ? ' . + $dbh->sql_limit(1), + undef, ($gid, $gid)) || 0; $vars->{'gid'} = $gid; $vars->{'name'} = $name; @@ -396,7 +369,7 @@ if ($action eq 'del') { $vars->{'hasflags'} = $hasflags; $vars->{'buglist'} = $buglist; - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -421,54 +394,66 @@ if ($action eq 'delete') { my $cantdelete = 0; - SendSQL("SELECT user_id FROM user_group_map - WHERE group_id = $gid AND isbless = 0"); - if (FetchOneColumn()) { - if (!defined $cgi->param('removeusers')) { - $cantdelete = 1; - } + # Group inheritance no longer appears in user_group_map. + my $grouplist = join(',', @{Bugzilla::User->flatten_group_membership($gid)}); + my $hasusers = + $dbh->selectrow_array("SELECT 1 FROM user_group_map + WHERE group_id IN ($grouplist) AND isbless = 0 " . + $dbh->sql_limit(1)) || 0; + + if ($hasusers && !defined $cgi->param('removeusers')) { + $cantdelete = 1; } - SendSQL("SELECT bug_id FROM bug_group_map WHERE group_id = $gid"); - if (FetchOneColumn()) { - if (!defined $cgi->param('removebugs')) { - $cantdelete = 1; - } + + my $hasbugs = $dbh->selectrow_array('SELECT 1 FROM bug_group_map + WHERE group_id = ? ' . + $dbh->sql_limit(1), + undef, $gid) || 0; + if ($hasbugs && !defined $cgi->param('removebugs')) { + $cantdelete = 1; } - SendSQL("SELECT name FROM products WHERE name=" . SqlQuote($name)); - if (FetchOneColumn()) { - if (!defined $cgi->param('unbind')) { - $cantdelete = 1; - } + + if (get_product_id($name) && !defined $cgi->param('unbind')) { + $cantdelete = 1; } - SendSQL("SELECT id FROM flagtypes - WHERE grant_group_id = $gid OR request_group_id = $gid"); - if (FetchOneColumn()) { - if (!defined $cgi->param('removeflags')) { - $cantdelete = 1; - } + + my $hasflags = $dbh->selectrow_array('SELECT 1 FROM flagtypes + WHERE grant_group_id = ? + OR request_group_id = ? ' . + $dbh->sql_limit(1), + undef, ($gid, $gid)) || 0; + if ($hasflags && !defined $cgi->param('removeflags')) { + $cantdelete = 1; } if (!$cantdelete) { - SendSQL("UPDATE flagtypes SET grant_group_id = NULL - WHERE grant_group_id = $gid"); - SendSQL("UPDATE flagtypes SET request_group_id = NULL - WHERE request_group_id = $gid"); - SendSQL("DELETE FROM user_group_map WHERE group_id = $gid"); - SendSQL("DELETE FROM group_group_map - WHERE grantor_id = $gid OR member_id = $gid"); - SendSQL("DELETE FROM bug_group_map WHERE group_id = $gid"); - SendSQL("DELETE FROM group_control_map WHERE group_id = $gid"); - SendSQL("DELETE FROM whine_schedules WHERE " . - "mailto_type = " . MAILTO_GROUP . " " . - "AND mailto = $gid"); - SendSQL("DELETE FROM groups WHERE id = $gid"); + $dbh->do('UPDATE flagtypes SET grant_group_id = ? + WHERE grant_group_id = ?', + undef, (undef, $gid)); + $dbh->do('UPDATE flagtypes SET request_group_id = ? + WHERE request_group_id = ?', + undef, (undef, $gid)); + $dbh->do('DELETE FROM user_group_map WHERE group_id = ?', + undef, $gid); + $dbh->do('DELETE FROM group_group_map + WHERE grantor_id = ? OR member_id = ?', + undef, ($gid, $gid)); + $dbh->do('DELETE FROM bug_group_map WHERE group_id = ?', + undef, $gid); + $dbh->do('DELETE FROM group_control_map WHERE group_id = ?', + undef, $gid); + $dbh->do('DELETE FROM whine_schedules + WHERE mailto_type = ? AND mailto = ?', + undef, (MAILTO_GROUP, $gid)); + $dbh->do('DELETE FROM groups WHERE id = ?', + undef, $gid); } $vars->{'gid'} = $gid; $vars->{'name'} = $name; $vars->{'cantdelete'} = $cantdelete; - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/deleted.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -502,7 +487,7 @@ if ($action eq 'postchanges') { $vars->{'regexp'} = $regexp; } - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/change.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -515,19 +500,20 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) { my $gid = CheckGroupID($cgi->param('group')); - my $sth = $dbh->prepare("SELECT name, userregexp FROM groups - WHERE id = ?"); - $sth->execute($gid); - my ($name, $regexp) = $sth->fetchrow_array(); + my ($name, $regexp) = + $dbh->selectrow_array('SELECT name, userregexp FROM groups + WHERE id = ?', undef, $gid); + $dbh->bz_lock_tables('groups WRITE', 'profiles READ', 'user_group_map WRITE'); - $sth = $dbh->prepare("SELECT user_group_map.user_id, profiles.login_name - FROM user_group_map - INNER JOIN profiles - ON user_group_map.user_id = profiles.userid - WHERE user_group_map.group_id = ? - AND grant_type = ? - AND isbless = 0"); + + my $sth = $dbh->prepare("SELECT user_group_map.user_id, profiles.login_name + FROM user_group_map + INNER JOIN profiles + ON user_group_map.user_id = profiles.userid + WHERE user_group_map.group_id = ? + AND grant_type = ? + AND isbless = 0"); $sth->execute($gid, GRANT_DIRECT); my @users; @@ -535,11 +521,12 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) { WHERE user_id = ? AND isbless = 0 AND group_id = ?"); + while ( my ($userid, $userlogin) = $sth->fetchrow_array() ) { if ((($regexp =~ /\S/) && ($userlogin =~ m/$regexp/i)) || ($action eq 'remove_all')) { - $sth2->execute($userid,$gid); + $sth2->execute($userid, $gid); my $user = {}; $user->{'login'} = $userlogin; @@ -547,10 +534,8 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) { } } - $sth = $dbh->prepare("UPDATE groups - SET last_changed = NOW() - WHERE id = ?"); - $sth->execute($gid); + $dbh->do('UPDATE groups SET last_changed = NOW() + WHERE id = ?', undef, $gid); $dbh->bz_unlock_tables(); $vars->{'users'} = \@users; @@ -559,7 +544,7 @@ if (($action eq 'remove_all_regexp') || ($action eq 'remove_all')) { $vars->{'remove_all'} = ($action eq 'remove_all'); $vars->{'gid'} = $gid; - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("admin/groups/remove.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -578,7 +563,6 @@ ThrowCodeError("action_unrecognized", $vars); sub doGroupChanges { my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; - my $sth; $dbh->bz_lock_tables('groups WRITE', 'group_group_map WRITE', 'bug_group_map WRITE', 'user_group_map WRITE', @@ -592,8 +576,8 @@ sub doGroupChanges { # The name and the description of system groups cannot be edited. # We then need to know if the group being edited is a system group. - SendSQL("SELECT isbuggroup FROM groups WHERE id = $gid"); - my ($isbuggroup) = FetchSQLData(); + my $isbuggroup = $dbh->selectrow_array('SELECT isbuggroup FROM groups + WHERE id = ?', undef, $gid); my $name; my $desc; my $isactive; @@ -612,18 +596,18 @@ sub doGroupChanges { if ($name ne $cgi->param('oldname')) { $chgs = 1; - $sth = $dbh->do("UPDATE groups SET name = ? WHERE id = ?", - undef, $name, $gid); + $dbh->do('UPDATE groups SET name = ? WHERE id = ?', + undef, ($name, $gid)); } if ($desc ne $cgi->param('olddesc')) { $chgs = 1; - $sth = $dbh->do("UPDATE groups SET description = ? WHERE id = ?", - undef, $desc, $gid); + $dbh->do('UPDATE groups SET description = ? WHERE id = ?', + undef, ($desc, $gid)); } if ($isactive ne $cgi->param('oldisactive')) { $chgs = 1; - $sth = $dbh->do("UPDATE groups SET isactive = ? WHERE id = ?", - undef, $isactive, $gid); + $dbh->do('UPDATE groups SET isactive = ? WHERE id = ?', + undef, ($isactive, $gid)); # If the group was mandatory for some products before # we deactivated it and we now activate this group again, # we have to add all bugs created while this group was @@ -633,11 +617,20 @@ sub doGroupChanges { } if ($regexp ne $cgi->param('oldregexp')) { $chgs = 1; - $sth = $dbh->do("UPDATE groups SET userregexp = ? WHERE id = ?", - undef, $regexp, $gid); + $dbh->do('UPDATE groups SET userregexp = ? WHERE id = ?', + undef, ($regexp, $gid)); RederiveRegexp($regexp, $gid); } + my $sthInsert = $dbh->prepare('INSERT INTO group_group_map + (member_id, grantor_id, grant_type) + VALUES (?, ?, ?)'); + + my $sthDelete = $dbh->prepare('DELETE FROM group_group_map + WHERE member_id = ? + AND grantor_id = ? + AND grant_type = ?'); + foreach my $b (grep {/^oldgrp-\d*$/} $cgi->param()) { if (defined($cgi->param($b))) { $b =~ /^oldgrp-(\d+)$/; @@ -646,13 +639,9 @@ sub doGroupChanges { if (($v != $gid) && ($cgi->param("oldgrp-$v") != $grp)) { $chgs = 1; if ($grp != 0) { - SendSQL("INSERT INTO group_group_map - (member_id, grantor_id, grant_type) - VALUES ($v, $gid," . GROUP_MEMBERSHIP . ")"); + $sthInsert->execute($v, $gid, GROUP_MEMBERSHIP); } else { - SendSQL("DELETE FROM group_group_map - WHERE member_id = $v AND grantor_id = $gid - AND grant_type = " . GROUP_MEMBERSHIP); + $sthDelete->execute($v, $gid, GROUP_MEMBERSHIP); } } @@ -661,13 +650,9 @@ sub doGroupChanges { if ((defined $oldbless) and ($oldbless != $bless)) { $chgs = 1; if ($bless != 0) { - SendSQL("INSERT INTO group_group_map - (member_id, grantor_id, grant_type) - VALUES ($v, $gid," . GROUP_BLESS . ")"); + $sthInsert->execute($v, $gid, GROUP_BLESS); } else { - SendSQL("DELETE FROM group_group_map - WHERE member_id = $v AND grantor_id = $gid - AND grant_type = " . GROUP_BLESS); + $sthDelete->execute($v, $gid, GROUP_BLESS); } } @@ -676,22 +661,19 @@ sub doGroupChanges { && ($cgi->param("oldcansee-$v") != $cansee)) { $chgs = 1; if ($cansee != 0) { - SendSQL("INSERT INTO group_group_map - (member_id, grantor_id, grant_type) - VALUES ($v, $gid," . GROUP_VISIBLE . ")"); + $sthInsert->execute($v, $gid, GROUP_VISIBLE); } else { - SendSQL("DELETE FROM group_group_map - WHERE member_id = $v AND grantor_id = $gid - AND grant_type = " . GROUP_VISIBLE); + $sthDelete->execute($v, $gid, GROUP_VISIBLE); } } } } - + if ($chgs) { # mark the changes - SendSQL("UPDATE groups SET last_changed = NOW() WHERE id = $gid"); + $dbh->do('UPDATE groups SET last_changed = NOW() + WHERE id = ?', undef, $gid); } $dbh->bz_unlock_tables(); return $gid, $chgs, $name, $regexp; diff --git a/editkeywords.cgi b/editkeywords.cgi index 0d2eb691e..5397f0aa5 100755 --- a/editkeywords.cgi +++ b/editkeywords.cgi @@ -23,19 +23,18 @@ use strict; use lib "."; -require "CGI.pl"; +require "globals.pl"; +use Bugzilla; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); -use Bugzilla::User; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; -use vars qw($template $vars); - - -sub Validate ($$) { +sub Validate { my ($name, $description) = @_; if ($name eq "") { ThrowUserError("keyword_blank_name"); @@ -46,6 +45,12 @@ sub Validate ($$) { if ($description eq "") { ThrowUserError("keyword_blank_description"); } + # It is safe to detaint these values as they are only + # used in placeholders. + trick_taint($name); + $_[0] = $name; + trick_taint($description); + $_[1] = $description; } sub ValidateKeyID { @@ -61,11 +66,11 @@ sub ValidateKeyID { # Preliminary checks: # -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); -print Bugzilla->cgi->header(); +print $cgi->header(); -UserInGroup("editkeywords") +$user->in_group('editkeywords') || ThrowUserError("auth_failure", {group => "editkeywords", action => "edit", object => "keywords"}); @@ -77,29 +82,18 @@ $vars->{'action'} = $action; if ($action eq "") { my @keywords; - SendSQL("SELECT keyworddefs.id, keyworddefs.name, keyworddefs.description, - COUNT(keywords.bug_id) - FROM keyworddefs LEFT JOIN keywords - ON keyworddefs.id = keywords.keywordid " . - $dbh->sql_group_by('keyworddefs.id', - 'keyworddefs.name, keyworddefs.description') . " - ORDER BY keyworddefs.name"); - - while (MoreSQLData()) { - my ($id, $name, $description, $bugs) = FetchSQLData(); - my $keyword = {}; - $keyword->{'id'} = $id; - $keyword->{'name'} = $name; - $keyword->{'description'} = $description; - $keyword->{'bug_count'} = $bugs; - push(@keywords, $keyword); - } - - print Bugzilla->cgi->header(); - - $vars->{'keywords'} = \@keywords; - $template->process("admin/keywords/list.html.tmpl", - $vars) + $vars->{'keywords'} = + $dbh->selectall_arrayref('SELECT keyworddefs.id, keyworddefs.name, + keyworddefs.description, + COUNT(keywords.bug_id) AS bug_count + FROM keyworddefs + LEFT JOIN keywords + ON keyworddefs.id = keywords.keywordid ' . + $dbh->sql_group_by('id', 'name, description') . ' + ORDER BY keyworddefs.name', {'Slice' => {}}); + + print $cgi->header(); + $template->process("admin/keywords/list.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -107,10 +101,9 @@ if ($action eq "") { if ($action eq 'add') { - print Bugzilla->cgi->header(); + print $cgi->header(); - $template->process("admin/keywords/create.html.tmpl", - $vars) + $template->process("admin/keywords/create.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -127,10 +120,11 @@ if ($action eq 'new') { my $description = trim($cgi->param('description') || ''); Validate($name, $description); - - SendSQL("SELECT id FROM keyworddefs WHERE name = " . SqlQuote($name)); - if (FetchOneColumn()) { + my $id = $dbh->selectrow_array('SELECT id FROM keyworddefs + WHERE name = ?', undef, $name); + + if ($id) { $vars->{'name'} = $name; ThrowUserError("keyword_already_exists", $vars); } @@ -141,12 +135,12 @@ if ($action eq 'new') { # rarely enough, and there really aren't ever going to be that many # keywords anyway. - SendSQL("SELECT id FROM keyworddefs ORDER BY id"); + my $existing_ids = + $dbh->selectcol_arrayref('SELECT id FROM keyworddefs ORDER BY id'); my $newid = 1; - while (MoreSQLData()) { - my $oldid = FetchOneColumn(); + foreach my $oldid (@$existing_ids) { if ($oldid > $newid) { last; } @@ -154,18 +148,17 @@ if ($action eq 'new') { } # Add the new keyword. - SendSQL("INSERT INTO keyworddefs (id, name, description) VALUES ($newid, " . - SqlQuote($name) . "," . - SqlQuote($description) . ")"); + $dbh->do('INSERT INTO keyworddefs + (id, name, description) VALUES (?, ?, ?)', + undef, ($newid, $name, $description)); # Make versioncache flush unlink "$datadir/versioncache"; - print Bugzilla->cgi->header(); + print $cgi->header(); $vars->{'name'} = $name; - $template->process("admin/keywords/created.html.tmpl", - $vars) + $template->process("admin/keywords/created.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -183,30 +176,27 @@ if ($action eq 'edit') { my $id = ValidateKeyID(scalar $cgi->param('id')); # get data of keyword - SendSQL("SELECT name,description - FROM keyworddefs - WHERE id=$id"); - my ($name, $description) = FetchSQLData(); + my ($name, $description) = + $dbh->selectrow_array('SELECT name, description FROM keyworddefs + WHERE id = ?', undef, $id); + if (!$name) { $vars->{'id'} = $id; ThrowCodeError("invalid_keyword_id", $vars); } - SendSQL("SELECT count(*) - FROM keywords - WHERE keywordid = $id"); - my $bugs = ''; - $bugs = FetchOneColumn() if MoreSQLData(); + my $bugs = $dbh->selectrow_array('SELECT COUNT(*) FROM keywords + WHERE keywordid = ?', + undef, $id); $vars->{'keyword_id'} = $id; $vars->{'name'} = $name; $vars->{'description'} = $description; $vars->{'bug_count'} = $bugs; - print Bugzilla->cgi->header(); + print $cgi->header(); - $template->process("admin/keywords/edit.html.tmpl", - $vars) + $template->process("admin/keywords/edit.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -225,27 +215,24 @@ if ($action eq 'update') { Validate($name, $description); - SendSQL("SELECT id FROM keyworddefs WHERE name = " . SqlQuote($name)); - - my $tmp = FetchOneColumn(); + my $tmp = $dbh->selectrow_array('SELECT id FROM keyworddefs + WHERE name = ?', undef, $name); if ($tmp && $tmp != $id) { $vars->{'name'} = $name; ThrowUserError("keyword_already_exists", $vars); } - SendSQL("UPDATE keyworddefs SET name = " . SqlQuote($name) . - ", description = " . SqlQuote($description) . - " WHERE id = $id"); + $dbh->do('UPDATE keyworddefs SET name = ?, description = ? + WHERE id = ?', undef, ($name, $description, $id)); # Make versioncache flush unlink "$datadir/versioncache"; - print Bugzilla->cgi->header(); + print $cgi->header(); $vars->{'name'} = $name; - $template->process("admin/keywords/rebuild-cache.html.tmpl", - $vars) + $template->process("admin/keywords/rebuild-cache.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -255,42 +242,38 @@ if ($action eq 'update') { if ($action eq 'delete') { my $id = ValidateKeyID(scalar $cgi->param('id')); - SendSQL("SELECT name FROM keyworddefs WHERE id=$id"); - my $name = FetchOneColumn(); + my $name = $dbh->selectrow_array('SELECT name FROM keyworddefs + WHERE id= ?', undef, $id); if (!$cgi->param('reallydelete')) { - SendSQL("SELECT count(*) - FROM keywords - WHERE keywordid = $id"); - - my $bugs = FetchOneColumn(); - + my $bugs = $dbh->selectrow_array('SELECT COUNT(*) FROM keywords + WHERE keywordid = ?', + undef, $id); + if ($bugs) { $vars->{'bug_count'} = $bugs; $vars->{'keyword_id'} = $id; $vars->{'name'} = $name; - print Bugzilla->cgi->header(); + print $cgi->header(); - $template->process("admin/keywords/confirm-delete.html.tmpl", - $vars) + $template->process("admin/keywords/confirm-delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; } } - SendSQL("DELETE FROM keywords WHERE keywordid = $id"); - SendSQL("DELETE FROM keyworddefs WHERE id = $id"); + $dbh->do('DELETE FROM keywords WHERE keywordid = ?', undef, $id); + $dbh->do('DELETE FROM keyworddefs WHERE id = ?', undef, $id); # Make versioncache flush unlink "$datadir/versioncache"; - print Bugzilla->cgi->header(); + print $cgi->header(); $vars->{'name'} = $name; - $template->process("admin/keywords/rebuild-cache.html.tmpl", - $vars) + $template->process("admin/keywords/rebuild-cache.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; diff --git a/editmilestones.cgi b/editmilestones.cgi index 32e6790c2..c87828526 100755 --- a/editmilestones.cgi +++ b/editmilestones.cgi @@ -19,117 +19,18 @@ use strict; use lib "."; -require "CGI.pl"; require "globals.pl"; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); -use Bugzilla::User; - -use vars qw($template $vars); +use Bugzilla::Product; +use Bugzilla::Milestone; +use Bugzilla::Bug; my $cgi = Bugzilla->cgi; - -# TestProduct: just returns if the specified product does exists -# CheckProduct: same check, optionally emit an error text -# TestMilestone: just returns if the specified product/version combination exists -# CheckMilestone: same check, optionally emit an error text - -sub TestProduct ($) -{ - my $product = shift; - - trick_taint($product); - - # does the product exist? - my $dbh = Bugzilla->dbh; - my $sth = $dbh->prepare_cached("SELECT name - FROM products - WHERE name = ?"); - $sth->execute($product); - - my ($row) = $sth->fetchrow_array; - - $sth->finish; - - return $row; -} - -sub CheckProduct ($) -{ - my $product = shift; - - # do we have a product? - unless ($product) { - ThrowUserError('product_not_specified'); - } - - # Does it exist in the DB? - unless (TestProduct $product) { - ThrowUserError('product_doesnt_exist', - {'product' => $product}); - } -} - -sub TestMilestone ($$) -{ - my ($product, $milestone) = @_; - - my $dbh = Bugzilla->dbh; - - # does the product exist? - my $sth = $dbh->prepare_cached(" - SELECT products.name, value - FROM milestones - INNER JOIN products - ON milestones.product_id = products.id - WHERE products.name = ? - AND value = ?"); - - trick_taint($product); - trick_taint($milestone); - - $sth->execute($product, $milestone); - - my ($db_milestone) = $sth->fetchrow_array(); - - $sth->finish(); - - return $db_milestone; -} - -sub CheckMilestone ($$) -{ - my ($product, $milestone) = @_; - - # do we have the milestone and product combination? - unless ($milestone) { - ThrowUserError('milestone_not_specified'); - } - - CheckProduct($product); - - unless (TestMilestone $product, $milestone) { - ThrowUserError('milestone_not_valid', - {'product' => $product, - 'milestone' => $milestone}); - } -} - -sub CheckSortkey ($$) -{ - my ($milestone, $sortkey) = @_; - # Keep a copy in case detaint_signed() clears the sortkey - my $stored_sortkey = $sortkey; - - if (!detaint_signed($sortkey) || $sortkey < -32768 || $sortkey > 32767) { - ThrowUserError('milestone_sortkey_invalid', - {'name' => $milestone, - 'sortkey' => $stored_sortkey}); - } - - return $sortkey; -} +my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; # # Preliminary checks: @@ -138,9 +39,9 @@ sub CheckSortkey ($$) my $user = Bugzilla->login(LOGIN_REQUIRED); my $whoid = $user->id; -print Bugzilla->cgi->header(); +print $cgi->header(); -UserInGroup("editcomponents") +$user->in_group('editcomponents') || ThrowUserError("auth_failure", {group => "editcomponents", action => "edit", object => "milestones"}); @@ -148,47 +49,31 @@ UserInGroup("editcomponents") # # often used variables # -my $product = trim($cgi->param('product') || ''); -my $milestone = trim($cgi->param('milestone') || ''); -my $sortkey = trim($cgi->param('sortkey') || '0'); -my $action = trim($cgi->param('action') || ''); +my $product_name = trim($cgi->param('product') || ''); +my $milestone_name = trim($cgi->param('milestone') || ''); +my $sortkey = trim($cgi->param('sortkey') || 0); +my $action = trim($cgi->param('action') || ''); +my $showbugcounts = (defined $cgi->param('showbugcounts')); # -# product = '' -> Show nice list of milestones +# product = '' -> Show nice list of products # -unless ($product) { +unless ($product_name) { + $vars->{'products'} = $user->get_selectable_products; + $vars->{'showbugcounts'} = $showbugcounts; - my @products = (); - - my $dbh = Bugzilla->dbh; - - my $sth = $dbh->prepare_cached('SELECT products.name, products.description - FROM products - ORDER BY products.name'); - - my $data = $dbh->selectall_arrayref($sth); - - foreach my $aref (@$data) { - - my $prod = {}; - - my ($name, $description) = @$aref; - - $prod->{'name'} = $name; - $prod->{'description'} = $description; - - push(@products, $prod); - } - - $vars->{'products'} = \@products; - $template->process("admin/milestones/select-product.html.tmpl", - $vars) + $template->process("admin/milestones/select-product.html.tmpl", $vars) || ThrowTemplateError($template->error()); - exit; } +# First make sure the product name is valid. +my $product = Bugzilla::Product::check_product($product_name); + +# Then make sure the user is allowed to edit properties of this product. +$user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); # @@ -197,34 +82,10 @@ unless ($product) { unless ($action) { - CheckProduct($product); - my $product_id = get_product_id($product); - my @milestones = (); - - my $dbh = Bugzilla->dbh; - - my $sth = $dbh->prepare_cached('SELECT value, sortkey - FROM milestones - WHERE product_id = ? - ORDER BY sortkey, value'); - - my $data = $dbh->selectall_arrayref($sth, - undef, - $product_id); - - foreach my $aref (@$data) { - - my $milestone = {}; - my ($name, $sortkey) = @$aref; - - $milestone->{'name'} = $name; - $milestone->{'sortkey'} = $sortkey; - - push(@milestones, $milestone); - } - - $vars->{'product'} = $product; - $vars->{'milestones'} = \@milestones; + $vars->{'showbugcounts'} = $showbugcounts; + $vars->{'product'} = $product->name; + $vars->{'milestones'} = $product->milestones; + $vars->{'default_milestone'} = $product->default_milestone; $template->process("admin/milestones/list.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -243,10 +104,7 @@ unless ($action) { if ($action eq 'add') { - CheckProduct($product); - my $product_id = get_product_id($product); - - $vars->{'product'} = $product; + $vars->{'product'} = $product->name; $template->process("admin/milestones/create.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -262,43 +120,36 @@ if ($action eq 'add') { if ($action eq 'new') { - CheckProduct($product); - my $product_id = get_product_id($product); + $milestone_name || ThrowUserError('milestone_blank_name'); - # Cleanups and valididy checks - unless ($milestone) { - ThrowUserError('milestone_blank_name', - {'name' => $milestone}); - } - - if (length($milestone) > 20) { + if (length($milestone_name) > 20) { ThrowUserError('milestone_name_too_long', - {'name' => $milestone}); + {'name' => $milestone_name}); } - $sortkey = CheckSortkey($milestone, $sortkey); + $sortkey = Bugzilla::Milestone::check_sort_key($milestone_name, + $sortkey); - if (TestMilestone($product, $milestone)) { + my $milestone = new Bugzilla::Milestone($product->id, + $milestone_name); + + if ($milestone) { ThrowUserError('milestone_already_exists', - {'name' => $milestone, - 'product' => $product}); + {'name' => $milestone->name, + 'product' => $product->name}); } # Add the new milestone - my $dbh = Bugzilla->dbh; - trick_taint($milestone); + trick_taint($milestone_name); $dbh->do('INSERT INTO milestones ( value, product_id, sortkey ) VALUES ( ?, ?, ? )', - undef, - $milestone, - $product_id, - $sortkey); + undef, $milestone_name, $product->id, $sortkey); # Make versioncache flush unlink "$datadir/versioncache"; - $vars->{'name'} = $milestone; - $vars->{'product'} = $product; + $vars->{'name'} = $milestone_name; + $vars->{'product'} = $product->name; $template->process("admin/milestones/created.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -316,28 +167,18 @@ if ($action eq 'new') { # if ($action eq 'del') { - CheckMilestone($product, $milestone); - my $product_id = get_product_id($product); - my $dbh = Bugzilla->dbh; - - $vars->{'default_milestone'} = - $dbh->selectrow_array('SELECT defaultmilestone - FROM products WHERE id = ?', - undef, $product_id); - - trick_taint($milestone); - $vars->{'name'} = $milestone; - $vars->{'product'} = $product; + my $milestone = Bugzilla::Milestone::check_milestone($product, + $milestone_name); + + $vars->{'name'} = $milestone->name; + $vars->{'product'} = $product->name; # The default milestone cannot be deleted. - if ($vars->{'default_milestone'} eq $milestone) { + if ($product->default_milestone eq $milestone->name) { ThrowUserError("milestone_is_default", $vars); } - $vars->{'bug_count'} = - $dbh->selectrow_array("SELECT COUNT(bug_id) FROM bugs - WHERE product_id = ? AND target_milestone = ?", - undef, ($product_id, $milestone)) || 0; + $vars->{'bug_count'} = $milestone->bug_count; $template->process("admin/milestones/confirm-delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -351,21 +192,15 @@ if ($action eq 'del') { # if ($action eq 'delete') { - CheckMilestone($product, $milestone); - my $product_id = get_product_id($product); - my $dbh = Bugzilla->dbh; - - my $default_milestone = - $dbh->selectrow_array("SELECT defaultmilestone - FROM products WHERE id = ?", - undef, $product_id); - trick_taint($milestone); - $vars->{'name'} = $milestone; - $vars->{'product'} = $product; + my $milestone = + Bugzilla::Milestone::check_milestone($product, + $milestone_name); + $vars->{'name'} = $milestone->name; + $vars->{'product'} = $product->name; # The default milestone cannot be deleted. - if ($milestone eq $default_milestone) { + if ($milestone->name eq $product->default_milestone) { ThrowUserError("milestone_is_default", $vars); } @@ -374,7 +209,7 @@ if ($action eq 'delete') { my $bug_ids = $dbh->selectcol_arrayref("SELECT bug_id FROM bugs WHERE product_id = ? AND target_milestone = ?", - undef, ($product_id, $milestone)); + undef, ($product->id, $milestone->name)); my $nb_bugs = scalar(@$bug_ids); if ($nb_bugs) { @@ -382,17 +217,20 @@ if ($action eq 'delete') { foreach my $bug_id (@$bug_ids) { $dbh->do("UPDATE bugs SET target_milestone = ?, delta_ts = ? WHERE bug_id = ?", - undef, ($default_milestone, $timestamp, $bug_id)); + undef, ($product->default_milestone, $timestamp, + $bug_id)); # We have to update the 'bugs_activity' table too. - LogActivityEntry($bug_id, 'target_milestone', $milestone, - $default_milestone, $whoid, $timestamp); + LogActivityEntry($bug_id, 'target_milestone', + $milestone->name, + $product->default_milestone, + $whoid, $timestamp); } } $vars->{'bug_count'} = $nb_bugs; $dbh->do("DELETE FROM milestones WHERE product_id = ? AND value = ?", - undef, ($product_id, $milestone)); + undef, ($product->id, $milestone->name)); unlink "$datadir/versioncache"; @@ -411,25 +249,13 @@ if ($action eq 'delete') { if ($action eq 'edit') { - CheckMilestone($product, $milestone); - my $product_id = get_product_id($product); - - my $dbh = Bugzilla->dbh; - - my $sth = $dbh->prepare_cached('SELECT sortkey - FROM milestones - WHERE product_id = ? - AND value = ?'); - - trick_taint($milestone); + my $milestone = + Bugzilla::Milestone::check_milestone($product, + $milestone_name); - $vars->{'sortkey'} = $dbh->selectrow_array($sth, - undef, - $product_id, - $milestone) || 0; - - $vars->{'name'} = $milestone; - $vars->{'product'} = $product; + $vars->{'sortkey'} = $milestone->sortkey; + $vars->{'name'} = $milestone->name; + $vars->{'product'} = $product->name; $template->process("admin/milestones/edit.html.tmpl", $vars) @@ -446,80 +272,77 @@ if ($action eq 'edit') { if ($action eq 'update') { - my $milestoneold = trim($cgi->param('milestoneold') || ''); - my $sortkeyold = trim($cgi->param('sortkeyold') || '0'); - - CheckMilestone($product, $milestoneold); - my $product_id = get_product_id($product); + my $milestone_old_name = trim($cgi->param('milestoneold') || ''); + my $milestone_old = + Bugzilla::Milestone::check_milestone($product, + $milestone_old_name); - if (length($milestone) > 20) { + if (length($milestone_name) > 20) { ThrowUserError('milestone_name_too_long', - {'name' => $milestone}); + {'name' => $milestone_name}); } - my $dbh = Bugzilla->dbh; - $dbh->bz_lock_tables('bugs WRITE', 'milestones WRITE', 'products WRITE'); - if ($sortkey ne $sortkeyold) { - $sortkey = CheckSortkey($milestone, $sortkey); - - trick_taint($milestoneold); + if ($sortkey ne $milestone_old->sortkey) { + $sortkey = Bugzilla::Milestone::check_sort_key($milestone_name, + $sortkey); $dbh->do('UPDATE milestones SET sortkey = ? WHERE product_id = ? AND value = ?', undef, $sortkey, - $product_id, - $milestoneold); + $product->id, + $milestone_old->name); unlink "$datadir/versioncache"; $vars->{'updated_sortkey'} = 1; $vars->{'sortkey'} = $sortkey; } - if ($milestone ne $milestoneold) { - unless ($milestone) { + if ($milestone_name ne $milestone_old->name) { + unless ($milestone_name) { ThrowUserError('milestone_blank_name'); } - if (TestMilestone($product, $milestone)) { + my $milestone = + new Bugzilla::Milestone($product->id, $milestone_name); + if ($milestone) { ThrowUserError('milestone_already_exists', - {'name' => $milestone, - 'product' => $product}); + {'name' => $milestone->name, + 'product' => $product->name}); } - trick_taint($milestone); - trick_taint($milestoneold); + trick_taint($milestone_name); $dbh->do('UPDATE bugs SET target_milestone = ? WHERE target_milestone = ? AND product_id = ?', undef, - $milestone, - $milestoneold, - $product_id); + $milestone_name, + $milestone_old->name, + $product->id); $dbh->do("UPDATE milestones SET value = ? WHERE product_id = ? AND value = ?", undef, - $milestone, - $product_id, - $milestoneold); + $milestone_name, + $product->id, + $milestone_old->name); $dbh->do("UPDATE products SET defaultmilestone = ? WHERE id = ? AND defaultmilestone = ?", undef, - $milestone, - $product_id, - $milestoneold); + $milestone_name, + $product->id, + $milestone_old->name); unlink "$datadir/versioncache"; @@ -528,8 +351,8 @@ if ($action eq 'update') { $dbh->bz_unlock_tables(); - $vars->{'name'} = $milestone; - $vars->{'product'} = $product; + $vars->{'name'} = $milestone_name; + $vars->{'product'} = $product->name; $template->process("admin/milestones/updated.html.tmpl", $vars) || ThrowTemplateError($template->error()); diff --git a/editparams.cgi b/editparams.cgi index 620ae6bae..57058e7ad 100755 --- a/editparams.cgi +++ b/editparams.cgi @@ -20,125 +20,116 @@ # # Contributor(s): Terry Weissman <terry@mozilla.org> # J. Paul Reed <preed@sigkill.com> - +# Frédéric Buclin <LpSolit@gmail.com> use strict; use lib "."; use Bugzilla::Constants; -use Bugzilla::Config qw(:DEFAULT :admin); -use Bugzilla::User; +use Bugzilla::Config qw(:DEFAULT :admin :params $datadir); +use Bugzilla::Config::Common; -require "CGI.pl"; +require "globals.pl"; +use vars qw(@parampanels); -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); +my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; -print Bugzilla->cgi->header(); +print $cgi->header(); -UserInGroup("tweakparams") +$user->in_group('tweakparams') || ThrowUserError("auth_failure", {group => "tweakparams", - action => "modify", + action => "access", object => "parameters"}); -PutHeader("Edit parameters"); - -print "This lets you edit the basic operating parameters of bugzilla.\n"; -print "Be careful!\n"; -print "<p>\n"; -print "Any item you check Reset on will get reset to its default value.\n"; - -print "<form method=post action=doeditparams.cgi><table>\n"; - -my $rowbreak = "<tr><td colspan=2><hr></td></tr>"; -print $rowbreak; - -foreach my $i (GetParamList()) { - my $name = $i->{'name'}; - my $value = Param($name); - print "<tr><th align=right valign=top>$name:</th><td>$i->{'desc'}</td></tr>\n"; - print "<tr><td valign=top><input type=checkbox name=reset-$name>Reset</td><td>\n"; - SWITCH: for ($i->{'type'}) { - /^t$/ && do { - print "<input size=80 name=$name value=\"" . - value_quote($value) . "\">\n"; - last SWITCH; - }; - /^l$/ && do { - print "<textarea wrap=hard name=$name rows=10 cols=80>" . - value_quote($value) . "</textarea>\n"; - last SWITCH; - }; - /^b$/ && do { - my $on; - my $off; - if ($value) { - $on = "checked"; - $off = ""; - } else { - $on = ""; - $off = "checked"; - } - print "<input type=radio name=$name value=1 $on>On\n"; - print "<input type=radio name=$name value=0 $off>Off\n"; - last SWITCH; - }; - /^m$/ && do { - my @choices = @{$i->{'choices'}}; - ## showing 5 options seems like a nice round number; this should - ## probably be configurable; if you care, file a bug ;-) - my $boxSize = scalar(@choices) < 5 ? scalar(@choices) : 5; - - print "<select multiple size=\"$boxSize\" name=\"$name\">\n"; - - foreach my $item (@choices) { - my $selected = ""; - - if (lsearch($value, $item) >= 0) { - $selected = "selected"; - } +my $action = trim($cgi->param('action') || ''); +my $current_panel = $cgi->param('section') || 'core'; +$current_panel =~ /^([A-Za-z0-9_-]+)$/; +$current_panel = $1; + +GetVersionTable(); + +my $current_module; +my @panels = (); +foreach my $panel (@parampanels) { + next if ($panel eq 'Common'); + require "Bugzilla/Config/$panel.pm"; + my @module_param_list = "Bugzilla::Config::${panel}"->get_param_list(); + my $item = { name => lc($panel), + current => ($current_panel eq lc($panel)) ? 1 : 0, + param_list => \@module_param_list, + sortkey => eval "\$Bugzilla::Config::${panel}::sortkey;" + }; + push(@panels, $item); + $current_module = $panel if ($current_panel eq lc($panel)); +} - print "<option $selected value=\"" . html_quote($item) . "\">" . - html_quote($item) . "</option>\n"; - } +$vars->{panels} = \@panels; - print "</select>\n"; - last SWITCH; - }; - /^s$/ && do { - print "<select name=\"$name\">\n"; - my @choices = @{$i->{'choices'}}; +if ($action eq 'save' && $current_module) { + my @changes = (); + my @module_param_list = "Bugzilla::Config::${current_module}"->get_param_list(); - foreach my $item (@choices) { - my $selected = ""; + foreach my $i (@module_param_list) { + my $name = $i->{'name'}; + my $value = $cgi->param($name); - if ($value eq $item) { - $selected = "selected"; + if (defined $cgi->param("reset-$name")) { + $value = $i->{'default'}; + } else { + if ($i->{'type'} eq 'm') { + # This simplifies the code below + $value = [ $cgi->param($name) ]; + } else { + # Get rid of windows/mac-style line endings. + $value =~ s/\r\n?/\n/g; + # assume single linefeed is an empty string + $value =~ s/^\n$//; + } + } + + my $changed; + if ($i->{'type'} eq 'm') { + my @old = sort @{Param($name)}; + my @new = sort @$value; + if (scalar(@old) != scalar(@new)) { + $changed = 1; + } else { + $changed = 0; # Assume not changed... + for (my $cnt = 0; $cnt < scalar(@old); ++$cnt) { + if ($old[$cnt] ne $new[$cnt]) { + # entry is different, therefore changed + $changed = 1; + last; + } + } + } + } else { + $changed = ($value eq Param($name))? 0 : 1; + } + + if ($changed) { + if (exists $i->{'checker'}) { + my $ok = $i->{'checker'}->($value, $i); + if ($ok ne "") { + ThrowUserError('invalid_parameter', { name => $name, err => $ok }); } - - print "<option $selected value=\"" . html_quote($item) . "\">" . - html_quote($item) . "</option>\n"; - } - print "</select>\n"; - last SWITCH; - }; - # DEFAULT - print "<font color=red><blink>Unknown param type $i->{'type'}!!!</blink></font>\n"; + push(@changes, $name); + SetParam($name, $value); + if (($name eq "shutdownhtml") && ($value ne "")) { + $vars->{'shutdown_is_active'} = 1; + } + } } - print "</td></tr>\n"; - print $rowbreak; -} + $vars->{'message'} = 'parameters_updated'; + $vars->{'param_changed'} = \@changes; -print "<tr><th align=right valign=top>version:</th><td> -What version of Bugzilla this is. This can't be modified. -<tr><td></td><td>" . $Bugzilla::Config::VERSION . "</td></tr>"; - -print "</table>\n"; - -print "<input type=reset value=\"Reset form\"><br>\n"; -print "<input type=submit value=\"Submit changes\">\n"; - -print "</form>\n"; + WriteParams(); + unlink "$datadir/versioncache"; +} -print "<p><a href=query.cgi>Skip all this, and go back to the query page</a>\n"; -PutFooter(); +$template->process("admin/params/editparams.html.tmpl", $vars) + || ThrowTemplateError($template->error()); diff --git a/editproducts.cgi b/editproducts.cgi index e8bca5350..d7a5fcd45 100755 --- a/editproducts.cgi +++ b/editproducts.cgi @@ -23,8 +23,9 @@ # Dawn Endico <endico@mozilla.org> # Joe Robins <jmrobins@tgix.com> # Gavin Shelley <bugzilla@chimpychompy.org> -# Fr�d�ric Buclin <LpSolit@gmail.com> +# Frédéric Buclin <LpSolit@gmail.com> # Greg Hendricks <ghendricks@novell.com> +# Lance Larsh <lance.larsh@oracle.com> # # Direct any questions on this source code to # @@ -32,255 +33,19 @@ use strict; use lib "."; -use vars qw ($template $vars); use Bugzilla::Constants; -require "CGI.pl"; require "globals.pl"; use Bugzilla::Bug; use Bugzilla::Series; -use Bugzilla::User; use Bugzilla::Config qw(:DEFAULT $datadir); +use Bugzilla::Product; +use Bugzilla::Classification; +use Bugzilla::Milestone; # Shut up misguided -w warnings about "used only once". "use vars" just # doesn't work for me. use vars qw(@legal_bug_status @legal_resolution); -my %ctl = ( - &::CONTROLMAPNA => 'NA', - &::CONTROLMAPSHOWN => 'Shown', - &::CONTROLMAPDEFAULT => 'Default', - &::CONTROLMAPMANDATORY => 'Mandatory' -); - -# TestProduct: just returns if the specified product does exists -# CheckProduct: same check, optionally emit an error text - -sub TestProduct ($) -{ - my $prod = shift; - - # does the product exist? - SendSQL("SELECT name - FROM products - WHERE name=" . SqlQuote($prod)); - return FetchOneColumn(); -} - -sub CheckProduct ($) -{ - my $prod = shift; - - # do we have a product? - unless ($prod) { - print "Sorry, you haven't specified a product."; - PutTrailer(); - exit; - } - - unless (TestProduct $prod) { - print "Sorry, product '$prod' does not exist."; - PutTrailer(); - exit; - } -} - -# TestClassification: just returns if the specified classification does exists -# CheckClassification: same check, optionally emit an error text - -sub TestClassification ($) -{ - my $cl = shift; - - # does the classification exist? - SendSQL("SELECT name - FROM classifications - WHERE name=" . SqlQuote($cl)); - return FetchOneColumn(); -} - -sub CheckClassification ($) -{ - my $cl = shift; - - # do we have a classification? - unless ($cl) { - print "Sorry, you haven't specified a classification."; - PutTrailer(); - exit; - } - - unless (TestClassification $cl) { - print "Sorry, classification '$cl' does not exist."; - PutTrailer(); - exit; - } -} - -# For the transition period, as this file is templatised bit by bit, -# we need this routine, which does things properly, and will -# eventually be the only version. (The older versions assume a -# PutHeader() call has been made) -sub CheckClassificationNew ($) -{ - my $cl = shift; - - # do we have a classification? - unless ($cl) { - ThrowUserError('classification_not_specified'); - } - - unless (TestClassification $cl) { - ThrowUserError('classification_doesnt_exist', - {'name' => $cl}); - } -} - - -sub CheckClassificationProduct ($$) -{ - my $cl = shift; - my $prod = shift; - my $dbh = Bugzilla->dbh; - - CheckClassification($cl); - CheckProduct($prod); - - trick_taint($prod); - trick_taint($cl); - - my $query = q{SELECT products.name - FROM products - INNER JOIN classifications - ON products.classification_id = classifications.id - WHERE products.name = ? - AND classifications.name = ?}; - my $res = $dbh->selectrow_array($query, undef, ($prod, $cl)); - - unless ($res) { - print "Sorry, classification->product '$cl'->'$prod' does not exist."; - PutTrailer(); - exit; - } -} - -sub CheckClassificationProductNew ($$) -{ - my ($cl, $prod) = @_; - my $dbh = Bugzilla->dbh; - - CheckClassificationNew($cl); - - trick_taint($prod); - trick_taint($cl); - - my ($res) = $dbh->selectrow_array(q{ - SELECT products.name - FROM products - INNER JOIN classifications - ON products.classification_id = classifications.id - WHERE products.name = ? AND classifications.name = ?}, - undef, ($prod, $cl)); - - unless ($res) { - ThrowUserError('classification_doesnt_exist_for_product', - { product => $prod, classification => $cl }); - } -} - -# -# Displays the form to edit a products parameters -# - -sub EmitFormElements ($$$$$$$$$) -{ - my ($classification, $product, $description, $milestoneurl, $disallownew, - $votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone) - = @_; - - $product = value_quote($product); - $description = value_quote($description); - - if (Param('useclassification')) { - print " <TH ALIGN=\"right\">Classification:</TH>\n"; - print " <TD><b>",html_quote($classification),"</b></TD>\n"; - print "</TR><TR>\n"; - } - - print " <TH ALIGN=\"right\">Product:</TH>\n"; - print " <TD><INPUT SIZE=64 MAXLENGTH=64 NAME=\"product\" VALUE=\"$product\"></TD>\n"; - print "</TR><TR>\n"; - - print " <TH ALIGN=\"right\">Description:</TH>\n"; - print " <TD><TEXTAREA ROWS=4 COLS=64 WRAP=VIRTUAL NAME=\"description\">$description</TEXTAREA></TD>\n"; - - $defaultmilestone = value_quote($defaultmilestone); - if (Param('usetargetmilestone')) { - $milestoneurl = value_quote($milestoneurl); - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">URL describing milestones for this product:</TH>\n"; - print " <TD><INPUT TYPE=TEXT SIZE=64 MAXLENGTH=255 NAME=\"milestoneurl\" VALUE=\"$milestoneurl\"></TD>\n"; - - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Default milestone:</TH>\n"; - - print " <TD><INPUT TYPE=TEXT SIZE=20 MAXLENGTH=20 NAME=\"defaultmilestone\" VALUE=\"$defaultmilestone\"></TD>\n"; - } else { - print qq{<INPUT TYPE=HIDDEN NAME="defaultmilestone" VALUE="$defaultmilestone">\n}; - } - - - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Closed for bug entry:</TH>\n"; - my $closed = $disallownew ? "CHECKED" : ""; - print " <TD><INPUT TYPE=CHECKBOX NAME=\"disallownew\" $closed VALUE=\"1\"></TD>\n"; - - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Maximum votes per person:</TH>\n"; - print " <TD><INPUT SIZE=5 MAXLENGTH=5 NAME=\"votesperuser\" VALUE=\"$votesperuser\"></TD>\n"; - - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Maximum votes a person can put on a single bug:</TH>\n"; - print " <TD><INPUT SIZE=5 MAXLENGTH=5 NAME=\"maxvotesperbug\" VALUE=\"$maxvotesperbug\"></TD>\n"; - - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Number of votes a bug in this product needs to automatically get out of the <A HREF=\"page.cgi?id=fields.html#status\">UNCONFIRMED</A> state:</TH>\n"; - print " <TD><INPUT SIZE=5 MAXLENGTH=5 NAME=\"votestoconfirm\" VALUE=\"$votestoconfirm\"></TD>\n"; -} - - -# -# Displays a text like "a.", "a or b.", "a, b or c.", "a, b, c or d." -# - -sub PutTrailer (@) -{ - my (@links) = ("Back to the <A HREF=\"query.cgi\">query page</A>", @_); - - my $count = $#links; - my $num = 0; - print "<P>\n"; - foreach (@links) { - print $_; - if ($num == $count) { - print ".\n"; - } - elsif ($num == $count-1) { - print " or "; - } - else { - print ", "; - } - $num++; - } - PutFooter(); -} - - - - - - - # # Preliminary checks: # @@ -288,10 +53,14 @@ sub PutTrailer (@) my $user = Bugzilla->login(LOGIN_REQUIRED); my $whoid = $user->id; +my $dbh = Bugzilla->dbh; my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; + print $cgi->header(); -UserInGroup("editcomponents") +$user->in_group('editcomponents') || ThrowUserError("auth_failure", {group => "editcomponents", action => "edit", object => "products"}); @@ -299,47 +68,25 @@ UserInGroup("editcomponents") # # often used variables # -my $classification = trim($cgi->param('classification') || ''); -my $product = trim($cgi->param('product') || ''); +my $classification_name = trim($cgi->param('classification') || ''); +my $product_name = trim($cgi->param('product') || ''); my $action = trim($cgi->param('action') || ''); -my $headerdone = 0; -my $localtrailer = "<A HREF=\"editproducts.cgi\">edit</A> more products"; -my $classhtmlvarstart = ""; -my $classhtmlvar = ""; -my $dbh = Bugzilla->dbh; +my $showbugcounts = (defined $cgi->param('showbugcounts')); # # product = '' -> Show nice list of classifications (if # classifications enabled) # -if (Param('useclassification')) { - if ($classification) { - $classhtmlvar = "&classification=" . url_quote($classification); - $classhtmlvarstart = "?classification=" . url_quote($classification); - $localtrailer .= ", <A HREF=\"editproducts.cgi" . $classhtmlvarstart . "\">edit</A> in this classification"; - } - elsif (!$product) { - my $query = - "SELECT classifications.name, classifications.description, - COUNT(classification_id) AS product_count - FROM classifications - LEFT JOIN products - ON classifications.id = products.classification_id " . - $dbh->sql_group_by('classifications.id', - 'classifications.name, - classifications.description') . " - ORDER BY name"; - - $vars->{'classifications'} = $dbh->selectall_arrayref($query, - {'Slice' => {}}); - - $template->process("admin/products/list-classifications.html.tmpl", - $vars) - || ThrowTemplateError($template->error()); - - exit; - } +if (Param('useclassification') + && !$classification_name + && !$product_name) +{ + $vars->{'classifications'} = $user->get_selectable_classifications; + + $template->process("admin/products/list-classifications.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + exit; } @@ -348,54 +95,24 @@ if (Param('useclassification')) { # is already specified (then edit it) # -if (!$action && !$product) { +if (!$action && !$product_name) { + my $products; if (Param('useclassification')) { - CheckClassificationNew($classification); - } - - my @execute_params = (); - my @products = (); - - my $query = "SELECT products.name, - COALESCE(products.description,'') AS description, - disallownew = 0 AS status, - votesperuser, maxvotesperbug, votestoconfirm, - COUNT(bug_id) AS bug_count - FROM products"; - - if (Param('useclassification')) { - $query .= " INNER JOIN classifications " . - "ON classifications.id = products.classification_id"; - } + my $classification = + Bugzilla::Classification::check_classification($classification_name); - $query .= " LEFT JOIN bugs ON products.id = bugs.product_id"; - - if (Param('useclassification')) { - $query .= " WHERE classifications.name = ? "; - - # trick_taint is OK because we use this in a placeholder in a SELECT - trick_taint($classification); - - push(@execute_params, - $classification); + $products = $user->get_selectable_products($classification->id); + $vars->{'classification'} = $classification; + } else { + $products = $user->get_selectable_products; } - $query .= " " . $dbh->sql_group_by('products.name', - 'products.description, disallownew, - votesperuser, maxvotesperbug, - votestoconfirm'); - $query .= " ORDER BY products.name"; + $vars->{'products'} = $products; + $vars->{'showbugcounts'} = $showbugcounts; - $vars->{'products'} = $dbh->selectall_arrayref($query, - {'Slice' => {}}, - @execute_params); - - $vars->{'classification'} = $classification; - $template->process("admin/products/list.html.tmpl", - $vars) + $template->process("admin/products/list.html.tmpl", $vars) || ThrowTemplateError($template->error()); - exit; } @@ -409,176 +126,144 @@ if (!$action && !$product) { # if ($action eq 'add') { - PutHeader("Add Product"); if (Param('useclassification')) { - CheckClassification($classification); + my $classification = + Bugzilla::Classification::check_classification($classification_name); + $vars->{'classification'} = $classification; } - #print "This page lets you add a new product to bugzilla.\n"; - - print "<FORM METHOD=POST ACTION=editproducts.cgi>\n"; - print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n"; - - EmitFormElements($classification,'', '', '', 0, 0, 10000, 0, "---"); - - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Version:</TH>\n"; - print " <TD><INPUT SIZE=64 MAXLENGTH=255 NAME=\"version\" VALUE=\"unspecified\"></TD>\n"; - print "</TR><TR>\n"; - print " <TH ALIGN=\"right\">Create chart datasets for this product:</TH>\n"; - print " <TD><INPUT TYPE=CHECKBOX NAME=\"createseries\" VALUE=1></TD>"; - print "</TR>\n"; - - print "</TABLE>\n<HR>\n"; - print "<INPUT TYPE=SUBMIT VALUE=\"Add\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"new\">\n"; - print "<INPUT TYPE=HIDDEN NAME='subcategory' VALUE='-All-'>\n"; - print "<INPUT TYPE=HIDDEN NAME='open_name' VALUE='All Open'>\n"; - print "<INPUT TYPE=HIDDEN NAME='classification' VALUE='",html_quote($classification),"'>\n"; - print "</FORM>"; - - my $other = $localtrailer; - $other =~ s/more/other/; - PutTrailer($other); + $template->process("admin/products/create.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + exit; } - # # action='new' -> add product entered in the 'action=add' screen # if ($action eq 'new') { - PutHeader("Adding new product"); # Cleanups and validity checks my $classification_id = 1; if (Param('useclassification')) { - CheckClassification($classification); - $classification_id = get_classification_id($classification); + my $classification = + Bugzilla::Classification::check_classification($classification_name); + $classification_id = $classification->id; + $vars->{'classification'} = $classification; } - unless ($product) { - print "You must enter a name for the new product. Please press\n"; - print "<b>Back</b> and try again.\n"; - PutTrailer($localtrailer); - exit; + unless ($product_name) { + ThrowUserError("product_blank_name"); } - my $existing_product = TestProduct($product); + my $product = new Bugzilla::Product({name => $product_name}); - if ($existing_product) { + if ($product) { # Check for exact case sensitive match: - if ($existing_product eq $product) { - print "The product '$product' already exists. Please press\n"; - print "<b>Back</b> and try again.\n"; - PutTrailer($localtrailer); - exit; + if ($product->name eq $product_name) { + ThrowUserError("prod_name_already_in_use", + {'product' => $product->name}); } # Next check for a case-insensitive match: - if (lc($existing_product) eq lc($product)) { - print "The new product '$product' differs from existing product "; - print "'$existing_product' only in case. Please press\n"; - print "<b>Back</b> and try again.\n"; - PutTrailer($localtrailer); - exit; + if (lc($product->name) eq lc($product_name)) { + ThrowUserError("prod_name_diff_in_case", + {'product' => $product_name, + 'existing_product' => $product->name}); } } my $version = trim($cgi->param('version') || ''); if ($version eq '') { - print "You must enter a version for product '$product'. Please press\n"; - print "<b>Back</b> and try again.\n"; - PutTrailer($localtrailer); - exit; + ThrowUserError("product_must_have_version", + {'product' => $product_name}); } my $description = trim($cgi->param('description') || ''); if ($description eq '') { - print "You must enter a description for product '$product'. Please press\n"; - print "<b>Back</b> and try again.\n"; - PutTrailer($localtrailer); - exit; + ThrowUserError('product_must_have_description', + {'product' => $product_name}); } my $milestoneurl = trim($cgi->param('milestoneurl') || ''); - my $disallownew = 0; - $disallownew = 1 if $cgi->param('disallownew'); - my $votesperuser = $cgi->param('votesperuser'); - $votesperuser ||= 0; - my $maxvotesperbug = $cgi->param('maxvotesperbug'); - $maxvotesperbug = 10000 if !defined $maxvotesperbug; - my $votestoconfirm = $cgi->param('votestoconfirm'); - $votestoconfirm ||= 0; + my $disallownew = $cgi->param('disallownew') ? 1 : 0; + my $votesperuser = $cgi->param('votesperuser') || 0; + my $maxvotesperbug = defined($cgi->param('maxvotesperbug')) ? + $cgi->param('maxvotesperbug') : 10000; + my $votestoconfirm = $cgi->param('votestoconfirm') || 0; my $defaultmilestone = $cgi->param('defaultmilestone') || "---"; + # The following variables are used in placeholders only. + trick_taint($product_name); + trick_taint($version); + trick_taint($description); + trick_taint($milestoneurl); + trick_taint($defaultmilestone); + detaint_natural($disallownew); + detaint_natural($votesperuser); + detaint_natural($maxvotesperbug); + detaint_natural($votestoconfirm); + # Add the new product. - SendSQL("INSERT INTO products ( " . - "name, description, milestoneurl, disallownew, votesperuser, " . - "maxvotesperbug, votestoconfirm, defaultmilestone, classification_id" . - " ) VALUES ( " . - SqlQuote($product) . "," . - SqlQuote($description) . "," . - SqlQuote($milestoneurl) . "," . - # had tainting issues under cygwin, IIS 5.0, perl -T %s %s - # see bug 208647. http://bugzilla.mozilla.org/show_bug.cgi?id=208647 - # had to de-taint $disallownew, $votesperuser, $maxvotesperbug, - # and $votestoconfirm w/ SqlQuote() - # - jpyeron@pyerotechnics.com - SqlQuote($disallownew) . "," . - SqlQuote($votesperuser) . "," . - SqlQuote($maxvotesperbug) . "," . - SqlQuote($votestoconfirm) . "," . - SqlQuote($defaultmilestone) . "," . - SqlQuote($classification_id) . ")"); - my $product_id = $dbh->bz_last_key('products', 'id'); - - SendSQL("INSERT INTO versions ( " . - "value, product_id" . - " ) VALUES ( " . - SqlQuote($version) . "," . - $product_id . ")" ); - - SendSQL("INSERT INTO milestones (product_id, value) VALUES (" . - $product_id . ", " . SqlQuote($defaultmilestone) . ")"); + $dbh->do('INSERT INTO products + (name, description, milestoneurl, disallownew, votesperuser, + maxvotesperbug, votestoconfirm, defaultmilestone, classification_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', + undef, ($product_name, $description, $milestoneurl, $disallownew, + $votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone, + $classification_id)); + + $product = new Bugzilla::Product({name => $product_name}); + + $dbh->do('INSERT INTO versions (value, product_id) VALUES (?, ?)', + undef, ($version, $product->id)); + + $dbh->do('INSERT INTO milestones (product_id, value) VALUES (?, ?)', + undef, ($product->id, $defaultmilestone)); # If we're using bug groups, then we need to create a group for this # product as well. -JMR, 2/16/00 if (Param("makeproductgroups")) { # Next we insert into the groups table - my $productgroup = $product; + my $productgroup = $product->name; while (GroupExists($productgroup)) { $productgroup .= '_'; } - SendSQL("INSERT INTO groups " . - "(name, description, isbuggroup, last_changed) " . - "VALUES (" . - SqlQuote($productgroup) . ", " . - SqlQuote("Access to bugs in the $product product") . ", 1, NOW())"); + my $group_description = "Access to bugs in the " . + $product->name . " product"; + + $dbh->do('INSERT INTO groups + (name, description, isbuggroup, last_changed) + VALUES (?, ?, ?, NOW())', + undef, ($productgroup, $group_description, 1)); + my $gid = $dbh->bz_last_key('groups', 'id'); - my $admin = GroupNameToId('admin'); + # If we created a new group, give the "admin" group priviledges # initially. - SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type) - VALUES ($admin, $gid," . GROUP_MEMBERSHIP .")"); - SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type) - VALUES ($admin, $gid," . GROUP_BLESS .")"); - SendSQL("INSERT INTO group_group_map (member_id, grantor_id, grant_type) - VALUES ($admin, $gid," . GROUP_VISIBLE .")"); + my $admin = GroupNameToId('admin'); + + my $sth = $dbh->prepare('INSERT INTO group_group_map + (member_id, grantor_id, grant_type) + VALUES (?, ?, ?)'); + + $sth->execute($admin, $gid, GROUP_MEMBERSHIP); + $sth->execute($admin, $gid, GROUP_BLESS); + $sth->execute($admin, $gid, GROUP_VISIBLE); # Associate the new group and new product. - SendSQL("INSERT INTO group_control_map " . - "(group_id, product_id, entry, " . - "membercontrol, othercontrol, canedit) VALUES " . - "($gid, $product_id, " . Param("useentrygroupdefault") . - ", " . CONTROLMAPDEFAULT . ", " . - CONTROLMAPNA . ", 0)"); + $dbh->do('INSERT INTO group_control_map + (group_id, product_id, entry, membercontrol, + othercontrol, canedit) + VALUES (?, ?, ?, ?, ?, ?)', + undef, ($gid, $product->id, Param('useentrygroupdefault'), + CONTROLMAPDEFAULT, CONTROLMAPNA, 0)); } if ($cgi->param('createseries')) { @@ -590,7 +275,6 @@ if ($action eq 'new') { # and never used again here, so we can trick_taint them. my $open_name = $cgi->param('open_name'); trick_taint($open_name); - trick_taint($product); my @series; @@ -613,31 +297,24 @@ if ($action eq 'new') { push(@series, [$open_name, $query]); foreach my $sdata (@series) { - my $series = new Bugzilla::Series(undef, $product, + my $series = new Bugzilla::Series(undef, $product->name, scalar $cgi->param('subcategory'), - $sdata->[0], $::userid, 1, - $sdata->[1] . "&product=" . url_quote($product), 1); + $sdata->[0], $whoid, 1, + $sdata->[1] . "&product=" . + url_quote($product->name), 1); $series->writeToDatabase(); } } # Make versioncache flush unlink "$datadir/versioncache"; - print "OK, done.<p>\n"; - print "<div style='border: 1px red solid; padding: 1ex;'><b>You will need to - <a href=\"editcomponents.cgi?action=add&product=" . - url_quote($product) . "\">add at least one - component</a> before you can enter bugs against this product.</b></div>"; - PutTrailer($localtrailer, - "<a href=\"editproducts.cgi?action=add\">add</a> a new product", - "<a href=\"editcomponents.cgi?action=add&product=" . - url_quote($product) . $classhtmlvar . - "\">add</a> components to this new product"); + $vars->{'product'} = $product; + + $template->process("admin/products/created.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } - - # # action='del' -> ask if user really wants to delete # @@ -645,69 +322,26 @@ if ($action eq 'new') { # if ($action eq 'del') { - - if (!$product) { - ThrowUserError('product_not_specified'); - } + # First make sure the product name is valid. + my $product = Bugzilla::Product::check_product($product_name); - my $product_id = get_product_id($product); - $product_id || ThrowUserError('product_doesnt_exist', - {product => $product}); - - my $classification_id = 1; + # Then make sure the user is allowed to edit properties of this product. + $user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); if (Param('useclassification')) { - CheckClassificationProductNew($classification, $product); - $classification_id = get_classification_id($classification); + my $classification = + Bugzilla::Classification::check_classification($classification_name); + if ($classification->id != $product->classification_id) { + ThrowUserError('classification_doesnt_exist_for_product', + { product => $product->name, + classification => $classification->name }); + } $vars->{'classification'} = $classification; } - # Extract some data about the product - my $query = q{SELECT classifications.description, - products.description, - products.milestoneurl, - products.disallownew - FROM products - INNER JOIN classifications - ON products.classification_id = classifications.id - WHERE products.id = ?}; - - my ($class_description, - $prod_description, - $milestoneurl, - $disallownew) = $dbh->selectrow_array($query, undef, - $product_id); - - $vars->{'class_description'} = $class_description; - $vars->{'product_id'} = $product_id; - $vars->{'prod_description'} = $prod_description; - $vars->{'milestoneurl'} = $milestoneurl; - $vars->{'disallownew'} = $disallownew; - $vars->{'product_name'} = $product; - - $vars->{'components'} = $dbh->selectall_arrayref(q{ - SELECT name, description FROM components - WHERE product_id = ? ORDER BY name}, {'Slice' => {}}, - $product_id); - - $vars->{'versions'} = $dbh->selectcol_arrayref(q{ - SELECT value FROM versions - WHERE product_id = ? ORDER BY value}, undef, - $product_id); - - # Adding listing for associated target milestones - - # matthew@zeroknowledge.com - if (Param('usetargetmilestone')) { - $vars->{'milestones'} = $dbh->selectcol_arrayref(q{ - SELECT value FROM milestones - WHERE product_id = ? - ORDER BY sortkey, value}, undef, $product_id); - } + $vars->{'product'} = $product; - ($vars->{'bug_count'}) = $dbh->selectrow_array(q{ - SELECT COUNT(*) FROM bugs WHERE product_id = ?}, - undef, $product_id) || 0; - $template->process("admin/products/confirm-delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; @@ -718,34 +352,37 @@ if ($action eq 'del') { # if ($action eq 'delete') { - - if (!$product) { - ThrowUserError('product_not_specified'); - } - - my $product_id = get_product_id($product); - $product_id || ThrowUserError('product_doesnt_exist', - {product => $product}); + # First make sure the product name is valid. + my $product = Bugzilla::Product::check_product($product_name); + # Then make sure the user is allowed to edit properties of this product. + $user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); + $vars->{'product'} = $product; - $vars->{'classification'} = $classification; - my $bug_ids = $dbh->selectcol_arrayref(q{ - SELECT bug_id FROM bugs - WHERE product_id = ?}, undef, $product_id); + if (Param('useclassification')) { + my $classification = + Bugzilla::Classification::check_classification($classification_name); + if ($classification->id != $product->classification_id) { + ThrowUserError('classification_doesnt_exist_for_product', + { product => $product->name, + classification => $classification->name }); + } + $vars->{'classification'} = $classification; + } - my $nb_bugs = scalar(@$bug_ids); - if ($nb_bugs) { + if ($product->bug_count) { if (Param("allowbugdeletion")) { - foreach my $bug_id (@$bug_ids) { + foreach my $bug_id (@{$product->bug_ids}) { my $bug = new Bugzilla::Bug($bug_id, $whoid); $bug->remove_from_db(); } } else { - ThrowUserError("product_has_bugs", { nb => $nb_bugs }); + ThrowUserError("product_has_bugs", + { nb => $product->bug_count }); } - $vars->{'nb_bugs'} = $nb_bugs; } $dbh->bz_lock_tables('products WRITE', 'components WRITE', @@ -754,25 +391,25 @@ if ($action eq 'delete') { 'flaginclusions WRITE', 'flagexclusions WRITE'); $dbh->do("DELETE FROM components WHERE product_id = ?", - undef, $product_id); + undef, $product->id); $dbh->do("DELETE FROM versions WHERE product_id = ?", - undef, $product_id); + undef, $product->id); $dbh->do("DELETE FROM milestones WHERE product_id = ?", - undef, $product_id); + undef, $product->id); $dbh->do("DELETE FROM group_control_map WHERE product_id = ?", - undef, $product_id); + undef, $product->id); $dbh->do("DELETE FROM flaginclusions WHERE product_id = ?", - undef, $product_id); + undef, $product->id); $dbh->do("DELETE FROM flagexclusions WHERE product_id = ?", - undef, $product_id); + undef, $product->id); $dbh->do("DELETE FROM products WHERE id = ?", - undef, $product_id); + undef, $product->id); $dbh->bz_unlock_tables(); @@ -790,164 +427,54 @@ if ($action eq 'delete') { # (next action would be 'update') # -if ($action eq 'edit' || (!$action && $product)) { - PutHeader("Edit Product"); - CheckProduct($product); - my $classification_id=1; +if ($action eq 'edit' || (!$action && $product_name)) { + # First make sure the product name is valid. + my $product = Bugzilla::Product::check_product($product_name); + + # Then make sure the user is allowed to edit properties of this product. + $user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); + if (Param('useclassification')) { - # If a product has been given with no classification associated - # with it, take this information from the DB - if ($classification) { - CheckClassificationProduct($classification, $product); + my $classification; + if (!$classification_name) { + $classification = + new Bugzilla::Classification($product->classification_id); } else { - trick_taint($product); - $classification = - $dbh->selectrow_array("SELECT classifications.name - FROM products, classifications - WHERE products.name = ? - AND classifications.id = products.classification_id", - undef, $product); - } - $classification_id = get_classification_id($classification); - } - - # get data of product - SendSQL("SELECT classifications.description, - products.id,products.description,milestoneurl,disallownew, - votesperuser,maxvotesperbug,votestoconfirm,defaultmilestone - FROM products,classifications - WHERE products.name=" . SqlQuote($product) . - " AND classifications.id=" . SqlQuote($classification_id)); - my ($class_description, $product_id,$prod_description, $milestoneurl, $disallownew, - $votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone) = - FetchSQLData(); - - print "<FORM METHOD=POST ACTION=editproducts.cgi>\n"; - print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n"; - - EmitFormElements($classification, $product, $prod_description, $milestoneurl, - $disallownew, $votesperuser, $maxvotesperbug, - $votestoconfirm, $defaultmilestone); - - print "</TR><TR VALIGN=top>\n"; - print " <TH ALIGN=\"right\"><A HREF=\"editcomponents.cgi?product=", url_quote($product), $classhtmlvar, "\">Edit components:</A></TH>\n"; - print " <TD>"; - SendSQL("SELECT name,description - FROM components - WHERE product_id=$product_id"); - if (MoreSQLData()) { - print "<table>"; - while ( MoreSQLData() ) { - my ($component, $description) = FetchSQLData(); - $description ||= "<FONT COLOR=\"red\">description missing</FONT>"; - print "<tr><th align=right valign=top>$component:</th>"; - print "<td valign=top>$description</td></tr>\n"; + $classification = + Bugzilla::Classification::check_classification($classification_name); + if ($classification->id != $product->classification_id) { + ThrowUserError('classification_doesnt_exist_for_product', + { product => $product->name, + classification => $classification->name }); + } } - print "</table>\n"; - } else { - print "<FONT COLOR=\"red\">missing</FONT>"; + $vars->{'classification'} = $classification; } - - - print "</TD>\n</TR><TR>\n"; - print " <TH ALIGN=\"right\" VALIGN=\"top\"><A HREF=\"editversions.cgi?product=", url_quote($product), $classhtmlvar, "\">Edit versions:</A></TH>\n"; - print " <TD>"; - SendSQL("SELECT value - FROM versions - WHERE product_id=$product_id - ORDER BY value"); - if (MoreSQLData()) { - my $br = 0; - while ( MoreSQLData() ) { - my ($version) = FetchSQLData(); - print "<BR>" if $br; - print $version; - $br = 1; + my $group_controls = $product->group_controls; + + # Convert Group Controls(membercontrol and othercontrol) from + # integer to string to display Membercontrol/Othercontrol names + # at the template. <gabriel@async.com.br> + my $constants = { + (CONTROLMAPNA) => 'NA', + (CONTROLMAPSHOWN) => 'Shown', + (CONTROLMAPDEFAULT) => 'Default', + (CONTROLMAPMANDATORY) => 'Mandatory'}; + + foreach my $group (keys(%$group_controls)) { + foreach my $control ('membercontrol', 'othercontrol') { + $group_controls->{$group}->{$control} = + $constants->{$group_controls->{$group}->{$control}}; } - } else { - print "<FONT COLOR=\"red\">missing</FONT>"; } + $vars->{'group_controls'} = $group_controls; - # - # Adding listing for associated target milestones - matthew@zeroknowledge.com - # - if (Param('usetargetmilestone')) { - print "</TD>\n</TR><TR>\n"; - print " <TH ALIGN=\"right\" VALIGN=\"top\"><A HREF=\"editmilestones.cgi?product=", url_quote($product), $classhtmlvar, "\">Edit milestones:</A></TH>\n"; - print " <TD>"; - SendSQL("SELECT value - FROM milestones - WHERE product_id=$product_id - ORDER BY sortkey,value"); - if(MoreSQLData()) { - my $br = 0; - while ( MoreSQLData() ) { - my ($milestone) = FetchSQLData(); - print "<BR>" if $br; - print $milestone; - $br = 1; - } - } else { - print "<FONT COLOR=\"red\">missing</FONT>"; - } - } + $vars->{'product'} = $product; + + $template->process("admin/products/edit.html.tmpl", $vars) + || ThrowTemplateError($template->error()); - print "</TD>\n</TR><TR>\n"; - print " <TH ALIGN=\"right\" VALIGN=\"top\"><A HREF=\"editproducts.cgi?action=editgroupcontrols&product=", url_quote($product), $classhtmlvar,"\">Edit Group Access Controls:</A></TH>\n"; - print "<TD>\n"; - SendSQL("SELECT id, name, isactive, entry, membercontrol, othercontrol, canedit " . - "FROM groups, " . - "group_control_map " . - "WHERE group_control_map.group_id = id AND product_id = $product_id " . - "AND isbuggroup != 0 ORDER BY name"); - while (MoreSQLData()) { - my ($id, $name, $isactive, $entry, $membercontrol, $othercontrol, $canedit) - = FetchSQLData(); - print "<B>" . html_quote($name) . ":</B> "; - if ($isactive) { - print $ctl{$membercontrol} . "/" . $ctl{$othercontrol}; - print ", ENTRY" if $entry; - print ", CANEDIT" if $canedit; - } else { - print "DISABLED"; - } - print "<BR>\n"; - } - print "</TD>\n</TR><TR>\n"; - print " <TH ALIGN=\"right\">Bugs:</TH>\n"; - print " <TD>"; - SendSQL("SELECT count(bug_id), product_id - FROM bugs " . - $dbh->sql_group_by('product_id') . " - HAVING product_id = $product_id"); - my $bugs = ''; - $bugs = FetchOneColumn() if MoreSQLData(); - print $bugs || 'none'; - - print "</TD>\n</TR></TABLE>\n"; - - print "<INPUT TYPE=HIDDEN NAME=\"classification\" VALUE=\"" . - html_quote($classification) . "\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"productold\" VALUE=\"" . - html_quote($product) . "\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"descriptionold\" VALUE=\"" . - html_quote($prod_description) . "\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"milestoneurlold\" VALUE=\"" . - html_quote($milestoneurl) . "\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"disallownewold\" VALUE=\"$disallownew\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"votesperuserold\" VALUE=\"$votesperuser\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"maxvotesperbugold\" VALUE=\"$maxvotesperbug\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"votestoconfirmold\" VALUE=\"$votestoconfirm\">\n"; - $defaultmilestone = value_quote($defaultmilestone); - print "<INPUT TYPE=HIDDEN NAME=\"defaultmilestoneold\" VALUE=\"$defaultmilestone\">\n"; - print "<INPUT TYPE=HIDDEN NAME=\"action\" VALUE=\"update\">\n"; - print "<INPUT TYPE=SUBMIT VALUE=\"Update\">\n"; - - print "</FORM>"; - - my $x = $localtrailer; - $x =~ s/more/other/; - PutTrailer($x); exit; } @@ -956,7 +483,13 @@ if ($action eq 'edit' || (!$action && $product)) { # if ($action eq 'updategroupcontrols') { - my $product_id = get_product_id($product); + # First make sure the product name is valid. + my $product = Bugzilla::Product::check_product($product_name); + + # Then make sure the user is allowed to edit properties of this product. + $user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); + my @now_na = (); my @now_mandatory = (); foreach my $f ($cgi->param()) { @@ -970,59 +503,53 @@ if ($action eq 'updategroupcontrols') { } } if (!defined $cgi->param('confirmed')) { - my @na_groups = (); + my $na_groups; if (@now_na) { - SendSQL("SELECT groups.name, COUNT(bugs.bug_id) - FROM bugs, bug_group_map, groups - WHERE groups.id IN(" . join(', ', @now_na) . ") - AND bug_group_map.group_id = groups.id - AND bug_group_map.bug_id = bugs.bug_id - AND bugs.product_id = $product_id " . - $dbh->sql_group_by('groups.name')); - while (MoreSQLData()) { - my ($groupname, $bugcount) = FetchSQLData(); - my %g = (); - $g{'name'} = $groupname; - $g{'count'} = $bugcount; - push @na_groups,\%g; - } + $na_groups = $dbh->selectall_arrayref( + 'SELECT groups.name, COUNT(bugs.bug_id) AS count + FROM bugs + INNER JOIN bug_group_map + ON bug_group_map.bug_id = bugs.bug_id + INNER JOIN groups + ON bug_group_map.group_id = groups.id + WHERE groups.id IN (' . join(', ', @now_na) . ') + AND bugs.product_id = ? ' . + $dbh->sql_group_by('groups.name'), + {'Slice' => {}}, $product->id); } - my @mandatory_groups = (); + my $mandatory_groups; if (@now_mandatory) { - SendSQL("SELECT groups.name, COUNT(bugs.bug_id) + $mandatory_groups = $dbh->selectall_arrayref( + 'SELECT groups.name, COUNT(bugs.bug_id) AS count FROM bugs LEFT JOIN bug_group_map ON bug_group_map.bug_id = bugs.bug_id INNER JOIN groups ON bug_group_map.group_id = groups.id - WHERE groups.id IN(" . join(', ', @now_mandatory) . ") - AND bugs.product_id = $product_id - AND bug_group_map.bug_id IS NULL " . - $dbh->sql_group_by('groups.name')); - while (MoreSQLData()) { - my ($groupname, $bugcount) = FetchSQLData(); - my %g = (); - $g{'name'} = $groupname; - $g{'count'} = $bugcount; - push @mandatory_groups,\%g; - } + WHERE groups.id IN (' . join(', ', @now_mandatory) . ') + AND bugs.product_id = ? + AND bug_group_map.bug_id IS NULL ' . + $dbh->sql_group_by('groups.name'), + {'Slice' => {}}, $product->id); } - if ((@na_groups) || (@mandatory_groups)) { + if (($na_groups && scalar(@$na_groups)) + || ($mandatory_groups && scalar(@$mandatory_groups))) + { $vars->{'product'} = $product; - $vars->{'na_groups'} = \@na_groups; - $vars->{'mandatory_groups'} = \@mandatory_groups; + $vars->{'na_groups'} = $na_groups; + $vars->{'mandatory_groups'} = $mandatory_groups; $template->process("admin/products/groupcontrol/confirm-edit.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; } } - PutHeader("Update group access controls for $product"); - $headerdone = 1; - SendSQL("SELECT id, name FROM groups " . - "WHERE isbuggroup != 0 AND isactive != 0"); - while (MoreSQLData()){ - my ($groupid, $groupname) = FetchSQLData(); + + my $groups = $dbh->selectall_arrayref('SELECT id, name FROM groups + WHERE isbuggroup != 0 + AND isactive != 0'); + foreach my $group (@$groups) { + my ($groupid, $groupname) = @$group; my $newmembercontrol = $cgi->param("membercontrol_$groupid") || 0; my $newothercontrol = $cgi->param("othercontrol_$groupid") || 0; # Legality of control combination is a function of @@ -1037,8 +564,7 @@ if ($action eq 'updategroupcontrols') { || (($newmembercontrol == CONTROLMAPDEFAULT) && ($newothercontrol != CONTROLMAPSHOWN))) { ThrowUserError('illegal_group_control_combination', - {groupname => $groupname, - header_done => 1}); + {groupname => $groupname}); } } $dbh->bz_lock_tables('groups READ', @@ -1047,14 +573,33 @@ if ($action eq 'updategroupcontrols') { 'bugs_activity WRITE', 'bug_group_map WRITE', 'fielddefs READ'); - SendSQL("SELECT id, name, entry, membercontrol, othercontrol, canedit " . - "FROM groups " . - "LEFT JOIN group_control_map " . - "ON group_control_map.group_id = id AND product_id = $product_id " . - "WHERE isbuggroup != 0 AND isactive != 0"); - while (MoreSQLData()) { + + my $sth_Insert = $dbh->prepare('INSERT INTO group_control_map + (group_id, product_id, entry, membercontrol, + othercontrol, canedit) + VALUES (?, ?, ?, ?, ?, ?)'); + + my $sth_Update = $dbh->prepare('UPDATE group_control_map + SET entry = ?, membercontrol = ?, + othercontrol = ?, canedit = ? + WHERE group_id = ? AND product_id = ?'); + + my $sth_Delete = $dbh->prepare('DELETE FROM group_control_map + WHERE group_id = ? AND product_id = ?'); + + $groups = $dbh->selectall_arrayref('SELECT id, name, entry, membercontrol, + othercontrol, canedit + FROM groups + LEFT JOIN group_control_map + ON group_control_map.group_id = id + AND product_id = ? + WHERE isbuggroup != 0 + AND isactive != 0', + undef, $product->id); + + foreach my $group (@$groups) { my ($groupid, $groupname, $entry, $membercontrol, - $othercontrol, $canedit) = FetchSQLData(); + $othercontrol, $canedit) = @$group; my $newentry = $cgi->param("entry_$groupid") || 0; my $newmembercontrol = $cgi->param("membercontrol_$groupid") || 0; my $newothercontrol = $cgi->param("othercontrol_$groupid") || 0; @@ -1070,161 +615,194 @@ if ($action eq 'updategroupcontrols') { detaint_natural($newcanedit); if ((!defined($oldentry)) && (($newentry) || ($newmembercontrol) || ($newcanedit))) { - PushGlobalSQLState(); - SendSQL("INSERT INTO group_control_map " . - "(group_id, product_id, entry, " . - "membercontrol, othercontrol, canedit) " . - "VALUES " . - "($groupid, $product_id, $newentry, " . - "$newmembercontrol, $newothercontrol, $newcanedit)"); - PopGlobalSQLState(); + $sth_Insert->execute($groupid, $product->id, $newentry, + $newmembercontrol, $newothercontrol, $newcanedit); } elsif (($newentry != $entry) || ($newmembercontrol != $membercontrol) || ($newothercontrol != $othercontrol) || ($newcanedit != $canedit)) { - PushGlobalSQLState(); - SendSQL("UPDATE group_control_map " . - "SET entry = $newentry, " . - "membercontrol = $newmembercontrol, " . - "othercontrol = $newothercontrol, " . - "canedit = $newcanedit " . - "WHERE group_id = $groupid " . - "AND product_id = $product_id"); - PopGlobalSQLState(); + $sth_Update->execute($newentry, $newmembercontrol, $newothercontrol, + $newcanedit, $groupid, $product->id); } if (($newentry == 0) && ($newmembercontrol == 0) && ($newothercontrol == 0) && ($newcanedit == 0)) { - PushGlobalSQLState(); - SendSQL("DELETE FROM group_control_map " . - "WHERE group_id = $groupid " . - "AND product_id = $product_id"); - PopGlobalSQLState(); + $sth_Delete->execute($groupid, $product->id); } } + my $sth_Select = $dbh->prepare( + 'SELECT bugs.bug_id, + CASE WHEN (lastdiffed >= delta_ts) THEN 1 ELSE 0 END + FROM bugs + INNER JOIN bug_group_map + ON bug_group_map.bug_id = bugs.bug_id + WHERE group_id = ? + AND bugs.product_id = ? + ORDER BY bugs.bug_id'); + + my $sth_Select2 = $dbh->prepare('SELECT name, NOW() FROM groups WHERE id = ?'); + + $sth_Update = $dbh->prepare('UPDATE bugs SET delta_ts = ? WHERE bug_id = ?'); + + my $sth_Update2 = $dbh->prepare('UPDATE bugs SET delta_ts = ?, lastdiffed = ? + WHERE bug_id = ?'); + + $sth_Delete = $dbh->prepare('DELETE FROM bug_group_map + WHERE bug_id = ? AND group_id = ?'); + + my @removed_na; foreach my $groupid (@now_na) { - print "Removing bugs from NA group " - . html_quote(GroupIdToName($groupid)) . "<P>\n"; my $count = 0; - SendSQL("SELECT bugs.bug_id, - (lastdiffed >= delta_ts) - FROM bugs, bug_group_map - WHERE group_id = $groupid - AND bug_group_map.bug_id = bugs.bug_id - AND bugs.product_id = $product_id - ORDER BY bugs.bug_id"); - while (MoreSQLData()) { - my ($bugid, $mailiscurrent) = FetchSQLData(); - PushGlobalSQLState(); - SendSQL("DELETE FROM bug_group_map WHERE - bug_id = $bugid AND group_id = $groupid"); - SendSQL("SELECT name, NOW() FROM groups WHERE id = $groupid"); - my ($removed, $timestamp) = FetchSQLData(); + my $bugs = $dbh->selectall_arrayref($sth_Select, undef, + ($groupid, $product->id)); + + foreach my $bug (@$bugs) { + my ($bugid, $mailiscurrent) = @$bug; + $sth_Delete->execute($bugid, $groupid); + my ($removed, $timestamp) = + $dbh->selectrow_array($sth_Select2, undef, $groupid); + LogActivityEntry($bugid, "bug_group", $removed, "", - $::userid, $timestamp); - my $diffed = ""; + $whoid, $timestamp); + if ($mailiscurrent) { - $diffed = ", lastdiffed = " . SqlQuote($timestamp); + $sth_Update2->execute($timestamp, $timestamp, $bugid); + } + else { + $sth_Update->execute($timestamp, $bugid); } - SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) . - $diffed . " WHERE bug_id = $bugid"); - PopGlobalSQLState(); $count++; } - print "dropped $count bugs<p>\n"; + my %group = (name => GroupIdToName($groupid), + bug_count => $count); + + push(@removed_na, \%group); } + $sth_Select = $dbh->prepare( + 'SELECT bugs.bug_id, + CASE WHEN (lastdiffed >= delta_ts) THEN 1 ELSE 0 END + FROM bugs + LEFT JOIN bug_group_map + ON bug_group_map.bug_id = bugs.bug_id + AND group_id = ? + WHERE bugs.product_id = ? + AND bug_group_map.bug_id IS NULL + ORDER BY bugs.bug_id'); + + $sth_Insert = $dbh->prepare('INSERT INTO bug_group_map + (bug_id, group_id) VALUES (?, ?)'); + + my @added_mandatory; foreach my $groupid (@now_mandatory) { - print "Adding bugs to Mandatory group " - . html_quote(GroupIdToName($groupid)) . "<P>\n"; my $count = 0; - SendSQL("SELECT bugs.bug_id, - (lastdiffed >= delta_ts) - FROM bugs - LEFT JOIN bug_group_map - ON bug_group_map.bug_id = bugs.bug_id - AND group_id = $groupid - WHERE bugs.product_id = $product_id - AND bug_group_map.bug_id IS NULL - ORDER BY bugs.bug_id"); - while (MoreSQLData()) { - my ($bugid, $mailiscurrent) = FetchSQLData(); - PushGlobalSQLState(); - SendSQL("INSERT INTO bug_group_map (bug_id, group_id) - VALUES ($bugid, $groupid)"); - SendSQL("SELECT name, NOW() FROM groups WHERE id = $groupid"); - my ($added, $timestamp) = FetchSQLData(); + my $bugs = $dbh->selectall_arrayref($sth_Select, undef, + ($groupid, $product->id)); + + foreach my $bug (@$bugs) { + my ($bugid, $mailiscurrent) = @$bug; + $sth_Insert->execute($bugid, $groupid); + my ($added, $timestamp) = + $dbh->selectrow_array($sth_Select2, undef, $groupid); + LogActivityEntry($bugid, "bug_group", "", $added, - $::userid, $timestamp); - my $diffed = ""; + $whoid, $timestamp); + if ($mailiscurrent) { - $diffed = ", lastdiffed = " . SqlQuote($timestamp); + $sth_Update2->execute($timestamp, $timestamp, $bugid); + } + else { + $sth_Update->execute($timestamp, $bugid); } - SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) . - $diffed . " WHERE bug_id = $bugid"); - PopGlobalSQLState(); $count++; } - print "added $count bugs<p>\n"; + my %group = (name => GroupIdToName($groupid), + bug_count => $count); + + push(@added_mandatory, \%group); } $dbh->bz_unlock_tables(); - print "Group control updates done<P>\n"; + $vars->{'removed_na'} = \@removed_na; + + $vars->{'added_mandatory'} = \@added_mandatory; - PutTrailer($localtrailer); + $vars->{'product'} = $product; + + $template->process("admin/products/groupcontrol/updated.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } # # action='update' -> update the product # - if ($action eq 'update') { - PutHeader("Update product"); - my $productold = trim($cgi->param('productold') || ''); + my $product_old_name = trim($cgi->param('product_old_name') || ''); my $description = trim($cgi->param('description') || ''); - my $descriptionold = trim($cgi->param('descriptionold') || ''); my $disallownew = trim($cgi->param('disallownew') || ''); - my $disallownewold = trim($cgi->param('disallownewold') || ''); my $milestoneurl = trim($cgi->param('milestoneurl') || ''); - my $milestoneurlold = trim($cgi->param('milestoneurlold') || ''); my $votesperuser = trim($cgi->param('votesperuser') || 0); - my $votesperuserold = trim($cgi->param('votesperuserold') || 0); my $maxvotesperbug = trim($cgi->param('maxvotesperbug') || 0); - my $maxvotesperbugold = trim($cgi->param('maxvotesperbugold') || 0); my $votestoconfirm = trim($cgi->param('votestoconfirm') || 0); - my $votestoconfirmold = trim($cgi->param('votestoconfirmold') || 0); my $defaultmilestone = trim($cgi->param('defaultmilestone') || '---'); - my $defaultmilestoneold = trim($cgi->param('defaultmilestoneold') || '---'); my $checkvotes = 0; - CheckProduct($productold); - my $product_id = get_product_id($productold); + # First make sure the product name is valid. + my $product_old = Bugzilla::Product::check_product($product_old_name); + # Then make sure the user is allowed to edit properties of this product. + $user->can_see_product($product_old->name) + || ThrowUserError('product_access_denied', {product => $product_old->name}); + + if (Param('useclassification')) { + my $classification; + if (!$classification_name) { + $classification = + new Bugzilla::Classification($product_old->classification_id); + } else { + $classification = + Bugzilla::Classification::check_classification($classification_name); + if ($classification->id != $product_old->classification_id) { + ThrowUserError('classification_doesnt_exist_for_product', + { product => $product_old->name, + classification => $classification->name }); + } + } + $vars->{'classification'} = $classification; + } + + unless ($product_name) { + ThrowUserError('prod_cant_delete_name', + {product => $product_old->name}); + } + + unless ($description) { + ThrowUserError('prod_cant_delete_description', + {product => $product_old->name}); + } + + my $stored_maxvotesperbug = $maxvotesperbug; if (!detaint_natural($maxvotesperbug)) { - print "Sorry, the max votes per bug must be an integer >= 0."; - PutTrailer($localtrailer); - exit; + ThrowUserError('prod_votes_per_bug_must_be_nonnegative', + {maxvotesperbug => $stored_maxvotesperbug}); } + my $stored_votesperuser = $votesperuser; if (!detaint_natural($votesperuser)) { - print "Sorry, the votes per user must be an integer >= 0."; - PutTrailer($localtrailer); - exit; + ThrowUserError('prod_votes_per_user_must_be_nonnegative', + {votesperuser => $stored_votesperuser}); } + my $stored_votestoconfirm = $votestoconfirm; if (!detaint_natural($votestoconfirm)) { - print "Sorry, the votes to confirm must be an integer >= 0."; - PutTrailer($localtrailer); - exit; + ThrowUserError('prod_votes_to_confirm_must_be_nonnegative', + {votestoconfirm => $stored_votestoconfirm}); } - # Note that we got the $product_id using $productold above so it will - # remain static even after we rename the product in the database. - $dbh->bz_lock_tables('products WRITE', 'versions READ', 'groups WRITE', @@ -1232,184 +810,178 @@ if ($action eq 'update') { 'profiles WRITE', 'milestones READ'); - if ($disallownew ne $disallownewold) { - $disallownew = $disallownew ? 1 : 0; - SendSQL("UPDATE products - SET disallownew=$disallownew - WHERE id=$product_id"); - print "Updated bug submit status.<BR>\n"; + my $testproduct = + new Bugzilla::Product({name => $product_name}); + if (lc($product_name) ne lc($product_old->name) && + $testproduct) { + ThrowUserError('prod_name_already_in_use', + {product => $product_name}); } - if ($description ne $descriptionold) { - unless ($description) { - print "Sorry, I can't delete the description."; - $dbh->bz_unlock_tables(UNLOCK_ABORT); - PutTrailer($localtrailer); - exit; + # Only update milestone related stuff if 'usetargetmilestone' is on. + if (Param('usetargetmilestone')) { + my $milestone = new Bugzilla::Milestone($product_old->id, + $defaultmilestone); + + unless ($milestone) { + ThrowUserError('prod_must_define_defaultmilestone', + {product => $product_old->name, + defaultmilestone => $defaultmilestone, + classification => $classification_name}); + } + + if ($milestoneurl ne $product_old->milestone_url) { + trick_taint($milestoneurl); + $dbh->do('UPDATE products SET milestoneurl = ? WHERE id = ?', + undef, ($milestoneurl, $product_old->id)); + } + + if ($milestone->name ne $product_old->default_milestone) { + $dbh->do('UPDATE products SET defaultmilestone = ? WHERE id = ?', + undef, ($milestone->name, $product_old->id)); } - SendSQL("UPDATE products - SET description=" . SqlQuote($description) . " - WHERE id=$product_id"); - print "Updated description.<BR>\n"; } - if (Param('usetargetmilestone') && $milestoneurl ne $milestoneurlold) { - SendSQL("UPDATE products - SET milestoneurl=" . SqlQuote($milestoneurl) . " - WHERE id=$product_id"); - print "Updated milestone URL.<BR>\n"; + $disallownew = $disallownew ? 1 : 0; + if ($disallownew ne $product_old->disallow_new) { + $dbh->do('UPDATE products SET disallownew = ? WHERE id = ?', + undef, ($disallownew, $product_old->id)); } + if ($description ne $product_old->description) { + trick_taint($description); + $dbh->do('UPDATE products SET description = ? WHERE id = ?', + undef, ($description, $product_old->id)); + } - if ($votesperuser ne $votesperuserold) { - SendSQL("UPDATE products - SET votesperuser=$votesperuser - WHERE id=$product_id"); - print "Updated votes per user.<BR>\n"; + if ($votesperuser ne $product_old->votes_per_user) { + $dbh->do('UPDATE products SET votesperuser = ? WHERE id = ?', + undef, ($votesperuser, $product_old->id)); $checkvotes = 1; } - - if ($maxvotesperbug ne $maxvotesperbugold) { - SendSQL("UPDATE products - SET maxvotesperbug=$maxvotesperbug - WHERE id=$product_id"); - print "Updated max votes per bug.<BR>\n"; + if ($maxvotesperbug ne $product_old->max_votes_per_bug) { + $dbh->do('UPDATE products SET maxvotesperbug = ? WHERE id = ?', + undef, ($maxvotesperbug, $product_old->id)); $checkvotes = 1; } - - if ($votestoconfirm ne $votestoconfirmold) { - SendSQL("UPDATE products - SET votestoconfirm=$votestoconfirm - WHERE id=$product_id"); - print "Updated votes to confirm.<BR>\n"; + if ($votestoconfirm ne $product_old->votes_to_confirm) { + $dbh->do('UPDATE products SET votestoconfirm = ? WHERE id = ?', + undef, ($votestoconfirm, $product_old->id)); $checkvotes = 1; } - - if ($defaultmilestone ne $defaultmilestoneold) { - SendSQL("SELECT value FROM milestones " . - "WHERE value = " . SqlQuote($defaultmilestone) . - " AND product_id = $product_id"); - if (!FetchOneColumn()) { - print "Sorry, the milestone $defaultmilestone must be defined first."; - $dbh->bz_unlock_tables(UNLOCK_ABORT); - PutTrailer($localtrailer); - exit; - } - SendSQL("UPDATE products " . - "SET defaultmilestone = " . SqlQuote($defaultmilestone) . - "WHERE id=$product_id"); - print "Updated default milestone.<BR>\n"; + if ($product_name ne $product_old->name) { + trick_taint($product_name); + $dbh->do('UPDATE products SET name = ? WHERE id = ?', + undef, ($product_name, $product_old->id)); } - my $qp = SqlQuote($product); - my $qpold = SqlQuote($productold); - - if ($product ne $productold) { - unless ($product) { - print "Sorry, I can't delete the product name."; - $dbh->bz_unlock_tables(UNLOCK_ABORT); - PutTrailer($localtrailer); - exit; - } - - if (lc($product) ne lc($productold) && - TestProduct($product)) { - print "Sorry, product name '$product' is already in use."; - $dbh->bz_unlock_tables(UNLOCK_ABORT); - PutTrailer($localtrailer); - exit; - } - - SendSQL("UPDATE products SET name=$qp WHERE id=$product_id"); - print "Updated product name.<BR>\n"; - } $dbh->bz_unlock_tables(); unlink "$datadir/versioncache"; + my $product = new Bugzilla::Product({name => $product_name}); + if ($checkvotes) { + $vars->{'checkvotes'} = 1; + # 1. too many votes for a single user on a single bug. + my @toomanyvotes_list = (); if ($maxvotesperbug < $votesperuser) { - print "<br>Checking existing votes in this product for anybody who now has too many votes for a single bug."; - SendSQL("SELECT votes.who, votes.bug_id " . - "FROM votes, bugs " . - "WHERE bugs.bug_id = votes.bug_id " . - " AND bugs.product_id = $product_id " . - " AND votes.vote_count > $maxvotesperbug"); - my @list; - while (MoreSQLData()) { - my ($who, $id) = (FetchSQLData()); - push(@list, [$who, $id]); - } - foreach my $ref (@list) { - my ($who, $id) = (@$ref); - RemoveVotes($id, $who, "The rules for voting on this product has changed;\nyou had too many votes for a single bug."); + my $votes = $dbh->selectall_arrayref( + 'SELECT votes.who, votes.bug_id + FROM votes + INNER JOIN bugs + ON bugs.bug_id = votes.bug_id + WHERE bugs.product_id = ? + AND votes.vote_count > ?', + undef, ($product->id, $maxvotesperbug)); + + foreach my $vote (@$votes) { + my ($who, $id) = (@$vote); + RemoveVotes($id, $who, "The rules for voting on this product " . + "has changed;\nyou had too many votes " . + "for a single bug."); my $name = DBID_to_name($who); - print qq{<br>Removed votes for bug <A HREF="show_bug.cgi?id=$id">$id</A> from $name\n}; + + push(@toomanyvotes_list, + {id => $id, name => $name}); } } + $vars->{'toomanyvotes'} = \@toomanyvotes_list; # 2. too many total votes for a single user. # This part doesn't work in the general case because RemoveVotes # doesn't enforce votesperuser (except per-bug when it's less - # than maxvotesperbug). See RemoveVotes in globals.pl. - print "<br>Checking existing votes in this product for anybody who now has too many total votes."; - SendSQL("SELECT votes.who, votes.vote_count FROM votes, bugs " . - "WHERE bugs.bug_id = votes.bug_id " . - " AND bugs.product_id = $product_id"); + # than maxvotesperbug). See Bugzilla::Bug::RemoveVotes(). + + my $votes = $dbh->selectall_arrayref( + 'SELECT votes.who, votes.vote_count + FROM votes + INNER JOIN bugs + ON bugs.bug_id = votes.bug_id + WHERE bugs.product_id = ?', + undef, $product->id); + my %counts; - while (MoreSQLData()) { - my ($who, $count) = (FetchSQLData()); + foreach my $vote (@$votes) { + my ($who, $count) = @$vote; if (!defined $counts{$who}) { $counts{$who} = $count; } else { $counts{$who} += $count; } } + my @toomanytotalvotes_list = (); foreach my $who (keys(%counts)) { if ($counts{$who} > $votesperuser) { - SendSQL("SELECT votes.bug_id FROM votes, bugs " . - "WHERE bugs.bug_id = votes.bug_id " . - " AND bugs.product_id = $product_id " . - " AND votes.who = $who"); - while (MoreSQLData()) { - my ($id) = FetchSQLData(); - RemoveVotes($id, $who, - "The rules for voting on this product has changed; you had too many\ntotal votes, so all votes have been removed."); + my $bug_ids = $dbh->selectcol_arrayref( + 'SELECT votes.bug_id + FROM votes + INNER JOIN bugs + ON bugs.bug_id = votes.bug_id + WHERE bugs.product_id = ? + AND votes.who = ?', + undef, ($product->id, $who)); + + foreach my $bug_id (@$bug_ids) { + RemoveVotes($bug_id, $who, "The rules for voting on this " . + "product has changed; you had " . + "too many\ntotal votes, so all " . + "votes have been removed."); my $name = DBID_to_name($who); - print qq{<br>Removed votes for bug <A HREF="show_bug.cgi?id=$id">$id</A> from $name\n}; + + push(@toomanytotalvotes_list, + {id => $bug_id, name => $name}); } } } + $vars->{'toomanytotalvotes'} = \@toomanytotalvotes_list; + # 3. enough votes to confirm - my $bug_list = $dbh->selectcol_arrayref("SELECT bug_id FROM bugs - WHERE product_id = ? - AND bug_status = 'UNCONFIRMED' - AND votes >= ?", - undef, ($product_id, $votestoconfirm)); - if (scalar(@$bug_list)) { - print "<br>Checking unconfirmed bugs in this product for any which now have sufficient votes."; - } + my $bug_list = $dbh->selectcol_arrayref( + "SELECT bug_id FROM bugs + WHERE product_id = ? + AND bug_status = 'UNCONFIRMED' + AND votes >= ?", + undef, ($product->id, $votestoconfirm)); + my @updated_bugs = (); foreach my $bug_id (@$bug_list) { my $confirmed = CheckIfVotedConfirmed($bug_id, $whoid); push (@updated_bugs, $bug_id) if $confirmed; } - $vars->{'type'} = "votes"; - $vars->{'mailrecipients'} = { 'changer' => $whoid }; - $vars->{'header_done'} = 1; - - foreach my $bug_id (@updated_bugs) { - $vars->{'id'} = $bug_id; - $template->process("bug/process/results.html.tmpl", $vars) - || ThrowTemplateError($template->error()); - } + $vars->{'confirmedbugs'} = \@updated_bugs; + $vars->{'changer'} = $whoid; } - PutTrailer($localtrailer); + $vars->{'old_product'} = $product_old; + $vars->{'product'} = $product; + + $template->process("admin/products/updated.html.tmpl", $vars) + || ThrowTemplateError($template->error()); exit; } @@ -1418,45 +990,35 @@ if ($action eq 'update') { # if ($action eq 'editgroupcontrols') { - my $product_id = get_product_id($product); - $product_id - || ThrowUserError("invalid_product_name", { product => $product }); + # First make sure the product name is valid. + my $product = Bugzilla::Product::check_product($product_name); + + # Then make sure the user is allowed to edit properties of this product. + $user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); + # Display a group if it is either enabled or has bugs for this product. - SendSQL("SELECT id, name, entry, membercontrol, othercontrol, canedit, " . - "isactive, COUNT(bugs.bug_id) " . - "FROM groups " . - "LEFT JOIN group_control_map " . - "ON group_control_map.group_id = id " . - "AND group_control_map.product_id = $product_id " . - "LEFT JOIN bug_group_map " . - "ON bug_group_map.group_id = groups.id " . - "LEFT JOIN bugs " . - "ON bugs.bug_id = bug_group_map.bug_id " . - "AND bugs.product_id = $product_id " . - "WHERE isbuggroup != 0 " . - "AND (isactive != 0 OR entry IS NOT NULL " . - "OR bugs.bug_id IS NOT NULL) " . - $dbh->sql_group_by('name', 'id, entry, membercontrol, - othercontrol, canedit, isactive')); - my @groups = (); - while (MoreSQLData()) { - my %group = (); - my ($groupid, $groupname, $entry, $membercontrol, $othercontrol, - $canedit, $isactive, $bugcount) = FetchSQLData(); - $group{'id'} = $groupid; - $group{'name'} = $groupname; - $group{'entry'} = $entry; - $group{'membercontrol'} = $membercontrol; - $group{'othercontrol'} = $othercontrol; - $group{'canedit'} = $canedit; - $group{'isactive'} = $isactive; - $group{'bugcount'} = $bugcount; - push @groups,\%group; - } - $vars->{'header_done'} = $headerdone; + my $groups = $dbh->selectall_arrayref( + 'SELECT id, name, entry, membercontrol, othercontrol, canedit, + isactive, COUNT(bugs.bug_id) AS bugcount + FROM groups + LEFT JOIN group_control_map + ON group_control_map.group_id = groups.id + AND group_control_map.product_id = ? + LEFT JOIN bug_group_map + ON bug_group_map.group_id = groups.id + LEFT JOIN bugs + ON bugs.bug_id = bug_group_map.bug_id + AND bugs.product_id = ? + WHERE isbuggroup != 0 + AND (isactive != 0 OR entry IS NOT NULL OR bugs.bug_id IS NOT NULL) ' . + $dbh->sql_group_by('name', 'id, entry, membercontrol, + othercontrol, canedit, isactive'), + {'Slice' => {}}, ($product->id, $product->id)); + $vars->{'product'} = $product; - $vars->{'classification'} = $classification; - $vars->{'groups'} = \@groups; + $vars->{'groups'} = $groups; + $vars->{'const'} = { 'CONTROLMAPNA' => CONTROLMAPNA, 'CONTROLMAPSHOWN' => CONTROLMAPSHOWN, @@ -1474,5 +1036,4 @@ if ($action eq 'editgroupcontrols') { # No valid action found # -PutHeader("Error"); -print "I don't have a clue what you want.<BR>\n"; +ThrowUserError('no_valid_action', {field => "product"}); diff --git a/editsettings.cgi b/editsettings.cgi index 80a8921d5..231c1aea8 100755 --- a/editsettings.cgi +++ b/editsettings.cgi @@ -21,13 +21,12 @@ use lib qw(.); use Bugzilla; use Bugzilla::Constants; -use Bugzilla::User; use Bugzilla::User::Setting; -require "CGI.pl"; +require "globals.pl"; -# Use global template variables. -use vars qw($template $vars); +my $template = Bugzilla->template; +my $vars = {}; ############################### ### Subroutine Definitions ### @@ -69,12 +68,12 @@ sub SaveSettings{ ### Live code ### ################### -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); my $cgi = Bugzilla->cgi; print $cgi->header; -UserInGroup("tweakparams") +$user->in_group('tweakparams') || ThrowUserError("auth_failure", {group => "tweakparams", action => "modify", object => "settings"}); diff --git a/editusers.cgi b/editusers.cgi index 5d74374b6..3e23d0808 100755 --- a/editusers.cgi +++ b/editusers.cgi @@ -14,27 +14,29 @@ # The Original Code is the Bugzilla Bug Tracking System. # # Contributor(s): Marc Schumann <wurblzap@gmail.com> +# Lance Larsh <lance.larsh@oracle.com> # Frédéric Buclin <LpSolit@gmail.com> use strict; use lib "."; -require "CGI.pl"; require "globals.pl"; -use vars qw( $vars ); - use Bugzilla; use Bugzilla::User; +use Bugzilla::Bug; use Bugzilla::Flag; use Bugzilla::Config; use Bugzilla::Constants; use Bugzilla::Util; +use Bugzilla::Field; +use Bugzilla::Group; my $user = Bugzilla->login(LOGIN_REQUIRED); my $cgi = Bugzilla->cgi; my $template = Bugzilla->template; +my $vars = {}; my $dbh = Bugzilla->dbh; my $userid = $user->id; my $editusers = $user->in_group('editusers'); @@ -70,7 +72,6 @@ if ($action eq 'search') { my $matchstr = $cgi->param('matchstr'); my $matchtype = $cgi->param('matchtype'); my $grouprestrict = $cgi->param('grouprestrict') || '0'; - my $groupid = $cgi->param('groupid'); my $query = 'SELECT DISTINCT userid, login_name, realname, disabledtext ' . 'FROM profiles'; my @bindValues; @@ -78,14 +79,15 @@ if ($action eq 'search') { my $visibleGroups; # If a group ID is given, make sure it is a valid one. + my $group; if ($grouprestrict) { - (detaint_natural($groupid) && GroupIdToName($groupid)) - || ThrowUserError('invalid_group_ID'); + $group = new Bugzilla::Group(scalar $cgi->param('groupid')); + $group || ThrowUserError('invalid_group_ID'); } if (!$editusers && Param('usevisibilitygroups')) { # Show only users in visible groups. - $visibleGroups = visibleGroupsAsString(); + $visibleGroups = $user->visible_groups_as_string(); if ($visibleGroups) { $query .= qq{, user_group_map AS ugm @@ -98,9 +100,15 @@ if ($action eq 'search') { } else { $visibleGroups = 1; if ($grouprestrict eq '1') { - $query .= ', user_group_map AS ugm'; + $query .= qq{, user_group_map AS ugm + WHERE ugm.user_id = profiles.userid + AND ugm.isbless = 0 + }; + $nextCondition = 'AND'; + } + else { + $nextCondition = 'WHERE'; } - $nextCondition = 'WHERE'; } if (!$visibleGroups) { @@ -109,15 +117,19 @@ if ($action eq 'search') { else { # Handle selection by user name. if (defined($matchtype)) { - $query .= " $nextCondition profiles.login_name "; + $query .= " $nextCondition "; + my $expr = "profiles.login_name"; if ($matchtype eq 'regexp') { - $query .= $dbh->sql_regexp . ' ?'; + $query .= $dbh->sql_regexp($expr, '?'); $matchstr = '.' unless $matchstr; } elsif ($matchtype eq 'notregexp') { - $query .= $dbh->sql_not_regexp . ' ?'; + $query .= $dbh->sql_not_regexp($expr, '?'); + $matchstr = '.' unless $matchstr; + } elsif ($matchtype eq 'exact') { + $query .= $expr . ' = ?'; $matchstr = '.' unless $matchstr; } else { # substr or unknown - $query .= 'like ?'; + $query .= $dbh->sql_istrcmp($expr, '?', 'LIKE'); $matchstr = "%$matchstr%"; } $nextCondition = 'AND'; @@ -129,21 +141,26 @@ if ($action eq 'search') { # Handle selection by group. if ($grouprestrict eq '1') { - $query .= " $nextCondition profiles.userid = ugm.user_id " . - 'AND ugm.group_id = ?'; - # We can trick_taint because we use the value in a SELECT only, - # using a placeholder. - push(@bindValues, $groupid); + my $grouplist = join(',', + @{Bugzilla::User->flatten_group_membership($group->id)}); + $query .= " $nextCondition ugm.group_id IN($grouplist) "; } $query .= ' ORDER BY profiles.login_name'; $vars->{'users'} = $dbh->selectall_arrayref($query, {'Slice' => {}}, @bindValues); + } - $template->process('admin/users/list.html.tmpl', $vars) - || ThrowTemplateError($template->error()); + if ($matchtype eq 'exact' && scalar(@{$vars->{'users'}}) == 1) { + my $match_user_id = $vars->{'users'}[0]->{'userid'}; + my $match_user = check_user($match_user_id); + edit_processing($match_user); + } else { + $template->process('admin/users/list.html.tmpl', $vars) + || ThrowTemplateError($template->error()); + } ########################################################################### } elsif ($action eq 'add') { @@ -164,10 +181,12 @@ if ($action eq 'search') { my $password = $cgi->param('password'); my $realname = trim($cgi->param('name') || ''); my $disabledtext = trim($cgi->param('disabledtext') || ''); - + # Lock tables during the check+creation session. $dbh->bz_lock_tables('profiles WRITE', 'profiles_activity WRITE', + 'groups READ', + 'user_group_map WRITE', 'email_setting WRITE', 'namedqueries READ', 'whine_queries READ', @@ -175,9 +194,10 @@ if ($action eq 'search') { # Validity checks $login || ThrowUserError('user_login_required'); - CheckEmailSyntax($login); - is_available_username($login) || ThrowUserError('account_exists', - {'email' => $login}); + validate_email_syntax($login) + || ThrowUserError('illegal_email_address', {addr => $login}); + is_available_username($login) + || ThrowUserError('account_exists', {email => $login}); ValidatePassword($password); # Login and password are validated now, and realname and disabledtext @@ -188,9 +208,9 @@ if ($action eq 'search') { trick_taint($disabledtext); insert_new_user($login, $realname, $password, $disabledtext); - my $userid = $dbh->bz_last_key('profiles', 'userid'); + my $new_user_id = $dbh->bz_last_key('profiles', 'userid'); $dbh->bz_unlock_tables(); - userDataToVars($userid); + userDataToVars($new_user_id); $vars->{'message'} = 'account_created'; $template->process('admin/users/edit.html.tmpl', $vars) @@ -199,17 +219,7 @@ if ($action eq 'search') { ########################################################################### } elsif ($action eq 'edit') { my $otherUser = check_user($otherUserID, $otherUserLogin); - $otherUserID = $otherUser->id; - - $editusers || canSeeUser($otherUserID) - || ThrowUserError('auth_failure', {reason => "not_visible", - action => "modify", - object => "user"}); - - userDataToVars($otherUserID); - - $template->process('admin/users/edit.html.tmpl', $vars) - || ThrowTemplateError($template->error()); + edit_processing($otherUser); ########################################################################### } elsif ($action eq 'update') { @@ -233,7 +243,7 @@ if ($action eq 'search') { 'group_group_map READ', 'group_group_map AS ggm READ'); - $editusers || canSeeUser($otherUserID) + $editusers || $user->can_see_user($otherUser) || ThrowUserError('auth_failure', {reason => "not_visible", action => "modify", object => "user"}); @@ -256,9 +266,11 @@ if ($action eq 'search') { if ($login ne $loginold) { # Validate, then trick_taint. $login || ThrowUserError('user_login_required'); - CheckEmailSyntax($login); - is_available_username($login) || ThrowUserError('account_exists', - {'email' => $login}); + validate_email_syntax($login) + || ThrowUserError('illegal_email_address', {addr => $login}); + is_available_username($login) + || ThrowUserError('account_exists', {email => $login}); + trick_taint($login); push(@changedFields, 'login_name'); push(@values, $login); @@ -298,6 +310,12 @@ if ($action eq 'search') { 'WHERE userid = ?', undef, @values); # XXX: should create profiles_activity entries. + # + # We create a new user object here because it needs to + # read information that may have changed since this + # script started. + my $newprofile = new Bugzilla::User($otherUserID); + $newprofile->derive_regexp_groups(); } } @@ -374,7 +392,7 @@ if ($action eq 'search') { }, undef, ($otherUserID, $userid, - GetFieldID('bug_group'), + get_field_id('bug_group'), join(', ', @groupsRemovedFrom), join(', ', @groupsAddedTo))); $dbh->do('UPDATE profiles SET refreshed_when=? WHERE userid = ?', undef, ('1900-01-01 00:00:00', $otherUserID)); @@ -740,36 +758,6 @@ sub mirrorListSelectionValues { } } -# Give a list of IDs of groups the user can see. -sub visibleGroupsAsString { - return join(', ', @{$user->visible_groups_direct()}); -} - -# Determine whether the user can see a user. (Checks for existence, too.) -sub canSeeUser { - my $otherUserID = shift; - my $query; - - if (Param('usevisibilitygroups')) { - # If the user can see no groups, then no users are visible either. - my $visibleGroups = visibleGroupsAsString() || return 0; - - $query = qq{SELECT COUNT(DISTINCT userid) - FROM profiles, user_group_map - WHERE userid = ? - AND user_id = userid - AND isbless = 0 - AND group_id IN ($visibleGroups) - }; - } else { - $query = qq{SELECT COUNT(userid) - FROM profiles - WHERE userid = ? - }; - } - return $dbh->selectrow_array($query, undef, $otherUserID); -} - # Retrieve user data for the user editing form. User creation and user # editing code rely on this to call derive_groups(). sub userDataToVars { @@ -778,7 +766,7 @@ sub userDataToVars { my $query; my $dbh = Bugzilla->dbh; - $otheruser->derive_groups(); + my $grouplist = $otheruser->groups_as_string; $vars->{'otheruser'} = $otheruser; $vars->{'groups'} = $user->bless_groups(); @@ -787,7 +775,11 @@ sub userDataToVars { qq{SELECT id, COUNT(directmember.group_id) AS directmember, COUNT(regexpmember.group_id) AS regexpmember, - COUNT(derivedmember.group_id) AS derivedmember, + (CASE WHEN (groups.id IN ($grouplist) + AND COUNT(directmember.group_id) = 0 + AND COUNT(regexpmember.group_id) = 0 + ) THEN 1 ELSE 0 END) + AS derivedmember, COUNT(directbless.group_id) AS directbless FROM groups LEFT JOIN user_group_map AS directmember @@ -800,11 +792,6 @@ sub userDataToVars { AND regexpmember.user_id = ? AND regexpmember.isbless = 0 AND regexpmember.grant_type = ? - LEFT JOIN user_group_map AS derivedmember - ON derivedmember.group_id = id - AND derivedmember.user_id = ? - AND derivedmember.isbless = 0 - AND derivedmember.grant_type = ? LEFT JOIN user_group_map AS directbless ON directbless.group_id = id AND directbless.user_id = ? @@ -814,21 +801,32 @@ sub userDataToVars { 'id', undef, ($otheruserid, GRANT_DIRECT, $otheruserid, GRANT_REGEXP, - $otheruserid, GRANT_DERIVED, $otheruserid, GRANT_DIRECT)); # Find indirect bless permission. $query = qq{SELECT groups.id - FROM groups, user_group_map AS ugm, group_group_map AS ggm - WHERE ugm.user_id = ? - AND groups.id = ggm.grantor_id - AND ggm.member_id = ugm.group_id - AND ugm.isbless = 0 + FROM groups, group_group_map AS ggm + WHERE groups.id = ggm.grantor_id + AND ggm.member_id IN ($grouplist) AND ggm.grant_type = ? } . $dbh->sql_group_by('id'); foreach (@{$dbh->selectall_arrayref($query, undef, - ($otheruserid, GROUP_BLESS))}) { + (GROUP_BLESS))}) { # Merge indirect bless permissions into permission variable. $vars->{'permissions'}{${$_}[0]}{'indirectbless'} = 1; } } + +sub edit_processing { + my $otherUser = shift; + + $editusers || $user->can_see_user($otherUser) + || ThrowUserError('auth_failure', {reason => "not_visible", + action => "modify", + object => "user"}); + + userDataToVars($otherUser->id); + + $template->process('admin/users/edit.html.tmpl', $vars) + || ThrowTemplateError($template->error()); +} diff --git a/editvalues.cgi b/editvalues.cgi index abeab549a..b0a1fbb71 100755 --- a/editvalues.cgi +++ b/editvalues.cgi @@ -12,6 +12,7 @@ # The Original Code is the Bugzilla Bug Tracking System. # # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> +# Frédéric Buclin <LpSolit@gmail.com> # This is a script to edit the values of fields that have drop-down # or select boxes. It is largely a copy of editmilestones.cgi, but @@ -20,13 +21,12 @@ use strict; use lib "."; -require "CGI.pl"; - +require "globals.pl"; use Bugzilla; use Bugzilla::Util; use Bugzilla::Error; use Bugzilla::Constants; -use Bugzilla::Config qw(:DEFAULT :locations); +use Bugzilla::Config qw(:DEFAULT :admin :locations); # List of different tables that contain the changeable field values # (the old "enums.") Keep them in alphabetical order by their @@ -41,14 +41,14 @@ our @valid_fields = ('op_sys', 'rep_platform', 'priority', 'bug_severity',); ###################################################################### # Returns whether or not the specified table exists in the @tables array. -sub FieldExists ($) { +sub FieldExists { my ($field) = @_; return lsearch(\@valid_fields, $field) >= 0; } # Same as FieldExists, but emits and error and dies if it fails. -sub FieldMustExist ($) { +sub FieldMustExist { my ($field)= @_; $field || @@ -60,7 +60,7 @@ sub FieldMustExist ($) { } # Returns if the specified value exists for the field specified. -sub ValueExists ($$) { +sub ValueExists { my ($field, $value) = @_; FieldMustExist($field); trick_taint($field); @@ -77,7 +77,7 @@ sub ValueExists ($$) { } # Same check as ValueExists, emits an error text and dies if it fails. -sub ValueMustExist ($$) { +sub ValueMustExist { my ($field, $value)= @_; # Values may not be empty (it's very difficult to deal @@ -117,6 +117,13 @@ my $value = trim($cgi->param('value') || ''); my $sortkey = trim($cgi->param('sortkey') || '0'); my $action = trim($cgi->param('action') || ''); +# Gives the name of the parameter associated with the field +# and representing its default value. +my %defaults; +$defaults{'op_sys'} = 'defaultopsys'; +$defaults{'rep_platform'} = 'defaultplatform'; +$defaults{'priority'} = 'defaultpriority'; +$defaults{'bug_severity'} = 'defaultseverity'; # # field = '' -> Show nice list of fields @@ -150,6 +157,7 @@ unless ($action) { {Slice =>{}}); $vars->{'field'} = $field; $vars->{'values'} = $fieldvalues; + $vars->{'default'} = Param($defaults{$field}); $template->process("admin/fieldvalues/list.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -239,6 +247,7 @@ if ($action eq 'del') { $vars->{'value'} = $value; $vars->{'field'} = $field; + $vars->{'param_name'} = $defaults{$field}; $template->process("admin/fieldvalues/confirm-delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -252,6 +261,11 @@ if ($action eq 'del') { # if ($action eq 'delete') { ValueMustExist($field, $value); + if ($value eq Param($defaults{$field})) { + ThrowUserError('fieldvalue_is_default', {field => $field, + value => $value, + param_name => $defaults{$field}}) + } trick_taint($field); trick_taint($value); @@ -368,7 +382,20 @@ if ($action eq 'update') { $vars->{'updated_value'} = 1; } - $dbh->bz_unlock_tables(); + $dbh->bz_unlock_tables(); + + # If the old value was the default value for the field, + # update data/params accordingly. + # This update is done while tables are unlocked due to the + # annoying call to GetVersionTable in Bugzilla/Config/Common.pm. + if ($value ne $valueold + && $valueold eq Param($defaults{$field})) + { + SetParam($defaults{$field}, $value); + WriteParams(); + unlink "$datadir/versioncache"; + $vars->{'default_value_updated'} = 1; + } $vars->{'value'} = $value; $vars->{'field'} = $field; diff --git a/editversions.cgi b/editversions.cgi index 8d3f4dc8b..be2c8a3c6 100755 --- a/editversions.cgi +++ b/editversions.cgi @@ -31,90 +31,27 @@ use strict; use lib "."; -require "CGI.pl"; require "globals.pl"; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); -use Bugzilla::User; - -use vars qw($template $vars); +use Bugzilla::Product; +use Bugzilla::Version; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; - -# TestProduct: just returns if the specified product does exists -# CheckProduct: same check, optionally emit an error text -# TestVersion: just returns if the specified product/version combination exists -# CheckVersion: same check, optionally emit an error text - -sub TestProduct ($) -{ - my $prod = shift; - - # does the product exist? - SendSQL("SELECT name - FROM products - WHERE name = " . SqlQuote($prod)); - return FetchOneColumn(); -} - -sub CheckProduct ($) -{ - my $prod = shift; - - # do we have a product? - unless ($prod) { - ThrowUserError('product_not_specified'); - } - - unless (TestProduct $prod) { - ThrowUserError('product_doesnt_exist', - {'product' => $prod}); - } -} - -sub TestVersion ($$) -{ - my ($prod,$ver) = @_; - - # does the product exist? - SendSQL("SELECT products.name, value - FROM versions, products - WHERE versions.product_id = products.id - AND products.name = " . SqlQuote($prod) . " - AND value = " . SqlQuote($ver)); - return FetchOneColumn(); -} - -sub CheckVersion ($$) -{ - my ($prod, $ver) = @_; - - # do we have the version? - unless ($ver) { - ThrowUserError('version_not_specified'); - } - - CheckProduct($prod); - - unless (TestVersion $prod, $ver) { - ThrowUserError('version_not_valid', - {'product' => $prod, - 'version' => $ver}); - } -} - +my $template = Bugzilla->template; +my $vars = {}; # # Preliminary checks: # -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); -print Bugzilla->cgi->header(); +print $cgi->header(); -UserInGroup("editcomponents") +$user->in_group('editcomponents') || ThrowUserError("auth_failure", {group => "editcomponents", action => "edit", object => "versions"}); @@ -122,70 +59,40 @@ UserInGroup("editcomponents") # # often used variables # -my $product = trim($cgi->param('product') || ''); -my $version = trim($cgi->param('version') || ''); -my $action = trim($cgi->param('action') || ''); - +my $product_name = trim($cgi->param('product') || ''); +my $version_name = trim($cgi->param('version') || ''); +my $action = trim($cgi->param('action') || ''); +my $showbugcounts = (defined $cgi->param('showbugcounts')); # -# product = '' -> Show nice list of versions +# product = '' -> Show nice list of products # -unless ($product) { - - my @products = (); - - SendSQL("SELECT products.name, products.description - FROM products - ORDER BY products.name"); - - while ( MoreSQLData() ) { - my ($product, $description) = FetchSQLData(); - - my $prod = {}; +unless ($product_name) { + $vars->{'products'} = $user->get_selectable_products; + $vars->{'showbugcounts'} = $showbugcounts; - $prod->{'name'} = $product; - $prod->{'description'} = $description; - - push(@products, $prod); - } - - $vars->{'products'} = \@products; - $template->process("admin/versions/select-product.html.tmpl", - $vars) + $template->process("admin/versions/select-product.html.tmpl", $vars) || ThrowTemplateError($template->error()); - exit; } +# First make sure the product name is valid. +my $product = Bugzilla::Product::check_product($product_name); + +# Then make sure the user is allowed to edit properties of this product. +$user->can_see_product($product->name) + || ThrowUserError('product_access_denied', {product => $product->name}); + + # # action='' -> Show nice list of versions # unless ($action) { - - CheckProduct($product); - my $product_id = get_product_id($product); - my @versions = (); - - SendSQL("SELECT value - FROM versions - WHERE product_id = $product_id - ORDER BY value"); - - while ( MoreSQLData() ) { - my $name = FetchOneColumn(); - - my $version = {}; - - $version->{'name'} = $name; - - push(@versions, $version); - - } - - $vars->{'product'} = $product; - $vars->{'versions'} = \@versions; + $vars->{'showbugcounts'} = $showbugcounts; + $vars->{'product'} = $product->name; + $vars->{'versions'} = $product->versions; $template->process("admin/versions/list.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -204,10 +111,7 @@ unless ($action) { if ($action eq 'add') { - CheckProduct($product); - my $product_id = get_product_id($product); - - $vars->{'product'} = $product; + $vars->{'product'} = $product->name; $template->process("admin/versions/create.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -223,33 +127,29 @@ if ($action eq 'add') { if ($action eq 'new') { - CheckProduct($product); - my $product_id = get_product_id($product); - # Cleanups and valididy checks + $version_name || ThrowUserError('version_blank_name'); - unless ($version) { - ThrowUserError('version_blank_name', - {'name' => $version}); - } + # Remove unprintable characters + $version_name = clean_text($version_name); - if (TestVersion($product,$version)) { + my $version = new Bugzilla::Version($product->id, $version_name); + if ($version) { ThrowUserError('version_already_exists', - {'name' => $version, - 'product' => $product}); + {'name' => $version->name, + 'product' => $product->name}); } # Add the new version - SendSQL("INSERT INTO versions ( " . - "value, product_id" . - " ) VALUES ( " . - SqlQuote($version) . ", $product_id)"); + trick_taint($version_name); + $dbh->do("INSERT INTO versions (value, product_id) + VALUES (?, ?)", undef, ($version_name, $product->id)); # Make versioncache flush unlink "$datadir/versioncache"; - $vars->{'name'} = $version; - $vars->{'product'} = $product; + $vars->{'name'} = $version_name; + $vars->{'product'} = $product->name; $template->process("admin/versions/created.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -268,18 +168,13 @@ if ($action eq 'new') { if ($action eq 'del') { - CheckVersion($product, $version); - my $product_id = get_product_id($product); - - SendSQL("SELECT count(bug_id) - FROM bugs - WHERE product_id = $product_id - AND version = " . SqlQuote($version)); - my $bugs = FetchOneColumn() || 0; + my $version = Bugzilla::Version::check_version($product, + $version_name); + my $bugs = $version->bug_count; $vars->{'bug_count'} = $bugs; - $vars->{'name'} = $version; - $vars->{'product'} = $product; + $vars->{'name'} = $version->name; + $vars->{'product'} = $product->name; $template->process("admin/versions/confirm-delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -294,29 +189,24 @@ if ($action eq 'del') { # if ($action eq 'delete') { - CheckVersion($product, $version); - my $product_id = get_product_id($product); - - trick_taint($version); - my $nb_bugs = - $dbh->selectrow_array("SELECT COUNT(bug_id) FROM bugs - WHERE product_id = ? AND version = ?", - undef, ($product_id, $version)); + my $version = Bugzilla::Version::check_version($product, + $version_name); # The version cannot be removed if there are bugs # associated with it. - if ($nb_bugs) { - ThrowUserError("version_has_bugs", { nb => $nb_bugs }); + if ($version->bug_count) { + ThrowUserError("version_has_bugs", + { nb => $version->bug_count }); } $dbh->do("DELETE FROM versions WHERE product_id = ? AND value = ?", - undef, ($product_id, $version)); + undef, ($product->id, $version->name)); unlink "$datadir/versioncache"; - $vars->{'name'} = $version; - $vars->{'product'} = $product; + $vars->{'name'} = $version->name; + $vars->{'product'} = $product->name; $template->process("admin/versions/deleted.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -333,11 +223,11 @@ if ($action eq 'delete') { if ($action eq 'edit') { - CheckVersion($product,$version); - my $product_id = get_product_id($product); + my $version = Bugzilla::Version::check_version($product, + $version_name); - $vars->{'name'} = $version; - $vars->{'product'} = $product; + $vars->{'name'} = $version->name; + $vars->{'product'} = $product->name; $template->process("admin/versions/edit.html.tmpl", $vars) @@ -354,10 +244,15 @@ if ($action eq 'edit') { if ($action eq 'update') { - my $versionold = trim($cgi->param('versionold') || ''); + $version_name || ThrowUserError('version_not_specified'); + + # Remove unprintable characters + $version_name = clean_text($version_name); - CheckVersion($product,$versionold); - my $product_id = get_product_id($product); + my $version_old_name = trim($cgi->param('versionold') || ''); + my $version_old = + Bugzilla::Version::check_version($product, + $version_old_name); # Note that the order of this tests is important. If you change # them, be sure to test for WHERE='$version' or WHERE='$versionold' @@ -366,23 +261,28 @@ if ($action eq 'update') { 'versions WRITE', 'products READ'); - if ($version ne $versionold) { - unless ($version) { - ThrowUserError('version_blank_name'); - } - if (TestVersion($product,$version)) { + if ($version_name ne $version_old->name) { + + my $version = new Bugzilla::Version($product->id, + $version_name); + + if ($version) { ThrowUserError('version_already_exists', - {'name' => $version, - 'product' => $product}); + {'name' => $version->name, + 'product' => $product->name}); } - SendSQL("UPDATE bugs - SET version=" . SqlQuote($version) . " - WHERE version=" . SqlQuote($versionold) . " - AND product_id = $product_id"); - SendSQL("UPDATE versions - SET value = " . SqlQuote($version) . " - WHERE product_id = $product_id - AND value = " . SqlQuote($versionold)); + + trick_taint($version_name); + $dbh->do("UPDATE bugs + SET version = ? + WHERE version = ? AND product_id = ?", undef, + ($version_name, $version_old->name, $product->id)); + + $dbh->do("UPDATE versions + SET value = ? + WHERE product_id = ? AND value = ?", undef, + ($version_name, $product->id, $version_old->name)); + unlink "$datadir/versioncache"; $vars->{'updated_name'} = 1; @@ -390,8 +290,8 @@ if ($action eq 'update') { $dbh->bz_unlock_tables(); - $vars->{'name'} = $version; - $vars->{'product'} = $product; + $vars->{'name'} = $version_name; + $vars->{'product'} = $product->name; $template->process("admin/versions/updated.html.tmpl", $vars) || ThrowTemplateError($template->error()); diff --git a/editwhines.cgi b/editwhines.cgi index f9b376e07..8086862d2 100755 --- a/editwhines.cgi +++ b/editwhines.cgi @@ -28,16 +28,13 @@ use strict; use lib "."; -require "CGI.pl"; require "globals.pl"; -use vars qw( $vars ); - use Bugzilla::Constants; use Bugzilla::User; use Bugzilla::Group; # require the user to have logged in -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); ############################################################################### # Main Body Execution @@ -45,9 +42,9 @@ Bugzilla->login(LOGIN_REQUIRED); my $cgi = Bugzilla->cgi; my $template = Bugzilla->template; +my $vars = {}; my $dbh = Bugzilla->dbh; -my $user = Bugzilla->user; my $userid = $user->id; my $sth; # database statement handle @@ -74,7 +71,7 @@ my $sth; # database statement handle my $events = get_events($userid); # First see if this user may use whines -UserInGroup("bz_canusewhines") +$user->in_group('bz_canusewhines') || ThrowUserError("auth_failure", {group => "bz_canusewhines", action => "schedule", object => "reports"}); diff --git a/enter_bug.cgi b/enter_bug.cgi index 3e6b741af..89ebbcb85 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -41,22 +41,19 @@ use Bugzilla; use Bugzilla::Constants; use Bugzilla::Bug; use Bugzilla::User; -require "CGI.pl"; +use Bugzilla::Product; +require "globals.pl"; use vars qw( - $template - $vars @enterable_products @legal_opsys @legal_platform @legal_priority @legal_severity @legal_keywords - $userid %versions %target_milestone $proddesc - $classdesc ); # If we're using bug groups to restrict bug entry, we need to know who the @@ -67,6 +64,8 @@ my $cloned_bug; my $cloned_bug_id; my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; my $product = $cgi->param('product'); @@ -74,53 +73,50 @@ if (!defined $product || $product eq "") { GetVersionTable(); Bugzilla->login(); - if ( ! Param('useclassification') ) { - # just pick the default one - $cgi->param(-name => 'classification', -value => (keys %::classdesc)[0]); - } - - if (!$cgi->param('classification')) { - my %classdesc; - my %classifications; - - foreach my $c (GetSelectableClassifications()) { - my $found = 0; - foreach my $p (@enterable_products) { - if (CanEnterProduct($p) - && IsInClassification($c,$p)) { - $found = 1; - } - } - if ($found) { - $classdesc{$c} = $::classdesc{$c}; - $classifications{$c} = $::classifications{$c}; - } - } - - my $classification_size = scalar(keys %classdesc); - if ($classification_size == 0) { - ThrowUserError("no_products"); - } - elsif ($classification_size > 1) { - $vars->{'classdesc'} = \%classdesc; - $vars->{'classifications'} = \%classifications; - - $vars->{'target'} = "enter_bug.cgi"; - $vars->{'format'} = $cgi->param('format'); + if ( ! Param('useclassification') ) { + # Just use a fake value for the Classification. + $cgi->param(-name => 'classification', + -value => '__all'); + } + + if (!$cgi->param('classification')) { + my $classifications = Bugzilla->user->get_selectable_classifications(); + foreach my $classification (@$classifications) { + my $found = 0; + foreach my $p (@enterable_products) { + if (Bugzilla->user->can_enter_product($p) + && IsInClassification($classification->{name},$p)) { + $found = 1; + } + } + if ($found == 0) { + @$classifications = grep($_->{name} ne $classification->{name}, + @$classifications); + } + } + + if (scalar(@$classifications) == 0) { + ThrowUserError("no_products"); + } + elsif (scalar(@$classifications) > 1) { + $vars->{'classifications'} = $classifications; + + $vars->{'target'} = "enter_bug.cgi"; + $vars->{'format'} = $cgi->param('format'); - $vars->{'cloned_bug_id'} = $cgi->param('cloned_bug_id'); + $vars->{'cloned_bug_id'} = $cgi->param('cloned_bug_id'); - print $cgi->header(); - $template->process("global/choose-classification.html.tmpl", $vars) - || ThrowTemplateError($template->error()); - exit; - } - $cgi->param(-name => 'classification', -value => (keys %classdesc)[0]); - } + print $cgi->header(); + $template->process("global/choose-classification.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + exit; + } + $cgi->param(-name => 'classification', -value => @$classifications[0]->name); + } my %products; foreach my $p (@enterable_products) { - if (CanEnterProduct($p)) { + if (Bugzilla->user->can_enter_product($p)) { if (IsInClassification(scalar $cgi->param('classification'),$p) || $cgi->param('classification') eq "__all") { $products{$p} = $::proddesc{$p}; @@ -145,7 +141,6 @@ if (!defined $product || $product eq "") { } $vars->{'proddesc'} = \%products; $vars->{'classifications'} = \%classifications; - $vars->{'classdesc'} = \%::classdesc; $vars->{'target'} = "enter_bug.cgi"; $vars->{'format'} = $cgi->param('format'); @@ -328,12 +323,15 @@ $cloned_bug_id = $cgi->param('cloned_bug_id'); if ($cloned_bug_id) { ValidateBugID($cloned_bug_id); - $cloned_bug = new Bugzilla::Bug($cloned_bug_id, $userid); + $cloned_bug = new Bugzilla::Bug($cloned_bug_id, Bugzilla->user->id); } # We need to check and make sure # that the user has permission to enter a bug against this product. -CanEnterProductOrWarn($product); +my $prod_obj = new Bugzilla::Product({name => $product}); +# Update the product name to get the correct case. +$product = $prod_obj->name if defined $prod_obj; +Bugzilla->user->can_enter_product($product, 1); GetVersionTable(); @@ -481,15 +479,18 @@ if ( ($cloned_bug_id) && $default{'version'} = $vars->{'version'}->[$#{$vars->{'version'}}]; } +# Only used with placeholders below +trick_taint($product); + # Get list of milestones. if ( Param('usetargetmilestone') ) { $vars->{'target_milestone'} = $::target_milestone{$product}; if (formvalue('target_milestone')) { $default{'target_milestone'} = formvalue('target_milestone'); } else { - SendSQL("SELECT defaultmilestone FROM products WHERE " . - "name = " . SqlQuote($product)); - $default{'target_milestone'} = FetchOneColumn(); + $default{'target_milestone'} = + $dbh->selectrow_array('SELECT defaultmilestone FROM products + WHERE name = ?', undef, $product); } } @@ -504,9 +505,9 @@ my @status; # confirmation, user cannot confirm UNCONFIRMED # confirmation, user can confirm NEW, UNCONFIRMED. -SendSQL("SELECT votestoconfirm FROM products WHERE name = " . - SqlQuote($product)); -if (FetchOneColumn()) { +my $votestoconfirm = $dbh->selectrow_array('SELECT votestoconfirm FROM products + WHERE name = ?', undef, $product); +if ($votestoconfirm) { if (UserInGroup("editbugs") || UserInGroup("canconfirm")) { push(@status, "NEW"); } @@ -526,17 +527,19 @@ if (formvalue('bug_status') && (lsearch(\@status, formvalue('bug_status')) >= 0) $default{'bug_status'} = $status[0]; } -SendSQL("SELECT DISTINCT groups.id, groups.name, groups.description, " . - "membercontrol, othercontrol " . - "FROM groups LEFT JOIN group_control_map " . - "ON group_id = id AND product_id = $product_id " . - "WHERE isbuggroup != 0 AND isactive != 0 ORDER BY description"); +my $grouplist = $dbh->selectall_arrayref( + q{SELECT DISTINCT groups.id, groups.name, groups.description, + membercontrol, othercontrol + FROM groups + LEFT JOIN group_control_map + ON group_id = id AND product_id = ? + WHERE isbuggroup != 0 AND isactive != 0 + ORDER BY description}, undef, $product_id); my @groups; -while (MoreSQLData()) { - my ($id, $groupname, $description, $membercontrol, $othercontrol) - = FetchSQLData(); +foreach my $row (@$grouplist) { + my ($id, $groupname, $description, $membercontrol, $othercontrol) = @$row; # Only include groups if the entering user will have an option. next if ((!$membercontrol) || ($membercontrol == CONTROLMAPNA) @@ -587,9 +590,9 @@ $vars->{'group'} = \@groups; $vars->{'default'} = \%default; -my $format = - GetFormat("bug/create/create", scalar $cgi->param('format'), - scalar $cgi->param('ctype')); +my $format = $template->get_format("bug/create/create", + scalar $cgi->param('format'), + scalar $cgi->param('ctype')); print $cgi->header($format->{'ctype'}); $template->process($format->{'template'}, $vars) diff --git a/globals.pl b/globals.pl index 437667e07..6240b9737 100644 --- a/globals.pl +++ b/globals.pl @@ -25,6 +25,7 @@ # Joel Peshkin <bugreport@peshkin.net> # Dave Lawrence <dkl@redhat.com> # Max Kanat-Alexander <mkanat@bugzilla.org> +# Lance Larsh <lance.larsh@oracle.com> # Contains some global variables and routines used throughout bugzilla. @@ -35,15 +36,14 @@ use Bugzilla::Constants; use Bugzilla::Util; # Bring ChmodDataFile in until this is all moved to the module use Bugzilla::Config qw(:DEFAULT ChmodDataFile $localconfig $datadir); -use Bugzilla::BugMail; use Bugzilla::User; +use Bugzilla::Error; # Shut up misguided -w warnings about "used only once". For some reason, # "use vars" chokes on me when I try it here. sub globals_pl_sillyness { my $zz; - $zz = @main::default_column_list; $zz = @main::enterable_products; $zz = %main::keywordsbyname; $zz = @main::legal_bug_status; @@ -58,11 +58,7 @@ sub globals_pl_sillyness { $zz = @main::legal_versions; $zz = @main::milestoneurl; $zz = %main::proddesc; - $zz = %main::classdesc; $zz = @main::prodmaxvotes; - $zz = $main::template; - $zz = $main::userid; - $zz = $main::vars; } # @@ -108,14 +104,6 @@ $::SIG{PIPE} = 'IGNORE'; #} #$::SIG{__DIE__} = \&die_with_dignity; -sub GetFieldID { - my ($f) = (@_); - SendSQL("SELECT fieldid FROM fielddefs WHERE name = " . SqlQuote($f)); - my $fieldid = FetchOneColumn(); - die "Unknown field id: $f" if !$fieldid; - return $fieldid; -} - # XXXX - this needs to go away sub GenerateVersionTable { my $dbh = Bugzilla->dbh; @@ -170,12 +158,6 @@ sub GenerateVersionTable { my $mpart = $dotargetmilestone ? ", milestoneurl" : ""; - SendSQL("SELECT name, description FROM classifications ORDER BY name"); - while (@line = FetchSQLData()) { - my ($n, $d) = (@line); - $::classdesc{$n} = $d; - } - SendSQL("SELECT name, description, votesperuser, disallownew$mpart " . "FROM products ORDER BY name"); while (@line = FetchSQLData()) { @@ -260,10 +242,10 @@ sub GenerateVersionTable { '*::legal_bug_status', '*::legal_resolution'])); print $fh (Data::Dumper->Dump([\@::settable_resolution, \%::proddesc, - \%::classifications, \%::classdesc, + \%::classifications, \@::enterable_products, \%::prodmaxvotes], ['*::settable_resolution', '*::proddesc', - '*::classifications', '*::classdesc', + '*::classifications', '*::enterable_products', '*::prodmaxvotes'])); if ($dotargetmilestone) { @@ -325,32 +307,22 @@ sub GetKeywordIdFromName { $::VersionTableLoaded = 0; sub GetVersionTable { return if $::VersionTableLoaded; - my $mtime = file_mod_time("$datadir/versioncache"); - if (!defined $mtime || $mtime eq "" || !-r "$datadir/versioncache") { - $mtime = 0; - } - if (time() - $mtime > 3600) { - use Bugzilla::Token; - Bugzilla::Token::CleanTokenTable() if Bugzilla->dbwritesallowed; + my $file_generated = 0; + if (!-r "$datadir/versioncache") { GenerateVersionTable(); + $file_generated = 1; } require "$datadir/versioncache"; - if (!defined %::versions) { + if (!defined %::versions && !$file_generated) { GenerateVersionTable(); do "$datadir/versioncache"; - - if (!defined %::versions) { - die "Can't generate file $datadir/versioncache"; - } + } + if (!defined %::versions) { + die "Can't generate file $datadir/versioncache"; } $::VersionTableLoaded = 1; } -sub GenerateRandomPassword { - my $size = (shift or 10); # default to 10 chars if nothing specified - return join("", map{ ('0'..'9','a'..'z','A'..'Z')[rand 62] } (1..$size)); -} - # # This function checks if there are any entry groups defined. # If called with no arguments, it identifies @@ -397,27 +369,6 @@ sub AnyDefaultGroups { return $::CachedAnyDefaultGroups; } -# -# This function checks if, given a product id, the user can edit -# bugs in this product at all. -sub CanEditProductId { - my ($productid) = @_; - my $dbh = Bugzilla->dbh; - my $query = "SELECT group_id FROM group_control_map " . - "WHERE product_id = $productid " . - "AND canedit != 0 "; - if (%{Bugzilla->user->groups}) { - $query .= "AND group_id NOT IN(" . - join(',', values(%{Bugzilla->user->groups})) . ") "; - } - $query .= $dbh->sql_limit(1); - PushGlobalSQLState(); - SendSQL($query); - my ($result) = FetchSQLData(); - PopGlobalSQLState(); - return (!defined($result)); -} - sub IsInClassification { my ($classification,$productname) = @_; @@ -436,205 +387,6 @@ sub IsInClassification { } } -# This function determines whether or not a user can enter -# bugs into the named product. -sub CanEnterProduct { - my ($productname, $verbose) = @_; - my $dbh = Bugzilla->dbh; - - return unless defined($productname); - trick_taint($productname); - - # First check whether or not the user has access to that product. - my $query = "SELECT group_id IS NULL " . - "FROM products " . - "LEFT JOIN group_control_map " . - "ON group_control_map.product_id = products.id " . - "AND group_control_map.entry != 0 "; - if (%{Bugzilla->user->groups}) { - $query .= "AND group_id NOT IN(" . - join(',', values(%{Bugzilla->user->groups})) . ") "; - } - $query .= "WHERE products.name = ? " . - $dbh->sql_limit(1); - - my $has_access = $dbh->selectrow_array($query, undef, $productname); - if (!$has_access) { - # Do we require the exact reason why we cannot enter - # bugs into that product? Returning -1 explicitely - # means the user has no access to the product or the - # product does not exist. - return (defined($verbose)) ? -1 : 0; - } - - # Check if the product is open for new bugs and has - # at least one component and has at least one version. - my ($allow_new_bugs, $has_version) = - $dbh->selectrow_array('SELECT CASE WHEN disallownew = 0 THEN 1 ELSE 0 END, ' . - 'versions.value IS NOT NULL ' . - 'FROM products INNER JOIN components ' . - 'ON components.product_id = products.id ' . - 'LEFT JOIN versions ' . - 'ON versions.product_id = products.id ' . - 'WHERE products.name = ? ' . - $dbh->sql_limit(1), undef, $productname); - - - if (defined $verbose) { - # Return (undef, undef) if the product has no components, - # Return (?, 0) if the product has no versions, - # Return (0, ?) if the product is closed for new bug entry, - # Return (1, 1) if the user can enter bugs into the product, - return ($allow_new_bugs, $has_version); - } else { - # Return undef if the product has no components - # Return 0 if the product has no versions, or is closed for bug entry - # Return 1 if the user can enter bugs into the product - return ($allow_new_bugs && $has_version); - } -} - -# Call CanEnterProduct() and display an error message -# if the user cannot enter bugs into that product. -sub CanEnterProductOrWarn { - my ($product) = @_; - - if (!defined($product)) { - ThrowUserError("no_products"); - } - my ($allow_new_bugs, $has_version) = CanEnterProduct($product, 1); - trick_taint($product); - - if (!defined $allow_new_bugs) { - ThrowUserError("missing_component", { product => $product }); - } elsif (!$allow_new_bugs) { - ThrowUserError("product_disabled", { product => $product}); - } elsif ($allow_new_bugs < 0) { - ThrowUserError("entry_access_denied", { product => $product}); - } elsif (!$has_version) { - ThrowUserError("missing_version", { product => $product }); - } - return 1; -} - -sub GetEnterableProducts { - my @products; - # XXX rewrite into pure SQL instead of relying on legal_products? - foreach my $p (@::legal_product) { - if (CanEnterProduct($p)) { - push @products, $p; - } - } - return (@products); -} - - -# -# This function returns an alphabetical list of product names to which -# the user can enter bugs. If the $by_id parameter is true, also retrieves IDs -# and pushes them onto the list as id, name [, id, name...] for easy slurping -# into a hash by the calling code. -sub GetSelectableProducts { - my ($by_id,$by_classification) = @_; - - my $extra_sql = $by_id ? "id, " : ""; - - my $extra_from_sql = $by_classification ? " INNER JOIN classifications" - . " ON classifications.id = products.classification_id" : ""; - - my $query = "SELECT $extra_sql products.name " . - "FROM products $extra_from_sql " . - "LEFT JOIN group_control_map " . - "ON group_control_map.product_id = products.id "; - if (Param('useentrygroupdefault')) { - $query .= "AND group_control_map.entry != 0 "; - } else { - $query .= "AND group_control_map.membercontrol = " . - CONTROLMAPMANDATORY . " "; - } - if (%{Bugzilla->user->groups}) { - $query .= "AND group_id NOT IN(" . - join(',', values(%{Bugzilla->user->groups})) . ") "; - } - $query .= "WHERE group_id IS NULL "; - if ($by_classification) { - $query .= "AND classifications.name = "; - $query .= SqlQuote($by_classification) . " "; - } - $query .= "ORDER BY name"; - PushGlobalSQLState(); - SendSQL($query); - my @products = (); - push(@products, FetchSQLData()) while MoreSQLData(); - PopGlobalSQLState(); - return (@products); -} - -# GetSelectableProductHash -# returns a hash containing -# legal_products => an enterable product list -# legal_(components|versions|milestones) => -# the list of components, versions, and milestones of enterable products -# (components|versions|milestones)_by_product -# => a hash of component lists for each enterable product -# Milestones only get returned if the usetargetmilestones parameter is set. -sub GetSelectableProductHash { - # The hash of selectable products and their attributes that gets returned - # at the end of this function. - my $selectables = {}; - - my %products = GetSelectableProducts(1); - - $selectables->{legal_products} = [sort values %products]; - - # Run queries that retrieve the list of components, versions, - # and target milestones (if used) for the selectable products. - my @tables = qw(components versions); - push(@tables, 'milestones') if Param('usetargetmilestone'); - - PushGlobalSQLState(); - foreach my $table (@tables) { - my %values; - my %values_by_product; - - if (scalar(keys %products)) { - # Why oh why can't we standardize on these names?!? - my $fld = ($table eq "components" ? "name" : "value"); - - my $query = "SELECT $fld, product_id FROM $table WHERE product_id " . - "IN (" . join(",", keys %products) . ") ORDER BY $fld"; - SendSQL($query); - - while (MoreSQLData()) { - my ($name, $product_id) = FetchSQLData(); - next unless $name; - $values{$name} = 1; - push @{$values_by_product{$products{$product_id}}}, $name; - } - } - - $selectables->{"legal_$table"} = [sort keys %values]; - $selectables->{"${table}_by_product"} = \%values_by_product; - } - PopGlobalSQLState(); - - return $selectables; -} - -# -# This function returns an alphabetical list of classifications that has products the user can enter bugs. -sub GetSelectableClassifications { - my @selectable_classes = (); - - foreach my $c (sort keys %::classdesc) { - if ( scalar(GetSelectableProducts(0,$c)) > 0) { - push(@selectable_classes,$c); - } - } - return (@selectable_classes); -} - - sub ValidatePassword { # Determines whether or not a password is valid (i.e. meets Bugzilla's # requirements for length and content). @@ -683,28 +435,6 @@ sub DBNameToIdAndCheck { ThrowUserError("invalid_username", { name => $name }); } -sub get_classification_id { - my ($classification) = @_; - PushGlobalSQLState(); - SendSQL("SELECT id FROM classifications WHERE name = " . SqlQuote($classification)); - my ($classification_id) = FetchSQLData(); - PopGlobalSQLState(); - return $classification_id; -} - -sub get_classification_name { - my ($classification_id) = @_; - die "non-numeric classification_id '$classification_id' passed to get_classification_name" - unless ($classification_id =~ /^\d+$/); - PushGlobalSQLState(); - SendSQL("SELECT name FROM classifications WHERE id = $classification_id"); - my ($classification) = FetchSQLData(); - PopGlobalSQLState(); - return $classification; -} - - - sub get_product_id { my ($prod) = @_; PushGlobalSQLState(); @@ -833,7 +563,7 @@ sub quoteUrls { "<a href=\"$current_bugurl#c$4\">$1</a>") ~egox; - # Duplicate markers + # Old duplicate markers $text =~ s~(?<=^\*\*\*\ This\ bug\ has\ been\ marked\ as\ a\ duplicate\ of\ ) (\d+) (?=\ \*\*\*\Z) @@ -980,51 +710,6 @@ sub GetBugLink { } } -sub GetLongDescriptionAsText { - my ($id, $start, $end) = (@_); - my $result = ""; - my $count = 0; - my $anyprivate = 0; - my $dbh = Bugzilla->dbh; - my ($query) = ("SELECT profiles.login_name, " . - $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i') . ", " . - " longdescs.thetext, longdescs.isprivate, " . - " longdescs.already_wrapped " . - "FROM longdescs, profiles " . - "WHERE profiles.userid = longdescs.who " . - "AND longdescs.bug_id = $id "); - - # $start will be undef for New bugs, and defined for pre-existing bugs. - if ($start) { - # If $start is not NULL, obtain the count-index - # of this comment for the leading "Comment #xxx" line.) - SendSQL("SELECT count(*) FROM longdescs " . - " WHERE bug_id = $id AND bug_when <= '$start'"); - ($count) = (FetchSQLData()); - - $query .= " AND longdescs.bug_when > '$start'" - . " AND longdescs.bug_when <= '$end' "; - } - - $query .= "ORDER BY longdescs.bug_when"; - SendSQL($query); - while (MoreSQLData()) { - my ($who, $when, $text, $isprivate, $work_time, $already_wrapped) = - (FetchSQLData()); - if ($count) { - $result .= "\n\n------- Comment #$count from $who".Param('emailsuffix')." ". - Bugzilla::Util::format_time($when) . " -------\n"; - } - if (($isprivate > 0) && Param("insidergroup")) { - $anyprivate = 1; - } - $result .= ($already_wrapped ? $text : wrap_comment($text)); - $count++; - } - - return ($result, $anyprivate); -} - # Returns a list of all the legal values for a field that has a # list of legal values, like rep_platform or resolution. sub get_legal_field_values { @@ -1040,7 +725,8 @@ sub get_legal_field_values { sub BugInGroupId { my ($bugid, $groupid) = (@_); PushGlobalSQLState(); - SendSQL("SELECT bug_id != 0 FROM bug_group_map + SendSQL("SELECT CASE WHEN bug_id != 0 THEN 1 ELSE 0 END + FROM bug_group_map WHERE bug_id = $bugid AND group_id = $groupid"); my $bugingroup = FetchOneColumn(); @@ -1108,60 +794,8 @@ sub OpenStates { return ('NEW', 'REOPENED', 'ASSIGNED', 'UNCONFIRMED'); } - -############################################################################### - -# Constructs a format object from URL parameters. You most commonly call it -# like this: -# my $format = GetFormat("foo/bar", scalar($cgi->param('format')), -# scalar($cgi->param('ctype'))); - -sub GetFormat { - my ($template, $format, $ctype) = @_; - - $ctype ||= "html"; - $format ||= ""; - - # Security - allow letters and a hyphen only - $ctype =~ s/[^a-zA-Z\-]//g; - $format =~ s/[^a-zA-Z\-]//g; - trick_taint($ctype); - trick_taint($format); - - $template .= ($format ? "-$format" : ""); - $template .= ".$ctype.tmpl"; - - # Now check that the template actually exists. We only want to check - # if the template exists; any other errors (eg parse errors) will - # end up being detected later. - eval { - Bugzilla->template->context->template($template); - }; - # This parsing may seem fragile, but its OK: - # http://lists.template-toolkit.org/pipermail/templates/2003-March/004370.html - # Even if it is wrong, any sort of error is going to cause a failure - # eventually, so the only issue would be an incorrect error message - if ($@ && $@->info =~ /: not found$/) { - ThrowUserError("format_not_found", { 'format' => $format, - 'ctype' => $ctype, - }); - } - - # Else, just return the info - return - { - 'template' => $template , - 'extension' => $ctype , - 'ctype' => Bugzilla::Constants::contenttypes->{$ctype} , - }; -} - ############# Live code below here (that is, not subroutine defs) ############# use Bugzilla; -$::template = Bugzilla->template(); - -$::vars = {}; - 1; diff --git a/images/CVS/Entries b/images/CVS/Entries index 4e73bb8a4..8bb6ec691 100644 --- a/images/CVS/Entries +++ b/images/CVS/Entries @@ -1,2 +1,2 @@ -/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-2_20_2 +/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-2_22 D diff --git a/images/CVS/Tag b/images/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/images/CVS/Tag +++ b/images/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/importxml.pl b/importxml.pl index 0d9dcb868..e613d15fc 100755 --- a/importxml.pl +++ b/importxml.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl -wT # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Mozilla Public @@ -19,9 +19,10 @@ # Rights Reserved. # # Contributor(s): Dawn Endico <endico@mozilla.org> +# Gregary Hendricks <ghendricks@novell.com> +# Vance Baarda <vrb@novell.com> - -# This script reads in xml bug data from standard input and inserts +# This script reads in xml bug data from standard input and inserts # a new bug into bugzilla. Everything before the beginning <?xml line # is removed so you can pipe in email messages. @@ -29,19 +30,27 @@ use strict; ##################################################################### # -# This script is used import bugs from another installation of bugzilla. -# Moving a bug on another system will send mail to an alias provided by +# This script is used to import bugs from another installation of bugzilla. +# It can be used in two ways. +# First using the move function of bugzilla +# on another system will send mail to an alias provided by # the administrator of the target installation (you). Set up an alias -# similar to the one given below so this mail will be automatically +# similar to the one given below so this mail will be automatically # run by this script and imported into your database. Run 'newaliases' # after adding this alias to your aliases file. Make sure your sendmail -# installation is configured to allow mail aliases to execute code. +# installation is configured to allow mail aliases to execute code. # # bugzilla-import: "|/usr/bin/perl /opt/bugzilla/importxml.pl" # +# Second it can be run from the command line with any xml file from +# STDIN that conforms to the bugzilla DTD. In this case you can pass +# an argument to set whether you want to send the +# mail that will be sent to the exporter and maintainer normally. +# +# importxml.pl bugsfile.xml +# ##################################################################### - # figure out which path this script lives in. Set the current path to # this and add it to @INC so this will work when run as part of mail # alias by the mailer daemon @@ -49,584 +58,1235 @@ use strict; # $::path declaration in a BEGIN block so that it is executed before # the rest of the file is compiled. BEGIN { - $::path = $0; - $::path =~ m#(.*)/[^/]+#; - $::path = $1; - $::path ||= '.'; # $0 is empty at compile time. This line will - # have no effect on this script at runtime. + $::path = $0; + $::path =~ m#(.*)/[^/]+#; + $::path = $1; + $::path ||= '.'; # $0 is empty at compile time. This line will + # have no effect on this script at runtime. } chdir $::path; use lib ($::path); +# Data dumber is used for debugging, I got tired of copying it back in +# and then removing it. +#use Data::Dumper; + use Bugzilla; +use Bugzilla::Bug; +use Bugzilla::Product; +use Bugzilla::Version; +use Bugzilla::Component; +use Bugzilla::Milestone; +use Bugzilla::FlagType; use Bugzilla::Config qw(:DEFAULT $datadir); use Bugzilla::BugMail; - -use XML::Parser; -use Data::Dumper; -$Data::Dumper::Useqq = 1; -use Bugzilla::BugMail; use Bugzilla::User; +use Bugzilla::Util; +use Bugzilla::Constants; + +use MIME::Base64; +use MIME::Parser; +use Date::Format; +use Getopt::Long; +use Pod::Usage; +use XML::Twig; -require "CGI.pl"; require "globals.pl"; +# We want to capture errors and handle them here rather than have the Template +# code barf all over the place. +Bugzilla->batch(1); + +my $debug = 0; +my $mail = ''; +my $help = 0; + +my $result = GetOptions( + "verbose|debug+" => \$debug, + "mail|sendmail!" => \$mail, + "help|?" => \$help +); + +pod2usage(0) if $help; + +use constant OK_LEVEL => 3; +use constant DEBUG_LEVEL => 2; +use constant ERR_LEVEL => 1; + GetVersionTable(); +our @logs; +our @attachments; +our $bugtotal; +my $xml; +my $dbh = Bugzilla->dbh; +my ($timestamp) = $dbh->selectrow_array("SELECT NOW()"); + +############################################################################### +# Helper sub routines # +############################################################################### +# This can go away as soon as data/versioncache is removed. Since we still +# have to use GetVersionTable() though, it stays for now. sub sillyness { my $zz; - $zz = $Data::Dumper::Useqq; - $zz = %::versions; - $zz = %::keywordsbyname; $zz = @::legal_bug_status; $zz = @::legal_opsys; $zz = @::legal_platform; $zz = @::legal_priority; $zz = @::legal_severity; $zz = @::legal_resolution; - $zz = %::target_milestone; -} - -# XML::Parser automatically unquotes characters when it -# parses the XML, so this routine shouldn't be needed -# for anything (see bug 109530). -sub UnQuoteXMLChars { - $_[0] =~ s/&/&/g; - $_[0] =~ s/</</g; - $_[0] =~ s/>/>/g; - $_[0] =~ s/'/'/g; # ' # Darned emacs colors - $_[0] =~ s/"/"/g; # " # Darned emacs colors -# $_[0] =~ s/([\x80-\xFF])/&XmlUtf8Encode(ord($1))/ge; - return($_[0]); } sub MailMessage { - my $subject = shift @_; - my $message = shift @_; - my @recipients = @_; - - my $to = join (", ", @recipients); - my $header = "To: $to\n"; - my $from = Param("moved-from-address"); - $from =~ s/@/\@/g; - $header.= "From: Bugzilla <$from>\n"; - $header.= "Subject: $subject\n\n"; - - my $sendmessage = $header . $message . "\n"; - Bugzilla::BugMail::MessageToMTA($sendmessage); -} + return unless ($mail); + my $subject = shift; + my $message = shift; + my @recipients = @_; + my $from = Param("moved-from-address"); + $from =~ s/@/\@/g; + foreach my $to (@recipients){ + my $header = "To: $to\n"; + $header .= "From: Bugzilla <$from>\n"; + $header .= "Subject: $subject\n\n"; + my $sendmessage = $header . $message . "\n"; + Bugzilla::BugMail::MessageToMTA($sendmessage); + } -my $xml; -while (<>) { - $xml .= $_; } -# remove everything in file before xml header (i.e. remove the mail header) -$xml =~ s/^.+(<\?xml version.+)$/$1/s; -my $parser = new XML::Parser(Style => 'Tree'); -my $tree = $parser->parse($xml); -my $dbh = Bugzilla->dbh; +sub Debug { + return unless ($debug); + my ( $message, $level ) = (@_); + print STDERR "OK: $message \n" if ( $level == OK_LEVEL ); + print STDERR "ERR: $message \n" if ( $level == ERR_LEVEL ); + print STDERR "$message\n" + if ( ( $debug == $level ) && ( $level == DEBUG_LEVEL ) ); +} -my $maintainer; -if (defined $tree->[1][0]->{'maintainer'}) { - $maintainer= $tree->[1][0]->{'maintainer'}; -} else { - my $subject = "Bug import error: no maintainer"; - my $message = "Cannot import these bugs because no maintainer for "; - $message .= "the exporting db is given.\n"; - $message .= "\n\nPlease re-open the original bug.\n"; - $message .= "\n\n$xml"; - my @to = (Param("maintainer")); - MailMessage ($subject, $message, @to); - exit; +sub Error { + my ( $reason, $errtype, $exporter ) = @_; + my $subject = "Bug import error: $reason"; + my $message = "Cannot import these bugs because $reason "; + $message .= "\n\nPlease re-open the original bug.\n" if ($errtype); + $message .= "For more info, contact " . Param("maintainer") . ".\n"; + my @to = ( Param("maintainer"), $exporter); + Debug( $message, ERR_LEVEL ); + MailMessage( $subject, $message, @to ); + exit; } -my $exporter; -if (defined $tree->[1][0]->{'exporter'}) { - $exporter = $tree->[1][0]->{'exporter'}; -} else { - my $subject = "Bug import error: no exporter"; - my $message = "Cannot import these bugs because no exporter is given.\n"; - $message .= "\n\nPlease re-open the original bug.\n"; - $message .= "\n\n$xml"; - my @to = (Param("maintainer"), $maintainer); - MailMessage ($subject, $message, @to); - exit; +# This will be implemented in Bugzilla::Field as soon as bug 31506 lands +sub check_field { + my ($name, $value, $legalsRef, $no_warn) = @_; + my $dbh = Bugzilla->dbh; + + if (!defined($value) + || trim($value) eq "" + || (defined($legalsRef) && lsearch($legalsRef, $value) < 0)) + { + return 0 if $no_warn; # We don't want an error to be thrown; return. + + trick_taint($name); + my ($result) = $dbh->selectrow_array("SELECT description FROM fielddefs + WHERE name = ?", undef, $name); + + my $field = $result || $name; + ThrowCodeError('illegal_field', { field => $field }); + } + return 1; } +# This subroutine handles flags for process_bug. It is generic in that +# it can handle both attachment flags and bug flags. +sub flag_handler { + my ( + $name, $status, $setter_login, + $requestee_login, $exporterid, $bugid, + $productid, $componentid, $attachid + ) + = @_; + + my $type = ($attachid) ? "attachment" : "bug"; + my $err = ''; + my $setter = Bugzilla::User->new_from_login($setter_login); + my $requestee; + my $requestee_id; + + unless ($setter) { + $err = "Invalid setter $setter_login on $type flag $name\n"; + $err .= " Dropping flag $name\n"; + return $err; + } + if ( !$setter->can_see_bug($bugid) ) { + $err .= "Setter is not a member of bug group\n"; + $err .= " Dropping flag $name\n"; + return $err; + } + my $setter_id = $setter->id; + if ( defined($requestee_login) ) { + $requestee = Bugzilla::User->new_from_login($requestee_login); + if ( $requestee ) { + if ( !$requestee->can_see_bug($bugid) ) { + $err .= "Requestee is not a member of bug group\n"; + $err .= " Requesting from the wind\n"; + } + else{ + $requestee_id = $requestee->id; + } + } + else { + $err = "Invalid requestee $requestee_login on $type flag $name\n"; + $err .= " Requesting from the wind.\n"; + } + + } + my $flag_types; + + # If this is an attachment flag we need to do some dirty work to look + # up the flagtype ID + if ($attachid) { + $flag_types = Bugzilla::FlagType::match( + { + 'target_type' => 'attachment', + 'product_id' => $productid, + 'component_id' => $componentid + } ); + } + else { + my $bug = new Bugzilla::Bug( $bugid, $exporterid ); + $flag_types = $bug->flag_types; + } + unless ($flag_types){ + $err = "No flag types defined for this bug\n"; + $err .= " Dropping flag $name\n"; + return $err; + } + + # We need to see if the imported flag is in the list of known flags + # It is possible for two flags on the same bug have the same name + # If this is the case, we will only match the first one. + my $ftype; + foreach my $f ( @{$flag_types} ) { + if ( $f->{'name'} eq $name) { + $ftype = $f; + last; + } + } + + if ($ftype) { # We found the flag in the list + my $grant_gid = $ftype->{'grant_gid'}; + if (( $status eq '+' || $status eq '-' ) + && $grant_gid && !$setter->in_group_id($grant_gid)) { + $err = "Setter $setter_login on $type flag $name "; + $err .= "is not in the Grant Group\n"; + $err .= " Dropping flag $name\n"; + return $err; + } + my $request_gid = $ftype->{'request_gid'}; + if ($request_gid + && $status eq '?' && !$setter->in_group_id($request_gid)) { + $err = "Setter $setter_login on $type flag $name "; + $err .= "is not in the Request Group\n"; + $err .= " Dropping flag $name\n"; + return $err; + } -unless ( Param("move-enabled") ) { - my $subject = "Error: bug importing is disabled here"; - my $message = "Cannot import these bugs because importing is disabled\n"; - $message .= "at this site. For more info, contact "; - $message .= Param("maintainer") . ".\n"; - my @to = (Param("maintainer"), $maintainer, $exporter); - MailMessage ($subject, $message, @to); - exit; + # Take the first flag_type that matches + my $ftypeid = $ftype->{'id'}; + my $is_active = $ftype->{'is_active'}; + unless ($is_active) { + $err = "Flag $name is not active in this database\n"; + $err .= " Dropping flag $name\n"; + return $err; + } + + my ($fid) = $dbh->selectrow_array("SELECT MAX(id) FROM flags") || 0; + $dbh->do("INSERT INTO flags + (id, type_id, status, bug_id, attach_id, creation_date, + setter_id, requestee_id, is_active) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", undef, + ++$fid, $ftypeid, $status, $bugid, $attachid, $timestamp, + $setter_id, $requestee_id, 1 + ); + } + else { + $err = "Dropping unknown $type flag: $name\n"; + return $err; + } + return $err; } -my $exporterid = login_to_id($exporter); -if ( ! $exporterid ) { - my $subject = "Bug import error: invalid exporter"; - my $message = "The user <$tree->[1][0]->{'exporter'}> who tried to move\n"; - $message .= "bugs here does not have an account in this database.\n"; - $message .= "\n\nPlease re-open the original bug.\n"; - $message .= "\n\n$xml"; - my @to = (Param("maintainer"), $maintainer, $exporter); - MailMessage ($subject, $message, @to); - exit; +############################################################################### +# XML Handlers # +############################################################################### + +# This subroutine gets called only once - as soon as the <bugzilla> opening +# tag is parsed. It simply checks to see that the all important exporter +# maintainer and URL base are set. +# +# exporter: email address of the person moving the bugs +# maintainer: the maintainer of the bugzilla installation +# as set in the parameters file +# urlbase: The urlbase paramter of the installation +# bugs are being moved from +# +sub init() { + my ( $twig, $bugzilla ) = @_; + my $root = $twig->root; + my $maintainer = $root->{'att'}->{'maintainer'}; + my $exporter = $root->{'att'}->{'exporter'}; + my $urlbase = $root->{'att'}->{'urlbase'}; + my $xmlversion = $root->{'att'}->{'version'}; + + if ($xmlversion ne $Bugzilla::Config::VERSION) { + my $log = "Possible version conflict!\n"; + $log .= " XML was exported from Bugzilla version $xmlversion\n"; + $log .= " But this installation uses "; + $log .= $Bugzilla::Config::VERSION . "\n"; + Debug($log, OK_LEVEL); + push(@logs, $log); + } + Error( "no maintainer", "REOPEN", $exporter ) unless ($maintainer); + Error( "no exporter", "REOPEN", $exporter ) unless ($exporter); + Error( "bug importing is disabled here", undef, $exporter ) unless ( Param("move-enabled") ); + Error( "invalid exporter: $exporter", "REOPEN", $exporter ) if ( !login_to_id($exporter) ); + Error( "no urlbase set", "REOPEN", $exporter ) unless ($urlbase); + my $def_product = + new Bugzilla::Product( { name => Param("moved-default-product") } ) + || Error("Cannot import these bugs because an invalid default + product was defined for the target db." + . Param("maintainer") . " needs to fix the definitions of + moved-default-product. \n", "REOPEN", $exporter); + my $def_component = new Bugzilla::Component( + { + product_id => $def_product->id, + name => Param("moved-default-component") + }) + || Error("Cannot import these bugs because an invalid default + component was defined for the target db." + . Param("maintainer") . " needs to fix the definitions of + moved-default-component.\n", "REOPEN", $exporter); } + + +# Parse attachments. +# +# This subroutine is called once for each attachment in the xml file. +# It is called as soon as the closing </attachment> tag is parsed. +# Since attachments have the potential to be very large, and +# since each attachement will be inside <bug>..</bug> tags we shove +# the attachment onto an array which will be processed by process_bug +# and then disposed of. The attachment array will then contain only +# one bugs' attachments at a time. +# The cycle will then repeat for the next <bug> +# +# The attach_id is ignored since mysql generates a new one for us. +# The submitter_id gets filled in with $exporterid. + +sub process_attachment() { + my ( $twig, $attach ) = @_; + Debug( "Parsing attachments", DEBUG_LEVEL ); + my %attachment; + + $attachment{'date'} = + format_time( $attach->field('date'), "%Y-%m-%d %R" ) || $timestamp; + $attachment{'desc'} = $attach->field('desc'); + $attachment{'ctype'} = $attach->field('type') || "unknown/unknown"; + $attachment{'attachid'} = $attach->field('attachid'); + $attachment{'ispatch'} = $attach->{'att'}->{'ispatch'} || 0; + $attachment{'isobsolete'} = $attach->{'att'}->{'isobsolete'} || 0; + $attachment{'isprivate'} = $attach->{'att'}->{'isprivate'} || 0; + $attachment{'filename'} = $attach->field('filename') || "file"; + # Attachment data is not exported in versions 2.20 and older. + if (defined $attach->first_child('data') + && defined $attach->first_child('data')->{'att'}->{'encoding'} + && $attach->first_child('data')->{'att'}->{'encoding'} =~ /base64/ ) + { + # decode the base64 + my $data = $attach->field('data'); + my $output = decode_base64($data); + $attachment{'data'} = $output; + } + else { + $attachment{'data'} = $attach->field('data'); + } + + # attachment flags + my @aflags; + foreach my $aflag ( $attach->children('flag') ) { + my %aflag; + $aflag{'name'} = $aflag->{'att'}->{'name'}; + $aflag{'status'} = $aflag->{'att'}->{'status'}; + $aflag{'setter'} = $aflag->{'att'}->{'setter'}; + $aflag{'requestee'} = $aflag->{'att'}->{'requestee'}; + push @aflags, \%aflag; + } + $attachment{'flags'} = \@aflags if (@aflags); -my $urlbase; -if (defined $tree->[1][0]->{'urlbase'}) { - $urlbase= $tree->[1][0]->{'urlbase'}; -} else { - my $subject = "Bug import error: invalid exporting database"; - my $message = "Cannot import these bugs because the name of the exporting db was not given.\n"; - $message .= "\n\nPlease re-open the original bug.\n"; - $message .= "\n\n$xml"; - my @to = (Param("maintainer"), $maintainer, $exporter); - MailMessage ($subject, $message, @to); - exit; + # free up the memory for use by the rest of the script + $attach->delete; + if ($attachment{'attachid'}) { + push @attachments, \%attachment; + } + else { + push @attachments, "err"; + } } - - -my $bugqty = ($#{$tree->[1]} +1 -3) / 4; -my $log = "Imported $bugqty bug(s) from $urlbase,\n sent by $exporter.\n\n"; -for (my $k=1 ; $k <= $bugqty ; $k++) { - my $cur = $k*4; - - if (defined $tree->[1][$cur][0]->{'error'}) { - $log .= "\nError in bug $tree->[1][$cur][4][2]\@$urlbase:"; - $log .= " $tree->[1][$cur][0]->{'error'}\n"; - if ($tree->[1][$cur][0]->{'error'} =~ /NotFound/) { - $log .= "$exporter tried to move bug $tree->[1][$cur][4][2] here"; - $log .= " but $urlbase reports that this bug does not exist.\n"; - } elsif ( $tree->[1][$cur][0]->{'error'} =~ /NotPermitted/) { - $log .= "$exporter tried to move bug $tree->[1][$cur][4][2] here"; - $log .= " but $urlbase reports that $exporter does not have access"; - $log .= " to that bug.\n"; - } - next; - } - - my %multiple_fields; - foreach my $field (qw (dependson cc long_desc blocks)) { - $multiple_fields{$field} = "x"; - } - my %all_fields; - foreach my $field (qw (dependson product bug_status priority cc version - bug_id rep_platform short_desc assigned_to bug_file_loc resolution - delta_ts component reporter urlbase target_milestone bug_severity - creation_ts qa_contact keywords status_whiteboard op_sys blocks)) { - $all_fields{$field} = "x"; - } - - - my %bug_fields; - my $err = ""; - for (my $i=3 ; $i < $#{$tree->[1][$cur]} ; $i=$i+4) { - if (defined $multiple_fields{$tree->[1][$cur][$i]}) { - if (defined $bug_fields{$tree->[1][$cur][$i]}) { - $bug_fields{$tree->[1][$cur][$i]} .= " " . $tree->[1][$cur][$i+1][2]; - } else { - $bug_fields{$tree->[1][$cur][$i]} = $tree->[1][$cur][$i+1][2]; - } - } elsif (defined $all_fields{$tree->[1][$cur][$i]}) { - $bug_fields{$tree->[1][$cur][$i]} = $tree->[1][$cur][$i+1][2]; - } else { - $err .= "---\n"; - $err .= "Unknown bug field \"$tree->[1][$cur][$i]\""; - $err .= " encountered while moving bug\n"; - $err .= "<$tree->[1][$cur][$i]>"; - if (defined $tree->[1][$cur][$i+1][3]) { - $err .= "\n"; - for (my $j=3 ; $j < $#{$tree->[1][$cur][$i+1]} ; $j=$j+4) { - $err .= " <". $tree->[1][$cur][$i+1][$j] . ">"; - $err .= " $tree->[1][$cur][$i+1][$j+1][2] "; - $err .= "</". $tree->[1][$cur][$i+1][$j] . ">\n"; - } - } else { - $err .= " $tree->[1][$cur][$i+1][2] "; - } - $err .= "</$tree->[1][$cur][$i]>\n"; - } - } - - my @long_descs; - for (my $i=3 ; $i < $#{$tree->[1][$cur]} ; $i=$i+4) { - if ($tree->[1][$cur][$i] =~ /long_desc/) { - my %long_desc; - $long_desc{'who'} = $tree->[1][$cur][$i+1][4][2]; - $long_desc{'bug_when'} = $tree->[1][$cur][$i+1][8][2]; - $long_desc{'thetext'} = $tree->[1][$cur][$i+1][12][2]; - push @long_descs, \%long_desc; - } - } - - # instead of giving each comment its own item in the longdescs - # table like it should have, lets cat them all into one big - # comment otherwise we would have to lie often about who - # authored the comment since commenters in one bugzilla probably - # don't have accounts in the other one. - sub by_date {my @a; my @b; $a->{'bug_when'} cmp $b->{'bug_when'}; } - my @sorted_descs = sort by_date @long_descs; - my $long_description = ""; - for (my $z=0 ; $z <= $#sorted_descs ; $z++) { - unless ( $z==0 ) { - $long_description .= "\n\n\n------- Additional Comments From "; - $long_description .= "$sorted_descs[$z]->{'who'} "; - $long_description .= "$sorted_descs[$z]->{'bug_when'}"; - $long_description .= " ----\n\n"; - } - $long_description .= $sorted_descs[$z]->{'thetext'}; - $long_description .= "\n"; - } - - my $comments; - - $comments .= "\n\n------- Bug moved to this database by $exporter "; - $comments .= time2str("%Y-%m-%d %H:%M", time); - $comments .= " -------\n\n"; - $comments .= "This bug previously known as bug $bug_fields{'bug_id'} at "; - $comments .= $urlbase . "\n"; - $comments .= $urlbase . "show_bug.cgi?"; - $comments .= "id=" . $bug_fields{'bug_id'} . "\n"; - $comments .= "Originally filed under the $bug_fields{'product'} "; - $comments .= "product and $bug_fields{'component'} component.\n"; - if (defined $bug_fields{'dependson'}) { - $comments .= "Bug depends on bug(s) $bug_fields{'dependson'}.\n"; - } - if (defined $bug_fields{'blocks'}) { - $comments .= "Bug blocks bug(s) $bug_fields{'blocks'}.\n"; - } - - my @query = (); - my @values = (); - foreach my $field ( qw(creation_ts status_whiteboard) ) { - if ( (defined $bug_fields{$field}) && ($bug_fields{$field}) ){ - push (@query, "$field"); - push (@values, SqlQuote($bug_fields{$field})); - } - } - - push (@query, "delta_ts"); - if ( (defined $bug_fields{'delta_ts'}) && ($bug_fields{'delta_ts'}) ){ - push (@values, SqlQuote($bug_fields{'delta_ts'})); - } - else { - push (@values, "NOW()"); - } - - if ( (defined $bug_fields{'bug_file_loc'}) && ($bug_fields{'bug_file_loc'}) ){ - push (@query, "bug_file_loc"); - push (@values, SqlQuote($bug_fields{'bug_file_loc'})); - } - - if ( (defined $bug_fields{'short_desc'}) && ($bug_fields{'short_desc'}) ){ - push (@query, "short_desc"); - push (@values, SqlQuote($bug_fields{'short_desc'}) ); - } - - - my $prod; - my $comp; - my $default_prod = Param("moved-default-product"); - my $default_comp = Param("moved-default-component"); - if ( (defined ($bug_fields{'product'})) && - (defined ($bug_fields{'component'})) ) { - $prod = $bug_fields{'product'}; - $comp = $bug_fields{'component'}; - } else { - $prod = $default_prod; - $comp = $default_comp; - } - - # XXX - why are these arrays?? - my @product; - my @component; - my $prod_id; - my $comp_id; - - # First, try the given product/component - $prod_id = get_product_id($prod); - $comp_id = get_component_id($prod_id, $comp) if $prod_id; - - if ($prod_id && $comp_id) { - $product[0] = $prod; - $component[0] = $comp; - } else { - # Second, try the defaults - $prod_id = get_product_id($default_prod); - $comp_id = get_component_id($prod_id, $default_comp) if $prod_id; - if ($prod_id && $comp_id) { - $product[0] = $default_prod; - $component[0] = $default_comp; - } - } - - if ($prod_id && $comp_id) { - push (@query, "product_id"); - push (@values, $prod_id ); - push (@query, "component_id"); - push (@values, $comp_id ); - } else { - my $subject = "Bug import error: invalid default product or component"; - my $message = "Cannot import these bugs because an invalid default "; - $message .= "product and/or component was defined for the target db.\n"; - $message .= Param("maintainer") . " needs to fix the definitions of "; - $message .= "moved-default-product and moved-default-component.\n"; - $message .= "\n\nPlease re-open the original bug.\n"; - $message .= "\n\n$xml"; - my @to = (Param("maintainer"), $maintainer, $exporter); - MailMessage ($subject, $message, @to); - exit; - } - - if (defined ($::versions{$product[0]} ) && - (my @version = grep(lc($_) eq lc($bug_fields{'version'}), - @{$::versions{$product[0]}})) ){ - push (@values, SqlQuote($version[0]) ); - push (@query, "version"); - } else { - push (@query, "version"); - push (@values, SqlQuote($::versions{$product[0]}->[0])); - $err .= "Unknown version $bug_fields{'version'} in product $product[0]. "; - $err .= "Setting version to \"$::versions{$product[0]}->[0]\".\n"; - } - - if (defined ($bug_fields{'priority'}) && - (my @priority = grep(lc($_) eq lc($bug_fields{'priority'}), @::legal_priority)) ){ - push (@values, SqlQuote($priority[0]) ); - push (@query, "priority"); - } else { - push (@values, SqlQuote("P3")); - push (@query, "priority"); - $err .= "Unknown priority "; - $err .= (defined $bug_fields{'priority'})?$bug_fields{'priority'}:"unknown"; - $err .= ". Setting to default priority \"P3\".\n"; - } - - if (defined ($bug_fields{'rep_platform'}) && - (my @platform = grep(lc($_) eq lc($bug_fields{'rep_platform'}), @::legal_platform)) ){ - push (@values, SqlQuote($platform[0]) ); - push (@query, "rep_platform"); - } else { - push (@values, SqlQuote("Other") ); - push (@query, "rep_platform"); - $err .= "Unknown platform "; - $err .= (defined $bug_fields{'rep_platform'})? - $bug_fields{'rep_platform'}:"unknown"; - $err .= ". Setting to default platform \"Other\".\n"; - } - - if (defined ($bug_fields{'op_sys'}) && - (my @opsys = grep(lc($_) eq lc($bug_fields{'op_sys'}), @::legal_opsys)) ){ - push (@values, SqlQuote($opsys[0]) ); - push (@query, "op_sys"); - } else { - push (@values, SqlQuote("other")); - push (@query, "op_sys"); - $err .= "Unknown operating system "; - $err .= (defined $bug_fields{'op_sys'})?$bug_fields{'op_sys'}:"unknown"; - $err .= ". Setting to default OS \"other\".\n"; - } - - if (Param("usetargetmilestone")) { - if (defined ($::target_milestone{$product[0]} ) && - (my @tm = grep(lc($_) eq lc($bug_fields{'target_milestone'}), - @{$::target_milestone{$product[0]}})) ){ - push (@values, SqlQuote($tm[0]) ); - push (@query, "target_milestone"); - } else { - SendSQL("SELECT defaultmilestone FROM products " . - "WHERE name = " . SqlQuote($product[0])); - my $tm = FetchOneColumn(); - push (@values, SqlQuote($tm)); - push (@query, "target_milestone"); - $err .= "Unknown milestone \""; - $err .= (defined $bug_fields{'target_milestone'})? - $bug_fields{'target_milestone'}:"unknown"; - $err .= "\" in product \"$product[0]\".\n"; - $err .= " Setting to default milestone for this product, "; - $err .= "\'" . $tm . "\'\n"; - } - } - - if (defined ($bug_fields{'bug_severity'}) && - (my @severity= grep(lc($_) eq lc($bug_fields{'bug_severity'}), - @::legal_severity)) ){ - push (@values, SqlQuote($severity[0]) ); - push (@query, "bug_severity"); - } else { - push (@values, SqlQuote("normal")); - push (@query, "bug_severity"); - $err .= "Unknown severity "; - $err .= (defined $bug_fields{'bug_severity'})? - $bug_fields{'bug_severity'}:"unknown"; - $err .= ". Setting to default severity \"normal\".\n"; - } - - my $reporterid = login_to_id($bug_fields{'reporter'}); - if ( ($bug_fields{'reporter'}) && ( $reporterid ) ) { - push (@values, SqlQuote($reporterid)); - push (@query, "reporter"); - } else { - push (@values, SqlQuote($exporterid)); - push (@query, "reporter"); - $err .= "The original reporter of this bug does not have\n"; - $err .= " an account here. Reassigning to the person who moved\n"; - $err .= " it here, $exporter.\n"; - if ( $bug_fields{'reporter'} ) { - $err .= " Previous reporter was $bug_fields{'reporter'}.\n"; - } else { - $err .= " Previous reporter is unknown.\n"; - } - } - - my $changed_owner = 0; - if ( ($bug_fields{'assigned_to'}) && - ( login_to_id($bug_fields{'assigned_to'})) ) { - push (@values, SqlQuote(login_to_id($bug_fields{'assigned_to'}))); - push (@query, "assigned_to"); - } else { - push (@values, SqlQuote($exporterid) ); - push (@query, "assigned_to"); - $changed_owner = 1; - $err .= "The original assignee of this bug does not have\n"; - $err .= " an account here. Reassigning to the person who moved\n"; - $err .= " it here, $exporter.\n"; - if ( $bug_fields{'assigned_to'} ) { - $err .= " Previous assignee was $bug_fields{'assigned_to'}.\n"; - } else { - $err .= " Previous assignee is unknown.\n"; - } - } - - my @resolution; - if (defined ($bug_fields{'resolution'}) && - (@resolution= grep(lc($_) eq lc($bug_fields{'resolution'}), @::legal_resolution)) ){ - push (@values, SqlQuote($resolution[0]) ); - push (@query, "resolution"); - } elsif ( (defined $bug_fields{'resolution'}) && (!$resolution[0]) ){ - $err .= "Unknown resolution \"$bug_fields{'resolution'}\".\n"; - } - - # if the bug's assignee changed, mark the bug NEW, unless a valid - # resolution is set, which indicates that the bug should be closed. - # - if ( ($changed_owner) && (!$resolution[0]) ) { - push (@values, SqlQuote("NEW")); - push (@query, "bug_status"); - $err .= "Bug reassigned, setting status to \"NEW\".\n"; - $err .= " Previous status was \""; - $err .= (defined $bug_fields{'bug_status'})? - $bug_fields{'bug_status'}:"unknown"; - $err .= "\".\n"; - } elsif ( (defined ($bug_fields{'resolution'})) && (!$resolution[0]) ){ - #if the resolution was illegal then set status to NEW - push (@values, SqlQuote("NEW")); - push (@query, "bug_status"); - $err .= "Resolution was invalid. Setting status to \"NEW\".\n"; - $err .= " Previous status was \""; - $err .= (defined $bug_fields{'bug_status'})? - $bug_fields{'bug_status'}:"unknown"; - $err .= "\".\n"; - } elsif (defined ($bug_fields{'bug_status'}) && - (my @status = grep(lc($_) eq lc($bug_fields{'bug_status'}), @::legal_bug_status)) ){ - #if a bug status was set then use it, if its legal - push (@values, SqlQuote($status[0])); - push (@query, "bug_status"); - } else { - # if all else fails, make the bug new - push (@values, SqlQuote("NEW")); - push (@query, "bug_status"); - $err .= "Unknown status "; - $err .= (defined $bug_fields{'bug_status'})? - $bug_fields{'bug_status'}:"unknown"; - $err .= ". Setting to default status \"NEW\".\n"; - } - - if (Param("useqacontact")) { - my $qa_contact; - if ( (defined $bug_fields{'qa_contact'}) && - ($qa_contact = login_to_id($bug_fields{'qa_contact'})) ){ - push (@values, $qa_contact); - push (@query, "qa_contact"); - } else { - SendSQL("SELECT initialqacontact FROM components, products " . - "WHERE components.product_id = products.id" . - " AND products.name = " . SqlQuote($product[0]) . - " AND components.name = " . SqlQuote($component[0]) ); - $qa_contact = FetchOneColumn(); - push (@values, $qa_contact); - push (@query, "qa_contact"); - $err .= "Setting qa contact to the default for this product.\n"; - $err .= " This bug either had no qa contact or an invalid one.\n"; - } - } - - - my $query = "INSERT INTO bugs (\n" - . join (",\n", @query) - . "\n) VALUES (\n" - . join (",\n", @values) - . "\n)\n"; - SendSQL($query); - my $id = $dbh->bz_last_key('bugs', 'bug_id'); - - if (defined $bug_fields{'cc'}) { - foreach my $person (split(/[ ,]/, $bug_fields{'cc'})) { - my $uid; - if ( ($person ne "") && ($uid = login_to_id($person)) ) { - SendSQL("insert into cc (bug_id, who) values ($id, " . SqlQuote($uid) .")"); - } - } - } - - if (defined ($bug_fields{'keywords'})) { - my %keywordseen; - foreach my $keyword (split(/[\s,]+/, $bug_fields{'keywords'})) { - if ($keyword eq '') { - next; - } - my $i = $::keywordsbyname{$keyword}; - if (!$i) { - $err .= "Skipping unknown keyword: $keyword.\n"; - next; - } - if (!$keywordseen{$i}) { - SendSQL("INSERT INTO keywords (bug_id, keywordid) VALUES ($id, $i)"); - $keywordseen{$i} = 1; - } - } - } - - $long_description .= "\n" . $comments; - if ($err) { - $long_description .= "\n$err\n"; - } - - SendSQL("INSERT INTO longdescs (bug_id, who, bug_when, thetext) VALUES " . - "($id, $exporterid, now(), " . SqlQuote($long_description) . ")"); - - $log .= "Bug $urlbase/show_bug.cgi?id=$bug_fields{'bug_id'} "; - $log .= "imported as bug $id.\n"; - $log .= Param("urlbase") . "/show_bug.cgi?id=$id\n\n"; - if ($err) { - $log .= "The following problems were encountered creating bug $id.\n"; - $log .= "You may have to set certain fields in the new bug by hand.\n\n"; - $log .= $err; - $log .= "\n\n\n"; - } - - Bugzilla::BugMail::Send($id, { 'changer' => $exporter }); + +# This subroutine will be called once for each <bug> in the xml file. +# It is called as soon as the closing </bug> tag is parsed. +# If this bug had any <attachment> tags, they will have been processed +# before we get to this point and their data will be in the @attachments +# array. +# As each bug is processed, it is inserted into the database and then +# purged from memory to free it up for later bugs. + +sub process_bug { + my ( $twig, $bug ) = @_; + my $root = $twig->root; + my $maintainer = $root->{'att'}->{'maintainer'}; + my $exporter_login = $root->{'att'}->{'exporter'}; + my $exporter = Bugzilla::User->new_from_login($exporter_login); + my $urlbase = $root->{'att'}->{'urlbase'}; + + # We will store output information in this variable. + my $log = ""; + if ( defined $bug->{'att'}->{'error'} ) { + $log .= "\nError in bug " . $bug->field('bug_id') . "\@$urlbase: "; + $log .= $bug->{'att'}->{'error'} . "\n"; + if ( $bug->{'att'}->{'error'} =~ /NotFound/ ) { + $log .= "$exporter_login tried to move bug " . $bug->field('bug_id'); + $log .= " here, but $urlbase reports that this bug"; + $log .= " does not exist.\n"; + } + elsif ( $bug->{'att'}->{'error'} =~ /NotPermitted/ ) { + $log .= "$exporter_login tried to move bug " . $bug->field('bug_id'); + $log .= " here, but $urlbase reports that $exporter_login does "; + $log .= " not have access to that bug.\n"; + } + return; + } + $bugtotal++; + + # This list contains all other bug fields that we want to process. + # If it is not in this list it will not be included. + my %all_fields; + foreach my $field ( + qw(long_desc attachment flag group), Bugzilla::Bug::fields() ) + { + $all_fields{$field} = 1; + } + + my %bug_fields; + my $err = ""; + + # Loop through all the xml tags inside a <bug> and compare them to the + # lists of fields. If they match throw them into the hash. Otherwise + # append it to the log, which will go into the comments when we are done. + foreach my $bugchild ( $bug->children() ) { + Debug( "Parsing field: " . $bugchild->name, DEBUG_LEVEL ); + if ( defined $all_fields{ $bugchild->name } ) { + $bug_fields{ $bugchild->name } = + join( " ", $bug->children_text( $bugchild->name ) ); + } + else { + $err .= "Unknown bug field \"" . $bugchild->name . "\""; + $err .= " encountered while moving bug\n"; + $err .= " <" . $bugchild->name . ">"; + if ( $bugchild->children_count > 1 ) { + $err .= "\n"; + foreach my $subchild ( $bugchild->children() ) { + $err .= " <" . $subchild->name . ">"; + $err .= $subchild->field; + $err .= "</" . $subchild->name . ">\n"; + } + } + else { + $err .= $bugchild->field; + } + $err .= "</" . $bugchild->name . ">\n"; + } + } + + my @long_descs; + my $private = 0; + + # Parse long descriptions + foreach my $comment ( $bug->children('long_desc') ) { + Debug( "Parsing Long Description", DEBUG_LEVEL ); + my %long_desc; + $long_desc{'who'} = $comment->field('who'); + $long_desc{'bug_when'} = $comment->field('bug_when'); + $long_desc{'isprivate'} = $comment->{'att'}->{'isprivate'} || 0; + + # if one of the comments is private we need to set this flag + if ( $long_desc{'isprivate'} && $exporter->in_group(Param('insidergroup'))) { + $private = 1; + } + my $data = $comment->field('thetext'); + if ( defined $comment->first_child('thetext')->{'att'}->{'encoding'} + && $comment->first_child('thetext')->{'att'}->{'encoding'} =~ + /base64/ ) + { + $data = decode_base64($data); + } + + # If we leave the attachemnt ID in the comment it will be made a link + # to the wrong attachment. Since the new attachment ID is unkown yet + # let's strip it out for now. We will make a comment with the right ID + # later + $data =~ s/Created an attachment \(id=\d+\)/Created an attachment/g; + + # Same goes for bug #'s Since we don't know if the referenced bug + # is also being moved, lets make sure they know it means a different + # bugzilla. + my $url = $urlbase . "show_bug.cgi?id="; + $data =~ s/([Bb]ugs?\s*\#?\s*(\d+))/$url$2/g; + + $long_desc{'thetext'} = $data; + push @long_descs, \%long_desc; + } + + # instead of giving each comment its own item in the longdescs + # table like it should have, lets cat them all into one big + # comment otherwise we would have to lie often about who + # authored the comment since commenters in one bugzilla probably + # don't have accounts in the other one. + # If one of the comments is private the whole comment will be + # private since we don't want to expose these unnecessarily + sub by_date { my @a; my @b; $a->{'bug_when'} cmp $b->{'bug_when'}; } + my @sorted_descs = sort by_date @long_descs; + my $long_description = ""; + for ( my $z = 0 ; $z <= $#sorted_descs ; $z++ ) { + if ( $z == 0 ) { + $long_description .= "\n\n\n---- Reported by "; + } + else { + $long_description .= "\n\n\n---- Additional Comments From "; + } + $long_description .= "$sorted_descs[$z]->{'who'} "; + $long_description .= "$sorted_descs[$z]->{'bug_when'}"; + $long_description .= " ----"; + $long_description .= "\n\n"; + $long_description .= "THIS COMMENT IS PRIVATE \n" + if ( $sorted_descs[$z]->{'isprivate'} ); + $long_description .= $sorted_descs[$z]->{'thetext'}; + $long_description .= "\n"; + } + + my $comments; + + $comments .= "\n\n--- Bug imported by $exporter_login "; + $comments .= time2str( "%Y-%m-%d %H:%M", time ) . " "; + $comments .= Param('timezone'); + $comments .= " ---\n\n"; + $comments .= "This bug was previously known as _bug_ $bug_fields{'bug_id'} at "; + $comments .= $urlbase . "show_bug.cgi?id=" . $bug_fields{'bug_id'} . "\n"; + if ( defined $bug_fields{'dependson'} ) { + $comments .= "This bug depended on bug(s) $bug_fields{'dependson'}.\n"; + } + if ( defined $bug_fields{'blocked'} ) { + $comments .= "This bug blocked bug(s) $bug_fields{'blocked'}.\n"; + } + + # Now we process each of the fields in turn and make sure they contain + # valid data. We will create two parallel arrays, one for the query + # and one for the values. For every field we need to push an entry onto + # each array. + my @query = (); + my @values = (); + + # Each of these fields we will check for newlines and shove onto the array + foreach my $field (qw(status_whiteboard bug_file_loc short_desc)) { + if (( defined $bug_fields{$field} ) && ( $bug_fields{$field} )) { + $bug_fields{$field} = clean_text( $bug_fields{$field} ); + push( @query, $field ); + push( @values, $bug_fields{$field} ); + } + } + + # Alias + if ( $bug_fields{'alias'} ) { + my ($alias) = $dbh->selectrow_array("SELECT COUNT(*) FROM bugs + WHERE alias = ?", undef, + $bug_fields{'alias'} ); + if ($alias) { + $err .= "Dropping conflicting bug alias "; + $err .= $bug_fields{'alias'} . "\n"; + } + else { + $alias = $bug_fields{'alias'}; + push @query, 'alias'; + push @values, $alias; + } + } + + # Timestamps + push( @query, "creation_ts" ); + push( @values, + format_time( $bug_fields{'creation_ts'}, "%Y-%m-%d %X" ) + || $timestamp ); + + push( @query, "delta_ts" ); + push( @values, + format_time( $bug_fields{'delta_ts'}, "%Y-%m-%d %X" ) + || $timestamp ); + + # Bug Access + push( @query, "cclist_accessible" ); + push( @values, $bug_fields{'cclist_accessible'} == 1 ? 1 : 0 ); + + push( @query, "reporter_accessible" ); + push( @values, $bug_fields{'reporter_accessible'} == 1 ? 1 : 0 ); + + # Product and Component if there is no valid default product and + # component defined in the parameters, we wouldn't be here + my $def_product = + new Bugzilla::Product( { name => Param("moved-default-product") } ); + my $def_component = new Bugzilla::Component( + { + product_id => $def_product->id, + name => Param("moved-default-component") + } + ); + my $product; + my $component; + + if ( defined $bug_fields{'product'} ) { + $product = new Bugzilla::Product( { name => $bug_fields{'product'} } ); + unless ($product) { + $product = $def_product; + $err .= "Unknown Product " . $bug_fields{'product'} . "\n"; + $err .= " Using default product set in Parameters \n"; + } + } + else { + $product = $def_product; + } + if ( defined $bug_fields{'component'} ) { + $component = new Bugzilla::Component( + { + product_id => $product->id, + name => $bug_fields{'component'} + } + ); + unless ($component) { + $component = $def_component; + $product = $def_product; + $err .= "Unknown Component " . $bug_fields{'component'} . "\n"; + $err .= " Using default product and component set "; + $err .= "in Parameters \n"; + } + } + else { + $component = $def_component; + $product = $def_product; + } + + my $prod_id = $product->id; + my $comp_id = $component->id; + + push( @query, "product_id" ); + push( @values, $prod_id ); + push( @query, "component_id" ); + push( @values, $comp_id ); + + # Since there is no default version for a product, we check that the one + # coming over is valid. If not we will use the first one in @versions + # and warn them. + my $version = + new Bugzilla::Version( $product->id, $bug_fields{'version'} ); + + push( @query, "version" ); + if ($version) { + push( @values, $version->name ); + } + else { + my @versions = @{ $product->versions }; + my $v = $versions[0]; + push( @values, $v->name ); + $err .= "Unknown version \""; + $err .= ( defined $bug_fields{'version'} ) + ? $bug_fields{'version'} + : "unknown"; + $err .= " in product " . $product->name . ". \n"; + $err .= " Setting version to \"" . $v->name . "\".\n"; + } + + # Milestone + if ( Param("usetargetmilestone") ) { + my $milestone = + new Bugzilla::Milestone( $product->id, + $bug_fields{'target_milestone'} ); + if ($milestone) { + push( @values, $milestone->name ); + } + else { + push( @values, $product->default_milestone ); + $err .= "Unknown milestone \""; + $err .= ( defined $bug_fields{'target_milestone'} ) + ? $bug_fields{'target_milestone'} + : "unknown"; + $err .= " in product " . $product->name . ". \n"; + $err .= " Setting to default milestone for this product, "; + $err .= "\"" . $product->default_milestone . "\".\n"; + } + push( @query, "target_milestone" ); + } + + # For priority, severity, opsys and platform we check that the one being + # imported is valid. If it is not we use the defaults set in the parameters. + if (defined( $bug_fields{'bug_severity'} ) + && check_field('bug_severity', scalar $bug_fields{'bug_severity'}, + \@::legal_severity, ERR_LEVEL) ) + { + push( @values, $bug_fields{'bug_severity'} ); + } + else { + push( @values, Param('defaultseverity') ); + $err .= "Unknown severity "; + $err .= ( defined $bug_fields{'bug_severity'} ) + ? $bug_fields{'bug_severity'} + : "unknown"; + $err .= ". Setting to default severity \""; + $err .= Param('defaultseverity') . "\".\n"; + } + push( @query, "bug_severity" ); + + if (defined( $bug_fields{'priority'} ) + && check_field('priority', scalar $bug_fields{'priority'}, + \@::legal_priority, ERR_LEVEL ) ) + { + push( @values, $bug_fields{'priority'} ); + } + else { + push( @values, Param('defaultpriority') ); + $err .= "Unknown priority "; + $err .= ( defined $bug_fields{'priority'} ) + ? $bug_fields{'priority'} + : "unknown"; + $err .= ". Setting to default priority \""; + $err .= Param('defaultpriority') . "\".\n"; + } + push( @query, "priority" ); + + if (defined( $bug_fields{'rep_platform'} ) + && check_field('rep_platform', scalar $bug_fields{'rep_platform'}, + \@::legal_platform, ERR_LEVEL ) ) + { + push( @values, $bug_fields{'rep_platform'} ); + } + else { + push( @values, Param('defaultplatform') ); + $err .= "Unknown platform "; + $err .= ( defined $bug_fields{'rep_platform'} ) + ? $bug_fields{'rep_platform'} + : "unknown"; + $err .=". Setting to default platform \""; + $err .= Param('defaultplatform') . "\".\n"; + } + push( @query, "rep_platform" ); + + if (defined( $bug_fields{'op_sys'} ) + && check_field('op_sys', scalar $bug_fields{'op_sys'}, + \@::legal_opsys, ERR_LEVEL ) ) + { + push( @values, $bug_fields{'op_sys'} ); + } + else { + push( @values, Param('defaultopsys') ); + $err .= "Unknown operating system "; + $err .= ( defined $bug_fields{'op_sys'} ) + ? $bug_fields{'op_sys'} + : "unknown"; + $err .= ". Setting to default OS \"" . Param('defaultopsys') . "\".\n"; + } + push( @query, "op_sys" ); + + # Process time fields + if ( Param("timetrackinggroup") ) { + my $date = format_time( $bug_fields{'deadline'}, "%Y-%m-%d" ) + || undef; + push( @values, $date ); + push( @query, "deadline" ); + eval { + Bugzilla::Bug::ValidateTime($bug_fields{'estimated_time'}, "e"); + }; + if (!$@){ + push( @values, $bug_fields{'estimated_time'} ); + push( @query, "estimated_time" ); + } + eval { + Bugzilla::Bug::ValidateTime($bug_fields{'remaining_time'}, "r"); + }; + if (!$@){ + push( @values, $bug_fields{'remaining_time'} ); + push( @query, "remaining_time" ); + } + eval { + Bugzilla::Bug::ValidateTime($bug_fields{'actual_time'}, "a"); + }; + if ($@){ + $bug_fields{'actual_time'} = 0.0; + $err .= "Invalid Actual Time. Setting to 0.0\n"; + } + } + + # Reporter Assignee QA Contact + my $exporterid = $exporter->id; + my $reporterid = login_to_id( $bug_fields{'reporter'} ) + if $bug_fields{'reporter'}; + push( @query, "reporter" ); + if ( ( $bug_fields{'reporter'} ) && ($reporterid) ) { + push( @values, $reporterid ); + } + else { + push( @values, $exporterid ); + $err .= "The original reporter of this bug does not have\n"; + $err .= " an account here. Reassigning to the person who moved\n"; + $err .= " it here: $exporter_login.\n"; + if ( $bug_fields{'reporter'} ) { + $err .= " Previous reporter was $bug_fields{'reporter'}.\n"; + } + else { + $err .= " Previous reporter is unknown.\n"; + } + } + + my $changed_owner = 0; + my $owner; + push( @query, "assigned_to" ); + if ( ( $bug_fields{'assigned_to'} ) + && ( $owner = login_to_id( $bug_fields{'assigned_to'} )) ) { + push( @values, $owner ); + } + else { + push( @values, $component->default_assignee->id ); + $changed_owner = 1; + $err .= "The original assignee of this bug does not have\n"; + $err .= " an account here. Reassigning to the default assignee\n"; + $err .= " for the component, ". $component->default_assignee->login .".\n"; + if ( $bug_fields{'assigned_to'} ) { + $err .= " Previous assignee was $bug_fields{'assigned_to'}.\n"; + } + else { + $err .= " Previous assignee is unknown.\n"; + } + } + + if ( Param("useqacontact") ) { + my $qa_contact; + push( @query, "qa_contact" ); + if ( ( defined $bug_fields{'qa_contact'}) + && ( $qa_contact = login_to_id( $bug_fields{'qa_contact'} ) ) ) { + push( @values, $qa_contact ); + } + else { + push( @values, $component->default_qa_contact->id || undef ); + if ($component->default_qa_contact->id){ + $err .= "Setting qa contact to the default for this product.\n"; + $err .= " This bug either had no qa contact or an invalid one.\n"; + } + } + } + + # Status & Resolution + my $has_res = defined($bug_fields{'resolution'}); + my $has_status = defined($bug_fields{'bug_status'}); + my $valid_res = check_field('resolution', + scalar $bug_fields{'resolution'}, + \@::legal_resolution, ERR_LEVEL ); + my $valid_status = check_field('bug_status', + scalar $bug_fields{'bug_status'}, + \@::legal_bug_status, ERR_LEVEL ); + my $is_open = IsOpenedState($bug_fields{'bug_status'}); + my $status = $bug_fields{'bug_status'} || undef; + my $resolution = $bug_fields{'resolution'} || undef; + + # Check everconfirmed + my $everconfirmed; + if ($product->votes_to_confirm) { + $everconfirmed = $bug_fields{'everconfirmed'} || 0; + } + else { + $everconfirmed = 1; + } + push (@query, "everconfirmed"); + push (@values, $everconfirmed); + + # Sanity check will complain about having bugs marked duplicate but no + # entry in the dup table. Since we can't tell the bug ID of bugs + # that might not yet be in the database we have no way of populating + # this table. Change the resolution instead. + if ( $valid_res && ( $bug_fields{'resolution'} eq "DUPLICATE" ) ) { + $resolution = "MOVED"; + $err .= "This bug was marked DUPLICATE in the database "; + $err .= "it was moved from.\n Changing resolution to \"MOVED\"\n"; + } + + if($has_status){ + if($valid_status){ + if($is_open){ + if($has_res){ + $err .= "Resolution set on an open status.\n"; + $err .= " Dropping resolution $resolution\n"; + $resolution = undef; + } + if($changed_owner){ + if($everconfirmed){ + $status = "NEW"; + } + else{ + $status = "UNCONFIRMED"; + } + if ($status ne $bug_fields{'bug_status'}){ + $err .= "Bug reassigned, setting status to \"$status\".\n"; + $err .= " Previous status was \""; + $err .= $bug_fields{'bug_status'} . "\".\n"; + } + } + if($everconfirmed){ + if($status eq "UNCONFIRMED"){ + $err .= "Bug Status was UNCONFIRMED but everconfirmed was true\n"; + $err .= " Setting status to NEW\n"; + $err .= "Resetting votes to 0\n" if ( $bug_fields{'votes'} ); + $status = "NEW"; + } + } + else{ # $everconfirmed is false + if($status ne "UNCONFIRMED"){ + $err .= "Bug Status was $status but everconfirmed was false\n"; + $err .= " Setting status to UNCONFIRMED\n"; + $status = "UNCONFIRMED"; + } + } + } + else{ # $is_open is false + if(!$has_res){ + $err .= "Missing Resolution. Setting status to "; + if($everconfirmed){ + $status = "NEW"; + $err .= "NEW\n"; + } + else{ + $status = "UNCONFIRMED"; + $err .= "UNCONFIRMED\n"; + } + } + if(!$valid_res){ + $err .= "Unknown resolution \"$resolution\".\n"; + $err .= " Setting resolution to MOVED\n"; + $resolution = "MOVED"; + } + } + } + else{ # $valid_status is false + if($everconfirmed){ + $status = "NEW"; + } + else{ + $status = "UNCONFIRMED"; + } + $err .= "Bug has invalid status, setting status to \"$status\".\n"; + $err .= " Previous status was \""; + $err .= $bug_fields{'bug_status'} . "\".\n"; + $resolution = undef; + } + + } + else{ #has_status is false + if($everconfirmed){ + $status = "NEW"; + } + else{ + $status = "UNCONFIRMED"; + } + $err .= "Bug has no status, setting status to \"$status\".\n"; + $err .= " Previous status was unknown\n"; + $resolution = undef; + } + + if (defined $resolution){ + push( @query, "resolution" ); + push( @values, $resolution ); + } + + # Bug status + push( @query, "bug_status" ); + push( @values, $status ); + + + # For the sake of sanitycheck.cgi we do this. + # Update lastdiffed if you do not want to have mail sent + unless ($mail) { + push @query, "lastdiffed"; + push @values, $timestamp; + } + + # INSERT the bug + my $query = "INSERT INTO bugs (" . join( ", ", @query ) . ") VALUES ("; + $query .= '?,' foreach (@values); + chop($query); # Remove the last comma. + $query .= ")"; + + $dbh->do( $query, undef, @values ); + my $id = $dbh->bz_last_key( 'bugs', 'bug_id' ); + + # We are almost certain to get some uninitialized warnings + # Since this is just for debugging the query, let's shut them up + eval { + no warnings 'uninitialized'; + Debug( + "Bug Query: INSERT INTO bugs (\n" + . join( ",\n", @query ) + . "\n) VALUES (\n" + . join( ",\n", @values ), + DEBUG_LEVEL + ); + }; + + # Handle CC's + if ( defined $bug_fields{'cc'} ) { + my %ccseen; + my $sth_cc = $dbh->prepare("INSERT INTO cc (bug_id, who) VALUES (?,?)"); + foreach my $person ( split( /[\s,]+/, $bug_fields{'cc'} ) ) { + next unless $person; + my $uid; + if ($uid = login_to_id($person)) { + if ( !$ccseen{$uid} ) { + $sth_cc->execute( $id, $uid ); + $ccseen{$uid} = 1; + } + } + else { + $err .= "CC member $person does not have an account here\n"; + } + } + } + + # Handle keywords + if ( defined( $bug_fields{'keywords'} ) ) { + my %keywordseen; + my $key_sth = $dbh->prepare( + "INSERT INTO keywords + (bug_id, keywordid) VALUES (?,?)" + ); + foreach my $keyword ( split( /[\s,]+/, $bug_fields{'keywords'} )) { + next unless $keyword; + my $i = GetKeywordIdFromName($keyword); + if ( !$i ) { + $err .= "Skipping unknown keyword: $keyword.\n"; + next; + } + if ( !$keywordseen{$i} ) { + $key_sth->execute( $id, $i ); + $keywordseen{$i} = 1; + } + } + my ($keywordarray) = $dbh->selectcol_arrayref( + "SELECT d.name FROM keyworddefs d + INNER JOIN keywords k + ON d.id = k.keywordid + WHERE k.bug_id = ? + ORDER BY d.name", undef, $id); + my $keywordstring = join( ", ", @{$keywordarray} ); + $dbh->do( "UPDATE bugs SET keywords = ? WHERE bug_id = ?", + undef, $keywordstring, $id ) + } + + # Parse bug flags + foreach my $bflag ( $bug->children('flag')) { + next unless ( defined($bflag) ); + $err .= flag_handler( + $bflag->{'att'}->{'name'}, $bflag->{'att'}->{'status'}, + $bflag->{'att'}->{'setter'}, $bflag->{'att'}->{'requestee'}, + $exporterid, $id, + $comp_id, $prod_id, + undef + ); + } + + # Insert Attachments for the bug + foreach my $att (@attachments) { + if ($att eq "err"){ + $err .= "No attachment ID specified, dropping attachment\n"; + next; + } + if (!$exporter->in_group(Param('insidergroup')) && $att->{'isprivate'}){ + $err .= "Exporter not in insidergroup and attachment marked private.\n"; + $err .= " Marking attachment public\n"; + $att->{'isprivate'} = 0; + } + $dbh->do("INSERT INTO attachments + (bug_id, creation_ts, filename, description, mimetype, + ispatch, isprivate, isobsolete, submitter_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + undef, $id, $att->{'date'}, $att->{'filename'}, + $att->{'desc'}, $att->{'ctype'}, $att->{'ispatch'}, + $att->{'isprivate'}, $att->{'isobsolete'}, $exporterid); + my $att_id = $dbh->bz_last_key( 'attachments', 'attach_id' ); + my $att_data = $att->{'data'}; + my $sth = $dbh->prepare("INSERT INTO attach_data (id, thedata) + VALUES ($att_id, ?)" ); + trick_taint($att_data); + $sth->bind_param( 1, $att_data, $dbh->BLOB_TYPE ); + $sth->execute(); + $comments .= "Imported an attachment (id=$att_id)\n"; + + # Process attachment flags + foreach my $aflag (@{ $att->{'flags'} }) { + next unless defined($aflag) ; + $err .= flag_handler( + $aflag->{'name'}, $aflag->{'status'}, + $aflag->{'setter'}, $aflag->{'requestee'}, + $exporterid, $id, + $comp_id, $prod_id, + $att_id + ); + } + } + + # Clear the attachments array for the next bug + @attachments = (); + + # Insert longdesc and append any errors + my $worktime = $bug_fields{'actual_time'} || 0.0; + $worktime = 0.0 if (!$exporter->in_group(Param('timetrackinggroup'))); + $long_description .= "\n" . $comments; + if ($err) { + $long_description .= "\n$err\n"; + } + trick_taint($long_description); + $dbh->do("INSERT INTO longdescs + (bug_id, who, bug_when, work_time, isprivate, thetext) + VALUES (?,?,?,?,?,?)", undef, + $id, $exporterid, $timestamp, $worktime, $private, $long_description + ); + + # Add this bug to each group of which its product is a member. + my $sth_group = $dbh->prepare("INSERT INTO bug_group_map (bug_id, group_id) + VALUES (?, ?)"); + foreach my $group_id ( keys %{ $product->group_controls } ) { + if ($product->group_controls->{$group_id}->{'membercontrol'} != CONTROLMAPNA + && $product->group_controls->{$group_id}->{'othercontrol'} != CONTROLMAPNA){ + $sth_group->execute( $id, $group_id ); + } + } + + $log .= "Bug ${urlbase}show_bug.cgi?id=$bug_fields{'bug_id'} "; + $log .= "imported as bug $id.\n"; + $log .= Param("urlbase") . "show_bug.cgi?id=$id\n\n"; + if ($err) { + $log .= "The following problems were encountered while creating bug $id.\n"; + $log .= $err; + $log .= "You may have to set certain fields in the new bug by hand.\n\n"; + } + Debug( $log, OK_LEVEL ); + push(@logs, $log); + Bugzilla::BugMail::Send( $id, { 'changer' => $exporter_login } ) if ($mail); + + # done with the xml data. Lets clear it from memory + $twig->purge; + } -my $subject = "$bugqty bug(s) successfully moved from $urlbase to " - . Param("urlbase") ; -my @to = ($exporter); -MailMessage ($subject, $log, @to); +Debug( "Reading xml", DEBUG_LEVEL ); + +# Read STDIN in slurp mode. VERY dangerous, but we live on the wild side ;-) +local ($/); +$xml = <>; + +# If the email was encoded (BugMail::MessageToMTA() does it when using UTF-8), +# we have to decode it first, else the XML parsing will fail. +my $parser = MIME::Parser->new; +$parser->output_to_core(1); +$parser->tmp_to_core(1); +my $entity = $parser->parse_data($xml); +my $bodyhandle = $entity->bodyhandle; +$xml = $bodyhandle->as_string; + +# remove everything in file before xml header (i.e. remove the mail header) +$xml =~ s/^.+(<\?xml version.+)$/$1/s; + +Debug( "Parsing tree", DEBUG_LEVEL ); +my $twig = XML::Twig->new( + twig_handlers => { + bug => \&process_bug, + attachment => \&process_attachment + }, + start_tag_handlers => { bugzilla => \&init } +); +$twig->parse($xml); +my $root = $twig->root; +my $maintainer = $root->{'att'}->{'maintainer'}; +my $exporter = $root->{'att'}->{'exporter'}; +my $urlbase = $root->{'att'}->{'urlbase'}; + +# It is time to email the result of the import. +my $log = join("\n\n", @logs); +$log .= "\n\nImported $bugtotal bug(s) from $urlbase,\n sent by $exporter.\n"; +my $subject = "$bugtotal Bug(s) successfully moved from $urlbase to " + . Param("urlbase"); +my @to = ($exporter, $maintainer); +MailMessage( $subject, $log, @to ); + +__END__ + +=head1 NAME + +importxml - Import bugzilla bug data from xml. + +=head1 SYNOPSIS + + importxml.pl [options] [file ...] + + Options: + -? --help brief help message + -v --verbose print error and debug information. + Mulltiple -v increases verbosity + -m --sendmail send mail to recipients with log of bugs imported + +=head1 OPTIONS + +=over 8 + +=item B<-?> + + Print a brief help message and exits. + +=item B<-v> + + Print error and debug information. Mulltiple -v increases verbosity + +=item B<-m> + + Send mail to exporter with a log of bugs imported and any errors. + +=back + +=head1 DESCRIPTION + + This script is used to import bugs from another installation of bugzilla. + It can be used in two ways. + First using the move function of bugzilla + on another system will send mail to an alias provided by + the administrator of the target installation (you). Set up an alias + similar to the one given below so this mail will be automatically + run by this script and imported into your database. Run 'newaliases' + after adding this alias to your aliases file. Make sure your sendmail + installation is configured to allow mail aliases to execute code. + + bugzilla-import: "|/usr/bin/perl /opt/bugzilla/importxml.pl --mail" + + Second it can be run from the command line with any xml file from + STDIN that conforms to the bugzilla DTD. In this case you can pass + an argument to set whether you want to send the + mail that will be sent to the exporter and maintainer normally. + + importxml.pl [options] bugsfile.xml + +=cut + diff --git a/index.cgi b/index.cgi index 124c81b7a..a35be0726 100755 --- a/index.cgi +++ b/index.cgi @@ -30,13 +30,9 @@ use strict; # Include the Bugzilla CGI and general utility library. use lib "."; -require "CGI.pl"; +require "globals.pl"; -use vars qw( - $vars -); - -# Check whether or not the user is logged in and, if so, set the $::userid +# Check whether or not the user is logged in use Bugzilla::Constants; Bugzilla->login(LOGIN_OPTIONAL); @@ -57,5 +53,5 @@ my $template = Bugzilla->template; print $cgi->header(); # Generate and return the UI (HTML page) from the appropriate template. -$template->process("index.html.tmpl", $vars) +$template->process("index.html.tmpl") || ThrowTemplateError($template->error()); diff --git a/js/CVS/Entries b/js/CVS/Entries index 89c6a5de1..bb9e772ae 100644 --- a/js/CVS/Entries +++ b/js/CVS/Entries @@ -1,3 +1,4 @@ -/duplicates.js/1.2/Sun Jan 25 18:47:16 2004//TBUGZILLA-2_20_2 -/productform.js/1.2/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20_2 +/TUI.js/1.1/Tue Jul 12 12:32:16 2005//TBUGZILLA-2_22 +/duplicates.js/1.2/Sun Jan 25 18:47:16 2004//TBUGZILLA-2_22 +/productform.js/1.2/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_22 D diff --git a/js/CVS/Tag b/js/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/js/CVS/Tag +++ b/js/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/js/TUI.js b/js/TUI.js new file mode 100644 index 000000000..6ebc7c717 --- /dev/null +++ b/js/TUI.js @@ -0,0 +1,168 @@ +/* The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is the Bugzilla Bug Tracking System. + * + * The Initial Developer of the Original Code is Netscape Communications + * Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): Dennis Melentyev <dennis.melentyev@infopulse.com.ua> + */ + + /* This file provides JavaScript functions to be included once one wish + * to add a hide/reveal/collapse per-class functionality + * + * + * This file contains hide/reveal API for customizable page views + * TUI stands for Tweak UI. + * + * See bug 262592 for usage examples. + * + * Note: this interface is experimental and under development. + * We may and probably will make breaking changes to it in the future. + */ + + var TUIClasses = new Array; + var TUICookiesEnabled = -1; + + // Internal function to demangle cookies + function TUI_demangle(value) { + var pair; + var pairs = value.split(","); + for (i = 0; i < pairs.length; i++) { + pair = pairs[i].split(":"); + if (pair[0] != null && pair[1] != null) + TUIClasses[pair[0]] = pair[1]; + } + } + + /* TUI_tweak: Function to redraw whole document. + * Also, initialize TUIClasses array with defaults, then override it + * with values from cookie + */ + + function TUI_tweak( cookiesuffix, classes ) { + var dc = document.cookie; + var begin = -1; + var end = 0; + + // Register classes and their defaults + TUI_demangle(classes); + + if (TUICookiesEnabled > 0) { + // If cookies enabled, process them + TUI_demangle(TUI_getCookie(cookiesuffix)); + } + else if (TUICookiesEnabled == -1) { + // If cookies availability not checked yet since browser does + // not has navigator.cookieEnabled property, let's check it manualy + var cookie = TUI_getCookie(cookiesuffix); + if (cookie.length == 0) + { + TUI_setCookie(cookiesuffix); + // Cookies are definitely disabled for JS. + if (TUI_getCookie(cookiesuffix).length == 0) + TUICookiesEnabled = 0; + else + TUICookiesEnabled = 1; + } + else { + // Have cookie set, pretend to be able to reset them later on + TUI_demangle(cookie); + TUICookiesEnabled = 1; + } + } + + if (TUICookiesEnabled > 0) { + var els = document.getElementsByTagName('*'); + for (i = 0; i < els.length; i++) { + if (null != TUIClasses[els[i].className]) { + TUI_apply(els[i], TUIClasses[els[i].className]); + } + } + } + return; + } + + // TUI_apply: Function to draw certain element. + // Receives element itself and style value: hide, reveal or collapse + + function TUI_apply(element, value) { + if (TUICookiesEnabled > 0 && element != null) { + switch (value) + { + case 'hide': + element.style.visibility="hidden"; + break; + case 'collapse': + element.style.visibility="hidden"; + element.style.display="none"; + break; + case 'reveal': // Shown item must expand + default: // The default is to show & expand + element.style.visibility="visible"; + element.style.display=""; + break; + } + } + } + + // TUI_change: Function to process class. + // Usualy called from onclick event of button + + function TUI_change(cookiesuffix, clsname, action) { + if (TUICookiesEnabled > 0) { + var els, i; + els = document.getElementsByTagName('*'); + for (i=0; i<els.length; i++) { + if (els[i].className.match(clsname)) { + TUI_apply(els[i], action); + } + } + TUIClasses[clsname]=action; + TUI_setCookie(cookiesuffix); + } + } + + // TUI_setCookie: Function to set TUI cookie. + // Used internally + + function TUI_setCookie(cookiesuffix) { + var cookieval = ""; + var expireOn = new Date(); + expireOn.setYear(expireOn.getFullYear() + 25); + for (clsname in TUIClasses) { + if (cookieval.length > 0) + cookieval += ","; + cookieval += clsname+":"+TUIClasses[clsname]; + } + document.cookie="Bugzilla_TUI_"+cookiesuffix+"="+cookieval+"; expires="+expireOn.toString(); + } + + // TUI_getCookie: Function to get TUI cookie. + // Used internally + + function TUI_getCookie(cookiesuffix) { + var dc = document.cookie; + var begin, end; + var cookiePrefix = "Bugzilla_TUI_"+cookiesuffix+"="; + begin = dc.indexOf(cookiePrefix, end); + if (begin != -1) { + begin += cookiePrefix.length; + end = dc.indexOf(";", begin); + if (end == -1) { + end = dc.length; + } + return unescape(dc.substring(begin, end)); + } + return ""; + } diff --git a/localconfig.js b/localconfig.js deleted file mode 100644 index 2cbe6f24f..000000000 --- a/localconfig.js +++ /dev/null @@ -1,75 +0,0 @@ -// -// This file contains the installation specific values for QuickSearch. -// See quicksearch.js for more details. -// - -// the global bugzilla url - -var bugzilla = ""; -//var bugzilla = "http://bugzilla.mozilla.org/"; - -// Status and Resolution -// --------------------- - -var statuses_open = new Array("UNCONFIRMED","NEW","ASSIGNED","REOPENED"); -var statuses_resolved = new Array("RESOLVED","VERIFIED","CLOSED"); -var resolutions = new Array("FIXED","INVALID","WONTFIX","LATER", - "REMIND","DUPLICATE","WORKSFORME","MOVED"); - -// Keywords -// -------- -// -// Enumerate all your keywords here. This is necessary to avoid -// "foo is not a legal keyword" errors. This makes it possible -// to include the keywords field in the search by default. - -var keywords = new Array( -// "foo", "bar", "baz" -); - -// Platforms -// --------- -// -// A list of words <w> (substrings of platform values) -// that will automatically be translated to "platform:<w>" -// E.g. if "mac" is defined as a platform, then searching -// for it will find all bugs with platform="Macintosh", -// but no other bugs with e.g. "mac" in the summary. - -var platforms = new Array( -"pc","sun","macintosh","mac" //shortcut added -//,"dec","hp","sgi" -//,"all" //this is a legal value for OpSys, too :( -//,"other" -); - -// Severities -// ---------- -// -// A list of words <w> (substrings of severity values) -// that will automatically be translated to "severity:<w>" -// E.g with this default set of severities, searching for -// "blo,cri,maj" will find all severe bugs. - -var severities = new Array("blo","cri","maj","nor","min","tri","enh"); - -// Products and Components -// ----------------------- -// -// It is not necessary to list all products and components here. -// Instead, you can define a "blacklist" for some commonly used -// words or word fragments that occur in a product or component name -// but should _not_ trigger product/component search. - -var product_exceptions = new Array( -"row" // [Browser] - // ^^^ -,"new" // [MailNews] - // ^^^ -); - -var component_exceptions = new Array( -"hang" // [mozilla.org] Bugzilla: Component/Keyword Changes - // ^^^^ -); - diff --git a/long_list.cgi b/long_list.cgi index 69a27af46..c02c8deda 100755 --- a/long_list.cgi +++ b/long_list.cgi @@ -23,10 +23,9 @@ use strict; use lib qw(.); +use Bugzilla; -require "CGI.pl"; - -our $cgi; +my $cgi = Bugzilla->cgi; # Convert comma/space separated elements into separate params my $buglist = $cgi->param('buglist') || $cgi->param('bug_id') || $cgi->param('id'); diff --git a/move.pl b/move.pl deleted file mode 100755 index 96e964b55..000000000 --- a/move.pl +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/perl -wT -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Dawn Endico <endico@mozilla.org> -# Terry Weissman <terry@mozilla.org> -# Dave Miller <justdave@bugzilla.org> - -use strict; - -use lib qw(.); - -require "CGI.pl"; - -use vars qw($template $userid); - -use Bugzilla; -use Bugzilla::Constants; -use Bugzilla::Bug; -use Bugzilla::Config qw(:DEFAULT $datadir); -use Bugzilla::BugMail; - -my $cgi = Bugzilla->cgi; - -unless ( Param("move-enabled") ) { - print $cgi->header(); - PutHeader("Move Bugs"); - print "\n<P>Sorry. Bug moving is not enabled here. "; - print "If you need to move a bug, contact " . Param("maintainer"); - PutFooter(); - exit; -} - -my $user = Bugzilla->login(LOGIN_REQUIRED); - -if (!defined $cgi->param('buglist')) { - print $cgi->header(); - PutHeader("Move Bugs"); - print "Move bugs either from the bug display page or perform a "; - print "<A HREF=\"query.cgi\">query</A> and change several bugs at once.\n"; - print "If you don't see the move button, then you either aren't "; - print "logged in or aren't permitted to."; - PutFooter(); - exit; -} - -unless ($user->is_mover) { - print $cgi->header(); - PutHeader("Move Bugs"); - print "<P>You do not have permission to move bugs<P>\n"; - PutFooter(); - exit; -} - -my @bugs; -my $exporterid = $user->id; - -print $cgi->header(); -PutHeader("Move Bugs"); - -foreach my $id (split(/:/, scalar($cgi->param('buglist')))) { - my $bug = new Bugzilla::Bug($id, $exporterid); - push @bugs, $bug; - if (!$bug->error) { - my $fieldid = GetFieldID("bug_status"); - my $cur_status= $bug->bug_status; - SendSQL("INSERT INTO bugs_activity " . - "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . - "($id,$exporterid,now(),$fieldid,'$cur_status','RESOLVED')"); - $fieldid = GetFieldID("resolution"); - my $cur_res= $bug->resolution; - SendSQL("INSERT INTO bugs_activity " . - "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . - "($id,$exporterid,now(),$fieldid,'$cur_res','MOVED')"); - - SendSQL("UPDATE bugs SET bug_status =\"RESOLVED\", - resolution =\"MOVED\", - delta_ts = NOW() - WHERE bug_id=\"$id\""); - - my $comment = ""; - if (defined $cgi->param('comment') && $cgi->param('comment') !~ /^\s*$/) { - $comment .= $cgi->param('comment') . "\n\n"; - } - $comment .= "Bug moved to " . Param("move-to-url") . ".\n\n"; - $comment .= "If the move succeeded, " . $user->login . " will receive a mail\n"; - $comment .= "containing the number of the new bug in the other database.\n"; - $comment .= "If all went well, please mark this bug verified, and paste\n"; - $comment .= "in a link to the new bug. Otherwise, reopen this bug.\n"; - SendSQL("INSERT INTO longdescs (bug_id, who, bug_when, thetext) VALUES " . - "($id, $exporterid, now(), " . SqlQuote($comment) . ")"); - - print "<P>Bug $id moved to " . Param("move-to-url") . ".<BR>\n"; - Bugzilla::BugMail::Send($id, { 'changer' => $user->login }); - } -} - -my $buglist = $cgi->param('buglist'); -$buglist =~ s/:/,/g; -my $host = Param("urlbase"); -$host =~ s#http://([^/]+)/.*#$1#; -my $to = Param("move-to-address"); -$to =~ s/@/\@/; -my $msg = "To: $to\n"; -my $from = Param("moved-from-address"); -$from =~ s/@/\@/; -$msg .= "From: Bugzilla <" . $from . ">\n"; -$msg .= "Subject: Moving bug(s) $buglist\n\n"; - -my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment'); -my %displayfields; -foreach (@fieldlist) { - $displayfields{$_} = 1; -} - -$template->process("bug/show.xml.tmpl", { bugs => \@bugs, - displayfields => \%displayfields, - }, \$msg) - || ThrowTemplateError($template->error()); - -$msg .= "\n"; - -Bugzilla::BugMail::MessageToMTA($msg); -PutFooter(); diff --git a/page.cgi b/page.cgi index 6e78317fc..b160cf021 100755 --- a/page.cgi +++ b/page.cgi @@ -34,13 +34,12 @@ use lib "."; use Bugzilla; -require "CGI.pl"; - -use vars qw($template $vars); +require "globals.pl"; Bugzilla->login(); my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; my $id = $cgi->param('id'); if ($id) { @@ -52,13 +51,13 @@ if ($id) { ThrowCodeError("bad_page_cgi_id", { "page_id" => $id }); } - my $format = GetFormat("pages/$1", undef, $2); + my $format = $template->get_format("pages/$1", undef, $2); $cgi->param('id', $id); print $cgi->header($format->{'ctype'}); - $template->process("$format->{'template'}", $vars) + $template->process("$format->{'template'}") || ThrowTemplateError($template->error()); } else { diff --git a/post_bug.cgi b/post_bug.cgi index 0277229d2..4d8c6a2c9 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -26,19 +26,18 @@ use strict; use lib qw(.); +require "globals.pl"; use Bugzilla; use Bugzilla::Constants; -require "CGI.pl"; - +use Bugzilla::Util; use Bugzilla::Bug; - use Bugzilla::User; +use Bugzilla::Field; # Shut up misguided -w warnings about "used only once". For some reason, # "use vars" chokes on me when I try it here. sub sillyness { my $zz; - $zz = $::buffer; $zz = %::components; $zz = %::versions; $zz = @::legal_opsys; @@ -49,14 +48,12 @@ sub sillyness { $zz = %::target_milestone; } -# Use global template variables. -use vars qw($vars $template); - my $user = Bugzilla->login(LOGIN_REQUIRED); my $cgi = Bugzilla->cgi; - my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; # do a match on the fields if applicable @@ -70,8 +67,8 @@ my $dbh = Bugzilla->dbh; # enter_bug template and then referencing them in the comment template. my $comment; -my $format = GetFormat("bug/create/comment", - scalar($cgi->param('format')), "txt"); +my $format = $template->get_format("bug/create/comment", + scalar($cgi->param('format')), "txt"); $template->process($format->{'template'}, $vars, \$comment) || ThrowTemplateError($template->error()); @@ -81,7 +78,7 @@ ValidateComment($comment); # Check that the product exists and that the user # is allowed to enter bugs into this product. my $product = $cgi->param('product'); -CanEnterProductOrWarn($product); +$user->can_enter_product($product, 1); my $product_id = get_product_id($product); @@ -95,7 +92,8 @@ if (defined $cgi->param('product')) { } if (defined $cgi->param('maketemplate')) { - $vars->{'url'} = $::buffer; + $vars->{'url'} = $cgi->query_string(); + $vars->{'short_desc'} = $cgi->param('short_desc'); print $cgi->header(); $template->process("bug/create/make-template.html.tmpl", $vars) @@ -199,18 +197,18 @@ if (!Param('letsubmitterchoosepriority')) { GetVersionTable(); # Some more sanity checking -CheckFormField($cgi, 'product', \@::legal_product); -CheckFormField($cgi, 'rep_platform', \@::legal_platform); -CheckFormField($cgi, 'bug_severity', \@::legal_severity); -CheckFormField($cgi, 'priority', \@::legal_priority); -CheckFormField($cgi, 'op_sys', \@::legal_opsys); -CheckFormField($cgi, 'bug_status', ['UNCONFIRMED', 'NEW']); -CheckFormField($cgi, 'version', $::versions{$product}); -CheckFormField($cgi, 'component', $::components{$product}); -CheckFormField($cgi, 'target_milestone', $::target_milestone{$product}); -CheckFormFieldDefined($cgi, 'assigned_to'); -CheckFormFieldDefined($cgi, 'bug_file_loc'); -CheckFormFieldDefined($cgi, 'comment'); +check_form_field($cgi, 'product', \@::legal_product); +check_form_field($cgi, 'rep_platform', \@::legal_platform); +check_form_field($cgi, 'bug_severity', \@::legal_severity); +check_form_field($cgi, 'priority', \@::legal_priority); +check_form_field($cgi, 'op_sys', \@::legal_opsys); +check_form_field($cgi, 'bug_status', ['UNCONFIRMED', 'NEW']); +check_form_field($cgi, 'version', $::versions{$product}); +check_form_field($cgi, 'component', $::components{$product}); +check_form_field($cgi, 'target_milestone', $::target_milestone{$product}); +check_form_field_defined($cgi, 'assigned_to'); +check_form_field_defined($cgi, 'bug_file_loc'); +check_form_field_defined($cgi, 'comment'); my $everconfirmed = ($cgi->param('bug_status') eq 'UNCONFIRMED') ? 0 : 1; $cgi->param(-name => 'everconfirmed', -value => $everconfirmed); @@ -262,6 +260,28 @@ if ($cgi->param('keywords') && UserInGroup("editbugs")) { } } +if (Param("strict_isolation")) { + my @blocked_users = (); + my %related_users = %ccids; + $related_users{$cgi->param('assigned_to')} = 1; + if (Param('useqacontact') && $cgi->param('qa_contact')) { + $related_users{$cgi->param('qa_contact')} = 1; + } + foreach my $pid (keys %related_users) { + my $related_user = Bugzilla::User->new($pid); + if (!$related_user->can_edit_product($product_id)) { + push (@blocked_users, $related_user->login); + } + } + if (scalar(@blocked_users)) { + ThrowUserError("invalid_user_group", + {'users' => \@blocked_users, + 'new' => 1, + 'product' => $product + }); + } +} + # Check for valid dependency info. foreach my $field ("dependson", "blocked") { if (UserInGroup("editbugs") && $cgi->param($field)) { @@ -279,9 +299,8 @@ foreach my $field ("dependson", "blocked") { # Gather the dependency list, and make sure there are no circular refs my %deps; if (UserInGroup("editbugs")) { - %deps = Bugzilla::Bug::ValidateDependencies($cgi->param('dependson'), - $cgi->param('blocked'), - undef); + %deps = Bugzilla::Bug::ValidateDependencies(scalar($cgi->param('dependson')), + scalar($cgi->param('blocked'))); } # get current time @@ -306,7 +325,7 @@ $comment = trim($comment); # OK except for the fact that it causes e-mail to be suppressed. $comment = $comment ? $comment : " "; -$sql .= "$::userid, $sql_timestamp, "; +$sql .= $user->id . ", $sql_timestamp, "; # Time Tracking if (UserInGroup(Param("timetrackinggroup")) && @@ -320,7 +339,9 @@ if (UserInGroup(Param("timetrackinggroup")) && } if ((UserInGroup(Param("timetrackinggroup"))) && ($cgi->param('deadline'))) { - Bugzilla::Util::ValidateDate($cgi->param('deadline'), 'YYYY-MM-DD'); + validate_date($cgi->param('deadline')) + || ThrowUserError('illegal_date', {date => $cgi->param('deadline'), + format => 'YYYY-MM-DD'}); $sql .= SqlQuote($cgi->param('deadline')); } else { $sql .= "NULL"; @@ -343,11 +364,7 @@ foreach my $b (grep(/^bit-\d*$/, $cgi->param())) { $vars->{'bit'} = $v; ThrowCodeError("inactive_group"); } - SendSQL("SELECT user_id FROM user_group_map - WHERE user_id = $::userid - AND group_id = $v - AND isbless = 0"); - my ($permit) = FetchSQLData(); + my ($permit) = $user->in_group_id($v); if (!$permit) { SendSQL("SELECT othercontrol FROM group_control_map WHERE group_id = $v AND product_id = $product_id"); @@ -382,7 +399,8 @@ while (MoreSQLData()) { # Add the bug report to the DB. $dbh->bz_lock_tables('bugs WRITE', 'bug_group_map WRITE', 'longdescs WRITE', 'cc WRITE', 'keywords WRITE', 'dependencies WRITE', - 'bugs_activity WRITE', 'groups READ', 'user_group_map READ', + 'bugs_activity WRITE', 'groups READ', + 'user_group_map READ', 'group_group_map READ', 'keyworddefs READ', 'fielddefs READ'); SendSQL($sql); @@ -452,10 +470,10 @@ $dbh->do("UPDATE bugs SET creation_ts = ? WHERE bug_id = ?", $dbh->bz_unlock_tables(); # Email everyone the details of the new bug -$vars->{'mailrecipients'} = {'changer' => Bugzilla->user->login}; +$vars->{'mailrecipients'} = {'changer' => $user->login}; $vars->{'id'} = $id; -my $bug = new Bugzilla::Bug($id, $::userid); +my $bug = new Bugzilla::Bug($id, $user->id); $vars->{'bug'} = $bug; ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; diff --git a/process_bug.cgi b/process_bug.cgi index 49c4216ee..a8a0f5f0d 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -24,7 +24,8 @@ # Christopher Aillon <christopher@aillon.com> # Myk Melez <myk@mozilla.org> # Jeff Hedlund <jeff.hedlund@matrixsi.com> -# Fr�d�ric Buclin <LpSolit@gmail.com> +# Frédéric Buclin <LpSolit@gmail.com> +# Lance Larsh <lance.larsh@oracle.com> # Implementation notes for this file: # @@ -47,13 +48,14 @@ my $lastbugid = 0; use lib qw(.); +require "globals.pl"; use Bugzilla; use Bugzilla::Constants; -require "CGI.pl"; - use Bugzilla::Bug; +use Bugzilla::BugMail; use Bugzilla::User; use Bugzilla::Util; +use Bugzilla::Field; # Use the Flag module to modify flag data if the user set flags. use Bugzilla::Flag; @@ -74,14 +76,15 @@ use vars qw(@legal_product my $user = Bugzilla->login(LOGIN_REQUIRED); my $whoid = $user->id; +my $grouplist = $user->groups_as_string; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; my $requiremilestone = 0; -use vars qw($template $vars); - ###################################################################### # Begin Data/Security Validation ###################################################################### @@ -161,12 +164,20 @@ foreach my $field ("dependson", "blocked") { # ValidateBugID is called without $field here so that it will # throw an error if any of the changed bugs are not visible. ValidateBugID($id); - if (!CheckCanChangeField($field, $bug->bug_id, 0, 1)) { - $vars->{'privs'} = $PrivilegesRequired; - $vars->{'field'} = $field; - ThrowUserError("illegal_change", $vars); + if (Param("strict_isolation")) { + my $deltabug = new Bugzilla::Bug($id, $user->id); + if (!$user->can_edit_product($deltabug->{'product_id'})) { + $vars->{'field'} = $field; + ThrowUserError("illegal_change_deps", $vars); + } } } + if ((@$added || @$removed) + && (!CheckCanChangeField($field, $bug->bug_id, 0, 1))) { + $vars->{'privs'} = $PrivilegesRequired; + $vars->{'field'} = $field; + ThrowUserError("illegal_change", $vars); + } } else { # Bugzilla does not support mass-change of dependencies so they # are not validated. To prevent a URL-hacking risk, the dependencies @@ -185,7 +196,7 @@ foreach my $field ("dependson", "blocked") { 'newcc' => { 'type' => 'multi' }, 'masscc' => { 'type' => 'multi' }, 'assigned_to' => { 'type' => 'single' }, - '^requestee(_type)?-(\d+)$' => { 'type' => 'single' }, + '^requestee(_type)?-(\d+)$' => { 'type' => 'multi' }, }); # Validate flags in all cases. validate() should not detect any @@ -215,34 +226,24 @@ if (defined $cgi->param('id')) { } # Set up the vars for nagiavtional <link> elements -my $next_bug; +my @bug_list; if ($cgi->cookie("BUGLIST") && defined $cgi->param('id')) { - my @bug_list = split(/:/, $cgi->cookie("BUGLIST")); + @bug_list = split(/:/, $cgi->cookie("BUGLIST")); $vars->{'bug_list'} = \@bug_list; - my $cur = lsearch(\@bug_list, $cgi->param("id")); - if ($cur >= 0 && $cur < $#bug_list) { - $next_bug = $bug_list[$cur + 1]; - - # Note that we only bother with the bug_id here, and get - # the full bug object at the end, before showing the edit - # page. If you change this, remember that we have not - # done the security checks on the next bug yet - $vars->{'bug'} = { bug_id => $next_bug }; - } } GetVersionTable(); -CheckFormFieldDefined($cgi, 'product'); -CheckFormFieldDefined($cgi, 'version'); -CheckFormFieldDefined($cgi, 'component'); +check_form_field_defined($cgi, 'product'); +check_form_field_defined($cgi, 'version'); +check_form_field_defined($cgi, 'component'); # This function checks if there is a comment required for a specific # function and tests, if the comment was given. # If comments are required for functions is defined by params. # -sub CheckonComment( $ ) { +sub CheckonComment { my ($function) = (@_); # Param is 1 if comment should be added ! @@ -309,7 +310,7 @@ if (((defined $cgi->param('id') && $cgi->param('product') ne $oldproduct) $dbh->sql_limit(1), undef, $prod); - if ($check_can_enter) { CanEnterProductOrWarn($prod) } + if ($check_can_enter) { $user->can_enter_product($prod, 1) } # note that when this script is called from buglist.cgi (rather # than show_bug.cgi), it's possible that the product will be changed @@ -324,7 +325,7 @@ if (((defined $cgi->param('id') && $cgi->param('product') ne $oldproduct) my $mok = 1; # so it won't affect the 'if' statement if milestones aren't used if ( Param("usetargetmilestone") ) { - CheckFormFieldDefined($cgi, 'target_milestone'); + check_form_field_defined($cgi, 'target_milestone'); $mok = lsearch($::target_milestone{$prod}, $cgi->param('target_milestone')) >= 0; } @@ -340,7 +341,7 @@ if (((defined $cgi->param('id') && $cgi->param('product') ne $oldproduct) my %defaults; # We set the defaults to these fields to the old value, # if its a valid option, otherwise we use the default where - # thats appropriate + # that's appropriate $vars->{'versions'} = $::versions{$prod}; if ($vok) { $defaults{'version'} = $cgi->param('version'); @@ -595,21 +596,21 @@ if (defined $cgi->param('id')) { # (XXX those error checks need to happen too, but implementing them # is more work in the current architecture of this script...) # - CheckFormField($cgi, 'product', \@::legal_product); - CheckFormField($cgi, 'component', + check_form_field($cgi, 'product', \@::legal_product); + check_form_field($cgi, 'component', \@{$::components{$cgi->param('product')}}); - CheckFormField($cgi, 'version', \@{$::versions{$cgi->param('product')}}); + check_form_field($cgi, 'version', \@{$::versions{$cgi->param('product')}}); if ( Param("usetargetmilestone") ) { - CheckFormField($cgi, 'target_milestone', + check_form_field($cgi, 'target_milestone', \@{$::target_milestone{$cgi->param('product')}}); } - CheckFormField($cgi, 'rep_platform', \@::legal_platform); - CheckFormField($cgi, 'op_sys', \@::legal_opsys); - CheckFormField($cgi, 'priority', \@::legal_priority); - CheckFormField($cgi, 'bug_severity', \@::legal_severity); - CheckFormFieldDefined($cgi, 'bug_file_loc'); - CheckFormFieldDefined($cgi, 'short_desc'); - CheckFormFieldDefined($cgi, 'longdesclength'); + check_form_field($cgi, 'rep_platform', \@::legal_platform); + check_form_field($cgi, 'op_sys', \@::legal_opsys); + check_form_field($cgi, 'priority', \@::legal_priority); + check_form_field($cgi, 'bug_severity', \@::legal_severity); + check_form_field_defined($cgi, 'bug_file_loc'); + check_form_field_defined($cgi, 'short_desc'); + check_form_field_defined($cgi, 'longdesclength'); $cgi->param('short_desc', clean_text($cgi->param('short_desc'))); if (trim($cgi->param('short_desc')) eq "") { @@ -620,9 +621,100 @@ if (defined $cgi->param('id')) { my $action = trim($cgi->param('action') || ''); if ($action eq Param('move-button-text')) { - $cgi->param('buglist', join (":", @idlist)); - do "move.pl" || die "Error executing move.cgi: $!"; - exit; + Param('move-enabled') || ThrowUserError("move_bugs_disabled"); + + $user->is_mover || ThrowUserError("auth_failure", {action => 'move', + object => 'bugs'}); + + # Moved bugs are marked as RESOLVED MOVED. + my $sth = $dbh->prepare("UPDATE bugs + SET bug_status = 'RESOLVED', + resolution = 'MOVED', + delta_ts = ? + WHERE bug_id = ?"); + # Bugs cannot be a dupe and moved at the same time. + my $sth2 = $dbh->prepare("DELETE FROM duplicates WHERE dupe = ?"); + + my $comment = ""; + if (defined $cgi->param('comment') && $cgi->param('comment') !~ /^\s*$/) { + $comment = $cgi->param('comment') . "\n\n"; + } + $comment .= "Bug moved to " . Param('move-to-url') . ".\n\n"; + $comment .= "If the move succeeded, " . $user->login . " will receive a mail\n"; + $comment .= "containing the number of the new bug in the other database.\n"; + $comment .= "If all went well, please mark this bug verified, and paste\n"; + $comment .= "in a link to the new bug. Otherwise, reopen this bug.\n"; + + $dbh->bz_lock_tables('bugs WRITE', 'bugs_activity WRITE', 'duplicates WRITE', + 'longdescs WRITE', 'profiles READ', 'groups READ', + 'bug_group_map READ', 'group_group_map READ', + 'user_group_map READ', 'classifications READ', + 'products READ', 'components READ', 'votes READ', + 'cc READ', 'fielddefs READ'); + + my $timestamp = $dbh->selectrow_array("SELECT NOW()"); + my @bugs; + # First update all moved bugs. + foreach my $id (@idlist) { + my $bug = new Bugzilla::Bug($id, $whoid); + push(@bugs, $bug); + + $sth->execute($timestamp, $id); + $sth2->execute($id); + + AppendComment($id, $whoid, $comment, 0, $timestamp); + + if ($bug->bug_status ne 'RESOLVED') { + LogActivityEntry($id, 'bug_status', $bug->bug_status, + 'RESOLVED', $whoid, $timestamp); + } + if ($bug->resolution ne 'MOVED') { + LogActivityEntry($id, 'resolution', $bug->resolution, + 'MOVED', $whoid, $timestamp); + } + } + $dbh->bz_unlock_tables(); + + # Now send emails. + foreach my $id (@idlist) { + $vars->{'mailrecipients'} = { 'changer' => $user->login }; + $vars->{'id'} = $id; + $vars->{'type'} = "move"; + + $template->process("bug/process/results.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + $vars->{'header_done'} = 1; + } + # Prepare and send all data about these bugs to the new database + my $to = Param('move-to-address'); + $to =~ s/@/\@/; + my $from = Param('moved-from-address'); + $from =~ s/@/\@/; + my $msg = "To: $to\n"; + $msg .= "From: Bugzilla <" . $from . ">\n"; + $msg .= "Subject: Moving bug(s) " . join(', ', @idlist) . "\n\n"; + + my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', + 'attachment', 'attachmentdata'); + my %displayfields; + foreach (@fieldlist) { + $displayfields{$_} = 1; + } + + $template->process("bug/show.xml.tmpl", { bugs => \@bugs, + displayfields => \%displayfields, + }, \$msg) + || ThrowTemplateError($template->error()); + + $msg .= "\n"; + Bugzilla::BugMail::MessageToMTA($msg); + + # End the response page. + $template->process("bug/navigate.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + $template->process("global/footer.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + exit; } @@ -650,10 +742,14 @@ sub DoComma { $::comma = ","; } +# $everconfirmed is used by ChangeStatus() to determine whether we are +# confirming the bug or not. +my $everconfirmed; sub DoConfirm { if (CheckCanChangeField("canconfirm", scalar $cgi->param('id'), 0, 1)) { DoComma(); $::query .= "everconfirmed = 1"; + $everconfirmed = 1; } } @@ -695,11 +791,18 @@ sub ChangeStatus { my @open_state = map(SqlQuote($_), OpenStates()); my $open_state = join(", ", @open_state); + + # If we are changing everconfirmed to 1, we have to take this change + # into account and the new bug status is given by $str. + my $cond = SqlQuote($str); + # If we are not setting everconfirmed, the new bug status depends on + # the actual value of everconfirmed, which is bug-specific. + unless ($everconfirmed) { + $cond = "(CASE WHEN everconfirmed = 1 THEN " . $cond . + " ELSE 'UNCONFIRMED' END)"; + } $::query .= "bug_status = CASE WHEN bug_status IN($open_state) THEN " . - "(CASE WHEN everconfirmed = 1 THEN " . - SqlQuote($str) . " ELSE " . - " 'UNCONFIRMED' END) ELSE " . - "bug_status END"; + $cond . " ELSE bug_status END"; } else { $::query .= "bug_status = " . SqlQuote($str); } @@ -733,10 +836,9 @@ sub ChangeResolution { my @groupAdd = (); my @groupDel = (); -SendSQL("SELECT groups.id, isactive FROM groups INNER JOIN user_group_map " . - "ON groups.id = user_group_map.group_id " . - "WHERE user_group_map.user_id = $whoid " . - "AND isbless = 0 AND isbuggroup = 1"); +SendSQL("SELECT groups.id, isactive FROM groups " . + "WHERE id IN($grouplist) " . + "AND isbuggroup = 1"); while (my ($b, $isactive) = FetchSQLData()) { # The multiple change page may not show all groups a bug is in # (eg product groups when listing more than one product) @@ -765,7 +867,9 @@ foreach my $field ("rep_platform", "priority", "bug_severity", } } -my $prod_id; # Remember, can't use this for mass changes +my $prod_id; +my $prod_changed; +my @newprod_ids; if ($cgi->param('product') ne $cgi->param('dontchange')) { $prod_id = get_product_id($cgi->param('product')); $prod_id || @@ -773,17 +877,23 @@ if ($cgi->param('product') ne $cgi->param('dontchange')) { {product => $cgi->param('product')}); DoComma(); + @newprod_ids = ($prod_id); + $prod_changed = 1; $::query .= "product_id = $prod_id"; } else { - SendSQL("SELECT DISTINCT product_id FROM bugs WHERE bug_id IN (" . - join(',', @idlist) . ") " . $dbh->sql_limit(2)); - $prod_id = FetchOneColumn(); - $prod_id = undef if (FetchOneColumn()); + @newprod_ids = @{$dbh->selectcol_arrayref("SELECT DISTINCT product_id + FROM bugs + WHERE bug_id IN (" . + join(',', @idlist) . + ")")}; + if (scalar(@newprod_ids) == 1) { + ($prod_id) = @newprod_ids; + } } -my $comp_id; # Remember, can't use this for mass changes +my $comp_id; if ($cgi->param('component') ne $cgi->param('dontchange')) { - if (!defined $prod_id) { + if (scalar(@newprod_ids) > 1) { ThrowUserError("no_component_change_for_multiple_products"); } $comp_id = get_component_id($prod_id, @@ -847,16 +957,18 @@ if (defined $cgi->param('id')) { if (defined $cgi->param('id') && (Param("insidergroup") && UserInGroup(Param("insidergroup")))) { + my $sth = $dbh->prepare('UPDATE longdescs SET isprivate = ? + WHERE bug_id = ? AND bug_when = ?'); + foreach my $field ($cgi->param()) { if ($field =~ /when-([0-9]+)/) { my $sequence = $1; my $private = $cgi->param("isprivate-$sequence") ? 1 : 0 ; if ($private != $cgi->param("oisprivate-$sequence")) { my $field_data = $cgi->param("$field"); - detaint_natural($field_data); - SendSQL("UPDATE longdescs SET isprivate = $private " . - "WHERE bug_id = " . $cgi->param('id') . - " AND bug_when = $field_data"); + # Make sure a valid date is given. + $field_data = format_time($field_data, '%Y-%m-%d %T'); + $sth->execute($private, $cgi->param('id'), $field_data); } } @@ -914,9 +1026,16 @@ if (defined $cgi->param('newcc') # only way to keep these informations when bugs are reassigned by # component as $cgi->param('assigned_to') and $cgi->param('qa_contact') # are not the right fields to look at. +# If the assignee or qacontact is changed, the new one is checked when +# changed information is validated. If not, then the unchanged assignee +# or qacontact may have to be validated later. my $assignee; my $qacontact; +my $qacontact_checked = 0; +my $assignee_checked = 0; + +my %usercache = (); if (defined $cgi->param('qa_contact') && $cgi->param('knob') ne "reassignbycomponent") @@ -925,6 +1044,22 @@ if (defined $cgi->param('qa_contact') # The QA contact cannot be deleted from show_bug.cgi for a single bug! if ($name ne $cgi->param('dontchange')) { $qacontact = DBNameToIdAndCheck($name) if ($name ne ""); + if ($qacontact && Param("strict_isolation")) { + $usercache{$qacontact} ||= Bugzilla::User->new($qacontact); + my $qa_user = $usercache{$qacontact}; + foreach my $product_id (@newprod_ids) { + if (!$qa_user->can_edit_product($product_id)) { + my $product_name = get_product_name($product_id); + ThrowUserError('invalid_user_group', + {'users' => $qa_user->login, + 'product' => $product_name, + 'bug_id' => (scalar(@idlist) > 1) + ? undef : $idlist[0] + }); + } + } + } + $qacontact_checked = 1; DoComma(); if($qacontact) { $::query .= "qa_contact = $qacontact"; @@ -958,7 +1093,7 @@ SWITCH: for ($cgi->param('knob')) { }; /^resolve$/ && CheckonComment( "resolve" ) && do { # Check here, because its the only place we require the resolution - CheckFormField($cgi, 'resolution', \@::settable_resolution); + check_form_field($cgi, 'resolution', \@::settable_resolution); # don't resolve as fixed while still unresolved blocking bugs if (Param("noresolveonopenblockers") @@ -986,44 +1121,38 @@ SWITCH: for ($cgi->param('knob')) { } ChangeStatus('NEW'); DoComma(); - if (!defined $cgi->param('assigned_to') - || trim($cgi->param('assigned_to')) eq "") { + if (defined $cgi->param('assigned_to') + && trim($cgi->param('assigned_to')) ne "") { + $assignee = DBNameToIdAndCheck(trim($cgi->param('assigned_to'))); + if (Param("strict_isolation")) { + $usercache{$assignee} ||= Bugzilla::User->new($assignee); + my $assign_user = $usercache{$assignee}; + foreach my $product_id (@newprod_ids) { + if (!$assign_user->can_edit_product($product_id)) { + my $product_name = get_product_name($product_id); + ThrowUserError('invalid_user_group', + {'users' => $assign_user->login, + 'product' => $product_name, + 'bug_id' => (scalar(@idlist) > 1) + ? undef : $idlist[0] + }); + } + } + } + } else { ThrowUserError("reassign_to_empty"); } - $assignee = DBNameToIdAndCheck(trim($cgi->param('assigned_to'))); + $assignee_checked = 1; $::query .= "assigned_to = $assignee"; last SWITCH; }; /^reassignbycomponent$/ && CheckonComment( "reassignbycomponent" ) && do { - if ($cgi->param('product') eq $cgi->param('dontchange')) { - ThrowUserError("need_product"); - } - if ($cgi->param('component') eq $cgi->param('dontchange')) { - ThrowUserError("need_component"); - } if ($cgi->param('compconfirm')) { DoConfirm(); } ChangeStatus('NEW'); - SendSQL("SELECT initialowner FROM components " . - "WHERE components.id = $comp_id"); - $assignee = FetchOneColumn(); - DoComma(); - $::query .= "assigned_to = $assignee"; - if (Param("useqacontact")) { - SendSQL("SELECT initialqacontact FROM components " . - "WHERE components.id = $comp_id"); - $qacontact = FetchOneColumn(); - DoComma(); - if ($qacontact) { - $::query .= "qa_contact = $qacontact"; - } - else { - $::query .= "qa_contact = NULL"; - } - } last SWITCH; - }; + }; /^reopen$/ && CheckonComment( "reopen" ) && do { ChangeStatus('REOPENED'); ChangeResolution(''); @@ -1048,7 +1177,7 @@ SWITCH: for ($cgi->param('knob')) { } # Make sure we can change the original bug (issue A on bug 96085) - CheckFormFieldDefined($cgi, 'dup_id'); + check_form_field_defined($cgi, 'dup_id'); $duplicate = $cgi->param('dup_id'); ValidateBugID($duplicate, 'dup_id'); $cgi->param('dup_id', $duplicate); @@ -1096,7 +1225,7 @@ SWITCH: for ($cgi->param('knob')) { ChangeResolution('DUPLICATE'); my $comment = $cgi->param('comment'); $comment .= "\n\n*** This bug has been marked " . - "as a duplicate of $duplicate ***"; + "as a duplicate of bug $duplicate ***"; $cgi->param('comment', $comment); last SWITCH; }; @@ -1155,7 +1284,9 @@ if (UserInGroup(Param('timetrackinggroup'))) { DoComma(); $::query .= "deadline = "; if ($cgi->param('deadline')) { - Bugzilla::Util::ValidateDate($cgi->param('deadline'), 'YYYY-MM-DD'); + validate_date($cgi->param('deadline')) + || ThrowUserError('illegal_date', {date => $cgi->param('deadline'), + format => 'YYYY-MM-DD'}); $::query .= SqlQuote($cgi->param('deadline')); } else { $::query .= "NULL" ; @@ -1208,28 +1339,119 @@ sub LogDependencyActivity { return 0; } +if (Param("strict_isolation")) { + my @blocked_cc = (); + foreach my $pid (keys %cc_add) { + $usercache{$pid} ||= Bugzilla::User->new($pid); + my $cc_user = $usercache{$pid}; + foreach my $product_id (@newprod_ids) { + if (!$cc_user->can_edit_product($product_id)) { + push (@blocked_cc, $cc_user->login); + last; + } + } + } + if (scalar(@blocked_cc)) { + ThrowUserError("invalid_user_group", + {'users' => \@blocked_cc, + 'bug_id' => (scalar(@idlist) > 1) ? undef : $idlist[0]}); + } +} + +if ($prod_changed && Param("strict_isolation")) { + my $sth_cc = $dbh->prepare("SELECT who + FROM cc + WHERE bug_id = ?"); + my $sth_bug = $dbh->prepare("SELECT assigned_to, qa_contact + FROM bugs + WHERE bug_id = ?"); + my $prod_name = get_product_name($prod_id); + foreach my $id (@idlist) { + $sth_cc->execute($id); + my @blocked_cc = (); + while (my ($pid) = $sth_cc->fetchrow_array) { + $usercache{$pid} ||= Bugzilla::User->new($pid); + my $cc_user = $usercache{$pid}; + if (!$cc_user->can_edit_product($prod_id)) { + push (@blocked_cc, $cc_user->login); + } + } + if (scalar(@blocked_cc)) { + ThrowUserError('invalid_user_group', + {'users' => \@blocked_cc, + 'bug_id' => $id, + 'product' => $prod_name}); + } + $sth_bug->execute($id); + my ($assignee, $qacontact) = $sth_bug->fetchrow_array; + if (!$assignee_checked) { + $usercache{$assignee} ||= Bugzilla::User->new($assignee); + my $assign_user = $usercache{$assignee}; + if (!$assign_user->can_edit_product($prod_id)) { + ThrowUserError('invalid_user_group', + {'users' => $assign_user->login, + 'bug_id' => $id, + 'product' => $prod_name}); + } + } + if (!$qacontact_checked && $qacontact) { + $usercache{$qacontact} ||= Bugzilla::User->new($qacontact); + my $qa_user = $usercache{$qacontact}; + if (!$qa_user->can_edit_product($prod_id)) { + ThrowUserError('invalid_user_group', + {'users' => $qa_user->login, + 'bug_id' => $id, + 'product' => $prod_name}); + } + } + } +} + + # This loop iterates once for each bug to be processed (i.e. all the # bugs selected when this script is called with multiple bugs selected # from buglist.cgi, or just the one bug when called from # show_bug.cgi). # foreach my $id (@idlist) { + my $query = $basequery; + my $bug_obj = new Bugzilla::Bug($id, $whoid); + + if ($cgi->param('knob') eq 'reassignbycomponent') { + # We have to check whether the bug is moved to another product + # and/or component before reassigning. If $comp_id is defined, + # use it; else use the product/component the bug is already in. + my $new_comp_id = $comp_id || $bug_obj->{'component_id'}; + $assignee = $dbh->selectrow_array('SELECT initialowner + FROM components + WHERE components.id = ?', + undef, $new_comp_id); + $query .= ", assigned_to = $assignee"; + if (Param("useqacontact")) { + $qacontact = $dbh->selectrow_array('SELECT initialqacontact + FROM components + WHERE components.id = ?', + undef, $new_comp_id); + if ($qacontact) { + $query .= ", qa_contact = $qacontact"; + } + else { + $query .= ", qa_contact = NULL"; + } + } + } + my %dependencychanged; $bug_changed = 0; my $write = "WRITE"; # Might want to make a param to control # whether we do LOW_PRIORITY ... $dbh->bz_lock_tables("bugs $write", "bugs_activity $write", "cc $write", "cc AS selectVisible_cc $write", - "profiles $write", "dependencies $write", "votes $write", + "profiles READ", "dependencies $write", "votes $write", "products READ", "components READ", "keywords $write", "longdescs $write", "fielddefs $write", "bug_group_map $write", "flags $write", "duplicates $write", - # user_group_map would be a READ lock except that Flag::process - # may call Flag::notify, which creates a new user object, - # which might call derive_groups, which wants a WRITE lock on that - # table. group_group_map is in here at all because derive_groups - # needs it. - "user_group_map $write", "group_group_map READ", "flagtypes READ", + "user_group_map READ", "group_group_map READ", "flagtypes READ", "flaginclusions AS i READ", "flagexclusions AS e READ", "keyworddefs READ", "groups READ", "attachments READ", "group_control_map AS oldcontrolmap READ", @@ -1293,7 +1515,7 @@ foreach my $id (@idlist) { ThrowUserError("illegal_change", $vars); } } - + # When editing multiple bugs, users can specify a list of keywords to delete # from bugs. If the list matches the current set of keywords on those bugs, # CheckCanChangeField above will fail to check permissions because it thinks @@ -1313,7 +1535,7 @@ foreach my $id (@idlist) { } $oldhash{'product'} = get_product_name($oldhash{'product_id'}); - if (!CanEditProductId($oldhash{'product_id'})) { + if (!Bugzilla->user->can_edit_product($oldhash{'product_id'})) { ThrowUserError("product_edit_denied", { product => $oldhash{'product'} }); } @@ -1340,8 +1562,8 @@ foreach my $id (@idlist) { } if (defined $cgi->param('delta_ts') && $cgi->param('delta_ts') ne $delta_ts) { - ($vars->{'operations'}) = GetBugActivity($cgi->param('id'), - $cgi->param('delta_ts')); + ($vars->{'operations'}) = + Bugzilla::Bug::GetBugActivity($id, $cgi->param('delta_ts')); $vars->{'start_at'} = $cgi->param('longdesclength'); @@ -1362,8 +1584,8 @@ foreach my $id (@idlist) { } # Gather the dependency list, and make sure there are no circular refs - my %deps = Bugzilla::Bug::ValidateDependencies($cgi->param('dependson'), - $cgi->param('blocked'), + my %deps = Bugzilla::Bug::ValidateDependencies(scalar($cgi->param('dependson')), + scalar($cgi->param('blocked')), $id); # @@ -1387,8 +1609,8 @@ foreach my $id (@idlist) { } if ($cgi->param('comment') || $work_time) { - AppendComment($id, $whoid, $cgi->param('comment'), - $cgi->param('commentprivacy'), $timestamp, $work_time); + AppendComment($id, $whoid, scalar($cgi->param('comment')), + scalar($cgi->param('commentprivacy')), $timestamp, $work_time); $bug_changed = 1; } @@ -1429,8 +1651,8 @@ foreach my $id (@idlist) { undef, join(', ', @list), $id); } } - my $query = "$basequery\nwhere bug_id = $id"; - + $query .= " where bug_id = $id"; + if ($::comma ne "") { SendSQL($query); } @@ -1509,6 +1731,7 @@ foreach my $id (@idlist) { } my (@added, @removed) = (); + foreach my $pid (keys %cc_add) { # If this person isn't already on the cc list, add them if (! $oncc{$pid}) { @@ -1610,8 +1833,9 @@ foreach my $id (@idlist) { # - Is the bug in this group? SendSQL("SELECT DISTINCT groups.id, isactive, " . "oldcontrolmap.membercontrol, newcontrolmap.membercontrol, " . - "user_group_map.user_id IS NOT NULL, " . - "bug_group_map.group_id IS NOT NULL " . + "CASE WHEN groups.id IN ($grouplist) THEN 1 ELSE 0 END, " . + "CASE WHEN bug_group_map.group_id IS NOT NULL " . + "THEN 1 ELSE 0 END " . "FROM groups " . "LEFT JOIN group_control_map AS oldcontrolmap " . "ON oldcontrolmap.group_id = groups.id " . @@ -1619,10 +1843,6 @@ foreach my $id (@idlist) { " LEFT JOIN group_control_map AS newcontrolmap " . "ON newcontrolmap.group_id = groups.id " . "AND newcontrolmap.product_id = $newproduct_id " . - "LEFT JOIN user_group_map " . - "ON user_group_map.group_id = groups.id " . - "AND user_group_map.user_id = $whoid " . - "AND user_group_map.isbless = 0 " . "LEFT JOIN bug_group_map " . "ON bug_group_map.group_id = groups.id " . "AND bug_group_map.bug_id = $id " @@ -1787,8 +2007,7 @@ foreach my $id (@idlist) { } } # Set and update flags. - my $target = Bugzilla::Flag::GetTarget($id); - Bugzilla::Flag::process($target, $timestamp, $cgi); + Bugzilla::Flag::process($id, undef, $timestamp, $cgi); if ($bug_changed) { SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp WHERE bug_id = $id"); @@ -1821,7 +2040,7 @@ foreach my $id (@idlist) { " has been marked as a duplicate of this bug. ***", 0, $timestamp); - CheckFormFieldDefined($cgi,'comment'); + check_form_field_defined($cgi,'comment'); SendSQL("INSERT INTO duplicates VALUES ($duplicate, " . $cgi->param('id') . ")"); } @@ -1862,9 +2081,9 @@ foreach my $id (@idlist) { $vars->{'id'} = $k; $vars->{'type'} = "dep"; - # Let the user know we checked to see if we should email notice - # of this change to users with a relationship to the dependent - # bug and who did and didn't receive email about it. + # Let the user (if he is able to see the bug) know we checked to see + # if we should email notice of this change to users with a relationship + # to the dependent bug and who did and didn't receive email about it. $template->process("bug/process/results.html.tmpl", $vars) || ThrowTemplateError($template->error()); $vars->{'header_done'} = 1; @@ -1872,28 +2091,54 @@ foreach my $id (@idlist) { } } -# now show the next bug -if ($next_bug) { - if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) { - my $bug = new Bugzilla::Bug($next_bug, $whoid); - ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; +# Determine if Patch Viewer is installed, for Diff link +# (NB: Duplicate code with show_bug.cgi.) +eval { + require PatchReader; + $vars->{'patchviewerinstalled'} = 1; +}; + +if (defined $cgi->param('id')) { + $action = Bugzilla->user->settings->{'post_bug_submit_action'}->{'value'}; +} else { + # param('id') is not defined when changing multiple bugs + $action = 'nothing'; +} + +if ($action eq 'next_bug') { + my $next_bug; + my $cur = lsearch(\@bug_list, $cgi->param("id")); + if ($cur >= 0 && $cur < $#bug_list) { + $next_bug = $bug_list[$cur + 1]; + } + if ($next_bug) { + if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) { + my $bug = new Bugzilla::Bug($next_bug, $whoid); + ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; - # next.html.tmpl includes edit.html.tmpl, and therefore we - # need $bug defined in $vars. - $vars->{'bug'} = $bug; + $vars->{'bugs'} = [$bug]; + $vars->{'nextbug'} = $bug->bug_id; + + $template->process("bug/show.html.tmpl", $vars) + || ThrowTemplateError($template->error()); + + exit; + } + } +} elsif ($action eq 'same_bug') { + if (Bugzilla->user->can_see_bug($cgi->param('id'))) { + my $bug = new Bugzilla::Bug($cgi->param('id'), $whoid); + ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; - # And we need to determine if Patch Viewer is installed, for - # Diff link (NB: Duplicate code with show_bug.cgi.) - eval { - require PatchReader; - $vars->{'patchviewerinstalled'} = 1; - }; + $vars->{'bugs'} = [$bug]; - $template->process("bug/process/next.html.tmpl", $vars) + $template->process("bug/show.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit; } +} elsif ($action ne 'nothing') { + ThrowCodeError("invalid_post_bug_submit_action"); } # End the response page. diff --git a/productmenu.js b/productmenu.js index e633ab327..90bb18195 100644 --- a/productmenu.js +++ b/productmenu.js @@ -181,6 +181,12 @@ function selectProduct( f , productfield, componentfield, blank ) { return; } + // Do nothing if no products are defined (this avoids the + // "a has no properties" error from merge_arrays function) + if (f[productfield].length == blank ? 1 : 0) { + return; + } + // if this is the first load and nothing is selected, no need to // merge and sort all components; perl gives it to us sorted. @@ -219,7 +225,8 @@ function selectProduct( f , productfield, componentfield, blank ) { for ( var i = blank ? 1 : 0 ; i < f[productfield].length ; i++ ) { sel[sel.length] = f[productfield].options[i].value; } - single = 0; + // If there is only one product, then only one product can be selected + single = ( sel.length == 1 ); } else { for ( i = blank ? 1 : 0 ; i < f[productfield].length ; i++ ) { diff --git a/query.cgi b/query.cgi index f05a8b567..efd407ebc 100755 --- a/query.cgi +++ b/query.cgi @@ -28,14 +28,14 @@ use strict; use lib "."; -require "CGI.pl"; +require "globals.pl"; use Bugzilla::Constants; use Bugzilla::Search; use Bugzilla::User; +use Bugzilla::Util; use vars qw( - @CheckOptionValues @legal_resolution @legal_bug_status @legal_components @@ -50,12 +50,13 @@ use vars qw( @log_columns %versions %components - $template - $vars ); my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; +my $buffer = $cgi->query_string(); if ($cgi->param("GoAheadAndLogIn")) { # We got here from a login page, probably from relogin.cgi. We better @@ -65,7 +66,8 @@ if ($cgi->param("GoAheadAndLogIn")) { Bugzilla->login(); } -my $userid = Bugzilla->user->id; +my $user = Bugzilla->user; +my $userid = $user->id; # Backwards compatibility hack -- if there are any of the old QUERY_* # cookies around, and we are logged in, then move them into the database @@ -111,7 +113,7 @@ if ($cgi->param('nukedefaultquery')) { " WHERE userid = ? AND name = ?", undef, ($userid, DEFAULT_QUERY_NAME)); } - $::buffer = ""; + $buffer = ""; } my $userdefaultquery; @@ -165,7 +167,7 @@ sub PrefillForm { my $name = $el[0]; my $value; if ($#el > 0) { - $value = url_decode($el[1]); + $value = Bugzilla::Util::url_decode($el[1]); } else { $value = ""; } @@ -199,7 +201,7 @@ sub PrefillForm { } -if (!PrefillForm($::buffer)) { +if (!PrefillForm($buffer)) { # Ah-hah, there was no form stuff specified. Do it again with the # default query. if ($userdefaultquery) { @@ -218,23 +220,26 @@ GetVersionTable(); # if using groups for entry, then we don't want people to see products they # don't have access to. Remove them from the list. -my @products = (); +my @selectable_product_objects = @{$user->get_selectable_products}; + my %component_set; my %version_set; my %milestone_set; -foreach my $p (GetSelectableProducts()) { +# extract product names +my @products = map { $_->name } @selectable_product_objects; + +foreach my $prod_name (@products) { # We build up boolean hashes in the "-set" hashes for each of these things # before making a list because there may be duplicates names across products. - push @products, $p; - if ($::components{$p}) { - foreach my $c (@{$::components{$p}}) { + if ($::components{$prod_name}) { + foreach my $c (@{$::components{$prod_name}}) { $component_set{$c} = 1; } } - foreach my $v (@{$::versions{$p}}) { + foreach my $v (@{$::versions{$prod_name}}) { $version_set{$v} = 1; } - foreach my $m (@{$::target_milestone{$p}}) { + foreach my $m (@{$::target_milestone{$prod_name}}) { $milestone_set{$m} = 1; } } @@ -293,18 +298,7 @@ $vars->{'product'} = \@products; # Create data structures representing each classification if (Param('useclassification')) { - my @classifications = (); - - foreach my $c (GetSelectableClassifications()) { - # Create hash to hold attributes for each classification. - my %classification = ( - 'name' => $c, - 'products' => [ GetSelectableProducts(0,$c) ] - ); - # Assign hash back to classification array. - push @classifications, \%classification; - } - $vars->{'classification'} = \@classifications; + $vars->{'classification'} = $user->get_selectable_classifications; } # We use 'component_' because 'component' is a Template Toolkit reserved word. @@ -382,9 +376,13 @@ for (my $chart = 0; $cgi->param("field$chart-0-0"); $chart++) { for (my $row = 0; $cgi->param("field$chart-$row-0"); $row++) { my @cols; for (my $col = 0; $cgi->param("field$chart-$row-$col"); $col++) { + my $value = $cgi->param("value$chart-$row-$col"); + if (!defined($value)) { + $value = ''; + } push(@cols, { field => $cgi->param("field$chart-$row-$col"), type => $cgi->param("type$chart-$row-$col") || 'noop', - value => $cgi->param("value$chart-$row-$col") || '' }); + value => $value }); } push(@rows, \@cols); } @@ -397,7 +395,7 @@ $default{'charts'} = \@charts; if ($userid) { $vars->{'namedqueries'} = $dbh->selectcol_arrayref( "SELECT name FROM namedqueries " . - "WHERE userid = ? AND name != ?" . + "WHERE userid = ? AND name != ? " . "ORDER BY name", undef, ($userid, DEFAULT_QUERY_NAME)); } @@ -432,7 +430,7 @@ $vars->{'default'} = \%default; $vars->{'format'} = $cgi->param('format'); $vars->{'query_format'} = $cgi->param('query_format'); -# Set default page to "specific" if none proviced +# Set default page to "specific" if none provided if (!($cgi->param('query_format') || $cgi->param('format'))) { if (defined $cgi->cookie('DEFAULTFORMAT')) { $vars->{'format'} = $cgi->cookie('DEFAULTFORMAT'); @@ -453,9 +451,9 @@ if (defined($vars->{'format'}) && IsValidQueryType($vars->{'format'})) { # If we submit back to ourselves (for e.g. boolean charts), we need to # preserve format information; hence query_format taking priority over # format. -my $format = GetFormat("search/search", - $vars->{'query_format'} || $vars->{'format'}, - scalar $cgi->param('ctype')); +my $format = $template->get_format("search/search", + $vars->{'query_format'} || $vars->{'format'}, + scalar $cgi->param('ctype')); print $cgi->header($format->{'ctype'}); diff --git a/quicksearch.html b/quicksearch.html deleted file mode 100644 index 1b1ecb1a6..000000000 --- a/quicksearch.html +++ /dev/null @@ -1,151 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>Bugzilla QuickSearch</title> -</head> - -<body bgcolor="#ffffff"> - -<p> -<small>If you are already familiar with the original -<a href="query.cgi">Bugzilla Query Form</a>, -you may prefer <a href="quicksearchhack.html">this form</a>. -</small> -</p> - -<script src="localconfig.js" type="text/javascript"></script> -<script src="quicksearch.js" type="text/javascript"></script> - -<h1>Bugzilla QuickSearch</h1> - -<p> -Type in one or more words (or word fragments) to search for: -</p> - -<form name="f" action="show_bug.cgi" method="get" - onsubmit="QuickSearch(f.id.value); return false;"> - <table> - <tr> - <td><input type="text" size="40" name="id"></td> - <td align="left"><input type="submit" value="Search"></td> - <!-- <td><a href="javascript:QuickSearch_Help();">[Help]</a></td> --> - </tr> - </table> -</form> - -<script type="text/javascript"> -<!-- -document.forms['f'].id.focus(); -//--> -</script> - -<h2>Getting Started</h2> - -<ul> -<li> This is <b>case-insensitive</b> search. - <ul> - <li> <tt>table</tt> , <tt>Table</tt> - and <tt>TABLE</tt> are all the same.</li> - </ul> -</li> -<li> This is <b>all words as substrings</b> search.<br> - Therefore you should <b>use stems</b> to get better results: - <ul> - <li> Use <tt>localiz</tt> instead of <tt>localize</tt> or - <tt>localization</tt>.</li> - <li> Use <tt>bookmark</tt> instead of <tt>bookmarks</tt> or - <tt>bookmarking</tt>.</li> - </ul> -</li> -</ul> - -<h2><a name="features">Features</a></h2> - -<ul> -<li> Boolean operations: ``<tt>-foo</tt>''(NOT), ``<tt>foo bar</tt>''(AND), - ``<tt>foo|bar</tt>''(OR). - <ul> - <li> <b>NOT</b>: Use <tt><b>-</b><i>foo</i></tt> to exclude bugs - with <tt><i>foo</i></tt> in the summary.</li> - <li> <b>AND</b>: Space-separated words are treated as a conjunction.</li> - <li> <b>OR</b>: Within a word, "|"-separated parts denote alternatives. </li> - <li> Besides "|", a comma can be used to separate alternatives.</li> - <li> OR has higher precedence than AND; AND is the top level operation</li> - </ul> - <i>Example:</i> <tt>url,location bar,field -focus</tt> - means - (<tt>url</tt> OR <tt>location</tt>) AND (<tt>bar</tt> OR <tt>field</tt>) AND (NOT <tt>focus</tt>) -<p> -</li> -<li>Use <tt>+foo</tt> to search for bugs where the <b>summary</b> contains <tt>foo</tt> as a <b>substring</b>.<br> - Use <tt>#foo</tt> to search for bugs where the <b>summary</b> contains the <b>word</b> <tt>foo</tt> - <ul> - <li> <tt>+brow</tt> does not find all bugs in the <tt>Browser</tt> product</li> - <li> <tt>#title</tt> does not find bugs bugs with <tt>titlebar</tt> or <tt>titled</tt> </li> - </ul> - Phrases with special chars (space, comma, +, -, #, ...) can be <b>quoted</b>: - <ul> - <li> <tt>"lock icon"</tt> </li> - </ul> -<p> -</li> -<li> <b>Open vs. Resolved Bugs</b>:<br> - By default, only open (i.e. unresolved) bugs are shown. - Use <tt>+DUP</tt> as first word in your query - to include duplicate bugs in your search, - <tt>FIXED</tt> to search for fixed bugs only, - or <tt>ALL</tt> to search all bugs, - regardless of status or resolution. Searching for duplicates is - recommended if you can't find an open bug directly. - <ul> - <li> <tt>+DUP,FIXED table border</tt> </li> - <li> <tt>ALL mouse wheel</tt> </li> - </ul> -<p></li> -<li> <b>Focus the Search with Products & Components</b>:<br> - To search for bugs in product "Foo Bar" only, add - <tt>:foo</tt> or <tt>:bar</tt> or both - to your query. - You can do this with any substring of a - <a href="describecomponents.cgi">product or component</a> - to focus the search. -</li> -</ul> - -<h2>More Tips</h2> - -<ul> -<li> You can also use this tool to <b>lookup</b> a bug by its number. - <ul> - <li> <tt>12345</tt> </li> - </ul> -</li> -<li> A comma-separated list of bug numbers gives you a list of these bugs. - <ul> - <li> <tt>12345,23456,34567</tt> </li> - </ul> -</li> -</ul> - -<p> -By default, the following fields are searched: Summary, Keywords, Product, -Component, Status Whiteboard. If a word looks like a part of a URL, that field -is included in the search, too. -</p> -<!-- -<small>For further details, see -<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=61561">Bug 61561</a> and -<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=69793">Bug 69793</a>. -</small> - --> -<hr> - -<p> -Use the powerful -<a href="query.cgi">Bugzilla Query Form</a> -for advanced queries. -</p> - -</body> -</html> diff --git a/quicksearch.js b/quicksearch.js deleted file mode 100644 index 29ab6eb6b..000000000 --- a/quicksearch.js +++ /dev/null @@ -1,740 +0,0 @@ -// -// This is the main JS file for QuickSearch. -// -// Derived from: -// -// * C. Begle's SimpleSearch tool: -// http://www.mozilla.org/quality/help/simplesearch.html -// http://www.mozilla.org/quality/help/bugreport.js -// -// * Jesse Ruderman's bugzilla search page: -// http://www.cs.hmc.edu/~jruderma/s/bugz.html -// -// Created by -// Andreas Franke <afranke@mathweb.org> -// -// Contributors: -// Stephen Lee <slee@uk.bnsmc.com> - - -// Use no_result variable to avoid problems with "undefined" on some browsers - -var no_result="---"; - -// do_unshift(l, s) is equivalent to l.unshift(s), but some browsers do not -// support the built-in function. - -function do_unshift(l, s) { - l.length = l.length + 1; - for (var i=l.length-1; i>0; i--) { - l[i] = l[i-1]; - } - l[0] = s; - return l.length; -} - -// do_shift(l) is equivalent to l.shift(s), but some browsers do not -// support the built-in function. - -function do_shift(l) { - var l0=l[0]; - for (var i=0; i<l.length-1; i++) { - l[i] = l[i+1]; - } - l.length = l.length - 1; - return l0; -} - -function go_to (url) { - // XXX specifying "sidebar" here indicates you want to use a - // function to do the actual loading instead of using the specified - // url directly. bug 236025 covers clarifying this. Pages that specify - // sidebar=1 *must* specify a load_absolute_url function meanwhile. - if ( typeof sidebar != "undefined" && sidebar == 1 ) { - load_absolute_url(url); - } else { - document.location.href = url; - } -} - -function map(l, f) { - var l1 = new Array(); - for (var i=0; i<l.length; i++) { - l1[i] = f(l[i]); - } - return l1; -} - -function isPrefix(s1, s2) { - return (s1.length <= s2.length) && - (s1 == s2.substring(0,s1.length)) -} - -function member(s, l) { - for (var i=0; i<l.length; i++) { - if (l[i] == s) return true; - } - return false; -} - -function add(s, l) { - if (! member(s, l)) { - do_unshift(l,s); - } -} - -function addAll(l1, l2) { - for (var i=0; i<l1.length; i++) { - add(l1[i],l2); - } -} - -function isSubset (l1, l2) { - return (l1.length == 0) - || (member(l1[0],l2) && subset(l1.slice(1),l2)); -} - -// fields - -var f1 = new Array(); -var f2 = new Array(); - -function add_mapping(from,to) { - f1[f1.length] = from; - f2[f2.length] = to; -} - -// Status, Resolution, Platform, OS, Priority, Severity -add_mapping("status", "bug_status"); -add_mapping("resolution", "resolution"); // no change -add_mapping("platform", "rep_platform"); -add_mapping("os", "op_sys"); -add_mapping("opsys", "op_sys"); -add_mapping("priority", "priority"); // no change -add_mapping("pri", "priority"); -add_mapping("severity", "bug_severity"); -add_mapping("sev", "bug_severity"); -// People: AssignedTo, Reporter, QA Contact, CC, Added comment (?) -add_mapping("owner", "assigned_to"); -add_mapping("assignee", "assigned_to"); -add_mapping("assignedto", "assigned_to"); -add_mapping("reporter", "reporter"); // no change -add_mapping("rep", "reporter"); -add_mapping("qa", "qa_contact"); -add_mapping("qacontact", "qa_contact"); -add_mapping("cc", "cc"); // no change -// Product, Version, Component, Target Milestone -add_mapping("product", "product"); // no change -add_mapping("prod", "product"); -add_mapping("version", "version"); // no change -add_mapping("ver", "version"); -add_mapping("component", "component"); // no change -add_mapping("comp", "component"); -add_mapping("milestone", "target_milestone"); -add_mapping("target", "target_milestone"); -add_mapping("targetmilestone", "target_milestone"); -// Summary, Description, URL, Status whiteboard, Keywords -add_mapping("summary", "short_desc"); -add_mapping("shortdesc", "short_desc"); -add_mapping("desc", "longdesc"); -add_mapping("description", "longdesc"); -//add_mapping("comment", "longdesc"); // ??? - // reserve "comment" for "added comment" email search? -add_mapping("longdesc", "longdesc"); -add_mapping("url", "bug_file_loc"); -add_mapping("whiteboard", "status_whiteboard"); -add_mapping("statuswhiteboard", "status_whiteboard"); -add_mapping("sw", "status_whiteboard"); -add_mapping("keywords", "keywords"); // no change -add_mapping("kw", "keywords"); -// Attachments -add_mapping("attachment", "attachments.description"); -add_mapping("attachmentdesc", "attachments.description"); -add_mapping("attachdesc", "attachments.description"); -add_mapping("attachmentdata", "attachments.thedata"); -add_mapping("attachdata", "attachments.thedata"); -add_mapping("attachmentmimetype", "attachments.mimetype"); -add_mapping("attachmimetype", "attachments.mimetype"); - -// disabled because of bug 30823: -// "BugsThisDependsOn" --> "dependson" -// "OtherBugsDependingOnThis"--> "blocked" -//add_mapping("dependson", "dependson"); -//add_mapping("blocked", "blocked"); - -// Substring search doesn't make much sense for the following fields: -// "Attachment is patch" --> "attachments.ispatch" -// "Last changed date" --> "delta_ts" -// "Days since bug changed" --> "(to_days(now()) - to_days(bugs.delta_ts))" -//"groupset" -//"everconfirmed" -//"bug","bugid","bugno" --> "bug_id" -// "votes" --> "votes" -// "votes>5", "votes>=5", "votes=>5" works now, see below -// "votes:5" is interpreted as "votes>=5" - -function findIndex(array,value) { - for (var i=0; i<array.length; i++) - if (array[i] == value) return i; - return -1; -} - -function mapField(fieldname) { - var i = findIndex(f1,fieldname); - if (i >= 0) return f2[i]; - return no_result; -} - -// `keywords' is defined externally - -function is_keyword(s) { - return member(s, keywords); -} - -// `platforms' is defined externally - -function is_platform(str) { - return member (str.toLowerCase(),platforms); -} - -// `severities' is defined externally - -function is_severity(str) { - return member(str.toLowerCase(),severities); -} - -// `product_exceptions' is defined externally - -function match_product(str) { - var s = str.toLowerCase(); - return (s.length > 2) && (! member(s,product_exceptions)); -} - -// `component_exceptions are defined externally - -function match_component(str) { - var s = str.toLowerCase(); - return (s.length > 2) && (! member(s,component_exceptions)); -} - -var status_and_resolution = ""; // for pretty debug output only; these vars -var charts = ""; // always hold the data from the last query - -// derived from http://www.mozilla.org/quality/help/bugreport.js - -function make_chart(expr, field, type, value) { - charts += "<tr>" + - "<td><tt>" + expr + "</tt></td>" + - "<td><tt>" + field + "</tt></td>" + - "<td><tt>" + type + "</tt></td>" + - "<td><tt>" + value + "</tt></td>" + - "</tr>"; - return "&field" + expr + "=" + field + - "&type" + expr + "=" + type + - "&value" + expr + "=" + escape(value).replace(/[+]/g,"%2B"); -} - -// returns true if at least one of comparelist had the prefix, false otherwise -function addPrefixMatches(prefix, comparelist, resultlist) { - var foundMatch = false; - for (var i=0; i<comparelist.length; i++) { - if (isPrefix(prefix,comparelist[i])) { - foundMatch = true; - add(comparelist[i],resultlist); - } - } - return foundMatch; -} - -function prefixesNotFoundError(prefixes,statusValues,resolutionValues) { - var txt; - if (prefixes.length == 1) { - txt = "is not a prefix "; - } else { - txt = "are not prefixes "; - } - alert(prefixes + "\n" + txt + - "of one of these status or resolution values:\n" + - statusValues + "\n" + resolutionValues + "\n"); -} - -function make_query_URL(url, input, searchLong) { - - status_and_resolution = ""; - charts = ""; - - // declare all variables used in this function - - var searchURL = url; // bugzilla + "buglist.cgi" (or "query.cgi") - var abort = false; // global flag, checked upon return - - var i,j,k,l; // index counters used in 'for' loops - var parts,input2; // escape "quoted" parts of input - - var word; // array of words - // (space-separated parts of input2) - var alternative; // array of parts of an element of 'word' - // (separated by '|', sometimes by comma) - var comma_separated_words; // array of parts of an element of 'alternative' - var w; // current element of one of these arrays: - // word, alternative, comma_separated_words - - var w0; // first element of 'word' - var prefixes; // comma-separated parts of w0 - // (prefixes of status/resolution values) - - var expr; // used for 'priority' support - var n,separator; // used for 'votes' support - - var colon_separated_parts, fields,values,field; - // used for generic fields:values notation - - var chart,and,or; // counters used in add_chart - var negation; // boolean flag used in add_chart - - // `statuses_open' and `statuses_resolved' are defined externally - var statusOpen = statuses_open; - var statusResolved = statuses_resolved; - var statusAll = statusOpen.concat(statusResolved); - - // `resolutions' is defined externally - var bug_status = statusOpen.slice().reverse(); //reverse is just cosmetic - var resolution = new Array(); - - // escape everything between quotes: "foo bar" --> "foo%20bar" - parts = input.split('"'); - if ((parts.length % 2) != 1) { - alert('Unterminated quote'); - abort = true; - return no_result; - } - for (i=1; i<parts.length; i+=2) { - parts[i] = escape(parts[i]); - } - input2 = parts.join('"'); - - // abort if there are still brackets - if (input2.match(/[(]|[\)]/)) { - alert('Brackets (...) are not supported.\n' + - 'Use quotes "..." for values that contain special characters.'); - abort = true; - return no_result; - } - - // translate " AND "," OR "," NOT " to space,comma,dash - input2 = input2.replace(/[\s]+AND[\s]+/g," "); - input2 = input2.replace(/[\s]+OR[\s]+/g,"|"); - input2 = input2.replace(/[\s]+NOT[\s]+/g," -"); - - // now split into words at space positions - word = input2.split(/[\s]+/); - - // determine bug_status and resolution - // the first word may contain relevant info - - // This function matches the given prefixes against the given statuses and - // resolutions. Matched statuses are added to bug_status, matched - // resolutions are added to resolution. Returns true if and only if - // some matches were found for at least one of the given prefixes. - function matchPrefixes(prefixes,statuses,resolutions) { - var failedPrefixes = new Array(); - var foundMatch = false; - for (var j=0; j<prefixes.length; j++) { - var ok1 = addPrefixMatches(prefixes[j],statuses,bug_status); - var ok2 = addPrefixMatches(prefixes[j],resolutions,resolution); - if ((! ok1) && (! ok2)) { - add(prefixes[j],failedPrefixes); - } else { - foundMatch = true; - } - } - //report an error if some (but not all) prefixes didn't match anything - if (foundMatch && (failedPrefixes.length > 0)) { - prefixesNotFoundError(failedPrefixes,statuses,resolutions); - abort = true; - } - return foundMatch; - } - - if (word[0] == "ALL") { - // special case: search for bugs regardless of status - addAll(statusResolved,bug_status); - do_shift(word); - } else if (word[0] == "OPEN") { - // special case: search for open bugs only - do_shift(word); - } else if (word[0].match("^[+][A-Z]+(,[A-Z]+)*$")) { - // e.g. +DUP,FIX - w0 = do_shift(word); - prefixes = w0.substring(1).split(","); - if (! matchPrefixes(prefixes,statusResolved,resolutions)) { - do_unshift(word,w0); - } - } else if (word[0].match("^[A-Z]+(,[A-Z]+)*$")) { - // e.g. NEW,ASSI,REOP,FIX - bug_status = new Array(); // reset - w0 = do_shift(word); - prefixes = w0.split(","); - if (! matchPrefixes(prefixes,statusAll,resolutions)) { - do_unshift(word,w0); - bug_status = statusOpen.reverse(); //reset to default bug_status - } - } else { - // default case: - // search for unresolved bugs only - // uncomment this to include duplicate bugs in the search - // add("DUPLICATE",resolution); - } - if (resolution.length > 0) { - resolution = resolution.reverse(); - do_unshift(resolution,"---"); - addAll(statusResolved,bug_status); - } - bug_status = bug_status.reverse(); - bug_status = map(bug_status,escape); - searchURL += "?bug_status=" + bug_status.join("&bug_status="); - status_and_resolution += 'Status: <tt>'+bug_status+'</tt>'; - - if (resolution.length > 0) { - resolution = map(resolution,escape); - searchURL += "&resolution=" + resolution.join("&resolution="); - status_and_resolution += '<br>'+'Resolution: <tt>'+resolution+'</tt>'; - } - - // end of bug_status & resolution stuff - - chart = 0; - and = 0; - or = 0; - - negation = false; - - function negate_comparison_type(type) { - switch(type) { - case "substring": return "notsubstring"; - case "anywords": return "nowords"; - case "regexp": return "notregexp"; - default: - // e.g. "greaterthan" - alert("Can't negate comparison type: `" + type + "'"); - abort = true; - return "dummy"; - } - } - - function add_chart(field,type,value) { - // undo escaping for value: '"foo%20bar"' --> 'foo bar' - var parts = value.split('"'); - if ((parts.length % 2) != 1) { - alert('Internal error: unescaping failure'); - abort = true; - } - for (var i=1; i<parts.length; i+=2) { - parts[i] = unescape(parts[i]); - } - var value2 = parts.join(''); - - // negate type if negation is set - var type2 = type; - if (negation) { - type2 = negate_comparison_type(type2); - } - searchURL += make_chart(chart+"-"+and+"-"+or,field,type2,value2); - or++; - if (negation) { - and++; - or=0; - } - } - - for (i=0; i<word.length; i++, chart++) { - - w = word[i]; - - negation = false; - if (w.charAt(0) == "-") { - negation = true; - w = w.substring(1); - } - - switch (w.charAt(0)) { - case "+": - alternative = w.substring(1).split(/[|,]/); - for (j=0; j<alternative.length; j++) - add_chart("short_desc","substring",alternative[j]); - break; - case "#": - alternative = w.substring(1).replace(/[|,]/g," "); - add_chart("short_desc","anywords",alternative); - if (searchLong) - add_chart("longdesc","anywords",alternative); - break; - case ":": - alternative = w.substring(1).split(","); - for (j=0; j<alternative.length; j++) { - add_chart("product","substring",alternative[j]); - add_chart("component","substring",alternative[j]); - } - break; - case "@": - alternative = w.substring(1).split(","); - for (j=0; j<alternative.length; j++) - add_chart("assigned_to","substring",alternative[j]); - break; - case "[": - add_chart("short_desc","substring",w); - add_chart("status_whiteboard","substring",w); - break; - case "!": - add_chart("keywords","anywords",w.substring(1)); - break; - default: - alternative=w.split("|"); - for (j=0; j<alternative.length; j++) { - - w=alternative[j]; - - // votes:xx ("at least xx votes") - if (w.match("^votes[:][0-9]+$")) { - n = w.split(/[:]/)[1]; - add_chart("votes","greaterthan",String(n-1)); - continue; - } - // generic field1,field2,field3:value1,value2 notation - if (w.match("^[^:]+[:][^:\/][^:]*$")) { - colon_separated_parts = w.split(":"); - fields = colon_separated_parts[0].split(/[,]+/); - values = colon_separated_parts[1].split(/[,]+/); - for (k=0; k<fields.length; k++) { - field = mapField(fields[k]); - if (field == no_result) { - alert("`"+fields[k]+"'"+ - " is not a valid field name."); - abort = true; - return no_result; - } else { - for (l=0; l<values.length; l++) { - add_chart(field,"substring",values[l]); - } - } - } - continue; - } - comma_separated_words=w.split(/[,]+/); - for (k=0; k<comma_separated_words.length; k++) { - w=comma_separated_words[k]; - - // platform - if (is_platform(w)) { - add_chart("rep_platform","substring",w); - continue; - } - // priority - if (w.match("^[pP][1-5](,[pP]?[1-5])*$")) { - expr = "["+w.replace(/[p,]/g,"")+"]"; - add_chart("priority","regexp",expr); - continue; - } - if (w.match("^[pP][1-5]-[1-5]$")) { - expr = "["+w.substring(1)+"]"; - add_chart("priority","regexp",expr); - continue; - } - // severity - if (is_severity(w)) { - add_chart("bug_severity","substring",w); - continue; - } - // votes>xx - if (w.match("^votes>[0-9]+$")) { - n = w.split(">")[1]; - add_chart("votes","greaterthan",n); - continue; - } - // votes>=xx, votes=>xx - if (w.match("^votes(>=|=>)[0-9]+$")) { - separator = w.match("^votes(>=|=>)[0-9]+$")[1]; - n = w.split(separator)[1]; - add_chart("votes","greaterthan",String(n-1)); - continue; - } - // really default case - if (match_product(w)) { - add_chart("product","substring",w); - } - if (match_component(w)) { - add_chart("component","substring",w); - } - if (is_keyword(w)) { - add_chart("keywords","substring",w); - if (w.length > 2) { - add_chart("short_desc","substring",w); - add_chart("status_whiteboard","substring",w); - } - } else { - add_chart("short_desc","substring",w); - add_chart("status_whiteboard","substring",w); - } - if (searchLong) - add_chart("longdesc","substring",w); - - // URL field (for IP addrs, host.names, scheme://urls) - if (w.match(/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/) - || w.match(/^[A-Za-z]+([.][A-Za-z]+)+/) - || w.match(/[:][\/][\/]/) - || w.match(/localhost/) - || w.match(/mailto[:]?/) - // || w.match(/[A-Za-z]+[:][0-9]+/) //host:port - ) - add_chart("bug_file_loc","substring",w); - } - } - } - and = 0; - or = 0; - } - - //searchURL += "&cmdtype=doit"; - - if (abort == false) { - return searchURL; - } else { - return no_result; - } -} - -function unique_id () { - return (new Date()).getTime(); -} - -function ShowURL(mode,input) { - var searchURL = make_query_URL(bugzilla+"buglist.cgi", input, false); - if (searchURL != no_result) { - var pieces = searchURL.replace(/[\?]/g,"\n?").replace(/[\&]/g,"\n&"); - if (mode == "alert") { - alert(pieces); - } else { - var table = "<table border=1>" + - "<thead>" + - "<tr>" + - "<th>Chart-And-Or</th>" + - "<th>Field</th>" + - "<th>Type</th>" + - "<th>Value</th>" + - "</tr>" + - "</thead>" + - "<tbody>" + charts + "</tbody>" + - "</table>"; - var html = '<html>' + - '<head>' + - '<title>' + input + '</title>' + - '</head>' + - '<body>' + - '<a href="' + searchURL + '">' + - 'Submit Query' + - '</a>' + - '<p>' + status_and_resolution + - '<p>' + table + - '<pre>' + - pieces.replace(/[\n]/g,"<br>") + - '</pre>' + - '</body>' + - '</html>'; - var w = window.open("","preview_"+unique_id()); - w.document.write(html); - w.document.close(); - } - } -} - -// -// new interface: -// searchLong is a boolean now (not a checkbox/radiobutton) -// -function Search(url, input, searchLong) { - var inputstring = new String(input); - var word = inputstring.split(/[\s]+/); - - // Check for empty input - if ( word.length == 1 && word[0] == "" ) - return; - - // Check for potential Bugzilla-busting intensive queries - if ((searchLong!=false) && word.length > 4) { - var message = "Searching Descriptions for more than four words " + - "will take a very long time indeed. Please choose " + - "no more than four keywords for your query."; - alert(message); - return; - } - var searchURL = make_query_URL(url, inputstring, searchLong); - if (searchURL != no_result) { - go_to(searchURL); - //window.open(searchURL, "other" ); - } else { - return; - } -} - -// -// original interface, untested -// -//function SearchForBugs (input, searchRadio) { -// if (searchRadio[0].checked) { -// return Search(bugzilla + "buglist.cgi", input, false); -// } else { -// return Search(bugzilla + "buglist.cgi", input, true); -// } -//} - -// derived from http://www.cs.hmc.edu/~jruderma/s/bugz.html - -// QuickSearch combines lookup-by-bug-number and search -// in a single textbox. -// -// type nothing: -// --> go to bugzilla front page -// type a number: -// --> go to that bug number -// type several numbers, separated by commas: -// --> go to a buglist of just those bug numbers -// type anything else: -// --> search summary, product, component, keywords, status whiteboard -// (and URL if it's an IP address, a host.name, or an absolute://URL) - -function QuickSearch (input) -{ - //remove leading and trailing whitespace - input = input.replace(/^[\s]+/,"").replace(/[\s]+$/,""); - - if (input == "") - { - //once this _is_ on http://bugzilla.mozilla.org, it should just return; - go_to(bugzilla); - } - else if (input.match(/^[0-9, ]*$/)) - { - if (input.indexOf(",") == -1) { - // only _one_ bug number --> show_bug - go_to(bugzilla+"show_bug.cgi?id="+escape(input)); - } else { - // comma-separated bug numbers --> buglist - go_to(bugzilla+"buglist.cgi?bug_id="+escape(input) - + "&bugidtype=include&order=bugs.bug_id"); - } - } - else - { - Search(bugzilla+"buglist.cgi",input,false); - } - return; -} - -function LoadQuery(input) { - //remove leading and trailing whitespace - input = input.replace(/^[\s]+/,"").replace(/[\s]+$/,""); - - Search(bugzilla+"query.cgi",input,false); - return; -} - diff --git a/quicksearchhack.html b/quicksearchhack.html deleted file mode 100644 index d514082f8..000000000 --- a/quicksearchhack.html +++ /dev/null @@ -1,357 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>Bugzilla QuickSearch (for Hackers)</title> -</head> - -<body bgcolor="#ffffff"> - -<script src="localconfig.js" type="text/javascript"></script> -<script src="quicksearch.js" type="text/javascript"></script> - -<h1>Bugzilla QuickSearch (for Hackers)</h1> - -<p> -Type in one or more words (or word fragments) to search for: -</p> - -<form name="f" action="show_bug.cgi" method="get" - onsubmit="QuickSearch(f.id.value); return false;"> - <table> - <tr> - <td><input type="text" size="40" name="id"></td> - <td align="left"><input type="submit" name="run" value="Search"></td> - <td align="left"><input type="button" name="load" value="Load Query" - onclick="LoadQuery(f.id.value);"> - </td> - </tr> - </table> -</form> - -<script type="text/javascript"> -<!-- -document.forms['f'].id.focus(); -//--> -</script> - -<p> -This is a case-insensitive ``all words as substrings'' search; -words are separated by spaces. -By default, the following fields are relevant: Summary, Keywords, -Product, Component, Status Whiteboard. If a word looks like a part of a -URL, that field is included in the search, too. -</p> -<p> -The generic format for a ``word'' is - <tt>field1,...,fieldN:value1,...,valueM</tt> . -A bug qualifies if at least one of the values occurs as a substring in -at least one of the fields. -For example, <tt>assignee,reporter,qa:ibm,sun</tt> -will give you bugs where the assignee, reporter, or qa contact -has an email address that contains - <tt>ibm</tt> or <tt>sun</tt> . -If only <tt>value1,...,valueM</tt> is given, -the prefix (roughly) defaults to <tt>summary,keywords,product,component,statuswhiteboard:</tt> as noted above. -You can use <tt>-<i>word</i></tt> to express the logical negation -of <tt><i>word</i></tt>. -</p> -<p> -Here is a complete listing of available fields (the Shortcut column is just -for access speed): -</p> - -<table border="1"> -<thead> -<tr> - <td><b>Searched by default</b></td> - <td><b>Shortcut</b></td> - <td><b>Field Name</b></td> - <td><b>Aliases</b></td> - <td><b>Description</b></td> -</tr> -</thead> - -<!-- Status, Resolution, Platform, OS, Priority, Severity --> - -<tr> - <td> </td> - <td rowspan="2"><tt>UNCO,NEW,...,CLOS,<br>FIX,DUP,...<i>(as first word)</i></tt></td> - <td><tt>status</tt></td> - <td> </td> - <td><a href="page.cgi?id=fields.html#status">Status</a> - <i>("bug_status")</i> - </td> -</tr> -<tr> - <td> </td> - <td><tt>resolution</tt></td> - <td> </td> - <td><a href="page.cgi?id=fields.html#resolution">Resolution</a></td> -</tr> -<tr> - <td> </td> - <td><i>as-is</i></td> - <td><tt>platform</tt></td> - <td> </td> - <td><a href="page.cgi?id=fields.html#rep_platform">Platform</a> <i>("rep_platform")</i></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>os</tt></td> - <td><tt>opsys</tt></td> - <td><a href="page.cgi?id=fields.html#op_sys">OS</a> <i>("op_sys")</i></td> -</tr> -<tr> - <td> </td> - <td><tt>p1,p2</tt> <i>or</i> <tt>p1-2</tt></td> - <td><tt>priority</tt></td> - <td><tt>pri</tt></td> - <td><a href="page.cgi?id=fields.html#priority">Priority</a></td> -</tr> -<tr> - <td> </td> - <td><tt>blo,cri,...,enh</tt></td> - <td><tt>severity</tt></td> - <td><tt>sev</tt></td> - <td><a href="page.cgi?id=fields.html#bug_severity">Severity</a> <i>("bug_severity")</i></td> -</tr> - -<!-- People: AssignedTo, Reporter, QA Contact, CC, Added comment --> -<!-- Added comment is missing!!!! --> - -<tr> - <td> </td> - <td><b>@</b><i>assignee</i></td> - <td><tt>assignedto</tt></td> - <td><tt>assignee, owner</tt></td> - <td><a href="page.cgi?id=fields.html#assigned_to">Assignee</a> <i>("assigned_to")</i></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>reporter</tt></td> - <td><tt>rep</tt></td> - <td>Reporter (email)</td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>qa</tt></td> - <td><tt>qacontact</tt></td> - <td>QA Contact (email) <i>("qa_contact")</i></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>cc</tt></td> - <td> </td> - <td>CC (email)</td> -</tr> - -<!-- Product, Version, Component, Target Milestone --> - -<tr> - <td><i>yes</i></td> - <td rowspan="2"><b>:</b><i>area</i></td> - <td><tt>product</tt></td> - <td><tt>prod</tt></td> - <td>Product (enum)</td> -</tr> -<tr> - <td><i>yes</i></td> - <td><tt>component</tt></td> - <td><tt>comp</tt></td> - <td><a href="describecomponents.cgi">Component</a></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>version</tt></td> - <td><tt>ver</tt></td> - <td>Version (enum)</td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>milestone</tt></td> - <td><tt>target, targetmilestone</tt></td> - <td>Target Milestone <i>("target_milestone")</i></td> -</tr> - -<!-- Summary, Description, URL, Status whiteboard, Keywords --> - -<tr> - <td><i>yes</i></td> - <td> </td> - <td><tt>summary</tt></td> - <td><tt>shortdesc</tt></td> - <td>Bug Summary (short text)<i>("short_desc")</i></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>description</tt></td> - <td><tt>desc, longdesc<!--, comment--></tt></td> - <!-- reserve "comment" for "added comment" email search?! --> - <td>Bug Description / Comments (long text)</td> -</tr> -<tr> - <td><i>depends</i></td> - <td> </td> - <td><tt>url</tt></td> - <td> </td> - <td>URL <i>("bug_file_loc")</i></td> -</tr> -<tr> - <td><i>yes</i></td> - <td> </td> - <td><tt>statuswhiteboard</tt></td> - <td><tt>sw, whiteboard</tt></td> - <td>Status Whiteboard <i>("status_whiteboard")</i></td> -</tr> -<tr> - <td><i>yes</i></td> - <td><b>!</b><i>keyword</i></td> - <td><tt>keywords</tt></td> - <td><tt>kw</tt></td> - <td><a href="describekeywords.cgi">Keywords</a></td> -</tr> - -<!-- Attachments --> - -<tr> - <td> </td> - <td> </td> - <td><tt>attachmentdesc</tt></td> - <td><tt>attachdesc</tt></td> - <td>Attachment Description <i>("attachments.description")</i></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>attachmentdata</tt></td> - <td><tt>attachdata</tt></td> - <td>Attachment Data <i>("attachments.thedata")</i></td> -</tr> -<tr> - <td> </td> - <td> </td> - <td><tt>attachmentmimetype</tt></td> - <td><tt>attachmimetype</tt></td> - <td>Attachment mime-type <i>("attachments.mimetype")</i></td> -</tr> - -</table> - -<p> -Examples for some useful abbreviations: -</p> -<table border="1"> -<thead> -<tr> - <td><b>Syntax</b></td> - <td><b>Semantics and Examples</b></td> -</tr> -</thead> - -<!-- -<tr> - <td><i>STAT</i> <i>(as first word)</i></td> - <td><b>status,resolution:</b><i>STAT</i></td> -</tr> -<tr> - <td></td> - <td></td> -</tr> -<tr> - <td><tt>ALL</tt> <i>(as first word)</i></td> - <td><i>include all resolved bugs in your query</i></td> -</tr> -<tr> - <td><tt>+DUP,FIXED</tt> <i>(as first word)</i></td> - <td><i>include DUPLICATE and FIXED bugs in your search</i></td> -</tr> ---> - -<tr> - <td><b>:</b><i>area</i></td> - <td><b>product,component:</b><i>area</i></td> -</tr> -<!-- -<tr> - <td><tt>:browser</tt></td> - <td><i>bugs in the Browser product</i></td> -</tr> - <td><tt>:mail</tt></td> - <td><i>bugs in the MailNews product</td> -</tr> -<tr> - <td><tt>:xbl</tt></td> - <td><i>bugs in the XBL component</i></td> -</tr> - --> -<tr> - <td><i>sev</i></td> - <td><b>severity:</b><i>sev</i></td> -</tr> -<tr> - <td><tt>blo,cri,maj</tt></td> - <td><i>severe bugs</i></td> -</tr> -<tr> - <td><tt>enh</tt></td> - <td><i>enhancement requests</i></td> -</tr> -<tr> - <td><b>p</b><i>level</i></td> - <td><b>priority:</b><i>level</i></td> -</tr> -<tr> - <td><tt>p1</tt></td> - <td><i>very high-priority bugs</i></td> -</tr> -<tr> - <td><tt>p1-2</tt></td> - <td><i>high-priority bugs</i></td> -</tr> -<tr> - <td><b>@</b><i>assignee</i></td> - <td><b>assignedto:</b><i>assignee</i></td> -</tr> -<!-- -<tr> - <td><tt>@nobody</tt></td> - <td><i>ownerless bugs</i></td> -</tr> -<tr> - <td><tt>@mozilla.org</tt></td> - <td><i>bugs assigned to mozilla.org members</i></td> -</tr> - --> -<tr> - <td><b>!</b><i>keyword</i></td> - <td><b>keywords:</b><i>keyword</i></td> -</tr> -<!-- -<tr> - <td><tt>!crash</tt></td> - <td><i>crasher bugs</i></td> -</tr> -<tr> - <td><tt>!helpwanted</tt></td> - <td><i>bugs waiting for your help</i></td> -</tr> - --> -</table> - -<p> -More information can be found in the -<a href="quicksearch.html#features">"Features"</a> section -on the <a href="quicksearch.html">introductory page</a>. -</p> - -</body> -</html> - diff --git a/quips.cgi b/quips.cgi index d811ee5fe..b2fd482bc 100755 --- a/quips.cgi +++ b/quips.cgi @@ -25,43 +25,41 @@ use strict; -use vars qw( - $userid - $template - $vars -); - use lib qw(.); -require "CGI.pl"; +require "globals.pl"; use Bugzilla::Constants; -Bugzilla->login(LOGIN_REQUIRED); +my $user = Bugzilla->login(LOGIN_REQUIRED); my $cgi = Bugzilla->cgi; +my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; my $action = $cgi->param('action') || ""; if ($action eq "show") { # Read in the entire quip list - SendSQL("SELECT quipid, userid, quip, approved FROM quips"); + my $quipsref = $dbh->selectall_arrayref( + "SELECT quipid, userid, quip, approved FROM quips"); my $quips; my @quipids; - while (MoreSQLData()) { - my ($quipid, $userid, $quip, $approved) = FetchSQLData(); + foreach my $quipref (@$quipsref) { + my ($quipid, $userid, $quip, $approved) = @$quipref; $quips->{$quipid} = {'userid' => $userid, 'quip' => $quip, 'approved' => $approved}; push(@quipids, $quipid); } my $users; + my $sth = $dbh->prepare("SELECT login_name FROM profiles WHERE userid = ?"); foreach my $quipid (@quipids) { my $userid = $quips->{$quipid}{'userid'}; if ($userid && not defined $users->{$userid}) { - SendSQL("SELECT login_name FROM profiles WHERE userid = $userid"); - $users->{$userid} = FetchOneColumn(); + ($users->{$userid}) = $dbh->selectrow_array($sth, undef, $userid); } } $vars->{'quipids'} = \@quipids; @@ -79,20 +77,21 @@ if ($action eq "add") { (Param('quip_list_entry_control') eq "open") || (UserInGroup('admin')) || 0; my $comment = $cgi->param("quip"); $comment || ThrowUserError("need_quip"); + trick_taint($comment); # Used in a placeholder below - SendSQL("INSERT INTO quips (userid, quip, approved) VALUES " . - '(' . $userid . ', ' . SqlQuote($comment) . ', ' . $approved . ')'); + $dbh->do("INSERT INTO quips (userid, quip, approved) VALUES (?, ?, ?)", + undef, ($user->id, $comment, $approved)); $vars->{'added_quip'} = $comment; } if ($action eq 'approve') { # Read in the entire quip list - SendSQL("SELECT quipid, approved FROM quips"); - + my $quipsref = $dbh->selectall_arrayref("SELECT quipid, approved FROM quips"); + my %quips; - while (MoreSQLData()) { - my ($quipid, $approved) = FetchSQLData(); + foreach my $quipref (@$quipsref) { + my ($quipid, $approved) = @$quipref; $quips{$quipid} = $approved; } @@ -105,9 +104,9 @@ if ($action eq 'approve') { else { push(@unapproved, $quipid); } } } - SendSQL("UPDATE quips SET approved = 1 WHERE quipid IN (" . + $dbh->do("UPDATE quips SET approved = 1 WHERE quipid IN (" . join(",", @approved) . ")") if($#approved > -1); - SendSQL("UPDATE quips SET approved = 0 WHERE quipid IN (" . + $dbh->do("UPDATE quips SET approved = 0 WHERE quipid IN (" . join(",", @unapproved) . ")") if($#unapproved > -1); $vars->{ 'approved' } = \@approved; $vars->{ 'unapproved' } = \@unapproved; @@ -122,9 +121,10 @@ if ($action eq "delete") { ThrowCodeError("need_quipid") unless $quipid =~ /(\d+)/; $quipid = $1; - SendSQL("SELECT quip FROM quips WHERE quipid = $quipid"); - $vars->{'deleted_quip'} = FetchSQLData(); - SendSQL("DELETE FROM quips WHERE quipid = $quipid"); + ($vars->{'deleted_quip'}) = $dbh->selectrow_array( + "SELECT quip FROM quips WHERE quipid = ?", + undef, $quipid); + $dbh->do("DELETE FROM quips WHERE quipid = ?", undef, $quipid); } print $cgi->header(); diff --git a/relogin.cgi b/relogin.cgi index 7c1ffe6f8..0d772f9eb 100755 --- a/relogin.cgi +++ b/relogin.cgi @@ -20,29 +20,194 @@ # # Contributor(s): Terry Weissman <terry@mozilla.org> # Gervase Markham <gerv@gerv.net> +# A. Karl Kornel <karl@kornel.name> use strict; - -use vars qw($template $vars); - use lib qw(.); +require "globals.pl"; + +use Bugzilla; +use Bugzilla::BugMail; use Bugzilla::Constants; -require "CGI.pl"; +use Bugzilla::Error; +use Bugzilla::Token; +use Bugzilla::User; +use Bugzilla::Util; +use Date::Format; -# We don't want to remove a random logincookie from the db, so -# call Bugzilla->login(). If we're logged in after this, then -# the logincookie must be correct -Bugzilla->login(LOGIN_OPTIONAL); +my $template = Bugzilla->template; +my $cgi = Bugzilla->cgi; -Bugzilla->logout(); +my $action = $cgi->param('action') || 'logout'; -my $cgi = Bugzilla->cgi; -print $cgi->header(); +my $vars = {}; +my $target; + +# prepare-sudo: Display the sudo information & login page +if ($action eq 'prepare-sudo') { + # We must have a logged-in user to do this + # That user must be in the 'bz_sudoers' group + my $user = Bugzilla->login(LOGIN_REQUIRED); + unless ($user->in_group('bz_sudoers')) { + ThrowUserError('auth_failure', { group => 'bz_sudoers', + action => 'begin', + object => 'sudo_session' } + ); + } + + # Do not try to start a new session if one is already in progress! + if (defined(Bugzilla->sudoer)) { + ThrowUserError('sudo_in_progress', { target => $user->login }); + } + + # Keep a temporary record of the user visiting this page + $vars->{'token'} = Bugzilla::Token::IssueSessionToken('sudo_prepared'); + + # Show the sudo page + $vars->{'target_login_default'} = $cgi->param('target_login'); + $vars->{'reason_default'} = $cgi->param('reason'); + $target = 'admin/sudo.html.tmpl'; +} +# begin-sudo: Confirm login and start sudo session +elsif ($action eq 'begin-sudo') { + # We must be sure that the user is authenticating by providing a login + # and password. + # We only need to do this for authentication methods that involve Bugzilla + # directly obtaining a login (i.e. normal CGI login), as opposed to other + # methods (like Environment vars login). We assume that if a user can log + # out, they can also log in: + + # First, record if Bugzilla_login and Bugzilla_password were provided + my $credentials_provided; + if (defined($cgi->param('Bugzilla_login')) + && defined($cgi->param('Bugzilla_password'))) + { + $credentials_provided = 1; + } + + # Next, log in the user + my $user = Bugzilla->login(LOGIN_REQUIRED); + + # At this point, the user is logged in. However, if they used a method + # where they could have provided a username/password (i.e. CGI), but they + # did not provide a username/password, then throw an error. + if ($user->get_flag('can_logout') && !$credentials_provided) { + ThrowUserError('sudo_password_required', + { target_login => $cgi->param('target_login'), + reason => $cgi->param('reason')}); + } + + # The user must be in the 'bz_sudoers' group + unless ($user->in_group('bz_sudoers')) { + ThrowUserError('auth_failure', { group => 'bz_sudoers', + action => 'begin', + object => 'sudo_session' } + ); + } + + # Do not try to start a new session if one is already in progress! + if (defined(Bugzilla->sudoer)) { + ThrowUserError('sudo_in_progress', { target => $user->login }); + } -$vars->{'message'} = "logged_out"; -$template->process("global/message.html.tmpl", $vars) - || ThrowTemplateError($template->error()); + # Did the user actually go trough the 'sudo-prepare' action? Do some + # checks on the token the action should have left. + my ($token_user, $token_timestamp, $token_data) = + Bugzilla::Token::GetTokenData($cgi->param('token')); + unless (defined($token_user) + && defined($token_data) + && ($token_user == $user->id) + && ($token_data eq 'sudo_prepared')) + { + ThrowUserError('sudo_preparation_required', + { target_login => scalar $cgi->param('target_login'), + reason => scalar $cgi->param('reason')}); + } + Bugzilla::Token::DeleteToken($cgi->param('token')); -exit; + # Get & verify the target user (the user who we will be impersonating) + my $target_user = + Bugzilla::User->new_from_login($cgi->param('target_login')); + unless (defined($target_user) + && $target_user->id + && $user->can_see_user($target_user)) + { + ThrowUserError('user_match_failed', + { 'name' => $cgi->param('target_login') } + ); + } + if ($target_user->in_group('bz_sudo_protect')) { + ThrowUserError('sudo_protected', { login => $target_user->login }); + } + # If we have a reason passed in, keep it under 200 characters + my $reason = $cgi->param('reason') || ''; + $reason = substr($reason, $[, 200); + + # Calculate the session expiry time (T + 6 hours) + my $time_string = time2str('%a, %d-%b-%Y %T %Z', time+(6*60*60), 'GMT'); + + # For future sessions, store the unique ID of the target user + $cgi->send_cookie('-name' => 'sudo', + '-expires' => $time_string, + '-value' => $target_user->id + ); + + # For the present, change the values of Bugzilla::user & Bugzilla::sudoer + Bugzilla->sudo_request($target_user, $user); + + # NOTE: If you want to log the start of an sudo session, do it here. + + # Go ahead and send out the message now + my $message; + $template->process('email/sudo.txt.tmpl', + { reason => $reason }, + \$message); + Bugzilla::BugMail::MessageToMTA($message); + + $vars->{'message'} = 'sudo_started'; + $vars->{'target'} = $target_user->login; + $target = 'global/message.html.tmpl'; +} +# end-sudo: End the current sudo session (if one is in progress) +elsif ($action eq 'end-sudo') { + # Regardless of our state, delete the sudo cookie if it exists + $cgi->remove_cookie('sudo'); + + # Are we in an sudo session? + Bugzilla->login(LOGIN_OPTIONAL); + my $sudoer = Bugzilla->sudoer; + if (defined($sudoer)) { + Bugzilla->sudo_request($sudoer, undef); + } + + # NOTE: If you want to log the end of an sudo session, so it here. + + $vars->{'message'} = 'sudo_ended'; + $target = 'global/message.html.tmpl'; +} +# Log out the currently logged-in user (this used to be the only thing this did) +elsif ($action eq 'logout') { + # We don't want to remove a random logincookie from the db, so + # call Bugzilla->login(). If we're logged in after this, then + # the logincookie must be correct + Bugzilla->login(LOGIN_OPTIONAL); + + $cgi->remove_cookie('sudo'); + + Bugzilla->logout(); + + $vars->{'message'} = "logged_out"; + $target = 'global/message.html.tmpl'; +} +# No valid action found +else { + Bugzilla->login(LOGIN_OPTIONAL); + ThrowCodeError('unknown_action', {action => $action}); +} + +# Display the template +print $cgi->header(); +$template->process($target, $vars) + || ThrowTemplateError($template->error()); diff --git a/report.cgi b/report.cgi index 5572ae606..98fcb2e7f 100755 --- a/report.cgi +++ b/report.cgi @@ -24,14 +24,17 @@ use strict; use lib "."; -require "CGI.pl"; +require "globals.pl"; -use vars qw($template $vars @legal_opsys @legal_platform @legal_severity); +use vars qw(@legal_opsys @legal_platform @legal_severity); use Bugzilla; use Bugzilla::Constants; my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; +my $buffer = $cgi->query_string(); # Go straight back to query.cgi if we are adding a boolean chart. if (grep(/^cmd-/, $cgi->param())) { @@ -49,7 +52,7 @@ GetVersionTable(); Bugzilla->login(); -Bugzilla->switch_to_shadow_db(); +my $dbh = Bugzilla->switch_to_shadow_db(); my $action = $cgi->param('action') || 'menu'; @@ -146,7 +149,7 @@ my $query = $search->getSQL(); $::SIG{TERM} = 'DEFAULT'; $::SIG{PIPE} = 'DEFAULT'; -SendSQL($query); +my $results = $dbh->selectall_arrayref($query); # We have a hash of hashes for the data itself, and a hash to hold the # row/col/table names. @@ -162,8 +165,8 @@ my $col_isnumeric = 1; my $row_isnumeric = 1; my $tbl_isnumeric = 1; -while (MoreSQLData()) { - my ($row, $col, $tbl) = FetchSQLData(); +foreach my $result (@$results) { + my ($row, $col, $tbl) = @$result; # handle empty dimension member names $row = ' ' if ($row eq ''); @@ -266,9 +269,9 @@ if ($action eq "wrap") { # We need to keep track of the defined restrictions on each of the # axes, because buglistbase, below, throws them away. Without this, we # get buglistlinks wrong if there is a restriction on an axis field. - $vars->{'col_vals'} = join("&", $::buffer =~ /[&?]($col_field=[^&]+)/g); - $vars->{'row_vals'} = join("&", $::buffer =~ /[&?]($row_field=[^&]+)/g); - $vars->{'tbl_vals'} = join("&", $::buffer =~ /[&?]($tbl_field=[^&]+)/g); + $vars->{'col_vals'} = join("&", $buffer =~ /[&?]($col_field=[^&]+)/g); + $vars->{'row_vals'} = join("&", $buffer =~ /[&?]($row_field=[^&]+)/g); + $vars->{'tbl_vals'} = join("&", $buffer =~ /[&?]($tbl_field=[^&]+)/g); # We need a number of different variants of the base URL for different # URLs in the HTML. @@ -292,7 +295,8 @@ else { ThrowCodeError("unknown_action", {action => $cgi->param('action')}); } -my $format = GetFormat("reports/report", $formatparam, $cgi->param('ctype')); +my $format = $template->get_format("reports/report", $formatparam, + scalar($cgi->param('ctype'))); # If we get a template or CGI error, it comes out as HTML, which isn't valid # PNG data, and the browser just displays a "corrupt PNG" message. So, you can diff --git a/reports.cgi b/reports.cgi index deeffff58..5553f2c97 100755 --- a/reports.cgi +++ b/reports.cgi @@ -39,8 +39,6 @@ use lib qw(.); use Bugzilla::Config qw(:DEFAULT $datadir); -require "CGI.pl"; - require "globals.pl"; use vars qw(@legal_product); # globals from er, globals.pl @@ -56,23 +54,26 @@ use Bugzilla; # If we're using bug groups for products, we should apply those restrictions # to viewing reports, as well. Time to check the login in that case. -Bugzilla->login(); +my $user = Bugzilla->login(); GetVersionTable(); Bugzilla->switch_to_shadow_db(); my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; # We only want those products that the user has permissions for. my @myproducts; push( @myproducts, "-All-"); -push( @myproducts, GetSelectableProducts()); +# Extract product names from objects and add them to the list. +push( @myproducts, map { $_->name } @{$user->get_selectable_products} ); if (! defined $cgi->param('product')) { choose_product(@myproducts); - PutFooter(); + $template->put_footer(); } else { my $product = $cgi->param('product'); @@ -89,11 +90,12 @@ if (! defined $cgi->param('product')) { print $cgi->header(-Content_Disposition=>'inline; filename=bugzilla_report.html'); - PutHeader("Bug Charts"); + $template->put_header("Bug Charts"); + $vars->{'header_done'} = 1; show_chart($product); - PutFooter(); + $template->put_footer(); } @@ -115,7 +117,8 @@ sub choose_product { || ThrowCodeError("chart_file_open_fail", {filename => "$dir/$datafile"}); print $cgi->header(); - PutHeader("Bug Charts"); + $template->put_header("Bug Charts"); + $vars->{'header_done'} = 1; print <<FIN; <center> @@ -185,7 +188,7 @@ sub show_chart { my ($product) = @_; if (! defined $cgi->param('datasets')) { - ThrowUserError("missing_datasets"); + ThrowUserError("missing_datasets", $vars); } my $datasets = join('', $cgi->param('datasets')); @@ -254,7 +257,12 @@ sub generate_chart { my ($data_file, $image_file, $type, $product, $datasets) = @_; if (! open FILE, $data_file) { - ThrowCodeError("chart_data_not_generated"); + if ($product eq '-All-') { + $product = ''; + } + + $vars->{'product'} = $product; + ThrowCodeError("chart_data_not_generated", $vars); } my @fields; @@ -268,15 +276,19 @@ sub generate_chart { if (/^#/) { if (/^# fields?: (.*)\s*$/) { @fields = split /\||\r/, $1; - ThrowCodeError("chart_datafile_corrupt", {file => $data_file}) - unless $fields[0] =~ /date/i; + unless ($fields[0] =~ /date/i) { + $vars->{'file'} = $data_file; + ThrowCodeError("chart_datafile_corrupt", $vars); + } push @labels, grep($datasets{$_}, @fields); } next; } - ThrowCodeError("chart_datafile_corrupt", {file => $data_file}) - unless @fields; + unless (@fields) { + $vars->{'file'} = $data_file; + ThrowCodeError("chart_datafile_corrupt", $vars); + } my @line = split /\|/; my $date = $line[0]; @@ -302,7 +314,7 @@ sub generate_chart { close FILE; if (! @{$data{DATE}}) { - ThrowUserError("insufficient_data_points"); + ThrowUserError("insufficient_data_points", $vars); } my $img = Chart::Lines->new (800, 600); diff --git a/request.cgi b/request.cgi index d91846488..1faeb1793 100755 --- a/request.cgi +++ b/request.cgi @@ -27,26 +27,38 @@ # Make it harder for us to do dangerous things in Perl. use strict; -# Include the Bugzilla CGI and general utility library. use lib qw(.); -require "CGI.pl"; - -# Use Bugzilla's Request module which contains utilities for handling requests. +require "globals.pl"; +use Bugzilla; use Bugzilla::Flag; use Bugzilla::FlagType; - -# use Bugzilla's User module which contains utilities for handling users. use Bugzilla::User; -use vars qw($template $vars @legal_product @legal_components %components); - # Make sure the user is logged in. -Bugzilla->login(); +my $user = Bugzilla->login(); +my $userid = $user->id; + +my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; + ################################################################################ # Main Body Execution ################################################################################ +my $fields; +$fields->{'requester'}->{'type'} = 'single'; +# If the user doesn't restrict his search to requests from the wind +# (requestee ne '-'), include the requestee for completion. +unless (defined $cgi->param('requestee') + && $cgi->param('requestee') eq '-') +{ + $fields->{'requestee'}->{'type'} = 'single'; +} + +Bugzilla::User::match_field($cgi, $fields); + queue(); exit; @@ -102,19 +114,19 @@ sub queue { LEFT JOIN bug_group_map AS bgmap ON bgmap.bug_id = bugs.bug_id AND bgmap.group_id NOT IN (" . - join(', ', (-1, values(%{Bugzilla->user->groups}))) . ") + join(', ', (-1, values(%{$user->groups}))) . ") LEFT JOIN cc AS ccmap - ON ccmap.who = $::userid - AND ccmap.bug_id = bugs.bug_id + ON ccmap.who = $userid + AND ccmap.bug_id = bugs.bug_id " . # Weed out bug the user does not have access to " WHERE ((bgmap.group_id IS NULL) OR (ccmap.who IS NOT NULL AND cclist_accessible = 1) OR - (bugs.reporter = $::userid AND bugs.reporter_accessible = 1) OR - (bugs.assigned_to = $::userid) " . + (bugs.reporter = $userid AND bugs.reporter_accessible = 1) OR + (bugs.assigned_to = $userid) " . (Param('useqacontact') ? "OR - (bugs.qa_contact = $::userid))" : ")"); + (bugs.qa_contact = $userid))" : ")"); # Non-deleted flags only $query .= " AND flags.is_active = 1 "; @@ -147,14 +159,17 @@ sub queue { # Filter results by exact email address of requester or requestee. if (defined $cgi->param('requester') && $cgi->param('requester') ne "") { - push(@criteria, $dbh->sql_istrcmp('requesters.login_name', - SqlQuote($cgi->param('requester')))); + my $requester = $dbh->quote($cgi->param('requester')); + trick_taint($requester); # Quoted above + push(@criteria, $dbh->sql_istrcmp('requesters.login_name', $requester)); push(@excluded_columns, 'requester') unless $cgi->param('do_union'); } if (defined $cgi->param('requestee') && $cgi->param('requestee') ne "") { if ($cgi->param('requestee') ne "-") { + my $requestee = $dbh->quote($cgi->param('requestee')); + trick_taint($requestee); # Quoted above push(@criteria, $dbh->sql_istrcmp('requestees.login_name', - SqlQuote($cgi->param('requestee')))); + $requestee)); } else { push(@criteria, "flags.requestee_id IS NULL") } push(@excluded_columns, 'requestee') unless $cgi->param('do_union'); @@ -193,8 +208,10 @@ sub queue { } } if (!$has_attachment_type) { push(@excluded_columns, 'attachment') } - - push(@criteria, "flagtypes.name = " . SqlQuote($form_type)); + + my $quoted_form_type = $dbh->quote($form_type); + trick_taint($quoted_form_type); # Already SQL quoted + push(@criteria, "flagtypes.name = " . $quoted_form_type); push(@excluded_columns, 'type') unless $cgi->param('do_union'); } @@ -241,10 +258,10 @@ sub queue { $vars->{'query'} = $query; $vars->{'debug'} = $cgi->param('debug') ? 1 : 0; - SendSQL($query); + my $results = $dbh->selectall_arrayref($query); my @requests = (); - while (MoreSQLData()) { - my @data = FetchSQLData(); + foreach my $result (@$results) { + my @data = @$result; my $request = { 'id' => $data[0] , 'type' => $data[1] , @@ -263,18 +280,11 @@ sub queue { # Get a list of request type names to use in the filter form. my @types = ("all"); - SendSQL("SELECT DISTINCT(name) FROM flagtypes ORDER BY name"); - push(@types, FetchOneColumn()) while MoreSQLData(); - - # products and components and the function used to modify the components - # menu when the products menu changes; used by the template to populate - # the menus and keep the components menu consistent with the products menu - GetVersionTable(); - my $selectable = GetSelectableProductHash(); - $vars->{'products'} = $selectable->{legal_products}; - $vars->{'components'} = $selectable->{legal_components}; - $vars->{'components_by_product'} = $selectable->{components_by_product}; + my $flagtypes = $dbh->selectcol_arrayref( + "SELECT DISTINCT(name) FROM flagtypes ORDER BY name"); + push(@types, @$flagtypes); + $vars->{'products'} = $user->get_selectable_products; $vars->{'excluded_columns'} = \@excluded_columns; $vars->{'group_field'} = $form_group; $vars->{'requests'} = \@requests; diff --git a/sanitycheck.cgi b/sanitycheck.cgi index ca35cd893..9a80efd24 100755 --- a/sanitycheck.cgi +++ b/sanitycheck.cgi @@ -27,8 +27,9 @@ use strict; use lib qw(.); -require "CGI.pl"; +require "globals.pl"; use Bugzilla::Constants; +use Bugzilla::Util; use Bugzilla::User; ########################################################################### @@ -75,6 +76,7 @@ Bugzilla->login(LOGIN_REQUIRED); my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; # Make sure the user is authorized to access sanitycheck.cgi. Access # is restricted to logged-in users who have "editbugs" privileges, @@ -92,7 +94,7 @@ print $cgi->header(); my @row; -PutHeader("Bugzilla Sanity Check"); +$template->put_header("Bugzilla Sanity Check"); ########################################################################### # Fix vote cache @@ -116,66 +118,6 @@ if (defined $cgi->param('rebuildvotecache')) { Status("Vote cache has been rebuilt."); } -########################################################################### -# Fix group derivations -########################################################################### - -if (defined $cgi->param('rederivegroups')) { - Status("OK, All users' inherited permissions will be rechecked when " . - "they next access Bugzilla."); - SendSQL("UPDATE groups SET last_changed = NOW() " . $dbh->sql_limit(1)); -} - -# rederivegroupsnow is REALLY only for testing. -# If it wasn't, then we'd do this the faster way as a per-group -# thing rather than per-user for group inheritance -if (defined $cgi->param('rederivegroupsnow')) { - require Bugzilla::User; - Status("OK, now rederiving groups."); - SendSQL("SELECT userid FROM profiles"); - while ((my $id) = FetchSQLData()) { - my $user = new Bugzilla::User($id); - $user->derive_groups(); - Status("User $id"); - } -} - -if (defined $cgi->param('cleangroupsnow')) { - Status("OK, now cleaning stale groups."); - # Only users that were out of date already long ago should be cleaned - # and the cleaning is done with tables locked. This is require in order - # to keep another session from proceeding with permission checks - # after the groups have been cleaned unless it first had an opportunity - # to get the groups up to date. - # If any page starts taking longer than one hour to load, this interval - # should be revised. - SendSQL("SELECT MAX(last_changed) FROM groups WHERE last_changed < NOW() - " . - $dbh->sql_interval(1, 'HOUR')); - (my $cutoff) = FetchSQLData(); - Status("Cutoff is $cutoff"); - SendSQL("SELECT COUNT(*) FROM user_group_map"); - (my $before) = FetchSQLData(); - $dbh->bz_lock_tables('user_group_map WRITE', 'profiles WRITE'); - SendSQL("SELECT userid FROM profiles " . - "WHERE refreshed_when > 0 " . - "AND refreshed_when < " . SqlQuote($cutoff) . " " . - $dbh->sql_limit(1000)); - my $count = 0; - while ((my $id) = FetchSQLData()) { - $count++; - PushGlobalSQLState(); - SendSQL("DELETE FROM user_group_map WHERE " . - "user_id = $id AND isderived = 1 AND isbless = 0"); - SendSQL("UPDATE profiles SET refreshed_when = 0 WHERE userid = $id"); - PopGlobalSQLState(); - } - $dbh->bz_unlock_tables(); - SendSQL("SELECT COUNT(*) FROM user_group_map"); - (my $after) = FetchSQLData(); - Status("Cleaned table for $count users " . - "- reduced from $before records to $after records"); -} - ########################################################################### # Create missing group_control_map entries ########################################################################### @@ -299,7 +241,7 @@ if (defined $cgi->param('rescanallBugMail')) { Status("Unsent mail has been sent."); } - PutFooter(); + $template->put_footer(); exit; } @@ -388,7 +330,7 @@ sub CrossCheck { while (MoreSQLData()) { my ($value, $key) = FetchSQLData(); if (!$exceptions{$value}) { - my $alert = "Bad value $value found in $refertable.$referfield"; + my $alert = "Bad value "$value" found in $refertable.$referfield"; if ($keyname) { if ($keyname eq 'bug_id') { $alert .= ' (bug ' . BugLink($key) . ')'; @@ -551,7 +493,7 @@ sub DoubleCrossCheck { while (MoreSQLData()) { my ($value1, $value2, $key) = FetchSQLData(); - my $alert = "Bad values $value1, $value2 found in " . + my $alert = "Bad values "$value1", "$value2" found in " . "$refertable.$referfield1 / $refertable.$referfield2"; if ($keyname) { if ($keyname eq 'bug_id') { @@ -588,13 +530,11 @@ DoubleCrossCheck("milestones", "product_id", "value", Status("Checking profile logins"); -my $emailregexp = Param("emailregexp"); SendSQL("SELECT userid, login_name FROM profiles"); while (my ($id,$email) = (FetchSQLData())) { - unless ($email =~ m/$emailregexp/) { - Alert "Bad profile email address, id=$id, <$email>." - } + validate_email_syntax($email) + || Alert "Bad profile email address, id=$id, <$email>."; } ########################################################################### @@ -755,7 +695,7 @@ if (defined $cgi->param('rebuildkeywordcache')) { # General bug checks ########################################################################### -sub BugCheck ($$;$$) { +sub BugCheck { my ($middlesql, $errortext, $repairparam, $repairtext) = @_; SendSQL("SELECT DISTINCT bugs.bug_id " . @@ -921,4 +861,4 @@ if (@badbugs > 0) { ########################################################################### Status("Sanity check completed."); -PutFooter(); +$template->put_footer(); diff --git a/show_activity.cgi b/show_activity.cgi index 5ab4e366e..9b7273a4c 100755 --- a/show_activity.cgi +++ b/show_activity.cgi @@ -25,10 +25,14 @@ use strict; use lib qw(.); -use vars qw ($template $vars); -require "CGI.pl"; +require "globals.pl"; + +use Bugzilla::Bug; + my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; ############################################################################### # Begin Data/Security Validation @@ -47,11 +51,11 @@ ValidateBugID($bug_id); ############################################################################### ($vars->{'operations'}, $vars->{'incomplete_data'}) = - GetBugActivity($bug_id); + Bugzilla::Bug::GetBugActivity($bug_id); $vars->{'bug_id'} = $bug_id; -print Bugzilla->cgi->header(); +print $cgi->header(); $template->process("bug/activity/show.html.tmpl", $vars) || ThrowTemplateError($template->error()); diff --git a/show_bug.cgi b/show_bug.cgi index 8e964b765..4d6819a36 100755 --- a/show_bug.cgi +++ b/show_bug.cgi @@ -28,13 +28,13 @@ use Bugzilla; use Bugzilla::Constants; use Bugzilla::User; -require "CGI.pl"; - -use vars qw($template $vars $userid); +require "globals.pl"; use Bugzilla::Bug; my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; if ($cgi->param('GoAheadAndLogIn')) { Bugzilla->login(LOGIN_REQUIRED); @@ -54,8 +54,8 @@ if (!$cgi->param('id') && $single) { exit; } -my $format = GetFormat("bug/show", scalar $cgi->param('format'), - scalar $cgi->param('ctype')); +my $format = $template->get_format("bug/show", scalar $cgi->param('format'), + scalar $cgi->param('ctype')); GetVersionTable(); @@ -67,7 +67,7 @@ if ($single) { # Its a bit silly to do the validation twice - that functionality should # probably move into Bug.pm at some point ValidateBugID($id); - push @bugs, new Bugzilla::Bug($id, $userid); + push @bugs, new Bugzilla::Bug($id, Bugzilla->user->id); if (defined $cgi->param('mark')) { foreach my $range (split ',', $cgi->param('mark')) { if ($range =~ /^(\d+)-(\d+)$/) { @@ -81,7 +81,7 @@ if ($single) { } } else { foreach my $id ($cgi->param('id')) { - my $bug = new Bugzilla::Bug($id, $userid); + my $bug = new Bugzilla::Bug($id, Bugzilla->user->id); push @bugs, $bug; } } @@ -108,7 +108,8 @@ $vars->{'bug_list'} = \@bug_list; # If no explicit list is defined, we show all fields. We then exclude any # on the exclusion list. This is so you can say e.g. "Everything except # attachments" without listing almost all the fields. -my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment'); +my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', + 'attachment', 'attachmentdata'); my %displayfields; if ($cgi->param("field")) { diff --git a/showdependencygraph.cgi b/showdependencygraph.cgi index 5fc794e9b..e97af975b 100755 --- a/showdependencygraph.cgi +++ b/showdependencygraph.cgi @@ -29,19 +29,18 @@ use File::Temp; use Bugzilla; use Bugzilla::Config qw(:DEFAULT $webdotdir); use Bugzilla::Util; -use Bugzilla::BugMail; +use Bugzilla::Bug; -require "CGI.pl"; +require "globals.pl"; Bugzilla->login(); my $cgi = Bugzilla->cgi; - +my $template = Bugzilla->template; +my $vars = {}; # Connect to the shadow database if this installation is using one to improve # performance. -Bugzilla->switch_to_shadow_db(); - -use vars qw($template $vars $userid); +my $dbh = Bugzilla->switch_to_shadow_db(); my %seen; my %edgesdone; @@ -120,10 +119,11 @@ node [URL="${urlbase}show_bug.cgi?id=\\N", style=filled, color=lightgrey] my %baselist; if ($cgi->param('doall')) { - SendSQL("SELECT blocked, dependson FROM dependencies"); + my $dependencies = $dbh->selectall_arrayref( + "SELECT blocked, dependson FROM dependencies"); - while (MoreSQLData()) { - my ($blocked, $dependson) = FetchSQLData(); + foreach my $dependency (@$dependencies) { + my ($blocked, $dependson) = @$dependency; AddLink($blocked, $dependson, $fh); } } else { @@ -134,12 +134,14 @@ if ($cgi->param('doall')) { } my @stack = keys(%baselist); + my $sth = $dbh->prepare( + q{SELECT blocked, dependson + FROM dependencies + WHERE blocked = ? or dependson = ?}); foreach my $id (@stack) { - SendSQL("SELECT blocked, dependson - FROM dependencies - WHERE blocked = $id or dependson = $id"); - while (MoreSQLData()) { - my ($blocked, $dependson) = FetchSQLData(); + my $dependencies = $dbh->selectall_arrayref($sth, undef, ($id, $id)); + foreach my $dependency (@$dependencies) { + my ($blocked, $dependson) = @$dependency; if ($blocked != $id && !exists $seen{$blocked}) { push @stack, $blocked; } @@ -157,16 +159,13 @@ if ($cgi->param('doall')) { } } +my $sth = $dbh->prepare( + q{SELECT bug_status, resolution, short_desc + FROM bugs + WHERE bugs.bug_id = ?}); foreach my $k (keys(%seen)) { - my $summary = ""; - my $stat; - my $resolution; - # Retrieve bug information from the database - - SendSQL("SELECT bug_status, resolution, short_desc FROM bugs " . - "WHERE bugs.bug_id = $k"); - ($stat, $resolution, $summary) = FetchSQLData(); + my ($stat, $resolution, $summary) = $dbh->selectrow_array($sth, undef, $k); $stat ||= 'NEW'; $resolution ||= ''; $summary ||= ''; @@ -176,6 +175,7 @@ foreach my $k (keys(%seen)) { $resolution = $summary = ''; } + $vars->{'short_desc'} = $summary if ($k eq $cgi->param('id')); my @params; @@ -220,7 +220,7 @@ my $webdotbase = Param('webdotbase'); if ($webdotbase =~ /^https?:/) { # Remote dot server - my $url = PerformSubsts($webdotbase) . $filename; + my $url = perform_substs($webdotbase) . $filename; $vars->{'image_url'} = $url . ".gif"; $vars->{'map_url'} = $url . ".map"; } else { diff --git a/showdependencytree.cgi b/showdependencytree.cgi index 76ef0ddee..d9d71b0ab 100755 --- a/showdependencytree.cgi +++ b/showdependencytree.cgi @@ -26,22 +26,18 @@ use strict; use lib qw(.); -require "CGI.pl"; +require "globals.pl"; use Bugzilla::User; - -# Use global template variables. -use vars qw($template $vars); +use Bugzilla::Bug; Bugzilla->login(); my $cgi = Bugzilla->cgi; - +my $template = Bugzilla->template; +my $vars = {}; # Connect to the shadow database if this installation is using one to improve # performance. -Bugzilla->switch_to_shadow_db(); - -# More warning suppression silliness. -$::userid = $::userid; +my $dbh = Bugzilla->switch_to_shadow_db(); ################################################################################ # Data/Security Validation # @@ -145,27 +141,26 @@ sub GetBug { # Retrieves the necessary information about a bug, stores it in the bug cache, # and returns it to the calling code. my ($id) = @_; - + my $dbh = Bugzilla->dbh; + my $bug = {}; if (Bugzilla->user->can_see_bug($id)) { - SendSQL("SELECT 1, + ($bug->{'exists'}, + $bug->{'status'}, + $bug->{'summary'}, + $bug->{'milestone'}, + $bug->{'assignee_id'}, + $bug->{'assignee_email'}) = $dbh->selectrow_array( + "SELECT 1, bug_status, short_desc, $milestone_column, assignee.userid, assignee.login_name - FROM bugs + FROM bugs INNER JOIN profiles AS assignee ON bugs.assigned_to = assignee.userid - WHERE bugs.bug_id = $id"); - - - ($bug->{'exists'}, - $bug->{'status'}, - $bug->{'summary'}, - $bug->{'milestone'}, - $bug->{'assignee_id'}, - $bug->{'assignee_email'}) = FetchSQLData(); + WHERE bugs.bug_id = ?", undef, $id); } $bug->{'open'} = $bug->{'exists'} && IsOpenedState($bug->{'status'}); @@ -176,19 +171,17 @@ sub GetBug { sub GetDependencies { # Returns a list of dependencies for a given bug. - my ($id, $relationship) = @_; - + my $dbh = Bugzilla->dbh; + my $bug_type = ($relationship eq "blocked") ? "dependson" : "blocked"; - SendSQL(" SELECT $relationship + my $dependencies = $dbh->selectcol_arrayref( + "SELECT $relationship FROM dependencies - WHERE $bug_type = $id - ORDER BY $relationship"); - - my @dependencies = (); - push(@dependencies, FetchOneColumn()) while MoreSQLData(); + WHERE $bug_type = ? + ORDER BY $relationship", undef, $id); - return @dependencies; + return @$dependencies; } diff --git a/sidebar.cgi b/sidebar.cgi index 73a22d1b3..2f7743ebb 100755 --- a/sidebar.cgi +++ b/sidebar.cgi @@ -18,17 +18,12 @@ use strict; use lib "."; -require "CGI.pl"; - -# Shut up "Used Only Once" errors -use vars qw( - $template - $vars -); +require "globals.pl"; Bugzilla->login(); my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; ############################################################################### # Main Body Execution @@ -46,7 +41,7 @@ my $useragent = $ENV{HTTP_USER_AGENT}; if ($useragent =~ m:Mozilla/([1-9][0-9]*):i && $1 >= 5 && $useragent !~ m/compatible/i) { print $cgi->header("application/vnd.mozilla.xul+xml"); # Generate and return the XUL from the appropriate template. - $template->process("sidebar.xul.tmpl", $vars) + $template->process("sidebar.xul.tmpl") || ThrowTemplateError($template->error()); } else { ThrowUserError("sidebar_supports_mozilla_only"); diff --git a/skins/CVS/Tag b/skins/CVS/Tag index a2edadf24..2ccb6d6d4 100644 --- a/skins/CVS/Tag +++ b/skins/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-2_20_2 +TBUGZILLA-2_22 diff --git a/skins/standard/CVS/Entries b/skins/standard/CVS/Entries index 2902a6a2e..a526aeaf5 100644 --- a/skins/standard/CVS/Entries +++ b/skins/standard/CVS/Entries @@ -1,12 +1,13 @@ -/admin.css/1.1.4.1/Mon Oct 17 21:13:46 2005//TBUGZILLA-2_20_2 -/buglist.css/1.9/Mon Apr 11 22:52:50 2005//TBUGZILLA-2_20_2 -/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-2_20_2 -/editusers.css/1.1/Mon Feb 28 20:41:43 2005//TBUGZILLA-2_20_2 -/global.css/1.12.4.2/Tue Feb 21 16:15:34 2006//TBUGZILLA-2_20_2 -/index.css/1.2.4.1/Sat Dec 3 03:19:44 2005//TBUGZILLA-2_20_2 -/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-2_20_2 -/show_multiple.css/1.2/Tue Nov 2 22:39:16 2004//TBUGZILLA-2_20_2 -/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-2_20_2 -/voting.css/1.1/Tue Feb 8 15:49:57 2005//TBUGZILLA-2_20_2 +/admin.css/1.3/Wed Oct 26 17:14:31 2005//TBUGZILLA-2_22 +/buglist.css/1.9/Mon Apr 11 22:52:50 2005//TBUGZILLA-2_22 +/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-2_22 +/editusers.css/1.1/Mon Feb 28 20:41:43 2005//TBUGZILLA-2_22 +/global.css/1.16.2.1/Tue Feb 21 16:15:16 2006//TBUGZILLA-2_22 +/index.css/1.3/Sat Dec 3 03:17:38 2005//TBUGZILLA-2_22 +/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-2_22 +/params.css/1.2/Thu Oct 13 09:18:22 2005//TBUGZILLA-2_22 +/show_multiple.css/1.2/Tue Nov 2 22:39:16 2004//TBUGZILLA-2_22 +/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-2_22 +/voting.css/1.1/Tue Feb 8 15:49:57 2005//TBUGZILLA-2_22 D/global//// D/index//// diff --git a/skins/standard/CVS/Tag b/skins/standard/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/skins/standard/CVS/Tag +++ b/skins/standard/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/skins/standard/admin.css b/skins/standard/admin.css index ef02f69d9..48bf3fed8 100644 --- a/skins/standard/admin.css +++ b/skins/standard/admin.css @@ -34,3 +34,7 @@ p.areyoureallyreallysure { font-size: 120%; font-weight: bold; } + +tr.param_disabled { + background-color: lightgrey; +} diff --git a/skins/standard/global.css b/skins/standard/global.css index 7fb06071c..5570c6f2c 100644 --- a/skins/standard/global.css +++ b/skins/standard/global.css @@ -176,13 +176,14 @@ body margin-top: 5px; width: 100%; font-family: sans-serif; + background: #edf2f2; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; } #footer form { - background: #edf2f2; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; + display: inline; } #footer span @@ -209,7 +210,8 @@ body #footer #links-actions, #footer #links-edit, - #footer #links-saved + #footer #links-saved, + #footer #links-special { display: table-row; } @@ -314,21 +316,24 @@ body padding: 1em 0; } -.selected_tab +td.tab { - background: #fff; - border: 1px solid black; + background: #eee; + text-align: center; + border-style: solid; + border-color: black; + border-width: 0px 0px 2px 0px; } - -.unselected_tab + +td.tab.selected { - background: #eee; - border: 1px solid black; + background: white; + border-width: 2px 2px 0px 2px; } -.spacer +td.tab.spacer { - border: 1px solid black; + background: white; } table#flags th, table#flags td { vertical-align: baseline; text-align: left; } diff --git a/skins/standard/global/CVS/Entries b/skins/standard/global/CVS/Entries index 5078454e8..bdfdb8132 100644 --- a/skins/standard/global/CVS/Entries +++ b/skins/standard/global/CVS/Entries @@ -1,3 +1,3 @@ -/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-2_20_2 -/header.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-2_20_2 +/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-2_22 +/header.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-2_22 D diff --git a/skins/standard/global/CVS/Tag b/skins/standard/global/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/skins/standard/global/CVS/Tag +++ b/skins/standard/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/skins/standard/index/CVS/Entries b/skins/standard/index/CVS/Entries index e7109d972..b482f3a76 100644 --- a/skins/standard/index/CVS/Entries +++ b/skins/standard/index/CVS/Entries @@ -1,3 +1,2 @@ -/front.jpg/1.1/Tue Nov 9 00:16:58 2004/-kb/TBUGZILLA-2_20_2 -/front.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-2_20_2 +/front.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-2_22 D diff --git a/skins/standard/index/CVS/Tag b/skins/standard/index/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/skins/standard/index/CVS/Tag +++ b/skins/standard/index/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/skins/standard/index/front.jpg b/skins/standard/index/front.jpg deleted file mode 100644 index 7cfaaed630d4866e9368e3638b3a20c0fa79ea96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8474 zcmex=<NpH&0WUXCHwH#V1_nk3Mh1re{}`gUxSWGr9Yg$stP~=`6v9%AiZk=`6pZx@ z4H6X;f>O(@6by~@jV$#oO%yZ&{M;1^5=)XZ6b$u@G!+yAOA~W4ODYv?6-<nD6oPZ} z^Gh-^^U@V;6%4rk-)3-T5a#6*<l_+*<QEhb5f+y<ke8K`lC{#(Q8sY3^>lZ!b$0X# z%Z>F3%m{LHj&DlHC@ih6srHI#o6uU`pIcE~_Wu9_HwVKVMo&gYL5BZF7~~lk7+D#? zfB^~^nV4Bv+1NQaxw!uyVc06bz{JSR%*4XX%F4pRz`$6`$i&RRBFHMFXz0i$9GJ+i zR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5nweWzS~<J8y19FJdIg7s zhJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu)GiJ_Ow0OzVWy@ErT(xQQ zmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6i<hrHe)|07>$mSee*XG@ zi-7|aCH4&Gw{7j>E}gI;z4T;O`qaH2kG;xTSXncJ{rCI7tgfrJPYSzg_u=W!_b(%R zyym3Ms8|{}Nh{>IS6Hd*Pq(Or%bEMOCW${umyp|9#=-k9sZ(HA&#Z;z>AG85Q=FER zDXpH^cV)(F4|bEq*BNG&WbgDp#rZ2_+ee-0Tue{&b&rdj{I<Df)#ASwyV@DPz4Q`a zAd+K0SIy8*-cLjM>07ru4>J@Py8;+wi)uA2Y-EBOTYqoaA^E~?N<s>sCfBc$r7u1E z^D><tTrl?TSt;{q_Le60z}IixE{7f7+`#=Hp>#RtzIZ*g{BQH-%e?1KQ@h=GC)D|w z$I-rLDo^I^TqaWg&hU?B&9d{(KLe6;ekDzuIBk|2uY#zKz)9<t-Xi}ec3UrJM%AvJ zC+Fs=`tNg}_}}}Ve}*mHdumhL9m$A4OHw}i?%&)T(4DfJ$9R+D)%x>G3#V@@io9bI z%)7>_O7NA|3ieWoN0TL1^R!tUKhxv!V%hS|or`*Jb}g*4%lFFMc3<zkp@{s-CEg*A zOYT;)EVy;d%J=r~{eP>H9h-J@SeSCU-FfABf+6ACOSdx#zkYpRu2ZQZd?Ed3Fu#2i zhuwdMUfKT)Q<;})$&{}C_A7G|znQ1ahPoF=gQnW-<eF2EIdgHB)xVG(kEZaoO%Q&0 ze61SOrMLN6b)L-XUBN9ff&1BQ|4lWxlIOr&z)+>J<llvz$M3Pv`Le{S<!Srf$F~+$ zw@rRu{$+{Y?ZWFH7r*BTUf6s_z3^7^d(+J5QxjH1T+jN|x8?O)_tV?OJ~GI*spLDp z49NVoWSW25&qeA}zx)cj75_x@yu{;KHE-Eg%TFxYE&ng_^j-fS;rgYys!NYd@Yzvf z@oj}<-J&(Fd6CZhxvHwRM)u^!xXthXapl|5yB)VU<MzIGyLZcSXDH+6%l4O+Mw|SU zPI|bBFZ0@GM;^U>QO*4`9<PsD@L}=6XAI%IP4})c{S4=FSyd*gJ@NXL5c6xgTnF6W zFRp1#uzbwSQuet2K&Xn7x7LTUbh{bKe>9_npS`(N_c3tZ-S*c3J7feeH2$lfYtH=A z@pX{X?7nA`%-h$-W~R>gbR+QXg;2=|<2mWK79THm-^-G`)uQ%Jv4`=`pguo$nM(}( z{$6G06MtT4pZM0<%=4(>Z1ygn-$8G6J-bBxs)MJ<UDYv6nRF(Uy=sn7UEl#(hUK0H z+kEDwB!2o`eO2k^bCvDE^P_w|c3rrv=k}4Mz3n0AKjEloIZdm?_N?4bwcAvk`|Sij z&3jT`axHi2%;IOKmbmaS9KUBb-#=>alXsTI^9p~2<V!L?ef%<f&05cdO8xVv=bu_r zDRlduY>(5|n?D|eJXkr&qLa&9^WdA}6MwU&-u*ta=3YWrhZ)o3Rado7s?K^UbyvzX zPE>f&<$VVW9)=k-Y<R&N*L?W=r_C{}cdF~>uZ@qkNZFoky^^PS(Z2UHs|zE=Z^^8# z*5*tMsh{b+@BZcWF`?p@(hGkt+g@Z{xj^{mqt*8^znf*v&uCqI_kjAupM6@p+%9>n zXnvN&8sYLptN-<^+GmQL$`U+(wg$)+I?4o<{R<I1a8$$O;pI!S`z&8NvLxS{eCk_N zLH^_gXN_z1A9~-KY&T`@i<J+0`e*KtKesgD{Dt7#Vz1BZRdFp>NV+{^n%c}+adU#c zn(kbFPr759$NfG2@sA|_l_vS$%S)Vp<Z9W}E{5aQZfw=X{~4~YkgE4<nq)mS{2b$f zwI2Gxw)XtaVd;CK8&r;;TmJO?(x7eAOCH(qJY5oeU(r+k)TECrTG9-wi;t%5)ZH?< z?`o!MiS`!3gED`8vtE7|I{B$B#pCj-2itXQ>$YyqX9-XX5T5_Y*4HdLJM+7Er^GzY z<7a<f3Cs*D?4KrPA7-j^?WOI`CKq05zR+Fa8oz3G<*k^PpffL_^h*L?{j@9z;ZwH` zPoBs4KJvT%zH)^Re8ycZkIOGj&wuRU%KS6%rJKWXnTrh~e>2%FmfrMv>)n@W71VsM zZ`p(^8(gQ|xogcIwefVxO4&UvFSxfmz6_Z;yX?88`d$rteJ`hle>G<ujcz*h@M7wx z87}p`JLIG8w>xgKj=J|LWeU%qACEsASi0--^KI7OW+tE4ne+I=>&Q(uxmy?I&;Ipn zwU0yW=?TW?w}z&zTs%8JxNFOHo>hjI*4^|Kj*Whht997s+xuUk+B>^bL%Vq%W=Ymx zlfBDo89R4(Rmtmf*-JJZiayMcv$?f0=4;a3{XG8}=3G0qE|j5mb>pSUHH8`nnPzSG z`rY>Qc;H#<sxNm#^%wC<%Pg*0uJH9`%-K8jX&omdcg9cj5Ac`2v?+))vZ(XZuUW}z z5>0%W?9M-f_e&*wTWa(DtoqN_UN??ko84n-tsOY;3Qy96j}9;W<fE$8o&PAW^)okI zwz=iRc~fr7^m7?HWuG0++J-OFdb@W9-+HAs+cLT4*Ws$A@tX2k>?iJ?t5|*3WOnH0 zo%MSxSLS}z47PlEBPjO9%~vxsX6C-Dt#948|M}-N+^Z|!JTr_@bUXgw@Rd+=36a^I zF>(wmLmqd<TTbcMU$Jr_>#;X{eDz$B4D6TY=gV=XTZdXcUim9*Z}ZRVT5R0L$<N*t z82(vx^y%-)wNJJQ$nd`mm3rl{Bwxqj!C$SXTlVZJXsx};C0V?C&VL52OM$zTR`%~b zW|jP>tMF%NQ}2^L+tu^0tQE;qV7hUKP1|tl?Ma@izW--1dEIzUYq|fS#%ujiWfo@{ zl3&zjR^B{avSRn8{|pD}qkMw6oZowCzSw)-t9tGNu?OFx`m5(ZvRLr<^VcQkGS0pK zuyP{9@4H!Vd-r|6cVCNd=DX~mdxm?&;_kPm#NGM%-S0)6<EQnP|9p=6r6%k@D|WH2 z8v8!>{|s?U)7#uqZ$I7t&nk26E=$Aa{+P67(JR&~X6R3h(>uQFck``{Uv)L#OgSlC z`EB`<)qm{YSB0frJ}C37mHqmsm6LSzEZHyr$vV6I-JCoN`DNBuXTF{2<RSee=k4*T zb?-bLlssCSdG58b(Z+Z^GyD0c|1)f^n{qw>lP3SYyUknX-7O4Xd+upy@;SFV^B>v% zXV8BcJ#9^7aM6UF$CV|HMjfy}#9npoN+Nr@N}h$XETibTwp$W!6%?K;ZGP$=Dd~Ri z{MoN7q{LiL7t|V`_@lWyL$*3-{d3RjYt^ssHFPibZhq@I%h5fnBy<0~?qEaC>+7?c zS?4^t;Bk!I%da{pX-SO6_tjz>wjSAC+`_DroySpR@%L7l>?+&1=Wnk4b1M4O|NCkE zdC}G#*Ikp9{xc-qUeEp6-17CwRZl<M`5cxwyHUF4<ky!z6U*kFDr%WmtL2^jQ=vwg zcS%wEge=W1zpW3&-Mw}$CjE5&j=K4G*WB*5o-M<<NMrfpKF42Dy)lMd`;FxcUq}B6 zn<+gZkA2473$<5%{hHPHPu}pxk@l?r3><OYk@|D*ZC#lt((E(KhyR|30Ke~o{|p~P zncePI*M(?_yx+cYt+qt!4EfDR4_K<C%l-NIGwe#(B`vp2B8M6*o||S)ejTu<aHpZM z!1K$Js}{R#R)5C#VB4cLcj~4*yR_ya*YRxmvse0d{JO4RyZq3qLpp~Q9?Kuf7QL`| zO6g(#bB(SF#~(YF*j<&sG(CTBY_`V7!$~u)saDBc(akwgS5=)Vu4UJ>@aOho-?TTH zGnW_Dt~}Cs=<*`BsfQLlo$+WFw|1y2=LNp<s#%*03uWi1&UiZAy7qidxS{Rgv&uHT z)6{467J07CuAEx(;<A0|jOwcY3{kzy?2gTw{2=7C<uPa3;~W2JRa88ET-Y;j!KI%@ z{JSq-F);a9SjaB8G4}9QCW-VZUiBphgq77#PyA<Udu_GyiZ0Pl599s*GsJ}LT{|r) zxa9cR=ZezO#kV$X)fLNl-v8!JYM0xw=ki9i{tvG$-?~@-X~bzEr<u2wl*mm@t2HY) zvhKL-^`&A}iBrG(HMq4e$a(&sVQn<yRFOpu3kn!yHFs}U(Ejt%`(0>4^`%V=2i~&o zEe!NmpSJiJvuRxPrXELot6y^bw%XzWlQi#_RO)Un6m74TP(FKHx%r*eq}n%^uYX!{ z)O6Rpie>AI{r=cT?UL`2f9`czL~h?zq4hI<>SSF=xp{eM`khlt{{=SsG|3xGE8gnr zuHbNAUHRVR>E{?NmOcnuHmOUgQo7AXuexim>Y>BpXR5<guU?sM^sczUxbbD^XYV;& z^EmC?d%m2@NIS1IHGZRn$s)I}rdrme=d^;An=BdrW*&PuHJo?yyJGj->kLmnsMWeQ zQ`^5@BtqUe<?-$LFQYy;nJH}(^K>$Qd^CHvyqUe`^!&4X4PV}=N_hNvjcl6A<cy^9 z?_d6fhJKa)(xQAW#qm?~yo#@Xeq9gG7r&XS+%acLj7+)he}<@a*X{TGEPM02wey%i z`+tVDKf20qu}|@su#E9-^Vh$etDZei-7-h*$#d4ic@F1)zVyppuNvaf|5@+h<T?GH zwATD;Ni|>6klxU4({*~+{-Oiwr&eFio~Jc&XTE;YhQMQ$uLB>SllU5wv|>}u>~_CL zv#d*>Uz&T--99RjWqr;pC+p<T%X9xTRDW9eJt0_Jee%5}{65oSSD$<xYWKN5s%BE* z_61A3g#Ju!4C9D+lp5F=aQpD{b1UcYq;|Z~dU|D%#G&J#=09Zq;Tl{id9~TBs`S~S zB}+`6=B^Ers}k&TExiBbtv{=OU8aTX$#08oIsa(6PU!Q`j|zI)adP!9=buq6Lh~GJ z<o5pfxAjtt$NbDbg#~kOZ>knN8?kqX*)*q+nASW8iB}x*D@D)vmtFS!EK`1B<(DgJ z-|lulths9KZ~3I`S9oBh{&ewEWgCAlzi{1dyR&MPpF1PhyP%5KuP=W->b0GX^{{cr z)drcAImu7$+rPZLmpWsK(7!iR1phNs_dBq&umAaFm42a2jm~cQA03i%k1hXAje7M| zHZ+MrB{{FasMa^QjAyxy`+{Rx`#w~KY<v6r%JCJePG1+5`c<}^$>Q~iB`<dTS-Jl9 ztg?^)ioGN@J_%lFdDP{|_9&;l4a;>R?9J6LEqkH4?q=}WsO^qCtaJXHF*o0^=4Z<1 zIoo}{$TiLOs0u1K>GiNmTH^Mc_vfY0_ZpAKP1)TcxA&!+@mUL*uYXqlIBqxPuwwpn znQ+%-uaw?yKV@IjWp4PwEhKNPt>-LXp{Kztf96`eI6ePq%%!*fGaKJu@7lT0``PQV z*}tbBkYzt{<8O9xbY<v-<R`yAM+CiZX^YX6sh^)UGcqpX+?5df?plkt$7{-0s#WHu zX3o0lC473FgTmuUH(viU^$YvY;Qsf?#Ld(0ewshyKZ8%{%TP{>$17h4&i^`Z-&cVL zA>SVSZ1`)j>c-*f;Hqua!L#3MoU?tow5<Q*GIN=(*yi7dKdqK#dcc(^`E5z^OW#!4 z%;MH%@19Ms_0L)qe&>E+wczzzlYS-Dx#s<6Fb#gZ{jsa6dd)1i6U+Lxyeh~kG1>W8 z<ej1C@u;buZwy^#Pc7W?@mywC#oAatr|Cht7C&umkCsf%sg-(TZ_#*L@_DODxb&PJ zsmmX(OWoa8)qAA=K5wks;<g(cKikjj{K_!@h4%c3ET_1hdOUK=`NuZnI@ikIE9Fd- zpC;_I_et;n&k*Wvcj<u6Btr?sqVQ+G<o+}K+m|`<)B?RvUB!O{(`9Y#&wpBV$?!8@ zZQ*fI!3mSEtIfRrpJ8p-nqx6#GNGnV+cHJ|GnDlon(}E*=~=f5o8);@cEpGLd3Ctv z`K=kJihI&UE*ails>dO6`Mk)r*Rvef9M9^@x^zy6r{wm_dn-2TUb&?I)GNbeO7HPH z&Be_<#qQ2;y<hq>_g8UUYMgfbb$D*#z49`-tt%F(|4a>i`O?oScF*C)=C0CdbFN+I zJNUzJs{GQt%vYNpsU_TQyC%Ew%b)C4S;ptHu6(%Xw>7i*?|+8BjH_4d(Yt+BUZsE6 z&OiJ1W(&QNO!z5Yc2x4AzfIxwJ91Y&Jy_eG#4edCacbWF<?{b_HSBxNJTr3VVYLhV z+wFUG3Qt<U?Q~FYaAxd}^B3vs<yo_a@i@a1`H!N3jpq#SP2iuAwC>11-`#fa7MnWR zPgj@SVbUz|^2^e5!96lTkDprm2X}Qmw%1kr_U+HnIPI6SGGvcu1u(L|7j}%f>=K)0 z<{xvZ_VC2(3zqG;<LdUZ`O~G`mq#U(W@T0$Rs0oH@~qKS<H4m>lfM_g?Ao56;jep4 z>y;bRL&t9`FV_1<&6I3cUK+h^!gTI=3qJYAUQTnJsQhzEll%92uQp$yYx%p@O8;jN zcm8=TZl?Urt-DKG-rZKaba&&0{|r_yo--b9sIEPeFtK_5>mS!t4^A|HpdoqaV}IS; zU4I!YzOFeL(yFl1^6OuF$3Say)?IT7uZ#Q;m~lTjC&@hBl$+`Ij1@eUFaLQioAT#) z7T1$>nULwKL03cF&no_9k6PWM`2Er3^>M6Rw)|BFcNtfFn_$ILw$jXe`Rnj5gEyJ` z_5@3C709H`KL2oD=8m7MY|>&3kFnb4i%R;R>eu*H=#%j`%PcN)&#$kGZ8hz=f~>h1 zWI`61o;Yrrr6f?WAZdAIkpr`+#RRFM=i5!*q!iEH?=|h}%=Dh(X*p86bIwfCSE#wk zY$Jd8+L9~zcE{4C`(pbH-(T9`Am|ovG0AV<)xE_l7Qanlsh3*${F$xRl3T5N)|IV@ znZtNnW`gIR`nf^HxeChld7iShg`rD7O^Z=Z`Kxu=X;<wfm3K8~{=8yyS}FUtZhq7< zXS0tNe$V;OV3j9Q_|o_GuF!LgHYwk}FN;0<JjPgGYrj_Et;IDhG4qz2oROXLZ_29W z?323;FZ77L^gYJzIIHZY{q8@jS5)&%D7#v|G5_83d#m=Ym(g6YXPs5BB*)vMZYR$_ z4m@U;R2aly%c{&gE5Pvb`lX6q9n0#r9GdyoC*^onf8ue8rP{xO1kZ1^toWn(@Pw(- z>C3iS2PQmzYVj+i+x~RpoRCL(_qN&yt)I1a`<$NY(9@btcLd7y_@(Q%^6lRFHCgV= z!h`2yzL^R|{ayC7TI1Q=6$dvtJ?!vFkoh?4Y{bkv?h=*K8yt5lzp!2Pbzfs`(W;2r zxzQ`9e5!w7TW=HAb@Sz|pnUbW;oRqEJjjhd@WDPf=Jna<-aEUC=boQb9K6|uF~m*& ztzh8XRp!NwUqp^nbjEMV|Frp{<;$;Ycb5E?^|~2%Id$)em)lz>-+uk;Z}z+$eI83c zJqrs9yl|yfAn@SJUtJafhS#@(TC}2SkN=%5zww_TMJj!o^{)`$oVAl1vi3}K&X?7i zGp+u)XjpdGi=C_Hr>3wg%&Q6zczjt_lPmY@VhNc`RhJ{(3$M*6;B^ar>Dl=6Qm(vL zw!)IY#y-u${zFp=gS3++R*G&s>$&Iq!Ign0l;yT=U3&9qiQv;r=cy7}$88K(F1@5a z?c1y1{(FYEj&3~oD|B_X#F}$zJDlEL{*f{7)5)Z#H5blqSSk5eYxk?(T%kqBS?46n zYkw$wv-pp;*6X-T;jG=BUt_y}75`bSRo$7ExVKGw(RwaTWuB{g5BEAvet%SH!OYVq zINFRq%f~zZxSad;-h&f2Z*5$dbl0#eTKc5!l0$zk?&oRw7&ZOd?H_aN0u0voh5z|g z|Le6_gp~N<;(5;cPMWg|YFDl^*F5ps_ZXl5gUp-%8M6FO?PaOW2)zE%?cTB}YOW?n z)?VN1th&II`Nm_@z%_2)ELLrbc)-Kea@#;wvzM8FZ-7m8=Dv8#qlS~&ml~`*ztpt- zRAE=9^E_8I=}UcuUl#Nqnq%)(^n_3Iuxi6Wm3fEONld%{zW4p*iI=u0?yRoY4CkI_ z&zJS~>YI&scXM7<Na8r1tSoDIeS6l*Z!bg{em=MLEYq^O;#;d{C|z0kO1S^?e}-$T zrvGQy=kRCJ{(E26Y|^ZB;?r`S@a|X0w~yYX3SD-#wR>L&{kj>bo0AZ9barvoMrO&s zSw}voM5Qd^DVkqVxNDP1n&GR$2c<u=muI-F+}dz7>CUZ6mNnhG%>ME^{W7fBb36Ui zFS)DpO{aW(V3XS)wdy~ECgZMRpXb-Vu6GN3?ZsxV75v@Tf~SjBPveHImND17ts>KA z+DNTdo%p1uYt6To0{4fZPq$d_3QgOlFz3k?ea5%vMLGMKFU<(J;xl)pnV`q%`%5Lh zF1daD%ktL8mzHhr@h)d^?dnvCIL)^}xNEy*W1gy!$6>x3A#eTetk39Mxy9{B|7)Ks zhAOLW9Qbt1;`r0h>wS#MCc9_f{=8i5p4mp3Z|b6<4^#52r1H-EXZZRmLgBNK<Bc8m z?V>v~g&f5$m_3;PJZyW@(LM`P);Ifn=j@PmV@=7_I=kZ7-Lj|sPh)L@WQt#Ud|dO& znem_KT#??y!lx&s^W5COu2t(zi3>5BA6FdteOBz2C8;cV78a(_zr}9<t2Te4y(E6A z((mB?EtfYQ)p#_0ufBY*#A1<F<6Da}8f~pZGjsRl&G%aI?SSxc(Xi;e3emuY&zCw~ z>^p4Ay?n)ro3$0o-X4GIoBDMr_w}Da$+zaS%uk=C+4OXA!Gl`9Z1=EjY%lMb#!jkv z5&mP<)@|=M#<ZLZSp83C{a2Cg&V`-(_bj(>Jn9fGYtQ9W7u@HU5o7rLKg0DP1D=I` zc3X6`iYNJB@7kVqQYts_Xhf!?eSZ~8`=?b_tp_u%=^aS9GRseqSDm?BCTvS_fBdnf zk><i}&tLoO3AWw%{F&qNOTAi7r=M)RbNHF4$-5;9=63t$)*qU=)ArRV|D9DSRSVDB z<|Wyl`s?boNt=0V<FAnB1xrPeX9ZqseCu~q;%5f4`iF&+w>n+WE)x~L#bgy~nZx%_ z<gut%wD|L<reWS`cfb3FW*AtqD=o_Cw_q2!EPwW`vwPp2;IdyqMvu2gU2NETZr<+i zmc4s6Fg<y5;P}I9i?%Z{R!BUkOsFk7{3|%6-t3my!?JB6)%6p9U6F2ANf+s1zbw+g zDpR_!E!?L6(%jwGdy<y*PT}dx3i$K<^12ND`|?xMc2{l|d>?hP#ex0QDy@_Q3SU-E znPl~$_Ep5w8$V_KTCUpYr@SjtR3dTT`=v2+FP!kR?=}^G_n+bU`j=5>dGb$doL}+a zvg>Z<Po5KBJT{pZ81t_Cqw}mHQ5CII;eRI|TzO?*727Yl%tN8)E#udESOt2y>RFg1 zKl`J3Ah^&`q_rqZt<|q$#gffoGFK%{KK4AGzcgspab{C555B69xCmxxkFU#2Dps6& zyf$Lvfr*dRpH3{WH81q7_;ccBxJ*IuLA&|qmVTO&x#E;#?R^8;c8h=UKfZ=(Ut5%T zey_TJO;CTK1N;8VYkd~?q)+w_+*0^;;qEz7OY>Tv$y!*Nu3)saN?X$LueA7dM&f5R z#rm7)&tz?x?7!E==i+kv@}HL<`53B9PpVX3YvmMW7e43D{Y#5K`+uMPX>H3+_MU&G zMrSzA=aj8vW@DQZ8e3P&V>feIhe)xsQ7ym7+f99Z$Ky|2$=z9eT3z-y^GA^<m7c1F zO23+CO+TwrbJ~w@$HBjuk6C}%t~?Ozuspf{(CofU4x3Ajvl4scu8M41<-RmzvUgB% z&&QC|OH1Oax)$rs>9PvV)V=HO9B7g|vG3TD?&4j~=UM(|uwVZ$O6}&n<B2{tx!bkR z`4|4`|NZ1DXYMRbo;<t6pI6fYCo#UNkFuG@JXPWMC5}^{|Ge}#9#vGt&JfbY@NY{W zw;~s}p$+S^xrvDdpAwvYpSO<4{ZqMC?b17?m=k8d`Da}I^1I{VXR|}DhrZ}ktazIA zX{L(xjIR<eecu>gn=C0ak8x?4VpaKn2K#eMZp^=*|M|z2SKTVfrwWet*&1YoPUXAT z*1EG`v8j#u?8%FDqnn=CyYU9EUM;`Y%Wxk5Yu}8(+d2#8zb`Q{-T6;aqT2k7#;sSD zp@nbi7cM!){8`h_x+nOXkhx0x&r3}Q9=1RAw>YX^Wxy)$rJ*!||EZ&cYj|}^-Tu~~ z9hY31+t&R2QaR-*-@B|eV#P}jt=5!2cj4a52lG#xRzKUeZF<5<ixcs2hJX5BMvD7f zirM^xEx2*ps(s#*=kfWQTHT9TrNw!J_51R<ezlFE`@L3O*EwS(e!C~MJ3YK}pO1V@ z=wGFmO1m^ZF1)u~QdT?p?FDVIUQzj}JchTo%eRKl4pCCQ`@Q&k<MGG8u3GoHN-~6{ zy(!9C?RVx$|Mc}<MH_E7UikHG`BU$N2V4_H3$z>-JTQDPFLQoc{k!_dTPmZcGd#9< zdDNF>nb~c_&%*LY|JY5bykLLs;?x5_ua|Gn63h6mJpXI%p^rfw+Y%>!o_}d+WQ0tU zR?4p2gJqwzj+A@tjp$z+6?x_BQ5%6ny?bW)t9qUcoF8~pv3KXKs&9$D8T(>#^X4DQ zGK<|`y6tbp0-MFF-pOtGI=8s(XXYu#nC4k!8gG9DC3pEh6v<t3W63AYHjyN|IQOca zXohnU%{!ip3cuW7-Mo2UVW{dwg`~Q`pP`X8R(qzX6wlL|d#t%&#_jgMS}nV3&*XkS z^7{O;%nQyNw|zaoe68=32@e~On*KRZ_ucK$;@rCt&srJX&(8m_eA(6KlYfP_9=l+C zRA2JBdROR#l7n(rzRj$2?!EI|WPV2dr$uWkvv(^bm$9)se)+SCZR!*OtF(4`{p%w8 zq8{)U2e~WXp8Rw-&&Q@B!?S{?eoOOSSk1>STkln|Bi*HT6{pXfbe2bJTtA=iF8<Wq zHBC&-iPM6&|I%FED@%B`M{O59JgK<n@j9&&6F1+Qw_Iti;}=u;N$nHN<_8`PpRy&l z_jX%-2eW6+qKZy?J^S4rXD-gsHZ$%?n=5ms><M4iIm@GpBFXPAHXb$kDpD_|$;!Ue zqA_s0>#xgRnom}o6pf0uP$}MJIPw18z?~agm08RA_P#b<6mYxp;Il=73lhw_vJcI) rc<a%@!F(lT)ec*KFY!4{Rl#0wEm@vhEO(T8e^PeU`APGp{=W$Tl&GgT diff --git a/skins/standard/params.css b/skins/standard/params.css new file mode 100644 index 000000000..0390c50e3 --- /dev/null +++ b/skins/standard/params.css @@ -0,0 +1,49 @@ +#menu { + width: 10em; + margin-top: 1em; + margin-right: 0.5em; + border: solid thin; + border-spacing: 0px; + border-collapse: collapse; + text-align: center; + color: black; + background-color: #edf2f2; + font-weight: normal; +} + +#menu a:link, #menu a:visited { + color: #039; + background-color: transparent; +} + +#menu a:hover, #menu a:active { + color: red; + background-color: transparent; +} + +#menu td { + border: solid thin; + padding: 0.2em 0.5em; +} + +table td { + vertical-align: top; +} + +td.selected_section { + color: #090; + background-color: white; +} + +td.index { + color: black; + background-color: #edf; +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: 1.5em; +} diff --git a/summarize_time.cgi b/summarize_time.cgi index e3b0cbac1..66396741a 100755 --- a/summarize_time.cgi +++ b/summarize_time.cgi @@ -27,12 +27,12 @@ use Bugzilla::Bug; # EmitDependList use Bugzilla::Util; # trim use Bugzilla::Constants; # LOGIN_* use Bugzilla::User; # UserInGroup -require "CGI.pl"; +require "globals.pl"; -GetVersionTable(); +my $template = Bugzilla->template; +my $vars = {}; -# Use global template variables. -use vars qw($template $vars); +GetVersionTable(); # # Date handling @@ -524,10 +524,9 @@ $vars->{'check_time'} = \&check_time; $vars->{'sort_bug_keys'} = \&sort_bug_keys; $vars->{'GetBugLink'} = \&GetBugLink; -$ctype = "html" if !$ctype; -my $format = GetFormat("bug/summarize-time", undef, $ctype); +my $format = $template->get_format("bug/summarize-time", undef, $ctype); # Get the proper content-type -print $cgi->header(-type=> Bugzilla::Constants::contenttypes->{$ctype}); +print $cgi->header(-type=> $format->{'ctype'}); $template->process("$format->{'template'}", $vars) || ThrowTemplateError($template->error()); diff --git a/t/004template.t b/t/004template.t index 4edb6a3ac..9cbfadf6e 100644 --- a/t/004template.t +++ b/t/004template.t @@ -96,6 +96,7 @@ foreach my $include_path (@include_paths) { html_linebreak => sub { return $_; }, no_break => sub { return $_; } , js => sub { return $_ } , + base64 => sub { return $_ } , inactive => [ sub { return sub { return $_; } }, 1] , closed => [ sub { return sub { return $_; } }, 1] , obsolete => [ sub { return sub { return $_; } }, 1] , diff --git a/t/008filter.t b/t/008filter.t index a3a56e005..92d4de33a 100644 --- a/t/008filter.t +++ b/t/008filter.t @@ -175,7 +175,8 @@ sub directive_ok { # Directives return 1 if $directive =~ /^(IF|END|UNLESS|FOREACH|PROCESS|INCLUDE| BLOCK|USE|ELSE|NEXT|LAST|DEFAULT|FLUSH| - ELSIF|SET|SWITCH|CASE|WHILE)/x; + ELSIF|SET|SWITCH|CASE|WHILE|RETURN|STOP| + TRY|CATCH|FINAL|THROW|CLEAR)/x; # ? : if ($directive =~ /.+\?(.+):(.+)/) { @@ -221,7 +222,7 @@ sub directive_ok { # Things which are already filtered # Note: If a single directive prints two things, and only one is # filtered, we may not catch that case. - return 1 if $directive =~ /FILTER\ (html|csv|js|url_quote|css_class_quote| + return 1 if $directive =~ /FILTER\ (html|csv|js|base64|url_quote|css_class_quote| ics|quoteUrls|time|uri|xml|lower| obsolete|inactive|closed|unitconvert| none)\b/x; diff --git a/t/CVS/Entries b/t/CVS/Entries index 67bf31b23..b7f5ada20 100644 --- a/t/CVS/Entries +++ b/t/CVS/Entries @@ -1,15 +1,12 @@ -/001compile.t/1.13/Thu May 26 20:07:35 2005//TBUGZILLA-2_20_2 -/002goodperl.t/1.15/Wed Sep 8 22:46:34 2004//TBUGZILLA-2_20_2 -/003safesys.t/1.6/Sun Dec 5 14:13:27 2004//TBUGZILLA-2_20_2 -/004template.t/1.35.4.1/Fri Aug 5 23:49:16 2005//TBUGZILLA-2_20_2 -/005no_tabs.t/1.12.10.1/Fri Aug 5 23:49:16 2005//TBUGZILLA-2_20_2 -/006spellcheck.t/1.5/Wed Feb 2 16:06:51 2005//TBUGZILLA-2_20_2 -/007util.t/1.6/Tue May 10 20:30:13 2005//TBUGZILLA-2_20_2 -/008filter.t/1.17.6.3/Mon Mar 6 22:20:06 2006//TBUGZILLA-2_20_2 -/009bugwords.t/1.2.10.1/Fri Aug 5 23:49:16 2005//TBUGZILLA-2_20_2 -/011pod.t/1.1.2.2/Wed Jul 27 19:22:25 2005//TBUGZILLA-2_20_2 -/012throwables.t/1.1.4.3/Mon Apr 17 20:46:47 2006//TBUGZILLA-2_20_2 -/testchart.gif/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_20_2 -/testchart.png/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_20_2 -/testgd.png/1.1/Tue Mar 15 23:58:06 2005/-kb/TBUGZILLA-2_20_2 +/001compile.t/1.13/Thu May 26 20:07:35 2005//TBUGZILLA-2_22 +/002goodperl.t/1.15/Wed Sep 8 22:46:34 2004//TBUGZILLA-2_22 +/003safesys.t/1.6/Sun Dec 5 14:13:27 2004//TBUGZILLA-2_22 +/004template.t/1.37/Wed Sep 7 12:05:12 2005//TBUGZILLA-2_22 +/005no_tabs.t/1.13/Fri Aug 5 23:47:27 2005//TBUGZILLA-2_22 +/006spellcheck.t/1.5/Wed Feb 2 16:06:51 2005//TBUGZILLA-2_22 +/007util.t/1.6/Tue May 10 20:30:13 2005//TBUGZILLA-2_22 +/008filter.t/1.21.2.1/Mon Mar 6 22:23:35 2006//TBUGZILLA-2_22 +/009bugwords.t/1.3/Fri Aug 5 23:47:27 2005//TBUGZILLA-2_22 +/011pod.t/1.1/Tue Jul 26 14:23:50 2005//TBUGZILLA-2_22 +/012throwables.t/1.1.2.3/Mon Apr 17 20:48:15 2006//TBUGZILLA-2_22 D/Support//// diff --git a/t/CVS/Tag b/t/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/t/CVS/Tag +++ b/t/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/t/Support/CVS/Entries b/t/Support/CVS/Entries index 9e8b01d0c..29b12f0d0 100644 --- a/t/Support/CVS/Entries +++ b/t/Support/CVS/Entries @@ -1,4 +1,4 @@ -/Files.pm/1.20/Mon Dec 6 17:03:00 2004//TBUGZILLA-2_20_2 -/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-2_20_2 -/Templates.pm/1.13.10.1/Fri Aug 5 23:49:16 2005//TBUGZILLA-2_20_2 +/Files.pm/1.21/Tue Jan 10 23:53:10 2006//TBUGZILLA-2_22 +/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-2_22 +/Templates.pm/1.14/Fri Aug 5 23:47:28 2005//TBUGZILLA-2_22 D diff --git a/t/Support/CVS/Tag b/t/Support/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/t/Support/CVS/Tag +++ b/t/Support/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/t/Support/Files.pm b/t/Support/Files.pm index d52380310..4f1b619b4 100644 --- a/t/Support/Files.pm +++ b/t/Support/Files.pm @@ -30,7 +30,7 @@ use File::Find; # @additional_files = (); %exclude_deps = ( - 'XML::Parser' => ['importxml.pl'], + 'XML::Twig' => ['importxml.pl'], 'Net::LDAP' => ['Bugzilla/Auth/Verify/LDAP.pm'], ); diff --git a/t/testchart.gif b/t/testchart.gif deleted file mode 100644 index a4ed080a0265a19266fb6d1810488cb07a6c2a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3751 zcmZ?wbh9u|oWMAN@el*U|Ns9P7#L1K80#4xK77ak209=Tq=td{AIGjc{|rufuHI|$ z`t0ui2^xJVne#GMt;>16uR!N~N$&lMb?<B5|39#xz(Yr>|HP7_lQ~xNFRUo>S{t?g z#+tIzZ>#n{*ihl4H~ajHEmddpcHjT7qsDLj?e{;56ZYR=SE=V|tgUQqQ*5s96zFQ{ zZf>7ANn!%SRIdKMmdQ>m^X7QfH1*7yF>Uq&yLt0hdUh{aHgj21-PUc}ckJA?d(Yl| z`wtvEboj{8V_OA}pE`Y5yK(yBjZ2sJuwJ`<<L0f~ckbT1|KQ=H$4{O<T+Q<A)$0qJ zqu<JJ;$5`-Q}4;wKY#uH^Y`D47ymf-u<^@@Hp~4<aN1@drB!~F&1;UwMkVu-mpbpX zZ~S9boWvmI+$9sqr|emF(#nsqa??`pNsRH69-lb+Sa6zA@vArD#p)Kb-iQ5?@d}x9 za?#y}tc{s0>X(*#^gCT$X2N}0$!~eq*_*}M2d5~pbchNxu3_ISbit}+($&?`6Jzg( zl^SegirUKaA?w0zhd0fuU2g4@wF!LnU}r7kho!p@<isBBSG@mq^@EQ$j;8!%l2e+o zA$?xq)2694JGZ<%Q7)|AHeu(-SEn|pXNdjUxy}A?i(s*buT@#{>B+jmGjx}3e*5^b zle`?Sl4<_dJ;|?Q=X}@CeRAWZW;~yE%jZ*liPm|#^FF?2KeAZj{5iP?Wf$+xUaZFd z^ZV<c7YyU)mG9mA?|;sY+GWwAvpF~3tG}`L_}o&{uk8!!x%6H*G<pYc9BJgQ6HCZt zmV1)Wb|UwLVsTh4$D&-pXKqSjV*eT*cE&ATkyN89#-7|^<aJ^`#|syS1MK!*8&0*T z-Fq>u<9I2@fe9ikJ5^ZxiUgK2`}y5m#IG+EDKg1(-HikN!A?6JCir|?!7$l-(<HT- z8NYTcu8OLfwm97(G3EK(jIf_iXC}Q``FygkP-gO+{Ij0Rrw8>_rp=6>7P)k0V$ey2 zIW5OBUi3_Eda!&^!>5-kmnXWNYFH8eZ9?i&{ld<<lO%FxsjX<Jd-Q6>{7YVog_ke7 zb!ln)y<3el*V|dC&FHq1S~{zD+dog<rMuj=p6Xq*Dm-Pg(aKq|TXKB8->%!k)uGXN zE6;k;);Ed2T~^vW(aK9apOvY%?%}%Z!0p@i-e%d=b78Yi?^J~)>-KEFXuW8C*aK}1 z)9(@K=l2OSoypx@c<Xe_LCw9N(hf;H{(L1uohv5a=uC@Fk)CEp(ne>=`8NC^GU+cq z9$%~RM?g#Sd=B?%-T&@-O(KUUemrREyyep|%kA5Z&l_IW@s;O3{rP&x^p`w_t86zf zoN#u+m)~hFF5RpTuY{=Q9^S7k+N*qHYM8E>YLx5T2d7uB^JTuNw6pfkMTJ$m<*X&w z-+sL**}3}rJ>f61lkQ3_y8GrqOE%Beo6Qevl^*y0v)?QFsP)iYxu;Y4@0vZCR`sZW zaZdTY_UHxKOLx{Uot?+|YNfrZ<(74u6L#FMZ`b?vV#)P)XQF2~Z~axjc6OchJEj-s zeuwXyZWHmw?(Dm~&*zx=ZNm>M`~KxTuB>14?N)xg)At?q`+t8r)9ugnvpxQQ!Gjmk z!8Om{WQ*8*>-ub0|Mcta_jWN4PG9&Zb=|)E&UsZvkp;hweV_S1Q>BqB<^cy+h68($ zOI7#e2Q1PVj-3ex%~CEdxqK2r9M5!Hl%6EK^GiA;yvRUq+slLlpTzBd?iFZLp7PMn zZpT_ip}wYn(GQuUEp|$)J+ZJl!!FpJ;ljsY*l|)@kvF@8SN`4Gf1RQtO1qbNxJsK9 zGDn<A64Bq`A`uywm$-(5)3JD;Ue)8CZ12TVTYvN$UDE6OvO{YBwlqr>H9;Ah5($~< zM!jV$YvmdaoRhjP=;0_-5P2cv))|(Gb6sa0?sJn$X%<U5;p9{#w{^u6dHqAK=4sB8 zTT0wjY*!k2brtpe$$0W2;H1(N-&Ye@6Z=)qH=cai>6^W3%9Bew+UCU8IZyj_`0>>* z8J%lBUW|V$`P8&Za-)8e;jBwb(oEORWVCb&?7a0w)m;C<+59-8Ige!2@Bc~mVVHVp zif5p@<^RRbC3(T~L^PIL_9mS#d33pO*A@k%l^&-<UKn?rtW>wT|Kog(QpWUue^o*p z9SZ{tnT!^F&(Sd4=y^Od$z-uq?hWT;^MGK#DZ-+z8k)Cv1k}zc5z^ec!pv^gwh2sA z=1$Pow29a1oN?-kl-1ppzUEz*MK77;IE!Ys6_tf7QM)?T`)Ndg_^HbtKSFwfm%a+N z6~DSBt912p>xmJwxSTfZ^IMams~xf4YW<d1t5&rqXiJ7Oo}R|XvaW5yYcb9XfxAC3 zuW!BZ+Tp@Qzx{p88!82IWI45c59cv&tO(GNE)S15UdOztd_s<nVp!zqW0%*Y|CREV zejTYlD|GV%mgscvYOf1zX4Z^Ry4jbvhb_)+-!kuLPV1MWXVO0fuFOx?G)u9LzPl?) z_}{-@OD;E5Z`Tx>zV+B#iNg)c?s&F|7JRsUtho5MvtL=!4Exv0T|rx7PrH5Jv1(6h zX=|DBfllV_ZMN@yb3E_13QjdB*2=GWTw%CuW0BOOsljy*v%`NTwJM%@vNm5hQu^e} z?FZJmzIAQo?qlD6<$zuG2B)o#57y5!E0jLh*4oMy#kqdUq4#e$cq;eYpT6=&uS8vQ zXS!5UUXR2vopUl>rwbqJ9lOD6{4Jw*_r=Fj|90>?>K$<Cmf5cy{no?z-?8rAImuUD zBTogp&7XYT;PC>Z%F5`l=FZK(o<@d6mWA`V&y<aPv{JzE^vN9KS(oQL+IQ~SmaTJ( z%hWfeRkm94u2}ld*z&=dXZ)vEpKr4MyiMS)v#b8B3$K3}OHF#S*V_Kt#r}1xmwwz6 z>J?sfdCS``FC_kk`J_i(E}ynVuEPD*tW%X&%AUPjEqg6%g5A~2sm)uWT=&|<POrMQ z<=fWPyl1l#y{}w(z3QuMXY8AZ-=SBnU#xX($c$a_?bc0!f2wCKl+OHS^111==aIqh z?E4IdrEbeT(?7JU**oA@W7mVe1-q`Vy;o$s{pN}?oh_vkOxq^ho_vq5Y~T0QZ+)H? z?(Nv~a_hz3$ML_a<GJEam+b7?SJAG2{zKZ1{)xID8sld?zHe5x!*E_<ueszCMf080 z0_PRI*!1UuQvHQ}CmUYRiP#gP-@fzTsk1z9CROiwc&04*Oy~6Cx&P-ZaP|Lo!F+nj zQu(>3Y~MdRyIZ7m{_EW@{pzh|Y}8w~l3(Y=hnT86tMp1Y2Ft!#_N8k5g?ZoRs?U0p zT5i2H&8}^hu<Ki^U0YK>z7yNkeehkm`R?rx^h$RApY=9T+-8}_yYPMaN8cwh)C9`d zi=Jq9{M2avXCvqRvbFBBUO)d<v)D4e;_UCuqE&C+Hm$CWJ+HOz{bxS?`dztshlAua zr|oClnwy#5W&Q1&>&aT)vh&pq#&7R#X8jk?V$b|YTz(JN|G%%d9{M9;@&701d<!)l z+rOvIM`!Rh{wu28|NWi)(qH-;T#bX@`*b>gK6mOq=dXX$H@*DvJmp{5%Kbl^`G5U* zJ743+ais-m_4<Mh;SH7j$yJ|@Rh(SjV069y-}m}Y?2V%8jaG>btjt;092(Rc8(9`L zvL0wudDzI#*rfQPVU2U6U`LaMd)2n|M%EQg+8R}-k2Tz3Z`O5e`uM0y$D*v`dV_66 znOQ}%BZsj)M@y?&i;G9IUP;Ru)h4lp&CN+o(jCo8imhjyS_3=;BTk5gSj4#QDDzrT zpE#r3v$dgRW2?}`*5{vE6C&C+Ja6*PXbse8p8LJbZ%51G>Fpof+ha1?%Pq<qBC32& zloWBawBBgqyI!YKRD11NTPR2Sz3_t9$8!IR*2b@B`+J~GP2pd)*X8Pdj!yL%9d;}7 z*0vPPljxeTqElKi?`3HGvFEWF63%rR0&_H&dUkj{I$pKeqkB?E^?ma^cK7P<YF%q) z@Nef}dUZUm=R{nqa@Vb|-G9nEQarli&D&;1bkDZv&|TVFf3%mowCCA`9#N*=iyFOl zj(rOg`krU>b|24v^P}xuMw|21?yi<TagM&bFM2f`d!;n`+L!kK?&vps(f|KM|6`2_ z%riZ?B>Ollg?VRIu*_^0)SPI_(f{#8BEKfzs~237naR?Ue6l|U<vAw_TM8*x3aj4i zQ*NKAUCFCh87ca5g1V%T=1md(l@m=@3YvF{TCSY@xuVY4bFw3658J<&ZH6a#Z6zh_ zIj8VfOu4yZay`e?z@JlUB>EXVMV&1txbCcpJ~`FJeQMy%slpo5LT5Imt!(v_%rd;3 ze|cLK<M+vtC#SKc8qRg;d2)Tq#Exm6!g0H1)ULcyRi)YA_M>*y^tip(<C-;-vTs^v zEHT-@QCoO(O7YGqcUflsSDU$Y`;4hCyXK43HFOrtJ~=b!CI7Tc#?vzr&Ym!MzkP;Z zWS8E{Sra{`=@rg$Oz3xGny{@>ans33CpOO3yEOYb$LuQgIX#iH^uA7g+CJyRiaDo$ z&OWDEduAoyflk$9KWAN+n0@_Z*VRm|>z#9xR?NL^Irr&>xi3G>ec;(|);haoQRg$s z+<z}-&MT~#+Pt#u{mJ}~D<?O*&;R<e_xnudH<6mrKjvEqEMW4QrzAPIxMP9Q%xUtR ztt_jmf4-dkxwH52$p!O|&R-YVEofyX?6t6e`GO7(d8u6sOKvPY{C%N<Ri|p!qAfey zly0?4+=}A+HR)UXqT<Di)Lx2O+^VtKwa87fr~PG*P<W4(RK0~%p=fdEWXpx8+7~r; z)&~BHvgev?aAR?&!IHbvyhB&b*YWCHzGJC^u~ACYvb3sY8MBt{elRof)RIrBGi|G8 z&#>(A`6bx-G^(aKVb9iCeG(GoUCSqaUEW}|q9tlYTh)q=Su47Bt?($DT)4{bd;ojD zmEYe<?!S`Qx+XL&omjQ9M@nS=iK^-1D;Fmi&AlafTBJMm1J?<Im9Hju&tJ)28nsI6 z<H`r&<+E=ItkJTYx@u+8HJ^V|4K_)wIb^lwNYt8RRclVnT61dGnlrc7ocp!rg4Ehe zR%@?Bt-V&Y_QtHWw|1?)b8GFrUuz#ot$Sp(?n%_TXI1N7%v$$q*Sa^i)_G24V6X-N DkScU3 diff --git a/t/testchart.png b/t/testchart.png deleted file mode 100644 index 720423e6dbe63503d321e0be38b42203023a58e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2382 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKLEX)iH3`G;Q|1&T!2nG0rxc>kD|KY=j4C@(A zFo3}S|NjF+4oqiYU|=i>@(X5gcy=R=fq~<dr;B4q#hkZyyC*)f5MX=Yo0z5?kuTWL zuhg)5lQ4tz{}8dC2PGz~t@FIQXjk`Qiy1pVo3EAMpn7KgN9R}5zp;5tbzXysu8J9z zJQP|LumAOm*ronj``o_<I@7yeRc7es&Ty^WH!Vi`<NqhZPwdt$(@SYLnW^}A(_3ke z<pGz?66*i48ujQ;DE#x^d(Xbv_U`=p^*#lA9hdd;Gr!S%BdOq9{KG)HsQw*q?W=k7 z>z*p!->LX<QoG4<<<)8@K0e;+AQZTseUen<R)?U#^&FEjJa~%i+F##(Ht*>-SN=&k zC&Y^Ot+`#@>6BMB;me6zPI~qeZd-nNx-IURT<jNxlPl~Mp1a3B>x;=dy{*0b+XW^Q zm1z@KDknZZ{Pk&`34^Cu3cFFc;+AJ(X7SQY87JhPl(o0K<}}UzqA+3N*3Vz0SuTH- z`S#J~e*MKphDCA5xs{eEnmQ;1u4iJBiWGHl2wcz1l<C1L5aImBxj|W*ZD#+ASo7~^ zwl8;{c2sf03VX*{m-h%R|0vSx^L=`ogY>4>Idux(?f>o7zy5WTTxn?I0jW(+v)t!C z+yCd~t{aD*{<=Kll0b%YlH^P)Av3#}`R|U27HRP__OFpWai{gdtn3?qUN2T$s(4|= zd#82f9y{g*Y)<>N+=k`X<d4hmE6iB;d_(`)n);6$niuE&WfipBl;iv$(45cF<cJl^ zzs=JWJ64?b*{i!>-|lOhWTevMg`Zhg{7BJId!^)@J#$i<pZ|ZmX2p)SGXmFas?F1y z7D#<+%{b=2)ap`c`vkEqsXHc4WuNqdgQux$7eflCb<)$rl4jcqcpo}XTONPp6uShA zc<IE2qN|lTbl#qrxRg2b^6l21U9lY76s0EUORzk@(7438sdrZ-M^(y7hf9i%?sxTA zZVQNdSiSwxrr{{0sMw=3TcGC3RE3oj1f-ILoH}+1sZ1<8b>dQ!Olyl!>12T*=P3&9 zyH%F7t#G_`_qa#kc8-O;I;tleJu(8#ITcM^xHru&OLG3Ako$-6)d?eZMYmYqP0~VH z&TAZ31YU1`vt+K#CK1KlCvinr);hl64QxJA?)ic@u*Jp6sehLtM{>$bM<vBXm%CCe z_XKP`RNl^M>o}w6<`>7<xTmefbdyV3sj~X|1r8R0*Jq^1zt&Y*)5hV@mYU%hZuiD9 zB5-=cmlInx`l}j0xJ`4o;coOqQ)SPJ?v~mn0l&D9Jc(v4{4aOerL+`$>bkElFwOZR z>qpDCXI9*9EO4KumLe^bcZJt+25(?%&ZTpC9Y#xH^FF#y6XdXdwQIt9-j>$^Z90k% z-S2X^B&57_nl^#M<u04cBE?-3){7o0&v16~P+646q-3;dilU;5Qs8#Ri5VS6DobLQ zDZZMp`ND}y?I&DfWk3D4U)UzmaKgkzR_UrhZb!(KtBSs#zXvN^=nucuR%2e@IN!^J zFVl`iXc6C^ilwC|=AUn9c^>zneI>8+zI2ah+mx#PKNu%G4ZX{iGOIk=e@DZts^~J_ z)=PSyD!)ax%;kx_mloOB^Eq7T!SdzTzjr$+PK@|@Veh&c2FGi$&c+i?oMOKq)OTFE zLRsL|srLDc9gGwMqkmqAXch>!%PHecbz1bbX@}*$2=kQP>*I`{yj;-i;W0(Q|G2nz zn~glH&`s5gO*#GgT}xuwKh;F6i#zf9qig4c6%KLBg|ymi{_l3VWvY<BxlKs%V#6Na zpir((A61SP7uHW^o}ub0M%$GqeET%vhRRe24-<v=m*-D)QYyd3(J5yCmTzL~2j@ou zksS7K(-iJZuyBz$#MkNEqWEUZ?M4IVM*^7~<<pM{EGg~K<S<v^i`4c}I48W|hN_JI zQJ>vMg!&4j3=aJLCz$4;GOgf@bidu<2GbK8)~q_XuBJje&ckI|K}U&;w2@CXn~K7o zE#5j0B?|A`Z{p81Ra_{`{PKzDF@=wd94dCJEK`^>!9s<(MO3IgrD4ORJnlmroz6uL z7K())d>ra;k12eaV4=d@ve7$<_mb5SkrqLr_9u-OF6Z%qdH>Xo%CtxcwWl;qaDFtw zN1*7|TgMK?LJvI-Qx(3GtP7XjRcH|tYG32}?^fSlrFWA&*3>Mh%{^|nB(%}y)`5BR zuC?);UL^JHRQuKpP^1}r(-#PH-=c8%yq3BmhwfV=_4NXgKR+;MnkvLzZ$HY<q%A*1 z@#7<h48=kZHxA9WW{PW_eH=Y@tC%UaOt4T<ZxIq|f6@|gDNm${ztee>6Nh4<M;M3V z+c3o!6D(BpS@wG;iGkeBA}`dQ(zf7oo;a8%E7bm^E#Y#W1emwmJ4vF6yVLoa)UMK9 zzFDtwHB&rP!tBlnFG!la&}%~B+(}}y=f$lyNm)?q$->aY)p^2F-Xs2YBCpfmTYV)D zos>3yN}OQ%yxB-ar}~BKxt|}xQWZZ=YD{o?G=WLrie6`~$7_LLfe;UwAf_hI-GyMD zkB3YUOOwa$QZVm`US}zXg$kc0b7T7v#Z-k4TV}UAI6s=;Bv9ZX6U4#fx4V|ZK!s0} zwej7g5Qa?IBrYc2PUkMihRpShm!>s-Ii$Y+LKDwxo83Rwyo+j8s7*Q8V89|Gv~!{A zzE2BnREpgb6bnyqs~i^UbD!E+5-V>sDVg&)GZSa$U-2XSO$|<uCNv2I+<M)>;Phz1 zB!Lrpo~jeBDK1l(Fu`Jp2FrwRQ3{|?XHYEki1e^}d(|PTeMZxga?e$bOPn4}I5Z)} zLncUKl25hm1Q!pPAgM`Qoz7m)L7D40ie!Y^McP%$JhPg%R4OJ~?TXKPGP6pXS@PFY zZO%`=ZF;3LLNllGU+#^$e7RL2G3!_9Q)jsog}01#C0=xetDOkso$_DxwRpMq-cO3B zzddO^5^k4rbKV(Q$Lq%(c)*Q@W$ETY6XV`ba&70iqPvOxW=*X8vR^N^S7kYucd<6^ z?XO&$SGDnNi?wrmiL9W|xtrI&USjrHsQfxQ=;kHKsJ{u^PW;vR97$_rlGfr!c5I*c Y-LL&Ijmv*&3u+B{y85}Sb4q9e0ByY*hX4Qo diff --git a/t/testgd.png b/t/testgd.png deleted file mode 100644 index 72c6aa50647d8fed2515a7b3c141f4e224a3d30c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRBCT5UGPwjCA1_qu0pAgso|Nk>EfG`6CLtowF zjSLJ7j3q&S!3+-1Zlp0VFmijkIEGZrc{|mRui1ddwf1B{r>gbz2NFGV16to-=G)7D zcafRmB9$Zer(W_Ct*;IGVfM}3cH#?#`$FkG8-;e7ow1oU>5MMB?{eEhUiaQI_pk?n z^C!+U=atM9Hu}n0IOo-z3DIuHdUxn4=iE;@=lI28=hGt=oc%|idsOJyxwme<D*N`- zoi5%bKX{5&*0C()ooB;R6nP?6;WE3D1c#W1iGa?83ylj73ZINJSS|=6CT^O~{nAtK zxOj-`DaDRWD(1(xKmYHcF8up(oc8}MX--*cg6B=|vF@=Cz1>kR{haZffNFU`*u$E` zGdqeyPR7l-Zt-~P?uPu%qWTYKgWk#P>pf)~n)e}&{o)C3g^El4I~MxwWME)m@O1Ta JS?83{1OVB~l@R~{ diff --git a/template/CVS/Entries b/template/CVS/Entries index f6096af0e..adbf2e91c 100644 --- a/template/CVS/Entries +++ b/template/CVS/Entries @@ -1,2 +1,2 @@ -/.cvsignore/1.3/Tue May 7 21:33:53 2002//TBUGZILLA-2_20_2 +/.cvsignore/1.3/Tue May 7 21:33:53 2002//TBUGZILLA-2_22 D/en//// diff --git a/template/CVS/Tag b/template/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/CVS/Tag +++ b/template/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/CVS/Entries b/template/en/CVS/Entries index 5b11dcce9..7b18444cd 100644 --- a/template/en/CVS/Entries +++ b/template/en/CVS/Entries @@ -1,3 +1,3 @@ -/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-2_20_2 +/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-2_22 D/default//// D/extension//// diff --git a/template/en/CVS/Tag b/template/en/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/CVS/Tag +++ b/template/en/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/CVS/Entries b/template/en/default/CVS/Entries index 062bcd308..f42d9d60a 100644 --- a/template/en/default/CVS/Entries +++ b/template/en/default/CVS/Entries @@ -1,12 +1,13 @@ -/config.js.tmpl/1.4/Mon Jun 23 18:01:38 2003//TBUGZILLA-2_20_2 -/config.rdf.tmpl/1.4/Mon Jun 23 18:01:39 2003//TBUGZILLA-2_20_2 -/filterexceptions.pl/1.43.2.4/Mon Jan 9 19:17:15 2006//TBUGZILLA-2_20_2 -/index.html.tmpl/1.23/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_20_2 -/sidebar.xul.tmpl/1.17.4.1/Thu Mar 2 23:45:59 2006//TBUGZILLA-2_20_2 +/config.js.tmpl/1.6/Fri Sep 2 21:12:08 2005//TBUGZILLA-2_22 +/config.rdf.tmpl/1.6/Fri Sep 2 21:12:08 2005//TBUGZILLA-2_22 +/filterexceptions.pl/1.61/Mon Jan 9 21:54:16 2006//TBUGZILLA-2_22 +/index.html.tmpl/1.24/Sun Aug 21 18:16:42 2005//TBUGZILLA-2_22 +/sidebar.xul.tmpl/1.18.2.1/Thu Mar 2 23:45:33 2006//TBUGZILLA-2_22 D/account//// D/admin//// D/attachment//// D/bug//// +D/email//// D/flag//// D/global//// D/list//// diff --git a/template/en/default/CVS/Entries.Log b/template/en/default/CVS/Entries.Log deleted file mode 100644 index 1d3f921a5..000000000 --- a/template/en/default/CVS/Entries.Log +++ /dev/null @@ -1,2 +0,0 @@ -A D/email//// -R D/email//// diff --git a/template/en/default/CVS/Tag b/template/en/default/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/CVS/Tag +++ b/template/en/default/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/account/CVS/Entries b/template/en/default/account/CVS/Entries index bcc882cfd..985e7d6c0 100644 --- a/template/en/default/account/CVS/Entries +++ b/template/en/default/account/CVS/Entries @@ -1,7 +1,7 @@ -/cancel-token.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.8/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_20_2 -/created.html.tmpl/1.6/Sat Mar 12 21:51:16 2005//TBUGZILLA-2_20_2 -/exists.html.tmpl/1.7/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_20_2 +/cancel-token.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.8/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_22 +/created.html.tmpl/1.6/Sat Mar 12 21:51:16 2005//TBUGZILLA-2_22 +/exists.html.tmpl/1.7/Sun Jan 18 18:39:11 2004//TBUGZILLA-2_22 D/auth//// D/email//// D/password//// diff --git a/template/en/default/account/CVS/Tag b/template/en/default/account/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/account/CVS/Tag +++ b/template/en/default/account/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/account/auth/CVS/Entries b/template/en/default/account/auth/CVS/Entries index a4210aec3..b98e57971 100644 --- a/template/en/default/account/auth/CVS/Entries +++ b/template/en/default/account/auth/CVS/Entries @@ -1,4 +1,4 @@ -/ldap-error.html.tmpl/1.3/Thu Mar 18 16:10:17 2004//TBUGZILLA-2_20_2 -/login-small.html.tmpl/1.1.4.1/Tue Feb 21 00:24:51 2006//TBUGZILLA-2_20_2 -/login.html.tmpl/1.13/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_20_2 +/ldap-error.html.tmpl/1.3/Thu Mar 18 16:10:17 2004//TBUGZILLA-2_22 +/login-small.html.tmpl/1.2/Tue Feb 21 00:19:25 2006//TBUGZILLA-2_22 +/login.html.tmpl/1.13/Tue Apr 12 17:23:01 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/account/auth/CVS/Tag b/template/en/default/account/auth/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/account/auth/CVS/Tag +++ b/template/en/default/account/auth/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/account/email/CVS/Entries b/template/en/default/account/email/CVS/Entries index 62284ad0d..719777860 100644 --- a/template/en/default/account/email/CVS/Entries +++ b/template/en/default/account/email/CVS/Entries @@ -1,4 +1,4 @@ -/change-new.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20_2 -/change-old.txt.tmpl/1.9/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20_2 -/confirm.html.tmpl/1.9/Thu Mar 18 16:08:52 2004//TBUGZILLA-2_20_2 +/change-new.txt.tmpl/1.8/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_22 +/change-old.txt.tmpl/1.9/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_22 +/confirm.html.tmpl/1.9/Thu Mar 18 16:08:52 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/account/email/CVS/Tag b/template/en/default/account/email/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/account/email/CVS/Tag +++ b/template/en/default/account/email/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/account/password/CVS/Entries b/template/en/default/account/password/CVS/Entries index 4bac30a57..970dd2d23 100644 --- a/template/en/default/account/password/CVS/Entries +++ b/template/en/default/account/password/CVS/Entries @@ -1,3 +1,3 @@ -/forgotten-password.txt.tmpl/1.7/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_20_2 -/set-forgotten-password.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_20_2 +/forgotten-password.txt.tmpl/1.7/Wed Mar 16 21:58:55 2005//TBUGZILLA-2_22 +/set-forgotten-password.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/account/password/CVS/Tag b/template/en/default/account/password/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/account/password/CVS/Tag +++ b/template/en/default/account/password/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/account/prefs/CVS/Entries b/template/en/default/account/prefs/CVS/Entries index 264c36b07..56a169ca3 100644 --- a/template/en/default/account/prefs/CVS/Entries +++ b/template/en/default/account/prefs/CVS/Entries @@ -1,8 +1,8 @@ -/account.html.tmpl/1.6/Thu Mar 18 16:11:27 2004//TBUGZILLA-2_20_2 -/email.html.tmpl/1.21.2.2/Sat Aug 13 14:31:34 2005//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.5/Thu Mar 18 21:51:16 2004//TBUGZILLA-2_20_2 -/permissions.html.tmpl/1.6/Sun Jan 18 18:39:13 2004//TBUGZILLA-2_20_2 -/prefs.html.tmpl/1.18/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_20_2 -/saved-searches.html.tmpl/1.5.6.2/Mon Oct 17 22:06:56 2005//TBUGZILLA-2_20_2 -/settings.html.tmpl/1.1.4.1/Tue Sep 27 22:02:30 2005//TBUGZILLA-2_20_2 +/account.html.tmpl/1.6/Thu Mar 18 16:11:27 2004//TBUGZILLA-2_22 +/email.html.tmpl/1.24/Mon Oct 31 23:09:28 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.5/Thu Mar 18 21:51:16 2004//TBUGZILLA-2_22 +/permissions.html.tmpl/1.8/Sun Nov 20 01:31:36 2005//TBUGZILLA-2_22 +/prefs.html.tmpl/1.21/Fri Oct 28 09:56:54 2005//TBUGZILLA-2_22 +/saved-searches.html.tmpl/1.8/Thu Aug 25 13:39:20 2005//TBUGZILLA-2_22 +/settings.html.tmpl/1.3/Fri Oct 28 09:56:54 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/account/prefs/CVS/Tag b/template/en/default/account/prefs/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/account/prefs/CVS/Tag +++ b/template/en/default/account/prefs/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/account/prefs/email.html.tmpl b/template/en/default/account/prefs/email.html.tmpl index 2c75a085c..857999200 100644 --- a/template/en/default/account/prefs/email.html.tmpl +++ b/template/en/default/account/prefs/email.html.tmpl @@ -124,6 +124,8 @@ document.write('<input type="button" value="Disable All Mail" onclick="SetCheckb description = "The keywords field changes" }, { id = constants.EVT_CC, description = "The CC field changes" }, + { id = constants.EVT_DEPEND_BLOCK, + description = "The dependency tree changes" }, { id = constants.EVT_OTHER, description = "Any field not mentioned above changes" }, ] %] diff --git a/template/en/default/account/prefs/permissions.html.tmpl b/template/en/default/account/prefs/permissions.html.tmpl index 46d4559ec..dd6e1785b 100644 --- a/template/en/default/account/prefs/permissions.html.tmpl +++ b/template/en/default/account/prefs/permissions.html.tmpl @@ -70,6 +70,12 @@ </table> </p> [% END %] + + [% IF user.groups.bz_sudoers %] + <br> + You are a member of the <b>bz_sudoers</b> group, so you can + <a href="relogin.cgi?action=prepare-sudo">impersonate someone else</a>. + [% END %] </td> </tr> </table> diff --git a/template/en/default/account/prefs/prefs.html.tmpl b/template/en/default/account/prefs/prefs.html.tmpl index d909f3b8a..352e303d6 100644 --- a/template/en/default/account/prefs/prefs.html.tmpl +++ b/template/en/default/account/prefs/prefs.html.tmpl @@ -17,6 +17,7 @@ # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> + # Frédéric Buclin <LpSolit@gmail.com> #%] [%# INTERFACE: @@ -32,63 +33,41 @@ # changes_saved: boolean/string. True if the CGI processed form data before # displaying anything, and can contain an optional custom # message if required (which Perl still evaluates as True). + # dont_show_button: boolean. Prevent the display of the "Submit Changes" button. #%] [% filtered_login = user.login FILTER html %] [% PROCESS global/header.html.tmpl title = "User Preferences" h2 = filtered_login - style = "td.selected_tab { - border-width: 2px 2px 0px; - border-style: solid; - border-color: black; - } - td.unselected_tab, td.spacer { - border-width: 0px 0px 2px 0px; - border-style: solid; - border-color: black; - }" + style_urls = ['skins/standard/admin.css'] %] -[% tabs = [ { name => "account", description => "Account Preferences", - saveable => "1" }, - { name => "settings", description => "General Preferences", - saveable => "1" }, - { name => "email", description => "Email Preferences", - saveable => "1" }, - { name => "saved-searches", description => "Saved searches", - saveable => "1" }, - { name => "permissions", description => "Permissions", - saveable => "0" } ] %] +[% tabs = [ { name => "account", label => "Account Preferences", + link => "userprefs.cgi?tab=account", saveable => "1" }, + { name => "settings", label => "General Preferences", + link => "userprefs.cgi?tab=settings", saveable => "1" }, + { name => "email", label => "Email Preferences", + link => "userprefs.cgi?tab=email", saveable => "1" }, + { name => "saved-searches", label => "Saved searches", + link => "userprefs.cgi?tab=saved-searches", saveable => "1" }, + { name => "permissions", label => "Permissions", + link => "userprefs.cgi?tab=permissions", saveable => "0" } ] %] -<center> - <table cellspacing="0" cellpadding="10" border="0" width="100%"> - <tr> - <td class="spacer"> </td> - - [% FOREACH tab = tabs %] - [% IF tab.name == current_tab_name %] - [% current_tab = tab %] - <td align="center" bgcolor="lightblue" class="selected_tab"> - [% tab.description %] - </td> - [% ELSE %] - <td align="center" bgcolor="#BBBBEE" class="unselected_tab"> - <a href="userprefs.cgi?tab=[% tab.name %]">[% tab.description %]</a> - </td> - [% END %] - [% END %] - - <td class="spacer"> </td> - </tr> - </table> -</center> +[% FOREACH tab IN tabs %] + [% IF tab.name == current_tab_name %] + [% current_tab = tab %] + [% LAST %] + [% END %] +[% END %] + +[% PROCESS global/tabs.html.tmpl %] [% IF changes_saved %] <p> <font color="red"> The changes to your - [% current_tab.description FILTER lower %] have been saved. + [% current_tab.label FILTER lower %] have been saved. </font> </p> [% IF email_changes_saved %] @@ -99,30 +78,30 @@ [% END %] [% END %] -<h3>[% current_tab.description %]</h3> +<h3>[% current_tab.label %]</h3> -<form name="userprefsform" method="post" action="userprefs.cgi"> - <input type="hidden" name="tab" value="[% current_tab.name %]"> +[% IF current_tab.saveable %] + <form name="userprefsform" method="post" action="userprefs.cgi"> + <input type="hidden" name="tab" value="[% current_tab.name %]"> +[% END %] - [% PROCESS "account/prefs/${current_tab.name}.html.tmpl" - IF current_tab.name.defined %] +[% PROCESS "account/prefs/${current_tab.name}.html.tmpl" + IF current_tab.name.defined %] - [% IF current_tab.saveable %] +[% IF current_tab.saveable %] <input type="hidden" name="dosave" value="1"> - <table> - <tr> - <td width="150"></td> - <td> - <input type="submit" value="Submit Changes"> - </td> - </tr> - </table> - [% END %] - -</form> + [% UNLESS dont_show_button %] + <table> + <tr> + <td width="150"> </td> + <td> + <input type="submit" value="Submit Changes"> + </td> + </tr> + </table> + [% END %] + </form> +[% END %] [% PROCESS global/footer.html.tmpl %] - - - diff --git a/template/en/default/account/prefs/saved-searches.html.tmpl b/template/en/default/account/prefs/saved-searches.html.tmpl index 931b27cc1..7f0052bba 100644 --- a/template/en/default/account/prefs/saved-searches.html.tmpl +++ b/template/en/default/account/prefs/saved-searches.html.tmpl @@ -64,7 +64,7 @@ <tr> <td>[% q.name FILTER html %]</td> <td> - <a href="buglist.cgi?[% q.query FILTER html %]">Run</a> + <a href="buglist.cgi?cmdtype=runnamed&namedcmd=[% q.name FILTER url_quote %]">Run</a> </td> <td> <a href="query.cgi?[% q.query FILTER html %]&known_name=[% q.name FILTER url_quote %]">Edit</a> diff --git a/template/en/default/account/prefs/settings.html.tmpl b/template/en/default/account/prefs/settings.html.tmpl index a425dcac1..3ef9a5852 100644 --- a/template/en/default/account/prefs/settings.html.tmpl +++ b/template/en/default/account/prefs/settings.html.tmpl @@ -12,6 +12,7 @@ # The Original Code is the Bugzilla Bug Tracking System. # # Contributor(s): Shane H. W. Travis <travis@sedsystems.ca> + # Frédéric Buclin <LpSolit@gmail.com> # #%] @@ -23,40 +24,55 @@ # default_value - string (global default for this setting) # value - string (user-defined preference) # is_default - boolean (true if user has no preference) + # has_settings_enabled : boolean; is true if there is at least one user pref + # enabled by the maintainer. #%] [% PROCESS "global/setting-descs.none.tmpl" %] [% IF settings.size %] + [% UNLESS has_settings_enabled %] + <p class="criticalmessages"> + All user preferences have been disabled by the + <a href="mailto:[% Param("maintainer") %]">maintainer</a> + of this installation, and so you cannot customise any. + </p> + [% END %] + <table border="0" cellpadding="8"> [% FOREACH name = setting_names %] - [% IF settings.${name}.is_enabled %] - [% default_name = name _ '-isdefault' %] - [% default_val = settings.${name}.default_value %] - <tr> - <td align="right"> - [% setting_descs.$name OR name FILTER html %] - </td> - <td> - <select name="[% name %]" id="[% name %]"> - <option value="[% default_name %]" - [% ' selected="selected"' IF settings.${name}.is_default %]> - Site Default ([% setting_descs.${default_val} OR default_val FILTER html %]) - </option> - [% FOREACH x = settings.${name}.legal_values %] - <option value="[% x FILTER html %]" - [% ' selected="selected"' - IF x == settings.${name}.value - AND NOT settings.${name}.is_default %]> - [% setting_descs.${x} OR x FILTER html %] - </option> - [% END %] - </select> - </td> - </tr> - [% END %] + [% default_name = name _ '-isdefault' %] + [% default_val = settings.${name}.default_value %] + <tr> + <td align="right"> + [% setting_descs.$name OR name FILTER html %] + </td> + <td> + [% IF settings.${name}.is_enabled %] + <select name="[% name %]" id="[% name %]"> + <option value="[% default_name %]" + [% ' selected="selected"' IF settings.${name}.is_default %]> + Site Default ([% setting_descs.${default_val} OR default_val FILTER html %]) + </option> + [% FOREACH x = settings.${name}.legal_values %] + <option value="[% x FILTER html %]" + [% ' selected="selected"' + IF x == settings.${name}.value + AND NOT settings.${name}.is_default %]> + [% setting_descs.${x} OR x FILTER html %] + </option> + [% END %] + </select> + [% ELSE %] + <select name="[% name %]" id="[% name %]" disabled="disabled"> + <option value="[% default_name %]"> + Site Default ([% setting_descs.${default_val} OR default_val FILTER html %]) + </option> + </select> + [% END %] + </td> + </tr> [% END %] - </table> [% END %] <br> diff --git a/template/en/default/admin/CVS/Entries b/template/en/default/admin/CVS/Entries index 547b5fc62..31bb13554 100644 --- a/template/en/default/admin/CVS/Entries +++ b/template/en/default/admin/CVS/Entries @@ -1,4 +1,5 @@ -/table.html.tmpl/1.5/Tue May 31 15:42:44 2005//TBUGZILLA-2_20_2 +/sudo.html.tmpl/1.3/Sun Nov 20 01:31:36 2005//TBUGZILLA-2_22 +/table.html.tmpl/1.6.2.1/Wed Apr 5 23:00:08 2006//TBUGZILLA-2_22 D/classifications//// D/components//// D/fieldvalues//// @@ -6,6 +7,7 @@ D/flag-type//// D/groups//// D/keywords//// D/milestones//// +D/params//// D/products//// D/settings//// D/users//// diff --git a/template/en/default/admin/CVS/Entries.Log b/template/en/default/admin/CVS/Entries.Log index 896214eb2..39a62c6e8 100644 --- a/template/en/default/admin/CVS/Entries.Log +++ b/template/en/default/admin/CVS/Entries.Log @@ -1,8 +1,6 @@ A D/attachstatus//// A D/common//// -A D/params//// A D/request-type//// R D/request-type//// -R D/params//// R D/common//// R D/attachstatus//// diff --git a/template/en/default/admin/CVS/Tag b/template/en/default/admin/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/CVS/Tag +++ b/template/en/default/admin/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/classifications/CVS/Entries b/template/en/default/admin/classifications/CVS/Entries index e69ee84c3..c8150080c 100644 --- a/template/en/default/admin/classifications/CVS/Entries +++ b/template/en/default/admin/classifications/CVS/Entries @@ -1,9 +1,9 @@ -/add.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20_2 -/del.html.tmpl/1.2/Thu Oct 7 07:12:40 2004//TBUGZILLA-2_20_2 -/delete.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.3.6.1/Mon Oct 17 22:06:57 2005//TBUGZILLA-2_20_2 -/new.html.tmpl/1.2/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_20_2 -/reclassify.html.tmpl/1.2/Thu Oct 7 07:12:40 2004//TBUGZILLA-2_20_2 -/select.html.tmpl/1.3/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_20_2 -/update.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_20_2 +/add.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_22 +/del.html.tmpl/1.3/Thu Oct 13 23:42:43 2005//TBUGZILLA-2_22 +/delete.html.tmpl/1.2/Thu Oct 13 23:42:43 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.6/Mon Oct 17 21:58:51 2005//TBUGZILLA-2_22 +/new.html.tmpl/1.2/Mon Dec 27 09:58:29 2004//TBUGZILLA-2_22 +/reclassify.html.tmpl/1.4/Thu Oct 13 23:42:43 2005//TBUGZILLA-2_22 +/select.html.tmpl/1.5/Sun Jan 22 22:53:53 2006//TBUGZILLA-2_22 +/update.html.tmpl/1.1/Fri Aug 20 21:49:18 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/classifications/CVS/Tag b/template/en/default/admin/classifications/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/classifications/CVS/Tag +++ b/template/en/default/admin/classifications/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/classifications/del.html.tmpl b/template/en/default/admin/classifications/del.html.tmpl index 1430e093d..c32e46b4d 100644 --- a/template/en/default/admin/classifications/del.html.tmpl +++ b/template/en/default/admin/classifications/del.html.tmpl @@ -30,13 +30,13 @@ </tr><tr> <td valign="top">Classification:</td> - <td valign="top">[% classification FILTER html %]</td> + <td valign="top">[% classification.name FILTER html %]</td> </tr><tr> <td valign="top">Description:</td> <td valign="top"> - [% IF description %] - [% description %] + [% IF classification.description %] + [% classification.description FILTER none %] [% ELSE %] <font color="red">description missing</font> [% END %] @@ -51,7 +51,7 @@ <form method=post action="editclassifications.cgi"> <input type=submit value="Yes, delete"> <input type=hidden name="action" value="delete"> - <input type=hidden name="classification" value="[% classification FILTER html %]"> + <input type=hidden name="classification" value="[% classification.name FILTER html %]"> </form> <p>Back to the <a href="./">main [% terms.bugs %] page</a> diff --git a/template/en/default/admin/classifications/delete.html.tmpl b/template/en/default/admin/classifications/delete.html.tmpl index b2ec26cbb..046c1469f 100644 --- a/template/en/default/admin/classifications/delete.html.tmpl +++ b/template/en/default/admin/classifications/delete.html.tmpl @@ -23,7 +23,7 @@ title = "Classification deleted" %] -Classification [% classification FILTER html %] deleted.<br> +Classification [% classification.name FILTER html %] deleted.<br> <p>Back to the <a href="./">main [% terms.bugs %] page</a> or <a href="editclassifications.cgi"> edit</a> more classifications. diff --git a/template/en/default/admin/classifications/edit.html.tmpl b/template/en/default/admin/classifications/edit.html.tmpl index fbc3e7db5..24ec9dacf 100644 --- a/template/en/default/admin/classifications/edit.html.tmpl +++ b/template/en/default/admin/classifications/edit.html.tmpl @@ -27,18 +27,24 @@ <table border=0 cellpadding=4 cellspacing=0> <tr> <th align="right">Classification:</th> - <td><input size=64 maxlength=64 name="classification" value="[% classification FILTER html %]"></TD> + <td><input size=64 maxlength=64 name="classification" + value="[% classification.name FILTER html %]"></td> </tr> <tr> <th align="right">Description:</th> - <td><textarea rows=4 cols=64 name="description">[% description %]</textarea></TD> + <td><textarea rows=4 cols=64 name="description"> + [% classification.description FILTER none %]</textarea> + </td> </tr> <tr valign=top> - <th align="right"><a href="editproducts.cgi?classification=[% classification FILTER url_quote %]">Edit products</a></th> + <th align="right"> + <a href="editproducts.cgi?classification=[% classification.name FILTER url_quote %]"> + Edit products</a> + </th> <td> - [% IF products AND products.size > 0 %] + [% IF classification.products.size > 0 %] <table> - [% FOREACH product = products %] + [% FOREACH product = classification.products %] <tr> <th align=right valign=top>[% product.name FILTER html %]</th> <td valign=top> @@ -58,8 +64,8 @@ </tr> </table> - <input type=hidden name="classificationold" value="[% classification FILTER html %]"> - <input type=hidden name="descriptionold" value="[% description FILTER html %]"> + <input type=hidden name="classificationold" + value="[% classification.name FILTER html %]"> <input type=hidden name="action" value="update"> <input type=submit value="Update"> </form> diff --git a/template/en/default/admin/classifications/reclassify.html.tmpl b/template/en/default/admin/classifications/reclassify.html.tmpl index 5d4cb73e4..127aeea87 100644 --- a/template/en/default/admin/classifications/reclassify.html.tmpl +++ b/template/en/default/admin/classifications/reclassify.html.tmpl @@ -23,19 +23,17 @@ title = "Reclassify products" %] -[% main_classification = classification %] - <form method=post action="editclassifications.cgi"> <table border=0 cellpadding=4 cellspacing=0> <tr> <td valign="top">Classification:</td> - <td valign="top" colspan=3>[% main_classification FILTER html %]</td> + <td valign="top" colspan=3>[% classification.name FILTER html %]</td> </tr><tr> <td valign="top">Description:</td> <td valign="top" colspan=3> - [% IF description %] - [% description %] + [% IF classification.description %] + [% classification.description FILTER none %] [% ELSE %] <font color="red">description missing</font> [% END %] @@ -45,16 +43,20 @@ <td valign="top">Products:</td> <td valign="top">Products</td> <td></td> - <td valign="top">[% main_classification FILTER html %] Products</td> + <td valign="top">[% classification.name FILTER html %] Products</td> </tr><tr> <td></td> <td valign="top"> <select name="prodlist" id="prodlist" multiple="multiple" size="20"> - [% FOREACH cl = class_products %] - <option value="[% cl.value FILTER html %]"> - [% cl.name FILTER html %] - </option> + [% FOREACH class = classifications %] + [% IF class.id != classification.id %] + [% FOREACH product = class.products %] + <option value="[% product.name FILTER html %]"> + [[% class.name FILTER html %]] [% product.name FILTER html %] + </option> + [% END %] + [% END %] [% END %] </select></td> @@ -65,9 +67,9 @@ <td valign="middle" rowspan=2> <select name="myprodlist" id="myprodlist" multiple="multiple" size="20"> - [% FOREACH product = selected_products %] - <option value="[% product FILTER html %]"> - [% product FILTER html %] + [% FOREACH product = classification.products %] + <option value="[% product.name FILTER html %]"> + [% product.name FILTER html %] </option> [% END %] </select></td> @@ -75,10 +77,11 @@ </table> <input type=hidden name="action" value="reclassify"> - <input type=hidden name="classification" value="[% main_classification FILTER html %]"> + <input type=hidden name="classification" value="[% classification.name FILTER html %]"> </form> <p>Back to the <a href="./">main [% terms.bugs %] page</a>, or <a href="editclassifications.cgi"> edit</a> more classifications. -[% PROCESS global/footer.html.tmpl %] +[% PROCESS global/footer.html.tmpl %] + diff --git a/template/en/default/admin/classifications/select.html.tmpl b/template/en/default/admin/classifications/select.html.tmpl index 3cfa3fcaa..789c40968 100644 --- a/template/en/default/admin/classifications/select.html.tmpl +++ b/template/en/default/admin/classifications/select.html.tmpl @@ -23,8 +23,6 @@ title = "Select classification" %] -[% filt_classification = classification FILTER html %] - <table border=1 cellpadding=4 cellspacing=0> <tr bgcolor="#6666ff"> <th align="left">Edit Classification ...</th> @@ -35,7 +33,7 @@ [% FOREACH cl = classifications %] <tr> - <td valign="top"><a href="editclassifications.cgi?action=edit&classification=[% cl.classification FILTER url_quote %]"><b>[% cl.classification FILTER html %]</b></a></td> + <td valign="top"><a href="editclassifications.cgi?action=edit&classification=[% cl.name FILTER url_quote %]"><b>[% cl.name FILTER html %]</b></a></td> <td valign="top"> [% IF cl.description %] [% cl.description %] @@ -44,16 +42,16 @@ [% END %] </td> [% IF (cl.id == 1) %] - <td valign="top">[% cl.total FILTER html %]</td> + <td valign="top">[% cl.product_count FILTER html %]</td> [% ELSE %] - <td valign="top"><a href="editclassifications.cgi?action=reclassify&classification=[% cl.classification FILTER url_quote %]">reclassify ([% cl.total FILTER html %])</a></td> + <td valign="top"><a href="editclassifications.cgi?action=reclassify&classification=[% cl.name FILTER url_quote %]">reclassify ([% cl.product_count FILTER html %])</a></td> [% END %] [%# don't allow user to delete the default id. %] [% IF (cl.id == 1) %] <td valign="top"> </td> [% ELSE %] - <td valign="top"><a href="editclassifications.cgi?action=del&classification=[% cl.classification FILTER url_quote %]">delete</a></td> + <td valign="top"><a href="editclassifications.cgi?action=del&classification=[% cl.name FILTER url_quote %]">delete</a></td> [% END %] </tr> [% END %] @@ -64,7 +62,4 @@ </tr> </table> -<p>Back to the <a href="./">main [% terms.bugs %] page</a> -or <a href="editclassifications.cgi"> edit</a> more classifications. - [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/components/CVS/Entries b/template/en/default/admin/components/CVS/Entries index a764fd5c4..25b24ad22 100644 --- a/template/en/default/admin/components/CVS/Entries +++ b/template/en/default/admin/components/CVS/Entries @@ -1,10 +1,10 @@ -/confirm-delete.html.tmpl/1.3/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.3.2.1/Sun Jan 1 21:19:21 2006//TBUGZILLA-2_20_2 -/created.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_20_2 -/deleted.html.tmpl/1.3/Wed Apr 6 00:19:54 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.4/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_20_2 -/list.html.tmpl/1.2/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20_2 -/select-product.html.tmpl/1.1.8.1/Mon Sep 12 18:56:58 2005//TBUGZILLA-2_20_2 -/updated.html.tmpl/1.2/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.4/Tue Sep 6 23:53:59 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.4/Sun Jan 1 21:25:05 2006//TBUGZILLA-2_22 +/created.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_22 +/deleted.html.tmpl/1.3/Wed Apr 6 00:19:54 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.5/Tue Sep 6 23:53:59 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.1/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_22 +/list.html.tmpl/1.4/Tue Sep 27 22:08:13 2005//TBUGZILLA-2_22 +/select-product.html.tmpl/1.2/Tue Sep 27 22:08:13 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.2/Mon Jun 20 19:16:29 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/components/CVS/Tag b/template/en/default/admin/components/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/components/CVS/Tag +++ b/template/en/default/admin/components/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/components/confirm-delete.html.tmpl b/template/en/default/admin/components/confirm-delete.html.tmpl index 5e108e7a8..dabace154 100644 --- a/template/en/default/admin/components/confirm-delete.html.tmpl +++ b/template/en/default/admin/components/confirm-delete.html.tmpl @@ -20,29 +20,13 @@ #%] [%# INTERFACE: - # name: string; The name of the component - # - # description: string; Component description, may be empty - # - # bug_count: number; The number of bugs belonging to the component - # - # initialowner: string; default assignee, may be empty - # - # initialqacontact: string; if system parameter is set to use the default - # qa contact field, then this will be it, - # may be empty - # - # milestoneurl: string; milestone url, if milestones are in use, - # may be empty - # - # product: string; The name of the product - # - # disallownew: boolean; Are new bugs allowed for the product flag - # - # product_description: string; Description of product + # comp: object; Bugzilla::Component object representing the component the + # user wants to delete. + # prod: object; Bugzilla::Product object representing the product to + # which the component belongs. #%] -[% title = BLOCK %]Delete Component of Product '[% product FILTER html %]' +[% title = BLOCK %]Delete Component of Product '[% prod.name FILTER html %]' [% END %] [% PROCESS global/header.html.tmpl @@ -56,54 +40,58 @@ </tr> <tr> <td valign="top">Component:</td> - <td valign="top">[% name FILTER html %]</td> + <td valign="top">[% comp.name FILTER html %]</td> </tr> <tr> <td valign="top">Component Description:</td> - <td valign="top">[% description FILTER html %]</td> + <td valign="top">[% comp.description FILTER html %]</td> </tr> <tr> <td valign="top">Default assignee:</td> - <td valign="top">[% initialowner FILTER html %]</td> + <td valign="top">[% comp.default_assignee.login FILTER html %]</td> [% IF Param('useqacontact') %] </tr> <tr> <td valign="top">Default QA contact:</td> - <td valign="top">[% initialqacontact FILTER html %]</td> + <td valign="top">[% comp.default_qa_contact.login FILTER html %]</td> [% END %] </tr> <tr> <td valign="top">Component of Product:</td> - <td valign="top">[% product FILTER html %]</td> + <td valign="top">[% prod.name FILTER html %]</td> -[% IF product_description %] +[% IF prod.description %] </tr> <tr> <td valign="top">Product Description:</td> - <td valign="top">[% product_description FILTER html %]</td> + <td valign="top">[% prod.description FILTER html %]</td> [% END %] [% IF Param('usetargetmilestone') %] </tr> <tr> <td valign="top">Product Milestone URL:</td> - <td valign="top"><a href="[% milestoneurl FILTER uri %]">[% milestoneurl FILTER html %]</a></td> + <td valign="top"> + <a href="[% prod.milestone_url FILTER uri %]"> + [% prod.milestone_url FILTER html %] + </a> + </td> [% END %] </tr> <tr> <TD VALIGN="top">Closed for [% terms.bugs %]:</TD> - <TD VALIGN="top">[% IF $disallownew %]Yes[% ELSE %]No[% END %]</td> + <TD VALIGN="top">[% IF prod.disallow_new %]Yes[% ELSE %]No[% END %]</td> </tr> <tr> <td valign="top">[% terms.Bugs %]:</td> <td valign="top"> -[% IF bug_count %] - <a title="List of [% terms.bugs %] for component '[% name FILTER html %]'" - href="buglist.cgi?component=[% name FILTER url_quote %]&product= - [%- product FILTER url_quote %]">[% bug_count %]</a> +[% IF comp.bug_count %] + <a title="List of [% terms.bugs %] for component '[% comp.name FILTER html %]'" + href="buglist.cgi?component=[% comp.name FILTER url_quote %]&product= + [%- prod.name FILTER url_quote %]">[% comp.bug_count %]</a> [% ELSE %] None [% END %] @@ -113,21 +101,21 @@ <h2>Confirmation</h2> -[% IF bug_count %] +[% IF comp.bug_count %] [% IF !Param("allowbugdeletion") %] Sorry, there - [% IF bug_count > 1 %] - are [% bug_count %] [%+ terms.bugs %] + [% IF comp.bug_count > 1 %] + are [% comp.bug_count %] [%+ terms.bugs %] [% ELSE %] - is [% bug_count %] [%+ terms.bug %] + is [% comp.bug_count %] [%+ terms.bug %] [% END %] outstanding for this component. You must reassign - [% IF bug_count > 1 %] + [% IF comp.bug_count > 1 %] those [% terms.bugs %] [% ELSE %] that [% terms.bug %] @@ -139,8 +127,8 @@ <table border="0" cellpadding="20" width="70%" bgcolor="red"><tr><td> - There [% IF bug_count > 1 %] - are [% bug_count %] [%+ terms.bugs %] + There [% IF comp.bug_count > 1 %] + are [% comp.bug_count %] [%+ terms.bugs %] [% ELSE %] is 1 [% terms.bug %] [% END %] @@ -153,19 +141,22 @@ [% END %] -[% IF bug_count == 0 || Param('allowbugdeletion') %] +[% IF comp.bug_count == 0 || Param('allowbugdeletion') %] <p>Do you really want to delete this component?<p> <form method="post" action="editcomponents.cgi"> <input type="submit" value="Yes, delete"> <input type="hidden" name="action" value="delete"> - <input type="hidden" name="product" value="[% product FILTER html %]"> - <input type="hidden" name="component" value="[% name FILTER html %]"> + <input type="hidden" name="product" value="[% prod.name FILTER html %]"> + <input type="hidden" name="component" value="[% comp.name FILTER html %]"> </form> [% END %] -[% PROCESS admin/components/footer.html.tmpl %] +[% PROCESS admin/components/footer.html.tmpl + name = comp.name + product = prod.name +%] [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/components/edit.html.tmpl b/template/en/default/admin/components/edit.html.tmpl index 64959ad96..8b350d9e8 100644 --- a/template/en/default/admin/components/edit.html.tmpl +++ b/template/en/default/admin/components/edit.html.tmpl @@ -20,22 +20,15 @@ #%] [%# INTERFACE: - # name: string; The name of the component. - # - # description: string; Component description, may be empty - # - # initialowner: string; default assignee, may be empty - # - # initialqacontact: string; default qa contact, may be empty - # - # product: string; The product the component belongs to - # - # bug_count: number; number of bugs belonging to the component + # comp: object; Bugzilla::Component object representing the component the + # user wants to edit. + # prod: object; Bugzilla::Product object representing the product to + # which the component belongs. #%] [% PROCESS global/variables.none.tmpl %] -[% title = BLOCK %]Edit Component '[% name FILTER html %]'[% END %] +[% title = BLOCK %]Edit Component '[% comp.name FILTER html %]'[% END %] [% PROCESS global/header.html.tmpl title = title %] @@ -46,12 +39,12 @@ <tr> <td valign="top">Component:</td> <td><input size="64" maxlength="64" name="component" value=" - [%- name FILTER html %]"></td> + [%- comp.name FILTER html %]"></td> </tr> <tr> <td valign="top">Component Description:</td> <td><textarea rows="4" cols="64" wrap="virtual" - name="description">[% description FILTER html %]</textarea> + name="description">[% comp.description FILTER html %]</textarea> </td> </tr> <tr> @@ -60,7 +53,7 @@ [% INCLUDE global/userselect.html.tmpl name => "initialowner" id => "initialowner" - value => initialowner + value => comp.default_assignee.login size => 64 emptyok => 1 %] @@ -74,7 +67,7 @@ [% INCLUDE global/userselect.html.tmpl name => "initialqacontact" id => "initialqacontact" - value => initialqacontact + value => comp.default_qa_contact.login size => 64 emptyok => 1 %] @@ -85,11 +78,11 @@ <tr> <td>[% terms.Bugs %]:</td> <td> -[% IF bug_count > 0 %] - <a title="Bugs in component '[% name FILTER html %]'" +[% IF comp.bug_count > 0 %] + <a title="Bugs in component '[% comp.name FILTER html %]'" href="buglist.cgi?component= - [%- name FILTER url_quote %]&product= - [%- product FILTER url_quote %]">[% bug_count %]</a> + [%- comp.name FILTER url_quote %]&product= + [%- prod.name FILTER url_quote %]">[% comp.bug_count %]</a> [% ELSE %] None [% END %] @@ -98,26 +91,20 @@ </table> - - <input type="hidden" name="componentold" value=" - [%- name FILTER html %]"> - <input type="hidden" name="descriptionold" value=" - [%- description FILTER html %]"> - <input type="hidden" name="initialownerold" value=" - [%- initialowner FILTER html %]"> - <input type="hidden" name="initialqacontactold" value=" - [%- initialqacontact FILTER html %]"> <input type="hidden" name="action" value="update"> - <input type="hidden" name="product" value="[% product FILTER html %]"> + <input type="hidden" name="componentold" value="[% comp.name FILTER html %]"> + <input type="hidden" name="product" value="[% prod.name FILTER html %]"> <input type="submit" value="Update"> or <a href="editcomponents.cgi?action=del&product= - [%- product FILTER url_quote %]&component= - [%- name FILTER url_quote %]">Delete</a> this component. - + [%- prod.name FILTER url_quote %]&component= + [%- comp.name FILTER url_quote %]">Delete</a> this component. </form> [% PROCESS admin/components/footer.html.tmpl - no_edit_component_link = 1 %] + no_edit_component_link = 1 + name = comp.name + product = prod.name +%] [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/components/list.html.tmpl b/template/en/default/admin/components/list.html.tmpl index c321219fc..0b4998679 100644 --- a/template/en/default/admin/components/list.html.tmpl +++ b/template/en/default/admin/components/list.html.tmpl @@ -17,25 +17,15 @@ # Rights Reserved. # # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> #%] [%# INTERFACE: - # components: array of hashes having the properties: - # - name: string; The name of the component. - # - description: string; The description of the component. - # - initialowner: string; The default assignee of the component. - # - initialqacontact: string; The qa_contact of the component. - # - bug_count: number; The number of bugs in the component - # (if showbugcounts defined). - # + # components: array of component objects # showbugcounts: if defined, then bug counts should be included in the table - # # product: string; the name of the product we are editing components for #%] -[% USE Bugzilla %] -[% cgi = Bugzilla.cgi %] - [% PROCESS global/variables.none.tmpl %] [% title = BLOCK %]Select component of product @@ -96,10 +86,31 @@ contentlink => delete_contentlink }) %] +[%# Overrides the initialowner and the initialqacontact with right values %] +[% overrides.initialowner = [] %] +[% overrides.initialqacontact = [] %] + +[% FOREACH component = components %] + [% overrides.initialowner.push({ + match_value => component.name + match_field => 'name' + override_content => 1 + content => component.default_assignee.login + }) + %] + [% overrides.initialqacontact.push({ + match_value => component.name + match_field => 'name' + override_content => 1 + content => component.default_qa_contact.login + }) + %] +[% END %] + [% PROCESS admin/table.html.tmpl columns = columns data = components - footer = footer_row + overrides = overrides %] <p><a href="editcomponents.cgi?action=add&product=[% product FILTER url_quote %]">Add</a> @@ -107,8 +118,8 @@ [% IF ! showbugcounts %] -<p><a href="editcomponents.cgi?showbugcounts=1&[% cgi.query_string %]"> - Redisplay table with [% terms.bug %] counts (slower)</a></p> + <p><a href="editcomponents.cgi?product=[% product FILTER url_quote %]&showbugcounts=1"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> [% END %] diff --git a/template/en/default/admin/components/select-product.html.tmpl b/template/en/default/admin/components/select-product.html.tmpl index 37a33e8d9..ea9342dcd 100644 --- a/template/en/default/admin/components/select-product.html.tmpl +++ b/template/en/default/admin/components/select-product.html.tmpl @@ -16,23 +16,16 @@ # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # - # Contributor(s): Gavin Shelley (bugzilla@chimpychompy.org) + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> # #%] [%# INTERFACE: - # products: array of hashes having the properties: - # - name: string; The name of the product. - # - description: string; The description of the product. - # - bug_count: number; The number of bugs for the product (if - # showbugcounts defined). - # + # products: array of product objects # showbugcounts: if defined, then bug counts should be included in the table #%] -[% USE Bugzilla %] -[% cgi = Bugzilla.cgi %] - [% PROCESS global/variables.none.tmpl %] [% PROCESS global/header.html.tmpl @@ -55,26 +48,24 @@ [% IF showbugcounts %] -[% columns.push({ + [% columns.push({ name => 'bug_count' heading => "$terms.Bugs" align => "right" contentlink => "buglist.cgi?product=%%name%%" - }) %] + }) + %] [% END %] [% PROCESS admin/table.html.tmpl columns = columns data = products - footer = footer_row %] -[% IF ! showbugcounts %] - -<p><a href="editcomponents.cgi?showbugcounts=1&[% cgi.query_string %]"> - Redisplay table with [% terms.bug %] counts (slower)</a></p> - +[% IF !showbugcounts %] + <p><a href="editcomponents.cgi?showbugcounts=1"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> [% END %] <p> diff --git a/template/en/default/admin/fieldvalues/CVS/Entries b/template/en/default/admin/fieldvalues/CVS/Entries index abc6ed01c..a6ef20493 100644 --- a/template/en/default/admin/fieldvalues/CVS/Entries +++ b/template/en/default/admin/fieldvalues/CVS/Entries @@ -1,10 +1,10 @@ -/confirm-delete.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/created.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/deleted.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.2.2.1/Thu Sep 1 21:57:33 2005//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/select-field.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 -/updated.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.4/Wed Oct 19 22:21:05 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_22 +/created.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_22 +/deleted.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.3/Thu Sep 1 22:00:54 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.3/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.3/Wed Oct 19 22:21:05 2005//TBUGZILLA-2_22 +/select-field.html.tmpl/1.2/Wed Jun 15 03:55:00 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.3/Wed Oct 19 22:21:05 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/fieldvalues/CVS/Tag b/template/en/default/admin/fieldvalues/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/fieldvalues/CVS/Tag +++ b/template/en/default/admin/fieldvalues/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl b/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl index d1a016d8d..31deb547f 100644 --- a/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl +++ b/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl @@ -20,6 +20,8 @@ # value_count: number; The number of values left for this field, including # this value. # field: string; The name of the field. + # param_name: string; The name of the parameter (defaultxxx) associated + # with the field. #%] [% title = BLOCK %]Delete Value '[% value FILTER html %]' from the @@ -27,6 +29,7 @@ [% PROCESS global/header.html.tmpl title = title + style_urls = ['skins/standard/admin.css'] %] <table border="1" cellpadding="4" cellspacing="0"> @@ -57,49 +60,58 @@ </table> <h2>Confirmation</h2> - -[% IF bug_count %] - Sorry, there +[% IF (Param(param_name) == value) || bug_count || (value_count == 1) %] - [% IF bug_count > 1 %] - are [% bug_count FILTER html %] [%+ terms.bugs %] - [% ELSE %] - is [% bug_count FILTER html %] [%+ terms.bug %] - [% END %] + <p>Sorry, but the '[% value FILTER html %]' value cannot be deleted + from the '[% field FILTER html %]' field for the following reason(s):</p> - that still have this field value. You must change the field value on - <a title="List of [% terms.bugs %] where '[% field FILTER html %]' is '[% value FILTER html %]'" - href="buglist.cgi?[% field FILTER url_quote %]=[%- value FILTER url_quote %]"> - [% IF bug_count > 1 %] - those [% terms.bugs %] - [% ELSE %] - that [% terms.bug %] + <ul class="warningmessages"> + [% IF Param(param_name) == value %] + <li>'[% value FILTER html %]' is the default value for + the '[% field FILTER html %]' field. + [% IF user.groups.tweakparams %] + You first have to <a href="editparams.cgi?section=bugfields# + [%- param_name FILTER url_quote %]">change the default value</a> for + this field before you can delete this value. + [% END %] [% END %] - </a> - to another value before you can delete this value. - -[% END %] -[% IF value_count == 1 %] - - <p>Sorry, but '[% value FILTER html %]' is the last value for - '[%- field FILTER html %]', and so it can not be deleted.</p> + [% IF bug_count %] + <li>There + [% IF bug_count > 1 %] + are [% bug_count FILTER html %] [%+ terms.bugs %] + [% ELSE %] + is 1 [% terms.bug %] + [% END %] + with this field value. You must change the field value on + <a title="List of [% terms.bugs %] where '[% field FILTER html %]' is '[% value FILTER html %]'" + href="buglist.cgi?[% field FILTER url_quote %]=[% value FILTER url_quote %]"> + [% IF bug_count > 1 %] + those [% terms.bugs %] + [% ELSE %] + that [% terms.bug %] + [% END %] + </a> + to another value before you can delete this value. + [% END %] - [% ELSE %] + [% IF value_count == 1 %] + <li>'[% value FILTER html %]' is the last value for + '[%- field FILTER html %]', and so it can not be deleted. + [% END %] + </ul> - [% IF bug_count == 0 %] +[% ELSE %] - <p>Do you really want to delete this value?<p> - - <form method="post" action="editvalues.cgi"> - <input type="submit" value="Yes, delete"> - <input type="hidden" name="action" value="delete"> - <input type="hidden" name="field" value="[% field FILTER html %]"> - <input type="hidden" name="value" value="[% value FILTER html %]"> - </form> + <p>Do you really want to delete this value?</p> - [% END %] + <form method="post" action="editvalues.cgi"> + <input type="submit" value="Yes, delete"> + <input type="hidden" name="action" value="delete"> + <input type="hidden" name="field" value="[% field FILTER html %]"> + <input type="hidden" name="value" value="[% value FILTER html %]"> + </form> [% END %] diff --git a/template/en/default/admin/fieldvalues/list.html.tmpl b/template/en/default/admin/fieldvalues/list.html.tmpl index b661653de..d25adf2b1 100644 --- a/template/en/default/admin/fieldvalues/list.html.tmpl +++ b/template/en/default/admin/fieldvalues/list.html.tmpl @@ -50,18 +50,28 @@ name => "sortkey" heading => "Sortkey" }, - ] + { + name => "action" + heading => "Action" + content => "Delete" + contentlink => delete_contentlink + } ] %] -[% columns.push({ - heading => "Action" - content => "Delete" - contentlink => delete_contentlink - }) %] +[% overrides.action = [ { + match_value => "$default" + match_field => 'name' + override_content => 1 + content => "(Default value)" + override_contentlink => 1 + contentlink => undef + } ] +%] [% PROCESS admin/table.html.tmpl columns = columns data = values + overrides = overrides %] <p> diff --git a/template/en/default/admin/fieldvalues/updated.html.tmpl b/template/en/default/admin/fieldvalues/updated.html.tmpl index fc9fcafbc..c7f676e67 100644 --- a/template/en/default/admin/fieldvalues/updated.html.tmpl +++ b/template/en/default/admin/fieldvalues/updated.html.tmpl @@ -24,6 +24,8 @@ # value & updated_value: the name of the field value # sortkey & updated_sortkey: the field value sortkey # field: string; the field that the value belongs to + # default_value_updated: boolean; whether the default value for + # this field has been updated #%] [% title = BLOCK %]Updating Value '[% value FILTER html %]' of the @@ -34,6 +36,10 @@ [% IF updated_value %] <p>Updated field value to: '[% value FILTER html %]'.</p> + [% IF default_value_updated %] + <p>Note that this value is the default for this field. + All references to the default value will now point to this new value.</p> + [% END %] [% END %] [% IF updated_sortkey %] diff --git a/template/en/default/admin/flag-type/CVS/Entries b/template/en/default/admin/flag-type/CVS/Entries index 792ca3caa..990fd27ef 100644 --- a/template/en/default/admin/flag-type/CVS/Entries +++ b/template/en/default/admin/flag-type/CVS/Entries @@ -1,4 +1,4 @@ -/confirm-delete.html.tmpl/1.5/Sun Jan 18 18:39:14 2004//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.11.4.1/Fri Dec 2 22:45:19 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.10/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.5/Sun Jan 18 18:39:14 2004//TBUGZILLA-2_22 +/edit.html.tmpl/1.14/Sat Jan 21 14:07:03 2006//TBUGZILLA-2_22 +/list.html.tmpl/1.10/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/flag-type/CVS/Tag b/template/en/default/admin/flag-type/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/flag-type/CVS/Tag +++ b/template/en/default/admin/flag-type/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/flag-type/edit.html.tmpl b/template/en/default/admin/flag-type/edit.html.tmpl index bbf99d0f2..ad41576cb 100644 --- a/template/en/default/admin/flag-type/edit.html.tmpl +++ b/template/en/default/admin/flag-type/edit.html.tmpl @@ -121,12 +121,12 @@ </td> <td style="vertical-align: top;"> <b>Inclusions:</b><br> - [% PROCESS "global/select-menu.html.tmpl" name="inclusion_to_remove" multiple="1" size="4" options=type.inclusions %]<br> + [% PROCESS "global/select-menu.html.tmpl" name="inclusion_to_remove" multiple="1" size="7" options=type.inclusions %]<br> <input type="submit" name="categoryAction-removeInclusion" value="Remove Inclusion"> </td> <td style="vertical-align: top;"> <b>Exclusions:</b><br> - [% PROCESS "global/select-menu.html.tmpl" name="exclusion_to_remove" multiple="1" size="4" options=type.exclusions %]<br> + [% PROCESS "global/select-menu.html.tmpl" name="exclusion_to_remove" multiple="1" size="7" options=type.exclusions %]<br> <input type="submit" name="categoryAction-removeExclusion" value="Remove Exclusion"> </td> </tr> @@ -196,8 +196,8 @@ <th>Grant Group:</th> <td> the group allowed to grant/deny flags of this type - (to allow all users to grant/deny these flags, leave this empty)<br> - <input type="text" name="grant_gid" value="[% type.grant_gid FILTER html %]" size="50" maxlength="255"> + (to allow all users to grant/deny these flags, select no group)<br> + [% PROCESS select selname = "grant_gid" %] </td> </tr> @@ -205,9 +205,9 @@ <th>Request Group:</th> <td> if flags of this type are requestable, the group allowed to request them - (to allow all users to request these flags, leave this empty)<br> + (to allow all users to request these flags, select no group)<br> Note that the request group alone has no effect if the grant group is not defined!<br> - <input type="text" name="request_gid" value="[% type.request_gid FILTER html %]" size="50" maxlength="255"> + [% PROCESS select selname = "request_gid" %] </td> </tr> @@ -226,3 +226,19 @@ </form> [% PROCESS global/footer.html.tmpl %] + + +[%############################################################################%] +[%# Block for SELECT fields #%] +[%############################################################################%] + +[% BLOCK select %] + <select name="[% selname %]" id="[% selname %]"> + <option value="">(no group)</option> + [% FOREACH group = groups %] + <option value="[% group.name FILTER html %]" + [% " selected" IF type.${selname} == group.name %]>[% group.name FILTER html %] + </option> + [% END %] + </select> +[% END %] diff --git a/template/en/default/admin/groups/CVS/Entries b/template/en/default/admin/groups/CVS/Entries index cfc1bfde2..f5e4fb7ed 100644 --- a/template/en/default/admin/groups/CVS/Entries +++ b/template/en/default/admin/groups/CVS/Entries @@ -1,9 +1,9 @@ -/change.html.tmpl/1.1/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_20_2 -/create.html.tmpl/1.4/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_20_2 -/created.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_20_2 -/delete.html.tmpl/1.4.4.1/Sun Jul 31 23:51:40 2005//TBUGZILLA-2_20_2 -/deleted.html.tmpl/1.1.8.1/Mon Oct 17 22:06:58 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.5/Fri Feb 18 16:38:42 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.1.8.2/Thu Jan 26 17:40:31 2006//TBUGZILLA-2_20_2 -/remove.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_20_2 +/change.html.tmpl/1.1/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_22 +/create.html.tmpl/1.4/Tue Jul 13 05:12:31 2004//TBUGZILLA-2_22 +/created.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_22 +/delete.html.tmpl/1.6/Wed Nov 30 08:19:28 2005//TBUGZILLA-2_22 +/deleted.html.tmpl/1.2/Mon Oct 17 21:58:52 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.5/Fri Feb 18 16:38:42 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.4/Thu Jan 26 17:38:09 2006//TBUGZILLA-2_22 +/remove.html.tmpl/1.1/Tue Jul 13 05:12:32 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/groups/CVS/Tag b/template/en/default/admin/groups/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/groups/CVS/Tag +++ b/template/en/default/admin/groups/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/groups/delete.html.tmpl b/template/en/default/admin/groups/delete.html.tmpl index d720ecddc..d0f66f2ad 100644 --- a/template/en/default/admin/groups/delete.html.tmpl +++ b/template/en/default/admin/groups/delete.html.tmpl @@ -80,7 +80,7 @@ You cannot delete this group while it is tied to a product.</b> <br><input type="checkbox" name="unbind">Delete this group anyway, - and make the <U>[% name FILTER html %]</U> publicly visible.</p> + and make the product <U>[% name FILTER html %]</U> publicly visible.</p> [% END %] [% IF hasflags %] diff --git a/template/en/default/admin/groups/list.html.tmpl b/template/en/default/admin/groups/list.html.tmpl index ee1eced11..b7897c5e7 100644 --- a/template/en/default/admin/groups/list.html.tmpl +++ b/template/en/default/admin/groups/list.html.tmpl @@ -27,7 +27,7 @@ # - id: number. The ID of the group. # - name: string. The name of the group. # - description: string. The description of the group. - # - regexp: string. The user regexp for the given group. + # - userregexp: string. The user regexp for the given group. # - isactive: boolean int. Specifies if the group is active or not. # - isbuggroup: boolean int. Specifies if it can be used for bugs. #%] @@ -55,7 +55,7 @@ [% group.name FILTER html %]</a> </td> <td>[% group.description FILTER html %]</td> - <td>[% group.regexp FILTER html %] </td> + <td>[% group.userregexp FILTER html %] </td> <td align="center"> [% IF (group.isactive != 0) && (group.isbuggroup) %] diff --git a/template/en/default/admin/keywords/CVS/Entries b/template/en/default/admin/keywords/CVS/Entries index 0283b331e..6cee31404 100644 --- a/template/en/default/admin/keywords/CVS/Entries +++ b/template/en/default/admin/keywords/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20_2 -/create.html.tmpl/1.4/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20_2 -/created.html.tmpl/1.2/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20_2 -/list.html.tmpl/1.6/Fri Jul 30 22:16:38 2004//TBUGZILLA-2_20_2 -/rebuild-cache.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_22 +/create.html.tmpl/1.4/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_22 +/created.html.tmpl/1.2/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_22 +/edit.html.tmpl/1.4/Sun Jul 10 23:41:12 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.7/Sun Jul 10 23:41:12 2005//TBUGZILLA-2_22 +/rebuild-cache.html.tmpl/1.3/Sun Jan 18 18:39:15 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/keywords/CVS/Tag b/template/en/default/admin/keywords/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/keywords/CVS/Tag +++ b/template/en/default/admin/keywords/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/keywords/edit.html.tmpl b/template/en/default/admin/keywords/edit.html.tmpl index 0c24aeca9..3809563c2 100755 --- a/template/en/default/admin/keywords/edit.html.tmpl +++ b/template/en/default/admin/keywords/edit.html.tmpl @@ -49,8 +49,9 @@ <tr> <th align="right">[% terms.Bugs %]:</th> <td> - [% IF bug_count %] - [% bug_count %] + [% IF bug_count > 0 %] + <a href="buglist.cgi?keywords=[% name FILTER url_quote %]"> + [% bug_count %]</a> [% ELSE %] none [% END %] diff --git a/template/en/default/admin/keywords/list.html.tmpl b/template/en/default/admin/keywords/list.html.tmpl index 113b90433..84eb6e9f1 100755 --- a/template/en/default/admin/keywords/list.html.tmpl +++ b/template/en/default/admin/keywords/list.html.tmpl @@ -49,6 +49,7 @@ name => "bug_count" heading => "Bugs" align => "right" + contentlink => "buglist.cgi?keywords=%%name%%" }, { heading => "Action" diff --git a/template/en/default/admin/milestones/CVS/Entries b/template/en/default/admin/milestones/CVS/Entries index 10df3f08c..bd3be7907 100644 --- a/template/en/default/admin/milestones/CVS/Entries +++ b/template/en/default/admin/milestones/CVS/Entries @@ -1,10 +1,10 @@ -/confirm-delete.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20_2 -/created.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20_2 -/deleted.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20_2 -/list.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20_2 -/select-product.html.tmpl/1.2/Thu Sep 23 19:14:13 2004//TBUGZILLA-2_20_2 -/updated.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.4/Thu Jul 28 00:35:50 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.2/Tue Aug 23 12:39:17 2005//TBUGZILLA-2_22 +/created.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_22 +/deleted.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.3/Tue Aug 23 12:39:17 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_22 +/list.html.tmpl/1.3/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_22 +/select-product.html.tmpl/1.3/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.1/Sat Sep 11 06:48:14 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/milestones/CVS/Tag b/template/en/default/admin/milestones/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/milestones/CVS/Tag +++ b/template/en/default/admin/milestones/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/milestones/confirm-delete.html.tmpl b/template/en/default/admin/milestones/confirm-delete.html.tmpl index eda5add36..61601d185 100644 --- a/template/en/default/admin/milestones/confirm-delete.html.tmpl +++ b/template/en/default/admin/milestones/confirm-delete.html.tmpl @@ -23,8 +23,6 @@ [%# INTERFACE: # name: string; The name of the milestone # - # default_milestone: string; The default milestone for the product - # # bug_count: number; The number of bugs targetted at the milestone # # product: string; The name of the product diff --git a/template/en/default/admin/milestones/create.html.tmpl b/template/en/default/admin/milestones/create.html.tmpl index ac707c195..d8779dd54 100644 --- a/template/en/default/admin/milestones/create.html.tmpl +++ b/template/en/default/admin/milestones/create.html.tmpl @@ -29,9 +29,10 @@ [% PROCESS global/header.html.tmpl title = title h2 = h2 + onload = "document.forms['f'].milestone.focus()" %] -<form method="post" action="editmilestones.cgi"> +<form name="f" method="post" action="editmilestones.cgi"> <table border="0" cellpadding="4" cellspacing="0"> <tr> <th align="right"><label for="milestone">Milestone:</label></th> diff --git a/template/en/default/admin/milestones/edit.html.tmpl b/template/en/default/admin/milestones/edit.html.tmpl index 6b5ec8fb0..f49cacf4a 100644 --- a/template/en/default/admin/milestones/edit.html.tmpl +++ b/template/en/default/admin/milestones/edit.html.tmpl @@ -33,9 +33,10 @@ [%- product FILTER html %]'[% END %] [% PROCESS global/header.html.tmpl title = title + onload = "document.forms['f'].milestone.select()" %] -<form method="post" action="editmilestones.cgi"> +<form name="f" method="post" action="editmilestones.cgi"> <table border="0" cellpadding="4" cellspacing="0"> <tr> @@ -52,7 +53,6 @@ </table> <input type="hidden" name="milestoneold" value="[% name FILTER html %]"> - <input type="hidden" name="sortkeyold" value="[% sortkey FILTER html %]"> <input type="hidden" name="action" value="update"> <input type="hidden" name="product" value="[% product FILTER html %]"> <input type="submit" value="Update"> diff --git a/template/en/default/admin/milestones/list.html.tmpl b/template/en/default/admin/milestones/list.html.tmpl index 160dcd6da..b9311fc1a 100644 --- a/template/en/default/admin/milestones/list.html.tmpl +++ b/template/en/default/admin/milestones/list.html.tmpl @@ -17,13 +17,12 @@ # Rights Reserved. # # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> #%] [%# INTERFACE: - # milestones: array of hashes having the following properties: - # - name: string; The name of the milestone. - # - sortkey: number; The sortkey used to order the milestone. - # + # milestones: array of milestone objects + # showbugcounts: if defined, then bug counts should be included in the table # product: string; the name of the product we are editing milestones for #%] @@ -42,6 +41,8 @@ [%- product FILTER url_quote %]&milestone=%%name%%[% END %] [% delete_contentlink = BLOCK %]editmilestones.cgi?action=del&product= [%- product FILTER url_quote %]&milestone=%%name%%[% END %] +[% bug_count_contentlink = BLOCK %]buglist.cgi?target_milestone=%%name%%&product= + [%- product FILTER url_quote %][% END %] [% columns = [ @@ -53,25 +54,59 @@ { name => "sortkey" heading => "Sortkey" - }, + } ] %] +[% IF showbugcounts %] + + [% columns.push({ + name => "bug_count" + heading => "$terms.Bugs" + align => "right" + contentlink => bug_count_contentlink + }) + %] + +[% END %] + [% columns.push({ - heading => "Action" - content => "Delete" - contentlink => delete_contentlink - }) %] + name => "action" + heading => "Action" + content => "Delete" + contentlink => delete_contentlink + }) +%] + +[%# We want to override the usual 'Delete' link for the default + milestone %] +[% overrides.action = [ { + match_value => "$default_milestone" + match_field => 'name' + override_content => 1 + content => "(Default milestone)" + override_contentlink => 1 + contentlink => undef + } ] +%] [% PROCESS admin/table.html.tmpl columns = columns data = milestones + overrides = overrides %] <p> +[% IF ! showbugcounts %] + + <p><a href="editmilestones.cgi?product=[% product FILTER url_quote %]&showbugcounts=1"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> + +[% END %] + [% PROCESS admin/milestones/footer.html.tmpl no_edit_other_milestones_link = 1 - %] +%] [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/milestones/select-product.html.tmpl b/template/en/default/admin/milestones/select-product.html.tmpl index b2510ded9..508af6881 100644 --- a/template/en/default/admin/milestones/select-product.html.tmpl +++ b/template/en/default/admin/milestones/select-product.html.tmpl @@ -16,28 +16,22 @@ # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # - # Contributor(s): Gavin Shelley (bugzilla@chimpychompy.org) + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> # #%] [%# INTERFACE: - # products: array of hashes having the following properties: - # - name: string; The name of the product. - # - description: string; The description of the product. + # products: array of product objects + # showbugcounts: if defined, then bug counts should be included in the table #%] -[% USE Bugzilla %] -[% cgi = Bugzilla.cgi %] - [% PROCESS global/variables.none.tmpl %] [% PROCESS global/header.html.tmpl title = "Edit milestones for which product?" %] -[% bug_count_contentlink = BLOCK %]buglist.cgi?target_milestone=%%name%%&product= - [%- product FILTER url_quote %][% END %] - [% columns = [ { name => "name" @@ -52,11 +46,28 @@ ] %] +[% IF showbugcounts %] + + [% columns.push({ + name => 'bug_count' + heading => "$terms.Bugs" + align => "right" + contentlink => "buglist.cgi?product=%%name%%" + }) + %] + +[% END %] + [% PROCESS admin/table.html.tmpl columns = columns data = products %] +[% IF !showbugcounts %] + <p><a href="editmilestones.cgi?showbugcounts=1"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> +[% END %] + <p> [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/params/CVS/Entries b/template/en/default/admin/params/CVS/Entries new file mode 100644 index 000000000..099de23ac --- /dev/null +++ b/template/en/default/admin/params/CVS/Entries @@ -0,0 +1,20 @@ +/admin.html.tmpl/1.2/Thu Oct 13 09:04:05 2005//TBUGZILLA-2_22 +/attachment.html.tmpl/1.2/Wed Oct 19 20:16:14 2005//TBUGZILLA-2_22 +/auth.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/bugchange.html.tmpl/1.2/Fri Oct 14 17:54:56 2005//TBUGZILLA-2_22 +/bugfields.html.tmpl/1.2/Fri Oct 14 17:54:56 2005//TBUGZILLA-2_22 +/bugmove.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/common.html.tmpl/1.3/Mon Feb 6 09:16:16 2006//TBUGZILLA-2_22 +/core.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/dependencygraph.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/editparams.html.tmpl/1.2/Thu Oct 13 09:18:23 2005//TBUGZILLA-2_22 +/groupsecurity.html.tmpl/1.3/Sat Oct 22 13:07:06 2005//TBUGZILLA-2_22 +/index.html.tmpl/1.1/Thu Oct 13 09:18:24 2005//TBUGZILLA-2_22 +/l10n.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/ldap.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/mta.html.tmpl/1.2/Fri Jan 27 11:31:41 2006//TBUGZILLA-2_22 +/patchviewer.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/query.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/shadowdb.html.tmpl/1.1/Wed Oct 12 08:51:54 2005//TBUGZILLA-2_22 +/usermatch.html.tmpl/1.2/Sat Nov 12 10:09:44 2005//TBUGZILLA-2_22 +D diff --git a/template/en/default/admin/params/CVS/Repository b/template/en/default/admin/params/CVS/Repository new file mode 100644 index 000000000..ca6eabb08 --- /dev/null +++ b/template/en/default/admin/params/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/template/en/default/admin/params diff --git a/template/en/default/admin/params/CVS/Root b/template/en/default/admin/params/CVS/Root new file mode 100644 index 000000000..cdb6f4a07 --- /dev/null +++ b/template/en/default/admin/params/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot diff --git a/template/en/default/admin/params/CVS/Tag b/template/en/default/admin/params/CVS/Tag new file mode 100644 index 000000000..4f143e35f --- /dev/null +++ b/template/en/default/admin/params/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-2_22 diff --git a/template/en/default/admin/params/admin.html.tmpl b/template/en/default/admin/params/admin.html.tmpl new file mode 100644 index 000000000..2602cf20c --- /dev/null +++ b/template/en/default/admin/params/admin.html.tmpl @@ -0,0 +1,46 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Administrative Policies" + desc = "Set up account policies" +%] + +[% param_descs = { + allowbugdeletion => "The pages to edit products and components and versions can delete " _ + "all associated $terms.bugs when you delete a product (or component or " _ + "version). Since that is a pretty scary idea, you have to turn on " _ + "this option before any such deletions will ever happen.", + + allowemailchange => "Users can change their own email address through the preferences. " _ + "Note that the change is validated by emailing both addresses, so " _ + "switching this option on will not let users use an invalid address.", + + allowuserdeletion => "The user editing pages are capable of letting you delete user accounts. " _ + "$terms.Bugzilla will issue a warning in case you'd run into inconsistencies " _ + "when you're about to do so, but such deletions remain kinda scary. " _ + "So, you have to turn on this option before any such deletions " _ + "will ever happen.", + + supportwatchers => "Support one user watching (ie getting copies of all related " _ + "email about) another's ${terms.bugs}. Useful for people going on " _ + "vacation, and QA folks watching particular developers' ${terms.bugs}." } +%] \ No newline at end of file diff --git a/template/en/default/admin/params/attachment.html.tmpl b/template/en/default/admin/params/attachment.html.tmpl new file mode 100644 index 000000000..ef89c4af0 --- /dev/null +++ b/template/en/default/admin/params/attachment.html.tmpl @@ -0,0 +1,50 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Attachments" + desc = "Set up attachment options" +%] + +[% param_descs = { + allow_attach_url => "If this option is on, it will be possible to " _ + "specify a URL when creating an attachment and " _ + "treat the URL itself as if it were an attachment.", + maxpatchsize => "The maximum size (in kilobytes) of patches. $terms.Bugzilla will not " _ + "accept patches greater than this number of kilobytes in size. " _ + "To accept patches of any size (subject to the limitations of " _ + "your server software), set this value to zero.", + + maxattachmentsize => "The maximum size (in kilobytes) of non-patch attachments. " _ + "$terms.Bugzilla will not accept attachments greater than this number " _ + "of kilobytes in size. To accept attachments of any size " _ + "(subject to the limitations of your server software), set this " _ + "value to zero.", + + maxlocalattachment => "The maximum size (in megabytes) of attachments identified by " _ + "the user as 'Big Files' to be stored locally on the webserver. " _ + "If set to zero, attachments will never be kept on the local " _ + "filesystem.", + + convert_uncompressed_images => "If this option is on, attachments with content type image/bmp " _ + "will be converted to image/png and compressed before uploading to " _ + "the database to conserve disk space." } +%] diff --git a/template/en/default/admin/params/auth.html.tmpl b/template/en/default/admin/params/auth.html.tmpl new file mode 100644 index 000000000..040190699 --- /dev/null +++ b/template/en/default/admin/params/auth.html.tmpl @@ -0,0 +1,124 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "User Authentication" + desc = "Set up your authentication policies" +%] + +[% param_descs = { + auth_env_id => "Environment variable used by external authentication system " _ + "to store a unique identifier for each user. Leave it blank " _ + "if there isn't one or if this method of authentication " _ + "is not being used.", + + auth_env_email => "Environment variable used by external authentication system " _ + "to store each user's email address. This is a required " _ + "field for environmental authentication. Leave it blank " _ + "if you are not going to use this feature.", + + auth_env_realname => "Environment variable used by external authentication system " _ + "to store the user's real name. Leave it blank if there " _ + "isn't one or if this method of authentication is not being " _ + "used.", + + user_info_class => "Mechanism(s) to be used for gathering a user's login information. + More than one may be selected. If the first one returns nothing, + the second is tried, and so on.<br> + The types are: + <dl> + <dt>CGI</dt> + <dd> + Asks for username and password via CGI form interface. + </dd> + <dt>Env</dt> + <dd> + Info for a pre-authenticated user is passed in system + environment variables. + </dd> + </dl>", + + user_verify_class => "Mechanism(s) to be used for verifying (authenticating) information + gathered by user_info_class. + More than one may be selected. If the first one cannot find the + user, the second is tried, and so on.<br> + The types are: + <dl> + <dt>DB</dt> + <dd> + ${terms.Bugzilla}'s built-in authentication. This is the most common + choice. + </dd> + <dt>LDAP</dt> + <dd> + LDAP authentication using an LDAP server. This method is + experimental; please see the $terms.Bugzilla documentation for more + information. Using this method requires additional parameters + to be set above. + </dd> + </dl>", + + rememberlogin => "Controls management of session cookies + <ul> + <li> + on - Session cookies never expire (the user has to login only + once per browser). + </li> + <li> + off - Session cookies last until the users session ends (the user + will have to login in each new browser session). + </li> + <li> + defaulton/defaultoff - Default behavior as described + above, but user can choose whether $terms.Bugzilla will remember his + login or not. + </li> + </ul>", + + loginnetmask => "The number of bits for the netmask used if a user chooses to " _ + "allow a login to be valid for more than a single IP. Setting " _ + "this to 32 disables this feature.<br> " _ + "Note that enabling this may decrease the security of your system.", + + requirelogin => "If this option is set, all access to the system beyond the " _ + "front page will require a login. No anonymous users will " _ + "be permitted.", + + emailregexp => "This defines the regexp to use for legal email addresses. The " _ + "default tries to match fully qualified email addresses. Another " _ + "popular value to put here is <tt>^[^@]+$</tt>, which means " _ + "'local usernames, no @ allowed.'", + + emailregexpdesc => "This describes in English words what kinds of legal addresses " _ + "are allowed by the <tt>emailregexp</tt> param.", + + emailsuffix => "This is a string to append to any email addresses when actually " _ + "sending mail to that address. It is useful if you have changed " _ + "the <tt>emailregexp</tt> param to only allow local usernames, " _ + "but you want the mail to be delivered to username@my.local.hostname.", + + createemailregexp => "This defines the regexp to use for email addresses that are " _ + "permitted to self-register using a 'New Account' feature. The " _ + "default (.*) permits any account matching the emailregexp " _ + "to be created. If this parameter is left blank, no users " _ + "will be permitted to create their own accounts and all accounts " _ + "will have to be created by an administrator." } +%] \ No newline at end of file diff --git a/template/en/default/admin/params/bugchange.html.tmpl b/template/en/default/admin/params/bugchange.html.tmpl new file mode 100644 index 000000000..7d886bccc --- /dev/null +++ b/template/en/default/admin/params/bugchange.html.tmpl @@ -0,0 +1,76 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Bug Change Policies" + desc = "Set up bug change policies" +%] + +[% param_descs = { + letsubmitterchoosepriority => "If this is on, then people submitting $terms.bugs can " _ + "choose an initial priority for that ${terms.bug}. " _ + "If off, then all $terms.bugs initially have the default " _ + "priority selected below.", + + letsubmitterchoosemilestone => "If this is on, then people submitting $terms.bugs can " _ + "choose the Target Milestone for that ${terms.bug}. " _ + "If off, then all $terms.bugs initially have the default " _ + "milestone for the product being filed in.", + + musthavemilestoneonaccept => "If you are using Target Milestone, do you want to require that " _ + "the milestone be set in order for a user to ACCEPT a ${terms.bug}?", + + commentoncreate => "If this option is on, the user needs to enter a description " _ + "when entering a new ${terms.bug}.", + + commentonaccept => "If this option is on, the user needs to enter a short comment if " _ + "he accepts the ${terms.bug}.", + + commentonclearresolution => "If this option is on, the user needs to enter a short comment if " _ + "the ${terms.bug}'s resolution is cleared.", + + commentonconfirm => "If this option is on, the user needs to enter a short comment " _ + "when confirming a ${terms.bug}.", + + commentonresolve => "If this option is on, the user needs to enter a short comment if " _ + "the $terms.bug is resolved.", + + commentonreassign => "If this option is on, the user needs to enter a short comment if " _ + "the $terms.bug is reassigned.", + + commentonreassignbycomponent => "If this option is on, the user needs to enter a short comment if " _ + "the $terms.bug is reassigned by component.", + + commentonreopen => "If this option is on, the user needs to enter a short comment if " _ + "the $terms.bug is reopened.", + + commentonverify => "If this option is on, the user needs to enter a short comment if " _ + "the $terms.bug is verified.", + + commentonclose => "If this option is on, the user needs to enter a short comment if " _ + "the $terms.bug is closed.", + + commentonduplicate => "If this option is on, the user needs to enter a short comment " _ + "if the $terms.bug is marked as duplicate.", + + noresolveonopenblockers => "Don\'t allow $terms.bugs to be resolved as fixed " _ + "if they have unresolved dependencies." } +%] diff --git a/template/en/default/admin/params/bugfields.html.tmpl b/template/en/default/admin/params/bugfields.html.tmpl new file mode 100644 index 000000000..598b9109a --- /dev/null +++ b/template/en/default/admin/params/bugfields.html.tmpl @@ -0,0 +1,64 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Bug Fields" + desc = "Choose fields you want to display" +%] + +[% param_descs = { + useclassification => "If this is on, $terms.Bugzilla will associate each product with a " _ + "specific classification. But you must have 'editclassification' " _ + "permissions enabled in order to edit classifications.", + + showallproducts => "If this is on and useclassification is set, $terms.Bugzilla will add a " _ + "'All' link in the 'New $terms.Bug' page to list all available products.", + + usetargetmilestone => "Do you wish to use the Target Milestone field?", + + useqacontact => "Do you wish to use the QA Contact field?", + + usestatuswhiteboard => "Do you wish to use the Status Whiteboard field?", + + usevotes => "Do you wish to allow users to vote for ${terms.bugs}? Note that in order " _ + "for this to be effective, you will have to change the maximum " _ + "votes allowed in a product to be non-zero in " _ + "<a href=\"editproducts.cgi\">the product edit page</a>.", + + usebugaliases => "Do you wish to use $terms.bug aliases, which allow you to assign " _ + "$terms.bugs an easy-to-remember name by which you can refer to them?", + + defaultpriority => "This is the priority that newly entered $terms.bugs are set to.", + + defaultseverity => "This is the severity that newly entered $terms.bugs are set to.", + + defaultplatform => "This is the platform that is preselected on the $terms.bug " _ + "entry form.<br> " _ + "You can leave this empty: " _ + "$terms.Bugzilla will then use the platform that the browser " _ + "reports to be running on as the default.", + + defaultopsys => "This is the operating system that is preselected on the $terms.bug " _ + "entry form.<br> " _ + "You can leave this empty: " _ + "$terms.Bugzilla will then use the operating system that the browser " _ + "reports to be running on as the default." } +%] \ No newline at end of file diff --git a/template/en/default/admin/params/bugmove.html.tmpl b/template/en/default/admin/params/bugmove.html.tmpl new file mode 100644 index 000000000..902cb5a3e --- /dev/null +++ b/template/en/default/admin/params/bugmove.html.tmpl @@ -0,0 +1,50 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Bug Moving" + desc = "Set up parameters to move bugs to/from another installation" +%] + +[% param_descs = { + "move-enabled" => "If this is on, $terms.Bugzilla will allow certain people " _ + "to move $terms.bugs to the defined database.", + + "move-button-text" => "The text written on the Move button. Explain where the $terms.bug is " _ + "being moved to.", + + "move-to-url" => "The URL of the database we allow some of our $terms.bugs to be moved to.", + + "move-to-address" => "To move ${terms.bugs}, an email is sent to the target database. This is " _ + "the email address that database uses to listen for incoming ${terms.bugs}.", + + "moved-from-address" => "To move ${terms.bugs}, an email is sent to the target database. This is " _ + "the email address from which this mail, and error messages are sent.", + + movers => "A list of people with permission to move $terms.bugs and reopen moved " _ + "${terms.bugs} (in case the move operation fails).", + + "moved-default-product" => "$terms.Bugs moved from other databases to here are assigned " _ + "to this product.", + + "moved-default-component" => "$terms.Bugs moved from other databases to here are assigned " _ + "to this component." } +%] diff --git a/template/en/default/admin/params/common.html.tmpl b/template/en/default/admin/params/common.html.tmpl new file mode 100644 index 000000000..34cd1d39c --- /dev/null +++ b/template/en/default/admin/params/common.html.tmpl @@ -0,0 +1,79 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Frédéric Buclin <LpSolit@gmail.com> + #%] +[%# INTERFACE: + # panel: hash representing the current panel. + #%] + +<dl> + [% FOREACH param = panel.param_list %] + <dt><a name="[% param.name FILTER html %]">[% param.name FILTER html %]</a></dt> + <dd>[% panel.param_descs.${param.name} FILTER none %] + <p> + [% IF param.type == "t" %] + <input size="80" name="[% param.name FILTER html %]" + value="[% Param(param.name) FILTER html %]"> + [% ELSIF param.type == "l" %] + <textarea name="[% param.name FILTER html %]" rows="10" cols="80"> + [% Param(param.name) FILTER html %]</textarea> + [% ELSIF param.type == "b" %] + <input type="radio" name="[% param.name FILTER html %]" id="[% param.name FILTER html %]-on" + value=1 [% "checked=\"checked\"" IF Param(param.name) %]> + <label for="[% param.name FILTER html %]-on">On</label> + <input type="radio" name="[% param.name FILTER html %]" id="[% param.name FILTER html %]-off" + value=0 [% "checked=\"checked\"" IF !Param(param.name) %]> + <label for="[% param.name FILTER html %]-off">Off</label> + [% ELSIF param.type == "m" %] + [% boxSize = 5 %] + [% boxSize = param.choices.size IF param.choices.size < 5 %] + + <select multiple="multiple" size="[% boxSize FILTER html %]" + name="[% param.name FILTER html %]"> + [% FOREACH item = param.choices %] + <option value="[% item FILTER html %]" + [% " selected=\"selected\"" IF lsearch(Param(param.name), item) != -1 %]> + [% item FILTER html %] + </option> + [% END %] + </select> + [% ELSIF param.type == "s" %] + <select name="[% param.name FILTER html %]"> + [% FOREACH item = param.choices %] + <option value="[% item FILTER html %]" + [% " selected=\"selected\"" IF item == Param(param.name) %]> + [% item FILTER html %] + </option> + [% END %] + </select> + [% ELSE %] + <font color="red"> + <blink>Unknown param type [% param.type FILTER html %]!!!</blink> + </font> + [% END %] + </p> + <p> + <input type="checkbox" name="reset-[% param.name FILTER html %]" + id="reset-[% param.name FILTER html %]"> + <label for="reset-[% param.name FILTER html %]">Reset</label> + </p> + <hr> + </dd> + [% END %] +</dl> diff --git a/template/en/default/admin/params/core.html.tmpl b/template/en/default/admin/params/core.html.tmpl new file mode 100644 index 000000000..adf527c33 --- /dev/null +++ b/template/en/default/admin/params/core.html.tmpl @@ -0,0 +1,68 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] + +[% + title = "Required Settings" + desc = "Settings that are required for proper operation of $terms.Bugzilla" +%] + +[% param_descs = { + maintainer => "The email address of the person who maintains this installation " _ + "of ${terms.Bugzilla}.", + + urlbase => "The URL that is the common initial leading part of all $terms.Bugzilla " _ + "URLs.", + + sslbase => "The URL that is the common initial leading part of all HTTPS " _ + "(SSL) $terms.Bugzilla URLs.", + + ssl => "Controls when $terms.Bugzilla should enforce sessions to use HTTPS by " _ + "using <tt>sslbase</tt>.", + + cookiedomain => "The domain for $terms.Bugzilla cookies. Normally blank. " _ + "If your website is at 'www.foo.com', setting this to " _ + "'.foo.com' will also allow 'bar.foo.com' to access " _ + "$terms.Bugzilla cookies. This is useful if you have more than " _ + "one hostname pointing at the same web server, and you " _ + "want them to share the $terms.Bugzilla cookie.", + + cookiepath => "Path, relative to your web document root, to which to restrict " _ + "$terms.Bugzilla cookies. Normally this is the URI portion of your URL " _ + "base. Begin with a / (single slash mark). For instance, if " _ + "$terms.Bugzilla serves from 'http://www.somedomain.com/bugzilla/', set " _ + "this parameter to /bugzilla/. Setting it to / will allow " _ + "all sites served by this web server or virtual host to read " _ + "$terms.Bugzilla cookies.", + + timezone => "The timezone that your database server lives in. If set to '', " _ + "then the timezone will not be displayed with the timestamps.", + + utf8 => "Use UTF-8 (Unicode) encoding for all text in ${terms.Bugzilla}. New " _ + "installations should set this to true to avoid character encoding " _ + "problems. Existing databases should set this to true only after " _ + "the data has been converted from existing legacy character " _ + "encodings to UTF-8.", + + shutdownhtml => "If this field is non-empty, then $terms.Bugzilla will be completely " _ + "disabled and this text will be displayed instead of all the " _ + "$terms.Bugzilla pages." } +%] \ No newline at end of file diff --git a/template/en/default/admin/params/dependencygraph.html.tmpl b/template/en/default/admin/params/dependencygraph.html.tmpl new file mode 100644 index 000000000..9ac2ad04b --- /dev/null +++ b/template/en/default/admin/params/dependencygraph.html.tmpl @@ -0,0 +1,50 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Dependency Graphs" + desc = "Optional setup for dependency graphing" +%] + +[% param_descs = { + webdotbase => "It is possible to show graphs of dependent ${terms.bugs}. You may set + this parameter to any of the following: + <ul> + <li> + A complete file path to 'dot' (part of + <a href=\"http://www.graphviz.org\">GraphViz</a>) will + generate the graphs locally. + </li> + <li> + A URL prefix pointing to an installation of the + <a href=\"http://www.research.att.com/~north/cgi-bin/webdot.cgi\">webdot + package</a> will generate the graphs remotely. + </li> + <li> + A blank value will disable dependency graphing. + </li> + </ul> + The default value is a publicly-accessible webdot server. If you change + this value, make certain that the webdot server can read files from your + webdot directory. On Apache you do this by editing the .htaccess file, + for other systems the needed measures may vary. You can run checksetup.pl + to recreate the .htaccess file if it has been lost."} +%] \ No newline at end of file diff --git a/template/en/default/admin/params/editparams.html.tmpl b/template/en/default/admin/params/editparams.html.tmpl new file mode 100644 index 000000000..0560cac6c --- /dev/null +++ b/template/en/default/admin/params/editparams.html.tmpl @@ -0,0 +1,110 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[%# INTERFACE: + # panels: array of hashes representing the panels available. + # param_changed: array of parameters which have been changed. + # shutdown_is_active: boolean; is true when 'shutdownhtml' has been turned on. + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% curpanel = -1 %] +[% panels = panels.sort('sortkey') %] + +[% FOREACH panel = panels %] + [% PROCESS "admin/params/${panel.name}.html.tmpl" + params = panel.param_list %] + [% panel.title = title %] + [% panel.desc = desc %] + [% panel.param_descs = param_descs %] + [% IF panel.current %][% curpanel = loop.index %][% END %] +[% END %] + +[% current_panel = panels.$curpanel %] + +[%# We cannot call header.html.tmpl earlier as we have to know + which panel is active first, in order to get its title %] + +[% title = BLOCK %] + [% IF curpanel == -1 %] + [% terms.Bugzilla FILTER html %] Parameters: Index + [% ELSE %] + [% terms.Bugzilla FILTER html %] Configuration: + [%+ current_panel.title FILTER html %] + [% END %] +[% END %] + +[% PROCESS global/header.html.tmpl + title = title + message = message + style_urls = ['skins/standard/params.css'] +%] + +<table border="0" width="100%"> + <tr> + <td> + [%# NAVIGATION BAR %] + <table id="menu"> + <tr> + <td class="index"> + <a href="editparams.cgi?section=index" title="Show all parameters">Index</a> + </td> + </tr> + [% FOREACH panel = panels %] + <tr> + [% IF panel.current %] + <td class="selected_section"> + <span title="[% panel.desc FILTER html %]">[% panel.title FILTER html %]</span> + </td> + [% ELSE %] + <td> + <a href="editparams.cgi?section=[% panel.name FILTER url_quote %]" + title="[% panel.desc FILTER html %]">[% panel.title FILTER html %]</a> + </td> + [% END %] + </tr> + [% END %] + </table> + </td> + <td> + [% IF curpanel == -1 %] + [% PROCESS admin/params/index.html.tmpl panels = panels %] + [% ELSE %] + <p> + This lets you edit the basic operating parameters of [% terms.Bugzilla %]. + Be careful!<br> + Any item you check "Reset" on will get reset to its default value. + </p> + [%# CONTENT PANEL %] + <form method="post" action="editparams.cgi"> + [% PROCESS admin/params/common.html.tmpl panel = current_panel %] + <input type="hidden" name="section" value="[% current_panel.name FILTER html %]"> + <input type="hidden" name="action" value="save"> + <input type="reset" value="Reset form"> + <input type="submit" name="action" value="Save Changes"> + </form> + [% END %] + </td> + </tr> +</table> + +[% INCLUDE global/footer.html.tmpl %] diff --git a/template/en/default/admin/params/groupsecurity.html.tmpl b/template/en/default/admin/params/groupsecurity.html.tmpl new file mode 100644 index 000000000..9016a7038 --- /dev/null +++ b/template/en/default/admin/params/groupsecurity.html.tmpl @@ -0,0 +1,60 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Group Security" + desc = "Decide how you will use Security Groups" +%] + +[% param_descs = { + makeproductgroups => "If this is on, $terms.Bugzilla will associate a $terms.bug group " _ + "with each product in the database, and use it for querying ${terms.bugs}.", + + useentrygroupdefault => "If this is on, $terms.Bugzilla will use product $terms.bug groups " _ + "by default to restrict who can enter ${terms.bugs}. If this is on, " _ + "users can see any product to which they have entry access in search menus. " _ + "If this is off, users can see any product to which they have not " _ + "been excluded by a mandatory restriction.", + + chartgroup => "The name of the group of users who can use the 'New Charts' " _ + "feature. Administrators should ensure that the public categories " _ + "and series definitions do not divulge confidential information " _ + "before enabling this for an untrusted population. If left blank, " _ + "no users will be able to use New Charts.", + + insidergroup => "The name of the group of users who can see/change private " _ + "comments and attachments.", + + timetrackinggroup => "The name of the group of users who can see/change time tracking " _ + "information.", + + usevisibilitygroups => "Do you wish to restrict visibility of users to members of " _ + "specific groups?", + + strict_isolation => "Don't allow users to be assigned to, " _ + "be qa-contacts on, " _ + "be added to CC list, " _ + "or make or remove dependencies " _ + "involving any bug that is in a product on which that " _ + "user is forbidden to edit.", + + } +%] diff --git a/template/en/default/admin/params/index.html.tmpl b/template/en/default/admin/params/index.html.tmpl new file mode 100644 index 000000000..317ac6cf3 --- /dev/null +++ b/template/en/default/admin/params/index.html.tmpl @@ -0,0 +1,49 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Frédéric Buclin <LpSolit@gmail.com> + #%] + +<p> + All parameters are displayed below, per section. + If you cannot find one from here, then the parameter does not exist. +</p> + +<div align="center"> + <table> + <tr> + <th>Parameter</th> + <th>Section</th> + </tr> + [% FOREACH panel = panels %] + [% FOREACH param = panel.param_list.sort('name') %] + <tr> + <td>[% param.name FILTER html %]</td> + <td> + <a href="editparams.cgi?section= + [%- panel.name FILTER url_quote %]#[% param.name FILTER url_quote %]"> + [% panel.title FILTER html %]</a> + </td> + </tr> + [% END %] + <tr> + <td> </td><td> </td> + </tr> + [% END %] + </table> +</div> diff --git a/template/en/default/admin/params/l10n.html.tmpl b/template/en/default/admin/params/l10n.html.tmpl new file mode 100644 index 000000000..1ab062cca --- /dev/null +++ b/template/en/default/admin/params/l10n.html.tmpl @@ -0,0 +1,46 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Localization" + desc = "Define what languages you want made available to your users" +%] + +[%# Get the list of available languages %] +[% available_languages = "unknown" %] +[% FOREACH param = params %] + [% IF param.name == "languages" %] + [% available_languages = param.extra_desc.available_languages FILTER html %] + [% END %] +[% END %] + +[% param_descs = { + languages => "A comma-separated list of RFC 1766 language tags. These " _ + "identify the languages in which you wish $terms.Bugzilla output " _ + "to be displayed. Note that you must install the appropriate " _ + "language pack before adding a language to this Param. The " _ + "language used is the one in this list with the highest " _ + "q-value in the user's Accept-Language header.<br> " _ + "Available languages: $available_languages" , + + defaultlanguage => "The UI language $terms.Bugzilla falls back on if no suitable " _ + "language is found in the user's Accept-Language header." } +%] diff --git a/template/en/default/admin/params/ldap.html.tmpl b/template/en/default/admin/params/ldap.html.tmpl new file mode 100644 index 000000000..6e7068796 --- /dev/null +++ b/template/en/default/admin/params/ldap.html.tmpl @@ -0,0 +1,46 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "LDAP" + desc = "Configure this first before choosing LDAP as an authentication method" +%] + +[% param_descs = { + LDAPserver => "The name (and optionally port) of your LDAP server " _ + "(e.g. ldap.company.com, or ldap.company.com:portnum).", + + LDAPbinddn => "If your LDAP server requires that you use a binddn and password " _ + "instead of binding anonymously, enter it here " _ + "(e.g. cn=default,cn=user:password). " _ + "Leave this empty for the normal case of an anonymous bind.", + + LDAPBaseDN => "The BaseDN for authenticating users against " _ + "(e.g. ou=People,o=Company).", + + LDAPuidattribute => "The name of the attribute containing the user's login name.", + + LDAPmailattribute => "The name of the attribute of a user in your directory that " _ + "contains the email address.", + + LDAPfilter => "LDAP filter to AND with the <tt>LDAPuidattribute</tt> for " _ + "filtering the list of valid users." } +%] diff --git a/template/en/default/admin/params/mta.html.tmpl b/template/en/default/admin/params/mta.html.tmpl new file mode 100644 index 000000000..37d1d8e86 --- /dev/null +++ b/template/en/default/admin/params/mta.html.tmpl @@ -0,0 +1,109 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Email" + desc = "How will outgoing mail be delivered?" +%] + +[% param_descs = { + mail_delivery_method => "Defines how email is sent, or if it is sent at all.<br> + <ul> + <li> + 'sendmail', 'smtp' and 'qmail' are all MTAs. + You need to install a third-party sendmail replacement if + you want to use sendmail on Windows. + </li> + <li> + 'testfile' is useful for debugging: all email is stored + in 'data/mailer.testfile' instead of being sent. For more + information, see the Mail::Mailer manual. + </li> + <li> + 'none' will completely disable email. $terms.Bugzilla continues + to act as though it is sending mail, but nothing is sent or + stored. + </li> + </ul>", + + sendmailnow => "Sites using anything older than version 8.12 of 'sendmail' " _ + "can achieve a significant performance increase in the " _ + "UI -- at the cost of delaying the sending of mail -- by " _ + "disabling this parameter. Sites using 'sendmail' 8.12 or " _ + "higher should leave this on, as they will see no benefit from " _ + "turning it off. Sites using an MTA other than 'sendmail' " _ + "<b>must</b> leave it on, or no $terms.bug mail will be sent.", + + smtpserver => "The SMTP server address (if using SMTP for mail delivery).", + + passwordmail => "The email that gets sent to people to tell them their password. " _ + "Within this text, %mailaddress% gets replaced by the person's " _ + "email address, %login% gets replaced by the person's login " _ + "(usually the same thing), and %password% gets replaced by their " _ + "password. %<i>anythingelse</i>% gets replaced by the " _ + "definition of that parameter (as defined on this page).", + + newchangedmail => "The email that gets sent to people when a $terms.bug changes. Within " _ + "this text, %to% gets replaced with the e-mail address of the " _ + "person receiving the mail. %bugid% gets replaced by the $terms.bug " _ + "number. %diffs% gets replaced with what has changed. " _ + "%neworchanged% is 'New:' if this mail is reporting a new $terms.bug or " _ + "empty if changes were made to an existing one. %summary% gets " _ + "replaced by the summary of this ${terms.bug}. %reasonsheader% is " _ + "replaced by an abbreviated list of reasons why the user is " _ + "getting the email, suitable for use in an email header (such " _ + "as X-Bugzilla-Reason). %reasonsbody% is replaced by text that " _ + "explains why the user is getting the email in more user " _ + "friendly text than %reasonsheader%. " _ + "%threadingmarker% will become either a Message-ID line (for " _ + "new-${terms.bug} messages) or a In-Reply-To line (for ${terms.bug}-change " _ + "messages). " _ + "%<i>anythingelse</i>% gets " _ + "replaced by the definition of that parameter (as defined on " _ + "this page).", + + whinedays => "The number of days that we'll let a $terms.bug sit untouched in a NEW " _ + "state before our cronjob will whine at the owner.<br> " _ + "Set to 0 to disable whining.", + + whinemail => "The email that gets sent to anyone who has a NEW or REOPENED " _ + "$terms.bug that hasn't been touched for more than <b>whinedays</b>. " _ + "Within this text, %email% gets replaced by the offender's " _ + "email address. %userid% gets replaced by the offender's " _ + "$terms.Bugzilla login (which, in most installations, is the same as " _ + "the email address.) %<i>anythingelse</i>% gets replaced by the " _ + "definition of that parameter (as defined on this page).<p> " _ + "It is a good idea to make sure this message has a valid From: " _ + "address, so that if the mail bounces, a real person can know " _ + "that there are $terms.bugs assigned to an invalid address.", + + voteremovedmail => "This is a mail message to send to anyone who gets a vote removed " _ + "from $terms.abug for any reason. %to% gets replaced by the person who " _ + "used to be voting for this ${terms.bug}. %bugid% gets replaced by the " _ + "$terms.bug number. %reason% gets replaced by a short reason describing " _ + "why the vote(s) were removed. %votesremoved%, %votesold% and " _ + "%votesnew% is the number of votes removed, before and after " _ + "respectively. %votesremovedtext%, %votesoldtext% and " _ + "%votesnewtext% are these as sentences, e.g. 'You had 2 votes on " _ + "this ${terms.bug}.' %count% is also supported for backwards " _ + "compatibility. %<i>anythingelse</i>% gets replaced by the " _ + "definition of that parameter (as defined on this page)." } +%] diff --git a/template/en/default/admin/params/patchviewer.html.tmpl b/template/en/default/admin/params/patchviewer.html.tmpl new file mode 100644 index 000000000..f3dd6d4a1 --- /dev/null +++ b/template/en/default/admin/params/patchviewer.html.tmpl @@ -0,0 +1,65 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Patch Viewer" + desc = "Set up third-party applications to run with PatchViewer" +%] + +[% param_descs = { + cvsroot => "The <a href=\"http://www.cvshome.org\">CVS</a> root that most " _ + "users of your system will be using for 'cvs diff'. Used in " _ + "Patch Viewer ('Diff' option on patches) to figure out where " _ + "patches are rooted even if users did the 'cvs diff' from " _ + "different places in the directory structure (NOTE: if your " _ + "CVS repository is remote and requires a password, you must " _ + "either ensure the $terms.Bugzilla user has done a 'cvs login' or " _ + "specify the password " _ + "<a href=\"http://www.cvshome.org/docs/manual/cvs_2.html#SEC26\">as " _ + "part of the CVS root.</a>). Leave this blank if you have no " _ + "CVS repository.", + + cvsroot_get => "The CVS root $terms.Bugzilla will be using to get patches from. " _ + "Some installations may want to mirror their CVS repository on " _ + "the $terms.Bugzilla server or even have it on that same server, and " _ + "thus the repository can be the local file system (and much " _ + "faster). Make this the same as cvsroot if you don't " _ + "understand what this is (if cvsroot is blank, make this blank too).", + + bonsai_url => "The URL to a <a href=\"http://www.mozilla.org/bonsai.html\">Bonsai</a> " _ + "server containing information about your CVS repository. " _ + "Patch Viewer will use this information to create links to " _ + "bonsai's blame for each section of a patch (it will append " _ + "'/cvsblame.cgi?...' to this url). Leave this blank if you " _ + "don't understand what this is.", + + lxr_url => "The URL to an <a href=\"http://sourceforge.net/projects/lxr\">LXR</a> server " _ + "that indexes your CVS repository. Patch Viewer will use this " _ + "information to create links to LXR for each file in a patch. " _ + "Leave this blank if you don't understand what this is.", + + lxr_root => "Some LXR installations do not index the CVS repository from the root -- " _ + "<a href=\"http://lxr.mozilla.org/mozilla\">Mozilla's</a>, for " _ + "example, starts indexing under <code>mozilla/</code>. This " _ + "means URLs are relative to that extra path under the root. " _ + "Enter this if you have a similar situation. Leave it blank " _ + "if you don't know what this is." } +%] diff --git a/template/en/default/admin/params/query.html.tmpl b/template/en/default/admin/params/query.html.tmpl new file mode 100644 index 000000000..ca4280f62 --- /dev/null +++ b/template/en/default/admin/params/query.html.tmpl @@ -0,0 +1,58 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Query Defaults" + desc = "Default options for query and buglists" +%] + +[% param_descs = { + quip_list_entry_control => "Controls how easily users can add entries to the quip list. + <ul> + <li> + open - Users may freely add to the quip list, and + their entries will immediately be available for viewing. + </li> + <li> + moderated - quips can be entered, but need to be approved + by an admin before they will be shown. + </li> + <li> + closed - no new additions to the quips list are allowed. + </li> + </ul>", + + mostfreqthreshold => "The minimum number of duplicates $terms.abug needs to show up on the " _ + "<a href=\"duplicates.cgi\">most frequently reported $terms.bugs page</a>. " _ + "If you have a large database and this page takes a long time to " _ + "load, try increasing this number.", + + mybugstemplate => "This is the URL to use to bring up a simple 'all of my $terms.bugs' " _ + "list for a user. %userid% will get replaced with the login name of a user.", + + defaultquery => "This is the default query that initially comes up when you " _ + "access the advanced query page. It's in URL parameter " _ + "format, which makes it hard to read. Sorry!", + + quicksearch_comment_cutoff => "The maximum number of search terms for a QuickSearch " _ + "to search comments. If the QuickSearch query contains " _ + "more terms than this value, QuickSearch will not search comments." } +%] diff --git a/template/en/default/admin/params/shadowdb.html.tmpl b/template/en/default/admin/params/shadowdb.html.tmpl new file mode 100644 index 000000000..7d038381a --- /dev/null +++ b/template/en/default/admin/params/shadowdb.html.tmpl @@ -0,0 +1,50 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "Shadow Database" + desc = "An optional hack to increase database performance" +%] + +[% param_descs = { + shadowdbhost => "The host the shadow database is on.", + + shadowdbport => "The port the shadow database is on. Ignored if " _ + "<tt>shadowdbhost</tt> is blank. Note: if the host is the local " _ + "machine, then MySQL will ignore this setting, and you must " _ + "specify a socket below.", + + shadowdbsock => "The socket used to connect to the shadow database, if the host " _ + "is the local machine. This setting is required because MySQL " _ + "ignores the port specified by the client and connects using " _ + "its compiled-in socket path (on unix machines) when connecting " _ + "from a client to a local server. If you leave this blank, and " _ + "have the database on localhost, then the <tt>shadowdbport</tt> " _ + "will be ignored.", + + shadowdb => "If non-empty, then this is the name of another database in " _ + "which $terms.Bugzilla will use as a read-only copy of everything. " _ + "This is done so that long slow read-only operations can be used " _ + "against this db, and not lock up things for everyone else. This " _ + "database is on the <tt>shadowdbhost</tt>, and must exist. " _ + "$terms.Bugzilla does not update it, if you use this parameter, then " _ + "you need to set up replication for your database." } +%] diff --git a/template/en/default/admin/params/usermatch.html.tmpl b/template/en/default/admin/params/usermatch.html.tmpl new file mode 100644 index 000000000..66f22ce94 --- /dev/null +++ b/template/en/default/admin/params/usermatch.html.tmpl @@ -0,0 +1,46 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Dave Miller <justdave@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] +[% + title = "User Matching" + desc = "Set up your user matching policies" +%] + +[% param_descs = { + usemenuforusers => "If this option is set, $terms.Bugzilla will offer you a list " _ + "to select from (instead of a text entry field) where a user " _ + "needs to be selected. This option should not be enabled on " _ + "sites where there are a large number of users.", + + usermatchmode => "Allow match strings to be entered for user names when entering " _ + "and editing ${terms.bugs}.<p> " _ + "'off' disables matching,<br> " _ + "'wildcard' allows only wildcards,<br> " _ + "and 'search' allows both wildcards and substring (freetext) matches.", + + maxusermatches => "Search for no more than this many matches.<br> " _ + "If set to '1', no users will be displayed on ambiguous matches. " _ + "This is useful for user privacy purposes.<br> " _ + "A value of zero means no limit.", + + confirmuniqueusermatch => "Whether a confirmation screen should be displayed when only " _ + "one user matches a search entry." } +%] diff --git a/template/en/default/admin/products/CVS/Entries b/template/en/default/admin/products/CVS/Entries index 7c544e360..7194de109 100644 --- a/template/en/default/admin/products/CVS/Entries +++ b/template/en/default/admin/products/CVS/Entries @@ -1,6 +1,11 @@ -/confirm-delete.html.tmpl/1.1.2.1/Sat Nov 19 00:48:18 2005//TBUGZILLA-2_20_2 -/deleted.html.tmpl/1.1.2.1/Mon Sep 12 19:10:48 2005//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.3.2.1/Mon Sep 12 19:10:48 2005//TBUGZILLA-2_20_2 -/list-classifications.html.tmpl/1.1/Thu Mar 17 14:47:06 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.1/Wed Feb 16 18:05:06 2005//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.3/Sat Nov 19 00:48:08 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.3/Wed Oct 26 17:14:33 2005//TBUGZILLA-2_22 +/created.html.tmpl/1.2/Mon Oct 17 21:43:41 2005//TBUGZILLA-2_22 +/deleted.html.tmpl/1.3/Mon Oct 17 21:43:41 2005//TBUGZILLA-2_22 +/edit-common.html.tmpl/1.4/Tue Dec 13 20:08:13 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.5/Wed Oct 26 17:14:35 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.6/Mon Oct 17 21:43:41 2005//TBUGZILLA-2_22 +/list-classifications.html.tmpl/1.1/Thu Mar 17 14:47:06 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.3/Sun Oct 30 21:42:13 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.2/Mon Oct 17 21:43:41 2005//TBUGZILLA-2_22 D/groupcontrol//// diff --git a/template/en/default/admin/products/CVS/Tag b/template/en/default/admin/products/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/products/CVS/Tag +++ b/template/en/default/admin/products/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/products/confirm-delete.html.tmpl b/template/en/default/admin/products/confirm-delete.html.tmpl index dc18eb512..55fb49fb0 100644 --- a/template/en/default/admin/products/confirm-delete.html.tmpl +++ b/template/en/default/admin/products/confirm-delete.html.tmpl @@ -15,32 +15,16 @@ #%] [%# INTERFACE: - # product_name: string; The name of the product - # - # prod_description: string; Product description, may be empty + # product: Bugzilla::Product object; The product # # (classification fields available if Param('useclassification') is enabled:) # - # classification: string; The name of the classification the product is in - # - # class_description: string; Classification description, may be empty - # - # bug_count: number; The number of bugs belonging to the product - # - # milestoneurl: string; milestone url, if milestones are in use, - # may be empty - # - # disallownew: boolean; Are new bugs allowed for the product flag - # - # components: list of hashes, members are: name, description - # - # versions: list of version values. - # - # milestones: list of milestone values. + # classification: Bugzilla::Classification object; The classification + # the product is in # #%] -[% title = BLOCK %]Delete Product '[% product_name FILTER html %]' +[% title = BLOCK %]Delete Product '[% product.name FILTER html %]' [% END %] [% PROCESS global/header.html.tmpl @@ -50,25 +34,12 @@ [% IF classification %] [% classification_url_part = BLOCK %]&classification= - [%- classification FILTER url_quote %] + [%- classification.name FILTER url_quote %] [%- END %] [% ELSE %] [% classification_url_part = "" %] [% END %] -[% UNLESS class_description %] - [% class_description = '<span style="color: red">missing</span>' %] -[% END %] -[% UNLESS prod_description %] - [% prod_description = '<span style="color: red">missing</span>' %] -[% END %] - -[% IF disallownew %] - [% disallownew = "closed" %] -[% ELSE %] - [% disallownew = "open" %] -[% END %] - <table border="1" cellpadding="4" cellspacing="0"> <tr bgcolor="#6666FF"> <th valign="top" align="left">Field</th> @@ -78,37 +49,49 @@ [% IF Param('useclassification') %] <tr> <td>Classification:</td> - <td>[% classification FILTER html %]</td> + <td>[% classification.name FILTER html %]</td> </tr> <tr> <td>Classification Description:</td> [%# descriptions are intentionally not filtered to allow html content %] - <td>[% class_description FILTER none %]</td> + <td> + [% IF classification.description %] + [% classification.description FILTER none %] + [% ELSE %] + <span style="color: red">missing</span> + [% END %] + </td> </tr> [% END %] <tr> <td valign="top">Product:</td> <td valign="top"> - <a href="editproducts.cgi?product=[% product_name FILTER url_quote %] + <a href="editproducts.cgi?product=[% product.name FILTER url_quote %] [%- classification_url_part %]"> - [% product_name FILTER html %] + [% product.name FILTER html %] </a> </td> </tr> <tr> <td valign="top">Description:</td> [%# descriptions are intentionally not filtered to allow html content %] - <td valign="top">[% prod_description FILTER none %]</td> + <td valign="top"> + [% IF product.description %] + [% product.description FILTER none %] + [% ELSE %] + <span style="color: red">missing</span> + [% END %] + </td> </tr> [% IF Param('usetargetmilestone') %] <tr> <td>Milestone URL:</td> <td> - [% IF milestoneurl %] - <a href="[% milestoneurl FILTER uri %]"> - [%- milestoneurl FILTER html %] + [% IF product.milestone_url %] + <a href="[% product.milestone_url FILTER uri %]"> + [%- product.milestone_url FILTER html %] </a> [% ELSE %] none @@ -119,15 +102,21 @@ <tr> <td>Closed for [% terms.bugs %]:</td> - <td>[% disallownew FILTER html %]</td> + <td> + [% IF product.disallownew %] + closed + [% ELSE %] + open + [% END %] + </td> </tr> <tr> <td> - [% IF components.size > 0 %] - <a href="editcomponents.cgi?product=[% product_name FILTER url_quote %] + [% IF product.components.size > 0 %] + <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %] [%- classification_url_part %]" - title="Edit components for product '[% product_name FILTER html %]'"> + title="Edit components for product '[% product.name FILTER html %]'"> Components: </a> [% ELSE %] @@ -135,9 +124,9 @@ [% END %] </td> <td> - [% IF components.size > 0 %] + [% IF product.components.size > 0 %] <table> - [% FOREACH c = components %] + [% FOREACH c = product.components %] <tr> <th align="right">[% c.name FILTER html %]:</th> [%# descriptions are intentionally not filtered to allow html content %] @@ -159,8 +148,8 @@ <tr> <td> - [% IF versions.size > 0 %] - <a href="editversions.cgi?product=[%- product_name FILTER url_quote %] + [% IF product.versions.size > 0 %] + <a href="editversions.cgi?product=[%- product.name FILTER url_quote %] [%- classification_url_part %]"> Versions: </a> @@ -168,9 +157,9 @@ Versions: [% END %] <td> - [% IF versions.size > 0 %] - [% FOREACH v = versions %] - [% v FILTER html %]<br> + [% IF product.versions.size > 0 %] + [% FOREACH v = product.versions %] + [% v.name FILTER html %]<br> [% END %] [% ELSE %] none @@ -178,11 +167,12 @@ </td> </tr> + [% IF Param('usetargetmilestone') %] <tr> <td valign="top"> - [% IF milestones.size > 0 %] - <a href="editmilestones.cgi?product=[%- product_name FILTER url_quote %] + [% IF product.milestones.size > 0 %] + <a href="editmilestones.cgi?product=[%- product.name FILTER url_quote %] [%- classification_url_part -%]"> Milestones: </a> @@ -191,9 +181,9 @@ [% END %] </td> <td> - [% IF milestones.size > 0 %] - [% FOREACH m = milestones %] - [% m FILTER html %]<br> + [% IF product.milestones.size > 0 %] + [% FOREACH m = product.milestones %] + [% m.name FILTER html %]<br> [% END %] [% ELSE %] none @@ -205,12 +195,12 @@ <tr> <td>[% terms.Bugs %]:</td> <td> - [% IF bug_count %] - <a href="buglist.cgi?product=[%- product_name FILTER url_quote %] + [% IF product.bug_count %] + <a href="buglist.cgi?product=[%- product.name FILTER url_quote %] [%- classification_url_part %]" title="List of [% terms.bugs %] for product ' - [%- product_name FILTER html %]'"> - [% bug_count %] + [%- product.name FILTER html %]'"> + [% product.bug_count FILTER html %] </a> [% ELSE %] none @@ -221,21 +211,21 @@ <h2>Confirmation</h2> -[% IF bug_count %] +[% IF product.bug_count %] [% IF !Param("allowbugdeletion") %] Sorry, there - [% IF bug_count > 1 %] - are [% bug_count %] [%+ terms.bugs %] + [% IF product.bug_count > 1 %] + are [% product.bug_count FILTER html %] [%+ terms.bugs %] [% ELSE %] is 1 [% terms.bug %] [% END %] outstanding for this product. You must reassign - [% IF bug_count > 1 %] + [% IF product.bug_count > 1 %] those [% terms.bugs %] [% ELSE %] that [% terms.bug %] @@ -249,8 +239,8 @@ <tr> <td> There - [% IF bug_count > 1 %] - are [% bug_count %] [%+ terms.bugs %] + [% IF product.bug_count > 1 %] + are [% product.bug_count FILTER html %] [%+ terms.bugs %] [% ELSE %] is 1 [% terms.bug %] [% END %] @@ -265,16 +255,16 @@ [% END %] -[% IF bug_count == 0 || Param('allowbugdeletion') %] +[% IF product.bug_count == 0 || Param('allowbugdeletion') %] <p>Do you really want to delete this product?<p> <form method="post" action="editproducts.cgi"> <input type="submit" value="Yes, delete"> <input type="hidden" name="action" value="delete"> - <input type="hidden" name="product" value="[% product_name FILTER html %]"> + <input type="hidden" name="product" value="[% product.name FILTER html %]"> <input type="hidden" name="classification" - value="[% classification FILTER html %]"> + value="[% classification.name FILTER html %]"> </form> [% END %] diff --git a/template/en/default/admin/products/create.html.tmpl b/template/en/default/admin/products/create.html.tmpl new file mode 100644 index 000000000..fd1ed34cc --- /dev/null +++ b/template/en/default/admin/products/create.html.tmpl @@ -0,0 +1,68 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # classification: Bugzilla::Classification object; If classifications + # are enabled, then this is + # the currently selected classification + # + #%] + +[% title = BLOCK %]Add Product[% END %] + +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] +%] + +[% DEFAULT + product.votesperuser = "0", + product.maxvotesperbug = "10000", + product.votestoconfirm = "0", + version = "unspecified", + product.defaultmilestone = "---" +%] + +<form method="post" action="editproducts.cgi"> + <table border="0" cellpadding="4" cellspacing="0"> + + [% PROCESS "admin/products/edit-common.html.tmpl" %] + + <tr> + <th align="right">Version:</th> + <td><input size="64" maxlength="255" name="version" + value="[% version FILTER html %]"> + </td> + </tr> + <tr> + <th align="right">Create chart datasets for this product:</th> + <td><input type="checkbox" name="createseries" value="1"></td> + </tr> + </table> + + <input type="submit" value="Add"> + <input type="hidden" name="subcategory" value="-All-"> + <input type="hidden" name="open_name" value="All Open"> + <input type="hidden" name="action" value="new"> + <input type="hidden" name="classification" + value="[% classification.name FILTER html %]"> +</form> + +[% PROCESS "admin/products/footer.html.tmpl" + no_add_product_link = 1 + no_edit_product_link = 1 %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/created.html.tmpl b/template/en/default/admin/products/created.html.tmpl new file mode 100644 index 000000000..f19854200 --- /dev/null +++ b/template/en/default/admin/products/created.html.tmpl @@ -0,0 +1,36 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; the Product created. + # + #%] + +[% PROCESS global/header.html.tmpl + title = 'New Product Created' +%] +<br> +<div style='border: 1px red solid; padding: 1ex;'> + <b>You will need to + <a href="editcomponents.cgi?action=add&product=[% product.name FILTER url_quote %]"> + add at least one component + </a> before you can enter [% terms.bugs %] against this product + </b> +</div> + +[% PROCESS "admin/products/footer.html.tmpl" %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/deleted.html.tmpl b/template/en/default/admin/products/deleted.html.tmpl index 3252f97c9..049bcae0b 100644 --- a/template/en/default/admin/products/deleted.html.tmpl +++ b/template/en/default/admin/products/deleted.html.tmpl @@ -15,11 +15,16 @@ # #%] +[%# INTERFACE: + # product: Bugzilla::Product object; The product + # + #%] + [% PROCESS global/header.html.tmpl title = 'Deleting product' %] -[% IF nb_bugs %] +[% IF product.bug_count %] All references to deleted [% terms.bugs %] removed. [% END %] @@ -35,7 +40,7 @@ </p> <p> - Product [% product FILTER html %] deleted. + Product [% product.name FILTER html %] deleted. </p> [% PROCESS admin/products/footer.html.tmpl diff --git a/template/en/default/admin/products/edit-common.html.tmpl b/template/en/default/admin/products/edit-common.html.tmpl new file mode 100644 index 000000000..ec6477287 --- /dev/null +++ b/template/en/default/admin/products/edit-common.html.tmpl @@ -0,0 +1,102 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): Jack Nerad <jnerad@bellsouth.net> + # Tiago R. Mello <tiago@async.com.br> + # Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; The product + # + # classification: Bugzilla::Classifiation object; classification product is in. + #%] + +[% PROCESS "global/field-descs.none.tmpl" %] + +[% IF Param('useclassification') %] + <tr> + <th align="right"><b>Classification:</b></th> + <td><b>[% classification.name FILTER html %]</b></td> + </tr> +[% END %] + +<tr> + <th align="right">Product:</th> + <td><input size="64" maxlength="64" name="product" + value="[% product.name FILTER html %]"> + </td> +</tr> +<tr> + <th align="right">Description:</th> + <td><textarea rows="4" cols="64" wrap="virtual" name="description"> + [% product.description FILTER none %]</textarea> + </td> +</tr> + +[% IF Param('usetargetmilestone') -%] + <tr> + <th align="right">URL describing milestones for this product:</th> + <td><input type="text" size="64" maxlength="255" name="milestoneurl" + value="[% product.milestoneurl FILTER html %]"> + </td> + </tr> + <tr> + <th align="right">Default milestone:</th> + <td><input type="text" size="20" maxlength="20" name="defaultmilestone" + value="[% product.defaultmilestone FILTER html %]"> + </td> + </tr> +[% END %] + +<tr> + <th align="right">Closed for [% terms.bug %] entry:</th> + <td><input type="checkbox" name="disallownew" value="1" + [% IF product.disallownew == "1" %] + checked="checked"[% END %]> + </td> +</tr> + +[% IF !Param('usevotes') %] +<tr class="param_disabled"> + <td colspan="2" + style="font-family: arial; font-style: italic; font-size: 0.7em; text-align: center;"> + The 'usevotes' parameter is currently 'off'. These voting + settings will take effect when the parameter is next enabled.</td> +</tr> +[% END %] +<tr [% IF !Param('usevotes') %]class="param_disabled" [% END %]> + <th align="right">Maximum votes per person:</th> + <td><input size="5" maxlength="5" name="votesperuser" + value="[% product.votesperuser FILTER html %]"> + </td> +</tr> +<tr [% IF !Param('usevotes') %]class="param_disabled" [% END %]> + <th align="right"> + Maximum votes a person can put on a single [% terms.bug %]: + </th> + <td><input size="5" maxlength="5" name="maxvotesperbug" + value="[% product.maxvotesperbug FILTER html %]"> + </td> +</tr> +<tr [% IF !Param('usevotes') %]class="param_disabled" [% END %]> + <th align="right"> + Number of votes [% terms.abug %] in this product needs to + automatically get out of the + <a href="page.cgi?id=fields.html#status">[% status_descs.UNCONFIRMED FILTER html %]</a> + state: + </th> + <td><input size="5" maxlength="5" name="votestoconfirm" + value="[% product.votestoconfirm FILTER html %]"> + </td> +</tr> diff --git a/template/en/default/admin/products/edit.html.tmpl b/template/en/default/admin/products/edit.html.tmpl new file mode 100644 index 000000000..4e8cc7b19 --- /dev/null +++ b/template/en/default/admin/products/edit.html.tmpl @@ -0,0 +1,144 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): Jack Nerad <jnerad@bellsouth.net> + # Tiago R. Mello <tiago@async.com.br> + # Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; The product + # + # (classification fields available if Param('useclassification') is enabled:) + # + # classification: Bugzilla::Classification object; The classification + # the product is in + # + # groups_controls: a hash of group controls related to the product. + #%] + +[% title = BLOCK %]Edit Product[% END %] + +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] +%] + +<form method="post" action="editproducts.cgi"> + <table border="0" cellpadding="4" cellspacing="0"> + + [% PROCESS "admin/products/edit-common.html.tmpl" %] + + <tr> + <th align="right" valign="top"> + <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %]"> + Edit components: + </a> + </th> + <td> + [% IF product.components.size -%] + [% FOREACH component = product.components %] + <b>[% component.name FILTER html %]:</b> + [% IF component.description %] + [% component.description FILTER none %] + [% ELSE %] + <font color="red">description missing</font> + [% END %] + <br> + [% END %] + [% ELSE %] + <font color="red">missing</font> + [% END %] + </td> + </tr> + <tr> + <th align="right" valign="top"> + <a href="editversions.cgi?product=[% product.name FILTER url_quote %]">Edit +versions:</a> + </th> + <td> + [%- IF product.versions.size -%] + [% FOREACH v = product.versions %] + [% v.name FILTER html %] + <br> + [% END %] + [% ELSE %] + <font color="red">missing</font> + [% END %] + </td> + </tr> + [% IF Param('usetargetmilestone') %] + <tr> + <th align="right" valign="top"> + <a href="editmilestones.cgi?product=[% product.name FILTER url_quote %]"> + Edit milestones:</a> + </th> + <td> + [%- IF product.milestones.size -%] + [%- FOREACH m = product.milestones -%] + [% m.name FILTER html %] + <br> + [% END %] + [% ELSE %] + <font color="red">missing</font> + [% END %] + </td> + </tr> + [% END %] + <tr> + <th align="right" valign="top"> + <a href="editproducts.cgi?action=editgroupcontrols&product= + [%- product.name FILTER url_quote %]&classification= + [%- classification.name FILTER url_quote %]"> + Edit Group Access Controls: + </a> + </th> + <td> + [% IF group_controls.size %] + [% FOREACH g = group_controls.values %] + <b>[% g.group.name FILTER html %]:</b> + [% IF g.group.isactive %] + [% g.membercontrol FILTER html %]/ + [% g.othercontrol FILTER html %] + [% IF g.entry %], ENTRY[% END %] + [% IF g.canedit %], CANEDIT[% END %] + [% ELSE %] + DISABLED + [% END %] + <br> + [% END %] + [% ELSE %] + no groups + [% END %] + </td> + </tr> + <tr> + <th align="right">[% terms.Bugs %]:</th> + <td><a href="buglist.cgi?product=[% product.name FILTER url_quote %]"> + [% product.bug_count FILTER html %]</a></td> + </tr> + </table> + + <input type="hidden" name="product_old_name" + value="[% product.name FILTER html %]"> + <input type="hidden" name="action" value="update"> + <input type="hidden" name="classification" + value="[% classification.name FILTER html %]"> + <input type="submit" name="submit" value="Update"> +</form> + +[% PROCESS "admin/products/footer.html.tmpl" + no_add_product_link = 1 + no_edit_product_link = 1 %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/footer.html.tmpl b/template/en/default/admin/products/footer.html.tmpl index 531e6c48e..480868abd 100644 --- a/template/en/default/admin/products/footer.html.tmpl +++ b/template/en/default/admin/products/footer.html.tmpl @@ -15,10 +15,11 @@ #%] [%# INTERFACE: - # name: string; the name of the product + # product: Bugzilla::Product Object; the product # - # classification: string; If classifications are enabled, then this is - # the currently selected classification + # classification: Bugzilla::Classification object ; If classifications + # are enabled, then this is the currently + # selected classification # # no_XXX_link: boolean; if defined, then don't show the corresponding # link. Supported parameters are: @@ -30,13 +31,13 @@ [% IF Param('useclassification') && classification %] [% classification_url_part = BLOCK %]&classification= - [%- classification FILTER url_quote %] + [%- classification.name FILTER url_quote %] [% END %] [% classification_url_part_start = BLOCK %]classification= - [%- classification FILTER url_quote %] + [%- classification.name FILTER url_quote %] [% END %] [% classification_text = BLOCK %] - of classification '[% classification FILTER html %]' + of classification '[% classification.name FILTER html %]' [% END %] [% END %] @@ -51,20 +52,22 @@ classification if they are enabled, but I'm just being paranoid %] [% IF Param('useclassification') && classification %] (<a title="Add a product to classification ' - [%- classification FILTER html %]'" + [%- classification.name FILTER html %]'" href="editproducts.cgi?action=add [%- classification_url_part %]">to - classification '[% classification FILTER html %]'</a>) + classification '[% classification.name FILTER html %]' + </a>) [% END %]. [% END %] -[% IF name && !no_edit_product_link %] +[% IF product && !no_edit_product_link %] Edit product <a - title="Edit Product '[% name FILTER html %]' - [% classification_text %]" + title="Edit Product '[% product.name FILTER html %]' + [%- classification_text %]" href="editproducts.cgi?action=edit&product= - [%- name FILTER url_quote %][% classification_url_part %]"> - '[% name FILTER html %]'</a>. + [%- product.name FILTER url_quote %] + [%- classification_url_part %]"> + '[% product.name FILTER html %]'</a>. [% END %] @@ -80,7 +83,7 @@ [% IF Param('useclassification') && classification %] Edit classification <a href="editclassifications.cgi?action=edit [%- classification_url_part %]">' - [%- classification FILTER html %]'</a>. + [%- classification.name FILTER html %]'</a>. [% END %] diff --git a/template/en/default/admin/products/groupcontrol/CVS/Entries b/template/en/default/admin/products/groupcontrol/CVS/Entries index 6f7356c7f..39cd783f7 100644 --- a/template/en/default/admin/products/groupcontrol/CVS/Entries +++ b/template/en/default/admin/products/groupcontrol/CVS/Entries @@ -1,3 +1,4 @@ -/confirm-edit.html.tmpl/1.5.10.1/Mon Jan 9 21:50:00 2006//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.5.4.1/Thu Jan 19 11:30:27 2006//TBUGZILLA-2_20_2 +/confirm-edit.html.tmpl/1.7/Mon Jan 9 21:49:59 2006//TBUGZILLA-2_22 +/edit.html.tmpl/1.6/Mon Oct 17 21:43:42 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.2/Mon Oct 17 21:43:42 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/products/groupcontrol/CVS/Tag b/template/en/default/admin/products/groupcontrol/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/products/groupcontrol/CVS/Tag +++ b/template/en/default/admin/products/groupcontrol/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl b/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl index 0af6f68e2..6d0bfe3bb 100644 --- a/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl +++ b/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl @@ -21,9 +21,11 @@ #%] [% PROCESS global/variables.none.tmpl %] +[% title = BLOCK %] + Confirm Group Control Change for product '[%- product.name FILTER html %]' +[% END %] -[% PROCESS global/header.html.tmpl title="Confirm Group Control Change for product \'$product\'" %] - +[% PROCESS global/header.html.tmpl title = title %] [% FOREACH group = mandatory_groups %] <P> group '[% group.name FILTER html %]' impacts [% group.count %] diff --git a/template/en/default/admin/products/groupcontrol/edit.html.tmpl b/template/en/default/admin/products/groupcontrol/edit.html.tmpl index 188adc646..174d15869 100644 --- a/template/en/default/admin/products/groupcontrol/edit.html.tmpl +++ b/template/en/default/admin/products/groupcontrol/edit.html.tmpl @@ -21,16 +21,18 @@ [% PROCESS global/variables.none.tmpl %] -[% filt_product = product FILTER html %] -[% filt_classification = classification FILTER html %] -[% PROCESS global/header.html.tmpl - title = "Edit Group Controls for $filt_product" +[% title = BLOCK %] + Edit Group Controls for [% product.name FILTER html %] +[% END %] +[% PROCESS global/header.html.tmpl + title = title %] <form method="post" action="editproducts.cgi"> <input type="hidden" name="action" value="updategroupcontrols"> - <input type="hidden" name="product" value="[% filt_product %]"> - <input type="hidden" name="classification" value="[% filt_classification %]"> + <input type="hidden" name="product" value="[% product.name FILTER html %]"> + <input type="hidden" name="classification" + value="[% classification.name FILTER html %]"> <table id="form" cellspacing="0" cellpadding="4" border="1"> <tr bgcolor="#6666ff"> diff --git a/template/en/default/admin/products/groupcontrol/updated.html.tmpl b/template/en/default/admin/products/groupcontrol/updated.html.tmpl new file mode 100644 index 000000000..5719bc6e6 --- /dev/null +++ b/template/en/default/admin/products/groupcontrol/updated.html.tmpl @@ -0,0 +1,53 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): André Batosti <batosti@async.com.br> + # + #%] + +[%# INTERFACE: + # removed_na: array of hashes; groups not applicable for the product. + # added_mandatory: array of hashes; groups mandatory for the product. + # classification: Bugzilla::Classification object; product classification. + # product: Bugzilla::Product object; the product. + #%] + +[% title = BLOCK %] + Update group access controls for [% product.name FILTER html %] +[% END %] + +[% PROCESS global/header.html.tmpl + title = title +%] +<p> +[% IF removed_na.size > 0 %] + [% FOREACH g = removed_na %] + Removing [% terms.bugs %] from group '[% g.name FILTER html %]' which + no longer applies to this product<p> + [% g.bug_count FILTER html %] [%+ terms.bugs %] removed<p> + [% END %] +[% END %] + +[% IF added_mandatory.size > 0 %] + [% FOREACH g = added_mandatory %] + Adding [% terms.bugs %] to group '[% g.name FILTER html %]' which is + mandatory for this product<p> + [% g.bug_count FILTER html %] [%+ terms.bugs %] added<p> + [% END %] +[% END %] + +Group control updates done<p> + +[% PROCESS admin/products/footer.html.tmpl %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/list.html.tmpl b/template/en/default/admin/products/list.html.tmpl index 98676e198..ee76a3b0a 100644 --- a/template/en/default/admin/products/list.html.tmpl +++ b/template/en/default/admin/products/list.html.tmpl @@ -15,30 +15,22 @@ #%] [%# INTERFACE: - # products: array of hashes having the following properties: - # - name: string; The name of the product - # - description: string; The product description (html allowed) - # - status: boolean; Can new bugs be created for the product? - # - votesperuser: number; The number of votes a user is allowed - # in the product - # - maxvotersperbug: number; Maximum votes allowed per bug in this - # product - # - votestoconfirm: number; The number of votes that are needed to - # auto-confirm a bug in this product - # - bug_count: number; The number of bugs in this product + # products: array of Bugzilla::Product objects # - # classification: string; If classifications are enabled, then this is + # classification: Bugzilla::Classification object; If classifications + # are enabled, then this is # the currently selected classification + # showbugcounts: boolean; true if bug counts should be included in the table #%] [% PROCESS global/variables.none.tmpl %] [% IF classification %] [% classification_url_part = BLOCK %]&classification= - [%- classification FILTER url_quote %] + [%- classification.name FILTER url_quote %] [%- END %] [% classification_title = BLOCK %] - in classification '[% classification FILTER html %]' + in classification '[% classification.name FILTER html %]' [% END %] [% END %] @@ -54,7 +46,7 @@ editproducts.cgi?action=del&product=%%name%% [%- classification_url_part %] [% END %] -[% bug_count_contentlink = BLOCK %]buglist.cgi?product=%%name%%& +[% bug_count_contentlink = BLOCK %]buglist.cgi?product=%%name%% [%- classification_url_part %][% END %] @@ -70,9 +62,8 @@ allow_html_content => 1 }, { - name => "status" + name => "disallow_new" heading => "Open For New $terms.Bugs" - yesno_field => 1 }, { name => "votesperuser" @@ -88,23 +79,42 @@ name => "votestoconfirm" heading => "Votes To Confirm" align => 'right' - }, - { + } ] +%] + +[% IF showbugcounts %] + + [% columns.push({ name => "bug_count" heading => "$terms.Bug Count" align => 'right' contentlink => bug_count_contentlink - }, - ] -%] + }) + %] + +[% END %] [% columns.push({ - heading => "Action" - content => "Delete" - contentlink => delete_contentlink - }) + heading => "Action" + content => "Delete" + contentlink => delete_contentlink + }) %] +[% overrides.disallow_new = [ { + match_value => "1" + match_field => 'disallow_new' + override_content => 1 + content => "No" + }, + { + match_value => 0 + match_field => 'disallow_new' + override_content => 1 + content => "Yes" + }] +%] + [% PROCESS admin/table.html.tmpl columns = columns data = products @@ -112,6 +122,13 @@ <p> +[% IF !showbugcounts %] + + <p><a href="editproducts.cgi?showbugcounts=1[% classification_url_part %]"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> + +[% END %] + [% PROCESS admin/products/footer.html.tmpl no_edit_other_products_link = 1 %] diff --git a/template/en/default/admin/products/updated.html.tmpl b/template/en/default/admin/products/updated.html.tmpl new file mode 100644 index 000000000..993a27ed9 --- /dev/null +++ b/template/en/default/admin/products/updated.html.tmpl @@ -0,0 +1,202 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + #%] + +[%# INTERFACE: + # + # old_product : Bugzilla::Product Object; old product. + # product : Bugzilla::Product Object; new product. + # + # classification: Bugzilla::Classification Object; The product classification (may be empty or missing) + # + # checkvotes: boolean; is true if vote related fields have changed. If so, + # then the following parameters will be specified: + # + # toomanyvotes: list of hashes, each one with an 'id' and a 'name' hash key + # detailing the bug id and the username of users who had too + # many votes for a bug + # + # toomanytotalvotes: list of hashes, each one with an 'id' and a 'name' hash key + # detailing the bug id and the username of users who had + # too many total votes + # + # confirmedbugs: list of bug ids, which were confirmed by votes + # + # changer: string; user id of the user making the changes, used for mailing + # bug changes if necessary + # + #%] + +[% IF classification %] + [% classification_url_part = BLOCK %]&classification= + [%- classification.name FILTER url_quote %] + [% END %] + [% classification_text = BLOCK %] + of classification '[% classification.name FILTER html %]' + [% END %] +[% END %] + +[% title = BLOCK %]Updating Product '[% product.name FILTER html %]' + [% classification_text FILTER none %][% END %] +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] +%] +[% updated = 0 %] + +[% IF product.name != old_product.name %] + <p> + Updated product name from '[% old_product.name FILTER html %]' to + <a href="editproducts.cgi?action=edit&product= + [%- product.name FILTER url_quote %] + [%- classification_url_part FILTER none %]">[% product.name FILTER html %]</a>. + [% updated = 1 %] +[% END %] + + +[% IF product.description != old_product.description %] + <p> + Updated description to:</p> + </p> + <p style="margin: 1em 3em 1em 3em">[% product.description FILTER html %]</p> + [% updated = 1 %] +[% END %] + +[% IF product.disallow_new != old_product.disallow_new %] + <p> + Product is now + [% IF product.disallow_new %] + closed to + [% ELSE %] + open for + [% END %] + new [% terms.bugs %]. + [% updated = 1 %] +[% END %] + +[% IF product.milestone_url != old_product.milestone_url %] + <p> + Updated milestone URL + [% IF old_product.milestone_url != '' %] + from<br> <a href="[%- old_product.milestone_url FILTER html %]">' + [%- old_product.milestone_url FILTER html %]'</a> + [% END %] + to + [% IF product.milestone_url != '' %] + <br><a href="[%- product.milestone_url FILTER html %]">' + [%- product.milestone_url FILTER html %]'</a>. + [% ELSE %] + be empty. + [% END %] + </p> + [% updated = 1 %] +[% END %] + +[% IF product.default_milestone != old_product.default_milestone %] + <p> + Updated default milestone from '[% old_product.default_milestone FILTER html %]' to + '[% product.default_milestone FILTER html %]'. + </p> + [% updated = 1 %] +[% END %] + +[% IF product.votes_per_user != old_product.votes_per_user %] + <p> + Updated votes per user from + [%+ old_product.votes_per_user FILTER html %] to + [%+ product.votes_per_user FILTER html %]. + [% updated = 1 %] +[% END %] + +[% IF product.max_votes_per_bug != old_product.max_votes_per_bug %] + <p> + Updated maximum votes per [% terms.bug %] from + [%+ old_product.max_votes_per_bug FILTER html %] to + [%+ product.max_votes_per_bug FILTER html %]. + [% updated = 1 %] +[% END %] + +[% IF product.votes_to_confirm != old_product.votes_to_confirm %] + <p> + Updated number of votes needed to confirm a [% terms.bug %] from + [%+ old_product.votes_to_confirm FILTER html %] to + [%+ product.votes_to_confirm FILTER html %]. + [% updated = 1 %] +[% END %] + +[% UNLESS updated %] + <p>Nothing changed for product '[% product.name FILTER html %]'. +[% END %] + +[%# Note that this display of changed votes and/or confirmed bugs is + not very scalable. We could have a _lot_, and we just list them all. + One day we should limit this perhaps, or have a more scalable display %] + + +[% IF checkvotes %] + <hr> + + <p>Checking existing votes in this product for anybody who now + has too many votes for [% terms.abug %]...<br> + [% IF toomanyvotes.size > 0 %] + [% FOREACH detail = toomanyvotes %] + →removed votes for [% terms.bug %] <a href="show_bug.cgi?id= + [%- detail.id FILTER url_quote %]"> + [%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br> + [% END %] + [% ELSE %] + →there were none. + [% END %] + + <p>Checking existing votes in this product for anybody + who now has too many total votes...<br> + [% IF toomanytotalvotes.size > 0 %] + [% FOREACH detail = toomanytotalvotes %] + →removed votes for [% terms.bug %] <a href="show_bug.cgi?id= + [%- detail.id FILTER url_quote %]"> + [%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br> + [% END %] + [% ELSE %] + →there were none. + [% END %] + + <p>Checking unconfirmed [% terms.bugs %] in this product for any which now have + sufficient votes...<br> + [% IF confirmedbugs.size > 0 %] + [% FOREACH id = confirmedbugs %] + + [%# This is INCLUDED instead of PROCESSED to avoid variables getting + overwritten, which happens otherwise %] + [% INCLUDE bug/process/results.html.tmpl + type = 'votes' + mailrecipients = { 'changer' => changer } + header_done = 1 + id = id + %] + [% END %] + [% ELSE %] + →there were none. + [% END %] + +[% END %] + +[% PROCESS admin/products/footer.html.tmpl %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/settings/CVS/Entries b/template/en/default/admin/settings/CVS/Entries index c523898b1..2a8caa493 100644 --- a/template/en/default/admin/settings/CVS/Entries +++ b/template/en/default/admin/settings/CVS/Entries @@ -1,3 +1,3 @@ -/edit.html.tmpl/1.3/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_20_2 -/updated.html.tmpl/1.2/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_20_2 +/edit.html.tmpl/1.3/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.2/Mon Jun 20 21:14:43 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/settings/CVS/Tag b/template/en/default/admin/settings/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/settings/CVS/Tag +++ b/template/en/default/admin/settings/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/sudo.html.tmpl b/template/en/default/admin/sudo.html.tmpl new file mode 100644 index 000000000..4e781796c --- /dev/null +++ b/template/en/default/admin/sudo.html.tmpl @@ -0,0 +1,102 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 2005 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): A. Karl Kornel <karl@kornel.name> + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% PROCESS global/header.html.tmpl + title = "Begin sudo session" + style_urls = ['skins/standard/admin.css'] + %] + +[% DEFAULT target_login = "" %] + +<p> + The <b>sudo</b> feature of [% terms.Bugzilla %] allows you to impersonate a + user for a short time While an sudo session is in progress, every action you + perform will be taking place as if you had logged in as the user whom will be + impersonating. +</p> + +<p class="areyoureallyreallysure"> + This is a very powerful feature; you should be very careful while using it. + Your actions may be logged more carefully than normal. +</p> + +<form action="relogin.cgi" method="POST"> + <p> + To begin, + [% IF Param('usemenuforusers') %] + select + [% ELSE %] + enter the login of + [% END %] + the <u>u</u>ser to impersonate: + [% INCLUDE global/userselect.html.tmpl + name => "target_login" + value => "$target_login_default" + accesskey => "u" + size => 30 + multiple => 5 + %] + </p> + + [% IF !Param('usemenuforusers') %] + <p> + The username must be entered exactly. No matching will be performed. + </p> + [% END %] + + <p> + Next, please take a moment to explain why you are doing this:<br> + <input type="text" name="reason" size="80" maxlength="200" value=" + [%- reason_default FILTER html %]"> + </p> + + <p> + The message you enter here will be sent to the impersonated user by email. + You may leave this empty if you wish, but they will still know that you + are impersonating them. + </p> + + [% IF user.get_flag("can_logout") %] + <p> + Finally, enter your [% terms.Bugzilla %] password: + <input type="hidden" name="Bugzilla_login" value=" + [%- user.login FILTER html %]"> + <input type="password" name="Bugzilla_password" maxlength="20" size="20"> + <br> + This is done for two reasons. First of all, it is done to reduce + the chances of someone doing large amounts of damage using your + already-logged-in account. Second, it is there to force you to take the + time to consider if you really need to use this feature. + </p> + [% END %] + + <p> + Click the button to begin the session: + <input type="submit" value="Begin Session"> + <input type="hidden" name="action" value="begin-sudo"> + <input type="hidden" name="token" value="[% token FILTER html %]"> + </p> + +</form> + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/table.html.tmpl b/template/en/default/admin/table.html.tmpl index ff554429a..29108fd6c 100644 --- a/template/en/default/admin/table.html.tmpl +++ b/template/en/default/admin/table.html.tmpl @@ -50,6 +50,21 @@ # Each hash contains data for a single row of data. The # keys are column names from columns subhashes name field. # + # overrides: + # Provides a method for overriding individual table cells. This is + # a hash, whose key is the column name, so the column must be + # named for one of it's cells to be overwritten. The hash value is + # an array. Each item in this array is a hash specifying + # row-matching criteria, and any overridden values. The + # row-matching criteria consist of keys: + # match_field: The name of the row value we want to match + # match_value: The value to match against + # Each column value mentioned in the 'columns' documentation above + # can be overwritten (apart from name and heading). To override a + # table-cell value 'xxx', specify a new 'xxx' value, and specify a + # 'override_xxx' value as well. See + # admin/milestones/list.html.tmpl for example + # #%] [% PROCESS "global/field-descs.none.tmpl" %] @@ -70,12 +85,47 @@ [%################### TABLE CONTENT ######################%] [% FOREACH row = data %] + <tr> [% FOREACH c = columns %] - <td [% IF c.align %] align="[% c.align FILTER html %]" [% END %]> - - [% IF c.contentlink %] - [% link_uri = c.contentlink %] + + [%# Copy to local variables, as we may update these %] + [% contentlink = c.contentlink + content = c.content + content_use_field = c.content_use_field + align = c.align + allow_html_content = c.allow_html_content + yesno_field = c.yesno_field + %] + + [%# Are there any specific overrides for this column? %] + [% FOREACH override = overrides.${c.name} %] + + [%# Is the override for this row? %] + [% IF override.match_value == row.${override.match_field} %] + + [% SET contentlink = override.contentlink + IF override.override_contentlink %] + [% SET content = override.content + IF override.override_content %] + [% SET content_use_field = override.content_use_field + IF override.override_content_use_field %] + [% SET align = override.align + IF override.override_align %] + [% SET allow_html_content = override.allow_html_content + IF override.override_allow_html_content %] + [% SET yesno_field = override.yesno_field + IF override.override_yesno_field %] + + [% LAST %] + + [% END %] + [% END %] + + <td [% IF align %] align="[% align FILTER html %]" [% END %]> + + [% IF contentlink %] + [% link_uri = contentlink %] [% WHILE link_uri.search('%%(.+?)%%')%] [% FOREACH m = link_uri.match('%%(.+?)%%') %] [% IF row.$m %] @@ -89,20 +139,20 @@ <a href="[% link_uri %]"> [% END %] - [% IF c.content_use_field %] + [% IF content_use_field %] [% colname = row.${c.name} %] [% field_descs.${colname} FILTER html %] - [% ELSIF c.content %] - [% c.content %] + [% ELSIF content %] + [% content FILTER none %] [% ELSE %] - [% IF c.yesno_field %] + [% IF yesno_field %] [% IF row.${c.name} %] Yes [% ELSE %] No [% END %] [% ELSE %] - [% IF c.allow_html_content %] + [% IF allow_html_content %] [% row.${c.name} FILTER none %] [% ELSE %] [% row.${c.name} FILTER html %] @@ -110,7 +160,7 @@ [% END %] [% END %] - [% IF c.contentlink %] + [% IF contentlink %] </a> [% END %] diff --git a/template/en/default/admin/users/CVS/Entries b/template/en/default/admin/users/CVS/Entries index af15e9490..67429febb 100644 --- a/template/en/default/admin/users/CVS/Entries +++ b/template/en/default/admin/users/CVS/Entries @@ -1,8 +1,8 @@ -/confirm-delete.html.tmpl/1.4.2.3/Tue Dec 13 20:20:43 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20_2 -/listselectvars.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20_2 -/search.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_20_2 -/userdata.html.tmpl/1.1.4.1/Sun Dec 18 16:39:14 2005//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.7/Tue Dec 13 20:20:13 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.2/Sun Sep 4 18:45:11 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_22 +/listselectvars.html.tmpl/1.1/Mon Feb 28 20:41:45 2005//TBUGZILLA-2_22 +/search.html.tmpl/1.2/Sun Sep 4 18:45:11 2005//TBUGZILLA-2_22 +/userdata.html.tmpl/1.5/Sun Dec 18 07:09:38 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/users/CVS/Tag b/template/en/default/admin/users/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/users/CVS/Tag +++ b/template/en/default/admin/users/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/users/edit.html.tmpl b/template/en/default/admin/users/edit.html.tmpl index 53ea17f21..ce593ee65 100644 --- a/template/en/default/admin/users/edit.html.tmpl +++ b/template/en/default/admin/users/edit.html.tmpl @@ -140,7 +140,7 @@ [% IF listselectionvalues %], [% END %] [% END %] - [% IF listselectionvalues %] + [% IF listselectionvalues.matchtype != 'exact' %] go <a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back to the user list</a>, diff --git a/template/en/default/admin/users/search.html.tmpl b/template/en/default/admin/users/search.html.tmpl index 748670a68..4cb51ca94 100644 --- a/template/en/default/admin/users/search.html.tmpl +++ b/template/en/default/admin/users/search.html.tmpl @@ -41,6 +41,7 @@ <option value="substr" selected="selected">case-insensitive substring</option> <option value="regexp">case-insensitive regexp</option> <option value="notregexp">not (case-insensitive regexp)</option> + <option value="exact">exact (find this user)</option> </select> <input type="submit" value="Search" /></p> diff --git a/template/en/default/admin/users/userdata.html.tmpl b/template/en/default/admin/users/userdata.html.tmpl index a9ee9f4e3..672e180bf 100644 --- a/template/en/default/admin/users/userdata.html.tmpl +++ b/template/en/default/admin/users/userdata.html.tmpl @@ -30,6 +30,11 @@ [% IF editform %] <input type="hidden" name="loginold" value="[% otheruser.login FILTER html %]" /> + [% IF !otheruser.groups.bz_sudo_protect %] + <br /> + <a href="relogin.cgi?action=prepare-sudo&target_login= + [%- otheruser.login FILTER html %]">Impersonate this user</a> + [% END %] [% END %] [% ELSE %] [% otheruser.login FILTER html %] diff --git a/template/en/default/admin/versions/CVS/Entries b/template/en/default/admin/versions/CVS/Entries index e6648a763..a6e2546e7 100644 --- a/template/en/default/admin/versions/CVS/Entries +++ b/template/en/default/admin/versions/CVS/Entries @@ -1,10 +1,10 @@ -/confirm-delete.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 -/created.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 -/deleted.html.tmpl/1.2/Wed Apr 6 00:19:55 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 -/select-product.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 -/updated.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_20_2 +/confirm-delete.html.tmpl/1.3/Sun May 22 14:48:16 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_22 +/created.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_22 +/deleted.html.tmpl/1.2/Wed Apr 6 00:19:55 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.2/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_22 +/select-product.html.tmpl/1.2/Tue Sep 27 22:08:14 2005//TBUGZILLA-2_22 +/updated.html.tmpl/1.1/Sun Jan 16 13:56:40 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/admin/versions/CVS/Tag b/template/en/default/admin/versions/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/admin/versions/CVS/Tag +++ b/template/en/default/admin/versions/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/admin/versions/list.html.tmpl b/template/en/default/admin/versions/list.html.tmpl index ec47c18d7..b2ed2c343 100644 --- a/template/en/default/admin/versions/list.html.tmpl +++ b/template/en/default/admin/versions/list.html.tmpl @@ -17,18 +17,15 @@ # Rights Reserved. # # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> #%] [%# INTERFACE: - # versions: array of hashes having the following properties: - # - name: string; The name of the version. - # + # versions: array of version objects + # showbugcounts: if defined, then bug counts should be included in the table # product: string; the name of the product we are editing versions for #%] -[% USE Bugzilla %] -[% cgi = Bugzilla.cgi %] - [% PROCESS global/variables.none.tmpl %] [% title = BLOCK %]Select version of product @@ -41,6 +38,8 @@ [%- product FILTER url_quote %]&version=%%name%%[% END %] [% delete_contentlink = BLOCK %]editversions.cgi?action=del&product= [%- product FILTER url_quote %]&version=%%name%%[% END %] +[% bug_count_contentlink = BLOCK %]buglist.cgi?version=%%name%%&product= + [%- product FILTER url_quote %][% END %] [% columns = [ @@ -48,13 +47,27 @@ name => "name" heading => "Edit version..." contentlink => edit_contentlink - }, - { + } + ] +%] + +[% IF showbugcounts %] + + [% columns.push({ + name => "bug_count" + heading => "$terms.Bugs" + align => "right" + contentlink => bug_count_contentlink + }) + %] + +[% END %] + +[% columns.push({ heading => "Action" content => "Delete" contentlink => delete_contentlink - } - ] + }) %] [% PROCESS admin/table.html.tmpl @@ -64,6 +77,13 @@ <p> +[% IF ! showbugcounts %] + + <p><a href="editversions.cgi?product=[% product FILTER url_quote %]&showbugcounts=1"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> + +[% END %] + [% PROCESS admin/versions/footer.html.tmpl no_edit_other_versions_link = 1 %] diff --git a/template/en/default/admin/versions/select-product.html.tmpl b/template/en/default/admin/versions/select-product.html.tmpl index 621649cd2..cba4bab4e 100644 --- a/template/en/default/admin/versions/select-product.html.tmpl +++ b/template/en/default/admin/versions/select-product.html.tmpl @@ -16,28 +16,22 @@ # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # - # Contributor(s): Gavin Shelley (bugzilla@chimpychompy.org) + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> # #%] [%# INTERFACE: - # products: array of hashes having the following properties: - # - name: string; The name of the product. - # - description: string; The description of the product. + # products: array of product objects + # showbugcounts: if defined, then bug counts should be included in the table #%] -[% USE Bugzilla %] -[% cgi = Bugzilla.cgi %] - [% PROCESS global/variables.none.tmpl %] [% PROCESS global/header.html.tmpl title = "Edit versions for which product?" %] -[% bug_count_contentlink = BLOCK %]buglist.cgi?version=%%name%%&product= - [%- product FILTER url_quote %][% END %] - [% columns = [ { name => "name" @@ -52,11 +46,28 @@ ] %] +[% IF showbugcounts %] + + [% columns.push({ + name => 'bug_count' + heading => "$terms.Bugs" + align => "right" + contentlink => "buglist.cgi?product=%%name%%" + }) + %] + +[% END %] + [% PROCESS admin/table.html.tmpl columns = columns data = products %] +[% IF !showbugcounts %] + <p><a href="editversions.cgi?showbugcounts=1"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> +[% END %] + <p> [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/attachment/CVS/Entries b/template/en/default/attachment/CVS/Entries index c2d94ac01..8b0998e26 100644 --- a/template/en/default/attachment/CVS/Entries +++ b/template/en/default/attachment/CVS/Entries @@ -1,12 +1,12 @@ -/choose.html.tmpl/1.3/Mon Aug 23 15:34:30 2004//TBUGZILLA-2_20_2 -/content-types.html.tmpl/1.5/Sun Feb 27 10:07:52 2005//TBUGZILLA-2_20_2 -/create.html.tmpl/1.20.4.3/Wed Mar 8 22:21:11 2006//TBUGZILLA-2_20_2 -/created.html.tmpl/1.10/Sun Jan 18 18:39:16 2004//TBUGZILLA-2_20_2 -/diff-file.html.tmpl/1.5/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_20_2 -/diff-footer.html.tmpl/1.2/Sun Jan 18 18:39:16 2004//TBUGZILLA-2_20_2 -/diff-header.html.tmpl/1.10.2.2/Mon Jan 9 21:50:00 2006//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.27.4.1/Thu Oct 20 02:17:27 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.21/Thu Jun 16 05:40:32 2005//TBUGZILLA-2_20_2 -/show-multiple.html.tmpl/1.15/Sun May 30 15:52:13 2004//TBUGZILLA-2_20_2 -/updated.html.tmpl/1.11/Mon Feb 2 21:57:29 2004//TBUGZILLA-2_20_2 +/choose.html.tmpl/1.3/Mon Aug 23 15:34:30 2004//TBUGZILLA-2_22 +/content-types.html.tmpl/1.5/Sun Feb 27 10:07:52 2005//TBUGZILLA-2_22 +/create.html.tmpl/1.22.2.3/Wed Mar 8 22:18:42 2006//TBUGZILLA-2_22 +/created.html.tmpl/1.11.2.1/Tue Feb 21 16:02:25 2006//TBUGZILLA-2_22 +/diff-file.html.tmpl/1.5/Fri Feb 25 15:27:24 2005//TBUGZILLA-2_22 +/diff-footer.html.tmpl/1.2/Sun Jan 18 18:39:16 2004//TBUGZILLA-2_22 +/diff-header.html.tmpl/1.12.2.1/Tue Feb 21 16:02:25 2006//TBUGZILLA-2_22 +/edit.html.tmpl/1.30.2.1/Tue Feb 21 16:02:25 2006//TBUGZILLA-2_22 +/list.html.tmpl/1.25.2.1/Tue Feb 21 16:02:25 2006//TBUGZILLA-2_22 +/show-multiple.html.tmpl/1.15.12.1/Tue Feb 21 16:02:25 2006//TBUGZILLA-2_22 +/updated.html.tmpl/1.11/Mon Feb 2 21:57:29 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/attachment/CVS/Tag b/template/en/default/attachment/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/attachment/CVS/Tag +++ b/template/en/default/attachment/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/attachment/create.html.tmpl b/template/en/default/attachment/create.html.tmpl index 4a079ecaa..aceb3fc97 100644 --- a/template/en/default/attachment/create.html.tmpl +++ b/template/en/default/attachment/create.html.tmpl @@ -17,6 +17,8 @@ # Rights Reserved. # # Contributor(s): Myk Melez <myk@mozilla.org> + # Joel Peshkin <bugreport@peshkin.net> + # Erik Stambaugh <erik@dasbistro.com> #%] [% PROCESS global/variables.none.tmpl %] @@ -53,6 +55,58 @@ onload="setContentTypeDisabledState();" %] +[% IF Param("allow_attach_url") %] + <script type="text/javascript"> + + function URLFieldHandler() { + var field_attachurl = document.getElementById("attachurl"); + var greyfields = new Array("data", "ispatch", "autodetect", + "list", "manual", "bigfile", + "contenttypeselection", + "contenttypeentry"); + var i; + if (field_attachurl.value.match(/^\s*$/)) { + for (i = 0; i < greyfields.length; i++) { + thisfield = document.getElementById(greyfields[i]); + if (thisfield) { + thisfield.removeAttribute("disabled"); + } + } + } else { + for (i = 0; i < greyfields.length; i++) { + thisfield = document.getElementById(greyfields[i]); + if (thisfield) { + thisfield.setAttribute("disabled", "disabled"); + } + } + } + } + + function DataFieldHandler() { + var field_data = document.getElementById("data"); + var greyfields = new Array("attachurl"); + if (field_data.value.match(/^\s*$/)) { + var i; + for (i = 0; i < greyfields.length; i++) { + thisfield = document.getElementById(greyfields[i]); + if (thisfield) { + thisfield.removeAttribute("disabled"); + } + } + } else { + for (i = 0; i < greyfields.length; i++) { + thisfield = document.getElementById(greyfields[i]); + if (thisfield) { + thisfield.setAttribute("disabled", "disabled"); + } + } + } + } + + </script> +[% END %] + + <form name="entryform" method="post" action="attachment.cgi" enctype="multipart/form-data"> <input type="hidden" name="bugid" value="[% bugid %]"> <input type="hidden" name="action" value="insert"> @@ -62,7 +116,11 @@ <th><label for="data">File:</label></th> <td> <em>Enter the path to the file on your computer.</em><br> - <input type="file" id="data" name="data" size="50"> + <input type="file" id="data" name="data" size="50" + [% IF Param("allow_attach_url") %] + onchange="DataFieldHandler()" + [% END %] + > </td> </tr> [% IF Param("maxlocalattachment") %] @@ -77,6 +135,17 @@ </td> </tr> [% END %] + [% IF Param("allow_attach_url") %] + <tr> + <th><label for="attachurl">AttachURL:</label></th> + <td> + <em>URL to be attached instead.</em><br> + <input type="text" id="attachurl" name="attachurl" size="60" + maxlength="2000" + onkeyup="URLFieldHandler()" onblur="URLFieldHandler()"> + </td> + </tr> + [% END %] <tr> <th><label for="description">Description:</label></th> <td> @@ -99,19 +168,20 @@ <em>Otherwise, choose a method for determining the content type.</em><br> <input type="radio" id="autodetect" - name="contenttypemethod" value="autodetect"> + name="contenttypemethod" value="autodetect" checked="checked"> <label for="autodetect">auto-detect</label><br> <input type="radio" id="list" name="contenttypemethod" value="list"> <label for="list">select from list:</label> - <select name="contenttypeselection" + <select name="contenttypeselection" id="contenttypeselection" onchange="this.form.contenttypemethod[1].checked = true;"> [% PROCESS "attachment/content-types.html.tmpl" %] </select><br> <input type="radio" id="manual" name="contenttypemethod" value="manual"> <label for="manual">enter manually:</label> - <input type="text" name="contenttypeentry" size="30" maxlength="200" + <input type="text" name="contenttypeentry" id="contenttypeentry" + size="30" maxlength="200" onchange="if (this.value) this.form.contenttypemethod[2].checked = true;"> </td> </tr> diff --git a/template/en/default/attachment/created.html.tmpl b/template/en/default/attachment/created.html.tmpl index 9bfb36caf..3114b2963 100644 --- a/template/en/default/attachment/created.html.tmpl +++ b/template/en/default/attachment/created.html.tmpl @@ -44,13 +44,18 @@ </h2> [% PROCESS "bug/process/bugmail.html.tmpl" mailing_bugid = bugid %] - + [% IF convertedbmp %] + <p> + <b>Note:</b> [% terms.Bugzilla %] automatically converted your BMP image file to a + compressed PNG format. + </p> + [% END %] [% IF contenttypemethod == 'autodetect' %] <p> <b>Note:</b> [% terms.Bugzilla %] automatically detected the content type <em>[% contenttype %]</em> for this attachment. If this is incorrect, correct the value by - <a href="attachment.cgi?id=[% attachid %]&action=edit">editing the attachment</a>. + editing the attachment's <a href="attachment.cgi?id=[% attachid %]&action=edit">details</a>. </p> [% END %] </td> diff --git a/template/en/default/attachment/diff-header.html.tmpl b/template/en/default/attachment/diff-header.html.tmpl index f42d286ef..45bf202a9 100644 --- a/template/en/default/attachment/diff-header.html.tmpl +++ b/template/en/default/attachment/diff-header.html.tmpl @@ -242,7 +242,7 @@ tbody.file pre:empty { [%# HEADER %] [% IF headers %] <a href="[% PROCESS viewurl id=attachid %]">View</a> - | <a href="[% PROCESS editurl id=attachid %]">Edit</a> + | <a href="[% PROCESS editurl id=attachid %]">Details</a> | <a href="[% PROCESS diffurl id=attachid %]&context=[% context FILTER url_quote %]&collapsed=[% collapsed FILTER url_quote %]&headers=[% headers FILTER url_quote %]&format=raw">Raw Unified</a> [% END %] [% IF other_patches.size > 0 %] diff --git a/template/en/default/attachment/edit.html.tmpl b/template/en/default/attachment/edit.html.tmpl index 3bc802a3a..eefe141f8 100644 --- a/template/en/default/attachment/edit.html.tmpl +++ b/template/en/default/attachment/edit.html.tmpl @@ -17,14 +17,19 @@ # Rights Reserved. # # Contributor(s): Myk Melez <myk@mozilla.org> + # Frédéric Buclin <LpSolit@gmail.com> #%] [% PROCESS global/variables.none.tmpl %] [%# Define strings that will serve as the title and header of this page %] -[% title = BLOCK %]Edit Attachment #[% attachid %] for [% terms.Bug %] #[% bugid %][% END %] -[% h1 = BLOCK %]Edit Attachment #[% attachid %] for - [%+ GetBugLink(bugid, "$terms.Bug $bugid") %][% END %] +[% title = BLOCK %] + Attachment [% attachment.id %] Details for [% terms.Bug %] [%+ attachment.bug_id %] +[% END %] +[% h1 = BLOCK %] + Attachment [% attachment.id %] Details for + [%+ GetBugLink(attachment.bug_id, "$terms.Bug ${attachment.bug_id}") %] +[% END %] [% h2 = BLOCK %][% bugsummary FILTER html %][% END %] [% PROCESS global/header.html.tmpl @@ -99,7 +104,7 @@ if (!has_viewed_as_diff) { var viewDiffFrame = document.getElementById('viewDiffFrame'); viewDiffFrame.src = - 'attachment.cgi?id=[% attachid %]&action=diff&headers=0'; + 'attachment.cgi?id=[% attachment.id %]&action=diff&headers=0'; has_viewed_as_diff = 1; } } @@ -197,7 +202,7 @@ </script> <form method="post" action="attachment.cgi" onsubmit="normalizeComments();"> - <input type="hidden" name="id" value="[% attachid %]"> + <input type="hidden" name="id" value="[% attachment.id %]"> <input type="hidden" name="action" value="update"> <input type="hidden" name="contenttypemethod" value="manual"> @@ -207,28 +212,40 @@ <td width="25%"> <small> <b>Description:</b><br> - <textarea rows="3" cols="25" name="description" wrap="soft">[% description FILTER html %]</textarea><br> - - <b>Filename:</b><br> - <input type="text" size="20" name="filename" value="[% filename FILTER html %]"><br> - <b>Size: </b>[% datasize FILTER unitconvert %]<br> - - <b>MIME Type:</b><br> - <input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br> + <textarea rows="3" cols="25" name="description" wrap="soft"> + [%- attachment.description FILTER html %]</textarea><br> + + [% IF attachment.isurl %] + <input type="hidden" name="filename" + value="[% attachment.filename FILTER html %]"><br> + <input type="hidden" name="contenttypeentry" + value="[% attachment.contenttype FILTER html %]"><br> + [% ELSE %] + <b>Filename:</b><br> + <input type="text" size="20" name="filename" + value="[% attachment.filename FILTER html %]"><br> + <b>Size: </b>[% attachment.datasize FILTER unitconvert %]<br> + + <b>MIME Type:</b><br> + <input type="text" size="20" name="contenttypeentry" + value="[% attachment.contenttype FILTER html %]"><br> <input type="checkbox" id="ispatch" name="ispatch" value="1" - [% 'checked="checked"' IF ispatch %]> + [% 'checked="checked"' IF attachment.ispatch %]> <label for="ispatch">patch</label> + [% END %] <input type="checkbox" id="isobsolete" name="isobsolete" value="1" - [% 'checked="checked"' IF isobsolete %]> + [% 'checked="checked"' IF attachment.isobsolete %]> <label for="isobsolete">obsolete</label><br> [% IF (Param("insidergroup") && UserInGroup(Param("insidergroup"))) %] - <input type="checkbox" name="isprivate" value="1"[% " checked" IF isprivate %]> private<br><br> + <input type="checkbox" name="isprivate" value="1" + [% " checked" IF attachment.isprivate %]> private<br><br> [% ELSE %]<br> [% END %] [% IF flag_types.size > 0 %] - [% PROCESS "flag/list.html.tmpl" bug_id=bugid attach_id=attachid %]<br> + [% PROCESS "flag/list.html.tmpl" bug_id = attachment.bug_id + attach_id = attachment.id %]<br> [% END %] <div id="smallCommentFrame"> @@ -237,19 +254,21 @@ </div> <input type="submit" value="Submit"><br><br> - <strong>Actions:</strong> <a href="attachment.cgi?id=[% attachid %]">View</a> - [% IF ispatch && patchviewerinstalled %] - | <a href="attachment.cgi?id=[% attachid %]&action=diff">Diff</a> + <strong>Actions:</strong> + <a href="attachment.cgi?id=[% attachment.id %]">View</a> + [% IF attachment.ispatch && patchviewerinstalled %] + | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a> [% END %] </small> </td> [% IF isviewable %] <td width="75%"> - <textarea id="editFrame" name="comment" style="height: 400px; width: 100%; display: none;" cols="80" wrap="soft"></textarea> - <iframe id="viewFrame" src="attachment.cgi?id=[% attachid %]" style="height: 400px; width: 100%;"> - <b>You cannot view the attachment while editing it because your browser does not support IFRAMEs. - <a href="attachment.cgi?id=[% attachid %]">View the attachment on a separate page</a>.</b> + <textarea id="editFrame" name="comment" wrap="soft" cols="80" + style="height: 400px; width: 100%; display: none;"></textarea> + <iframe id="viewFrame" src="attachment.cgi?id=[% attachment.id %]" style="height: 400px; width: 100%;"> + <b>You cannot view the attachment while viewing its details because your browser does not support IFRAMEs. + <a href="attachment.cgi?id=[% attachment.id %]">View the attachment on a separate page</a>.</b> </iframe> <script type="text/javascript"> <!-- @@ -268,15 +287,27 @@ //--> </script> </td> + [% ELSIF attachment.isurl %] + <td width="75%"> + <a href="[% attachment.data FILTER html %]"> + [% IF attachment.datasize < 120 %] + [% attachment.data FILTER html %] + [% ELSE %] + [% attachment.data FILTER truncate(80) FILTER html %] + ... + [% attachment.data.match(".*(.{20})$").0 FILTER html %] + [% END %] + </a> + </td> [% ELSE %] <td id="noview" width="50%"> <p><b> Attachment is not viewable in your browser because its MIME type - ([% contenttype FILTER html %]) is not one that your browser is + ([% attachment.contenttype FILTER html %]) is not one that your browser is able to display. </b></p> <p><b> - <a href="attachment.cgi?id=[% attachid %]">Download the attachment</a>. + <a href="attachment.cgi?id=[% attachment.id %]">Download the attachment</a>. </b></p> </td> [% END %] @@ -287,10 +318,10 @@ Attachments on this [% terms.Bug %]: [% FOREACH a = attachments %] - [% IF a == attachid %] - #[% a %] + [% IF a == attachment.id %] + [% a %] [% ELSE %] - <a href="attachment.cgi?id=[% a %]&action=edit">#[% a %]</a> + <a href="attachment.cgi?id=[% a %]&action=edit">[% a %]</a> [% END %] [% " |" UNLESS loop.last() %] [% END %] diff --git a/template/en/default/attachment/list.html.tmpl b/template/en/default/attachment/list.html.tmpl index 8f6bbadb1..8734487a6 100644 --- a/template/en/default/attachment/list.html.tmpl +++ b/template/en/default/attachment/list.html.tmpl @@ -24,6 +24,7 @@ <tr> <th bgcolor="#cccccc" align="left">Attachment</th> <th bgcolor="#cccccc" align="left">Type</th> + <th bgcolor="#cccccc" align="left">Creator</th> <th bgcolor="#cccccc" align="left">Created</th> <th bgcolor="#cccccc" align="left">Size</th> [% IF show_attachment_flags %] @@ -36,18 +37,25 @@ [% IF !attachment.isprivate || canseeprivate %] <tr [% "class=\"bz_private\"" IF attachment.isprivate %]> <td valign="top"> - <a href="attachment.cgi?id=[% attachment.attachid %]">[% attachment.description FILTER html FILTER obsolete(attachment.isobsolete) %]</a> + <a href="attachment.cgi?id=[% attachment.id %]">[% attachment.description FILTER html FILTER obsolete(attachment.isobsolete) %]</a> </td> <td valign="top"> [% IF attachment.ispatch %] <i>patch</i> + [% ELSIF attachment.isurl %] + <i>url</i> [% ELSE %] [% attachment.contenttype FILTER html %] [% END %] </td> - <td valign="top">[% attachment.date FILTER time %]</td> + <td valign="top"> + <a href="mailto:[% attachment.attacher.email FILTER html %]"> + [% attachment.attacher.name || attachment.attacher.login FILTER html %] + </a> + </td> + <td valign="top">[% attachment.attached FILTER time %]</td> <td valign="top">[% attachment.datasize FILTER unitconvert %]</td> [% IF show_attachment_flags %] @@ -69,9 +77,9 @@ [% END %] <td valign="top"> - <a href="attachment.cgi?id=[% attachment.attachid %]&action=edit">Edit</a> + <a href="attachment.cgi?id=[% attachment.id %]&action=edit">Details</a> [% IF attachment.ispatch && patchviewerinstalled %] - | <a href="attachment.cgi?id=[% attachment.attachid %]&action=diff">Diff</a> + | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a> [% END %] [% Hook.process("action") %] </td> @@ -80,7 +88,7 @@ [% END %] <tr> - <td colspan="[% show_attachment_flags ? 5 : 4 %]"> + <td colspan="[% show_attachment_flags ? 6 : 5 %]"> <a href="attachment.cgi?bugid=[% bugid %]&action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.) </td> [% IF attachments.size %] diff --git a/template/en/default/attachment/show-multiple.html.tmpl b/template/en/default/attachment/show-multiple.html.tmpl index e7043a142..e2c918dbb 100644 --- a/template/en/default/attachment/show-multiple.html.tmpl +++ b/template/en/default/attachment/show-multiple.html.tmpl @@ -78,7 +78,7 @@ </td> <td valign="top"> - <a href="attachment.cgi?id=[% a.attachid %]&action=edit">Edit</a> + <a href="attachment.cgi?id=[% a.attachid %]&action=edit">Details</a> </td> </tr> </table> diff --git a/template/en/default/bug/CVS/Entries b/template/en/default/bug/CVS/Entries index 49d79af44..b1eeae8f4 100644 --- a/template/en/default/bug/CVS/Entries +++ b/template/en/default/bug/CVS/Entries @@ -1,15 +1,15 @@ -/choose.html.tmpl/1.6/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_20_2 -/comments.html.tmpl/1.18.2.4/Mon Jan 9 19:17:15 2006//TBUGZILLA-2_20_2 -/dependency-graph.html.tmpl/1.9/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_20_2 -/dependency-tree.html.tmpl/1.15.4.2/Tue Dec 27 18:41:44 2005//TBUGZILLA-2_20_2 -/edit.html.tmpl/1.60.2.6/Fri Mar 3 00:08:24 2006//TBUGZILLA-2_20_2 -/knob.html.tmpl/1.18/Mon Jun 20 19:16:30 2005//TBUGZILLA-2_20_2 -/navigate.html.tmpl/1.7/Mon Jun 20 19:30:29 2005//TBUGZILLA-2_20_2 -/show-multiple.html.tmpl/1.24.6.2/Mon Jan 2 20:47:15 2006//TBUGZILLA-2_20_2 -/show.html.tmpl/1.10/Tue Nov 2 22:50:09 2004//TBUGZILLA-2_20_2 -/show.xml.tmpl/1.7/Sun Jan 16 20:34:52 2005//TBUGZILLA-2_20_2 -/summarize-time.html.tmpl/1.1.4.2/Mon Jan 9 21:50:01 2006//TBUGZILLA-2_20_2 -/time.html.tmpl/1.2/Sun Jan 18 18:39:23 2004//TBUGZILLA-2_20_2 +/choose.html.tmpl/1.6/Sun Jan 18 18:39:17 2004//TBUGZILLA-2_22 +/comments.html.tmpl/1.25/Mon Jan 9 18:59:54 2006//TBUGZILLA-2_22 +/dependency-graph.html.tmpl/1.10/Wed Oct 12 01:04:30 2005//TBUGZILLA-2_22 +/dependency-tree.html.tmpl/1.18/Sun Dec 18 22:19:54 2005//TBUGZILLA-2_22 +/edit.html.tmpl/1.69.2.2/Fri Mar 3 00:07:41 2006//TBUGZILLA-2_22 +/knob.html.tmpl/1.19/Wed Sep 7 12:05:12 2005//TBUGZILLA-2_22 +/navigate.html.tmpl/1.7/Mon Jun 20 19:30:29 2005//TBUGZILLA-2_22 +/show-multiple.html.tmpl/1.26/Mon Jan 2 20:45:31 2006//TBUGZILLA-2_22 +/show.html.tmpl/1.11/Sun Jul 10 22:37:07 2005//TBUGZILLA-2_22 +/show.xml.tmpl/1.11/Mon Nov 7 20:32:27 2005//TBUGZILLA-2_22 +/summarize-time.html.tmpl/1.3/Mon Jan 9 21:49:59 2006//TBUGZILLA-2_22 +/time.html.tmpl/1.2/Sun Jan 18 18:39:23 2004//TBUGZILLA-2_22 D/activity//// D/create//// D/process//// diff --git a/template/en/default/bug/CVS/Tag b/template/en/default/bug/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/bug/CVS/Tag +++ b/template/en/default/bug/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/bug/activity/CVS/Entries b/template/en/default/bug/activity/CVS/Entries index 2b74c63db..52d88b941 100644 --- a/template/en/default/bug/activity/CVS/Entries +++ b/template/en/default/bug/activity/CVS/Entries @@ -1,3 +1,3 @@ -/show.html.tmpl/1.7/Mon Feb 2 21:57:29 2004//TBUGZILLA-2_20_2 -/table.html.tmpl/1.9.2.1/Mon Dec 12 02:15:00 2005//TBUGZILLA-2_20_2 +/show.html.tmpl/1.7/Mon Feb 2 21:57:29 2004//TBUGZILLA-2_22 +/table.html.tmpl/1.10/Mon Dec 12 02:13:05 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/bug/activity/CVS/Tag b/template/en/default/bug/activity/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/bug/activity/CVS/Tag +++ b/template/en/default/bug/activity/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl index 93cfc4888..1ccf9904c 100644 --- a/template/en/default/bug/comments.html.tmpl +++ b/template/en/default/bug/comments.html.tmpl @@ -23,6 +23,20 @@ [% PROCESS bug/time.html.tmpl %] + <script type="text/javascript"> + <!-- + function updateCommentPrivacy(checkbox, id) { + var text_elem = document.getElementById('comment_text_'+id); + if (checkbox.checked) { + text_elem.parentNode.className='bz_private'; + } else { + text_elem.parentNode.className=''; + } + } + //--> + </script> + + [% DEFAULT start_at = 0 mode = "show" %] [% isinsider = Param("insidergroup") && UserInGroup(Param("insidergroup")) %] [% sort_order = user.settings.comment_sort_order.value %] @@ -112,8 +126,9 @@ <i> <input type="hidden" name="oisprivate-[% count %]" value="[% comment.isprivate %]"> - <input type="hidden" name="when-[% count %]" value="[% comment.when %]"> + <input type="hidden" name="when-[% count %]" value="[% comment.time %]"> <input type="checkbox" name="isprivate-[% count %]" value="1" + onClick="updateCommentPrivacy(this, [% count %])" id="isprivate-[% count %]" [% " checked=\"checked\"" IF comment.isprivate %]> Private </i> diff --git a/template/en/default/bug/create/CVS/Entries b/template/en/default/bug/create/CVS/Entries index aabcd85d8..49a82af99 100644 --- a/template/en/default/bug/create/CVS/Entries +++ b/template/en/default/bug/create/CVS/Entries @@ -1,8 +1,8 @@ -/comment-guided.txt.tmpl/1.4/Thu Apr 7 23:59:59 2005//TBUGZILLA-2_20_2 -/comment.txt.tmpl/1.3.4.1/Tue Feb 21 15:19:24 2006//TBUGZILLA-2_20_2 -/create-guided.html.tmpl/1.26.2.2/Fri Mar 3 00:08:24 2006//TBUGZILLA-2_20_2 -/create.html.tmpl/1.51.2.3/Fri Mar 3 00:08:24 2006//TBUGZILLA-2_20_2 -/created.html.tmpl/1.8.10.1/Wed Jul 27 20:56:09 2005//TBUGZILLA-2_20_2 -/make-template.html.tmpl/1.7/Thu Mar 17 10:47:33 2005//TBUGZILLA-2_20_2 -/user-message.html.tmpl/1.4/Sun Mar 7 23:27:31 2004//TBUGZILLA-2_20_2 +/comment-guided.txt.tmpl/1.4/Thu Apr 7 23:59:59 2005//TBUGZILLA-2_22 +/comment.txt.tmpl/1.3.6.1/Tue Feb 21 15:19:56 2006//TBUGZILLA-2_22 +/create-guided.html.tmpl/1.26.4.2/Fri Mar 3 00:07:48 2006//TBUGZILLA-2_22 +/create.html.tmpl/1.54.2.2/Fri Mar 3 00:07:48 2006//TBUGZILLA-2_22 +/created.html.tmpl/1.9/Wed Jul 27 20:51:33 2005//TBUGZILLA-2_22 +/make-template.html.tmpl/1.8/Tue Dec 13 20:43:49 2005//TBUGZILLA-2_22 +/user-message.html.tmpl/1.4/Sun Mar 7 23:27:31 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/bug/create/CVS/Tag b/template/en/default/bug/create/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/bug/create/CVS/Tag +++ b/template/en/default/bug/create/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl index 817d3c943..20b311234 100644 --- a/template/en/default/bug/create/create.html.tmpl +++ b/template/en/default/bug/create/create.html.tmpl @@ -27,7 +27,6 @@ [% product_name = product FILTER html %] [% PROCESS global/header.html.tmpl title = "Enter $terms.Bug: $product_name" - h2 = "This page lets you enter a new $terms.bug into ${terms.Bugzilla}." onload="set_assign_to();" %] [% USE Bugzilla %] @@ -282,6 +281,15 @@ function set_assign_to() { </tr> [% END %] +[% IF Param("usebugaliases") %] + <tr> + <td align="right"><strong>Alias:</strong></td> + <td colspan="3"> + <input name="alias" size="20"> + </td> + </tr> +[% END %] + <tr> <td align="right"><strong>URL:</strong></td> <td colspan="3"> diff --git a/template/en/default/bug/create/make-template.html.tmpl b/template/en/default/bug/create/make-template.html.tmpl index f118f7f13..bf1e743c0 100644 --- a/template/en/default/bug/create/make-template.html.tmpl +++ b/template/en/default/bug/create/make-template.html.tmpl @@ -17,6 +17,12 @@ # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> + # Marc Schumann <wurblzap@gmail.com> + #%] + +[%# INTERFACE: + # url: URL to a pre-filled bug entry form. + # short_desc: Bug summary as entered in the form. #%] [% PROCESS global/variables.none.tmpl %] @@ -28,8 +34,12 @@ <p> You can bookmark this link: - “<a href="enter_bug.cgi?[% url FILTER html %]">[% terms.Bug %] - entry template</a>”. + “<a href="enter_bug.cgi?[% url FILTER html %]"> + [% IF short_desc %] + [% short_desc FILTER html %] + [% ELSE %] + [% terms.Bug %] entry template + [% END %]</a>”. This bookmark will bring up the <em>Enter [% terms.Bug %]</em> page with the fields initialized as you've requested. </p> diff --git a/template/en/default/bug/dependency-graph.html.tmpl b/template/en/default/bug/dependency-graph.html.tmpl index af2791fc2..4db034ea2 100644 --- a/template/en/default/bug/dependency-graph.html.tmpl +++ b/template/en/default/bug/dependency-graph.html.tmpl @@ -39,8 +39,10 @@ %] [% IF NOT multiple_bugs AND NOT doall %] + [% filtered_desc = short_desc FILTER html %] [% title = "$title for $terms.bug $bug_id" h1 = "$h1 for $terms.bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>" + h2 = filtered_desc %] [% END %] diff --git a/template/en/default/bug/dependency-tree.html.tmpl b/template/en/default/bug/dependency-tree.html.tmpl index beee05660..8b5ecd59c 100644 --- a/template/en/default/bug/dependency-tree.html.tmpl +++ b/template/en/default/bug/dependency-tree.html.tmpl @@ -23,9 +23,11 @@ [% PROCESS global/variables.none.tmpl %] +[% filtered_desc = blocked_tree.$bugid.summary FILTER html %] [% PROCESS global/header.html.tmpl title = "Dependency tree for $terms.Bug $bugid" h1 = "Dependency tree for <a href=\"show_bug.cgi?id=$bugid\">$terms.Bug $bugid</a>" + h2 = filtered_desc %] [% PROCESS depthControlToolbar %] @@ -132,7 +134,7 @@ function listToggle(event) { var node = event.target; if (!node) - node = event.srcElement; + node = event.srcElement; if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; var toggle = node.nextSibling; diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl index 9c5788c35..2652b4b76 100644 --- a/template/en/default/bug/edit.html.tmpl +++ b/template/en/default/bug/edit.html.tmpl @@ -117,6 +117,14 @@ [% END %] + function updateCommentTagControl(checkbox, form) { + if (checkbox.checked) { + form.comment.className='bz_private'; + } else { + form.comment.className=''; + } + } + //--> </script> @@ -133,28 +141,33 @@ <tr> <td valign="top"> <table cellspacing="1" cellpadding="1"> - <tr> <td align="right"> - [% IF Param('useclassification') %] - [% IF bug.classification_id != "1" %] - <b>[[% bug.classification FILTER html %]]</b> - [% END %] + [% IF Param('useclassification') && bug.classification_id != 1 %] + <b>[[% bug.classification FILTER html %]]</b> [% END %] <b>[% terms.Bug %]#:</b> </td> <td> <a href="[% Param('urlbase') %]show_bug.cgi?id=[% bug.bug_id %]"> [% bug.bug_id %]</a> - [% IF Param("usebugaliases") %] - <label for="alias" title="a name for the [% terms.bug %] that can be used in place of its ID number, f.e. when adding it to a list of dependencies"> - <b>alias:</b> - <input id="alias" name="alias" value="[% bug.alias FILTER html %]" size="20" maxlength="20"> - </label> - [% END %] </td> </tr> + [% IF Param("usebugaliases") %] + <tr> + <td align="right"> + <b>Alias:</b> + </td> + <td> + <label for="alias" title="a name for the [% terms.bug %] that can be used in place of its ID number, f.e. when adding it to a list of dependencies"> + <input id="alias" name="alias" value="[% bug.alias FILTER html %]" + size="20" maxlength="20"> + </label> + </td> + </tr> + [% END %] + <tr> <td align="right"> <b><u>P</u>roduct:</b> @@ -540,7 +553,8 @@ <b>Additional <u>C</u>omments:</b> [% IF Param("insidergroup") && UserInGroup(Param("insidergroup")) %] <input type="checkbox" name="commentprivacy" value="1" - id="newcommentprivacy"> Private + id="newcommentprivacy" + onClick="updateCommentTagControl(this, form)"> Private [% END %] <br> <a name="add_comment"></a> @@ -663,5 +677,4 @@ </select> </label> </td> - <td> </td> [% END %] diff --git a/template/en/default/bug/knob.html.tmpl b/template/en/default/bug/knob.html.tmpl index 2ade9a373..c76251ae9 100644 --- a/template/en/default/bug/knob.html.tmpl +++ b/template/en/default/bug/knob.html.tmpl @@ -170,6 +170,8 @@ | <a href="show_bug.cgi?format=multiple&id=[% bug.bug_id %]">Format For Printing</a> | + <a href="show_bug.cgi?ctype=xml&id=[% bug.bug_id %]">XML</a> + | <a href="enter_bug.cgi?cloned_bug_id=[% bug.bug_id %]">Clone This [% terms.Bug %]</a> [%# Links to more things users can do with this bug. %] diff --git a/template/en/default/bug/process/CVS/Entries b/template/en/default/bug/process/CVS/Entries index 04cbfe5f0..2fc09f749 100644 --- a/template/en/default/bug/process/CVS/Entries +++ b/template/en/default/bug/process/CVS/Entries @@ -1,8 +1,7 @@ -/bugmail.html.tmpl/1.4/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_20_2 -/confirm-duplicate.html.tmpl/1.9/Fri Apr 8 00:45:47 2005//TBUGZILLA-2_20_2 -/header.html.tmpl/1.3/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_20_2 -/midair.html.tmpl/1.13.4.2/Mon Jan 9 19:02:53 2006//TBUGZILLA-2_20_2 -/next.html.tmpl/1.5/Wed May 12 05:03:27 2004//TBUGZILLA-2_20_2 -/results.html.tmpl/1.9/Thu Mar 17 06:13:15 2005//TBUGZILLA-2_20_2 -/verify-new-product.html.tmpl/1.15.4.1/Tue Jul 12 22:28:00 2005//TBUGZILLA-2_20_2 +/bugmail.html.tmpl/1.6/Mon Oct 10 16:56:28 2005//TBUGZILLA-2_22 +/confirm-duplicate.html.tmpl/1.9/Fri Apr 8 00:45:47 2005//TBUGZILLA-2_22 +/header.html.tmpl/1.3/Sun Jan 18 18:39:25 2004//TBUGZILLA-2_22 +/midair.html.tmpl/1.15.2.2/Mon Mar 6 23:03:27 2006//TBUGZILLA-2_22 +/results.html.tmpl/1.10/Sun Aug 21 17:36:50 2005//TBUGZILLA-2_22 +/verify-new-product.html.tmpl/1.16/Tue Jul 12 22:25:11 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/bug/process/CVS/Tag b/template/en/default/bug/process/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/bug/process/CVS/Tag +++ b/template/en/default/bug/process/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/bug/process/bugmail.html.tmpl b/template/en/default/bug/process/bugmail.html.tmpl index a2a6e7353..557f091a1 100644 --- a/template/en/default/bug/process/bugmail.html.tmpl +++ b/template/en/default/bug/process/bugmail.html.tmpl @@ -62,11 +62,15 @@ [% BLOCK emails %] <b>[% description FILTER html %]:</b> - [% IF names.size > 0 %] - [%+ FOREACH name = names %] - [% name FILTER html %][% ", " UNLESS loop.last() %] + [% IF user.can_see_bug(mailing_bugid) %] + [% IF names.size > 0 %] + [%+ FOREACH name = names %] + [% name FILTER html %][% ", " UNLESS loop.last() %] + [% END %] + [% ELSE %] + no one [% END %] [% ELSE %] - no one + (list of e-mails not available) [% END %] [% END %] diff --git a/template/en/default/bug/process/midair.html.tmpl b/template/en/default/bug/process/midair.html.tmpl index 01b9916dd..aa587a4ca 100644 --- a/template/en/default/bug/process/midair.html.tmpl +++ b/template/en/default/bug/process/midair.html.tmpl @@ -62,10 +62,12 @@ </p> [% END %] +[% IF cgi.param("comment") %] <p> Your comment was:<br> <blockquote><pre>[% cgi.param("comment") FILTER wrap_comment FILTER html %]</pre></blockquote> </p> +[% END %] <p> You have the following choices: diff --git a/template/en/default/bug/process/next.html.tmpl b/template/en/default/bug/process/next.html.tmpl deleted file mode 100644 index 1cd9328a1..000000000 --- a/template/en/default/bug/process/next.html.tmpl +++ /dev/null @@ -1,67 +0,0 @@ -[%# 1.0@bugzilla.org %] -[%# The contents of this file are subject to the Mozilla Public - # License Version 1.1 (the "License"); you may not use this file - # except in compliance with the License. You may obtain a copy of - # the License at http://www.mozilla.org/MPL/ - # - # Software distributed under the License is distributed on an "AS - # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - # implied. See the License for the specific language governing - # rights and limitations under the License. - # - # The Original Code is the Bugzilla Bug Tracking System. - # - # The Initial Developer of the Original Code is Netscape Communications - # Corporation. Portions created by Netscape are - # Copyright (C) 1998 Netscape Communications Corporation. All - # Rights Reserved. - # - # Contributor(s): Myk Melez <myk@mozilla.org> - #%] - -[%# INTERFACE: - # bug : Bug object; the next bug to show - #%] - -[% PROCESS global/variables.none.tmpl %] - -<hr> - -<p> - The next [% terms.bug %] in your list is [% terms.bug %] - <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>: -</p> - -<hr> -<table border="0" cellspacing="0" width="100%"> - <tr> - <td valign="top" align="left" nowrap="nowrap"> - <font size="+1"> - <b>[%+ terms.Bugzilla %] [%+ terms.Bug %] [%+ bug.bug_id %]</b> - </font> - </td> - <td valign="middle" align="left"> - - </td> - <td valign="middle" align="left"> - [% bug.short_desc FILTER html %] - </td> - <td valign="middle" align="right"> - Last modified: [% bug.delta_ts FILTER time %] - </td> - </tr> -</table> - -[% PROCESS bug/navigate.html.tmpl %] - -<hr> - -[% PROCESS "bug/edit.html.tmpl" %] - -<hr> - -[% PROCESS bug/navigate.html.tmpl %] - -<br> - -[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/bug/process/results.html.tmpl b/template/en/default/bug/process/results.html.tmpl index 711776419..a21858792 100644 --- a/template/en/default/bug/process/results.html.tmpl +++ b/template/en/default/bug/process/results.html.tmpl @@ -44,6 +44,7 @@ 'dep' => "Checking for dependency changes on $terms.bug $id" , 'votes' => "$terms.Bug $id confirmed by number of votes" , 'created' => "$terms.Bug $id has been added to the database" , + 'move' => "$terms.Bug $id has been moved to another database" , } linktext = { @@ -52,6 +53,7 @@ 'dep' => "Go To $terms.Bug $id" , 'votes' => "Go To $terms.Bug $id" , 'created' => "Go To $terms.Bug $id" , + 'move' => "Back To $terms.Bug $id" , } %] diff --git a/template/en/default/bug/show.html.tmpl b/template/en/default/bug/show.html.tmpl index 8db59a980..8cb14ee4d 100644 --- a/template/en/default/bug/show.html.tmpl +++ b/template/en/default/bug/show.html.tmpl @@ -26,19 +26,30 @@ [%# This script/template only handles one bug #%] [% bug = bugs.0 %] -[% filtered_desc = bug.short_desc FILTER html %] -[% filtered_timestamp = bug.delta_ts FILTER time %] -[% PROCESS global/header.html.tmpl - title = "$terms.Bug $bug.bug_id - $bug.short_desc" - h1 = "$terms.Bugzilla $terms.Bug $bug.bug_id" - h2 = filtered_desc - h3 = "Last modified: $filtered_timestamp" - bodyclasses = ['bz_bug', - "bz_status_$bug.bug_status", - "bz_component_$bug.component", - "bz_bug_$bug.bug_id" - ] -%] +[% IF !header_done %] + [% filtered_desc = bug.short_desc FILTER html %] + [% filtered_timestamp = bug.delta_ts FILTER time %] + [% PROCESS global/header.html.tmpl + title = "$terms.Bug $bug.bug_id - $bug.short_desc" + h1 = "$terms.Bugzilla $terms.Bug $bug.bug_id" + h2 = filtered_desc + h3 = "Last modified: $filtered_timestamp" + bodyclasses = ['bz_bug', + "bz_status_$bug.bug_status", + "bz_component_$bug.component", + "bz_bug_$bug.bug_id" + ] + %] +[% END %] + +[% IF nextbug %] + <hr> + <p> + The next [% terms.bug %] in your list is [% terms.bug %] + <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>: + </p> + <hr> +[% END %] [% PROCESS bug/navigate.html.tmpl %] diff --git a/template/en/default/bug/show.xml.tmpl b/template/en/default/bug/show.xml.tmpl index 6c950a2bf..6fe3f3180 100644 --- a/template/en/default/bug/show.xml.tmpl +++ b/template/en/default/bug/show.xml.tmpl @@ -19,7 +19,7 @@ # Contributor(s): Bradley Baetz <bbaetz@student.usyd.edu.au> # #%] -<?xml version="1.0" standalone="yes"?> +<?xml version="1.0" [% IF Param('utf8') %]encoding="UTF-8" [% END %]standalone="yes" ?> <!DOCTYPE bugzilla SYSTEM "[% Param('urlbase') %]bugzilla.dtd"> <bugzilla version="[% VERSION %]" @@ -51,10 +51,22 @@ [% END %] [% END %] + [%# Bug Flags %] + [% FOREACH type = bug.flag_types %] + [% FOREACH flag = type.flags %] + <flag name="[% type.name FILTER xml %]" + status="[% flag.status FILTER xml %]" + setter="[% flag.setter.login FILTER xml %]" + [% IF flag.requestee %] + requestee="[% flag.requestee.login FILTER xml %]" + [% END %] + /> + [% END %] + [% END %] [% IF displayfields.long_desc %] [% FOREACH c = bug.longdescs %] [% NEXT IF c.isprivate && !UserInGroup(Param("insidergroup")) %] - <long_desc> + <long_desc isprivate="[% c.isprivate FILTER xml %]"> <who>[% c.email FILTER xml %]</who> <bug_when>[% c.time FILTER time FILTER xml %]</bug_when> <thetext>[% c.body FILTER xml %]</thetext> @@ -66,17 +78,19 @@ [% FOREACH a = bug.attachments %] [% NEXT IF a.isprivate && !UserInGroup(Param("insidergroup")) %] <attachment - [% IF a.isobsolete %] - isobsolete="1" - [% END %] - [% IF a.ispatch %] - ispatch="1" - [% END %] + isobsolete="[% a.isobsolete FILTER xml %]" + ispatch="[% a.ispatch FILTER xml %]" + isprivate="[% a.isprivate FILTER xml %]" > - <attachid>[% a.attachid %]</attachid> - <date>[% a.date FILTER time FILTER xml %]</date> + <attachid>[% a.id %]</attachid> + <date>[% a.attached FILTER time FILTER xml %]</date> <desc>[% a.description FILTER xml %]</desc> - <ctype>[% a.contenttype FILTER xml %]</ctype> + <filename>[% a.filename FILTER xml %]</filename> + <type>[% a.contenttype FILTER xml %]</type> + [% IF displayfields.attachmentdata %] + <data encoding="base64">[% a.data FILTER base64 %]</data> + [% END %] + [% FOREACH flag = a.flags %] <flag name="[% flag.type.name FILTER xml %]" status="[% flag.status FILTER xml %]" diff --git a/template/en/default/bug/votes/CVS/Entries b/template/en/default/bug/votes/CVS/Entries index 310980a13..2c0f1d28f 100644 --- a/template/en/default/bug/votes/CVS/Entries +++ b/template/en/default/bug/votes/CVS/Entries @@ -1,4 +1,4 @@ -/delete-all.html.tmpl/1.6/Sun Jan 18 18:39:26 2004//TBUGZILLA-2_20_2 -/list-for-bug.html.tmpl/1.9/Sun Jan 18 18:39:26 2004//TBUGZILLA-2_20_2 -/list-for-user.html.tmpl/1.19.4.2/Mon Dec 12 02:25:22 2005//TBUGZILLA-2_20_2 +/delete-all.html.tmpl/1.6/Sun Jan 18 18:39:26 2004//TBUGZILLA-2_22 +/list-for-bug.html.tmpl/1.10/Fri Sep 2 21:33:36 2005//TBUGZILLA-2_22 +/list-for-user.html.tmpl/1.21/Mon Dec 12 02:23:44 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/bug/votes/CVS/Tag b/template/en/default/bug/votes/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/bug/votes/CVS/Tag +++ b/template/en/default/bug/votes/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/bug/votes/list-for-bug.html.tmpl b/template/en/default/bug/votes/list-for-bug.html.tmpl index 46fb755ff..4b4514a90 100644 --- a/template/en/default/bug/votes/list-for-bug.html.tmpl +++ b/template/en/default/bug/votes/list-for-bug.html.tmpl @@ -22,9 +22,8 @@ [%# INTERFACE: # bug_id: integer. ID of the bug we are listing the votes for. # users: list of hashes. May be empty. Each hash has two members: - # name: string. The login name of the user whose vote is attached - # count: integer. The number of times that user has votes for this bug. - # total: integer. The total number of votes for this bug. + # login_name: string. The login name of the user whose vote is attached + # vote_count: integer. The number of times that user has votes for this bug. #%] [% PROCESS global/variables.none.tmpl %] @@ -34,6 +33,7 @@ h2 = "$terms.Bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>" %] +[% total = 0 %] <table cellspacing="4"> <tr> <th>Who</th> @@ -41,14 +41,15 @@ </tr> [% FOREACH voter = users %] + [% total = total + voter.vote_count %] <tr> <td> - <a href="votes.cgi?action=show_user&user=[% voter.name FILTER url_quote %]"> - [% voter.name FILTER html %] + <a href="votes.cgi?action=show_user&user=[% voter.login_name FILTER url_quote %]"> + [% voter.login_name FILTER html %] </a> </td> <td align="right"> - [% voter.count %] + [% voter.vote_count %] </td> </tr> [% END %] diff --git a/template/en/default/config.js.tmpl b/template/en/default/config.js.tmpl index a74c5d34d..00ba58983 100644 --- a/template/en/default/config.js.tmpl +++ b/template/en/default/config.js.tmpl @@ -19,8 +19,7 @@ # Contributor(s): Myk Melez <myk@mozilla.org> #%] // -// This file contains the installation specific values for QuickSearch -// and other Bugzilla clients. See quicksearch.js for more details. +// This file contains installation specific values for third-party clients. // // Note: this interface is experimental and under development. // We may and probably will make breaking changes to it in the future. @@ -74,10 +73,10 @@ var component = new Object(); var version = new Object(); var target_milestone = new Object(); -[% FOREACH p = legal_products %] - component['[% p FILTER js %]'] = [ [% FOREACH x = components_by_product.$p %]'[% x FILTER js %]', [% END %] ]; - version['[% p FILTER js %]'] = [ [% FOREACH x = versions_by_product.$p %]'[% x FILTER js %]', [% END %] ]; - target_milestone['[% p FILTER js %]'] = [ [% FOREACH x = milestones_by_product.$p %]'[% x FILTER js %]', [% END %] ]; +[% FOREACH p = products %] + component['[% p.name FILTER js %]'] = [ [% FOREACH x = p.components %]'[% x.name FILTER js %]', [% END %] ]; + version['[% p.name FILTER js %]'] = [ [% FOREACH x = p.versions %]'[% x.name FILTER js %]', [% END %] ]; + target_milestone['[% p.name FILTER js %]'] = [ [% FOREACH x = p.milestones %]'[% x.name FILTER js %]', [% END %] ]; [% END %] // Product and Component Exceptions diff --git a/template/en/default/config.rdf.tmpl b/template/en/default/config.rdf.tmpl index 884c26a0c..4c1047f50 100644 --- a/template/en/default/config.rdf.tmpl +++ b/template/en/default/config.rdf.tmpl @@ -19,7 +19,7 @@ # Contributor(s): Myk Melez <myk@mozilla.org> #%] -<?xml version="1.0"?> +<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?> <!-- Note: this interface is experimental and under development. - We may and probably will make breaking changes to it in the future. --> @@ -105,23 +105,23 @@ <bz:products> <Seq> - [% FOREACH product = legal_products %] + [% FOREACH product = products %] <li> - <bz:product rdf:about="[% Param('urlbase') %]product.cgi?name=[% product FILTER uri %]"> - <bz:name>[% product FILTER html %]</bz:name> + <bz:product rdf:about="[% Param('urlbase') %]product.cgi?name=[% product.name FILTER uri %]"> + <bz:name>[% product.name FILTER html %]</bz:name> <bz:components> <Seq> - [% FOREACH component = components_by_product.$product %] - <li resource="[% Param('urlbase') %]component.cgi?name=[% component FILTER uri %]"/> + [% FOREACH component = product.components %] + <li resource="[% Param('urlbase') %]component.cgi?name=[% component.name FILTER uri %]"/> [% END %] </Seq> </bz:components> <bz:versions> <Seq> - [% FOREACH version = versions_by_product.$product %] - <li resource="[% Param('urlbase') %]version.cgi?name=[% version FILTER uri %]"/> + [% FOREACH version = product.versions %] + <li resource="[% Param('urlbase') %]version.cgi?name=[% version.name FILTER uri %]"/> [% END %] </Seq> </bz:versions> @@ -129,8 +129,8 @@ [% IF Param('usetargetmilestone') %] <bz:target_milestones> <Seq> - [% FOREACH milestone = milestones_by_product.$product %] - <li resource="[% Param('urlbase') %]milestone.cgi?name=[% milestone FILTER uri %]"/> + [% FOREACH milestone = product.milestones %] + <li resource="[% Param('urlbase') %]milestone.cgi?name=[% milestone.name FILTER uri %]"/> [% END %] </Seq> </bz:target_milestones> @@ -144,24 +144,28 @@ <bz:components> <Seq> - [% FOREACH item = legal_components %] - <li> - <bz:component rdf:about="[% Param('urlbase') %]component.cgi?name=[% item FILTER uri %]"> - <bz:name>[% item FILTER html %]</bz:name> - </bz:component> - </li> + [% FOREACH product = products %] + [% FOREACH component = product.components %] + <li> + <bz:component rdf:about="[% Param('urlbase') %]component.cgi?name=[% component.name FILTER uri %]"> + <bz:name>[% component.name FILTER html %]</bz:name> + </bz:component> + </li> + [% END %] [% END %] </Seq> </bz:components> <bz:versions> <Seq> - [% FOREACH item = legal_versions %] - <li> - <bz:version rdf:about="[% Param('urlbase') %]version.cgi?name=[% item FILTER uri %]"> - <bz:name>[% item FILTER html %]</bz:name> - </bz:version> - </li> + [% FOREACH product = products %] + [% FOREACH version = product.versions %] + <li> + <bz:version rdf:about="[% Param('urlbase') %]version.cgi?name=[% version.name FILTER uri %]"> + <bz:name>[% version.name FILTER html %]</bz:name> + </bz:version> + </li> + [% END %] [% END %] </Seq> </bz:versions> @@ -169,12 +173,14 @@ [% IF Param('usetargetmilestone') %] <bz:target_milestones> <Seq> - [% FOREACH item = legal_milestones %] - <li> - <bz:target_milestone rdf:about="[% Param('urlbase') %]milestone.cgi?name=[% item FILTER uri %]"> - <bz:name>[% item FILTER html %]</bz:name> - </bz:target_milestone> - </li> + [% FOREACH product = products %] + [% FOREACH milestone = product.milestones %] + <li> + <bz:target_milestone rdf:about="[% Param('urlbase') %]milestone.cgi?name=[% milestone.name FILTER uri %]"> + <bz:name>[% milestone.name FILTER html %]</bz:name> + </bz:target_milestone> + </li> + [% END %] [% END %] </Seq> </bz:target_milestones> diff --git a/template/en/default/email/CVS/Entries b/template/en/default/email/CVS/Entries new file mode 100644 index 000000000..604fcc056 --- /dev/null +++ b/template/en/default/email/CVS/Entries @@ -0,0 +1,2 @@ +/sudo.txt.tmpl/1.1/Fri Nov 4 16:11:38 2005//TBUGZILLA-2_22 +D diff --git a/template/en/default/email/CVS/Repository b/template/en/default/email/CVS/Repository new file mode 100644 index 000000000..35c83ce03 --- /dev/null +++ b/template/en/default/email/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/template/en/default/email diff --git a/template/en/default/email/CVS/Root b/template/en/default/email/CVS/Root new file mode 100644 index 000000000..cdb6f4a07 --- /dev/null +++ b/template/en/default/email/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot diff --git a/template/en/default/email/CVS/Tag b/template/en/default/email/CVS/Tag new file mode 100644 index 000000000..4f143e35f --- /dev/null +++ b/template/en/default/email/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-2_22 diff --git a/template/en/default/email/sudo.txt.tmpl b/template/en/default/email/sudo.txt.tmpl new file mode 100644 index 000000000..06026cf39 --- /dev/null +++ b/template/en/default/email/sudo.txt.tmpl @@ -0,0 +1,43 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 2005 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): A. Karl Kornel <karl@kornel.name> + #%] + +[% PROCESS global/variables.none.tmpl %] + +Content-Type: text/plain +From: [% Param("maintainer") %] +To: [% user.email %] +Subject: [[% terms.Bugzilla %]] Your account [% user.login -%] + is being impersonated + + [%+ sudoer.identity %] has used the 'sudo' feature to access +[%+ terms.Bugzilla %] using your account. + +[% IF reason %] + [%+ sudoer.identity %] provided the following reason for doing this: + +[% reason FILTER wrap_comment %] +[% ELSE %] + [%+ sudoer.identity %] did not provide a reason for doing this. +[% END %] + + If you feel that this action was inappropiate, please contact +[%+ Param("maintainer") %]. For more information on this feature, +visit <[% Param("urlbase") %]page.cgi?id=sudo.html>. diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl index f3b8e0d83..cc4503bb7 100644 --- a/template/en/default/filterexceptions.pl +++ b/template/en/default/filterexceptions.pl @@ -90,11 +90,6 @@ 'status.name', ], -'search/tabs.html.tmpl' => [ - 'tab.name', - 'tab.description', -], - 'request/queue.html.tmpl' => [ 'column_headers.$group_field', 'column_headers.$column', @@ -109,10 +104,6 @@ ], 'reports/duplicates-table.html.tmpl' => [ - '"&maxrows=$maxrows" IF maxrows', - '"&changedsince=$changedsince" IF changedsince', - '"&bug_id=$bug_ids_string&sortvisible=1" - IF sortvisible', 'column.name', 'column.description', 'bug.id', @@ -248,7 +239,7 @@ ], 'global/choose-classification.html.tmpl' => [ - 'classdesc.$p', + 'class.description', ], 'global/choose-product.html.tmpl' => [ @@ -308,7 +299,7 @@ 'bug/comments.html.tmpl' => [ 'comment.isprivate', - 'comment.when', + 'comment.time', 'bug.bug_id', ], @@ -366,9 +357,13 @@ 'bug.deadline', ], +'bug/show.html.tmpl' => [ + 'bug.bug_id', +], + 'bug/show.xml.tmpl' => [ 'VERSION', - 'a.attachid', + 'a.id', 'field', ], @@ -388,7 +383,7 @@ ], 'bug/votes/list-for-bug.html.tmpl' => [ - 'voter.count', + 'voter.vote_count', 'total', ], @@ -409,10 +404,6 @@ 'bug_id', ], -'bug/process/next.html.tmpl' => [ - 'bug.bug_id', -], - 'bug/process/results.html.tmpl' => [ 'title.$type', 'id', @@ -456,13 +447,13 @@ ], 'attachment/edit.html.tmpl' => [ - 'attachid', - 'bugid', + 'attachment.id', + 'attachment.bug_id', 'a', ], 'attachment/list.html.tmpl' => [ - 'attachment.attachid', + 'attachment.id', 'flag.status', 'bugid', ], @@ -498,20 +489,7 @@ ], 'admin/table.html.tmpl' => [ - 'link_uri', - 'c.content' -], - -'admin/classifications/del.html.tmpl' => [ - 'description', -], - -'admin/classifications/edit.html.tmpl' => [ - 'description', -], - -'admin/classifications/reclassify.html.tmpl' => [ - 'description', + 'link_uri' ], 'admin/classifications/select.html.tmpl' => [ @@ -523,8 +501,6 @@ ], 'admin/products/groupcontrol/edit.html.tmpl' => [ - 'filt_classification', - 'filt_product', 'group.bugcount', 'group.id', 'const.CONTROLMAPNA', @@ -539,7 +515,6 @@ 'admin/products/confirm-delete.html.tmpl' => [ 'classification_url_part', - 'bug_count', ], 'admin/products/footer.html.tmpl' => [ @@ -569,6 +544,7 @@ 'type.sortkey || 1', 'typeLabelLowerPlural', 'typeLabelLowerSingular', + 'selname', ], 'admin/flag-type/list.html.tmpl' => [ @@ -578,7 +554,7 @@ 'admin/components/confirm-delete.html.tmpl' => [ - 'bug_count' + 'comp.bug_count' ], 'admin/components/deleted.html.tmpl' => [ @@ -612,15 +588,7 @@ ], 'admin/components/edit.html.tmpl' => [ - 'bug_count' -], - -'admin/components/list.html.tmpl' => [ - 'cgi.query_string' -], - -'admin/components/select-product.html.tmpl' => [ - 'cgi.query_string' + 'comp.bug_count' ], 'admin/milestones/confirm-delete.html.tmpl' => [ @@ -656,10 +624,8 @@ ], 'account/prefs/prefs.html.tmpl' => [ - 'tab.name', - 'tab.description', - 'current_tab.name', - 'current_tab.description', + 'current_tab.label', + 'current_tab.name', ], 'account/prefs/settings.html.tmpl' => [ diff --git a/template/en/default/flag/CVS/Entries b/template/en/default/flag/CVS/Entries index a9535ad39..842a497b6 100644 --- a/template/en/default/flag/CVS/Entries +++ b/template/en/default/flag/CVS/Entries @@ -1,2 +1,2 @@ -/list.html.tmpl/1.17/Fri Feb 18 21:11:59 2005//TBUGZILLA-2_20_2 +/list.html.tmpl/1.19/Sun Aug 21 21:01:33 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/flag/CVS/Tag b/template/en/default/flag/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/flag/CVS/Tag +++ b/template/en/default/flag/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/flag/list.html.tmpl b/template/en/default/flag/list.html.tmpl index 3d8161ff1..83992617a 100644 --- a/template/en/default/flag/list.html.tmpl +++ b/template/en/default/flag/list.html.tmpl @@ -98,10 +98,12 @@ [% flag.setter.nick FILTER html %]: </td> <td> - [% type.name FILTER html FILTER no_break %] + <label title="[% type.description FILTER html %]"> + [%- type.name FILTER html FILTER no_break %]</label> </td> <td> <select id="flag-[% flag.id %]" name="flag-[% flag.id %]" + title="[% type.description FILTER html %]" onchange="toggleRequesteeField(this);"> <option value="X"></option> [% IF type.is_active %] @@ -119,7 +121,7 @@ <td> [% IF type.is_active && type.is_requesteeble %] <span style="white-space: nowrap;"> - (<input type="text" size="8" maxlength="255" + (<input type="text" size="30" maxlength="255" id="requestee-[% flag.id %]" name="requestee-[% flag.id %]" [% IF flag.status == "?" && flag.requestee %] @@ -137,9 +139,13 @@ [% IF (!type.flags || type.flags.size == 0) && type.is_active %] <tr> <td> </td> - <td>[% type.name FILTER html FILTER no_break %]</td> + <td> + <label title="[% type.description FILTER html %]"> + [%- type.name FILTER html FILTER no_break %]</label> + </td> <td> <select id="flag_type-[% type.id %]" name="flag_type-[% type.id %]" + title="[% type.description FILTER html %]" onchange="toggleRequesteeField(this);"> <option value="X"></option> <option value="+">+</option> @@ -153,7 +159,7 @@ <td> [% IF type.is_requesteeble %] <span style="white-space: nowrap;"> - (<input type="text" size="8" maxlength="255" + (<input type="text" size="30" maxlength="255" id="requestee_type-[% type.id %]" name="requestee_type-[% type.id %]">) </span> @@ -172,9 +178,13 @@ [% separator_displayed = 1 %] [% END %] <tr> - <td colspan="2">addl. [% type.name FILTER html FILTER no_break %]</td> + <td colspan="2"> + addl. <label title="[% type.description FILTER html %]"> + [%- type.name FILTER html FILTER no_break %]</label> + </td> <td> <select id="flag_type-[% type.id %]" name="flag_type-[% type.id %]" + title="[% type.description FILTER html %]" onchange="toggleRequesteeField(this);"> <option value="X"></option> <option value="+">+</option> @@ -188,7 +198,7 @@ <td> [% IF type.is_requesteeble %] <span style="white-space: nowrap;"> - (<input type="text" size="8" maxlength="255" + (<input type="text" size="30" maxlength="255" id="requestee_type-[% type.id %]" name="requestee_type-[% type.id %]">) </span> diff --git a/template/en/default/global/CVS/Entries b/template/en/default/global/CVS/Entries index 739494fcd..d5061db54 100644 --- a/template/en/default/global/CVS/Entries +++ b/template/en/default/global/CVS/Entries @@ -1,22 +1,25 @@ -/banner.html.tmpl/1.8/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_20_2 -/choose-classification.html.tmpl/1.4.4.1/Wed Nov 9 22:26:00 2005//TBUGZILLA-2_20_2 -/choose-product.html.tmpl/1.12/Fri Feb 25 17:39:52 2005//TBUGZILLA-2_20_2 -/code-error.html.tmpl/1.52.2.5/Wed Mar 1 21:44:53 2006//TBUGZILLA-2_20_2 -/confirm-user-match.html.tmpl/1.12.2.1/Tue Dec 20 05:28:20 2005//TBUGZILLA-2_20_2 -/field-descs.none.tmpl/1.10.2.2/Thu Aug 11 06:20:59 2005//TBUGZILLA-2_20_2 -/footer.html.tmpl/1.12/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_20_2 -/header.html.tmpl/1.39.4.1/Tue Feb 21 00:12:02 2006//TBUGZILLA-2_20_2 -/help-header.html.tmpl/1.4.4.1/Wed Sep 14 20:59:10 2005//TBUGZILLA-2_20_2 -/help.html.tmpl/1.3/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20_2 -/hidden-fields.html.tmpl/1.9/Thu Apr 7 23:37:56 2005//TBUGZILLA-2_20_2 -/initialize.none.tmpl/1.1/Sun Jan 11 17:12:14 2004//TBUGZILLA-2_20_2 -/message.html.tmpl/1.7/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20_2 -/messages.html.tmpl/1.30.2.2/Wed Jul 27 20:01:38 2005//TBUGZILLA-2_20_2 -/select-menu.html.tmpl/1.4/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20_2 -/setting-descs.none.tmpl/1.3.4.1/Wed Jul 20 02:23:34 2005//TBUGZILLA-2_20_2 -/site-navigation.html.tmpl/1.15/Mon Jan 24 16:39:26 2005//TBUGZILLA-2_20_2 -/useful-links.html.tmpl/1.39.2.1/Sun Aug 21 19:30:08 2005//TBUGZILLA-2_20_2 -/user-error.html.tmpl/1.115.2.10/Fri Mar 3 00:50:50 2006//TBUGZILLA-2_20_2 -/userselect.html.tmpl/1.5/Thu Mar 17 15:50:45 2005//TBUGZILLA-2_20_2 -/variables.none.tmpl/1.3/Tue Apr 12 18:19:57 2005//TBUGZILLA-2_20_2 +/banner.html.tmpl/1.8/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_22 +/choose-classification.html.tmpl/1.6/Wed Nov 9 22:25:59 2005//TBUGZILLA-2_22 +/choose-product.html.tmpl/1.13/Tue Jul 19 21:54:45 2005//TBUGZILLA-2_22 +/code-error.html.tmpl/1.62/Wed Nov 30 12:00:54 2005//TBUGZILLA-2_22 +/confirm-user-match.html.tmpl/1.13/Tue Dec 20 05:26:01 2005//TBUGZILLA-2_22 +/field-descs.none.tmpl/1.12/Thu Aug 11 06:19:24 2005//TBUGZILLA-2_22 +/footer.html.tmpl/1.12/Tue Jun 22 21:07:38 2004//TBUGZILLA-2_22 +/header.html.tmpl/1.40/Tue Feb 21 00:05:58 2006//TBUGZILLA-2_22 +/help-header.html.tmpl/1.6/Wed Aug 10 01:30:41 2005//TBUGZILLA-2_22 +/help.html.tmpl/1.4/Wed Aug 10 01:30:41 2005//TBUGZILLA-2_22 +/hidden-fields.html.tmpl/1.9/Thu Apr 7 23:37:56 2005//TBUGZILLA-2_22 +/initialize.none.tmpl/1.1/Sun Jan 11 17:12:14 2004//TBUGZILLA-2_22 +/message.html.tmpl/1.7/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_22 +/message.txt.tmpl/1.2/Thu Jul 14 06:05:45 2005//TBUGZILLA-2_22 +/messages.html.tmpl/1.34/Thu Oct 13 23:58:26 2005//TBUGZILLA-2_22 +/per-bug-queries.html.tmpl/1.2/Thu Nov 17 07:56:01 2005//TBUGZILLA-2_22 +/select-menu.html.tmpl/1.4/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_22 +/setting-descs.none.tmpl/1.6/Tue Oct 25 17:55:13 2005//TBUGZILLA-2_22 +/site-navigation.html.tmpl/1.17/Mon Nov 7 17:19:13 2005//TBUGZILLA-2_22 +/tabs.html.tmpl/1.2/Sat Jul 30 01:01:54 2005//TBUGZILLA-2_22 +/useful-links.html.tmpl/1.43/Tue Oct 25 17:55:13 2005//TBUGZILLA-2_22 +/user-error.html.tmpl/1.145.2.9/Fri Apr 14 17:06:45 2006//TBUGZILLA-2_22 +/userselect.html.tmpl/1.5/Thu Mar 17 15:50:45 2005//TBUGZILLA-2_22 +/variables.none.tmpl/1.3/Tue Apr 12 18:19:57 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/global/CVS/Tag b/template/en/default/global/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/global/CVS/Tag +++ b/template/en/default/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/global/choose-classification.html.tmpl b/template/en/default/global/choose-classification.html.tmpl index 809d96120..0a14fe44e 100644 --- a/template/en/default/global/choose-classification.html.tmpl +++ b/template/en/default/global/choose-classification.html.tmpl @@ -17,8 +17,8 @@ #%] [%# INTERFACE: - # classdesc: hash. May be empty. The hash keys are the classifications, and the values - # are their descriptions. + # classifications: an array of classification objects containing + # at least one product accessible by the user. #%] [% IF target == "enter_bug.cgi" %] @@ -44,21 +44,19 @@ </tr> [% END %] -[% FOREACH p = classdesc.keys.sort %] - [% IF classifications.$p.size > 0 %] +[% FOREACH class = classifications %] <tr> <th align="right" valign="top"> - <a href="[% target FILTER url_quote %]?classification=[% p FILTER url_quote -%] + <a href="[% target FILTER url_quote %]?classification=[% class.name FILTER url_quote -%] [%- IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER url_quote %][% END -%] [%- IF format %]&format=[% format FILTER url_quote %][% END %]"> - [% p FILTER html %]</a>: + [% class.name FILTER html %]</a>: </th> - [% IF classdesc.$p %] - <td valign="top"> [% classdesc.$p %]</td> + [% IF class.description %] + <td valign="top"> [% class.description %]</td> [% END %] </tr> - [% END %] [% END %] </table> diff --git a/template/en/default/global/choose-product.html.tmpl b/template/en/default/global/choose-product.html.tmpl index 2fdc3b1b7..078b9b700 100644 --- a/template/en/default/global/choose-product.html.tmpl +++ b/template/en/default/global/choose-product.html.tmpl @@ -45,11 +45,11 @@ <a href="[% target %]?product=[% p FILTER url_quote -%] [%- IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER url_quote %][% END -%] [%- IF format %]&format=[% format FILTER url_quote %][% END %]"> - [% p FILTER html %]</a>: + [% p FILTER html %]</a>: </th> [% IF proddesc.$p %] - <td valign="top"> [% proddesc.$p %]</td> + <td valign="top">[% proddesc.$p %]</td> [% END %] </tr> [% END %] diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl index 5370fcad9..141930b07 100644 --- a/template/en/default/global/code-error.html.tmpl +++ b/template/en/default/global/code-error.html.tmpl @@ -70,8 +70,18 @@ the error [% bug.error FILTER html %]. [% ELSIF error == "chart_data_not_generated" %] - The tool which gathers [% terms.bug %] counts has not been run yet. - + [% IF product %] + Charts for the <em>[% product FILTER html %]</em> product are not + available yet because no charting data has been collected for it since it + was created. + [% ELSE %] + No charting data has been collected yet. + [% END %] + Please wait a day and try again. + If you're seeing this message after a day, then you should contact + <a href="mailto:[% Param('maintainer') %]">[% Param('maintainer') %]</a> + and reference this error. + [% ELSIF error == "chart_datafile_corrupt" %] The chart data file [% file FILTER html %] is corrupt. @@ -174,8 +184,9 @@ [% END %] [% ELSIF error == "flag_requestee_disabled" %] - [% title = "Flag not Specifically Requestable" %] - The flag <em>[% name FILTER html %]</em> is not specifically requestable. + [% title = "Flag not Requestable from Specific Person" %] + You can't ask a specific person for + <em>[% type.name FILTER html %]</em>. [% ELSIF error == "flag_status_invalid" %] The flag status <em>[% status FILTER html %]</em> @@ -239,6 +250,14 @@ [% ELSIF error == "need_quipid" %] A valid quipid is needed. + [% ELSIF error == "param_must_be_numeric" %] + [% title = "Invalid Parameter" %] + Invalid parameter passed to [% function FILTER html %]. + It must be numeric. + + [% ELSIF error == "unknown_comparison_type" %] + Specified comparison type is not supported. + [% ELSIF error == "request_queue_group_invalid" %] The group field <em>[% group FILTER html %]</em> is invalid. @@ -272,7 +291,7 @@ I was unable to retrieve your old password from the database. [% ELSIF error == "undefined_field" %] - Form field [% field FILTER html %] was not defined; [% Param('browserbugmessage') %] + Form field [% field FILTER html %] was not defined. [%# Useful message if browser did not select show_bug radio button %] [% IF field == "knob" %] Check that the "Leave as..." radio button was selected. @@ -285,6 +304,10 @@ I could not figure out what you wanted to do. [% END %] + [% ELSIF error == "must_be_patch" %] + [% title = "Attachment Must Be Patch" %] + Attachment #[% attach_id FILTER html %] must be a patch. + [% ELSIF error == "nested_transaction" %] Attempted to start a new transaction without finishing previous one first. @@ -304,6 +327,9 @@ There is an internal error in the SQL query generation code, creating queries with implicit JOIN. + [% ELSIF error == "invalid_post_bug_submit_action" %] + Invalid setting for post_bug_submit_action + [% ELSE %] [% title = "Internal error" %] An internal error has occured, but [% terms.Bugzilla %] doesn't know diff --git a/template/en/default/global/help-header.html.tmpl b/template/en/default/global/help-header.html.tmpl index 330ba9160..96814e93f 100644 --- a/template/en/default/global/help-header.html.tmpl +++ b/template/en/default/global/help-header.html.tmpl @@ -22,7 +22,7 @@ [% USE Bugzilla %] [% cgi = Bugzilla.cgi %] -[% IF help %] +[% IF cgi.param("help") %] [% IF cgi.user_agent("Mozilla/5") %] <style type="text/css"> .help { diff --git a/template/en/default/global/help.html.tmpl b/template/en/default/global/help.html.tmpl index 2095a0dcd..cc69534da 100644 --- a/template/en/default/global/help.html.tmpl +++ b/template/en/default/global/help.html.tmpl @@ -22,7 +22,7 @@ [% USE Bugzilla %] [% cgi = Bugzilla.cgi %] -[% IF help %] +[% IF cgi.param("help") %] [% IF cgi.user_agent("Mozilla/5") %] [% FOREACH h = help_html %] <div id="[% h.id %]_help" class="help" style="display: none;"> diff --git a/template/en/default/global/message.txt.tmpl b/template/en/default/global/message.txt.tmpl new file mode 100644 index 000000000..fc0ec1977 --- /dev/null +++ b/template/en/default/global/message.txt.tmpl @@ -0,0 +1,26 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Max Kanat-Alexander. + # Portions created by Max Kanat-Alexander are Copyright (C) 2005 + # Max Kanat-Alexander. All Rights Reserved. + # + # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[% PROCESS global/variables.none.tmpl %] + +[%# Yes, this may show some HTML. But it's the best we + # can do at the moment. %] +[% PROCESS global/messages.html.tmpl %] +[% message %] diff --git a/template/en/default/global/messages.html.tmpl b/template/en/default/global/messages.html.tmpl index d0435597d..6730e8835 100644 --- a/template/en/default/global/messages.html.tmpl +++ b/template/en/default/global/messages.html.tmpl @@ -169,6 +169,22 @@ [% title = "$terms.Bugzilla Login Changed" %] Your [% terms.Bugzilla %] login has been changed. + [% ELSIF message_tag == "parameters_updated" %] + [% title = "Parameters Updated" %] + [% IF param_changed.size > 0 %] + [% FOREACH param = param_changed %] + Changed <em>[% param FILTER html %]</em><br> + [% END %] + [% ELSE %] + No changes made. + [% END %] + + [% IF shutdown_is_active == 1 %] + <hr> + [% terms.Bugzilla %] has now been shut down. To re-enable the system, + clear the <em>shutdownhtml</em> field. + [% END%] + [% ELSIF message_tag == "password_change_cancelled" %] [% title = "Cancel Request to Change Password" %] Your request has been cancelled. @@ -221,6 +237,17 @@ set to zero automatically as part of marking this [% terms.bug %] as either RESOLVED or CLOSED. + [% ELSIF message_tag == "sudo_started" %] + [% title = "Sudo session started" %] + The sudo session has been started. For the next 6 hours, or until you + end the session, everything you do you do as the user you are + impersonating ([% target FILTER html %]). + + [% ELSIF message_tag == "sudo_ended" %] + [% title = "Sudo session complete" %] + The sudo session has been ended. From this point forward, everything you + do you do as yourself. + [% ELSIF message_tag == "series_created" %] [% title = "Series Created" %] The series <em>[% series.category FILTER html %] / diff --git a/template/en/default/global/per-bug-queries.html.tmpl b/template/en/default/global/per-bug-queries.html.tmpl new file mode 100644 index 000000000..a7a678532 --- /dev/null +++ b/template/en/default/global/per-bug-queries.html.tmpl @@ -0,0 +1,43 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): Frédéric Buclin <LpSolit@gmail.com> + #%] + +[% IF user.id && user.settings.per_bug_queries.value == "on" %] + <div id="links-special"> + <div class="label"> </div> + <div class="links"> + <form action="buglist.cgi" method="get"> + <input type="hidden" name="cmdtype" value="doit"> + <input type="hidden" name="remtype" value="asnamed"> + <input type="hidden" name="add_bugids" value="1"> + <input type="submit" value="Add"> [% terms.bugs %] + <input type="text" name="bug_ids" size="8" maxlength="80"> to + [% foundq = 0 %] + [% FOREACH q = user.queries %] + [% NEXT UNLESS q.query_type == constants.LIST_OF_BUGS %] + [% IF !foundq %] + [% foundq = 1 %] + <select name="oldqueryname"> + [% END %] + <option value="[% q.name FILTER html %]"> + [% q.name FILTER html %]</option> + [% END %] + [% "</select> or to " IF foundq %] + the new saved search: + <input type="text" name="newqueryname" size="20" maxlength="64"> + </form> + </div> + </div> +[% END %] diff --git a/template/en/default/global/setting-descs.none.tmpl b/template/en/default/global/setting-descs.none.tmpl index f4992aa48..3ca7fe3f3 100644 --- a/template/en/default/global/setting-descs.none.tmpl +++ b/template/en/default/global/setting-descs.none.tmpl @@ -27,6 +27,11 @@ "newest_to_oldest_desc_first" => "Newest to Oldest, but keep Description at the top", "off" => "Off", "oldest_to_newest" => "Oldest to Newest", - "on" => "On" + "on" => "On", + "per_bug_queries" => "Add individual $terms.bugs to saved searches", + "post_bug_submit_action" => "After changing $terms.abug", + "next_bug" => "Show next $terms.bug in my list", + "same_bug" => "Show the updated $terms.bug", + "nothing" => "Do Nothing", } %] diff --git a/template/en/default/global/site-navigation.html.tmpl b/template/en/default/global/site-navigation.html.tmpl index 66c96a137..9ea2203bf 100644 --- a/template/en/default/global/site-navigation.html.tmpl +++ b/template/en/default/global/site-navigation.html.tmpl @@ -62,10 +62,12 @@ [% IF bug %] <link rel="Show" title="Dependency Tree" href="showdependencytree.cgi?id=[% bug.bug_id %]"> - <link rel="Show" title="Dependency Graph" - href="showdependencygraph.cgi?id=[% bug.bug_id %]"> + [% IF Param('webdotbase') %] + <link rel="Show" title="Dependency Graph" + href="showdependencygraph.cgi?id=[% bug.bug_id %]"> + [% END %] - [% IF use_votes %] + [% IF bug.use_votes %] <link rel="Show" title="Votes ([% bug.votes %])" href="votes.cgi?action=show_bug&bug_id=[% bug.bug_id %]"> [% END %] diff --git a/template/en/default/global/tabs.html.tmpl b/template/en/default/global/tabs.html.tmpl new file mode 100644 index 000000000..6f8601b86 --- /dev/null +++ b/template/en/default/global/tabs.html.tmpl @@ -0,0 +1,47 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Gervase Markham <gerv@gerv.net> + # Myk Melez <myk@mozilla.org> + #%] + +[%# INTERFACE: + # tabs: List of hashes. Must have at least one item. Each hash has: + # name: string. Name of the tab. + # link: string. relative URL to the tab's resource on this installation. + # label: string. text displayed in the tab. + # current_tab_name: string. name of the currently selected tab + #%] + +<center> + <table cellspacing="0" cellpadding="10" border="0" width="100%"> + <tr> + <td class="tab spacer"> </td> + + [% FOREACH tab = tabs %] + [% IF tab.name == current_tab_name %] + <td class="tab selected">[% tab.label FILTER html %]</td> + [% ELSE %] + <td class="tab"><a href="[% tab.link FILTER html %]">[% tab.label FILTER html %]</a></td> + [% END %] + [% END %] + + <td class="tab spacer"> </td> + </tr> + </table> +</center> diff --git a/template/en/default/global/useful-links.html.tmpl b/template/en/default/global/useful-links.html.tmpl index 63dfe0b04..b2e598163 100644 --- a/template/en/default/global/useful-links.html.tmpl +++ b/template/en/default/global/useful-links.html.tmpl @@ -25,7 +25,6 @@ [% PROCESS global/variables.none.tmpl %] -<form method="get" action="show_bug.cgi"> <div id="useful-links"> <div id="links-actions"> <div class="label">Actions:</div> @@ -34,8 +33,13 @@ <a href="enter_bug.cgi">New</a> | <a href="query.cgi">Search</a> | - [% terms.bug %] # <input class="txt" name="id" size="6"> - <input class="btn" type="submit" value="Find"> | + <form action="buglist.cgi" method="get" + onsubmit="if (this.quicksearch.value == '') + { alert('Please enter one or more search terms first.'); + return false; } return true;"> + <input class="txt" type="text" name="quicksearch"> + <input class="btn" type="submit" value="Find"> + </form> | <a href="report.cgi">Reports</a> @@ -58,7 +62,13 @@ [% ELSE %] | Logged in as [% END %] - [% user.login FILTER html %] + [% IF sudoer %] + [% sudoer.login FILTER html %] (<b>impersonating + [% user.login FILTER html %]</b> + <a href="relogin.cgi?action=end-sudo">end session</a>) + [% ELSE %] + [% user.login FILTER html %] + [% END %] [% ELSE %] [% IF Param('createemailregexp') %] | <a href="createaccount.cgi">New Account</a> @@ -124,7 +134,10 @@ </div> </div> + [%# Individual bugs addition %] + + [% PROCESS "global/per-bug-queries.html.tmpl" %] + [%# Sections of links to more things users can do on this installation. %] [% Hook.process("end") %] </div> -</form> diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl index 4c17fa376..9200959c2 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -77,7 +77,7 @@ The alias you entered, <em>[% alias FILTER html %]</em>, contains one or more commas or spaces. Aliases cannot contain commas or spaces because those characters are used to separate - aliases from each other in lists. Please choose another alias + aliases from each other in lists. Please choose an alias that does not contain commas and spaces. [% ELSIF error == "alias_in_use" %] @@ -93,7 +93,7 @@ [% title = "Alias Is Numeric" %] You tried to give this [% terms.bug %] the alias <em>[% alias FILTER html %]</em>, but aliases cannot be merely numbers, since they could - then be confused with [% terms.bug %] IDs. Please choose another + then be confused with [% terms.bug %] IDs. Please choose an alias containing at least one letter. [% ELSIF error == "alias_too_long" %] @@ -117,7 +117,7 @@ [% IF reason %] [% IF group %] and [% END %] [% IF reason == "cant_bless" %] - you don't have permissions to put people in or out of any group, + you don't have permissions to add or remove people from a group, [% ELSIF reason == "not_visible" %] there are visibility restrictions on certain user groups, [% END %] @@ -128,12 +128,16 @@ access [% ELSIF action == "add" %] add new + [% ELSIF action == "begin" %] + begin [% ELSIF action == "modify" %] modify [% ELSIF action == "delete" %] delete [% ELSIF action == "edit" %] add, modify or delete + [% ELSIF action == "move" %] + move [% ELSIF action == "run" %] run [% ELSIF action == "schedule" %] @@ -144,6 +148,8 @@ [% IF object == "attachment" %] this attachment + [% ELSIF object == "bugs" %] + [%+ terms.bugs %] [% ELSIF object == "charts" %] the "New Charts" feature [% ELSIF object == "classifications" %] @@ -152,6 +158,8 @@ components [% ELSIF object == "flagtypes" %] flag types + [% ELSIF object == "group_access" %] + group access [% ELSIF object == "groups" %] groups [% ELSIF object == "keywords" %] @@ -172,6 +180,8 @@ a sanity check [% ELSIF object == "settings" %] settings + [% ELSIF object == "sudo_session" %] + an sudo session [% ELSIF object == "timetracking_summaries" %] time-tracking summary reports [% ELSIF object == "user" %] @@ -250,10 +260,6 @@ must reassign those products to another classification before you can delete this one. - [% ELSIF error == "cant_delete_default_classification" %] - Sorry, but you can not delete the default classification, - '[% name FILTER html %]'. - [% ELSIF error == "component_already_exists" %] [% title = "Component Already Exists" %] A component with the name '[% name FILTER html %]' already exists. @@ -272,10 +278,6 @@ You must reassign those [% terms.bugs %] to another component before you can delete this one. - [% ELSIF error == "component_must_have_a_name" %] - [% title = "Blank Component Name Not Allowed" %] - You cannot delete the component name for component '[% name FILTER html %]'. - [% ELSIF error == "component_name_too_long" %] [% title = "Component Name Is Too Long" %] The name of a component is limited to 64 characters. @@ -285,29 +287,10 @@ [% title = "Component Requires Default Assignee" %] You must enter a default assignee for component '[% name FILTER html %]'. - [% ELSIF error == "component_need_valid_initialowner" %] - [% title = "Component Requires A Valid Default Assignee" %] - You must use an existing [% terms.Bugzilla %] account as the default assignee for - component '[% name FILTER html %]'. - - [% ELSIF error == "component_need_valid_initialqacontact" %] - [% title = "Component Requires A Valid Default QA Contact" %] - You must use an existing [% terms.Bugzilla %] account as default QA contact for - component '[% name FILTER html %]'. - - [% ELSIF error == "product_not_specified" %] - [% title = "No Product Specified" %] - No product specified when trying to edit components, milestones or - versions. - - [% ELSIF error == "component_not_specified" %] - [% title = "No Component Specified" %] - No component specified when trying to edit components. - [% ELSIF error == "component_not_valid" %] [% title = "Specified Component Does Not Exist" %] - The component '[% name FILTER html %]' for product - '[% product FILTER html %]' does not exist. + Product [% product FILTER html %] does not have a component + named [% name FILTER html %]. [% ELSIF error == "product_doesnt_exist" %] [% title = "Specified Product Does Not Exist" %] @@ -322,7 +305,7 @@ [% ELSIF error == "dependency_loop_single" %] [% title = "Dependency Loop Detected" %] - You can't make [% terms.abug %] blocked or dependent on itself. + You can't make [% terms.abug %] block itself or depend on itself. [% ELSIF error == "description_required" %] [% title = "Description Required" %] @@ -390,6 +373,15 @@ The value '[% value FILTER html %]' does not exist for the '[% field FILTER html %]' field. + [% ELSIF error == "fieldvalue_is_default" %] + [% title = "Specified Field Value Is Default" %] + '[% value FILTER html %]' is the default value for + the '[% field FILTER html %]' field and cannot be deleted. + [% IF user.groups.tweakparams %] + You have to <a href="editparams.cgi?section=bugfields# + [%- param_name FILTER url_quote %]">change</a> the default value first. + [% END %] + [% ELSIF error == "fieldvalue_name_too_long" %] [% title = "Field Value Is Too Long" %] The value of a field is limited to 60 characters. @@ -422,25 +414,29 @@ [% title = "File Too Large" %] The file you are trying to attach is [% filesize FILTER html %] kilobytes (KB) in size. Non-patch attachments cannot be more than - [% Param('maxattachmentsize') %] KB. <br> + [%+ Param('maxattachmentsize') %] KB. <br> We recommend that you store your attachment elsewhere on the web, and then insert a link to it in a comment, or in the URL field for this [% terms.bug %]. Alternately, if your attachment is an image, you could convert it to a compressible format like JPG or PNG and try again. + [% ELSIF error == "flag_not_multiplicable" %] + You can't ask more than one person at a time for + <em>[% type.name FILTER html %]</em>. + [% ELSIF error == "flag_requestee_unauthorized" %] [% title = "Flag Requestee Not Authorized" %] You asked [% requestee.identity FILTER html %] for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %] - [% bug_id FILTER html -%] - [% IF attach_id %], attachment [% attach_id FILTER html %][% END %], + [%+ bug_id FILTER html -%] + [% IF attachment %], attachment [% attachment.id FILTER html %][% END %], but that [% terms.bug %] has been restricted to users in certain groups, and the user you asked isn't in all the groups to which the [% terms.bug %] has been restricted. - Please choose someone else to ask, or make the [% terms.bug %] accessible to users - on its CC: list and add that user to the list. + Please choose someone else to ask, or make the [% terms.bug %] accessible + to users on its CC: list and add that user to the list. [% ELSIF error == "flag_requestee_unauthorized_attachment" %] [% title = "Flag Requestee Not Authorized" %] @@ -448,11 +444,10 @@ You asked [% requestee.identity FILTER html %] for <code>[% flag_type.name FILTER html %]</code> on [%+ terms.bug %] [%+ bug_id FILTER html %], - attachment [% attach_id FILTER html %], but that attachment is restricted - to users - in the [% Param("insidergroup") FILTER html %] group, and the user - you asked isn't in that group. Please choose someone else to ask, - or ask an administrator to add the user to the group. + attachment [% attachment.id FILTER html %], but that attachment + is restricted to users in the [% Param("insidergroup") FILTER html %] group, + and the user you asked isn't in that group. Please choose someone else + to ask, or ask an administrator to add the user to the group. [% ELSIF error == "flag_type_cc_list_invalid" %] [% title = "Flag Type CC List Invalid" %] @@ -541,6 +536,13 @@ [% END %] a sufficiently empowered user may change that field. + [% ELSIF error == "illegal_change_deps" %] + [% title = "Not allowed" %] + You tried to change the + <strong>[% field_descs.$field FILTER html %]</strong> field + but only a user empowered to edit + both involved [% terms.bugs %] may change that field. + [% ELSIF error == "illegal_changed_in_last_x_days" %] [% title = "Your Search Makes No Sense" %] The <em>Changed in last ___ days</em> field must be a simple number. @@ -661,6 +663,10 @@ The maximum number of rows, '[% maxrows FILTER html %]', must be a positive integer. + [% ELSIF error == "invalid_parameter" %] + [% title = "Invalid Parameter" %] + The new value for [% name FILTER html %] is invalid: [% err FILTER html %]. + [% ELSIF error == "invalid_product_name" %] [% title = "Invalid Product Name" %] The product name '[% product FILTER html %]' is invalid or does not exist. @@ -669,6 +675,24 @@ [% title = "Invalid regular expression" %] The regular expression you entered is invalid. + [% ELSIF error == "invalid_user_group" %] + [% title = "Invalid User Group" %] + [% IF users.size > 1 %] Users [% ELSE %] User [% END %] + '[% users.join(', ') FILTER html %]' + [% IF users.size > 1 %] are [% ELSE %] is [% END %] + not able to edit the + [% IF product %] + '[% product FILTER html %]' + [% END %] + [%+ field_descs.product FILTER html %] + [% IF bug_id %] + for [% terms.bug %] '[% bug_id FILTER html %]'. + [% ELSIF new %] + and may not be included on a new [% terms.bug %]. + [% ELSE %] + for at least one [% terms.bug %] being changed. + [% END %] + [% ELSIF error == "invalid_username" %] [% title = "Invalid Username" %] The name <tt>[% name FILTER html %]</tt> is not a valid username. @@ -706,7 +730,8 @@ [% ELSIF error == "login_required_for_pronoun" %] [% title = "Login Name Required" %] - You must enter a login name when using your login as a pronoun. + You can't use %user% without being logged in, because %user% refers + to your login name, which we don't know. [% ELSIF error == "milestone_already_exists" %] [% title = "Milestone Already Exists" %] @@ -741,7 +766,7 @@ You must determine a target milestone for [% terms.bug %] [%+ bug_id FILTER html %] if you are going to accept it. Part of accepting - [% terms.abug %] is giving an estimate of when it will be fixed. + [%+ terms.abug %] is giving an estimate of when it will be fixed. [% ELSIF error == "milestone_sortkey_invalid" %] [% title = "Invalid Milestone Sortkey" %] @@ -814,10 +839,11 @@ [% title = "Missing Search" %] The search named <em>[% queryname FILTER html %]</em> does not exist. - - [% ELSIF error == "must_be_patch" %] - [% title = "Attachment Must Be Patch" %] - Attachment #[% attach_id FILTER html %] must be a patch. + + [% ELSIF error == "move_bugs_disabled" %] + [% title = BLOCK %][% terms.Bug %] Moving Disabled[% END %] + Sorry, [% terms.bug %] moving has been disabled. If you need + to move [% terms.abug %], please contact [% Param("maintainer") %]. [% ELSIF error == "missing_subcategory" %] [% title = "Missing Subcategory" %] @@ -836,15 +862,6 @@ to add a version to this product. [% END %] - [% ELSIF error == "need_component" %] - [% title = "Component Required" %] - You must specify a component to help determine the new assignee of these - [% terms.bugs %]. - - [% ELSIF error == "need_product" %] - [% title = "Product Required" %] - You must specify a product to help determine the new assignee of these [% terms.bugs %]. - [% ELSIF error == "need_quip" %] [% title = "Quip Required" %] Please enter a quip in the text field. @@ -861,6 +878,10 @@ [% title = BLOCK %]No [% terms.Bugs %] Chosen[% END %] You apparently didn't choose any [% terms.bugs %] to modify. + [% ELSIF error == "no_bug_ids" %] + [% title = BLOCK %]No [% terms.Bugs %] Chosen[% END %] + You didn't choose any [% terms.bugs %] to add to the saved search. + [% ELSIF error == "no_component_change_for_multiple_products" %] [% title = "Action Not Permitted" %] You cannot change the component for a list of [% terms.bugs %] covering more than @@ -955,6 +976,63 @@ Patches cannot be more than [% Param('maxpatchsize') %] KB in size. Try breaking your patch into several pieces. + [% ELSIF error == "prod_votes_per_bug_must_be_nonnegative" %] + [% title = "Maximum Votes Must Be Non-negative" %] + '[% maxvotesperbug FILTER html %]' is an invalid value for the + <em>'Maximum Votes Per [% terms.Bug %]'</em> field, which should + contain a non-negative number. + + [% ELSIF error == "prod_votes_per_user_must_be_nonnegative" %] + [% title = "Votes Per User Must Be Non-negative" %] + '[% votesperuser FILTER html %]' is an invalid value for the + <em>'Votes Per User'</em> field, which should contain a + non-negative number. + + [% ELSIF error == "prod_votes_to_confirm_must_be_nonnegative" %] + [% title = "Votes To Confirm Must Be Non-negative" %] + '[% votestoconfirm FILTER html %]' is an invalid value for the + <em>'Votes To Confirm'</em> field, which should contain a + non-negative number. + + [% ELSIF error == "prod_cant_delete_description" %] + [% title = "Cannot delete product description" %] + Cannot delete the description for product + '[% product FILTER html %]'. + + [% ELSIF error == "prod_cant_delete_name" %] + [% title = "Cannot delete product name" %] + Cannot delete the product name for product '[% product FILTER html %]'. + + [% ELSIF error == "prod_name_already_in_use" %] + [% title = "Product name already in use" %] + The product name '[% product FILTER html %]' is already in use. + + [% ELSIF error == "prod_name_diff_in_case" %] + [% title = "Product name differs only in case" %] + The product name '[% product FILTER html %]' differs from existing + product '[% existing_product FILTER html %]' only in case. + + [% ELSIF error == "prod_must_define_defaultmilestone" %] + [% title = "Must define new default milestone" %] + [% IF classification %] + [% classification_url_part = BLOCK %]&classification= + [%- classification FILTER url_quote %] + [% END %] + [% END %] + You must <a href="editmilestones.cgi?action=add&product= + [%- product FILTER url_quote %] + [%- classification_url_part FILTER none %]"> + create the milestone '[% defaultmilestone FILTER html %]'</a> before + it can be made the default milestone for product '[% product FILTER html %]'. + + [% ELSIF error == "product_access_denied" %] + [% title = "Product Access Denied" %] + You are not allowed to edit properties of product '[% product FILTER html %]'. + + [% ELSIF error == "product_blank_name" %] + [% title = "Blank Product Name Not Allowed" %] + You must enter a name for the new product. + [% ELSIF error == "product_disabled" %] [% title = BLOCK %]Product closed for [% terms.Bugs %] Entry[% END %] Sorry, entering [% terms.bugs %] into the @@ -963,7 +1041,7 @@ [% ELSIF error == "product_edit_denied" %] [% title = "Product Edit Access Denied" %] You are not permitted to edit [% terms.bugs %] in product - [% product FILTER html %]. + [%+ product FILTER html %]. [% ELSIF error == "product_has_bugs" %] [% title = BLOCK %]Product has [% terms.Bugs %][% END %] @@ -971,6 +1049,19 @@ You must reassign those [% terms.bugs %] to another product before you can delete this one. + [% ELSIF error == "product_must_have_description" %] + [% title = "Product needs Description" %] + You must enter a description for product '[% product FILTER html %]'. + + [% ELSIF error == "product_must_have_version" %] + [% title = "Product needs Version" %] + You must enter a version for product '[% product FILTER html %]'. + + [% ELSIF error == "product_not_specified" %] + [% title = "No Product Specified" %] + No product specified when trying to edit components, milestones, versions + or product. + [% ELSIF error == "query_name_missing" %] [% title = "No Search Name Specified" %] You must enter a name for your search. @@ -982,8 +1073,7 @@ [% ELSIF error == "reassign_to_empty" %] [% title = "Illegal Reassignment" %] To reassign [% terms.abug %], you must provide an address for - the new assignee. If you did not intentionally clear out the - "Reassign [% terms.bug %] to" field, [% Param("browserbugmessage") %] + the new assignee. [% ELSIF error == "require_component" %] [% title = "Component Needed" %] @@ -1047,6 +1137,29 @@ [% END %] [% END %] + [% ELSIF error == "sudo_in_progress" %] + [% title = "Session In Progress" %] + A sudo session (impersonating [% target FILTER html %]) is in progress. + End that session (using the link in the footer) before starting a new one. + + [% ELSIF error == "sudo_password_required" %] + [% title = "Password Required" %] + Your [% terms.Bugzilla %] password is required to begin a sudo + session. Please <a href="relogin.cgi?action=prepare-sudo&target_login= + [%- target_login FILTER html %]&reason= + [%- reason FILTER html %]">go back</a> and enter your password. + + [% ELSIF error == "sudo_preparation_required" %] + [% title = "Preparation Required" %] + You may not start a sudo session directly. Please + <a href="relogin.cgi?action=prepare-sudo&target_login= + [%- target_login FILTER html %]&reason= + [%- reason FILTER html %]">start your session normally</a>. + + [% ELSIF error == "sudo_protected" %] + [% title = "User Protected" %] + The user [% login FILTER html %] may not be impersonated by sudoers. + [% ELSIF error == "too_many_votes_for_bug" %] [% title = "Illegal Vote" %] You may only use at most [% max FILTER html %] votes for a single @@ -1117,6 +1230,11 @@ [% title = "Login Name Required" %] You must enter a login name for the new user. + [% ELSIF error == "user_match_failed" %] + [% title = "Match Failed" %] + <tt>[% name FILTER html %]</tt> does not exist or you are not allowed + to see that user. + [% ELSIF error == "votes_must_be_nonnegative" %] [% title = "Votes Must Be Non-negative" %] Only use non-negative numbers for your [% terms.bug %] votes. diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl index eb1cbbd58..a19334c30 100644 --- a/template/en/default/index.html.tmpl +++ b/template/en/default/index.html.tmpl @@ -28,11 +28,12 @@ [% PROCESS global/variables.none.tmpl %] -[% title = BLOCK %] -[% terms.Bugzilla %] Main Page -[% END %] -[% style_urls = [ "skins/standard/index.css" ] %] -[% PROCESS global/header.html.tmpl %] + +[% PROCESS global/header.html.tmpl + title = "$terms.Bugzilla Main Page" + style_urls = [ 'skins/standard/index.css' ] + onload = 'document.forms[\'f\'].quicksearch.focus();' +%] <script type="text/javascript"> @@ -84,25 +85,19 @@ function addSidebar() { </ul> - <form id="show-bug" name="f" action="show_bug.cgi" method="get" - onsubmit="QuickSearch(f.id.value); return false;"> + <form id="show-bug" name="f" action="buglist.cgi" method="get" + onsubmit="if (this.quicksearch.value == '') + { alert('Please enter one or more search terms first.'); + return false; } return true;"> <div> <p>Enter [% terms.abug %] # or some search terms:</p> - <input id="text" type="text" name="id"> - <input id="show" type="submit" value="Show"> - <a href="quicksearch.html">[Help]</a> + <input id="quicksearch" type="text" name="quicksearch"> + <input id="find" type="submit" value="Find"> + <a href="page.cgi?id=quicksearch.html">[Help]</a> </div> </form> <div class="outro"></div> </div> -<script type="text/javascript" src="localconfig.js"></script> -<script type="text/javascript" src="quicksearch.js"></script> -<script type="text/javascript"> -<!-- -document.forms['f'].id.focus(); -//--> -</script> - [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/list/CVS/Entries b/template/en/default/list/CVS/Entries index f9252136c..335caf9f0 100644 --- a/template/en/default/list/CVS/Entries +++ b/template/en/default/list/CVS/Entries @@ -1,13 +1,13 @@ -/change-columns.html.tmpl/1.12/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_20_2 -/edit-multiple.html.tmpl/1.26.2.4/Fri Mar 3 00:08:25 2006//TBUGZILLA-2_20_2 -/list-simple.html.tmpl/1.9/Thu Oct 21 19:13:28 2004//TBUGZILLA-2_20_2 -/list.atom.tmpl/1.1.2.2/Tue Feb 21 00:12:03 2006//TBUGZILLA-2_20_2 -/list.csv.tmpl/1.4.4.1/Wed Jul 20 02:23:34 2005//TBUGZILLA-2_20_2 -/list.html.tmpl/1.37.2.2/Tue Feb 21 00:12:03 2006//TBUGZILLA-2_20_2 -/list.ics.tmpl/1.4/Tue Mar 15 17:16:25 2005//TBUGZILLA-2_20_2 -/list.js.tmpl/1.2/Sat Nov 8 18:04:36 2003//TBUGZILLA-2_20_2 -/list.rdf.tmpl/1.4/Fri Nov 21 23:15:40 2003//TBUGZILLA-2_20_2 -/quips.html.tmpl/1.16/Mon Jun 20 19:42:11 2005//TBUGZILLA-2_20_2 -/server-push.html.tmpl/1.5/Thu Mar 18 21:51:19 2004//TBUGZILLA-2_20_2 -/table.html.tmpl/1.27.2.1/Tue Dec 20 22:02:05 2005//TBUGZILLA-2_20_2 +/change-columns.html.tmpl/1.12/Sun Jan 18 18:39:28 2004//TBUGZILLA-2_22 +/edit-multiple.html.tmpl/1.31.2.2/Fri Mar 3 00:07:50 2006//TBUGZILLA-2_22 +/list-simple.html.tmpl/1.9/Thu Oct 21 19:13:28 2004//TBUGZILLA-2_22 +/list.atom.tmpl/1.1/Tue Feb 21 00:06:05 2006//TBUGZILLA-2_22 +/list.csv.tmpl/1.5/Wed Jul 20 02:14:26 2005//TBUGZILLA-2_22 +/list.html.tmpl/1.46/Tue Feb 21 00:06:05 2006//TBUGZILLA-2_22 +/list.ics.tmpl/1.4/Tue Mar 15 17:16:25 2005//TBUGZILLA-2_22 +/list.js.tmpl/1.2/Sat Nov 8 18:04:36 2003//TBUGZILLA-2_22 +/list.rdf.tmpl/1.5/Thu Aug 4 11:51:24 2005//TBUGZILLA-2_22 +/quips.html.tmpl/1.16/Mon Jun 20 19:42:11 2005//TBUGZILLA-2_22 +/server-push.html.tmpl/1.6/Wed Oct 26 16:52:28 2005//TBUGZILLA-2_22 +/table.html.tmpl/1.28/Tue Dec 20 21:58:33 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/list/CVS/Tag b/template/en/default/list/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/list/CVS/Tag +++ b/template/en/default/list/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/list/edit-multiple.html.tmpl b/template/en/default/list/edit-multiple.html.tmpl index b9dadbd7a..dde98d546 100644 --- a/template/en/default/list/edit-multiple.html.tmpl +++ b/template/en/default/list/edit-multiple.html.tmpl @@ -55,26 +55,24 @@ <th><label for="product">Product:</label></th> <td> [% PROCESS selectmenu menuname = "product" - menuitems = products %] + menuitems = products + property = "name" %] </td> <th><label for="version">Version:</label></th> <td> [% PROCESS selectmenu menuname = "version" - menuitems = versions %] + menuitems = versions + property = "" %] </td> </tr> <tr> - <th> - <label for="rep_platform"> - <a href="page.cgi?id=fields.html#rep_platform">Platform</a>: - </label> - </th> + <th><label for="component">Component:</label></th> <td> - [% PROCESS selectmenu menuname = "rep_platform" - menuitems = platforms %] + [% PROCESS selectmenu menuname = "component" + menuitems = components %] </td> <th> @@ -90,10 +88,14 @@ </tr> <tr> - <th><label for="component">Component:</label></th> + <th> + <label for="rep_platform"> + <a href="page.cgi?id=fields.html#rep_platform">Platform</a>: + </label> + </th> <td> - [% PROCESS selectmenu menuname = "component" - menuitems = components %] + [% PROCESS selectmenu menuname = "rep_platform" + menuitems = platforms %] </td> <th> @@ -108,15 +110,25 @@ </tr> - [% IF Param("usetargetmilestone") %] - <tr> + <tr> + <th> + <label for="op_sys"> + <a href="page.cgi?id=fields.html#op_sys">OS</a>: + </label> + </th> + <td [% " colspan=\"3\"" IF !Param("usetargetmilestone") %]> + [% PROCESS selectmenu menuname = "op_sys" + menuitems = op_sys %] + </td> + + [% IF Param("usetargetmilestone") %] <th><label for="target_milestone">Target Milestone:</label></th> - <td colspan="3"> + <td> [% PROCESS selectmenu menuname = "target_milestone" menuitems = targetmilestones %] </td> - </tr> - [% END %] + [% END %] + </tr> [% IF UserInGroup(Param("timetrackinggroup")) %] <tr> @@ -182,6 +194,18 @@ </tr> [% END %] + [% IF Param('usestatuswhiteboard') %] + <tr> + <td align="right"> + <b>Status Whiteboard:</b> + </td> + <td colspan="7"> + <input name="status_whiteboard" + value="[% dontchange FILTER html %]" size="60"> + </td> + </tr> + [% END %] + </table> <b><label for="comment">Additional Comments:</label></b><br> @@ -336,6 +360,7 @@ [% dontchange FILTER html %] </option> [% FOREACH menuitem = menuitems %] + [% IF property %][% menuitem = menuitem.$property %][% END %] <option value="[% menuitem FILTER html %]">[% menuitem FILTER html %]</option> [% END %] </select> diff --git a/template/en/default/list/list.atom.tmpl b/template/en/default/list/list.atom.tmpl index 5e1570811..367f2858f 100644 --- a/template/en/default/list/list.atom.tmpl +++ b/template/en/default/list/list.atom.tmpl @@ -29,7 +29,7 @@ [% DEFAULT title = "$terms.Bugzilla $terms.Bugs" %] -<?xml version="1.0"?> +<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>[% title FILTER xml %]</title> <link rel="alternate" type="text/html" diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl index c89957a11..5ac715a0c 100644 --- a/template/en/default/list/list.html.tmpl +++ b/template/en/default/list/list.html.tmpl @@ -32,8 +32,8 @@ [% PROCESS global/variables.none.tmpl %] [% title = "$terms.Bug List" %] -[% IF searchname %] - [% title = title _ ": " _ searchname %] +[% IF searchname || defaultsavename %] + [% title = title _ ": " _ (searchname OR defaultsavename) FILTER html %] [% END %] [% style_urls = [ "skins/standard/buglist.css" ] %] @@ -48,7 +48,7 @@ [% PROCESS global/header.html.tmpl title = title style = style - atomlink = "buglist.cgi?$urlquerypart&ctype=atom" + atomlink = "buglist.cgi?$urlquerypart&title=$title&ctype=atom" %] <div align="center"> @@ -59,6 +59,11 @@ [% END %] [% IF debug %] + <p> + [% FOREACH debugline = debugdata %] + [% debugline FILTER html %]<br> + [% END %] + </p> <p>[% query FILTER html %]</p> [% END %] @@ -140,6 +145,14 @@ <input type="hidden" name="format" value="multiple"> <input type="submit" value="Long Format"> </form> + <form method="post" action="show_bug.cgi"> + <input type="hidden" name="ctype" value="xml"> + [% FOREACH id = buglist %] + <input type="hidden" name="id" value="[% id FILTER html %]"> + [% END %] + <input type="hidden" name="excludefield" value="attachmentdata"> + <input type="submit" value="XML"> + </form> [% IF UserInGroup(Param('timetrackinggroup')) %] <form method="post" action="summarize_time.cgi"> @@ -155,11 +168,13 @@ <a href="buglist.cgi? [% urlquerypart FILTER html %]&ctype=csv">CSV</a> | <a href="buglist.cgi? - [% urlquerypart FILTER html %]&ctype=atom">Feed</a> | + [% urlquerypart FILTER html %]&title= + [%- title FILTER html %]&ctype=atom">Feed</a> | <a href="buglist.cgi? [% urlquerypart FILTER html %]&ctype=ics">iCalendar</a> | <a href="colchange.cgi? - [% urlquerypart FILTER html %]">Change Columns</a> | + [% urlquerypart FILTER html %]&query_based_on= + [% defaultsavename OR searchname FILTER url_quote %]">Change Columns</a> | [% IF bugs.size > 1 && caneditbugs && !dotweak %] <a href="buglist.cgi?[% urlquerypart FILTER html %] @@ -200,7 +215,7 @@ <form method="get" action="buglist.cgi"> <input type="submit" value="Remember search"> as <input type="hidden" name="newquery" - value="[% urlquerypart FILTER html %]"> + value="[% urlquerypart FILTER html %][% "&order=$qorder" FILTER html IF order %]"> <input type="hidden" name="cmdtype" value="doit"> <input type="hidden" name="remtype" value="asnamed"> <input type="text" name="newqueryname" size="20" diff --git a/template/en/default/list/list.rdf.tmpl b/template/en/default/list/list.rdf.tmpl index 39a2350f1..06376aca9 100644 --- a/template/en/default/list/list.rdf.tmpl +++ b/template/en/default/list/list.rdf.tmpl @@ -19,7 +19,7 @@ # Contributor(s): Myk Melez <myk@mozilla.org> #%] -<?xml version="1.0"?> +<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?> <!-- [% template_version %] --> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" diff --git a/template/en/default/list/server-push.html.tmpl b/template/en/default/list/server-push.html.tmpl index 4fb88e9b4..be7a63c56 100644 --- a/template/en/default/list/server-push.html.tmpl +++ b/template/en/default/list/server-push.html.tmpl @@ -34,6 +34,11 @@ <h1 style="margin-top: 20%; text-align: center;">Please stand by ...</h1> [% IF debug %] + <p> + [% FOREACH debugline = debugdata %] + <code>[% debugline FILTER html %]</code><br> + [% END %] + </p> <p> <code>[% query FILTER html %]</code> </p> diff --git a/template/en/default/pages/CVS/Entries b/template/en/default/pages/CVS/Entries index 42bd89732..f5110a3c7 100644 --- a/template/en/default/pages/CVS/Entries +++ b/template/en/default/pages/CVS/Entries @@ -1,6 +1,9 @@ -/bug-writing.html.tmpl/1.3.4.1/Thu Sep 15 10:17:06 2005//TBUGZILLA-2_20_2 -/fields.html.tmpl/1.5.4.1/Thu Sep 1 22:10:26 2005//TBUGZILLA-2_20_2 -/linked.html.tmpl/1.8/Wed Feb 9 17:30:20 2005//TBUGZILLA-2_20_2 -/linkify.html.tmpl/1.5.4.2/Fri Mar 3 00:08:25 2006//TBUGZILLA-2_20_2 -/voting.html.tmpl/1.2/Thu Mar 18 16:21:57 2004//TBUGZILLA-2_20_2 +/bug-writing.html.tmpl/1.4/Thu Sep 15 10:15:22 2005//TBUGZILLA-2_22 +/fields.html.tmpl/1.6/Thu Sep 1 22:07:48 2005//TBUGZILLA-2_22 +/linked.html.tmpl/1.8/Wed Feb 9 17:30:20 2005//TBUGZILLA-2_22 +/linkify.html.tmpl/1.5.6.2/Fri Mar 3 00:07:58 2006//TBUGZILLA-2_22 +/quicksearch.html.tmpl/1.1/Sun Aug 21 18:16:43 2005//TBUGZILLA-2_22 +/quicksearchhack.html.tmpl/1.2/Fri Aug 26 23:11:33 2005//TBUGZILLA-2_22 +/sudo.html.tmpl/1.1/Fri Nov 4 16:11:46 2005//TBUGZILLA-2_22 +/voting.html.tmpl/1.2/Thu Mar 18 16:21:57 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/pages/CVS/Tag b/template/en/default/pages/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/pages/CVS/Tag +++ b/template/en/default/pages/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/pages/quicksearch.html.tmpl b/template/en/default/pages/quicksearch.html.tmpl new file mode 100644 index 000000000..73a0172ee --- /dev/null +++ b/template/en/default/pages/quicksearch.html.tmpl @@ -0,0 +1,190 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): N.N. + # Marc Schumann <wurblzap@gmail.com> + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% INCLUDE global/header.html.tmpl + title = "$terms.Bugzilla QuickSearch", + style = 'ul {margin-bottom: 2ex} + ul li {margin-top: 2ex} + ul li ul li {margin-top: 0}' + onload = 'document.forms[\'f\'].quicksearch.focus()' + %] + +<p style="font-size: 80%"> + If you are already familiar with the original + <a href="query.cgi">[% terms.Bugzilla %] Search Form</a>, + you may prefer <a href="page.cgi?id=quicksearchhack.html">this form</a>. +</p> + +<p> + Type in one or more words (or word fragments) to search for: +</p> + +<form name="f" action="buglist.cgi" method="get" + onsubmit="if (this.quicksearch.value == '') + { alert('Please enter one or more search terms first.'); + return false; } return true;"> + <input type="text" size="40" name="quicksearch"> + <input type="submit" value="Find"> +</form> + +<h2>Getting Started</h2> + +<ul> + <li> + This is <strong>case-insensitive</strong> search:<br /> + <ul> + <li><tt>table</tt>, <tt>Table</tt> and <tt>TABLE</tt> are all the same.</li> + </ul> + </li> + <li> + This is <strong>all words as substrings</strong> + search.<br /> + Therefore you should <strong>use stems</strong> to get better results: + <ul> + <li> + Use <tt>localiz</tt> instead of <tt>localize</tt> or + <tt>localization</tt>. + </li> + <li> + Use <tt>bookmark</tt> instead of <tt>bookmarks</tt> or + <tt>bookmarking</tt>. + </li> + </ul> + </li> +</ul> + +<h2><a name="features">Features</a></h2> + +<ul> + <li> + Boolean operations: “<tt>-foo</tt>” (NOT), + “<tt>foo bar</tt>” (AND), + “<tt>foo|bar</tt>” (OR). + <ul> + <li> + <strong>NOT</strong>:<br /> + Use <tt><b>-</b><i>foo</i></tt> to exclude [% terms.bugs %] + with <tt><i>foo</i></tt> in the summary. + </li> + <li> + <strong>AND</strong>:<br /> + Space-separated words are treated as a conjunction. + </li> + <li> + <strong>OR</strong>:<br /> + Within a word, "|"-separated parts denote alternatives. + </li> + <li> + Besides "|", a comma can be used to separate alternatives. + </li> + <li> + OR has higher precedence than AND; AND is the top level operation. + </li> + </ul> + <i>Example:</i> + <tt>url,location bar,field -focus</tt> means + (<tt>url</tt> OR <tt>location</tt>) AND (<tt>bar</tt> OR <tt>field</tt>) + AND (NOT <tt>focus</tt>) + </li> + <li> + Use <tt>+foo</tt> to search for [% terms.bugs %] where the + <strong>summary</strong> contains <tt>foo</tt> as a + <strong>substring</strong>.<br/> + Use <tt>#foo</tt> to search for [% terms.bugs %] where the + <strong>summary</strong> contains the <strong>word</strong> <tt>foo</tt>. + <ul> + <li> + <tt>+brow</tt> does not find all [% terms.bugs %] in the + <tt>Browser</tt> product. + </li> + <li> + <tt>#title</tt> does not find [% terms.bugs %] with <tt>titlebar</tt> + or <tt>titled</tt>. + </li> + </ul> + Phrases with special chars (space, comma, +, -, #, …) can be + <strong>quoted</strong>: + <ul> + <li> + <tt>"lock icon"</tt> + </li> + </ul> + </li> + <li> + <strong>Open vs. Resolved [% terms.Bugs %]</strong>:<br /> + By default, only open (i.e. unresolved) [% terms.bugs %] are shown. + Use <tt>+DUP</tt> as first word in your search to include duplicate + [%+ terms.bugs %] in your search, + <tt>FIXED</tt> to search for fixed [%+ terms.bugs %] only, + or <tt>ALL</tt> to search all [% terms.bugs %], + regardless of status or resolution. + Searching for duplicates is recommended if you can't find an open + [%+ terms.bug %] directly. + <ul> + <li> + <tt>+DUP,FIXED table border</tt> + </li> + <li> + <tt>ALL mouse wheel</tt> + </li> + </ul> + </li> + <li> + <strong>Focus the Search with Products & + Components</strong>:<br /> + To search for [% terms.bugs %] in product "Foo Bar" only, add + <tt>:foo</tt> or <tt>:bar</tt> or both to your search. + You can do this with any substring of a + <a href="describecomponents.cgi">product or component</a> to focus the + search. + </li> +</ul> + +<h2>More Tips</h2> + +<ul> + <li> + You can also use this tool to <strong>lookup</strong> a [% terms.bug %] by + its number:<br /> + <ul> + <li><tt>12345</tt></li> + </ul> + </li> + <li> + A comma-separated list of [% terms.bug %] numbers gives you a list of these + [%+ terms.bugs %]:<br /> + <ul> + <li><tt>12345,23456,34567</tt></li> + </ul> + </li> +</ul> + +<p> + By default, the following fields are searched: Summary, Keywords, Product, + Component, Status Whiteboard. If a word looks like a part of a URL, that field + is included in the search, too. +</p> +<hr> + +<p> + Use the powerful <a href="query.cgi">[% terms.Bugzilla %] Search Form</a> + for advanced queries. +</p> + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/pages/quicksearchhack.html.tmpl b/template/en/default/pages/quicksearchhack.html.tmpl new file mode 100644 index 000000000..22913ec42 --- /dev/null +++ b/template/en/default/pages/quicksearchhack.html.tmpl @@ -0,0 +1,377 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # Contributor(s): N.N. + # Marc Schumann <wurblzap@gmail.com> + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% INCLUDE global/header.html.tmpl + title = "$terms.Bugzilla QuickSearch (for Hackers)", + style = 'th {text-align: left}' + onload = 'document.forms[\'f\'].quicksearch.focus()' + %] + +<p> + Type in one or more words (or word fragments) to search for: +</p> + +<form name="f" action="buglist.cgi" method="get" + onsubmit="if (this.quicksearch.value == '') + { alert('Please enter one or more search terms first.'); + return false; } return true;"> + <input type="text" size="40" name="quicksearch"> + <input type="submit" value="Find"> + <input type="submit" name="load" value="Load Search Form"> +</form> + +<p> + This is a case-insensitive “all words as substrings” search; + words are separated by spaces. + By default, the following fields are relevant: Summary, Keywords, + Product, Component, Status Whiteboard. + If a word looks like a part of a URL, that field is included in the search, + too. +</p> +<p> + The generic format for a “word” is + <tt>field1,…,fieldN:value1,…,valueM</tt>. + A [% terms.bug %] qualifies if at least one of the values occurs as a + substring in at least one of the fields. + For example, <tt>assignee,reporter,qa:ibm,sun</tt> will give you + [%+ terms.bugs %] where the assignee, reporter, or qa contact has a login + that contains <tt>ibm</tt> or <tt>sun</tt>. + If only <tt>value1,…,valueM</tt> is given, the prefix (roughly) defaults to + <tt>summary,keywords,product,component,statuswhiteboard:</tt> as noted above. + You can use <tt>-<i>word</i></tt> to express the logical negation of + <tt><i>word</i></tt>. +</p> +<p> + Here is a complete listing of available fields (the Shortcut column is just + for access speed): +</p> + +<table border="1"> +<thead> +<tr> + <th>Searched by default</th> + <th>Shortcut</th> + <th>Field Name</th> + <th>Aliases</th> + <th>Description</th> +</tr> +</thead> + +<!-- Status, Resolution, Platform, OS, Priority, Severity --> + +<tr> + <td> </td> + <td rowspan="2"> + <tt>UNCO,NEW,…,CLOS,<br>FIX,DUP,…<i>(as first word)</i></tt> + </td> + <td><tt>status</tt></td> + <td> </td> + <td> + <a href="page.cgi?id=fields.html#status">Status</a> + <i>(“bug_status”)</i> + </td> +</tr> +<tr> + <td> </td> + <td><tt>resolution</tt></td> + <td> </td> + <td><a href="page.cgi?id=fields.html#resolution">Resolution</a></td> +</tr> +<tr> + <td> </td> + <td><i>as-is</i></td> + <td><tt>platform</tt></td> + <td> </td> + <td> + <a href="page.cgi?id=fields.html#rep_platform">Platform</a> + <i>(“rep_platform”)</i> + </td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>os</tt></td> + <td><tt>opsys</tt></td> + <td> + <a href="page.cgi?id=fields.html#op_sys">OS</a> + <i>(“op_sys”)</i> + </td> +</tr> +<tr> + <td> </td> + <td><tt>p1,p2</tt> <i>or</i> <tt>p1-2</tt></td> + <td><tt>priority</tt></td> + <td><tt>pri</tt></td> + <td><a href="page.cgi?id=fields.html#priority">Priority</a></td> +</tr> +<tr> + <td> </td> + <td><tt>blo,cri,…,enh</tt></td> + <td><tt>severity</tt></td> + <td><tt>sev</tt></td> + <td> + <a href="page.cgi?id=fields.html#bug_severity">Severity</a> + <i>(“bug_severity”)</i> + </td> +</tr> + +<!-- People: AssignedTo, Reporter, QA Contact, CC, Added comment --> +<!-- Added comment is missing!!!! --> + +<tr> + <td> </td> + <td><b>@</b><i>assignee</i></td> + <td><tt>assignedto</tt></td> + <td><tt>assignee</tt></td> + <td> + <a href="page.cgi?id=fields.html#assigned_to">Assignee</a> + <i>(“assigned_to”)</i> + </td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>reporter</tt></td> + <td><tt>rep</tt></td> + <td>Reporter (login)</td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>qa</tt></td> + <td><tt>qacontact</tt></td> + <td>QA Contact (login) <i>(“qa_contact”)</i></td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>cc</tt></td> + <td> </td> + <td>CC (login)</td> +</tr> + +<!-- Product, Version, Component, Target Milestone --> + +<tr> + <td><i>yes</i></td> + <td rowspan="2"><b>:</b><i>area</i></td> + <td><tt>product</tt></td> + <td><tt>prod</tt></td> + <td>Product (enum)</td> +</tr> +<tr> + <td><i>yes</i></td> + <td><tt>component</tt></td> + <td><tt>comp</tt></td> + <td><a href="describecomponents.cgi">Component</a></td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>version</tt></td> + <td><tt>ver</tt></td> + <td>Version (enum)</td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>milestone</tt></td> + <td><tt>target, targetmilestone</tt></td> + <td>Target Milestone <i>(“target_milestone”)</i></td> +</tr> + +<!-- Summary, Description, URL, Status whiteboard, Keywords --> + +<tr> + <td><i>yes</i></td> + <td> </td> + <td><tt>summary</tt></td> + <td><tt>shortdesc</tt></td> + <td> + [% terms.Bug %] Summary (short text) + <i>(“short_desc”)</i> + </td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>description</tt></td> + <td><tt>desc, longdesc<!--, comment--></tt></td> + <!-- reserve "comment" for "added comment" login search?! --> + <td>[% terms.Bug %] Description / Comments (long text)</td> +</tr> +<tr> + <td><i>depends</i></td> + <td> </td> + <td><tt>url</tt></td> + <td> </td> + <td>URL <i>(“bug_file_loc”)</i></td> +</tr> +<tr> + <td><i>yes</i></td> + <td> </td> + <td><tt>statuswhiteboard</tt></td> + <td><tt>sw, whiteboard</tt></td> + <td>Status Whiteboard <i>(“status_whiteboard”)</i></td> +</tr> +<tr> + <td><i>yes</i></td> + <td><b>!</b><i>keyword</i></td> + <td><tt>keywords</tt></td> + <td><tt>kw</tt></td> + <td><a href="describekeywords.cgi">Keywords</a></td> +</tr> + +<!-- Attachments --> + +<tr> + <td> </td> + <td> </td> + <td><tt>attachmentdesc</tt></td> + <td><tt>attachdesc</tt></td> + <td> + Attachment Description + <i>(“attachments.description”)</i> + </td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>attachmentdata</tt></td> + <td><tt>attachdata</tt></td> + <td>Attachment Data <i>(“attach_data.thedata”)</i></td> +</tr> +<tr> + <td> </td> + <td> </td> + <td><tt>attachmentmimetype</tt></td> + <td><tt>attachmimetype</tt></td> + <td>Attachment mime-type <i>(“attachments.mimetype”)</i></td> +</tr> + +</table> + +<p> + Examples for some useful abbreviations: +</p> +<table border="1"> +<thead> +<tr> + <th>Syntax</th> + <th>Semantics and Examples</th> +</tr> +</thead> + +<!-- +<tr> + <td><i>STAT</i> <i>(as first word)</i></td> + <td><b>status,resolution:</b> <i>STAT</i></td> +</tr> +<tr> + <td></td> + <td></td> +</tr> +<tr> + <td><tt>ALL</tt> <i>(as first word)</i></td> + <td><i>include all resolved [% terms.bugs %] in your search</i></td> +</tr> +<tr> + <td><tt>+DUP,FIXED</tt> <i>(as first word)</i></td> + <td><i>include DUPLICATE and FIXED [% terms.bugs %] in your search</i></td> +</tr> +--> + +<tr> + <td><b>:</b><i>area</i></td> + <td><b>product,component:</b><i>area</i></td> +</tr> +<!-- +<tr> + <td><tt>:browser</tt></td> + <td><i>[% terms.bugs %] in the Browser product</i></td> +</tr> + <td><tt>:mail</tt></td> + <td><i>[% terms.bugs %] in the MailNews product</td> +</tr> +<tr> + <td><tt>:xbl</tt></td> + <td><i>[% terms.bugs %] in the XBL component</i></td> +</tr> + --> +<tr> + <td><i>sev</i></td> + <td><b>severity:</b><i>sev</i></td> +</tr> +<tr> + <td><tt>blo,cri,maj</tt></td> + <td><i>severe [% terms.bugs %]</i></td> +</tr> +<tr> + <td><tt>enh</tt></td> + <td><i>enhancement requests</i></td> +</tr> +<tr> + <td><b>p</b><i>level</i></td> + <td><b>priority:</b><i>level</i></td> +</tr> +<tr> + <td><tt>p1</tt></td> + <td><i>very high-priority [% terms.bugs %]</i></td> +</tr> +<tr> + <td><tt>p1-2</tt></td> + <td><i>high-priority [% terms.bugs %]</i></td> +</tr> +<tr> + <td><b>@</b><i>assignee</i></td> + <td><b>assignedto:</b><i>assignee</i></td> +</tr> +<!-- +<tr> + <td><tt>@nobody</tt></td> + <td><i>assigneeless [% terms.bugs %]</i></td> +</tr> +<tr> + <td><tt>@mozilla.org</tt></td> + <td><i>[% terms.bugs %] assigned to mozilla.org members</i></td> +</tr> + --> +<tr> + <td><b>!</b><i>keyword</i></td> + <td><b>keywords:</b><i>keyword</i></td> +</tr> +<!-- +<tr> + <td><tt>!crash</tt></td> + <td><i>crasher [% terms.bugs %]</i></td> +</tr> +<tr> + <td><tt>!helpwanted</tt></td> + <td><i>[% terms.bugs %] waiting for your help</i></td> +</tr> + --> +</table> + +<p> + More information can be found in the + <a href="page.cgi?id=quicksearch.html#features">“Features”</a> + section on the <a href="page.cgi?id=quicksearch.html">introductory page</a>. +</p> + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/pages/sudo.html.tmpl b/template/en/default/pages/sudo.html.tmpl new file mode 100644 index 000000000..ca57a8166 --- /dev/null +++ b/template/en/default/pages/sudo.html.tmpl @@ -0,0 +1,69 @@ +[%# 1.0@bugzilla.org %] +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 2005 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): A. Karl Kornel <karl@kornel.name> + #%] + +[% PROCESS global/variables.none.tmpl %] +[% INCLUDE global/header.html.tmpl title = "sudo: User Impersonation" %] + +<p> + [%+ terms.Bugzilla %] includes the ability to have one user impersonate +another, in something called a <i>sudo session</i>, so long as the person +doing the impersonating has the appropriate privileges. +</p> + +<p> + While a session is in progress, [% terms.Bugzilla %] will act as if the + impersonated user is doing everything. This is especially useful for testing, + and for doing critical work when the impersonated user is unavailable. The + impersonated user will receive an email from [% terms.Bugzilla %] when the + session begins; they will not be told anything else. +</p> + +<p> + To use this feature, you must be a member of the appropriate group. The group + includes all administrators by default. Other users, and members of other + groups, can be given access to this feature on a case-by-case basis. To + request access, contact the maintainer of this installation: + <a href="mailto:[% Param("maintainer") %]"> + [%- Param("maintainer") %]</a>. +</p> + +<p> + If you would like to be protected from impersonation, you should contact the + maintainer of this installation to see if that is possible. People with + access to this feature are protected automatically. +</p> + +<p id="message"> + [% IF user.groups.bz_sudoers %] + You are a member of the <b>bz_sudoers</b> group. You may use this + feature to impersonate others. + [% ELSE %] + You are not a member of an appropriate group. You may not use this + feature. + [% END %] + [% IF user.groups.bz_sudo_protect %] + <br> + You are a member of the <b>bz_sudo_protect</b> group. Other people will + not be able to use this feature to impersonate you. + [% END %] +</p> + +[% INCLUDE global/footer.html.tmpl %] diff --git a/template/en/default/reports/CVS/Entries b/template/en/default/reports/CVS/Entries index b32730dda..b4fbb50fa 100644 --- a/template/en/default/reports/CVS/Entries +++ b/template/en/default/reports/CVS/Entries @@ -1,23 +1,23 @@ -/chart.csv.tmpl/1.1.10.1/Wed Jul 20 02:23:35 2005//TBUGZILLA-2_20_2 -/chart.html.tmpl/1.2/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20_2 -/chart.png.tmpl/1.3/Sat Jan 24 21:40:31 2004//TBUGZILLA-2_20_2 -/components.html.tmpl/1.9/Mon Jun 20 19:16:33 2005//TBUGZILLA-2_20_2 -/create-chart.html.tmpl/1.11/Fri Feb 25 15:27:26 2005//TBUGZILLA-2_20_2 -/duplicates-simple.html.tmpl/1.4/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20_2 -/duplicates-table.html.tmpl/1.11/Tue Mar 16 23:53:01 2004//TBUGZILLA-2_20_2 -/duplicates.html.tmpl/1.14/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20_2 -/duplicates.rdf.tmpl/1.1/Tue Nov 5 01:54:15 2002//TBUGZILLA-2_20_2 -/edit-series.html.tmpl/1.5/Thu Feb 12 22:32:57 2004//TBUGZILLA-2_20_2 -/keywords.html.tmpl/1.6/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20_2 -/menu.html.tmpl/1.6/Tue Jul 6 01:12:29 2004//TBUGZILLA-2_20_2 -/report-bar.png.tmpl/1.4.10.1/Wed Jul 20 12:48:23 2005//TBUGZILLA-2_20_2 -/report-line.png.tmpl/1.5.10.1/Wed Jul 20 12:48:23 2005//TBUGZILLA-2_20_2 -/report-pie.png.tmpl/1.3.12.1/Wed Jul 20 12:48:23 2005//TBUGZILLA-2_20_2 -/report-simple.html.tmpl/1.1/Mon Mar 14 16:24:03 2005//TBUGZILLA-2_20_2 -/report-table.csv.tmpl/1.6.2.2/Thu Nov 17 09:16:16 2005//TBUGZILLA-2_20_2 -/report-table.html.tmpl/1.11/Tue Jun 14 22:43:12 2005//TBUGZILLA-2_20_2 -/report.csv.tmpl/1.2/Mon Jan 6 07:54:22 2003//TBUGZILLA-2_20_2 -/report.html.tmpl/1.10/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_20_2 -/series-common.html.tmpl/1.3/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_20_2 -/series.html.tmpl/1.6/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_20_2 +/chart.csv.tmpl/1.2/Wed Jul 20 02:14:34 2005//TBUGZILLA-2_22 +/chart.html.tmpl/1.2/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_22 +/chart.png.tmpl/1.4/Thu Dec 29 23:56:32 2005//TBUGZILLA-2_22 +/components.html.tmpl/1.9/Mon Jun 20 19:16:33 2005//TBUGZILLA-2_22 +/create-chart.html.tmpl/1.11/Fri Feb 25 15:27:26 2005//TBUGZILLA-2_22 +/duplicates-simple.html.tmpl/1.4/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_22 +/duplicates-table.html.tmpl/1.12/Mon Jan 9 21:54:17 2006//TBUGZILLA-2_22 +/duplicates.html.tmpl/1.15/Fri Sep 2 21:12:09 2005//TBUGZILLA-2_22 +/duplicates.rdf.tmpl/1.2/Thu Aug 4 11:51:25 2005//TBUGZILLA-2_22 +/edit-series.html.tmpl/1.5/Thu Feb 12 22:32:57 2004//TBUGZILLA-2_22 +/keywords.html.tmpl/1.6/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_22 +/menu.html.tmpl/1.6/Tue Jul 6 01:12:29 2004//TBUGZILLA-2_22 +/report-bar.png.tmpl/1.5/Wed Jul 20 12:39:48 2005//TBUGZILLA-2_22 +/report-line.png.tmpl/1.6/Wed Jul 20 12:39:48 2005//TBUGZILLA-2_22 +/report-pie.png.tmpl/1.4/Wed Jul 20 12:39:48 2005//TBUGZILLA-2_22 +/report-simple.html.tmpl/1.1/Mon Mar 14 16:24:03 2005//TBUGZILLA-2_22 +/report-table.csv.tmpl/1.8/Thu Nov 17 09:16:02 2005//TBUGZILLA-2_22 +/report-table.html.tmpl/1.11/Tue Jun 14 22:43:12 2005//TBUGZILLA-2_22 +/report.csv.tmpl/1.2/Mon Jan 6 07:54:22 2003//TBUGZILLA-2_22 +/report.html.tmpl/1.10/Sun Jan 18 18:39:30 2004//TBUGZILLA-2_22 +/series-common.html.tmpl/1.3/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_22 +/series.html.tmpl/1.6/Tue Sep 14 23:30:20 2004//TBUGZILLA-2_22 D diff --git a/template/en/default/reports/CVS/Tag b/template/en/default/reports/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/reports/CVS/Tag +++ b/template/en/default/reports/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/reports/chart.png.tmpl b/template/en/default/reports/chart.png.tmpl index e8e911629..119ff344f 100644 --- a/template/en/default/reports/chart.png.tmpl +++ b/template/en/default/reports/chart.png.tmpl @@ -35,6 +35,7 @@ graph.set(x_label => x_label, y_label => y_label, y_tick_number => 8, + y_max_value => chart.y_max_value, x_label_position => 0.5, x_labels_vertical => 1, x_label_skip => x_label_skip, diff --git a/template/en/default/reports/duplicates-table.html.tmpl b/template/en/default/reports/duplicates-table.html.tmpl index 6017a1e4e..80a85ff3c 100644 --- a/template/en/default/reports/duplicates-table.html.tmpl +++ b/template/en/default/reports/duplicates-table.html.tmpl @@ -48,101 +48,99 @@ [% IF bug_ids.size > 0 %] <table border> - <tr bgcolor="#CCCCCC"> - [% FOREACH column = [ { name => "id", description => "$terms.Bug #" }, - { name => "count", description => "Dupe<br>Count" }, - { name => "delta", - description => "Change in last<br>$changedsince day(s)" }, - { name => "component", description => "Component" }, - { name => "bug_severity", description => "Severity" }, - { name => "op_sys", description => "Op Sys" }, - { name => "target_milestone", - description => "Target<br>Milestone" }, - { name => "short_desc", description => "Summary" } ] - %] - - [%# Small hack to keep delta column out if we don't need it %] - [% NEXT IF column.name == "delta" AND NOT dobefore %] - - <td> - <center> - <b> - [% bug_ids_string = bug_ids.join(',') %] - <a href="duplicates.cgi?sortby=[% column.name %] - [% IF sortby == column.name %] - [% "&reverse=1" IF NOT reverse %] - [% ELSE %] - [%-# Some columns start off reversed %] - [% "&reverse=1" IF column.name.match('delta|count') %] - [% END %] - [% "&maxrows=$maxrows" IF maxrows %] - [% "&changedsince=$changedsince" IF changedsince %] - [% "&openonly=1" IF openonly %] - [% FOREACH p = query_products %]&product=[% p FILTER html %][% END %] - [% IF format %]&format=[% format FILTER html %][% END %] - [% "&bug_id=$bug_ids_string&sortvisible=1" - IF sortvisible %]"> - [% column.description %]</a> - </b> - </center> - </td> + <thead> + <tr bgcolor="#CCCCCC"> + [% FOREACH column = [ { name => "id", description => "$terms.Bug #" }, + { name => "count", description => "Dupe<br>Count" }, + { name => "delta", + description => "Change in last<br>$changedsince day(s)" }, + { name => "component", description => "Component" }, + { name => "bug_severity", description => "Severity" }, + { name => "op_sys", description => "Op Sys" }, + { name => "target_milestone", + description => "Target<br>Milestone" }, + { name => "short_desc", description => "Summary" } ] + %] + + [%# Small hack to keep delta column out if we don't need it %] + [% NEXT IF column.name == "delta" AND NOT dobefore %] + + <th> + [% bug_ids_string = bug_ids.join(',') %] + <a href="duplicates.cgi?sortby=[% column.name %] + [% IF sortby == column.name %] + [% "&reverse=1" IF NOT reverse %] + [% ELSE %] + [%-# Some columns start off reversed %] + [% "&reverse=1" IF column.name.match('delta|count') %] + [% END %] + [% IF maxrows %]&maxrows=[% maxrows FILTER html %][% END %] + [% IF changedsince %]&changedsince=[% changedsince FILTER html %][% END %] + [% "&openonly=1" IF openonly %] + [% FOREACH p = query_products %]&product=[% p FILTER html %][% END %] + [% IF format %]&format=[% format FILTER html %][% END %] + [% IF sortvisible %]&bug_id=[% bug_ids_string FILTER html %]&sortvisible=1[% END %]"> + [% column.description %]</a> + </th> + [% END %] + </tr> + </thead> + + [% IF NOT sortby %] + [% sortby = "count"; reverse = "1" %] + [% END %] + + [% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %] + [%# Numeric sort %] + [% sortedbugs = bugs.nsort(sortby) %] + [% ELSE %] + [% sortedbugs = bugs.sort(sortby) %] + [% END %] + + [% IF reverse %] + [% bugs = sortedbugs.reverse %] + [% ELSE %] + [% bugs = sortedbugs %] + [% END %] + + [%# *** Buglist *** %] + <tbody> + + [%# We need to keep track of the bug IDs we are actually displaying, because + # if the user decides to sort the visible list, we need to know what that + # list actually is. %] + [% vis_bug_ids = [] %] + + [% FOREACH bug = bugs %] + [% LAST IF loop.index() >= maxrows %] + [% vis_bug_ids.push(bug.id) %] + + <tr [% "class='resolved'" IF bug.resolution != "" %]> + <td> + <center> + [% isclosed = bug.resolution != "" %] + <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id FILTER closed(isclosed) %]</a> + </center> + </td> + + <td> + <center> + [% bug.count %] + </center> + </td> + + [% IF dobefore %] + <td><center>[% bug.delta %]</center></td> + [% END %] + + <td>[% bug.component FILTER html %]</td> + <td><center>[% bug.bug_severity FILTER html %]</center></td> + <td><center>[% bug.op_sys FILTER html %]</center></td> + <td><center>[% bug.target_milestone FILTER html %]</center></td> + <td>[% bug.short_desc FILTER html %]</td> + </tr> [% END %] - </tr> - - [% IF NOT sortby %] - [% sortby = "count"; reverse = "1" %] - [% END %] - - [% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %] - [%# Numeric sort %] - [% sortedbugs = bugs.nsort(sortby) %] - [% ELSE %] - [% sortedbugs = bugs.sort(sortby) %] - [% END %] - - [% IF reverse %] - [% bugs = sortedbugs.reverse %] - [% ELSE %] - [% bugs = sortedbugs %] - [% END %] - - [%# *** Buglist *** %] - - [%# We need to keep track of the bug IDs we are actually displaying, because - # if the user decides to sort the visible list, we need to know what that - # list actually is. %] - [% vis_bug_ids = [] %] - - [% FOREACH bug = bugs %] - [% LAST IF loop.index() >= maxrows %] - [% vis_bug_ids.push(bug.id) %] - - <tr [% "class='resolved'" IF bug.resolution != "" %]> - <td> - <center> - [% isclosed = bug.resolution != "" %] - <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id FILTER closed(isclosed) %]</a> - </center> - </td> - - <td> - <center> - [% bug.count %] - </center> - </td> - - [% IF dobefore %] - <td><center>[% bug.delta %]</center></td> - [% END %] - - <td>[% bug.component FILTER html %]</td> - <td><center>[% bug.bug_severity FILTER html %]</center></td> - <td><center>[% bug.op_sys FILTER html %]</center></td> - <td><center>[% bug.target_milestone FILTER html %]</center></td> - <td>[% bug.short_desc FILTER html %]</td> - </tr> - [% END %] - + </tbody> </table> [% ELSE %] <h3>No duplicate [% terms.bugs %] found.</h3> diff --git a/template/en/default/reports/duplicates.html.tmpl b/template/en/default/reports/duplicates.html.tmpl index 5cbf84fe2..897bbf17f 100644 --- a/template/en/default/reports/duplicates.html.tmpl +++ b/template/en/default/reports/duplicates.html.tmpl @@ -20,7 +20,7 @@ #%] [%# INTERFACE: - # products: list of strings. The products this user can see. + # products: an array of product objects this user can see. # # sortby: string. the column on which we are sorting the buglist. # reverse: boolean. True if we are reversing the current sort. @@ -84,9 +84,9 @@ <td rowspan="4" valign="top"> <select name="product" size="5" multiple="multiple"> [% FOREACH p = products %] - <option name="[% p FILTER html %]" - [% " selected" IF lsearch(query_products, p) != -1 %] - >[% p FILTER html %]</option> + <option name="[% p.name FILTER html %]" + [% " selected" IF lsearch(query_products, p.name) != -1 %] + >[% p.name FILTER html %]</option> [% END %] </select> </td> diff --git a/template/en/default/reports/duplicates.rdf.tmpl b/template/en/default/reports/duplicates.rdf.tmpl index 941f9f70f..15594c7ca 100644 --- a/template/en/default/reports/duplicates.rdf.tmpl +++ b/template/en/default/reports/duplicates.rdf.tmpl @@ -19,7 +19,7 @@ # Contributor(s): Myk Melez <myk@mozilla.org> #%] -<?xml version="1.0"?> +<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?> <!-- [% template_version %] --> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" diff --git a/template/en/default/request/CVS/Entries b/template/en/default/request/CVS/Entries index bb94dca73..fb93987a6 100644 --- a/template/en/default/request/CVS/Entries +++ b/template/en/default/request/CVS/Entries @@ -1,3 +1,3 @@ -/email.txt.tmpl/1.9.4.2/Fri Dec 30 00:34:59 2005//TBUGZILLA-2_20_2 -/queue.html.tmpl/1.12.6.1/Mon Aug 22 21:17:25 2005//TBUGZILLA-2_20_2 +/email.txt.tmpl/1.11/Fri Dec 30 00:32:37 2005//TBUGZILLA-2_22 +/queue.html.tmpl/1.14/Fri Sep 2 21:12:10 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/request/CVS/Tag b/template/en/default/request/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/request/CVS/Tag +++ b/template/en/default/request/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/request/queue.html.tmpl b/template/en/default/request/queue.html.tmpl index a6edcd8a3..73bbd8195 100644 --- a/template/en/default/request/queue.html.tmpl +++ b/template/en/default/request/queue.html.tmpl @@ -30,9 +30,9 @@ var first_load = 1; // is this the first time we load the page? var last_sel = []; // caches last selection var cpts = new Array(); - [% FOREACH p = products %] - cpts['[% p FILTER js %]'] = [ - [%- FOREACH item = components_by_product.$p %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ]; + [% FOREACH prod = products %] + cpts['[% prod.name FILTER js %]'] = [ + [%- FOREACH comp = prod.components %]'[% comp.name FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ]; [% END %] [% END %] @@ -58,9 +58,10 @@ <td> <select name="product" onchange="selectProduct(this.form, 'product', 'component', 'Any');"> <option value="">Any</option> - [% FOREACH item = products %] - <option value="[% item FILTER html %]" - [% "selected" IF cgi.param('product') == item %]>[% item FILTER html %]</option> + [% FOREACH prod = products %] + <option value="[% prod.name FILTER html %]" + [% "selected" IF cgi.param('product') == prod.name %]> + [% prod.name FILTER html %]</option> [% END %] </select> </td> @@ -92,9 +93,11 @@ <td> <select name="component"> <option value="">Any</option> - [% FOREACH item = components %] - <option value="[% item FILTER html %]" [% "selected" IF cgi.param('component') == item %]> - [% item FILTER html %]</option> + [% FOREACH prod = products %] + [% FOREACH comp = prod.components %] + <option value="[% comp.name FILTER html %]" [% "selected" IF cgi.param('component') == comp.name %]> + [% comp.name FILTER html %]</option> + [% END %] [% END %] </select> </td> diff --git a/template/en/default/search/CVS/Entries b/template/en/default/search/CVS/Entries index 7949a7093..419c16959 100644 --- a/template/en/default/search/CVS/Entries +++ b/template/en/default/search/CVS/Entries @@ -1,12 +1,12 @@ -/boolean-charts.html.tmpl/1.12/Sat Dec 11 00:27:45 2004//TBUGZILLA-2_20_2 -/form.html.tmpl/1.32.2.1/Thu Dec 29 22:52:10 2005//TBUGZILLA-2_20_2 -/knob.html.tmpl/1.16/Thu Jul 22 05:14:14 2004//TBUGZILLA-2_20_2 -/search-advanced.html.tmpl/1.23/Wed Feb 2 23:00:24 2005//TBUGZILLA-2_20_2 -/search-create-series.html.tmpl/1.11/Mon Apr 11 22:34:50 2005//TBUGZILLA-2_20_2 -/search-help.html.tmpl/1.5/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_20_2 -/search-report-graph.html.tmpl/1.8/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_20_2 -/search-report-select.html.tmpl/1.6/Wed Mar 9 17:17:53 2005//TBUGZILLA-2_20_2 -/search-report-table.html.tmpl/1.9/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_20_2 -/search-specific.html.tmpl/1.12/Sat May 7 13:26:14 2005//TBUGZILLA-2_20_2 -/tabs.html.tmpl/1.4/Wed Jul 7 06:02:33 2004//TBUGZILLA-2_20_2 +/boolean-charts.html.tmpl/1.12/Sat Dec 11 00:27:45 2004//TBUGZILLA-2_22 +/form.html.tmpl/1.35/Thu Dec 29 22:47:51 2005//TBUGZILLA-2_22 +/knob.html.tmpl/1.16/Thu Jul 22 05:14:14 2004//TBUGZILLA-2_22 +/search-advanced.html.tmpl/1.25/Wed Aug 10 01:30:41 2005//TBUGZILLA-2_22 +/search-create-series.html.tmpl/1.11/Mon Apr 11 22:34:50 2005//TBUGZILLA-2_22 +/search-help.html.tmpl/1.6.2.1/Fri Apr 14 16:26:36 2006//TBUGZILLA-2_22 +/search-report-graph.html.tmpl/1.8/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_22 +/search-report-select.html.tmpl/1.6/Wed Mar 9 17:17:53 2005//TBUGZILLA-2_22 +/search-report-table.html.tmpl/1.9/Fri Aug 20 21:49:20 2004//TBUGZILLA-2_22 +/search-specific.html.tmpl/1.15/Mon Oct 31 18:48:59 2005//TBUGZILLA-2_22 +/tabs.html.tmpl/1.5/Sat Jul 30 00:41:10 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/search/CVS/Tag b/template/en/default/search/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/search/CVS/Tag +++ b/template/en/default/search/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/search/form.html.tmpl b/template/en/default/search/form.html.tmpl index cd8f759cb..daef7e58d 100644 --- a/template/en/default/search/form.html.tmpl +++ b/template/en/default/search/form.html.tmpl @@ -43,7 +43,13 @@ var tms = new Array(); [% nclass = 0 %] [% FOREACH c = classification %] prods[[% nclass FILTER js %]] = [ - [%- FOREACH item = c.products %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ]; + [% sep = '' %] + [%- FOREACH item = c.products -%] + [%- IF user.can_see_product(item.name) -%] + [%- sep FILTER js %]'[% item.name FILTER js %]' + [%- sep = ',' -%] + [%- END -%] + [%- END -%] ]; [% nclass = nclass+1 %] [% END %] diff --git a/template/en/default/search/search-advanced.html.tmpl b/template/en/default/search/search-advanced.html.tmpl index 4f53c2ce1..e55c71ba1 100644 --- a/template/en/default/search/search-advanced.html.tmpl +++ b/template/en/default/search/search-advanced.html.tmpl @@ -41,17 +41,7 @@ var queryform = "queryform" onload = "doOnSelectProduct(0); initHelp();" javascript = js_data javascript_urls = [ "js/productform.js" ] - style = "td.selected_tab { - border-width: 2px 2px 0px; - border-style: solid; - border-color: black; - } - td.unselected_tab, td.spacer { - border-width: 0px 0px 2px 0px; - border-style: solid; - border-color: black; - } - dl.bug_changes dt { + style = "dl.bug_changes dt { margin-top: 15px; }" %] @@ -61,7 +51,7 @@ var queryform = "queryform" [% button_name = "Search" %] [%# The decent help requires Javascript %] -[% IF NOT help %] +[% IF NOT cgi.param("help") %] [% IF cgi.user_agent("Mozilla/5") %] <script type="text/javascript"> <!-- document.write("<p><a href='query.cgi?help=1&format=advanced'>Give me some help</a> (reloads page.)</p>"); @@ -92,6 +82,6 @@ var queryform = "queryform" </form> -[% PROCESS "search/search-help.html.tmpl" IF help %] +[% PROCESS "search/search-help.html.tmpl" IF cgi.param("help") %] [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/search/search-help.html.tmpl b/template/en/default/search/search-help.html.tmpl index 0d4b53e26..4a0907be7 100644 --- a/template/en/default/search/search-help.html.tmpl +++ b/template/en/default/search/search-help.html.tmpl @@ -92,15 +92,17 @@ { id => "chfieldfrom", html => "Specify the start and end dates either in YYYY-MM-DD format<br> (optionally followed by HH:mm, in 24 hour clock), or in relative<br> - dates such as 1d, 2w, 3m, 4y, which respectively mean one day,<br> - two weeks, three months, or four years ago. 0d is last midnight,<br> - and 0w, 0m, 0y is the beginning of this week, month, or year." }, + dates such as 1h, 2d, 3w, 4m, 5y, which respectively mean one hour,<br> + two days, three weeks, four months, or five years ago. 0d is last<br> + midnight, and 0h, 0w, 0m, 0y is the beginning of this hour, week,<br> + month, or year." }, { id => "chfieldto", html => "Specify the start and end dates either in YYYY-MM-DD format<br> (optionally followed by HH:mm, in 24 hour clock), or in relative<br> - dates such as 1d, 2w, 3m, 4y, which respectively mean one day,<br> - two weeks, three months, or four years ago. 0d is last midnight,<br> - and 0w, 0m, 0y is the beginning of this week, month, or year." }, + dates such as 1h, 2d, 3w, 4m, 5y, which respectively mean one hour,<br> + two days, three weeks, four months, or five years ago. 0d is last<br> + midnight, and 0h, 0w, 0m, 0y is the beginning of this hour, week,<br> + month, or year." }, { id => "chfieldvalue", html => "The value the field defined above changed to during that time." }, ] %] diff --git a/template/en/default/search/search-specific.html.tmpl b/template/en/default/search/search-specific.html.tmpl index 8edda69ee..dcc87130e 100644 --- a/template/en/default/search/search-specific.html.tmpl +++ b/template/en/default/search/search-specific.html.tmpl @@ -24,14 +24,6 @@ [% PROCESS global/header.html.tmpl title = "Find a Specific " _ terms.Bug h1 = "" - style = "td.selected_tab { - border-width: 2px 2px 0px; - border-style: solid; - } - td.unselected_tab, td.spacer { - border-width: 0px 0px 2px 0px; - border-style: solid; - }" %] [% PROCESS search/tabs.html.tmpl %] @@ -82,10 +74,12 @@ for "crash secure SSL flash". [% FOREACH c = classification %] <optgroup label="[% c.name FILTER html %]"> [% FOREACH p = c.products %] - <option value="[% p FILTER html %]" - [% " selected" IF lsearch(default.product, p) != -1 %]> - [% p FILTER html %] - </option> + [% IF user.can_see_product(p.name) %] + <option value="[% p.name FILTER html %]" + [% " selected" IF lsearch(default.product, p.name) != -1 %]> + [% p.name FILTER html %] + </option> + [% END %] [% END %] </optgroup> [% END %] diff --git a/template/en/default/search/tabs.html.tmpl b/template/en/default/search/tabs.html.tmpl index 06b22f7a2..00358cb59 100644 --- a/template/en/default/search/tabs.html.tmpl +++ b/template/en/default/search/tabs.html.tmpl @@ -21,36 +21,13 @@ #%] [%# INTERFACE: - # tabs: List of hashes. May not be empty. Each hash has two members: - # name: string. Name of the tab and the format it represents. - # description: string. Description of the tab (used in tab title). + # This template has no interface. #%] -[% tabs = [ { name => 'specific', description => "Find a Specific $terms.Bug " }, - { name => 'advanced', description => "Advanced Search" } ] %] - -[% current_tab = query_format || format || "advanced" %] - -<center> - <table cellspacing="0" cellpadding="10" border="0" width="100%"> - <tr> - <td class="spacer"> </td> - - [% FOREACH tab = tabs %] - [% IF tab.name == current_tab %] - <td align="center" bgcolor="lightblue" class="selected_tab"> - [% tab.description %] - </td> - [% ELSE %] - <td align="center" bgcolor="#BBBBEE" class="unselected_tab"> - <a href="query.cgi?format=[% tab.name %]" > - [% tab.description %] - </a> - </td> - [% END %] - [% END %] - - <td class="spacer"> </td> - </tr> - </table> -</center> +[% PROCESS global/tabs.html.tmpl + tabs = [ { name => 'specific', label => "Find a Specific $terms.Bug", + link => "query.cgi?format=specific" }, + { name => 'advanced', label => "Advanced Search", + link => "query.cgi?format=advanced" } ] + current_tab_name = query_format || format || "advanced" +%] diff --git a/template/en/default/sidebar.xul.tmpl b/template/en/default/sidebar.xul.tmpl index 2373aadeb..b78b5521b 100644 --- a/template/en/default/sidebar.xul.tmpl +++ b/template/en/default/sidebar.xul.tmpl @@ -34,14 +34,8 @@ orient="vertical" onload="document.getElementById('query-field').addEventListener('keypress', initial_keypress_handler, true)"> -<!-- Load QuickSearch libraries --> -<script type="application/x-javascript" src="localconfig.js"/> -<script type="application/x-javascript" src="quicksearch.js"/> <script type="application/x-javascript"><![CDATA[ -// Tell QuickSearch that the source of this is the sidebar -var sidebar = 1; - function load_absolute_url( aAbsoluteURL ) { content.location = aAbsoluteURL; } @@ -59,7 +53,7 @@ function initial_keypress_handler( aEvent ) { function normal_keypress_handler( aEvent ) { if ( aEvent.keyCode == 13 ) - QuickSearch(this.value); + load_relative_url('buglist.cgi?quicksearch=' + this.value); } ]]></script> diff --git a/template/en/default/whine/CVS/Entries b/template/en/default/whine/CVS/Entries index b5ae36caa..fed161aa8 100644 --- a/template/en/default/whine/CVS/Entries +++ b/template/en/default/whine/CVS/Entries @@ -1,5 +1,5 @@ -/mail.html.tmpl/1.2.4.1/Sun Aug 21 19:57:41 2005//TBUGZILLA-2_20_2 -/mail.txt.tmpl/1.2.4.1/Sun Aug 21 19:57:41 2005//TBUGZILLA-2_20_2 -/multipart-mime.txt.tmpl/1.4.4.1/Tue Mar 14 23:05:08 2006//TBUGZILLA-2_20_2 -/schedule.html.tmpl/1.2/Fri Feb 18 22:41:10 2005//TBUGZILLA-2_20_2 +/mail.html.tmpl/1.3/Sun Aug 21 19:55:42 2005//TBUGZILLA-2_22 +/mail.txt.tmpl/1.3/Sun Aug 21 19:55:42 2005//TBUGZILLA-2_22 +/multipart-mime.txt.tmpl/1.4.6.1/Tue Mar 14 23:03:11 2006//TBUGZILLA-2_22 +/schedule.html.tmpl/1.3/Mon Sep 12 14:03:01 2005//TBUGZILLA-2_22 D diff --git a/template/en/default/whine/CVS/Tag b/template/en/default/whine/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/default/whine/CVS/Tag +++ b/template/en/default/whine/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/template/en/default/whine/schedule.html.tmpl b/template/en/default/whine/schedule.html.tmpl index f227987d6..b49f713a8 100644 --- a/template/en/default/whine/schedule.html.tmpl +++ b/template/en/default/whine/schedule.html.tmpl @@ -68,6 +68,14 @@ terms.bug %] that matches the search will be sent in its own email message. </p> +<p> + [% IF Param("timezone") %] + All times are server local time ([% Param("timezone") FILTER upper %]). + [% ELSE %] + All times are server local time. + [% END %] +</p> + <form method="post" action="editwhines.cgi"> [%# This hidden submit button must be here to set default behavior when the user presses return on a form input field #%] diff --git a/template/en/extension/CVS/Entries b/template/en/extension/CVS/Entries index 9d11ce023..097714e4f 100644 --- a/template/en/extension/CVS/Entries +++ b/template/en/extension/CVS/Entries @@ -1,2 +1,2 @@ -/filterexceptions.pl/1.1.2.2/Tue Sep 27 17:03:14 2005//TBUGZILLA-2_20_2 +/filterexceptions.pl/1.1/Tue Sep 27 16:54:58 2005//TBUGZILLA-2_22 D diff --git a/template/en/extension/CVS/Tag b/template/en/extension/CVS/Tag index 20655bec4..4f143e35f 100644 --- a/template/en/extension/CVS/Tag +++ b/template/en/extension/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-2_20_2 +NBUGZILLA-2_22 diff --git a/testserver.pl b/testserver.pl index b768dc939..7cdacb0a3 100755 --- a/testserver.pl +++ b/testserver.pl @@ -83,14 +83,14 @@ to validate webservergroup.\n"; } -# Try to fetch a static file (ant.jpg) +# Try to fetch a static file (front.png) $ARGV[0] =~ s/\/$//; -my $url = $ARGV[0] . "/ant.jpg"; +my $url = $ARGV[0] . "/skins/standard/index/front.png"; if (fetch($url)) { - print "TEST-OK Got ant picture.\n"; + print "TEST-OK Got front picture.\n"; } else { print -"TEST-FAILED Fetch of ant.jpg failed +"TEST-FAILED Fetch of skins/standard/index/front.png failed Your webserver could not fetch $url. Check your webserver configuration and try again.\n"; exit(1); @@ -123,37 +123,37 @@ Check your webserver configuration.\n"; print "TEST-OK Webserver is preventing fetch of $url.\n"; } +# Test chart generation eval 'use GD'; if ($@ eq '') { undef $/; # Ensure major versions of GD and libgd match - # Windows's GD module include libgd.dll, guarenteed to match - + # Windows's GD module include libgd.dll, guaranteed to match if ($^O !~ /MSWin32/i) { - my $gdlib = `gdlib-config --version 2>&1`; + my $gdlib = `gdlib-config --version 2>&1` || ""; $gdlib =~ s/\n$//; if (!$gdlib) { - print "TEST-WARNING Failed to run gdlib-config, assuming gdlib " . - "version 1.x\n"; - $gdlib = '1.x'; + print "TEST-WARNING Failed to run gdlib-config; can't compare " . + "GD versions.\n"; } - my $gd = $GD::VERSION; - - my $verstring = "GD version $gd, libgd version $gdlib"; - - $gdlib =~ s/^([^\.]+)\..*/$1/; - $gd =~ s/^([^\.]+)\..*/$1/; - - if ($gdlib == $gd) { - print "TEST-OK $verstring; Major versions match.\n"; - } else { - print "TEST-FAIL $verstring; Major versions do not match\n"; + else { + my $gd = $GD::VERSION; + + my $verstring = "GD version $gd, libgd version $gdlib"; + + $gdlib =~ s/^([^\.]+)\..*/$1/; + $gd =~ s/^([^\.]+)\..*/$1/; + + if ($gdlib == $gd) { + print "TEST-OK $verstring; Major versions match.\n"; + } else { + print "TEST-FAILED $verstring; Major versions do not match.\n"; + } } } # Test GD - eval { my $image = new GD::Image(100, 100); my $black = $image->colorAllocate(0, 0, 0); @@ -167,9 +167,9 @@ if ($@ eq '') { if ($image->can('png')) { create_file("$datadir/testgd-local.png", $image->png); - check_image("$datadir/testgd-local.png", 't/testgd.png', 'GD', 'PNG'); + check_image("$datadir/testgd-local.png", 'GD'); } else { - die "GD doesn't support PNG generation\n"; + print "TEST-FAILED GD doesn't support PNG generation.\n"; } }; if ($@ ne '') { @@ -177,10 +177,9 @@ if ($@ eq '') { } # Test Chart - eval 'use Chart::Lines'; if ($@) { - print "TEST-FAILED Chart::Lines is not installed\n"; + print "TEST-FAILED Chart::Lines is not installed.\n"; } else { eval { my $chart = Chart::Lines->new(400, 400); @@ -188,10 +187,8 @@ if ($@ eq '') { $chart->add_pt('foo', 30, 25); $chart->add_pt('bar', 16, 32); - my $type = $chart->can('gif') ? 'gif' : 'png'; - $chart->$type("$datadir/testchart-local.$type"); - check_image("$datadir/testchart-local.$type", "t/testchart.$type", - "Chart", uc($type)); + $chart->png("$datadir/testchart-local.png"); + check_image("$datadir/testchart-local.png", "Chart"); }; if ($@ ne '') { print "TEST-FAILED Chart returned: $@\n"; @@ -227,7 +224,6 @@ sub fetch { select((select(SOCK), $| = 1)[0]); # get content - print SOCK "GET $file HTTP/1.0\015\012host: $host:$port\015\012\015\012"; my $header = ''; while (defined(my $line = <SOCK>)) { @@ -247,14 +243,13 @@ sub fetch { } sub check_image { - my ($local_file, $test_file, $library, $image_type) = @_; - if (read_file($local_file) eq read_file($test_file)) { - print "TEST-OK $library library generated a good $image_type image\n"; + my ($local_file, $library) = @_; + my $filedata = read_file($local_file); + if ($filedata =~ /^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A/) { + print "TEST-OK $library library generated a good PNG image.\n"; unlink $local_file; } else { - print "TEST-WARNING $library library generated a $image_type that " . - "didn't match the expected image.\nIt has been saved as " . - "$local_file and should be compared with $test_file\n"; + print "TEST-WARNING $library library did not generate a good PNG.\n"; } } diff --git a/token.cgi b/token.cgi index 3fe8e0140..aaac4f7ac 100755 --- a/token.cgi +++ b/token.cgi @@ -29,17 +29,17 @@ use strict; use lib qw(.); -use vars qw($template $vars); - use Bugzilla; use Bugzilla::Constants; use Bugzilla::Util; my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; +my $template = Bugzilla->template; +my $vars = {}; # Include the Bugzilla CGI and general utility library. -require "CGI.pl"; +require "globals.pl"; Bugzilla->login(LOGIN_OPTIONAL); @@ -65,17 +65,18 @@ $::action = $cgi->param('a'); if ($cgi->param('t')) { # Assign the token and its SQL quoted equivalent to global variables. $::token = $cgi->param('t'); - $::quotedtoken = SqlQuote($::token); # Make sure the token contains only valid characters in the right amount. # Validate password will throw an error if token is invalid ValidatePassword($::token); + trick_taint($::token); # Only used in placeholders Bugzilla::Token::CleanTokenTable(); # Make sure the token exists in the database. - SendSQL( "SELECT tokentype FROM tokens WHERE token = $::quotedtoken" ); - (my $tokentype = FetchSQLData()) || ThrowUserError("token_inexistent"); + my ($tokentype) = $dbh->selectrow_array('SELECT tokentype FROM tokens + WHERE token = ?', undef, $::token); + $tokentype || ThrowUserError("token_inexistent"); # Make sure the token is the correct type for the action being taken. if ( grep($::action eq $_ , qw(cfmpw cxlpw chgpw)) && $tokentype ne 'password' ) { @@ -107,15 +108,17 @@ if ( $::action eq 'reqpw' ) { ThrowUserError("password_change_requests_not_allowed"); } - # Make sure the login name looks like an email address. This function - # displays its own error and stops execution if the login name looks wrong. - CheckEmailSyntax($cgi->param('loginname')); - - my $quotedloginname = SqlQuote($cgi->param('loginname')); - SendSQL("SELECT userid FROM profiles WHERE " . - $dbh->sql_istrcmp('login_name', $quotedloginname)); - FetchSQLData() - || ThrowUserError("account_inexistent"); + # Make sure the login name looks like an email address. + validate_email_syntax($cgi->param('loginname')) + || ThrowUserError('illegal_email_address', + {addr => $cgi->param('loginname')}); + + my $loginname = $cgi->param('loginname'); + trick_taint($loginname); # Used only in a placeholder + my ($user_id) = $dbh->selectrow_array('SELECT userid FROM profiles WHERE ' . + $dbh->sql_istrcmp('login_name', '?'), + undef, $loginname); + $user_id || ThrowUserError("account_inexistent"); } # If the user is changing their password, make sure they submitted a new @@ -193,21 +196,22 @@ sub cancelChangePassword { sub changePassword { my $dbh = Bugzilla->dbh; - # Quote the password and token for inclusion into SQL statements. + # Create a crypted version of the new password my $cryptedpassword = bz_crypt($cgi->param('password')); - my $quotedpassword = SqlQuote($cryptedpassword); + trick_taint($cryptedpassword); # Used only in a placeholder # Get the user's ID from the tokens table. - SendSQL("SELECT userid FROM tokens WHERE token = $::quotedtoken"); - my $userid = FetchSQLData(); + my ($userid) = $dbh->selectrow_array('SELECT userid FROM tokens + WHERE token = ?', undef, $::token); # Update the user's password in the profiles table and delete the token # from the tokens table. $dbh->bz_lock_tables('profiles WRITE', 'tokens WRITE'); - SendSQL("UPDATE profiles - SET cryptpassword = $quotedpassword - WHERE userid = $userid"); - SendSQL("DELETE FROM tokens WHERE token = $::quotedtoken"); + $dbh->do(q{UPDATE profiles + SET cryptpassword = ? + WHERE userid = ?}, + undef, ($cryptedpassword, $userid) ); + $dbh->do('DELETE FROM tokens WHERE token = ?', undef, $::token); $dbh->bz_unlock_tables(); Bugzilla->logout_user_by_id($userid); @@ -233,11 +237,10 @@ sub changeEmail { my $dbh = Bugzilla->dbh; # Get the user's ID from the tokens table. - SendSQL("SELECT userid, eventdata FROM tokens - WHERE token = $::quotedtoken"); - my ($userid, $eventdata) = FetchSQLData(); + my ($userid, $eventdata) = $dbh->selectrow_array( + q{SELECT userid, eventdata FROM tokens + WHERE token = ?}, undef, $::token); my ($old_email, $new_email) = split(/:/,$eventdata); - my $quotednewemail = SqlQuote($new_email); # Check the user entered the correct old email address if(lc($cgi->param('email')) ne lc($old_email)) { @@ -247,24 +250,25 @@ sub changeEmail { # confirmed initially so cancel token if it is not still available if (! is_available_username($new_email,$old_email)) { $vars->{'email'} = $new_email; # Needed for Bugzilla::Token::Cancel's mail - Bugzilla::Token::Cancel($::token,"account_exists"); + Bugzilla::Token::Cancel($::token, "account_exists", $vars); ThrowUserError("account_exists", { email => $new_email } ); } # Update the user's login name in the profiles table and delete the token # from the tokens table. $dbh->bz_lock_tables('profiles WRITE', 'tokens WRITE'); - SendSQL("UPDATE profiles - SET login_name = $quotednewemail - WHERE userid = $userid"); - SendSQL("DELETE FROM tokens WHERE token = $::quotedtoken"); - SendSQL("DELETE FROM tokens WHERE userid = $userid - AND tokentype = 'emailnew'"); + $dbh->do(q{UPDATE profiles + SET login_name = ? + WHERE userid = ?}, + undef, ($new_email, $userid)); + $dbh->do('DELETE FROM tokens WHERE token = ?', undef, $::token); + $dbh->do(q{DELETE FROM tokens WHERE userid = ? + AND tokentype = 'emailnew'}, undef, $userid); $dbh->bz_unlock_tables(); # The email address has been changed, so we need to rederive the groups my $user = new Bugzilla::User($userid); - $user->derive_groups; + $user->derive_regexp_groups; # Return HTTP response headers. print $cgi->header(); @@ -281,25 +285,25 @@ sub cancelChangeEmail { my $dbh = Bugzilla->dbh; # Get the user's ID from the tokens table. - SendSQL("SELECT userid, tokentype, eventdata FROM tokens - WHERE token = $::quotedtoken"); - my ($userid, $tokentype, $eventdata) = FetchSQLData(); + my ($userid, $tokentype, $eventdata) = $dbh->selectrow_array( + q{SELECT userid, tokentype, eventdata FROM tokens + WHERE token = ?}, undef, $::token); my ($old_email, $new_email) = split(/:/,$eventdata); if($tokentype eq "emailold") { $vars->{'message'} = "emailold_change_cancelled"; - SendSQL("SELECT login_name FROM profiles WHERE userid = $userid"); - my $actualemail = FetchSQLData(); + my $actualemail = $dbh->selectrow_array( + q{SELECT login_name FROM profiles + WHERE userid = ?}, undef, $userid); # check to see if it has been altered if($actualemail ne $old_email) { - my $quotedoldemail = SqlQuote($old_email); - $dbh->bz_lock_tables('profiles WRITE'); - SendSQL("UPDATE profiles - SET login_name = $quotedoldemail - WHERE userid = $userid"); + $dbh->do(q{UPDATE profiles + SET login_name = ? + WHERE userid = ?}, + undef, ($old_email, $userid)); $dbh->bz_unlock_tables(); # email has changed, so rederive groups @@ -309,7 +313,7 @@ sub cancelChangeEmail { # issue my $user = new Bugzilla::User($userid); - $user->derive_groups; + $user->derive_regexp_groups; $vars->{'message'} = "email_change_cancelled_reinstated"; } @@ -320,12 +324,12 @@ sub cancelChangeEmail { $vars->{'old_email'} = $old_email; $vars->{'new_email'} = $new_email; - Bugzilla::Token::Cancel($::token, $vars->{'message'}); + Bugzilla::Token::Cancel($::token, $vars->{'message'}, $vars); $dbh->bz_lock_tables('tokens WRITE'); - SendSQL("DELETE FROM tokens - WHERE userid = $userid - AND tokentype = 'emailold' OR tokentype = 'emailnew'"); + $dbh->do(q{DELETE FROM tokens WHERE userid = ? + AND tokentype = 'emailold' OR tokentype = 'emailnew'}, + undef, $userid); $dbh->bz_unlock_tables(); # Return HTTP response headers. diff --git a/userprefs.cgi b/userprefs.cgi index 02646568d..3dc68121e 100755 --- a/userprefs.cgi +++ b/userprefs.cgi @@ -32,10 +32,10 @@ use Bugzilla::Search; use Bugzilla::Util; use Bugzilla::User; -require "CGI.pl"; +require "globals.pl"; -# Use global template variables. -use vars qw($template $vars $userid); +my $template = Bugzilla->template; +my $vars = {}; ############################################################################### # Each panel has two functions - panel Foo has a DoFoo, to get the data @@ -45,18 +45,21 @@ use vars qw($template $vars $userid); ############################################################################### sub DoAccount { my $dbh = Bugzilla->dbh; - SendSQL("SELECT realname FROM profiles WHERE userid = $userid"); - $vars->{'realname'} = FetchSQLData(); + my $user = Bugzilla->user; + + ($vars->{'realname'}) = $dbh->selectrow_array( + "SELECT realname FROM profiles WHERE userid = ?", undef, $user->id); if(Param('allowemailchange')) { - SendSQL("SELECT tokentype, issuedate + " . $dbh->sql_interval(3, 'DAY') . - ", eventdata - FROM tokens - WHERE userid = $userid - AND tokentype LIKE 'email%' - ORDER BY tokentype ASC " . $dbh->sql_limit(1)); - if(MoreSQLData()) { - my ($tokentype, $change_date, $eventdata) = &::FetchSQLData(); + my @token = $dbh->selectrow_array( + "SELECT tokentype, issuedate + " . + $dbh->sql_interval(3, 'DAY') . ", eventdata + FROM tokens + WHERE userid = ? + AND tokentype LIKE 'email%' + ORDER BY tokentype ASC " . $dbh->sql_limit(1), undef, $user->id); + if (scalar(@token) > 0) { + my ($tokentype, $change_date, $eventdata) = @token; $vars->{'login_change_date'} = $change_date; if($tokentype eq 'emailnew') { @@ -69,6 +72,8 @@ sub DoAccount { sub SaveAccount { my $cgi = Bugzilla->cgi; + my $dbh = Bugzilla->dbh; + my $user = Bugzilla->user; my $pwd1 = $cgi->param('new_password1'); my $pwd2 = $cgi->param('new_password2'); @@ -76,12 +81,12 @@ sub SaveAccount { if ($cgi->param('Bugzilla_password') ne "" || $pwd1 ne "" || $pwd2 ne "") { - my $old = SqlQuote($cgi->param('Bugzilla_password')); - SendSQL("SELECT cryptpassword FROM profiles WHERE userid = $userid"); - my $oldcryptedpwd = FetchOneColumn(); + my ($oldcryptedpwd) = $dbh->selectrow_array( + q{SELECT cryptpassword FROM profiles WHERE userid = ?}, + undef, $user->id); $oldcryptedpwd || ThrowCodeError("unable_to_retrieve_password"); - if (crypt($cgi->param('Bugzilla_password'), $oldcryptedpwd) ne + if (crypt(scalar($cgi->param('Bugzilla_password')), $oldcryptedpwd) ne $oldcryptedpwd) { ThrowUserError("old_password_incorrect"); @@ -92,14 +97,18 @@ sub SaveAccount { $cgi->param('new_password1') || ThrowUserError("new_password_missing"); ValidatePassword($pwd1, $pwd2); - - my $cryptedpassword = SqlQuote(bz_crypt($pwd1)); - SendSQL("UPDATE profiles - SET cryptpassword = $cryptedpassword - WHERE userid = $userid"); - # Invalidate all logins except for the current one - Bugzilla->logout(LOGOUT_KEEP_CURRENT); + if ($cgi->param('Bugzilla_password') ne $pwd1) { + my $cryptedpassword = bz_crypt($pwd1); + trick_taint($cryptedpassword); # Only used in a placeholder + $dbh->do(q{UPDATE profiles + SET cryptpassword = ? + WHERE userid = ?}, + undef, ($cryptedpassword, $user->id)); + + # Invalidate all logins except for the current one + Bugzilla->logout(LOGOUT_KEEP_CURRENT); + } } } @@ -113,41 +122,57 @@ sub SaveAccount { use Bugzilla::Token; # Block multiple email changes for the same user. - if (Bugzilla::Token::HasEmailChangeToken($userid)) { + if (Bugzilla::Token::HasEmailChangeToken($user->id)) { ThrowUserError("email_change_in_progress"); } # Before changing an email address, confirm one does not exist. - CheckEmailSyntax($new_login_name); + validate_email_syntax($new_login_name) + || ThrowUserError('illegal_email_address', {addr => $new_login_name}); trick_taint($new_login_name); is_available_username($new_login_name) || ThrowUserError("account_exists", {email => $new_login_name}); - Bugzilla::Token::IssueEmailChangeToken($userid,$old_login_name, - $new_login_name); + Bugzilla::Token::IssueEmailChangeToken($user->id, $old_login_name, + $new_login_name); $vars->{'email_changes_saved'} = 1; } } - SendSQL("UPDATE profiles SET " . - "realname = " . SqlQuote(trim($cgi->param('realname'))) . - " WHERE userid = $userid"); + my $realname = trim($cgi->param('realname')); + trick_taint($realname); # Only used in a placeholder + $dbh->do("UPDATE profiles SET realname = ? WHERE userid = ?", + undef, ($realname, $user->id)); } sub DoSettings { - $vars->{'settings'} = Bugzilla->user->settings; + my $user = Bugzilla->user; + + my $settings = $user->settings; + $vars->{'settings'} = $settings; - my @setting_list = keys %{Bugzilla->user->settings}; + my @setting_list = keys %$settings; $vars->{'setting_names'} = \@setting_list; + + $vars->{'has_settings_enabled'} = 0; + # Is there at least one user setting enabled? + foreach my $setting_name (@setting_list) { + if ($settings->{"$setting_name"}->{'is_enabled'}) { + $vars->{'has_settings_enabled'} = 1; + last; + } + } + $vars->{'dont_show_button'} = !$vars->{'has_settings_enabled'}; } sub SaveSettings { my $cgi = Bugzilla->cgi; + my $user = Bugzilla->user; - my $settings = Bugzilla->user->settings; - my @setting_list = keys %{Bugzilla->user->settings}; + my $settings = $user->settings; + my @setting_list = keys %$settings; foreach my $name (@setting_list) { next if ! ($settings->{$name}->{'is_enabled'}); @@ -164,11 +189,12 @@ sub SaveSettings { $settings->{$name}->set($value); } } - $vars->{'settings'} = Bugzilla->user->settings(1); + $vars->{'settings'} = $user->settings(1); } sub DoEmail { my $dbh = Bugzilla->dbh; + my $user = Bugzilla->user; ########################################################################### # User watching @@ -178,12 +204,12 @@ sub DoEmail { "SELECT profiles.login_name FROM watch INNER JOIN profiles" . " ON watch.watched = profiles.userid" . " WHERE watcher = ?", - undef, $userid); + undef, $user->id); $vars->{'watchedusers'} = join(',', @$watched_ref); my $watcher_ids = $dbh->selectcol_arrayref( "SELECT watcher FROM watch WHERE watched = ?", - undef, $userid); + undef, $user->id); my @watchers; foreach my $watcher_id (@$watcher_ids) { @@ -198,10 +224,10 @@ sub DoEmail { ########################################################################### # Role-based preferences ########################################################################### - my $sth = Bugzilla->dbh->prepare("SELECT relationship, event " . - "FROM email_setting " . - "WHERE user_id = $userid"); - $sth->execute(); + my $sth = $dbh->prepare("SELECT relationship, event " . + "FROM email_setting " . + "WHERE user_id = ?"); + $sth->execute($user->id); my %mail; while (my ($relationship, $event) = $sth->fetchrow_array()) { @@ -214,6 +240,7 @@ sub DoEmail { sub SaveEmail { my $dbh = Bugzilla->dbh; my $cgi = Bugzilla->cgi; + my $user = Bugzilla->user; ########################################################################### # Role-based preferences @@ -221,7 +248,7 @@ sub SaveEmail { $dbh->bz_lock_tables("email_setting WRITE"); # Delete all the user's current preferences - $dbh->do("DELETE FROM email_setting WHERE user_id = $userid"); + $dbh->do("DELETE FROM email_setting WHERE user_id = ?", undef, $user->id); # Repopulate the table - first, with normal events in the # relationship/event matrix. @@ -235,7 +262,8 @@ sub SaveEmail { { $dbh->do("INSERT INTO email_setting " . "(user_id, relationship, event) " . - "VALUES ($userid, $rel, $event)"); + "VALUES (?, ?, ?)", + undef, ($user->id, $rel, $event)); } } @@ -246,7 +274,8 @@ sub SaveEmail { { $dbh->do("INSERT INTO email_setting " . "(user_id, relationship, event) " . - "VALUES ($userid, $rel, $event)"); + "VALUES (?, ?, ?)", + undef, ($user->id, $rel, $event)); } } } @@ -258,7 +287,8 @@ sub SaveEmail { { $dbh->do("INSERT INTO email_setting " . "(user_id, relationship, event) " . - "VALUES ($userid, " . REL_ANY . ", $event)"); + "VALUES (?, ?, ?)", + undef, ($user->id, REL_ANY, $event)); } } @@ -277,7 +307,7 @@ sub SaveEmail { # what the db looks like now my $old_watch_ids = $dbh->selectcol_arrayref("SELECT watched FROM watch" - . " WHERE watcher = ?", undef, $userid); + . " WHERE watcher = ?", undef, $user->id); # The new information given to us by the user. my @new_watch_names = split(/[,\s]+/, $cgi->param('watchedusers')); @@ -292,14 +322,14 @@ sub SaveEmail { my $delete_sth = $dbh->prepare('DELETE FROM watch WHERE watched = ?' . ' AND watcher = ?'); foreach my $remove_me (@$removed) { - $delete_sth->execute($remove_me, $userid); + $delete_sth->execute($remove_me, $user->id); } # Add people who were added. my $insert_sth = $dbh->prepare('INSERT INTO watch (watched, watcher)' . ' VALUES (?, ?)'); foreach my $add_me (@$added) { - $insert_sth->execute($add_me, $userid); + $insert_sth->execute($add_me, $user->id); } $dbh->bz_unlock_tables(); @@ -308,24 +338,22 @@ sub SaveEmail { sub DoPermissions { + my $dbh = Bugzilla->dbh; + my $user = Bugzilla->user; my (@has_bits, @set_bits); - SendSQL("SELECT DISTINCT name, description FROM groups " . - "INNER JOIN user_group_map " . - "ON user_group_map.group_id = groups.id " . - "WHERE user_id = $::userid " . - "AND isbless = 0 " . - "ORDER BY name"); - while (MoreSQLData()) { - my ($nam, $desc) = FetchSQLData(); + my $groups = $dbh->selectall_arrayref( + "SELECT DISTINCT name, description FROM groups WHERE id IN (" . + $user->groups_as_string . ") ORDER BY name"); + foreach my $group (@$groups) { + my ($nam, $desc) = @$group; push(@has_bits, {"desc" => $desc, "name" => $nam}); } - my @set_ids = (); - SendSQL("SELECT DISTINCT name, description FROM groups " . - "ORDER BY name"); - while (MoreSQLData()) { - my ($nam, $desc) = FetchSQLData(); - if (Bugzilla->user->can_bless($nam)) { + $groups = $dbh->selectall_arrayref( + "SELECT DISTINCT name, description FROM groups ORDER BY name"); + foreach my $group (@$groups) { + my ($nam, $desc) = @$group; + if ($user->can_bless($nam)) { push(@set_bits, {"desc" => $desc, "name" => $nam}); } } @@ -337,11 +365,12 @@ sub DoPermissions { # No SavePermissions() because this panel has no changeable fields. -sub DoSavedSearches() { +sub DoSavedSearches { # 2004-12-13 - colin.ogilvie@gmail.com, bug 274397 # Need to work around the possibly missing query_format=advanced - $vars->{'user'} = Bugzilla->user; - my @queries = @{Bugzilla->user->queries}; + my $user = Bugzilla->user; + + my @queries = @{$user->queries}; my @newqueries; foreach my $q (@queries) { if ($q->{'query'} =~ /query_format=([^&]*)/) { @@ -362,25 +391,27 @@ sub DoSavedSearches() { $vars->{'queries'} = \@newqueries; } -sub SaveSavedSearches() { +sub SaveSavedSearches { my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; - my @queries = @{Bugzilla->user->queries}; + my $user = Bugzilla->user; + + my @queries = @{$user->queries}; my $sth = $dbh->prepare("UPDATE namedqueries SET linkinfooter = ? WHERE userid = ? AND name = ?"); foreach my $q (@queries) { my $linkinfooter = defined($cgi->param("linkinfooter_$q->{'name'}")) ? 1 : 0; - $sth->execute($linkinfooter, $userid, $q->{'name'}); + $sth->execute($linkinfooter, $user->id, $q->{'name'}); } - Bugzilla->user->flush_queries_cache; + $user->flush_queries_cache; my $showmybugslink = defined($cgi->param("showmybugslink")) ? 1 : 0; - $dbh->do("UPDATE profiles SET mybugslink = $showmybugslink " . - "WHERE userid = " . Bugzilla->user->id); - Bugzilla->user->{'showmybugslink'} = $showmybugslink; + $dbh->do("UPDATE profiles SET mybugslink = ? WHERE userid = ?", + undef, ($showmybugslink, $user->id)); + $user->{'showmybugslink'} = $showmybugslink; } @@ -391,9 +422,11 @@ sub SaveSavedSearches() { my $cgi = Bugzilla->cgi; # This script needs direct access to the username and password CGI variables, -# so we save them before their removal in Bugzilla->login +# so we save them before their removal in Bugzilla->login, and delete them +# prior to login if we might possibly be in an sudo session. my $bugzilla_login = $cgi->param('Bugzilla_login'); my $bugzilla_password = $cgi->param('Bugzilla_password'); +$cgi->delete('Bugzilla_login', 'Bugzilla_password') if ($cgi->cookie('sudo')); Bugzilla->login(LOGIN_REQUIRED); $cgi->param('Bugzilla_login', $bugzilla_login); diff --git a/votes.cgi b/votes.cgi index 48064ddad..f30eebe3c 100755 --- a/votes.cgi +++ b/votes.cgi @@ -30,12 +30,11 @@ use Bugzilla; use Bugzilla::Constants; use Bugzilla::Bug; -require "CGI.pl"; - -# Use global template variables -use vars qw($template $vars); +require "globals.pl"; my $cgi = Bugzilla->cgi; +my $template = Bugzilla->template; +my $vars = {}; # If the action is show_bug, you need a bug_id. # If the action is show_user, you can supply a userid to show the votes for @@ -89,27 +88,19 @@ exit; # Display the names of all the people voting for this one bug. sub show_bug { my $cgi = Bugzilla->cgi; + my $dbh = Bugzilla->dbh; ThrowCodeError("missing_bug_id") unless defined $bug_id; - my $total = 0; - my @users; - - SendSQL("SELECT profiles.login_name, votes.who, votes.vote_count - FROM votes INNER JOIN profiles - ON profiles.userid = votes.who - WHERE votes.bug_id = $bug_id"); - - while (MoreSQLData()) { - my ($name, $userid, $count) = (FetchSQLData()); - push (@users, { name => $name, id => $userid, count => $count }); - $total += $count; - } - $vars->{'bug_id'} = $bug_id; - $vars->{'users'} = \@users; - $vars->{'total'} = $total; - + $vars->{'users'} = + $dbh->selectall_arrayref('SELECT profiles.login_name, votes.vote_count + FROM votes + INNER JOIN profiles + ON profiles.userid = votes.who + WHERE votes.bug_id = ?', + {'Slice' => {}}, $bug_id); + print $cgi->header(); $template->process("bug/votes/list-for-bug.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -122,28 +113,31 @@ sub show_user { my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; + my $user = Bugzilla->user; # If a bug_id is given, and we're editing, we'll add it to the votes list. $bug_id ||= ""; - my $name = $cgi->param('user') || Bugzilla->user->login; + my $name = $cgi->param('user') || $user->login; my $who = DBNameToIdAndCheck($name); - my $userid = Bugzilla->user->id; + my $userid = $user->id; my $canedit = (Param('usevotes') && $userid == $who) ? 1 : 0; $dbh->bz_lock_tables('bugs READ', 'products READ', 'votes WRITE', 'cc READ', 'bug_group_map READ', 'user_group_map READ', + 'group_group_map READ', 'cc AS selectVisible_cc READ', 'groups READ'); if ($canedit && $bug_id) { # Make sure there is an entry for this bug # in the vote table, just so that things display right. - SendSQL("SELECT votes.vote_count FROM votes - WHERE votes.bug_id = $bug_id AND votes.who = $who"); - if (!FetchOneColumn()) { - SendSQL("INSERT INTO votes (who, bug_id, vote_count) - VALUES ($who, $bug_id, 0)"); + my $has_votes = $dbh->selectrow_array('SELECT vote_count FROM votes + WHERE bug_id = ? AND who = ?', + undef, ($bug_id, $who)); + if (!$has_votes) { + $dbh->do('INSERT INTO votes (who, bug_id, vote_count) + VALUES (?, ?, 0)', undef, ($who, $bug_id)); } } @@ -151,10 +145,10 @@ sub show_user { # we can do it all in one query. my %maxvotesperbug; if($canedit) { - SendSQL("SELECT products.name, products.maxvotesperbug - FROM products"); - while (MoreSQLData()) { - my ($prod, $max) = FetchSQLData(); + my $products = $dbh->selectall_arrayref('SELECT name, maxvotesperbug + FROM products'); + foreach (@$products) { + my ($prod, $max) = @$_; $maxvotesperbug{$prod} = $max; } } @@ -168,27 +162,27 @@ sub show_user { my @bugs; my $total = 0; my $onevoteonly = 0; - - SendSQL("SELECT votes.bug_id, votes.vote_count, bugs.short_desc, - bugs.bug_status - FROM votes - INNER JOIN bugs ON votes.bug_id = bugs.bug_id - INNER JOIN products ON bugs.product_id = products.id - WHERE votes.who = $who - AND products.name = " . SqlQuote($product) . - "ORDER BY votes.bug_id"); - - while (MoreSQLData()) { - my ($id, $count, $summary, $status) = FetchSQLData(); - next if !defined($status); + + my $vote_list = + $dbh->selectall_arrayref('SELECT votes.bug_id, votes.vote_count, + bugs.short_desc, bugs.bug_status + FROM votes + INNER JOIN bugs ON votes.bug_id = bugs.bug_id + INNER JOIN products ON bugs.product_id = products.id + WHERE votes.who = ? AND products.name = ? + ORDER BY votes.bug_id', + undef, ($who, $product)); + + foreach (@$vote_list) { + my ($id, $count, $summary, $status) = @$_; $total += $count; - + # Next if user can't see this bug. So, the totals will be correct # and they can see there are votes 'missing', but not on what bug # they are. This seems a reasonable compromise; the alternative is # to lie in the totals. - next if !Bugzilla->user->can_see_bug($id); - + next if !$user->can_see_bug($id); + push (@bugs, { id => $id, summary => $summary, count => $count, @@ -213,7 +207,7 @@ sub show_user { } } - SendSQL("DELETE FROM votes WHERE vote_count <= 0"); + $dbh->do('DELETE FROM votes WHERE vote_count <= 0'); $dbh->bz_unlock_tables(); $vars->{'canedit'} = $canedit; @@ -280,16 +274,18 @@ sub record_votes { # If the user is voting for bugs, make sure they aren't overstuffing # the ballot box. if (scalar(@buglist)) { - SendSQL("SELECT bugs.bug_id, products.name, products.maxvotesperbug - FROM bugs - INNER JOIN products - ON products.id = bugs.product_id - WHERE bugs.bug_id IN (" . join(", ", @buglist) . ")"); + my $product_vote_settings = + $dbh->selectall_arrayref('SELECT bugs.bug_id, products.name, + products.maxvotesperbug + FROM bugs + INNER JOIN products + ON products.id = bugs.product_id + WHERE bugs.bug_id IN + (' . join(', ', @buglist) . ')'); my %prodcount; - - while (MoreSQLData()) { - my ($id, $prod, $max) = FetchSQLData(); + foreach (@$product_vote_settings) { + my ($id, $prod, $max) = @$_; $prodcount{$prod} ||= 0; $prodcount{$prod} += $votes{$id}; @@ -323,23 +319,24 @@ sub record_votes { 'products READ', 'fielddefs READ'); # Take note of, and delete the user's old votes from the database. - SendSQL("SELECT bug_id FROM votes WHERE who = $who"); - while (MoreSQLData()) { - my $id = FetchOneColumn(); + my $bug_list = $dbh->selectcol_arrayref('SELECT bug_id FROM votes + WHERE who = ?', undef, $who); + + foreach my $id (@$bug_list) { $affected{$id} = 1; } - - SendSQL("DELETE FROM votes WHERE who = $who"); - + $dbh->do('DELETE FROM votes WHERE who = ?', undef, $who); + + my $sth_insertVotes = $dbh->prepare('INSERT INTO votes (who, bug_id, vote_count) + VALUES (?, ?, ?)'); # Insert the new values in their place foreach my $id (@buglist) { if ($votes{$id} > 0) { - SendSQL("INSERT INTO votes (who, bug_id, vote_count) - VALUES ($who, $id, ".$votes{$id}.")"); + $sth_insertVotes->execute($who, $id, $votes{$id}); } $affected{$id} = 1; } - + # Update the cached values in the bugs table print $cgi->header(); my @updated_bugs = (); diff --git a/whine.pl b/whine.pl index 7ae4b5b40..2fd80a3e3 100755 --- a/whine.pl +++ b/whine.pl @@ -94,12 +94,6 @@ my $sth_schedules_by_event = $dbh->prepare( # After that, it looks over each user to see if they have schedules that need # running, then runs those and generates the email messages. -# exit quietly if the system is shut down -if (Param('shutdownhtml')) { - exit; -} - - # Send whines from the address in the 'maintainer' Parameter so that all # Bugzilla-originated mail appears to come from a single address. my $fromaddress = Param('maintainer'); @@ -231,10 +225,10 @@ sub get_next_event { $dbh->bz_lock_tables('whine_schedules WRITE', 'whine_events READ', - 'profiles WRITE', + 'profiles READ', 'groups READ', 'group_group_map READ', - 'user_group_map WRITE'); + 'user_group_map READ'); # Get the event ID for the first pending schedule $sth_next_scheduled_event->execute; @@ -243,8 +237,7 @@ sub get_next_event { return undef unless $fetched; my ($eventid, $owner_id, $subject, $body) = @{$fetched}; - my $owner = Bugzilla::User->new($owner_id, - DERIVE_GROUPS_TABLES_ALREADY_LOCKED); + my $owner = Bugzilla::User->new($owner_id); my $whineatothers = $owner->in_group('bz_canusewhineatothers'); @@ -266,7 +259,7 @@ sub get_next_event { $user_objects{$mailto} = $owner; } elsif ($whineatothers) { - $user_objects{$mailto} = Bugzilla::User->new($mailto,DERIVE_GROUPS_TABLES_ALREADY_LOCKED); + $user_objects{$mailto} = Bugzilla::User->new($mailto); } } } @@ -278,14 +271,17 @@ sub get_next_event { my $group_id = Bugzilla::Group::ValidateGroupName( $groupname, $owner); if ($group_id) { + my $glist = join(',', + @{Bugzilla::User->flatten_group_membership( + $group_id)}); $sth = $dbh->prepare("SELECT user_id FROM " . "user_group_map " . - "WHERE group_id=?"); - $sth->execute($group_id); + "WHERE group_id IN ($glist)"); + $sth->execute(); for my $row (@{$sth->fetchall_arrayref}) { if (not defined $user_objects{$row->[0]}) { $user_objects{$row->[0]} = - Bugzilla::User->new($row->[0],DERIVE_GROUPS_TABLES_ALREADY_LOCKED); + Bugzilla::User->new($row->[0]); } } } @@ -408,7 +404,7 @@ sub mail { # now produce a ready-to-mail mime-encoded message - $args->{'boundary'} = "-----=====-----" . $$ . "--" . time() . "-----"; + $args->{'boundary'} = "----------" . $$ . "--" . time() . "-----"; $template->process("whine/multipart-mime.txt.tmpl", $args, \$msg) or die($template->error()); diff --git a/whineatnews.pl b/whineatnews.pl index ae2121303..50e06383e 100755 --- a/whineatnews.pl +++ b/whineatnews.pl @@ -33,6 +33,7 @@ use lib '.'; require "globals.pl"; use Bugzilla::BugMail; +use Bugzilla::Util; # Whining is disabled if whinedays is zero exit unless Param('whinedays') >= 1; @@ -71,7 +72,7 @@ foreach my $email (sort (keys %bugs)) { my %substs; $substs{'email'} = $email . $emailsuffix; $substs{'userid'} = $email; - my $msg = PerformSubsts($template, \%substs); + my $msg = perform_substs($template, \%substs); foreach my $i (@{$bugs{$email}}) { $msg .= " " . shift(@{$desc{$email}}) . "\n"; diff --git a/xml.cgi b/xml.cgi index 103838f86..8316971c9 100755 --- a/xml.cgi +++ b/xml.cgi @@ -25,10 +25,9 @@ use strict; use lib qw(.); +use Bugzilla; -require "CGI.pl"; - -our $cgi; +my $cgi = Bugzilla->cgi; # Convert comma/space separated elements into separate params my @ids = (); -- GitLab